lcms2-2.5/0000755002406300000240000000000012163061571011727 5ustar mariamauserslcms2-2.5/autogen.sh0000755002406300000240000000461412163060730013731 0ustar mariamausers#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. DIE=0 (test -f $srcdir/configure.ac) || { echo -n "**Error**: Directory $srcdir does not look like the" echo " top-level package directory" exit 1 } (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have autoconf installed." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (grep "^LT_INIT" $srcdir/configure.ac >/dev/null) && { (libtool --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have libtool installed." echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" DIE=1 } } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have automake installed." echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" DIE=1 NO_AUTOMAKE=yes } # if no automake, don't bother testing for aclocal test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: Missing aclocal. The version of automake" echo "installed doesn't appear recent enough." echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/" DIE=1 } if test "$DIE" -eq 1; then exit 1 fi if test -z "$*"; then echo "**Warning**: I am going to run configure with no arguments." echo "If you wish to pass any to it, please specify them on the" echo $0 " command line." echo fi case $CC in xlc ) am_opt=--include-deps;; esac aclocalinclude="$ACLOCAL_FLAGS" if grep "^LT_INIT" configure.ac >/dev/null; then if test -z "$NO_LIBTOOLIZE" ; then echo "Running libtoolize..." libtoolize --force --copy fi fi echo "Running aclocal $aclocalinclude ..." aclocal $aclocalinclude if grep "^AC_CONFIG_HEADERS" configure.ac >/dev/null; then echo "Running autoheader..." autoheader fi echo "Running automake --add-missing --gnu -Wno-portability $am_opt ..." automake --add-missing --gnu -Wno-portability $am_opt echo "Running autoconf ..." autoconf conf_flags="--enable-maintainer-mode" if test x$NOCONFIGURE = x; then echo "Running $srcdir/configure $conf_flags $@ ..." $srcdir/configure $conf_flags "$@" \ && echo "Now type make to compile." || exit 1 else echo "Skipping configure process." fi lcms2-2.5/utils/0000755002406300000240000000000012163061353013065 5ustar mariamauserslcms2-2.5/utils/samples/0000755002406300000240000000000012163061353014531 5ustar mariamauserslcms2-2.5/utils/samples/roundtrip.c0000644002406300000240000000511012163060730016716 0ustar mariamausers// // Little cms // Copyright (C) 1998-2011 Marti Maria // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION #include "lcms2.h" #include static double VecDist(cmsUInt8Number bin[3], cmsUInt8Number bout[3]) { double rdist, gdist, bdist; rdist = fabs((double) bout[0] - bin[0]); gdist = fabs((double) bout[1] - bin[1]); bdist = fabs((double) bout[2] - bin[2]); return (sqrt((rdist*rdist + gdist*gdist + bdist*bdist))); } int main(int argc, char* argv[]) { int r, g, b; cmsUInt8Number RGB[3], RGB_OUT[3]; cmsHTRANSFORM xform; cmsHPROFILE hProfile; double err, SumX=0, SumX2=0, Peak = 0, n = 0; if (argc != 2) { printf("roundtrip \n"); return 1; } hProfile = cmsOpenProfileFromFile(argv[1], "r"); xform = cmsCreateTransform(hProfile,TYPE_RGB_8, hProfile, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE); for (r=0; r< 256; r++) { printf("%d \r", r); for (g=0; g < 256; g++) { for (b=0; b < 256; b++) { RGB[0] = r; RGB[1] = g; RGB[2] = b; cmsDoTransform(xform, RGB, RGB_OUT, 1); err = VecDist(RGB, RGB_OUT); SumX += err; SumX2 += err * err; n += 1.0; if (err > Peak) Peak = err; } } } printf("Average %g\n", SumX / n); printf("Max %g\n", Peak); printf("Std %g\n", sqrt((n*SumX2 - SumX * SumX) / (n*(n-1)))); cmsCloseProfile(hProfile); cmsDeleteTransform(xform); return 0; }lcms2-2.5/utils/samples/mktiff8.c0000644002406300000240000000725312163060730016252 0ustar mariamausers// // Little cms // Copyright (C) 1998-2010 Marti Maria // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // Creates a devicelink that decodes TIFF8 Lab files #include "lcms2.h" #include #include static double DecodeAbTIFF(double ab) { if (ab <= 128.) ab += 127.; else ab -= 127.; return ab; } static cmsToneCurve* CreateStep(void) { cmsToneCurve* Gamma; cmsUInt16Number* Table; int i; double a; Table = calloc(4096, sizeof(cmsUInt16Number)); if (Table == NULL) return NULL; for (i=0; i < 4096; i++) { a = (double) i * 255. / 4095.; a = DecodeAbTIFF(a); Table[i] = (cmsUInt16Number) floor(a * 257. + 0.5); } Gamma = cmsBuildTabulatedToneCurve16(0, 4096, Table); free(Table); return Gamma; } static cmsToneCurve* CreateLinear(void) { cmsUInt16Number Linear[2] = { 0, 0xffff }; return cmsBuildTabulatedToneCurve16(0, 2, Linear); } // Set the copyright and description static cmsBool SetTextTags(cmsHPROFILE hProfile) { cmsMLU *DescriptionMLU, *CopyrightMLU; cmsBool rc = FALSE; DescriptionMLU = cmsMLUalloc(0, 1); CopyrightMLU = cmsMLUalloc(0, 1); if (DescriptionMLU == NULL || CopyrightMLU == NULL) goto Error; if (!cmsMLUsetASCII(DescriptionMLU, "en", "US", "Little cms Tiff8 CIELab")) goto Error; if (!cmsMLUsetASCII(CopyrightMLU, "en", "US", "Copyright (c) Marti Maria, 2010. All rights reserved.")) goto Error; if (!cmsWriteTag(hProfile, cmsSigProfileDescriptionTag, DescriptionMLU)) goto Error; if (!cmsWriteTag(hProfile, cmsSigCopyrightTag, CopyrightMLU)) goto Error; rc = TRUE; Error: if (DescriptionMLU) cmsMLUfree(DescriptionMLU); if (CopyrightMLU) cmsMLUfree(CopyrightMLU); return rc; } int main(int argc, char *argv[]) { cmsHPROFILE hProfile; cmsPipeline *AToB0; cmsToneCurve* PreLinear[3]; cmsToneCurve *Lin, *Step; fprintf(stderr, "Creating lcmstiff8.icm..."); remove("lcmstiff8.icm"); hProfile = cmsOpenProfileFromFile("lcmstiff8.icm", "w"); // Create linearization Lin = CreateLinear(); Step = CreateStep(); PreLinear[0] = Lin; PreLinear[1] = Step; PreLinear[2] = Step; AToB0 = cmsPipelineAlloc(0, 3, 3); cmsPipelineInsertStage(AToB0, cmsAT_BEGIN, cmsStageAllocToneCurves(0, 3, PreLinear)); cmsSetColorSpace(hProfile, cmsSigLabData); cmsSetPCS(hProfile, cmsSigLabData); cmsSetDeviceClass(hProfile, cmsSigLinkClass); cmsSetProfileVersion(hProfile, 4.2); cmsWriteTag(hProfile, cmsSigAToB0Tag, AToB0); SetTextTags(hProfile); cmsCloseProfile(hProfile); cmsFreeToneCurve(Lin); cmsFreeToneCurve(Step); cmsPipelineFree(AToB0); fprintf(stderr, "Done.\n"); return 0; } lcms2-2.5/utils/samples/wtpt.10000644002406300000240000000147212163060730015613 0ustar mariamausers.\"Shiju P. Nair September 30, 2004 .TH WTPT 1 "September 30, 2004" .SH NAME wtpt - Show media white of profiles, identifying black body locus. .SH SYNOPSIS .B wtpt .RI [ profile ] .SH DESCRIPTION lcms is a standalone CMM engine, which deals with the color management. It implements a fast transformation between ICC profiles. .B wtpt shows media white of profiles, identifying black body locus. .P If no parameters are given, then this program will ask for XYZ value of media white. If parameter given, it must be the profile to inspect. .SH NOTES For suggestions, comments, bug reports etc. send mail to info@littlecms.com .SH SEE ALSO .BR jpegicc (1), .BR tifficc (1), .BR icc2ps (1), .BR icclink (1), .BR icctrans (1) .SH AUTHOR This manual page was written by Shiju p. Nair , for the Debian project. lcms2-2.5/utils/samples/itufax.c0000644002406300000240000001060112163060730016171 0ustar mariamausers// // Little cms // Copyright (C) 1998-2003 Marti Maria // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "lcms.h" // This is a sample on how to build a profile for decoding ITU T.42/Fax JPEG // streams. The profile has an additional ability in the input direction of // gamut compress values between 85 < a < -85 and -75 < b < 125. This conforms // the default range for ITU/T.42 -- See RFC 2301, section 6.2.3 for details // L* = [0, 100] // a* = [85, 85] // b* = [75, 125] // These functions does convert the encoding of ITUFAX to floating point static void ITU2Lab(WORD In[3], LPcmsCIELab Lab) { Lab -> L = (double) In[0] / 655.35; Lab -> a = (double) 170.* (In[1] - 32768.) / 65535.; Lab -> b = (double) 200.* (In[2] - 24576.) / 65535.; } static void Lab2ITU(LPcmsCIELab Lab, WORD Out[3]) { Out[0] = (WORD) floor((double) (Lab -> L / 100.)* 65535. + 0.5); Out[1] = (WORD) floor((double) (Lab -> a / 170.)* 65535. + 32768. + 0.5); Out[2] = (WORD) floor((double) (Lab -> b / 200.)* 65535. + 24576. + 0.5); } // These are the samplers-- They are passed as callbacks to cmsSample3DGrid() // then, cmsSample3DGrid() will sweel whole Lab gamut calling these functions // once for each node. In[] will contain the Lab PCS value to convert to ITUFAX // on InputDirection, or the ITUFAX value to convert to Lab in OutputDirection // You can change the number of sample points if desired, the algorithm will // remain same. 33 points gives good accurancy, but you can reduce to 22 or less // is space is critical #define GRID_POINTS 33 static int InputDirection(register WORD In[], register WORD Out[], register LPVOID Cargo) { cmsCIELab Lab; cmsLabEncoded2Float(&Lab, In); cmsClampLab(&Lab, 85, -85, 125, -75); // This function does the necessary gamut remapping Lab2ITU(&Lab, Out); return TRUE; } static int OutputDirection(register WORD In[], register WORD Out[], register LPVOID Cargo) { cmsCIELab Lab; ITU2Lab(In, &Lab); cmsFloat2LabEncoded(Out, &Lab); return TRUE; } // The main entry point. Just create a profile an populate it with required tags. // note that cmsOpenProfileFromFile("itufax.icm", "w") will NOT delete the file // if already exists. This is for obvious safety reasons. int main(int argc, char *argv[]) { LPLUT AToB0, BToA0; cmsHPROFILE hProfile; fprintf(stderr, "Creating itufax.icm..."); unlink("itufax.icm"); hProfile = cmsOpenProfileFromFile("itufax.icm", "w"); AToB0 = cmsAllocLUT(); BToA0 = cmsAllocLUT(); cmsAlloc3DGrid(AToB0, GRID_POINTS, 3, 3); cmsAlloc3DGrid(BToA0, GRID_POINTS, 3, 3); cmsSample3DGrid(AToB0, InputDirection, NULL, 0); cmsSample3DGrid(BToA0, OutputDirection, NULL, 0); cmsAddTag(hProfile, icSigAToB0Tag, AToB0); cmsAddTag(hProfile, icSigBToA0Tag, BToA0); cmsSetColorSpace(hProfile, icSigLabData); cmsSetPCS(hProfile, icSigLabData); cmsSetDeviceClass(hProfile, icSigColorSpaceClass); cmsAddTag(hProfile, icSigProfileDescriptionTag, "ITU T.42/Fax JPEG CIEL*a*b*"); cmsAddTag(hProfile, icSigCopyrightTag, "No Copyright, use freely."); cmsAddTag(hProfile, icSigDeviceMfgDescTag, "Little cms"); cmsAddTag(hProfile, icSigDeviceModelDescTag, "ITU T.42/Fax JPEG CIEL*a*b*"); cmsCloseProfile(hProfile); cmsFreeLUT(AToB0); cmsFreeLUT(BToA0); fprintf(stderr, "Done.\n"); return 0; } lcms2-2.5/utils/samples/Makefile.in0000644002406300000240000004613712163060730016607 0ustar mariamausers# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building lcms sample programs # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria Oct 2004 VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = icctrans$(EXEEXT) wtpt$(EXEEXT) icc2ps$(EXEEXT) \ icclink$(EXEEXT) subdir = samples DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_icc2ps_OBJECTS = icc2ps.$(OBJEXT) xgetopt.$(OBJEXT) icc2ps_OBJECTS = $(am_icc2ps_OBJECTS) icc2ps_DEPENDENCIES = $(top_builddir)/src/liblcms.la icc2ps_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(icc2ps_LDFLAGS) \ $(LDFLAGS) -o $@ am_icclink_OBJECTS = icclink.$(OBJEXT) xgetopt.$(OBJEXT) \ vprf.$(OBJEXT) icclink_OBJECTS = $(am_icclink_OBJECTS) icclink_DEPENDENCIES = $(top_builddir)/src/liblcms.la icclink_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(icclink_LDFLAGS) \ $(LDFLAGS) -o $@ am_icctrans_OBJECTS = icctrans.$(OBJEXT) xgetopt.$(OBJEXT) \ vprf.$(OBJEXT) icctrans_OBJECTS = $(am_icctrans_OBJECTS) icctrans_DEPENDENCIES = $(top_builddir)/src/liblcms.la icctrans_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(icctrans_LDFLAGS) \ $(LDFLAGS) -o $@ am_wtpt_OBJECTS = wtpt.$(OBJEXT) xgetopt.$(OBJEXT) wtpt_OBJECTS = $(am_wtpt_OBJECTS) wtpt_DEPENDENCIES = $(top_builddir)/src/liblcms.la wtpt_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(wtpt_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(icc2ps_SOURCES) $(icclink_SOURCES) $(icctrans_SOURCES) \ $(wtpt_SOURCES) DIST_SOURCES = $(icc2ps_SOURCES) $(icclink_SOURCES) \ $(icctrans_SOURCES) $(wtpt_SOURCES) man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INT16_T = @INT16_T@ INT32_T = @INT32_T@ INT64_T = @INT64_T@ INT8_T = @INT8_T@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LCMS_PYEXECDIR = @LCMS_PYEXECDIR@ LCMS_PYINCLUDE = @LCMS_PYINCLUDE@ LCMS_PYLIB = @LCMS_PYLIB@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_VERSION = @PYTHON_VERSION@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ UINT16_T = @UINT16_T@ UINT32_T = @UINT32_T@ UINT64_T = @UINT64_T@ UINT8_T = @UINT8_T@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include icctrans_LDADD = $(top_builddir)/src/liblcms.la icctrans_LDFLAGS = @LDFLAGS@ icctrans_SOURCES = icctrans.c xgetopt.c vprf.c icctrans_MANS = icctrans.1 wtpt_LDADD = $(top_builddir)/src/liblcms.la wtpt_LDFLAGS = @LDFLAGS@ wtpt_SOURCES = wtpt.c xgetopt.c icc2ps_LDADD = $(top_builddir)/src/liblcms.la icc2ps_LDFLAGS = @LDFLAGS@ icc2ps_SOURCES = icc2ps.c xgetopt.c icclink_LDADD = $(top_builddir)/src/liblcms.la icclink_LDFLAGS = @LDFLAGS@ icclink_SOURCES = icclink.c xgetopt.c vprf.c man_MANS = wtpt.1 icc2ps.1 icclink.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign samples/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --foreign samples/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done icc2ps$(EXEEXT): $(icc2ps_OBJECTS) $(icc2ps_DEPENDENCIES) @rm -f icc2ps$(EXEEXT) $(icc2ps_LINK) $(icc2ps_OBJECTS) $(icc2ps_LDADD) $(LIBS) icclink$(EXEEXT): $(icclink_OBJECTS) $(icclink_DEPENDENCIES) @rm -f icclink$(EXEEXT) $(icclink_LINK) $(icclink_OBJECTS) $(icclink_LDADD) $(LIBS) icctrans$(EXEEXT): $(icctrans_OBJECTS) $(icctrans_DEPENDENCIES) @rm -f icctrans$(EXEEXT) $(icctrans_LINK) $(icctrans_OBJECTS) $(icctrans_LDADD) $(LIBS) wtpt$(EXEEXT): $(wtpt_OBJECTS) $(wtpt_DEPENDENCIES) @rm -f wtpt$(EXEEXT) $(wtpt_LINK) $(wtpt_OBJECTS) $(wtpt_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icc2ps.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icclink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icctrans.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vprf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wtpt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetopt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ done uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ 1*) ;; \ *) ext='1' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-exec-am: install-binPROGRAMS install-html: install-html-am install-info: install-info-am install-man: install-man1 install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-man \ uninstall-man1 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/utils/samples/vericc.c0000644002406300000240000000426112163060730016151 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2.h" #include #include static int PrintUsage(void) { fprintf(stderr, "Sets profile version\n\nUsage: vericc --r iccprofile.icc\n"); return 0; } int main(int argc, char *argv[]) { cmsHPROFILE hProfile; char* ptr; cmsFloat64Number Version; if (argc != 3) return PrintUsage(); ptr = argv[1]; if (strncmp(ptr, "--r", 3) != 0) return PrintUsage(); ptr += 3; if (!*ptr) { fprintf(stderr, "Wrong version number\n"); return 1; } Version = atof(ptr); hProfile = cmsOpenProfileFromFile(argv[2], "r"); if (hProfile == NULL) { fprintf(stderr, "'%s': cannot open\n", argv[2]); return 1; } cmsSetProfileVersion(hProfile, Version); cmsSaveProfileToFile(hProfile, "$$tmp.icc"); cmsCloseProfile(hProfile); remove(argv[2]); rename("$$tmp.icc", argv[2]); return 0; } lcms2-2.5/utils/samples/mkcmy.c0000644002406300000240000000753112163060730016021 0ustar mariamausers// // Little cms // Copyright (C) 1998-2003 Marti Maria // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THIS SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, // EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY // WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. // // IN NO EVENT SHALL MARTI MARIA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, // INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, // OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, // WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF // LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE // OF THIS SOFTWARE. // // Version 1.12 #include "lcms.h" typedef struct { cmsHPROFILE hLab; cmsHPROFILE hRGB; cmsHTRANSFORM Lab2RGB; cmsHTRANSFORM RGB2Lab; } CARGO, FAR* LPCARGO; // Our space will be CIE primaries plus a gamma of 4.5 static int Forward(register WORD In[], register WORD Out[], register LPVOID Cargo) { LPCARGO C = (LPCARGO) Cargo; WORD RGB[3]; cmsCIELab Lab; cmsLabEncoded2Float(&Lab, In); printf("%g %g %g\n", Lab.L, Lab.a, Lab.b); cmsDoTransform(C ->Lab2RGB, In, &RGB, 1); Out[0] = 0xFFFF - RGB[0]; // Our CMY is negative of RGB Out[1] = 0xFFFF - RGB[1]; Out[2] = 0xFFFF - RGB[2]; return TRUE; } static int Reverse(register WORD In[], register WORD Out[], register LPVOID Cargo) { LPCARGO C = (LPCARGO) Cargo; WORD RGB[3]; RGB[0] = 0xFFFF - In[0]; RGB[1] = 0xFFFF - In[1]; RGB[2] = 0xFFFF - In[2]; cmsDoTransform(C ->RGB2Lab, &RGB, Out, 1); return TRUE; } static void InitCargo(LPCARGO Cargo) { Cargo -> hLab = cmsCreateLabProfile(NULL); Cargo -> hRGB = cmsCreate_sRGBProfile(); Cargo->Lab2RGB = cmsCreateTransform(Cargo->hLab, TYPE_Lab_16, Cargo ->hRGB, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOTPRECALC); Cargo->RGB2Lab = cmsCreateTransform(Cargo ->hRGB, TYPE_RGB_16, Cargo ->hLab, TYPE_Lab_16, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOTPRECALC); } static void FreeCargo(LPCARGO Cargo) { cmsDeleteTransform(Cargo ->Lab2RGB); cmsDeleteTransform(Cargo ->RGB2Lab); cmsCloseProfile(Cargo ->hLab); cmsCloseProfile(Cargo ->hRGB); } int main(void) { LPLUT AToB0, BToA0; CARGO Cargo; cmsHPROFILE hProfile; fprintf(stderr, "Creating lcmscmy.icm..."); InitCargo(&Cargo); hProfile = cmsCreateLabProfile(NULL); AToB0 = cmsAllocLUT(); BToA0 = cmsAllocLUT(); cmsAlloc3DGrid(AToB0, 25, 3, 3); cmsAlloc3DGrid(BToA0, 25, 3, 3); cmsSample3DGrid(AToB0, Reverse, &Cargo, 0); cmsSample3DGrid(BToA0, Forward, &Cargo, 0); cmsAddTag(hProfile, icSigAToB0Tag, AToB0); cmsAddTag(hProfile, icSigBToA0Tag, BToA0); cmsSetColorSpace(hProfile, icSigCmyData); cmsSetDeviceClass(hProfile, icSigOutputClass); cmsAddTag(hProfile, icSigProfileDescriptionTag, "CMY "); cmsAddTag(hProfile, icSigCopyrightTag, "Copyright (c) HP, 2007. All rights reserved."); cmsAddTag(hProfile, icSigDeviceMfgDescTag, "Little cms"); cmsAddTag(hProfile, icSigDeviceModelDescTag, "CMY space"); _cmsSaveProfile(hProfile, "lcmscmy.icm"); cmsFreeLUT(AToB0); cmsFreeLUT(BToA0); cmsCloseProfile(hProfile); FreeCargo(&Cargo); fprintf(stderr, "Done.\n"); return 0; } lcms2-2.5/utils/samples/Makefile.am0000644002406300000240000000115312163060730016563 0ustar mariamausers# # Makefile for building lcms sample programs # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common bin_PROGRAMS = wtpt wtpt_LDADD = $(top_builddir)/src/liblcms2.la wtpt_LDFLAGS = @LDFLAGS@ wtpt_SOURCES = wtpt.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h wtpt_MANS = wtpt.1 EXTRA_DIST = $(man_MANS) roundtrip.c mktiff8.c mkgrayer.c mkcmy.c itufax.c lcms2-2.5/utils/samples/wtpt.c0000644002406300000240000000565212163060730015701 0ustar mariamausers// // Little cms // Copyright (C) 1998-2000 Marti Maria // // THIS SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, // EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY // WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. // // IN NO EVENT SHALL MARTI MARIA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, // INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, // OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, // WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF // LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE // OF THIS SOFTWARE. // // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Example: how to show white points of profiles #include "lcms.h" static void ShowWhitePoint(LPcmsCIEXYZ WtPt) { cmsCIELab Lab; cmsCIELCh LCh; cmsCIExyY xyY; char Buffer[1024]; _cmsIdentifyWhitePoint(Buffer, WtPt); printf("%s\n", Buffer); cmsXYZ2Lab(NULL, &Lab, WtPt); cmsLab2LCh(&LCh, &Lab); cmsXYZ2xyY(&xyY, WtPt); printf("XYZ=(%3.1f, %3.1f, %3.1f)\n", WtPt->X, WtPt->Y, WtPt->Z); printf("Lab=(%3.3f, %3.3f, %3.3f)\n", Lab.L, Lab.a, Lab.b); printf("(x,y)=(%3.3f, %3.3f)\n", xyY.x, xyY.y); printf("Hue=%3.2f, Chroma=%3.2f\n", LCh.h, LCh.C); printf("\n"); } int main (int argc, char *argv[]) { printf("Show media white of profiles, identifying black body locus. v2\n\n"); if (argc == 2) { cmsCIEXYZ WtPt; cmsHPROFILE hProfile = cmsOpenProfileFromFile(argv[1], "r"); printf("%s\n", cmsTakeProductName(hProfile)); cmsTakeMediaWhitePoint(&WtPt, hProfile); ShowWhitePoint(&WtPt); cmsCloseProfile(hProfile); } else { cmsCIEXYZ xyz; printf("usage:\n\nIf no parameters are given, then this program will\n"); printf("ask for XYZ value of media white. If parameter given, it must be\n"); printf("the profile to inspect.\n\n"); printf("X? "); scanf("%lf", &xyz.X); printf("Y? "); scanf("%lf", &xyz.Y); printf("Z? "); scanf("%lf", &xyz.Z); ShowWhitePoint(&xyz); } return 0; } lcms2-2.5/utils/samples/mkgrayer.c0000644002406300000240000000476512163060730016530 0ustar mariamausers// // Little cms // Copyright (C) 1998-2003 Marti Maria // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "lcms.h" static int Forward(register WORD In[], register WORD Out[], register LPVOID Cargo) { cmsCIELab Lab; cmsLabEncoded2Float(&Lab, In); if (fabs(Lab.a) < 3 && fabs(Lab.b) < 3) { double L_01 = Lab.L / 100.0; WORD K; if (L_01 > 1) L_01 = 1; K = (WORD) floor(L_01* 65535.0 + 0.5); Out[0] = Out[1] = Out[2] = K; } else { Out[0] = 0xFFFF; Out[1] = 0; Out[2] = 0; } return TRUE; } int main(int argc, char *argv[]) { LPLUT BToA0; cmsHPROFILE hProfile; fprintf(stderr, "Creating interpol2.icc..."); unlink("interpol2.icc"); hProfile = cmsOpenProfileFromFile("interpol2.icc", "w8"); BToA0 = cmsAllocLUT(); cmsAlloc3DGrid(BToA0, 17, 3, 3); cmsSample3DGrid(BToA0, Forward, NULL, 0); cmsAddTag(hProfile, icSigBToA0Tag, BToA0); cmsSetColorSpace(hProfile, icSigRgbData); cmsSetPCS(hProfile, icSigLabData); cmsSetDeviceClass(hProfile, icSigOutputClass); cmsAddTag(hProfile, icSigProfileDescriptionTag, "Interpolation test"); cmsAddTag(hProfile, icSigCopyrightTag, "Copyright (c) HP 2007. All rights reserved."); cmsAddTag(hProfile, icSigDeviceMfgDescTag, "Little cms"); cmsAddTag(hProfile, icSigDeviceModelDescTag, "Interpolation test profile"); cmsCloseProfile(hProfile); cmsFreeLUT(BToA0); fprintf(stderr, "Done.\n"); return 0; } lcms2-2.5/utils/psicc/0000755002406300000240000000000012163061555014172 5ustar mariamauserslcms2-2.5/utils/psicc/Makefile.in0000644002406300000240000005115312163060730016236 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building psicc # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = psicc$(EXEEXT) subdir = utils/psicc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_psicc_OBJECTS = psicc.$(OBJEXT) xgetopt.$(OBJEXT) vprf.$(OBJEXT) psicc_OBJECTS = $(am_psicc_OBJECTS) psicc_DEPENDENCIES = $(top_builddir)/src/liblcms2.la psicc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(psicc_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(psicc_SOURCES) DIST_SOURCES = $(psicc_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common psicc_LDADD = $(top_builddir)/src/liblcms2.la psicc_LDFLAGS = @LDFLAGS@ psicc_SOURCES = psicc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h psicc_MANS = psicc.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign utils/psicc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign utils/psicc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list psicc$(EXEEXT): $(psicc_OBJECTS) $(psicc_DEPENDENCIES) $(EXTRA_psicc_DEPENDENCIES) @rm -f psicc$(EXEEXT) $(psicc_LINK) $(psicc_OBJECTS) $(psicc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psicc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vprf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetopt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< xgetopt.o: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.o -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c xgetopt.obj: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.obj -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` vprf.o: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.o -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c vprf.obj: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.obj -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/utils/psicc/Makefile.am0000644002406300000240000000106112163060730016216 0ustar mariamausers# # Makefile for building psicc # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common bin_PROGRAMS = psicc psicc_LDADD = $(top_builddir)/src/liblcms2.la psicc_LDFLAGS = @LDFLAGS@ psicc_SOURCES = psicc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h psicc_MANS = psicc.1 EXTRA_DIST = $(man_MANS) lcms2-2.5/utils/psicc/psicc.10000644002406300000240000000173612163060730015356 0ustar mariamausers.\"Shiju P. Nair September 30, 2004 .TH ICC2PS 1 "September 30, 2004" .SH NAME icc2ps - little cms PostScript converter. .SH SYNOPSIS .B icc2ps .RI [ options ] .SH DESCRIPTION lcms is a standalone CMM engine, which deals with the color management. It implements a fast transformation between ICC profiles. .B icc2ps is little cms PostScript converter. .SH OPTIONS .TP .B \-b Black point compensation (CRD only). .TP .BI \-i\ profile Input profile: Generates Color Space Array (CSA). .TP .BI \-o\ profile .p Output profile: Generates Color Rendering Dictionary(CRD). .TP .B \-t <0,1,2,3> Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute). .TP .B \-u Do NOT generate resource name on CRD. .SH NOTES For suggestions, comments, bug reports etc. send mail to info@littlecms.com. .SH SEE ALSO .BR jpegicc (1), .BR tifficc (1), .BR icclink (1), .BR icctrans (1), .BR wtpt (1) .SH AUTHOR This manual page was written by Shiju p. Nair , for the Debian project. lcms2-2.5/utils/psicc/psicc.c0000644002406300000240000001426612163060730015442 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- #include "utils.h" // ------------------------------------------------------------------------ static char *cInProf = NULL; static char *cOutProf = NULL; static int Intent = INTENT_PERCEPTUAL; static FILE* OutFile; static int BlackPointCompensation = FALSE; static int Undecorated = FALSE; static int PrecalcMode = 1; static int NumOfGridPoints = 0; // The toggles stuff static void HandleSwitches(int argc, char *argv[]) { int s; while ((s = xgetopt(argc,argv,"uUbBI:i:O:o:T:t:c:C:n:N:")) != EOF) { switch (s){ case 'i': case 'I': cInProf = xoptarg; break; case 'o': case 'O': cOutProf = xoptarg; break; case 'b': case 'B': BlackPointCompensation =TRUE; break; case 't': case 'T': Intent = atoi(xoptarg); if (Intent > 3) Intent = 3; if (Intent < 0) Intent = 0; break; case 'U': case 'u': Undecorated = TRUE; break; case 'c': case 'C': PrecalcMode = atoi(xoptarg); if (PrecalcMode < 0 || PrecalcMode > 2) FatalError("ERROR: Unknown precalc mode '%d'", PrecalcMode); break; case 'n': case 'N': if (PrecalcMode != 1) FatalError("Precalc mode already specified"); NumOfGridPoints = atoi(xoptarg); break; default: FatalError("Unknown option - run without args to see valid ones.\n"); } } } static void Help(void) { fprintf(stderr, "little cms ICC PostScript generator - v2.0 [LittleCMS %2.2f]\n", LCMS_VERSION / 1000.0); fprintf(stderr, "usage: psicc [flags]\n\n"); fprintf(stderr, "flags:\n\n"); fprintf(stderr, "%ci - Input profile: Generates Color Space Array (CSA)\n", SW); fprintf(stderr, "%co - Output profile: Generates Color Rendering Dictionary(CRD)\n", SW); fprintf(stderr, "%ct<0,1,2,3> - Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute)\n", SW); fprintf(stderr, "%cb - Black point compensation (CRD only)\n", SW); fprintf(stderr, "%cu - Do NOT generate resource name on CRD\n", SW); fprintf(stderr, "%cc<0,1,2> - Precision (0=LowRes, 1=Normal (default), 2=Hi-res) (CRD only)\n", SW); fprintf(stderr, "%cn - Alternate way to set precission, number of CLUT points (CRD only)\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "This program is intended to be a demo of the little cms\n" "engine. Both lcms and this program are freeware. You can\n" "obtain both in source code at http://www.littlecms.com\n" "For suggestions, comments, bug reports etc. send mail to\n" "info@littlecms.com\n\n"); exit(0); } static void GenerateCSA(void) { cmsHPROFILE hProfile = OpenStockProfile(0, cInProf); size_t n; char* Buffer; if (hProfile == NULL) return; n = cmsGetPostScriptCSA(0, hProfile, Intent, 0, NULL, 0); if (n == 0) return; Buffer = (char*) malloc(n + 1); if (Buffer != NULL) { cmsGetPostScriptCSA(0, hProfile, Intent, 0, Buffer, n); Buffer[n] = 0; fprintf(OutFile, "%s", Buffer); free(Buffer); } cmsCloseProfile(hProfile); } static void GenerateCRD(void) { cmsHPROFILE hProfile = OpenStockProfile(0, cOutProf); size_t n; char* Buffer; cmsUInt32Number dwFlags = 0; if (hProfile == NULL) return; if (BlackPointCompensation) dwFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; if (Undecorated) dwFlags |= cmsFLAGS_NODEFAULTRESOURCEDEF; switch (PrecalcMode) { case 0: dwFlags |= cmsFLAGS_LOWRESPRECALC; break; case 2: dwFlags |= cmsFLAGS_HIGHRESPRECALC; break; case 1: if (NumOfGridPoints > 0) dwFlags |= cmsFLAGS_GRIDPOINTS(NumOfGridPoints); break; default: FatalError("ERROR: Unknown precalculation mode '%d'", PrecalcMode); } n = cmsGetPostScriptCRD(0, hProfile, Intent, dwFlags, NULL, 0); if (n == 0) return; Buffer = (char*) malloc(n + 1); cmsGetPostScriptCRD(0, hProfile, Intent, dwFlags, Buffer, n); Buffer[n] = 0; fprintf(OutFile, "%s", Buffer); free(Buffer); cmsCloseProfile(hProfile); } int main(int argc, char *argv[]) { int nargs; // Initialize InitUtils("psicc"); HandleSwitches(argc, argv); nargs = (argc - xoptind); if (nargs != 0 && nargs != 1) Help(); if (nargs == 0) OutFile = stdout; else OutFile = fopen(argv[xoptind], "wt"); if (cInProf == NULL && cOutProf == NULL) Help(); if (cInProf != NULL) GenerateCSA(); if (cOutProf != NULL) GenerateCRD(); if (nargs == 1) { fclose(OutFile); } return 0; } lcms2-2.5/utils/linkicc/0000755002406300000240000000000012163061555014505 5ustar mariamauserslcms2-2.5/utils/linkicc/linkicc.c0000644002406300000240000002735712163060730016275 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- #include "utils.h" // --------------------------------------------------------------------------------- static char* Description = "Devicelink profile"; static char* Copyright = "No copyright, use freely"; static int Intent = INTENT_PERCEPTUAL; static char* cOutProf = "devicelink.icc"; static int PrecalcMode = 1; static int NumOfGridPoints = 0; static cmsFloat64Number ObserverAdaptationState = 1.0; // According ICC 4.2 this is the default static cmsBool BlackPointCompensation = FALSE; static cmsFloat64Number InkLimit = 400; static cmsBool lUse8bits = FALSE; static cmsBool TagResult = FALSE; static cmsBool KeepLinearization = FALSE; static cmsFloat64Number Version = 4.3; // The manual static int Help(int level) { switch (level) { default: case 0: fprintf(stderr, "\nlinkicc: Links profiles into a single devicelink.\n"); fprintf(stderr, "\n"); fprintf(stderr, "usage: linkicc [flags] \n\n"); fprintf(stderr, "flags:\n\n"); fprintf(stderr, "%co - Output devicelink profile. [defaults to 'devicelink.icc']\n", SW); PrintRenderingIntents(); fprintf(stderr, "%cc<0,1,2> - Precision (0=LowRes, 1=Normal, 2=Hi-res) [defaults to 1]\n", SW); fprintf(stderr, "%cn - Alternate way to set precision, number of CLUT points\n", SW); fprintf(stderr, "%cd - description text (quotes can be used)\n", SW); fprintf(stderr, "%cy - copyright notice (quotes can be used)\n", SW); fprintf(stderr, "\n%ck<0..400> - Ink-limiting in %% (CMYK only)\n", SW); fprintf(stderr, "%c8 - Creates 8-bit devicelink\n", SW); fprintf(stderr, "%cx - Creatively, guess deviceclass of resulting profile.\n", SW); fprintf(stderr, "%cb - Black point compensation\n", SW); fprintf(stderr, "%ca<0..1> - Observer adaptation state (abs.col. only)\n\n", SW); fprintf(stderr, "%cl - Use linearization curves (may affect accuracy)\n", SW); fprintf(stderr, "%cr - Profile version. (CAUTION: may change the profile implementation)\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "Colorspaces must be paired except Lab/XYZ, that can be interchanged.\n\n"); fprintf(stderr, "%ch<0,1,2,3> - More help\n", SW); break; case 1: PrintBuiltins(); break; case 2: fprintf(stderr, "\nExamples:\n\n" "To create 'devicelink.icm' from a.icc to b.icc:\n" "\tlinkicc a.icc b.icc\n\n" "To create 'out.icc' from sRGB to cmyk.icc:\n" "\tlinkicc -o out.icc *sRGB cmyk.icc\n\n" "To create a sRGB input profile working in Lab:\n" "\tlinkicc -x -o sRGBLab.icc *sRGB *Lab\n\n" "To create a XYZ -> sRGB output profile:\n" "\tlinkicc -x -o sRGBLab.icc *XYZ *sRGB\n\n" "To create a abstract profile doing softproof for cmyk.icc:\n" "\tlinkicc -t1 -x -o softproof.icc *Lab cmyk.icc cmyk.icc *Lab\n\n" "To create a 'grayer' sRGB input profile:\n" "\tlinkicc -x -o grayer.icc *sRGB gray.icc gray.icc *Lab\n\n" "To embed ink limiting into a cmyk output profile:\n" "\tlinkicc -x -o cmyklimited.icc -k 250 cmyk.icc *Lab\n\n"); break; case 3: fprintf(stderr, "This program is intended to be a demo of the little cms\n" "engine. Both lcms and this program are freeware. You can\n" "obtain both in source code at http://www.littlecms.com\n" "For suggestions, comments, bug reports etc. send mail to\n" "info@littlecms.com\n\n"); } exit(0); } // The toggles stuff static void HandleSwitches(int argc, char *argv[]) { int s; while ((s = xgetopt(argc,argv,"a:A:BbC:c:D:d:h:H:k:K:lLn:N:O:o:r:R:T:t:V:v:xX8y:Y:")) != EOF) { switch (s) { case 'a': case 'A': ObserverAdaptationState = atof(xoptarg); if (ObserverAdaptationState < 0 || ObserverAdaptationState > 1.0) FatalError("Adaptation state should be 0..1"); break; case 'b': case 'B': BlackPointCompensation = TRUE; break; case 'c': case 'C': PrecalcMode = atoi(xoptarg); if (PrecalcMode < 0 || PrecalcMode > 2) { FatalError("Unknown precalc mode '%d'", PrecalcMode); } break; case 'd': case 'D': // Doing that is correct and safe: Description points to memory allocated in the command line. // same for Copyright and output devicelink. Description = xoptarg; break; case 'h': case 'H': Help(atoi(xoptarg)); return; case 'k': case 'K': InkLimit = atof(xoptarg); if (InkLimit < 0.0 || InkLimit > 400.0) { FatalError("Ink limit must be 0%%..400%%"); } break; case 'l': case 'L': KeepLinearization = TRUE; break; case 'n': case 'N': if (PrecalcMode != 1) { FatalError("Precalc mode already specified"); } NumOfGridPoints = atoi(xoptarg); break; case 'o': case 'O': cOutProf = xoptarg; break; case 'r': case 'R': Version = atof(xoptarg); if (Version < 2.0 || Version > 4.3) { fprintf(stderr, "WARNING: lcms was not aware of this version, tag types may be wrong!\n"); } break; case 't': case 'T': Intent = atoi(xoptarg); // Will be validated latter on break; case 'V': case 'v': Verbose = atoi(xoptarg); if (Verbose < 0 || Verbose > 3) { FatalError("Unknown verbosity level '%d'", Verbose); } break; case '8': lUse8bits = TRUE; break; case 'y': case 'Y': Copyright = xoptarg; break; case 'x': case 'X': TagResult = TRUE; break; default: FatalError("Unknown option - run without args to see valid ones.\n"); } } } // Set the copyright and description static cmsBool SetTextTags(cmsHPROFILE hProfile) { cmsMLU *DescriptionMLU, *CopyrightMLU; cmsBool rc = FALSE; cmsContext ContextID = cmsGetProfileContextID(hProfile); DescriptionMLU = cmsMLUalloc(ContextID, 1); CopyrightMLU = cmsMLUalloc(ContextID, 1); if (DescriptionMLU == NULL || CopyrightMLU == NULL) goto Error; if (!cmsMLUsetASCII(DescriptionMLU, "en", "US", Description)) goto Error; if (!cmsMLUsetASCII(CopyrightMLU, "en", "US", Copyright)) goto Error; if (!cmsWriteTag(hProfile, cmsSigProfileDescriptionTag, DescriptionMLU)) goto Error; if (!cmsWriteTag(hProfile, cmsSigCopyrightTag, CopyrightMLU)) goto Error; rc = TRUE; Error: if (DescriptionMLU) cmsMLUfree(DescriptionMLU); if (CopyrightMLU) cmsMLUfree(CopyrightMLU); return rc; } int main(int argc, char *argv[]) { int i, nargs, rc; cmsHPROFILE Profiles[257]; cmsHPROFILE hProfile; cmsUInt32Number dwFlags; cmsHTRANSFORM hTransform = NULL; // Here we are fprintf(stderr, "little cms ICC device link generator - v2.2 [LittleCMS %2.2f]\n", LCMS_VERSION / 1000.0); fflush(stderr); // Initialize InitUtils("linkicc"); rc = 0; // Get the options HandleSwitches(argc, argv); // How many profiles to link? nargs = (argc - xoptind); if (nargs < 1) return Help(0); if (nargs > 255) { FatalError("Holy profile! what are you trying to do with so many profiles!?"); goto Cleanup; } // Open all profiles memset(Profiles, 0, sizeof(Profiles)); for (i=0; i < nargs; i++) { Profiles[i] = OpenStockProfile(0, argv[i + xoptind]); if (Profiles[i] == NULL) goto Cleanup; if (Verbose >= 1) { PrintProfileInformation(Profiles[i]); } } // Ink limiting if (InkLimit != 400.0) { cmsColorSpaceSignature EndingColorSpace = cmsGetColorSpace(Profiles[nargs-1]); Profiles[nargs++] = cmsCreateInkLimitingDeviceLink(EndingColorSpace, InkLimit); } // Set the flags dwFlags = cmsFLAGS_KEEP_SEQUENCE; switch (PrecalcMode) { case 0: dwFlags |= cmsFLAGS_LOWRESPRECALC; break; case 2: dwFlags |= cmsFLAGS_HIGHRESPRECALC; break; case 1: if (NumOfGridPoints > 0) dwFlags |= cmsFLAGS_GRIDPOINTS(NumOfGridPoints); break; default: { FatalError("Unknown precalculation mode '%d'", PrecalcMode); goto Cleanup; } } if (BlackPointCompensation) dwFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; if (TagResult) dwFlags |= cmsFLAGS_GUESSDEVICECLASS; if (KeepLinearization) dwFlags |= cmsFLAGS_CLUT_PRE_LINEARIZATION|cmsFLAGS_CLUT_POST_LINEARIZATION; if (lUse8bits) dwFlags |= cmsFLAGS_8BITS_DEVICELINK; cmsSetAdaptationState(ObserverAdaptationState); // Create the color transform. Specify 0 for the format is safe as the transform // is intended to be used only for the devicelink. hTransform = cmsCreateMultiprofileTransform(Profiles, nargs, 0, 0, Intent, dwFlags|cmsFLAGS_NOOPTIMIZE); if (hTransform == NULL) { FatalError("Transform creation failed"); goto Cleanup; } hProfile = cmsTransform2DeviceLink(hTransform, Version, dwFlags); if (hProfile == NULL) { FatalError("Devicelink creation failed"); goto Cleanup; } SetTextTags(hProfile); cmsSetHeaderRenderingIntent(hProfile, Intent); if (cmsSaveProfileToFile(hProfile, cOutProf)) { if (Verbose > 0) fprintf(stderr, "Ok"); } else FatalError("Error saving file!"); cmsCloseProfile(hProfile); Cleanup: if (hTransform != NULL) cmsDeleteTransform(hTransform); for (i=0; i < nargs; i++) { if (Profiles[i] != NULL) cmsCloseProfile(Profiles[i]); } return rc; } lcms2-2.5/utils/linkicc/linkicc.10000644002406300000240000000435512163060730016204 0ustar mariamausers.\"Shiju P. Nair September 30, 2004 .TH ICCLINK 1 "September 30, 2004" .SH NAME icclink - little cms device link generator. .SH SYNOPSIS .B icclink .RI [ options ] " " .SH DESCRIPTION lcms is a standalone CMM engine, which deals with the color management. It implements a fast transformation between ICC profiles. .B icclink is little cms device link generator. .P Links two or more profiles into a single devicelink profile. Colorspaces must be paired except Lab/XYZ, that can be interchanged. .SH OPTIONS .TP .B \-8 Creates 8-bit devicelink. .TP .B \-b Black point compensation. .TP .B \-c <0,1,2,3> Precision (0=LowRes, 1=Normal, 2=Hi-res). [defaults to 1] .TP .BI \-d\ description Description text (quotes can be used). .TP .B \-h <0,1,2,3> Show summary of options and examples. .TP .BI \-i\ profile Input profile (defaults to sRGB). .TP .B -k <0..400> Ink-limiting in % (CMYK only) .TP .BI \-o\ profile Output devicelink profile. [defaults to 'devicelink.icm'] .TP .B \-t <0,1,2,3> Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute). .TP .B \-x Creatively, guess deviceclass of resulting profile. .TP .nf Built-in profiles: *Lab -- D50-based CIEL*a*b (PCS) *XYZ -- CIE XYZ (PCS) *sRGB -- sRGB color space *Gray22- Monochrome of Gamma 2.2 *Lin2222- CMYK linearization of gamma 2.2 on each channel .fi .SH EXAMPLES .nf To create 'devicelink.icm' from a.icc to b.icc: icclink a.icc b.icc To create 'out.icc' from sRGB to cmyk.icc: icclink -o out.icc *sRGB cmyk.icc To create a sRGB input profile working in Lab: icclink -x -o sRGBLab.icc *sRGB *Lab To create a XYZ -> sRGB output profile: icclink -x -o sRGBLab.icc *XYZ *sRGB To create a abstract profile doing softproof for cmyk.icc: icclink -t1 -x -o softproof.icc *Lab cmyk.icc cmyk.icc *Lab To create a 'grayer' sRGB input profile: icclink -x -o grayer.icc *sRGB gray.icc gray.icc *Lab To embed ink limiting into a cmyk output profile: icclink -x -o cmyklimited.icc -k 250 cmyk.icc *Lab .fi .SH NOTES For suggestions, comments, bug reports etc. send mail to info@littlecms.com. .SH SEE ALSO .BR jpegicc (1), .BR tifficc (1), .BR icc2ps (1), .BR icctrans (1), .BR wtpt (1) .SH AUTHOR This manual page was written by Shiju p. Nair , for the Debian project. lcms2-2.5/utils/linkicc/Makefile.in0000644002406300000240000005126412163060730016554 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building lcms sample programs # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = linkicc$(EXEEXT) subdir = utils/linkicc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_linkicc_OBJECTS = linkicc.$(OBJEXT) xgetopt.$(OBJEXT) \ vprf.$(OBJEXT) linkicc_OBJECTS = $(am_linkicc_OBJECTS) linkicc_DEPENDENCIES = $(top_builddir)/src/liblcms2.la linkicc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(linkicc_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(linkicc_SOURCES) DIST_SOURCES = $(linkicc_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common linkicc_LDADD = $(top_builddir)/src/liblcms2.la linkicc_LDFLAGS = @LDFLAGS@ linkicc_SOURCES = linkicc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h linkicc_MANS = linkicc.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign utils/linkicc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign utils/linkicc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list linkicc$(EXEEXT): $(linkicc_OBJECTS) $(linkicc_DEPENDENCIES) $(EXTRA_linkicc_DEPENDENCIES) @rm -f linkicc$(EXEEXT) $(linkicc_LINK) $(linkicc_OBJECTS) $(linkicc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkicc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vprf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetopt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< xgetopt.o: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.o -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c xgetopt.obj: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.obj -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` vprf.o: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.o -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c vprf.obj: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.obj -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/utils/linkicc/Makefile.am0000644002406300000240000000111512163060730016531 0ustar mariamausers# # Makefile for building lcms sample programs # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common bin_PROGRAMS = linkicc linkicc_LDADD = $(top_builddir)/src/liblcms2.la linkicc_LDFLAGS = @LDFLAGS@ linkicc_SOURCES = linkicc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h linkicc_MANS = linkicc.1 EXTRA_DIST = $(man_MANS) lcms2-2.5/utils/matlab/0000755002406300000240000000000012163061353014325 5ustar mariamauserslcms2-2.5/utils/matlab/lcms_rsp0000644002406300000240000000077612163060730016102 0ustar mariamausers-O -I..\..\include icctrans.c ..\..\src\cmscam02.c ..\..\src\cmscgats.c ..\..\src\cmscnvrt.c ..\..\src\cmserr.c ..\..\src\cmsgamma.c ..\..\src\cmsgmt.c ..\..\src\cmsintrp.c ..\..\src\cmsio0.c ..\..\src\cmsio1.c ..\..\src\cmslut.c ..\..\src\cmsmd5.c ..\..\src\cmsmtrx.c ..\..\src\cmsnamed.c ..\..\src\cmsopt.c ..\..\src\cmspack.c ..\..\src\cmspcs.c ..\..\src\cmsplugin.c ..\..\src\cmsps2.c ..\..\src\cmssamp.c ..\..\src\cmssm.c ..\..\src\cmstypes.c ..\..\src\cmsvirt.c ..\..\src\cmswtpnt.c ..\..\src\cmsxform.c lcms2-2.5/utils/matlab/icctrans.c0000644002406300000240000004016112163060730016277 0ustar mariamausers// // Little cms // Copyright (C) 1998-2010 Marti Maria, Ignacio Ruiz de Conejo // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "mex.h" #include "lcms2.h" #include "string.h" #include "stdarg.h" // xgetopt() interface ----------------------------------------------------- static int xoptind; static char *xoptarg; static int xopterr; static char *letP; static char SW = '-'; // ------------------------------------------------------------------------ static int Verbose ; // Print some statistics static char *cInProf; // Input profile static char *cOutProf; // Output profile static char *cProofing; // Softproofing profile static int Intent; // Rendering Intent static int ProofingIntent; // RI for proof static int PrecalcMode; // 0 = Not, 1=Normal, 2=Accurate, 3=Fast static cmsBool BlackPointCompensation; static cmsBool lIsDeviceLink; static cmsBool lMultiProfileChain; // Multiple profile chain static cmsHPROFILE hInput, hOutput, hProof; static cmsHTRANSFORM hColorTransform; static cmsHPROFILE hProfiles[255]; static int nProfiles; static cmsColorSpaceSignature InputColorSpace, OutputColorSpace; static int OutputChannels, InputChannels, nBytesDepth; // Error. Print error message and abort static cmsBool FatalError(const char *frm, ...) { va_list args; char Buffer[1024]; va_start(args, frm); vsprintf(Buffer, frm, args); mexErrMsgTxt(Buffer); va_end(args); return FALSE; } // This is the handler passed to lcms static void MatLabErrorHandler(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text) { mexErrMsgTxt(Text); } // // Parse the command line options, System V style. // static void xoptinit() { xoptind = 1; xopterr = 0; letP = NULL; } static int xgetopt(int argc, char *argv[], char *optionS) { unsigned char ch; char *optP; if (SW == 0) { SW = '/'; } if (argc > xoptind) { if (letP == NULL) { if ((letP = argv[xoptind]) == NULL || *(letP++) != SW) goto gopEOF; if (*letP == SW) { xoptind++; goto gopEOF; } } if (0 == (ch = *(letP++))) { xoptind++; goto gopEOF; } if (':' == ch || (optP = strchr(optionS, ch)) == NULL) goto gopError; if (':' == *(++optP)) { xoptind++; if (0 == *letP) { if (argc <= xoptind) goto gopError; letP = argv[xoptind++]; } xoptarg = letP; letP = NULL; } else { if (0 == *letP) { xoptind++; letP = NULL; } xoptarg = NULL; } return ch; } gopEOF: xoptarg = letP = NULL; return EOF; gopError: xoptarg = NULL; if (xopterr) FatalError ("get command line option"); return ('?'); } // Return Mathlab type by depth static size_t SizeOfArrayType(const mxArray *Array) { switch (mxGetClassID(Array)) { case mxINT8_CLASS: return 1; case mxUINT8_CLASS: return 1; case mxINT16_CLASS: return 2; case mxUINT16_CLASS: return 2; case mxSINGLE_CLASS: return 4; case mxDOUBLE_CLASS: return 0; // Special case -- lcms handles double as size=0 default: FatalError("Unsupported data type"); return 0; } } // Get number of pixels of input array. Supported arrays are // organized as NxMxD, being N and M the size of image and D the // number of components. static size_t GetNumberOfPixels(const mxArray* In) { int nDimensions = mxGetNumberOfDimensions(In); const int *Dimensions = mxGetDimensions(In); switch (nDimensions) { case 1: return 1; // It is just a spot color case 2: return Dimensions[0]; // A scanline case 3: return Dimensions[0]*Dimensions[1]; // A image default: FatalError("Unsupported array of %d dimensions", nDimensions); return 0; } } // Allocates the output array. Copies the input array modifying the pixel // definition to match "OutputChannels". static mxArray* AllocateOutputArray(const mxArray* In, int OutputChannels) { mxArray* Out = mxDuplicateArray(In); // Make a "deep copy" of Input array int nDimensions = mxGetNumberOfDimensions(In); const int* Dimensions = mxGetDimensions(In); int InputChannels = Dimensions[nDimensions-1]; // Modify pixel size only if needed if (InputChannels != OutputChannels) { int i, NewSize; int *ModifiedDimensions = (int*) mxMalloc(nDimensions * sizeof(int)); memmove(ModifiedDimensions, Dimensions, nDimensions * sizeof(int)); ModifiedDimensions[nDimensions - 1] = OutputChannels; switch (mxGetClassID(In)) { case mxINT8_CLASS: NewSize = sizeof(char); break; case mxUINT8_CLASS: NewSize = sizeof(unsigned char); break; case mxINT16_CLASS: NewSize = sizeof(short); break; case mxUINT16_CLASS: NewSize = sizeof(unsigned short); break; default: case mxDOUBLE_CLASS: NewSize = sizeof(double); break; } // NewSize = 1; for (i=0; i < nDimensions; i++) NewSize *= ModifiedDimensions[i]; mxSetDimensions(Out, ModifiedDimensions, nDimensions); mxFree(ModifiedDimensions); mxSetPr(Out, mxRealloc(mxGetPr(Out), NewSize)); } return Out; } // Does create a format descriptor. "Bytes" is the sizeof type in bytes // // Bytes Meaning // ------ -------- // 0 Floating point (double) // 1 8-bit samples // 2 16-bit samples static cmsUInt32Number MakeFormatDescriptor(cmsColorSpaceSignature ColorSpace, int Bytes) { int IsFloat = (Bytes == 0 || Bytes == 4) ? 1 : 0; int Channels = cmsChannelsOf(ColorSpace); return FLOAT_SH(IsFloat)|COLORSPACE_SH(_cmsLCMScolorSpace(ColorSpace))|BYTES_SH(Bytes)|CHANNELS_SH(Channels)|PLANAR_SH(1); } // Opens a profile or proper built-in static cmsHPROFILE OpenProfile(const char* File) { cmsContext ContextID = 0; if (!File) return cmsCreate_sRGBProfileTHR(ContextID); if (cmsstrcasecmp(File, "*Lab2") == 0) return cmsCreateLab2ProfileTHR(ContextID, NULL); if (cmsstrcasecmp(File, "*Lab4") == 0) return cmsCreateLab4ProfileTHR(ContextID, NULL); if (cmsstrcasecmp(File, "*Lab") == 0) return cmsCreateLab4ProfileTHR(ContextID, NULL); if (cmsstrcasecmp(File, "*LabD65") == 0) { cmsCIExyY D65xyY; cmsWhitePointFromTemp( &D65xyY, 6504); return cmsCreateLab4ProfileTHR(ContextID, &D65xyY); } if (cmsstrcasecmp(File, "*XYZ") == 0) return cmsCreateXYZProfileTHR(ContextID); if (cmsstrcasecmp(File, "*Gray22") == 0) { cmsToneCurve* Curve = cmsBuildGamma(ContextID, 2.2); cmsHPROFILE hProfile = cmsCreateGrayProfileTHR(ContextID, cmsD50_xyY(), Curve); cmsFreeToneCurve(Curve); return hProfile; } if (cmsstrcasecmp(File, "*Gray30") == 0) { cmsToneCurve* Curve = cmsBuildGamma(ContextID, 3.0); cmsHPROFILE hProfile = cmsCreateGrayProfileTHR(ContextID, cmsD50_xyY(), Curve); cmsFreeToneCurve(Curve); return hProfile; } if (cmsstrcasecmp(File, "*srgb") == 0) return cmsCreate_sRGBProfileTHR(ContextID); if (cmsstrcasecmp(File, "*null") == 0) return cmsCreateNULLProfileTHR(ContextID); if (cmsstrcasecmp(File, "*Lin2222") == 0) { cmsToneCurve* Gamma = cmsBuildGamma(0, 2.2); cmsToneCurve* Gamma4[4]; cmsHPROFILE hProfile; Gamma4[0] = Gamma4[1] = Gamma4[2] = Gamma4[3] = Gamma; hProfile = cmsCreateLinearizationDeviceLink(cmsSigCmykData, Gamma4); cmsFreeToneCurve(Gamma); return hProfile; } return cmsOpenProfileFromFileTHR(ContextID, File, "r"); } static cmsUInt32Number GetFlags() { cmsUInt32Number dwFlags = 0; switch (PrecalcMode) { case 0: dwFlags = cmsFLAGS_NOOPTIMIZE; break; case 2: dwFlags = cmsFLAGS_HIGHRESPRECALC; break; case 3: dwFlags = cmsFLAGS_LOWRESPRECALC; break; case 1: break; default: FatalError("Unknown precalculation mode '%d'", PrecalcMode); } if (BlackPointCompensation) dwFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; return dwFlags; } // Create transforms static void OpenTransforms(int argc, char *argv[]) { cmsUInt32Number dwIn, dwOut, dwFlags; if (lMultiProfileChain) { int i; cmsHTRANSFORM hTmp; nProfiles = argc - xoptind; for (i=0; i < nProfiles; i++) { hProfiles[i] = OpenProfile(argv[i+xoptind]); } // Create a temporary devicelink hTmp = cmsCreateMultiprofileTransform(hProfiles, nProfiles, 0, 0, Intent, GetFlags()); hInput = cmsTransform2DeviceLink(hTmp, 4.2, 0); hOutput = NULL; cmsDeleteTransform(hTmp); InputColorSpace = cmsGetColorSpace(hInput); OutputColorSpace = cmsGetPCS(hInput); lIsDeviceLink = TRUE; } else if (lIsDeviceLink) { hInput = cmsOpenProfileFromFile(cInProf, "r"); hOutput = NULL; InputColorSpace = cmsGetColorSpace(hInput); OutputColorSpace = cmsGetPCS(hInput); } else { hInput = OpenProfile(cInProf); hOutput = OpenProfile(cOutProf); InputColorSpace = cmsGetColorSpace(hInput); OutputColorSpace = cmsGetColorSpace(hOutput); if (cmsGetDeviceClass(hInput) == cmsSigLinkClass || cmsGetDeviceClass(hOutput) == cmsSigLinkClass) FatalError("Use %cl flag for devicelink profiles!\n", SW); } /* if (Verbose) { mexPrintf("From: %s\n", cmsTakeProductName(hInput)); if (hOutput) mexPrintf("To : %s\n\n", cmsTakeProductName(hOutput)); } */ OutputChannels = cmsChannelsOf(OutputColorSpace); InputChannels = cmsChannelsOf(InputColorSpace); dwIn = MakeFormatDescriptor(InputColorSpace, nBytesDepth); dwOut = MakeFormatDescriptor(OutputColorSpace, nBytesDepth); dwFlags = GetFlags(); if (cProofing != NULL) { hProof = OpenProfile(cProofing); dwFlags |= cmsFLAGS_SOFTPROOFING; } hColorTransform = cmsCreateProofingTransform(hInput, dwIn, hOutput, dwOut, hProof, Intent, ProofingIntent, dwFlags); } static void ApplyTransforms(const mxArray *In, mxArray *Out) { double *Input = mxGetPr(In); double *Output = mxGetPr(Out); size_t nPixels = GetNumberOfPixels(In);; cmsDoTransform(hColorTransform, Input, Output, nPixels ); } static void CloseTransforms(void) { int i; if (hColorTransform) cmsDeleteTransform(hColorTransform); if (hInput) cmsCloseProfile(hInput); if (hOutput) cmsCloseProfile(hOutput); if (hProof) cmsCloseProfile(hProof); for (i=0; i < nProfiles; i++) cmsCloseProfile(hProfiles[i]); hColorTransform = NULL; hInput = NULL; hOutput = NULL; hProof = NULL; } static void HandleSwitches(int argc, char *argv[]) { int s; xoptinit(); while ((s = xgetopt(argc, argv,"C:c:VvbBI:i:O:o:T:t:L:l:r:r:P:p:Mm")) != EOF) { switch (s){ case 'b': case 'B': BlackPointCompensation = TRUE; break; case 'c': case 'C': PrecalcMode = atoi(xoptarg); if (PrecalcMode < 0 || PrecalcMode > 3) FatalError("Unknown precalc mode '%d'", PrecalcMode); break; case 'v': case 'V': Verbose = TRUE; break; case 'i': case 'I': if (lIsDeviceLink) FatalError("Device-link already specified"); cInProf = xoptarg; break; case 'o': case 'O': if (lIsDeviceLink) FatalError("Device-link already specified"); cOutProf = xoptarg; break; case 't': case 'T': Intent = atoi(xoptarg); // if (Intent > 3) Intent = 3; if (Intent < 0) Intent = 0; break; case 'l': case 'L': cInProf = xoptarg; lIsDeviceLink = TRUE; break; case 'p': case 'P': cProofing = xoptarg; break; case 'r': case 'R': ProofingIntent = atoi(xoptarg); // if (ProofingIntent > 3) ProofingIntent = 3; if (ProofingIntent < 0) ProofingIntent = 0; break; case 'm': case 'M': lMultiProfileChain = TRUE; break; default: FatalError("Unknown option."); } } // For multiprofile, need to specify -m if (xoptind < argc) { if (!lMultiProfileChain) FatalError("Use %cm for multiprofile transforms", SW); } } // -------------------------------------------------- Print some fancy help static void PrintHelp(void) { mexPrintf("(MX) little cms ColorSpace conversion tool - v2.0\n\n"); mexPrintf("usage: icctrans (mVar, flags)\n\n"); mexPrintf("mVar : Matlab array.\n"); mexPrintf("flags: a string containing one or more of following options.\n\n"); mexPrintf("\t%cv - Verbose\n", SW); mexPrintf("\t%ci - Input profile (defaults to sRGB)\n", SW); mexPrintf("\t%co - Output profile (defaults to sRGB)\n", SW); mexPrintf("\t%cl - Transform by device-link profile\n", SW); mexPrintf("\t%cm - Apply multiprofile chain\n", SW); mexPrintf("\t%ct - Rendering intent\n", SW); mexPrintf("\t%cb - Black point compensation\n", SW); mexPrintf("\t%cc<0,1,2,3> - Optimize transform (0=Off, 1=Normal, 2=Hi-res, 3=Lo-Res) [defaults to 1]\n", SW); mexPrintf("\t%cp - Soft proof profile\n", SW); mexPrintf("\t%cr<0,1,2,3> - Soft proof intent\n", SW); mexPrintf("\nYou can use following built-ins as profiles:\n\n"); mexPrintf("\t*Lab2 -- D50-based v2 CIEL*a*b\n" "\t*Lab4 -- D50-based v4 CIEL*a*b\n" "\t*Lab -- D50-based v4 CIEL*a*b\n" "\t*XYZ -- CIE XYZ (PCS)\n" "\t*sRGB -- IEC6 1996-2.1 sRGB color space\n" "\t*Gray22 - Monochrome of Gamma 2.2\n" "\t*Gray30 - Monochrome of Gamma 3.0\n" "\t*null - Monochrome black for all input\n" "\t*Lin2222- CMYK linearization of gamma 2.2 on each channel\n\n"); mexPrintf("For suggestions, comments, bug reports etc. send mail to info@littlecms.com\n\n"); } // Main entry point void mexFunction( int nlhs, // Number of left hand side (output) arguments mxArray *plhs[], // Array of left hand side arguments int nrhs, // Number of right hand side (input) arguments const mxArray *prhs[] // Array of right hand side arguments ) { char CommandLine[4096+1]; char *pt, *argv[128]; int argc = 1; if (nrhs != 2) { PrintHelp(); return; } if(nlhs > 1) { FatalError("Too many output arguments."); } // Setup error handler cmsSetLogErrorHandler(MatLabErrorHandler); // Defaults Verbose = 0; cInProf = NULL; cOutProf = NULL; cProofing = NULL; lMultiProfileChain = FALSE; nProfiles = 0; Intent = INTENT_PERCEPTUAL; ProofingIntent = INTENT_ABSOLUTE_COLORIMETRIC; PrecalcMode = 1; BlackPointCompensation = FALSE; lIsDeviceLink = FALSE; // Check types. Fist parameter is array of values, second parameter is command line if (!mxIsNumeric(prhs[0])) FatalError("Type mismatch on argument 1 -- Must be numeric"); if (!mxIsChar(prhs[1])) FatalError("Type mismatch on argument 2 -- Must be string"); // Unpack string to command line buffer if (mxGetString(prhs[1], CommandLine, 4096)) FatalError("Cannot unpack command string"); // Separate to argv[] convention argv[0] = NULL; for (pt = strtok(CommandLine, " "); pt; pt = strtok(NULL, " ")) { argv[argc++] = pt; } // Parse arguments HandleSwitches(argc, argv); nBytesDepth = SizeOfArrayType(prhs[0]); OpenTransforms(argc, argv); plhs[0] = AllocateOutputArray(prhs[0], OutputChannels); ApplyTransforms(prhs[0], plhs[0]); CloseTransforms(); // Done! } lcms2-2.5/utils/transicc/0000755002406300000240000000000012163061555014677 5ustar mariamauserslcms2-2.5/utils/transicc/transicc.10000644002406300000240000000236012163060730016562 0ustar mariamausers.\"Shiju P. Nair September 30, 2004 .TH ICCTRANS 1 "September 30, 2004" .SH NAME icctrans - little cms ColorSpace conversion calculator. .SH SYNOPSIS .B icctrans .RI [ options ] .SH DESCRIPTION lcms is a standalone CMM engine, which deals with the color management. It implements a fast transformation between ICC profiles. .B icctrans is lcms ColorSpace conversion calculator. .SH OPTIONS .TP .B \-% use percent % of ink. .TP .B \-b Black point compensation. .TP .B \-c <0,1,2,3> Precalculates transform. (0=Off, 1=Normal, 2=Hi-res, 3=LoRes) [defaults to 1] .TP .BI \-i\ profile Input profile (defaults to sRGB). .TP .B \-l Transform by device-link profile. .TP .B \-n Terse output, intended for pipe usage. .TP .BI \-o\ profile .p Output profile (defaults to sRGB). .TP .B \-t <0,1,2,3> Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute). .TP .B \-v Verbose. .TP .B \-w Use 16 bits. .TP .B \-x Hexadecimal. .TP You can use '*Lab' and '*xyz' as built-in profiles. .SH NOTES For suggestions, comments, bug reports etc. send mail to info@littlecms.com. .SH SEE ALSO .BR jpegicc (1), .BR tifficc (1), .BR icc2ps (1), .BR icclink (1), .BR wtpt (1) .SH AUTHOR This manual page was written by Shiju p. Nair , for the Debian project. lcms2-2.5/utils/transicc/Makefile.in0000644002406300000240000005132212163060730016741 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building lcms sample programs # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = transicc$(EXEEXT) subdir = utils/transicc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_transicc_OBJECTS = transicc.$(OBJEXT) xgetopt.$(OBJEXT) \ vprf.$(OBJEXT) transicc_OBJECTS = $(am_transicc_OBJECTS) transicc_DEPENDENCIES = $(top_builddir)/src/liblcms2.la transicc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(transicc_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(transicc_SOURCES) DIST_SOURCES = $(transicc_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common transicc_LDADD = $(top_builddir)/src/liblcms2.la transicc_LDFLAGS = @LDFLAGS@ transicc_SOURCES = transicc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h transicc_MANS = transicc.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign utils/transicc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign utils/transicc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list transicc$(EXEEXT): $(transicc_OBJECTS) $(transicc_DEPENDENCIES) $(EXTRA_transicc_DEPENDENCIES) @rm -f transicc$(EXEEXT) $(transicc_LINK) $(transicc_OBJECTS) $(transicc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transicc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vprf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetopt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< xgetopt.o: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.o -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c xgetopt.obj: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.obj -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` vprf.o: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.o -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c vprf.obj: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.obj -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/utils/transicc/transicc.c0000644002406300000240000010352612163060730016652 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "utils.h" #ifndef _MSC_VER # include #endif #ifdef CMS_IS_WINDOWS_ # include #endif #define MAX_INPUT_BUFFER 4096 // Global options static cmsBool InHexa = FALSE; static cmsBool GamutCheck = FALSE; static cmsBool Width16 = FALSE; static cmsBool BlackPointCompensation = FALSE; static cmsBool lIsDeviceLink = FALSE; static cmsBool lQuantize = FALSE; static cmsBool lIsFloat = TRUE; static cmsUInt32Number Intent = INTENT_PERCEPTUAL; static cmsUInt32Number ProofingIntent = INTENT_PERCEPTUAL; static int PrecalcMode = 0; // -------------------------------------------------------------- static char *cInProf = NULL; static char *cOutProf = NULL; static char *cProofing = NULL; static char *IncludePart = NULL; static cmsHANDLE hIT8in = NULL; // CGATS input static cmsHANDLE hIT8out = NULL; // CGATS output static char CGATSPatch[1024]; // Actual Patch Name static char CGATSoutFilename[cmsMAX_PATH]; static int nMaxPatches; static cmsHTRANSFORM hTrans, hTransXYZ, hTransLab; static cmsBool InputNamedColor = FALSE; static cmsColorSpaceSignature InputColorSpace, OutputColorSpace; static cmsNAMEDCOLORLIST* InputColorant = NULL; static cmsNAMEDCOLORLIST* OutputColorant = NULL; static cmsFloat64Number InputRange, OutputRange; // isatty replacement #ifdef _MSC_VER #define xisatty(x) _isatty( _fileno( (x) ) ) #else #define xisatty(x) isatty( fileno( (x) ) ) #endif //--------------------------------------------------------------------------------------------------- // Print usage to stderr static void Help(void) { fprintf(stderr, "usage: transicc [flags] [CGATS input] [CGATS output]\n\n"); fprintf(stderr, "flags:\n\n"); fprintf(stderr, "%cv<0..3> - Verbosity level\n", SW); fprintf(stderr, "%ce[op] - Encoded representation of numbers\n", SW); fprintf(stderr, "\t%cw - use 16 bits\n", SW); fprintf(stderr, "\t%cx - Hexadecimal\n", SW); fprintf(stderr, "%cq - Quantize CGATS to 8 bits\n\n", SW); fprintf(stderr, "%ci - Input profile (defaults to sRGB)\n", SW); fprintf(stderr, "%co - Output profile (defaults to sRGB)\n", SW); fprintf(stderr, "%cl - Transform by device-link profile\n", SW); fprintf(stderr, "\nYou can use '*Lab', '*xyz' and others as built-in profiles\n\n"); PrintRenderingIntents(); fprintf(stderr, "\n"); fprintf(stderr, "%cd<0..1> - Observer adaptation state (abs.col. only)\n\n", SW); fprintf(stderr, "%cb - Black point compensation\n", SW); fprintf(stderr, "%cc<0,1,2,3> Precalculates transform (0=Off, 1=Normal, 2=Hi-res, 3=LoRes)\n\n", SW); fprintf(stderr, "%cn - Terse output, intended for pipe usage\n", SW); fprintf(stderr, "%cp - Soft proof profile\n", SW); fprintf(stderr, "%cm<0,1,2,3> - Soft proof intent\n", SW); fprintf(stderr, "%cg - Marks out-of-gamut colors on softproof\n\n", SW); fprintf(stderr, "This program is intended to be a demo of the little cms\n" "engine. Both lcms and this program are freeware. You can\n" "obtain both in source code at http://www.littlecms.com\n" "For suggestions, comments, bug reports etc. send mail to\n" "info@littlecms.com\n\n"); } // The toggles stuff static void HandleSwitches(int argc, char *argv[]) { int s; while ((s = xgetopt(argc, argv, "bBC:c:d:D:eEgGI:i:L:l:m:M:nNO:o:p:P:QqT:t:V:v:WwxX!:")) != EOF) { switch (s){ case '!': IncludePart = xoptarg; break; case 'b': case 'B': BlackPointCompensation = TRUE; break; case 'c': case 'C': PrecalcMode = atoi(xoptarg); if (PrecalcMode < 0 || PrecalcMode > 3) FatalError("Unknown precalc mode '%d'", PrecalcMode); break; case 'd': case 'D': { cmsFloat64Number ObserverAdaptationState = atof(xoptarg); if (ObserverAdaptationState < 0 || ObserverAdaptationState > 1.0) FatalError("Adaptation states should be between 0 and 1"); cmsSetAdaptationState(ObserverAdaptationState); } break; case 'e': case 'E': lIsFloat = FALSE; break; case 'g': case 'G': GamutCheck = TRUE; break; case 'i': case 'I': if (lIsDeviceLink) FatalError("icctrans: Device-link already specified"); cInProf = xoptarg; break; case 'l': case 'L': cInProf = xoptarg; lIsDeviceLink = TRUE; break; // No extra intents for proofing case 'm': case 'M': ProofingIntent = atoi(xoptarg); if (ProofingIntent > 3) FatalError("Unknown Proofing Intent '%d'", ProofingIntent); break; // For compatibility case 'n': case 'N': Verbose = 0; break; // Output profile case 'o': case 'O': if (lIsDeviceLink) FatalError("icctrans: Device-link already specified"); cOutProf = xoptarg; break; // Proofing profile case 'p': case 'P': cProofing = xoptarg; break; // Quantize to 16 bits case 'q': case 'Q': lQuantize = TRUE; break; // The intent case 't': case 'T': Intent = atoi(xoptarg); break; // Verbosity level case 'V': case 'v': Verbose = atoi(xoptarg); if (Verbose < 0 || Verbose > 3) { FatalError("Unknown verbosity level '%d'", Verbose); } break; // Wide (16 bits) case 'W': case 'w': Width16 = TRUE; break; // Hexadecimal case 'x': case 'X': InHexa = TRUE; break; default: FatalError("Unknown option - run without args to see valid ones.\n"); } } // If output CGATS involved, switch to float if ((argc - xoptind) > 2) { lIsFloat = TRUE; } } static void SetRange(cmsFloat64Number range, cmsBool IsInput) { if (IsInput) InputRange = range; else OutputRange = range; } // Populate a named color list with usual component names. // I am using the first Colorant channel to store the range, but it works since // this space is not used anyway. static cmsNAMEDCOLORLIST* ComponentNames(cmsColorSpaceSignature space, cmsBool IsInput) { cmsNAMEDCOLORLIST* out; int i, n; char Buffer[cmsMAX_PATH]; out = cmsAllocNamedColorList(0, 12, cmsMAXCHANNELS, "", ""); if (out == NULL) return NULL; switch (space) { case cmsSigXYZData: SetRange(100, IsInput); cmsAppendNamedColor(out, "X", NULL, NULL); cmsAppendNamedColor(out, "Y", NULL, NULL); cmsAppendNamedColor(out, "Z", NULL, NULL); break; case cmsSigLabData: SetRange(1, IsInput); cmsAppendNamedColor(out, "L*", NULL, NULL); cmsAppendNamedColor(out, "a*", NULL, NULL); cmsAppendNamedColor(out, "b*", NULL, NULL); break; case cmsSigLuvData: SetRange(1, IsInput); cmsAppendNamedColor(out, "L", NULL, NULL); cmsAppendNamedColor(out, "u", NULL, NULL); cmsAppendNamedColor(out, "v", NULL, NULL); break; case cmsSigYCbCrData: SetRange(255, IsInput); cmsAppendNamedColor(out, "Y", NULL, NULL ); cmsAppendNamedColor(out, "Cb", NULL, NULL); cmsAppendNamedColor(out, "Cr", NULL, NULL); break; case cmsSigYxyData: SetRange(1, IsInput); cmsAppendNamedColor(out, "Y", NULL, NULL); cmsAppendNamedColor(out, "x", NULL, NULL); cmsAppendNamedColor(out, "y", NULL, NULL); break; case cmsSigRgbData: SetRange(255, IsInput); cmsAppendNamedColor(out, "R", NULL, NULL); cmsAppendNamedColor(out, "G", NULL, NULL); cmsAppendNamedColor(out, "B", NULL, NULL); break; case cmsSigGrayData: SetRange(255, IsInput); cmsAppendNamedColor(out, "G", NULL, NULL); break; case cmsSigHsvData: SetRange(255, IsInput); cmsAppendNamedColor(out, "H", NULL, NULL); cmsAppendNamedColor(out, "s", NULL, NULL); cmsAppendNamedColor(out, "v", NULL, NULL); break; case cmsSigHlsData: SetRange(255, IsInput); cmsAppendNamedColor(out, "H", NULL, NULL); cmsAppendNamedColor(out, "l", NULL, NULL); cmsAppendNamedColor(out, "s", NULL, NULL); break; case cmsSigCmykData: SetRange(1, IsInput); cmsAppendNamedColor(out, "C", NULL, NULL); cmsAppendNamedColor(out, "M", NULL, NULL); cmsAppendNamedColor(out, "Y", NULL, NULL); cmsAppendNamedColor(out, "K", NULL, NULL); break; case cmsSigCmyData: SetRange(1, IsInput); cmsAppendNamedColor(out, "C", NULL, NULL); cmsAppendNamedColor(out, "M", NULL, NULL); cmsAppendNamedColor(out, "Y", NULL, NULL); break; default: SetRange(1, IsInput); n = cmsChannelsOf(space); for (i=0; i < n; i++) { sprintf(Buffer, "Channel #%d", i + 1); cmsAppendNamedColor(out, Buffer, NULL, NULL); } } return out; } // Creates all needed color transforms static cmsBool OpenTransforms(void) { cmsHPROFILE hInput, hOutput, hProof; cmsUInt32Number dwIn, dwOut, dwFlags; cmsNAMEDCOLORLIST* List; int i; // We don't need cache dwFlags = cmsFLAGS_NOCACHE; if (lIsDeviceLink) { hInput = OpenStockProfile(0, cInProf); if (hInput == NULL) return FALSE; hOutput = NULL; hProof = NULL; if (cmsGetDeviceClass(hInput) == cmsSigNamedColorClass) { OutputColorSpace = cmsGetColorSpace(hInput); InputColorSpace = cmsGetPCS(hInput); } else { InputColorSpace = cmsGetColorSpace(hInput); OutputColorSpace = cmsGetPCS(hInput); } // Read colorant tables if present if (cmsIsTag(hInput, cmsSigColorantTableTag)) { List = cmsReadTag(hInput, cmsSigColorantTableTag); InputColorant = cmsDupNamedColorList(List); InputRange = 1; } else InputColorant = ComponentNames(InputColorSpace, TRUE); if (cmsIsTag(hInput, cmsSigColorantTableOutTag)){ List = cmsReadTag(hInput, cmsSigColorantTableOutTag); OutputColorant = cmsDupNamedColorList(List); OutputRange = 1; } else OutputColorant = ComponentNames(OutputColorSpace, FALSE); } else { hInput = OpenStockProfile(0, cInProf); if (hInput == NULL) return FALSE; hOutput = OpenStockProfile(0, cOutProf); if (hOutput == NULL) return FALSE; hProof = NULL; if (cmsGetDeviceClass(hInput) == cmsSigLinkClass || cmsGetDeviceClass(hOutput) == cmsSigLinkClass) FatalError("Use %cl flag for devicelink profiles!\n", SW); InputColorSpace = cmsGetColorSpace(hInput); OutputColorSpace = cmsGetColorSpace(hOutput); // Read colorant tables if present if (cmsIsTag(hInput, cmsSigColorantTableTag)) { List = cmsReadTag(hInput, cmsSigColorantTableTag); InputColorant = cmsDupNamedColorList(List); if (cmsNamedColorCount(InputColorant) <= 3) SetRange(255, TRUE); else SetRange(1, TRUE); // Inks are already divided by 100 in the formatter } else InputColorant = ComponentNames(InputColorSpace, TRUE); if (cmsIsTag(hOutput, cmsSigColorantTableTag)){ List = cmsReadTag(hOutput, cmsSigColorantTableTag); OutputColorant = cmsDupNamedColorList(List); if (cmsNamedColorCount(OutputColorant) <= 3) SetRange(255, FALSE); else SetRange(1, FALSE); // Inks are already divided by 100 in the formatter } else OutputColorant = ComponentNames(OutputColorSpace, FALSE); if (cProofing != NULL) { hProof = OpenStockProfile(0, cProofing); if (hProof == NULL) return FALSE; dwFlags |= cmsFLAGS_SOFTPROOFING; } } // Print information on profiles if (Verbose > 2) { printf("Profile:\n"); PrintProfileInformation(hInput); if (hOutput) { printf("Output profile:\n"); PrintProfileInformation(hOutput); } if (hProof != NULL) { printf("Proofing profile:\n"); PrintProfileInformation(hProof); } } // Input is always in floating point dwIn = cmsFormatterForColorspaceOfProfile(hInput, 0, TRUE); if (lIsDeviceLink) { dwOut = cmsFormatterForPCSOfProfile(hInput, lIsFloat ? 0 : 2, lIsFloat); } else { // 16 bits or floating point (only on output) dwOut = cmsFormatterForColorspaceOfProfile(hOutput, lIsFloat ? 0 : 2, lIsFloat); } // For named color, there is a specialized formatter if (cmsGetDeviceClass(hInput) == cmsSigNamedColorClass) { dwOut = dwIn; dwIn = TYPE_NAMED_COLOR_INDEX; InputNamedColor = TRUE; } // Precision mode switch (PrecalcMode) { case 0: dwFlags |= cmsFLAGS_NOOPTIMIZE; break; case 2: dwFlags |= cmsFLAGS_HIGHRESPRECALC; break; case 3: dwFlags |= cmsFLAGS_LOWRESPRECALC; break; case 1: break; default: FatalError("Unknown precalculation mode '%d'", PrecalcMode); } if (BlackPointCompensation) dwFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; if (GamutCheck) { cmsUInt16Number Alarm[cmsMAXCHANNELS]; if (hProof == NULL) FatalError("I need proofing profile -p for gamut checking!"); for (i=0; i < cmsMAXCHANNELS; i++) Alarm[i] = 0xFFFF; cmsSetAlarmCodes(Alarm); dwFlags |= cmsFLAGS_GAMUTCHECK; } // The main transform hTrans = cmsCreateProofingTransform(hInput, dwIn, hOutput, dwOut, hProof, Intent, ProofingIntent, dwFlags); if (hProof) cmsCloseProfile(hProof); if (hTrans == NULL) return FALSE; // PCS Dump if requested hTransXYZ = NULL; hTransLab = NULL; if (hOutput && Verbose > 1) { cmsHPROFILE hXYZ = cmsCreateXYZProfile(); cmsHPROFILE hLab = cmsCreateLab4Profile(NULL); hTransXYZ = cmsCreateTransform(hInput, dwIn, hXYZ, lIsFloat ? TYPE_XYZ_DBL : TYPE_XYZ_16, Intent, cmsFLAGS_NOCACHE); if (hTransXYZ == NULL) return FALSE; hTransLab = cmsCreateTransform(hInput, dwIn, hLab, lIsFloat? TYPE_Lab_DBL : TYPE_Lab_16, Intent, cmsFLAGS_NOCACHE); if (hTransLab == NULL) return FALSE; cmsCloseProfile(hXYZ); cmsCloseProfile(hLab); } if (hInput) cmsCloseProfile(hInput); if (hOutput) cmsCloseProfile(hOutput); return TRUE; } // Free open resources static void CloseTransforms(void) { if (InputColorant) cmsFreeNamedColorList(InputColorant); if (OutputColorant) cmsFreeNamedColorList(OutputColorant); if (hTrans) cmsDeleteTransform(hTrans); if (hTransLab) cmsDeleteTransform(hTransLab); if (hTransXYZ) cmsDeleteTransform(hTransXYZ); } // --------------------------------------------------------------------------------------------------- // Get input from user static void GetLine(char* Buffer, const char* frm, ...) { int res; va_list args; va_start(args, frm); do { if (xisatty(stdin)) vfprintf(stderr, frm, args); res = scanf("%4095s", Buffer); if (res < 0 || toupper(Buffer[0]) == 'Q') { // Quit? CloseTransforms(); if (xisatty(stdin)) fprintf(stderr, "Done.\n"); exit(0); } } while (res == 0); va_end(args); } // Print a value which is given in double floating point static void PrintFloatResults(cmsFloat64Number Value[]) { cmsUInt32Number i, n; char ChannelName[cmsMAX_PATH]; cmsFloat64Number v; n = cmsChannelsOf(OutputColorSpace); for (i=0; i < n; i++) { if (OutputColorant != NULL) { cmsNamedColorInfo(OutputColorant, i, ChannelName, NULL, NULL, NULL, NULL); } else { OutputRange = 1; sprintf(ChannelName, "Channel #%u", i + 1); } v = (cmsFloat64Number) Value[i]* OutputRange; if (lQuantize) v = floor(v + 0.5); if (Verbose <= 0) printf("%.4f ", v); else printf("%s=%.4f ", ChannelName, v); } printf("\n"); } // Get a named-color index static cmsUInt16Number GetIndex(void) { char Buffer[4096], Name[40], Prefix[40], Suffix[40]; int index, max; const cmsNAMEDCOLORLIST* NamedColorList; NamedColorList = cmsGetNamedColorList(hTrans); if (NamedColorList == NULL) return 0; max = cmsNamedColorCount(NamedColorList)-1; GetLine(Buffer, "Color index (0..%d)? ", max); index = atoi(Buffer); if (index > max) FatalError("Named color %d out of range!", index); cmsNamedColorInfo(NamedColorList, index, Name, Prefix, Suffix, NULL, NULL); printf("\n%s %s %s\n", Prefix, Name, Suffix); return (cmsUInt16Number) index; } // Read values from a text file or terminal static void TakeFloatValues(cmsFloat64Number Float[]) { cmsUInt32Number i, n; char ChannelName[cmsMAX_PATH]; char Buffer[cmsMAX_PATH]; if (xisatty(stdin)) fprintf(stderr, "\nEnter values, 'q' to quit\n"); if (InputNamedColor) { // This is named color index, which is always cmsUInt16Number cmsUInt16Number index = GetIndex(); memcpy(Float, &index, sizeof(cmsUInt16Number)); return; } n = cmsChannelsOf(InputColorSpace); for (i=0; i < n; i++) { if (InputColorant) { cmsNamedColorInfo(InputColorant, i, ChannelName, NULL, NULL, NULL, NULL); } else { InputRange = 1; sprintf(ChannelName, "Channel #%u", i+1); } GetLine(Buffer, "%s? ", ChannelName); Float[i] = (cmsFloat64Number) atof(Buffer) / InputRange; } if (xisatty(stdin)) fprintf(stderr, "\n"); } static void PrintPCSFloat(cmsFloat64Number Input[]) { if (Verbose > 1 && hTransXYZ && hTransLab) { cmsCIEXYZ XYZ = { 0, 0, 0 }; cmsCIELab Lab = { 0, 0, 0 }; if (hTransXYZ) cmsDoTransform(hTransXYZ, Input, &XYZ, 1); if (hTransLab) cmsDoTransform(hTransLab, Input, &Lab, 1); printf("[PCS] Lab=(%.4f,%.4f,%.4f) XYZ=(%.4f,%.4f,%.4f)\n", Lab.L, Lab.a, Lab.b, XYZ.X * 100.0, XYZ.Y * 100.0, XYZ.Z * 100.0); } } // ----------------------------------------------------------------------------------------------- static void PrintEncodedResults(cmsUInt16Number Encoded[]) { cmsUInt32Number i, n; char ChannelName[cmsMAX_PATH]; cmsUInt32Number v; n = cmsChannelsOf(OutputColorSpace); for (i=0; i < n; i++) { if (OutputColorant != NULL) { cmsNamedColorInfo(OutputColorant, i, ChannelName, NULL, NULL, NULL, NULL); } else { sprintf(ChannelName, "Channel #%u", i + 1); } if (Verbose > 0) printf("%s=", ChannelName); v = Encoded[i]; if (InHexa) { if (Width16) printf("0x%04X ", (int) floor(v + .5)); else printf("0x%02X ", (int) floor(v / 257. + .5)); } else { if (Width16) printf("%d ", (int) floor(v + .5)); else printf("%d ", (int) floor(v / 257. + .5)); } } printf("\n"); } // Print XYZ/Lab values on verbose mode static void PrintPCSEncoded(cmsFloat64Number Input[]) { if (Verbose > 1 && hTransXYZ && hTransLab) { cmsUInt16Number XYZ[3], Lab[3]; if (hTransXYZ) cmsDoTransform(hTransXYZ, Input, XYZ, 1); if (hTransLab) cmsDoTransform(hTransLab, Input, Lab, 1); printf("[PCS] Lab=(0x%04X,0x%04X,0x%04X) XYZ=(0x%04X,0x%04X,0x%04X)\n", Lab[0], Lab[1], Lab[2], XYZ[0], XYZ[1], XYZ[2]); } } // -------------------------------------------------------------------------------------- // Take a value from IT8 and scale it accordly to fill a cmsUInt16Number (0..FFFF) static cmsFloat64Number GetIT8Val(const char* Name, cmsFloat64Number Max) { const char* Val = cmsIT8GetData(hIT8in, CGATSPatch, Name); if (Val == NULL) FatalError("Field '%s' not found", Name); return atof(Val) / Max; } // Read input values from CGATS file. static void TakeCGATSValues(int nPatch, cmsFloat64Number Float[]) { // At first take the name if SAMPLE_ID is present if (cmsIT8GetPatchName(hIT8in, nPatch, CGATSPatch) == NULL) { FatalError("Sorry, I need 'SAMPLE_ID' on input CGATS to operate."); } // Special handling for named color profiles. // Lookup the name in the names database (the transform) if (InputNamedColor) { const cmsNAMEDCOLORLIST* NamedColorList; int index; NamedColorList = cmsGetNamedColorList(hTrans); if (NamedColorList == NULL) FatalError("Malformed named color profile"); index = cmsNamedColorIndex(NamedColorList, CGATSPatch); if (index < 0) FatalError("Named color '%s' not found in the profile", CGATSPatch); Float[0] = index; return; } // Color is not a spot color, proceed. switch (InputColorSpace) { // Encoding should follow CGATS specification. case cmsSigXYZData: Float[0] = cmsIT8GetDataDbl(hIT8in, CGATSPatch, "XYZ_X") / 100.0; Float[1] = cmsIT8GetDataDbl(hIT8in, CGATSPatch, "XYZ_Y") / 100.0; Float[2] = cmsIT8GetDataDbl(hIT8in, CGATSPatch, "XYZ_Z") / 100.0; break; case cmsSigLabData: Float[0] = cmsIT8GetDataDbl(hIT8in, CGATSPatch, "LAB_L"); Float[1] = cmsIT8GetDataDbl(hIT8in, CGATSPatch, "LAB_A"); Float[2] = cmsIT8GetDataDbl(hIT8in, CGATSPatch, "LAB_B"); break; case cmsSigRgbData: Float[0] = GetIT8Val("RGB_R", 255.0); Float[1] = GetIT8Val("RGB_G", 255.0); Float[2] = GetIT8Val("RGB_B", 255.0); break; case cmsSigGrayData: Float[0] = GetIT8Val("GRAY", 255.0); break; case cmsSigCmykData: Float[0] = GetIT8Val("CMYK_C", 1.0); Float[1] = GetIT8Val("CMYK_M", 1.0); Float[2] = GetIT8Val("CMYK_Y", 1.0); Float[3] = GetIT8Val("CMYK_K", 1.0); break; case cmsSigCmyData: Float[0] = GetIT8Val("CMY_C", 1.0); Float[1] = GetIT8Val("CMY_M", 1.0); Float[2] = GetIT8Val("CMY_Y", 1.0); break; case cmsSig1colorData: case cmsSig2colorData: case cmsSig3colorData: case cmsSig4colorData: case cmsSig5colorData: case cmsSig6colorData: case cmsSig7colorData: case cmsSig8colorData: case cmsSig9colorData: case cmsSig10colorData: case cmsSig11colorData: case cmsSig12colorData: case cmsSig13colorData: case cmsSig14colorData: case cmsSig15colorData: { cmsUInt32Number i, n; n = cmsChannelsOf(InputColorSpace); for (i=0; i < n; i++) { char Buffer[255]; sprintf(Buffer, "%uCLR_%u", n, i+1); Float[i] = GetIT8Val(Buffer, 100.0); } } break; default: { cmsUInt32Number i, n; n = cmsChannelsOf(InputColorSpace); for (i=0; i < n; i++) { char Buffer[255]; sprintf(Buffer, "CHAN_%u", i+1); Float[i] = GetIT8Val(Buffer, 1.0); } } } } static void SetCGATSfld(const char* Col, cmsFloat64Number Val) { if (lQuantize) Val = floor(Val + 0.5); if (!cmsIT8SetDataDbl(hIT8out, CGATSPatch, Col, Val)) { FatalError("couldn't set '%s' on output cgats '%s'", Col, CGATSoutFilename); } } static void PutCGATSValues(cmsFloat64Number Float[]) { cmsIT8SetData(hIT8out, CGATSPatch, "SAMPLE_ID", CGATSPatch); switch (OutputColorSpace) { // Encoding should follow CGATS specification. case cmsSigXYZData: SetCGATSfld("XYZ_X", Float[0] * 100.0); SetCGATSfld("XYZ_Y", Float[1] * 100.0); SetCGATSfld("XYZ_Z", Float[2] * 100.0); break; case cmsSigLabData: SetCGATSfld("LAB_L", Float[0]); SetCGATSfld("LAB_A", Float[1]); SetCGATSfld("LAB_B", Float[2]); break; case cmsSigRgbData: SetCGATSfld("RGB_R", Float[0] * 255.0); SetCGATSfld("RGB_G", Float[1] * 255.0); SetCGATSfld("RGB_B", Float[2] * 255.0); break; case cmsSigGrayData: SetCGATSfld("GRAY", Float[0] * 255.0); break; case cmsSigCmykData: SetCGATSfld("CMYK_C", Float[0]); SetCGATSfld("CMYK_M", Float[1]); SetCGATSfld("CMYK_Y", Float[2]); SetCGATSfld("CMYK_K", Float[3]); break; case cmsSigCmyData: SetCGATSfld("CMY_C", Float[0]); SetCGATSfld("CMY_M", Float[1]); SetCGATSfld("CMY_Y", Float[2]); break; case cmsSig1colorData: case cmsSig2colorData: case cmsSig3colorData: case cmsSig4colorData: case cmsSig5colorData: case cmsSig6colorData: case cmsSig7colorData: case cmsSig8colorData: case cmsSig9colorData: case cmsSig10colorData: case cmsSig11colorData: case cmsSig12colorData: case cmsSig13colorData: case cmsSig14colorData: case cmsSig15colorData: { cmsUInt32Number i, n; n = cmsChannelsOf(InputColorSpace); for (i=0; i < n; i++) { char Buffer[255]; sprintf(Buffer, "%uCLR_%u", n, i+1); SetCGATSfld(Buffer, Float[i] * 100.0); } } break; default: { cmsUInt32Number i, n; n = cmsChannelsOf(InputColorSpace); for (i=0; i < n; i++) { char Buffer[255]; sprintf(Buffer, "CHAN_%u", i+1); SetCGATSfld(Buffer, Float[i]); } } } } // Create data format static void SetOutputDataFormat(void) { cmsIT8DefineDblFormat(hIT8out, "%.4g"); cmsIT8SetPropertyStr(hIT8out, "ORIGINATOR", "icctrans"); if (IncludePart != NULL) cmsIT8SetPropertyStr(hIT8out, ".INCLUDE", IncludePart); cmsIT8SetComment(hIT8out, "Data follows"); cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_SETS", nMaxPatches); switch (OutputColorSpace) { // Encoding should follow CGATS specification. case cmsSigXYZData: cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", 4); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8out, 1, "XYZ_X"); cmsIT8SetDataFormat(hIT8out, 2, "XYZ_Y"); cmsIT8SetDataFormat(hIT8out, 3, "XYZ_Z"); break; case cmsSigLabData: cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", 4); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8out, 1, "LAB_L"); cmsIT8SetDataFormat(hIT8out, 2, "LAB_A"); cmsIT8SetDataFormat(hIT8out, 3, "LAB_B"); break; case cmsSigRgbData: cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", 4); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8out, 1, "RGB_R"); cmsIT8SetDataFormat(hIT8out, 2, "RGB_G"); cmsIT8SetDataFormat(hIT8out, 3, "RGB_B"); break; case cmsSigGrayData: cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", 2); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8out, 1, "GRAY"); break; case cmsSigCmykData: cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", 5); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8out, 1, "CMYK_C"); cmsIT8SetDataFormat(hIT8out, 2, "CMYK_M"); cmsIT8SetDataFormat(hIT8out, 3, "CMYK_Y"); cmsIT8SetDataFormat(hIT8out, 4, "CMYK_K"); break; case cmsSigCmyData: cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", 4); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8out, 1, "CMY_C"); cmsIT8SetDataFormat(hIT8out, 2, "CMY_M"); cmsIT8SetDataFormat(hIT8out, 3, "CMY_Y"); break; case cmsSig1colorData: case cmsSig2colorData: case cmsSig3colorData: case cmsSig4colorData: case cmsSig5colorData: case cmsSig6colorData: case cmsSig7colorData: case cmsSig8colorData: case cmsSig9colorData: case cmsSig10colorData: case cmsSig11colorData: case cmsSig12colorData: case cmsSig13colorData: case cmsSig14colorData: case cmsSig15colorData: { int i, n; char Buffer[255]; n = cmsChannelsOf(OutputColorSpace); cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", n+1); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); for (i=1; i <= n; i++) { sprintf(Buffer, "%dCLR_%d", n, i); cmsIT8SetDataFormat(hIT8out, i, Buffer); } } break; default: { int i, n; char Buffer[255]; n = cmsChannelsOf(OutputColorSpace); cmsIT8SetPropertyDbl(hIT8out, "NUMBER_OF_FIELDS", n+1); cmsIT8SetDataFormat(hIT8out, 0, "SAMPLE_ID"); for (i=1; i <= n; i++) { sprintf(Buffer, "CHAN_%d", i); cmsIT8SetDataFormat(hIT8out, i, Buffer); } } } } // Open CGATS if specified static void OpenCGATSFiles(int argc, char *argv[]) { int nParams = argc - xoptind; if (nParams >= 1) { hIT8in = cmsIT8LoadFromFile(0, argv[xoptind]); if (hIT8in == NULL) FatalError("'%s' is not recognized as a CGATS file", argv[xoptind]); nMaxPatches = (int) cmsIT8GetPropertyDbl(hIT8in, "NUMBER_OF_SETS"); } if (nParams == 2) { hIT8out = cmsIT8Alloc(NULL); SetOutputDataFormat(); strncpy(CGATSoutFilename, argv[xoptind+1], cmsMAX_PATH-1); } if (nParams > 2) FatalError("Too many CGATS files"); } // The main sink int main(int argc, char *argv[]) { cmsUInt16Number Output[cmsMAXCHANNELS]; cmsFloat64Number OutputFloat[cmsMAXCHANNELS]; cmsFloat64Number InputFloat[cmsMAXCHANNELS]; int nPatch = 0; fprintf(stderr, "LittleCMS ColorSpace conversion calculator - 4.2 [LittleCMS %2.2f]\n", LCMS_VERSION / 1000.0); InitUtils("transicc"); Verbose = 1; if (argc == 1) { Help(); return 0; } HandleSwitches(argc, argv); // Open profiles, create transforms if (!OpenTransforms()) return 1; // Open CGATS input if specified OpenCGATSFiles(argc, argv); // Main loop: read all values and convert them for(;;) { if (hIT8in != NULL) { if (nPatch >= nMaxPatches) break; TakeCGATSValues(nPatch++, InputFloat); } else { if (feof(stdin)) break; TakeFloatValues(InputFloat); } if (lIsFloat) cmsDoTransform(hTrans, InputFloat, OutputFloat, 1); else cmsDoTransform(hTrans, InputFloat, Output, 1); if (hIT8out != NULL) { PutCGATSValues(OutputFloat); } else { if (lIsFloat) { PrintFloatResults(OutputFloat); PrintPCSFloat(InputFloat); } else { PrintEncodedResults(Output); PrintPCSEncoded(InputFloat); } } } // Cleanup CloseTransforms(); if (hIT8in) cmsIT8Free(hIT8in); if (hIT8out) { cmsIT8SaveToFile(hIT8out, CGATSoutFilename); cmsIT8Free(hIT8out); } // All is ok return 0; } lcms2-2.5/utils/transicc/Makefile.am0000644002406300000240000000112612163060730016725 0ustar mariamausers# # Makefile for building lcms sample programs # Originally Written by Bob Friesenhahn, June 2003 # Additions and bugs by Marti Maria # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common bin_PROGRAMS = transicc transicc_LDADD = $(top_builddir)/src/liblcms2.la transicc_LDFLAGS = @LDFLAGS@ transicc_SOURCES = transicc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h transicc_MANS = transicc.1 EXTRA_DIST = $(man_MANS) lcms2-2.5/utils/tificc/0000755002406300000240000000000012163061555014332 5ustar mariamauserslcms2-2.5/utils/tificc/tificc.10000644002406300000240000000426212163060730015653 0ustar mariamausers.\"Shiju P. Nair September 30, 2004 .TH TIFFICC 1 "October 23, 2004" .SH NAME tifficc - little cms ICC profile applier for TIFF. .SH SYNOPSIS .B tifficc .RI [ options ] " input.tif output.tif" .SH DESCRIPTION lcms is a standalone CMM engine, which deals with the color management. It implements a fast transformation between ICC profiles. .B tifficc is little cms ICC profile applier for TIFF. .SH OPTIONS .TP .B \-a Handle channels > 4 as alpha. .TP .B \-b Black point compensation. .TP .B \-c <0,1,2,3> Precalculates transform. (0=Off, 1=Normal, 2=Hi-res, 3=LoRes) [defaults to 1] .TP .B \-e Embed destination profile. .TP .B \-g Marks out-of-gamut colors on softproof. .TP .B \-h <0,1,2> Show summary of options and examples. .TP .BI \-i\ profile Input profile (defaults to sRGB). .TP .B -k <0..400> Ink-limiting in % (CMYK only). .TP .BI \-l\ profile Transform by device-link profile. .TP .B \-m <0,1,2,3> SoftProof intent. .TP .B \-n Ignore embedded profile on input. .TP .BI \-p\ profile Soft proof profile. .TP .BI \-o\ profile .p Output profile (defaults to sRGB). .TP .BI \-s\ profile Save embedded profile as .TP .B \-t <0,1,2,3> Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute). .TP .B \-v Verbose. .TP .B \-w Wide output (generates 16 bps tiff). .TP You can also use following builtins *Lab - CIE Lab D50 based *XYZ - XYZ *adobe1998RBB - AdobeRGB *colormatchrgb - ColorMatch RGB *applergb - Apple RGB .SH EXAMPLES .nf To color correct from scanner to sRGB: tifficc -iscanner.icm in.tif out.tif To convert from monitor1 to monitor2: tifficc -imon1.icm -omon2.icm in.tif out.tif To make a CMYK separation: tifficc -oprinter.icm inrgb.tif outcmyk.tif To recover sRGB from a CMYK separation: tifficc -iprinter.icm incmyk.tif outrgb.tif To convert from CIELab TIFF to sRGB tifficc -iTiffLab8Spac.icm in.tif out.tif .fi .SH NOTES For suggestions, comments, bug reports etc. send mail to info@littlecms.com. .SH SEE ALSO .BR jpegicc (1), .BR icc2ps (1), .BR icclink (1), .BR icctrans (1), .BR wtpt (1) .SH AUTHOR This manual page was originally written by Shiju p. Nair , for the Debian project. Modified by Marti Maria to reflect further changes. lcms2-2.5/utils/tificc/tifdiff.c0000644002406300000240000004647412163060730016122 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "utils.h" #include "tiffio.h" // ------------------------------------------------------------------------ static TIFF *Tiff1, *Tiff2, *TiffDiff; static const char* TiffDiffFilename; static const char* CGATSout; typedef struct { double n, x, x2; double Min, Peak; } STAT, *LPSTAT; static STAT ColorantStat[4]; static STAT EuclideanStat; static STAT ColorimetricStat; static uint16 Channels; static cmsHPROFILE hLab; static void ConsoleWarningHandler(const char* module, const char* fmt, va_list ap) { char e[512] = { '\0' }; if (module != NULL) strcat(strcpy(e, module), ": "); vsprintf(e+strlen(e), fmt, ap); strcat(e, "."); if (Verbose) { fprintf(stderr, "\nWarning"); fprintf(stderr, " %s\n", e); fflush(stderr); } } static void ConsoleErrorHandler(const char* module, const char* fmt, va_list ap) { char e[512] = { '\0' }; if (module != NULL) strcat(strcpy(e, module), ": "); vsprintf(e+strlen(e), fmt, ap); strcat(e, "."); fprintf(stderr, "\nError"); fprintf(stderr, " %s\n", e); fflush(stderr); } static void Help() { fprintf(stderr, "Little cms TIFF compare utility. v1.0\n\n"); fprintf(stderr, "usage: tiffdiff [flags] input.tif output.tif\n"); fprintf(stderr, "\nflags:\n\n"); fprintf(stderr, "%co - Output TIFF file\n", SW); fprintf(stderr, "%cg - Output results in CGATS file\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%cv - Verbose (show warnings)\n", SW); fprintf(stderr, "%ch - This help\n", SW); fflush(stderr); exit(0); } // The toggles stuff static void HandleSwitches(int argc, char *argv[]) { int s; while ((s=xgetopt(argc,argv,"o:O:hHvVg:G:")) != EOF) { switch (s) { case 'v': case 'V': Verbose = TRUE; break; case 'o': case 'O': TiffDiffFilename = xoptarg; break; case 'H': case 'h': Help(); break; case 'g': case 'G': CGATSout = xoptarg; break; default: FatalError("Unknown option - run without args to see valid ones"); } } } static void ClearStatistics(LPSTAT st) { st ->n = st ->x = st->x2 = st->Peak = 0; st ->Min = 1E10; } static void AddOnePixel(LPSTAT st, double dE) { st-> x += dE; st ->x2 += (dE * dE); st->n += 1.0; if (dE > st ->Peak) st ->Peak = dE; if (dE < st ->Min) st ->Min= dE; } static double Std(LPSTAT st) { return sqrt((st->n * st->x2 - st->x * st->x) / (st->n*(st->n-1))); } static double Mean(LPSTAT st) { return st ->x/st ->n; } // Build up the pixeltype descriptor static cmsUInt32Number GetInputPixelType(TIFF *Bank) { uint16 Photometric, bps, spp, extra, PlanarConfig, *info; uint16 Compression, reverse = 0; int ColorChannels, IsPlanar = 0, pt = 0; TIFFGetField(Bank, TIFFTAG_PHOTOMETRIC, &Photometric); TIFFGetFieldDefaulted(Bank, TIFFTAG_BITSPERSAMPLE, &bps); if (bps == 1) FatalError("Sorry, bilevel TIFFs has nothig to do with ICC profiles"); if (bps != 8 && bps != 16) FatalError("Sorry, 8 or 16 bits per sample only"); TIFFGetFieldDefaulted(Bank, TIFFTAG_SAMPLESPERPIXEL, &spp); TIFFGetFieldDefaulted(Bank, TIFFTAG_PLANARCONFIG, &PlanarConfig); switch (PlanarConfig) { case PLANARCONFIG_CONTIG: IsPlanar = 0; break; case PLANARCONFIG_SEPARATE: FatalError("Planar TIFF are not supported"); default: FatalError("Unsupported planar configuration (=%d) ", (int) PlanarConfig); } // If Samples per pixel == 1, PlanarConfiguration is irrelevant and need // not to be included. if (spp == 1) IsPlanar = 0; // Any alpha? TIFFGetFieldDefaulted(Bank, TIFFTAG_EXTRASAMPLES, &extra, &info); ColorChannels = spp - extra; switch (Photometric) { case PHOTOMETRIC_MINISWHITE: reverse = 1; case PHOTOMETRIC_MINISBLACK: pt = PT_GRAY; break; case PHOTOMETRIC_RGB: pt = PT_RGB; break; case PHOTOMETRIC_PALETTE: FatalError("Sorry, palette images not supported (at least on this version)"); case PHOTOMETRIC_SEPARATED: pt = PixelTypeFromChanCount(ColorChannels); break; case PHOTOMETRIC_YCBCR: TIFFGetField(Bank, TIFFTAG_COMPRESSION, &Compression); { uint16 subx, suby; pt = PT_YCbCr; TIFFGetFieldDefaulted(Bank, TIFFTAG_YCBCRSUBSAMPLING, &subx, &suby); if (subx != 1 || suby != 1) FatalError("Sorry, subsampled images not supported"); } break; case 9: case PHOTOMETRIC_CIELAB: pt = PT_Lab; break; case PHOTOMETRIC_LOGLUV: /* CIE Log2(L) (u',v') */ TIFFSetField(Bank, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_16BIT); pt = PT_YUV; // *ICCSpace = icSigLuvData; bps = 16; // 16 bits forced by LibTiff break; default: FatalError("Unsupported TIFF color space (Photometric %d)", Photometric); } // Convert bits per sample to bytes per sample bps >>= 3; return (COLORSPACE_SH(pt)|PLANAR_SH(IsPlanar)|EXTRA_SH(extra)|CHANNELS_SH(ColorChannels)|BYTES_SH(bps)|FLAVOR_SH(reverse)); } static cmsUInt32Number OpenEmbedded(TIFF* tiff, cmsHPROFILE* PtrProfile, cmsHTRANSFORM* PtrXform) { cmsUInt32Number EmbedLen, dwFormat = 0; cmsUInt8Number* EmbedBuffer; *PtrProfile = NULL; *PtrXform = NULL; if (TIFFGetField(tiff, TIFFTAG_ICCPROFILE, &EmbedLen, &EmbedBuffer)) { *PtrProfile = cmsOpenProfileFromMem(EmbedBuffer, EmbedLen); if (Verbose) { fprintf(stdout, "Embedded profile found:\n"); PrintProfileInformation(*PtrProfile); } dwFormat = GetInputPixelType(tiff); *PtrXform = cmsCreateTransform(*PtrProfile, dwFormat, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); } return dwFormat; } static size_t PixelSize(cmsUInt32Number dwFormat) { return T_BYTES(dwFormat) * (T_CHANNELS(dwFormat) + T_EXTRA(dwFormat)); } static int CmpImages(TIFF* tiff1, TIFF* tiff2, TIFF* diff) { cmsUInt8Number* buf1, *buf2, *buf3=NULL; int row, cols, imagewidth = 0, imagelength = 0; uint16 Photometric; double dE = 0; double dR, dG, dB, dC, dM, dY, dK; int rc = 0; cmsHPROFILE hProfile1 = 0, hProfile2 = 0; cmsHTRANSFORM xform1 = 0, xform2 = 0; cmsUInt32Number dwFormat1, dwFormat2; TIFFGetField(tiff1, TIFFTAG_PHOTOMETRIC, &Photometric); TIFFGetField(tiff1, TIFFTAG_IMAGEWIDTH, &imagewidth); TIFFGetField(tiff1, TIFFTAG_IMAGELENGTH, &imagelength); TIFFGetField(tiff1, TIFFTAG_SAMPLESPERPIXEL, &Channels); dwFormat1 = OpenEmbedded(tiff1, &hProfile1, &xform1); dwFormat2 = OpenEmbedded(tiff2, &hProfile2, &xform2); buf1 = (cmsUInt8Number*)_TIFFmalloc(TIFFScanlineSize(tiff1)); buf2 = (cmsUInt8Number*)_TIFFmalloc(TIFFScanlineSize(tiff2)); if (diff) { TIFFSetField(diff, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK); TIFFSetField(diff, TIFFTAG_COMPRESSION, COMPRESSION_NONE); TIFFSetField(diff, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); TIFFSetField(diff, TIFFTAG_IMAGEWIDTH, imagewidth); TIFFSetField(diff, TIFFTAG_IMAGELENGTH, imagelength); TIFFSetField(diff, TIFFTAG_SAMPLESPERPIXEL, 1); TIFFSetField(diff, TIFFTAG_BITSPERSAMPLE, 8); buf3 = (cmsUInt8Number*)_TIFFmalloc(TIFFScanlineSize(diff)); } for (row = 0; row < imagelength; row++) { if (TIFFReadScanline(tiff1, buf1, row, 0) < 0) goto Error; if (TIFFReadScanline(tiff2, buf2, row, 0) < 0) goto Error; for (cols = 0; cols < imagewidth; cols++) { switch (Photometric) { case PHOTOMETRIC_MINISWHITE: case PHOTOMETRIC_MINISBLACK: dE = fabs(buf2[cols] - buf1[cols]); AddOnePixel(&ColorantStat[0], dE); AddOnePixel(&EuclideanStat, dE); break; case PHOTOMETRIC_RGB: { int index = 3 * cols; dR = fabs(buf2[index+0] - buf1[index+0]); dG = fabs(buf2[index+1] - buf1[index+1]); dB = fabs(buf2[index+2] - buf1[index+2]); dE = sqrt(dR * dR + dG * dG + dB * dB) / sqrt(3.); } AddOnePixel(&ColorantStat[0], dR); AddOnePixel(&ColorantStat[1], dG); AddOnePixel(&ColorantStat[2], dB); AddOnePixel(&EuclideanStat, dE); break; case PHOTOMETRIC_SEPARATED: { int index = 4 * cols; dC = fabs(buf2[index+0] - buf1[index+0]); dM = fabs(buf2[index+1] - buf1[index+1]); dY = fabs(buf2[index+2] - buf1[index+2]); dK = fabs(buf2[index+3] - buf1[index+3]); dE = sqrt(dC * dC + dM * dM + dY * dY + dK * dK) / 2.; } AddOnePixel(&ColorantStat[0], dC); AddOnePixel(&ColorantStat[1], dM); AddOnePixel(&ColorantStat[2], dY); AddOnePixel(&ColorantStat[3], dK); AddOnePixel(&EuclideanStat, dE); break; default: FatalError("Unsupported channels: %d", Channels); } if (xform1 && xform2) { cmsCIELab Lab1, Lab2; size_t index1 = cols * PixelSize(dwFormat1); size_t index2 = cols * PixelSize(dwFormat2); cmsDoTransform(xform1, &buf1[index1], &Lab1, 1); cmsDoTransform(xform2, &buf2[index2], &Lab2, 1); dE = cmsDeltaE(&Lab1, &Lab2); AddOnePixel(&ColorimetricStat, dE); } if (diff) { buf3[cols] = (cmsUInt8Number) floor(dE + 0.5); } } if (diff) { if (TIFFWriteScanline(diff, buf3, row, 0) < 0) goto Error; } } rc = 1; Error: if (hProfile1) cmsCloseProfile(hProfile1); if (hProfile2) cmsCloseProfile(hProfile2); if (xform1) cmsDeleteTransform(xform1); if (xform2) cmsDeleteTransform(xform2); _TIFFfree(buf1); _TIFFfree(buf2); if (diff) { TIFFWriteDirectory(diff); if (buf3 != NULL) _TIFFfree(buf3); } return rc; } static void AssureShortTagIs(TIFF* tif1, TIFF* tiff2, int tag, int Val, const char* Error) { uint16 v1; if (!TIFFGetField(tif1, tag, &v1)) goto Err; if (v1 != Val) goto Err; if (!TIFFGetField(tiff2, tag, &v1)) goto Err; if (v1 != Val) goto Err; return; Err: FatalError("%s is not proper", Error); } static int CmpShortTag(TIFF* tif1, TIFF* tif2, int tag) { uint16 v1, v2; if (!TIFFGetField(tif1, tag, &v1)) return 0; if (!TIFFGetField(tif2, tag, &v2)) return 0; return v1 == v2; } static int CmpLongTag(TIFF* tif1, TIFF* tif2, int tag) { uint32 v1, v2; if (!TIFFGetField(tif1, tag, &v1)) return 0; if (!TIFFGetField(tif2, tag, &v2)) return 0; return v1 == v2; } static void EqualShortTag(TIFF* tif1, TIFF* tif2, int tag, const char* Error) { if (!CmpShortTag(tif1, tif2, tag)) FatalError("%s is different", Error); } static void EqualLongTag(TIFF* tif1, TIFF* tif2, int tag, const char* Error) { if (!CmpLongTag(tif1, tif2, tag)) FatalError("%s is different", Error); } static void AddOneCGATSRow(cmsHANDLE hIT8, char *Name, LPSTAT st) { double Per100 = 100.0 * ((255.0 - Mean(st)) / 255.0); cmsIT8SetData(hIT8, Name, "SAMPLE_ID", Name); cmsIT8SetDataDbl(hIT8, Name, "PER100_EQUAL", Per100); cmsIT8SetDataDbl(hIT8, Name, "MEAN_DE", Mean(st)); cmsIT8SetDataDbl(hIT8, Name, "STDEV_DE", Std(st)); cmsIT8SetDataDbl(hIT8, Name, "MIN_DE", st ->Min); cmsIT8SetDataDbl(hIT8, Name, "MAX_DE", st ->Peak); } static void CreateCGATS(const char* TiffName1, const char* TiffName2) { cmsHANDLE hIT8 = cmsIT8Alloc(0); time_t ltime; char Buffer[256]; cmsIT8SetSheetType(hIT8, "TIFFDIFF"); sprintf(Buffer, "Differences between %s and %s", TiffName1, TiffName2); cmsIT8SetComment(hIT8, Buffer); cmsIT8SetPropertyStr(hIT8, "ORIGINATOR", "TIFFDIFF"); time( <ime ); strcpy(Buffer, ctime(<ime)); Buffer[strlen(Buffer)-1] = 0; // Remove the nasty "\n" cmsIT8SetPropertyStr(hIT8, "CREATED", Buffer); cmsIT8SetComment(hIT8, " "); cmsIT8SetPropertyDbl(hIT8, "NUMBER_OF_FIELDS", 6); cmsIT8SetDataFormat(hIT8, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8, 1, "PER100_EQUAL"); cmsIT8SetDataFormat(hIT8, 2, "MEAN_DE"); cmsIT8SetDataFormat(hIT8, 3, "STDEV_DE"); cmsIT8SetDataFormat(hIT8, 4, "MIN_DE"); cmsIT8SetDataFormat(hIT8, 5, "MAX_DE"); switch (Channels) { case 1: cmsIT8SetPropertyDbl(hIT8, "NUMBER_OF_SETS", 3); AddOneCGATSRow(hIT8, "GRAY_PLANE", &ColorantStat[0]); break; case 3: cmsIT8SetPropertyDbl(hIT8, "NUMBER_OF_SETS", 5); AddOneCGATSRow(hIT8, "R_PLANE", &ColorantStat[0]); AddOneCGATSRow(hIT8, "G_PLANE", &ColorantStat[1]); AddOneCGATSRow(hIT8, "B_PLANE", &ColorantStat[2]); break; case 4: cmsIT8SetPropertyDbl(hIT8, "NUMBER_OF_SETS", 6); AddOneCGATSRow(hIT8, "C_PLANE", &ColorantStat[0]); AddOneCGATSRow(hIT8, "M_PLANE", &ColorantStat[1]); AddOneCGATSRow(hIT8, "Y_PLANE", &ColorantStat[2]); AddOneCGATSRow(hIT8, "K_PLANE", &ColorantStat[3]); break; default: FatalError("Internal error: Bad ColorSpace"); } AddOneCGATSRow(hIT8, "EUCLIDEAN", &EuclideanStat); AddOneCGATSRow(hIT8, "COLORIMETRIC", &ColorimetricStat); cmsIT8SaveToFile(hIT8, CGATSout); cmsIT8Free(hIT8); } int main(int argc, char* argv[]) { int i; Tiff1 = Tiff2 = TiffDiff = NULL; InitUtils("tiffdiff"); HandleSwitches(argc, argv); if ((argc - xoptind) != 2) { Help(); } TIFFSetErrorHandler(ConsoleErrorHandler); TIFFSetWarningHandler(ConsoleWarningHandler); Tiff1 = TIFFOpen(argv[xoptind], "r"); if (Tiff1 == NULL) FatalError("Unable to open '%s'", argv[xoptind]); Tiff2 = TIFFOpen(argv[xoptind+1], "r"); if (Tiff2 == NULL) FatalError("Unable to open '%s'", argv[xoptind+1]); if (TiffDiffFilename) { TiffDiff = TIFFOpen(TiffDiffFilename, "w"); if (TiffDiff == NULL) FatalError("Unable to create '%s'", TiffDiffFilename); } AssureShortTagIs(Tiff1, Tiff2, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG, "Planar Config"); AssureShortTagIs(Tiff1, Tiff2, TIFFTAG_BITSPERSAMPLE, 8, "8 bit per sample"); EqualLongTag(Tiff1, Tiff2, TIFFTAG_IMAGEWIDTH, "Image width"); EqualLongTag(Tiff1, Tiff2, TIFFTAG_IMAGELENGTH, "Image length"); EqualShortTag(Tiff1, Tiff2, TIFFTAG_SAMPLESPERPIXEL, "Samples per pixel"); hLab = cmsCreateLab4Profile(NULL); ClearStatistics(&EuclideanStat); for (i=0; i < 4; i++) ClearStatistics(&ColorantStat[i]); if (!CmpImages(Tiff1, Tiff2, TiffDiff)) FatalError("Error comparing images"); if (CGATSout) { CreateCGATS(argv[xoptind], argv[xoptind+1]); } else { double Per100 = 100.0 * ((255.0 - Mean(&EuclideanStat)) / 255.0); printf("Digital counts %g%% equal. mean %g, min %g, max %g, Std %g\n", Per100, Mean(&EuclideanStat), EuclideanStat.Min, EuclideanStat.Peak, Std(&EuclideanStat)); if (ColorimetricStat.n > 0) { Per100 = 100.0 * ((255.0 - Mean(&ColorimetricStat)) / 255.0); printf("dE Colorimetric %g%% equal. mean %g, min %g, max %g, Std %g\n", Per100, Mean(&ColorimetricStat), ColorimetricStat.Min, ColorimetricStat.Peak, Std(&ColorimetricStat)); } } if (hLab) cmsCloseProfile(hLab); if (Tiff1) TIFFClose(Tiff1); if (Tiff2) TIFFClose(Tiff2); if (TiffDiff) TIFFClose(TiffDiff); return 0; } lcms2-2.5/utils/tificc/Makefile.in0000644002406300000240000006050512163060730016377 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building tificc # Originally written by Bob Friesenhahn, June 2003 # bugs introduced by Marti Maria VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HasTIFF_TRUE@bin_PROGRAMS = tificc$(EXEEXT) subdir = utils/tificc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" PROGRAMS = $(bin_PROGRAMS) am_tificc_OBJECTS = tificc.$(OBJEXT) xgetopt.$(OBJEXT) vprf.$(OBJEXT) tificc_OBJECTS = $(am_tificc_OBJECTS) tificc_DEPENDENCIES = $(top_builddir)/src/liblcms2.la tificc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(tificc_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(tificc_SOURCES) DIST_SOURCES = $(tificc_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common tificc_LDADD = $(top_builddir)/src/liblcms2.la @TIFFICC_DEPLIBS@ tificc_LDFLAGS = @LDFLAGS@ tificc_SOURCES = tificc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h man_MANS = tificc.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign utils/tificc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign utils/tificc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list tificc$(EXEEXT): $(tificc_OBJECTS) $(tificc_DEPENDENCIES) $(EXTRA_tificc_DEPENDENCIES) @rm -f tificc$(EXEEXT) $(tificc_LINK) $(tificc_OBJECTS) $(tificc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tificc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vprf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetopt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< xgetopt.o: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.o -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c xgetopt.obj: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.obj -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` vprf.o: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.o -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c vprf.obj: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.obj -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-man \ uninstall-man1 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/utils/tificc/Makefile.am0000644002406300000240000000117012163060730016357 0ustar mariamausers# # Makefile for building tificc # Originally written by Bob Friesenhahn, June 2003 # bugs introduced by Marti Maria # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common if HasTIFF bin_PROGRAMS = tificc else bin_PROGRAMS = endif tificc_LDADD = $(top_builddir)/src/liblcms2.la @TIFFICC_DEPLIBS@ tificc_LDFLAGS = @LDFLAGS@ tificc_SOURCES = tificc.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h man_MANS = tificc.1 EXTRA_DIST = $(man_MANS) lcms2-2.5/utils/tificc/tificc.c0000644002406300000240000007735012163060730015745 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // This program does apply profiles to (some) TIFF files #include "lcms2_plugin.h" #include "tiffio.h" #include "utils.h" // Flags static cmsBool BlackWhiteCompensation = FALSE; static cmsBool IgnoreEmbedded = FALSE; static cmsBool EmbedProfile = FALSE; static int Width = 8; static cmsBool GamutCheck = FALSE; static cmsBool lIsDeviceLink = FALSE; static cmsBool StoreAsAlpha = FALSE; static int Intent = INTENT_PERCEPTUAL; static int ProofingIntent = INTENT_PERCEPTUAL; static int PrecalcMode = 1; static cmsFloat64Number InkLimit = 400; static cmsFloat64Number ObserverAdaptationState = 1.0; // According ICC 4.3 this is the default static const char *cInpProf = NULL; static const char *cOutProf = NULL; static const char *cProofing = NULL; static const char* SaveEmbedded = NULL; // Console error & warning static void ConsoleWarningHandler(const char* module, const char* fmt, va_list ap) { char e[512] = { '\0' }; if (module != NULL) strcat(strcpy(e, module), ": "); vsprintf(e+strlen(e), fmt, ap); strcat(e, "."); if (Verbose) { fprintf(stderr, "\nWarning"); fprintf(stderr, " %s\n", e); fflush(stderr); } } static void ConsoleErrorHandler(const char* module, const char* fmt, va_list ap) { char e[512] = { '\0' }; if (module != NULL) { if (strlen(module) < 500) strcat(strcpy(e, module), ": "); } vsprintf(e+strlen(e), fmt, ap); strcat(e, "."); fprintf(stderr, "\nError"); fprintf(stderr, " %s\n", e); fflush(stderr); } // Issue a warning static void Warning(const char *frm, ...) { va_list args; va_start(args, frm); ConsoleWarningHandler("[tificc]", frm, args); va_end(args); } // Out of mememory is a fatal error static void OutOfMem(cmsUInt32Number size) { FatalError("Out of memory on allocating %d bytes.", size); } // ----------------------------------------------------------------------------------------------- // In TIFF, Lab is encoded in a different way, so let's use the plug-in // capabilities of lcms2 to change the meaning of TYPE_Lab_8. // * 0xffff / 0xff00 = (255 * 257) / (255 * 256) = 257 / 256 static int FromLabV2ToLabV4(int x) { int a; a = ((x << 8) | x) >> 8; // * 257 / 256 if ( a > 0xffff) return 0xffff; return a; } // * 0xf00 / 0xffff = * 256 / 257 static int FromLabV4ToLabV2(int x) { return ((x << 8) + 0x80) / 257; } // Formatter for 8bit Lab TIFF (photometric 8) static unsigned char* UnrollTIFFLab8(struct _cmstransform_struct* CMMcargo, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = (cmsUInt16Number) FromLabV2ToLabV4((accum[0]) << 8); wIn[1] = (cmsUInt16Number) FromLabV2ToLabV4(((accum[1] > 127) ? (accum[1] - 128) : (accum[1] + 128)) << 8); wIn[2] = (cmsUInt16Number) FromLabV2ToLabV4(((accum[2] > 127) ? (accum[2] - 128) : (accum[2] + 128)) << 8); return accum + 3; UTILS_UNUSED_PARAMETER(Stride); UTILS_UNUSED_PARAMETER(CMMcargo); } // Formatter for 16bit Lab TIFF (photometric 8) static unsigned char* UnrollTIFFLab16(struct _cmstransform_struct* CMMcargo, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride ) { cmsUInt16Number* accum16 = (cmsUInt16Number*) accum; wIn[0] = (cmsUInt16Number) FromLabV2ToLabV4(accum16[0]); wIn[1] = (cmsUInt16Number) FromLabV2ToLabV4(((accum16[1] > 0x7f00) ? (accum16[1] - 0x8000) : (accum16[1] + 0x8000)) ); wIn[2] = (cmsUInt16Number) FromLabV2ToLabV4(((accum16[2] > 0x7f00) ? (accum16[2] - 0x8000) : (accum16[2] + 0x8000)) ); return accum + 3 * sizeof(cmsUInt16Number); UTILS_UNUSED_PARAMETER(Stride); UTILS_UNUSED_PARAMETER(CMMcargo); } static unsigned char* PackTIFFLab8(struct _cmstransform_struct* CMMcargo, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int a, b; *output++ = (cmsUInt8Number) (FromLabV4ToLabV2(wOut[0] + 0x0080) >> 8); a = (FromLabV4ToLabV2(wOut[1]) + 0x0080) >> 8; b = (FromLabV4ToLabV2(wOut[2]) + 0x0080) >> 8; *output++ = (cmsUInt8Number) ((a < 128) ? (a + 128) : (a - 128)); *output++ = (cmsUInt8Number) ((b < 128) ? (b + 128) : (b - 128)); return output; UTILS_UNUSED_PARAMETER(Stride); UTILS_UNUSED_PARAMETER(CMMcargo); } static unsigned char* PackTIFFLab16(struct _cmstransform_struct* CMMcargo, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int a, b; cmsUInt16Number* output16 = (cmsUInt16Number*) output; *output16++ = (cmsUInt16Number) FromLabV4ToLabV2(wOut[0]); a = FromLabV4ToLabV2(wOut[1]); b = FromLabV4ToLabV2(wOut[2]); *output16++ = (cmsUInt16Number) ((a < 0x7f00) ? (a + 0x8000) : (a - 0x8000)); *output16++ = (cmsUInt16Number) ((b < 0x7f00) ? (b + 0x8000) : (b - 0x8000)); return (cmsUInt8Number*) output16; UTILS_UNUSED_PARAMETER(Stride); UTILS_UNUSED_PARAMETER(CMMcargo); } static cmsFormatter TiffFormatterFactory(cmsUInt32Number Type, cmsFormatterDirection Dir, cmsUInt32Number dwFlags) { cmsFormatter Result = { NULL }; int bps = T_BYTES(Type); int IsTiffSpecial = (Type >> 23) & 1; if (IsTiffSpecial && !(dwFlags & CMS_PACK_FLAGS_FLOAT)) { if (Dir == cmsFormatterInput) { Result.Fmt16 = (bps == 1) ? UnrollTIFFLab8 : UnrollTIFFLab16; } else Result.Fmt16 = (bps == 1) ? PackTIFFLab8 : PackTIFFLab16; } return Result; } static cmsPluginFormatters TiffLabPlugin = { {cmsPluginMagicNumber, 2000, cmsPluginFormattersSig, NULL}, TiffFormatterFactory }; // Build up the pixeltype descriptor static cmsUInt32Number GetInputPixelType(TIFF *Bank) { uint16 Photometric, bps, spp, extra, PlanarConfig, *info; uint16 Compression, reverse = 0; int ColorChannels, IsPlanar = 0, pt = 0, IsFlt; int labTiffSpecial = FALSE; TIFFGetField(Bank, TIFFTAG_PHOTOMETRIC, &Photometric); TIFFGetFieldDefaulted(Bank, TIFFTAG_BITSPERSAMPLE, &bps); if (bps == 1) FatalError("Sorry, bilevel TIFFs has nothing to do with ICC profiles"); if (bps != 8 && bps != 16 && bps != 32) FatalError("Sorry, 8, 16 or 32 bits per sample only"); TIFFGetFieldDefaulted(Bank, TIFFTAG_SAMPLESPERPIXEL, &spp); TIFFGetFieldDefaulted(Bank, TIFFTAG_PLANARCONFIG, &PlanarConfig); switch (PlanarConfig) { case PLANARCONFIG_CONTIG: IsPlanar = 0; break; case PLANARCONFIG_SEPARATE: IsPlanar = 1; break; default: FatalError("Unsupported planar configuration (=%d) ", (int) PlanarConfig); } // If Samples per pixel == 1, PlanarConfiguration is irrelevant and need // not to be included. if (spp == 1) IsPlanar = 0; // Any alpha? TIFFGetFieldDefaulted(Bank, TIFFTAG_EXTRASAMPLES, &extra, &info); // Read alpha channels as colorant if (StoreAsAlpha) { ColorChannels = spp; extra = 0; } else ColorChannels = spp - extra; switch (Photometric) { case PHOTOMETRIC_MINISWHITE: reverse = 1; // ... fall through ... case PHOTOMETRIC_MINISBLACK: pt = PT_GRAY; break; case PHOTOMETRIC_RGB: pt = PT_RGB; break; case PHOTOMETRIC_PALETTE: FatalError("Sorry, palette images not supported"); break; case PHOTOMETRIC_SEPARATED: pt = PixelTypeFromChanCount(ColorChannels); break; case PHOTOMETRIC_YCBCR: TIFFGetField(Bank, TIFFTAG_COMPRESSION, &Compression); { uint16 subx, suby; pt = PT_YCbCr; TIFFGetFieldDefaulted(Bank, TIFFTAG_YCBCRSUBSAMPLING, &subx, &suby); if (subx != 1 || suby != 1) FatalError("Sorry, subsampled images not supported"); } break; case PHOTOMETRIC_ICCLAB: pt = PT_LabV2; break; case PHOTOMETRIC_CIELAB: pt = PT_Lab; labTiffSpecial = TRUE; break; case PHOTOMETRIC_LOGLUV: // CIE Log2(L) (u',v') TIFFSetField(Bank, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_16BIT); pt = PT_YUV; // *ICCSpace = icSigLuvData; bps = 16; // 16 bits forced by LibTiff break; default: FatalError("Unsupported TIFF color space (Photometric %d)", Photometric); } // Convert bits per sample to bytes per sample bps >>= 3; IsFlt = (bps == 0) || (bps == 4); return (FLOAT_SH(IsFlt)|COLORSPACE_SH(pt)|PLANAR_SH(IsPlanar)|EXTRA_SH(extra)|CHANNELS_SH(ColorChannels)|BYTES_SH(bps)|FLAVOR_SH(reverse) | (labTiffSpecial << 23) ); } // Rearrange pixel type to build output descriptor static cmsUInt32Number ComputeOutputFormatDescriptor(cmsUInt32Number dwInput, int OutColorSpace, int bps) { int IsPlanar = T_PLANAR(dwInput); int Channels = ChanCountFromPixelType(OutColorSpace); int IsFlt = (bps == 0) || (bps == 4); return (FLOAT_SH(IsFlt)|COLORSPACE_SH(OutColorSpace)|PLANAR_SH(IsPlanar)|CHANNELS_SH(Channels)|BYTES_SH(bps)); } // Tile based transforms static int TileBasedXform(cmsHTRANSFORM hXForm, TIFF* in, TIFF* out, int nPlanes) { tsize_t BufSizeIn = TIFFTileSize(in); tsize_t BufSizeOut = TIFFTileSize(out); unsigned char *BufferIn, *BufferOut; ttile_t i, TileCount = TIFFNumberOfTiles(in) / nPlanes; uint32 tw, tl; int PixelCount, j; TIFFGetFieldDefaulted(in, TIFFTAG_TILEWIDTH, &tw); TIFFGetFieldDefaulted(in, TIFFTAG_TILELENGTH, &tl); PixelCount = (int) tw * tl; BufferIn = (unsigned char *) _TIFFmalloc(BufSizeIn * nPlanes); if (!BufferIn) OutOfMem(BufSizeIn * nPlanes); BufferOut = (unsigned char *) _TIFFmalloc(BufSizeOut * nPlanes); if (!BufferOut) OutOfMem(BufSizeOut * nPlanes); for (i = 0; i < TileCount; i++) { for (j=0; j < nPlanes; j++) { if (TIFFReadEncodedTile(in, i + (j* TileCount), BufferIn + (j*BufSizeIn), BufSizeIn) < 0) goto cleanup; } cmsDoTransform(hXForm, BufferIn, BufferOut, PixelCount); for (j=0; j < nPlanes; j++) { if (TIFFWriteEncodedTile(out, i + (j*TileCount), BufferOut + (j*BufSizeOut), BufSizeOut) < 0) goto cleanup; } } _TIFFfree(BufferIn); _TIFFfree(BufferOut); return 1; cleanup: _TIFFfree(BufferIn); _TIFFfree(BufferOut); return 0; } // Strip based transforms static int StripBasedXform(cmsHTRANSFORM hXForm, TIFF* in, TIFF* out, int nPlanes) { tsize_t BufSizeIn = TIFFStripSize(in); tsize_t BufSizeOut = TIFFStripSize(out); unsigned char *BufferIn, *BufferOut; ttile_t i, StripCount = TIFFNumberOfStrips(in) / nPlanes; uint32 sw; uint32 sl; uint32 iml; int j; int PixelCount; TIFFGetFieldDefaulted(in, TIFFTAG_IMAGEWIDTH, &sw); TIFFGetFieldDefaulted(in, TIFFTAG_ROWSPERSTRIP, &sl); TIFFGetFieldDefaulted(in, TIFFTAG_IMAGELENGTH, &iml); // It is possible to get infinite rows per strip if (sl == 0 || sl > iml) sl = iml; // One strip for whole image BufferIn = (unsigned char *) _TIFFmalloc(BufSizeIn * nPlanes); if (!BufferIn) OutOfMem(BufSizeIn * nPlanes); BufferOut = (unsigned char *) _TIFFmalloc(BufSizeOut * nPlanes); if (!BufferOut) OutOfMem(BufSizeOut * nPlanes); for (i = 0; i < StripCount; i++) { for (j=0; j < nPlanes; j++) { if (TIFFReadEncodedStrip(in, i + (j * StripCount), BufferIn + (j * BufSizeIn), BufSizeIn) < 0) goto cleanup; } PixelCount = (int) sw * (iml < sl ? iml : sl); iml -= sl; cmsDoTransform(hXForm, BufferIn, BufferOut, PixelCount); for (j=0; j < nPlanes; j++) { if (TIFFWriteEncodedStrip(out, i + (j * StripCount), BufferOut + j * BufSizeOut, BufSizeOut) < 0) goto cleanup; } } _TIFFfree(BufferIn); _TIFFfree(BufferOut); return 1; cleanup: _TIFFfree(BufferIn); _TIFFfree(BufferOut); return 0; } // Creates minimum required tags static void WriteOutputTags(TIFF *out, int Colorspace, int BytesPerSample) { int BitsPerSample = (8 * BytesPerSample); int nChannels = ChanCountFromPixelType(Colorspace); uint16 Extra[] = { EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA, EXTRASAMPLE_UNASSALPHA }; switch (Colorspace) { case PT_GRAY: TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 1); TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, BitsPerSample); break; case PT_RGB: TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 3); TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, BitsPerSample); break; case PT_CMY: TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_SEPARATED); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 3); TIFFSetField(out, TIFFTAG_INKSET, 2); TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, BitsPerSample); break; case PT_CMYK: TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_SEPARATED); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 4); TIFFSetField(out, TIFFTAG_INKSET, INKSET_CMYK); TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, BitsPerSample); break; case PT_Lab: if (BitsPerSample == 16) TIFFSetField(out, TIFFTAG_PHOTOMETRIC, 9); else TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_CIELAB); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, 3); TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, BitsPerSample); // Needed by TIFF Spec break; // Multi-ink separations case PT_MCH2: case PT_MCH3: case PT_MCH4: case PT_MCH5: case PT_MCH6: case PT_MCH7: case PT_MCH8: case PT_MCH9: case PT_MCH10: case PT_MCH11: case PT_MCH12: case PT_MCH13: case PT_MCH14: case PT_MCH15: TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_SEPARATED); TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, nChannels); if (StoreAsAlpha && nChannels >= 4) { // CMYK plus extra alpha TIFFSetField(out, TIFFTAG_EXTRASAMPLES, nChannels - 4, Extra); TIFFSetField(out, TIFFTAG_INKSET, 1); TIFFSetField(out, TIFFTAG_NUMBEROFINKS, 4); } else { TIFFSetField(out, TIFFTAG_INKSET, 2); TIFFSetField(out, TIFFTAG_NUMBEROFINKS, nChannels); } TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, BitsPerSample); break; default: FatalError("Unsupported output colorspace"); } if (Width == 32) TIFFSetField(out, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP); } // Copies a bunch of tages static void CopyOtherTags(TIFF* in, TIFF* out) { #define CopyField(tag, v) \ if (TIFFGetField(in, tag, &v)) TIFFSetField(out, tag, v) short shortv; uint32 ow, ol; cmsFloat32Number floatv; char *stringv; uint32 longv; CopyField(TIFFTAG_SUBFILETYPE, longv); TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &ow); TIFFGetField(in, TIFFTAG_IMAGELENGTH, &ol); TIFFSetField(out, TIFFTAG_IMAGEWIDTH, ow); TIFFSetField(out, TIFFTAG_IMAGELENGTH, ol); CopyField(TIFFTAG_PLANARCONFIG, shortv); CopyField(TIFFTAG_COMPRESSION, shortv); if (Width != 32) CopyField(TIFFTAG_PREDICTOR, shortv); CopyField(TIFFTAG_THRESHHOLDING, shortv); CopyField(TIFFTAG_FILLORDER, shortv); CopyField(TIFFTAG_ORIENTATION, shortv); CopyField(TIFFTAG_MINSAMPLEVALUE, shortv); CopyField(TIFFTAG_MAXSAMPLEVALUE, shortv); CopyField(TIFFTAG_XRESOLUTION, floatv); CopyField(TIFFTAG_YRESOLUTION, floatv); CopyField(TIFFTAG_RESOLUTIONUNIT, shortv); CopyField(TIFFTAG_ROWSPERSTRIP, longv); CopyField(TIFFTAG_XPOSITION, floatv); CopyField(TIFFTAG_YPOSITION, floatv); CopyField(TIFFTAG_IMAGEDEPTH, longv); CopyField(TIFFTAG_TILEDEPTH, longv); CopyField(TIFFTAG_TILEWIDTH, longv); CopyField(TIFFTAG_TILELENGTH, longv); CopyField(TIFFTAG_ARTIST, stringv); CopyField(TIFFTAG_IMAGEDESCRIPTION, stringv); CopyField(TIFFTAG_MAKE, stringv); CopyField(TIFFTAG_MODEL, stringv); CopyField(TIFFTAG_DATETIME, stringv); CopyField(TIFFTAG_HOSTCOMPUTER, stringv); CopyField(TIFFTAG_PAGENAME, stringv); CopyField(TIFFTAG_DOCUMENTNAME, stringv); } // A replacement for (the nonstandard) filelenght static void DoEmbedProfile(TIFF* Out, const char* ProfileFile) { FILE* f; cmsUInt32Number size, EmbedLen; cmsUInt8Number* EmbedBuffer; f = fopen(ProfileFile, "rb"); if (f == NULL) return; size = cmsfilelength(f); EmbedBuffer = (cmsUInt8Number*) malloc(size + 1); if (EmbedBuffer == NULL) { OutOfMem(size+1); return; } EmbedLen = fread(EmbedBuffer, 1, size, f); if (EmbedLen != size) FatalError("Cannot read %ld bytes to %s", size, ProfileFile); fclose(f); EmbedBuffer[EmbedLen] = 0; TIFFSetField(Out, TIFFTAG_ICCPROFILE, EmbedLen, EmbedBuffer); free(EmbedBuffer); } static cmsHPROFILE GetTIFFProfile(TIFF* in) { cmsCIExyYTRIPLE Primaries; cmsFloat32Number* chr; cmsCIExyY WhitePoint; cmsFloat32Number* wp; int i; cmsToneCurve* Curve[3]; cmsUInt16Number *gmr, *gmg, *gmb; cmsHPROFILE hProfile; cmsUInt32Number EmbedLen; cmsUInt8Number* EmbedBuffer; if (IgnoreEmbedded) return NULL; if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &EmbedLen, &EmbedBuffer)) { hProfile = cmsOpenProfileFromMem(EmbedBuffer, EmbedLen); // Print description found in the profile if (Verbose) { fprintf(stdout, "\n[Embedded profile]\n"); PrintProfileInformation(hProfile); fflush(stdout); } if (hProfile != NULL && SaveEmbedded != NULL) SaveMemoryBlock(EmbedBuffer, EmbedLen, SaveEmbedded); if (hProfile) return hProfile; } // Try to see if "colorimetric" tiff if (TIFFGetField(in, TIFFTAG_PRIMARYCHROMATICITIES, &chr)) { Primaries.Red.x = chr[0]; Primaries.Red.y = chr[1]; Primaries.Green.x = chr[2]; Primaries.Green.y = chr[3]; Primaries.Blue.x = chr[4]; Primaries.Blue.y = chr[5]; Primaries.Red.Y = Primaries.Green.Y = Primaries.Blue.Y = 1.0; if (TIFFGetField(in, TIFFTAG_WHITEPOINT, &wp)) { WhitePoint.x = wp[0]; WhitePoint.y = wp[1]; WhitePoint.Y = 1.0; // Transferfunction is a bit harder.... TIFFGetFieldDefaulted(in, TIFFTAG_TRANSFERFUNCTION, &gmr, &gmg, &gmb); Curve[0] = cmsBuildTabulatedToneCurve16(NULL, 256, gmr); Curve[1] = cmsBuildTabulatedToneCurve16(NULL, 256, gmg); Curve[2] = cmsBuildTabulatedToneCurve16(NULL, 256, gmb); hProfile = cmsCreateRGBProfileTHR(NULL, &WhitePoint, &Primaries, Curve); for (i=0; i < 3; i++) cmsFreeToneCurve(Curve[i]); if (Verbose) { fprintf(stdout, "\n[Colorimetric TIFF]\n"); } return hProfile; } } return NULL; } // Transform one image static int TransformImage(TIFF* in, TIFF* out, const char *cDefInpProf) { cmsHPROFILE hIn, hOut, hProof, hInkLimit = NULL; cmsHTRANSFORM xform; cmsUInt32Number wInput, wOutput; int OutputColorSpace; int bps = Width / 8; cmsUInt32Number dwFlags = 0; int nPlanes; // Observer adaptation state (only meaningful on absolute colorimetric intent) cmsSetAdaptationState(ObserverAdaptationState); if (EmbedProfile && cOutProf) DoEmbedProfile(out, cOutProf); if (BlackWhiteCompensation) dwFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; switch (PrecalcMode) { case 0: dwFlags |= cmsFLAGS_NOOPTIMIZE; break; case 2: dwFlags |= cmsFLAGS_HIGHRESPRECALC; break; case 3: dwFlags |= cmsFLAGS_LOWRESPRECALC; break; case 1: break; default: FatalError("Unknown precalculation mode '%d'", PrecalcMode); } if (GamutCheck) dwFlags |= cmsFLAGS_GAMUTCHECK; hProof = NULL; hOut = NULL; if (lIsDeviceLink) { hIn = cmsOpenProfileFromFile(cDefInpProf, "r"); } else { hIn = GetTIFFProfile(in); if (hIn == NULL) hIn = OpenStockProfile(NULL, cDefInpProf); hOut = OpenStockProfile(NULL, cOutProf); if (cProofing != NULL) { hProof = OpenStockProfile(NULL, cProofing); dwFlags |= cmsFLAGS_SOFTPROOFING; } } // Take input color space wInput = GetInputPixelType(in); // Assure both, input profile and input TIFF are on same colorspace if (_cmsLCMScolorSpace(cmsGetColorSpace(hIn)) != (int) T_COLORSPACE(wInput)) FatalError("Input profile is not operating in proper color space"); if (!lIsDeviceLink) OutputColorSpace = _cmsLCMScolorSpace(cmsGetColorSpace(hOut)); else OutputColorSpace = _cmsLCMScolorSpace(cmsGetPCS(hIn)); wOutput = ComputeOutputFormatDescriptor(wInput, OutputColorSpace, bps); WriteOutputTags(out, OutputColorSpace, bps); CopyOtherTags(in, out); // Ink limit if (InkLimit != 400.0 && (OutputColorSpace == PT_CMYK || OutputColorSpace == PT_CMY)) { cmsHPROFILE hProfiles[10]; int nProfiles = 0; hInkLimit = cmsCreateInkLimitingDeviceLink(cmsGetColorSpace(hOut), InkLimit); hProfiles[nProfiles++] = hIn; if (hProof) { hProfiles[nProfiles++] = hProof; hProfiles[nProfiles++] = hProof; } hProfiles[nProfiles++] = hOut; hProfiles[nProfiles++] = hInkLimit; xform = cmsCreateMultiprofileTransform(hProfiles, nProfiles, wInput, wOutput, Intent, dwFlags); } else { xform = cmsCreateProofingTransform(hIn, wInput, hOut, wOutput, hProof, Intent, ProofingIntent, dwFlags); } cmsCloseProfile(hIn); cmsCloseProfile(hOut); if (hInkLimit) cmsCloseProfile(hInkLimit); if (hProof) cmsCloseProfile(hProof); if (xform == NULL) return 0; // Planar stuff if (T_PLANAR(wInput)) nPlanes = T_CHANNELS(wInput) + T_EXTRA(wInput); else nPlanes = 1; // Handle tile by tile or strip by strip if (TIFFIsTiled(in)) { TileBasedXform(xform, in, out, nPlanes); } else { StripBasedXform(xform, in, out, nPlanes); } cmsDeleteTransform(xform); TIFFWriteDirectory(out); return 1; } // Print help static void Help(int level) { fprintf(stderr, "little cms ICC profile applier for TIFF - v6.2 [LittleCMS %2.2f]\n\n", LCMS_VERSION / 1000.0); fflush(stderr); switch(level) { default: case 0: fprintf(stderr, "usage: tificc [flags] input.tif output.tif\n"); fprintf(stderr, "\nflags:\n\n"); fprintf(stderr, "%cv - Verbose\n", SW); fprintf(stderr, "%ci - Input profile (defaults to sRGB)\n", SW); fprintf(stderr, "%co - Output profile (defaults to sRGB)\n", SW); fprintf(stderr, "%cl - Transform by device-link profile\n", SW); PrintRenderingIntents(); fprintf(stderr, "%cb - Black point compensation\n", SW); fprintf(stderr, "%cd<0..1> - Observer adaptation state (abs.col. only)\n", SW); fprintf(stderr, "%cc<0,1,2,3> - Precalculates transform (0=Off, 1=Normal, 2=Hi-res, 3=LoRes)\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%cw<8,16,32> - Output depth. Use 32 for floating-point\n\n", SW); fprintf(stderr, "%ca - Handle channels > 4 as alpha\n", SW); fprintf(stderr, "%cn - Ignore embedded profile on input\n", SW); fprintf(stderr, "%ce - Embed destination profile\n", SW); fprintf(stderr, "%cs - Save embedded profile as \n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%cp - Soft proof profile\n", SW); fprintf(stderr, "%cm - Soft proof intent\n", SW); fprintf(stderr, "%cg - Marks out-of-gamut colors on softproof\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%ck<0..400> - Ink-limiting in %% (CMYK only)\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%ch<0,1,2,3> - More help\n", SW); break; case 1: fprintf(stderr, "Examples:\n\n" "To color correct from scanner to sRGB:\n" "\ttificc %ciscanner.icm in.tif out.tif\n" "To convert from monitor1 to monitor2:\n" "\ttificc %cimon1.icm %comon2.icm in.tif out.tif\n" "To make a CMYK separation:\n" "\ttificc %coprinter.icm inrgb.tif outcmyk.tif\n" "To recover sRGB from a CMYK separation:\n" "\ttificc %ciprinter.icm incmyk.tif outrgb.tif\n" "To convert from CIELab TIFF to sRGB\n" "\ttificc %ci*Lab in.tif out.tif\n\n", SW, SW, SW, SW, SW, SW); break; case 2: PrintBuiltins(); break; case 3: fprintf(stderr, "This program is intended to be a demo of the little cms\n" "engine. Both lcms and this program are freeware. You can\n" "obtain both in source code at http://www.littlecms.com\n" "For suggestions, comments, bug reports etc. send mail to\n" "info@littlecms.com\n\n"); break; } fflush(stderr); exit(0); } // The toggles stuff static void HandleSwitches(int argc, char *argv[]) { int s; while ((s=xgetopt(argc,argv,"aAeEbBw:W:nNvVGgh:H:i:I:o:O:P:p:t:T:c:C:l:L:M:m:K:k:S:s:D:d:")) != EOF) { switch (s) { case 'a': case 'A': StoreAsAlpha = TRUE; break; case 'b': case 'B': BlackWhiteCompensation = TRUE; break; case 'c': case 'C': PrecalcMode = atoi(xoptarg); if (PrecalcMode < 0 || PrecalcMode > 3) FatalError("Unknown precalc mode '%d'", PrecalcMode); break; case 'd': case 'D': ObserverAdaptationState = atof(xoptarg); if (ObserverAdaptationState < 0 || ObserverAdaptationState > 1.0) Warning("Adaptation state should be 0..1"); break; case 'e': case 'E': EmbedProfile = TRUE; break; case 'g': case 'G': GamutCheck = TRUE; break; case 'v': case 'V': Verbose = TRUE; break; case 'i': case 'I': if (lIsDeviceLink) FatalError("Device-link already specified"); cInpProf = xoptarg; break; case 'o': case 'O': if (lIsDeviceLink) FatalError("Device-link already specified"); cOutProf = xoptarg; break; case 'l': case 'L': if (cInpProf != NULL || cOutProf != NULL) FatalError("input/output profiles already specified"); cInpProf = xoptarg; lIsDeviceLink = TRUE; break; case 'p': case 'P': cProofing = xoptarg; break; case 't': case 'T': Intent = atoi(xoptarg); break; case 'm': case 'M': ProofingIntent = atoi(xoptarg); break; case 'N': case 'n': IgnoreEmbedded = TRUE; break; case 'W': case 'w': Width = atoi(xoptarg); if (Width != 8 && Width != 16 && Width != 32) FatalError("Only 8, 16 and 32 bps are supported"); break; case 'k': case 'K': InkLimit = atof(xoptarg); if (InkLimit < 0.0 || InkLimit > 400.0) FatalError("Ink limit must be 0%%..400%%"); break; case 's': case 'S': SaveEmbedded = xoptarg; break; case 'H': case 'h': { int a = atoi(xoptarg); Help(a); } break; default: FatalError("Unknown option - run without args to see valid ones"); } } } // The main sink int main(int argc, char* argv[]) { TIFF *in, *out; cmsPlugin(&TiffLabPlugin); InitUtils("tificc"); HandleSwitches(argc, argv); if ((argc - xoptind) != 2) { Help(0); } TIFFSetErrorHandler(ConsoleErrorHandler); TIFFSetWarningHandler(ConsoleWarningHandler); in = TIFFOpen(argv[xoptind], "r"); if (in == NULL) FatalError("Unable to open '%s'", argv[xoptind]); out = TIFFOpen(argv[xoptind+1], "w"); if (out == NULL) { TIFFClose(in); FatalError("Unable to write '%s'", argv[xoptind+1]); } do { TransformImage(in, out, cInpProf); } while (TIFFReadDirectory(in)); if (Verbose) { fprintf(stdout, "\n"); fflush(stdout); } TIFFClose(in); TIFFClose(out); return 0; } lcms2-2.5/utils/delphi/0000755002406300000240000000000012163061353014332 5ustar mariamauserslcms2-2.5/utils/delphi/demo1.dfm0000755002406300000240000001046012163060730016031 0ustar mariamausers TFORM10 TPF0TForm1Form1LeftTopCaptionLittle cms 2 Delphi demo ClientHeight ClientWidthColor clBtnFaceConstraints.MinHeight Font.CharsetDEFAULT_CHARSET Font.Color clWindowText Font.Height Font.Name MS Sans Serif Font.Style OldCreateOrder PixelsPerInch` TextHeightTImageImage1LeftTopWidth\Height Margins.Left Margins.Top Margins.RightMargins.BottomAlignalLeftStretch ExplicitLeftTImageImage2LeftfTopWidthjHeight Margins.Left Margins.Top Margins.RightMargins.BottomAlignalClientStretch ExplicitLeftn ExplicitWidthExplicitHeightP TSplitter Splitter1Left\TopWidth Height Margins.Left Margins.Top Margins.RightMargins.BottomBeveled ExplicitLeft ExplicitTopExplicitHeightTPanelPanel1LeftTopWidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAlignalBottomConstraints.MinWidthhCtl3D ParentCtl3DTabOrder ExplicitTop DesignSizeTLabelLabel1Left(TopWidthGHeight Margins.Left Margins.Top Margins.RightMargins.Bottom AlignmenttaRightJustifyAnchors akLeftakBottomCaptionInput profile: ExplicitTopSTLabelLabel2Left%TopWidthWHeight Margins.Left Margins.Top Margins.RightMargins.Bottom AlignmenttaRightJustifyAnchors akLeftakBottomCaptionMonitor profile: ExplicitToppTLabelLabel3Left(Top6WidthdHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakRightakBottomCaptionRendering intent:LayouttlCenterTLabelLabel4Left%Top`WidthHeightAnchors akLeftakBottomCaption Adaptation state (abs col. only)TButtonButton3LeftTopWidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akRightakBottomCaption...TabOrder OnClick Button3Click TComboBox ComboBoxInputLeftTopWidth(Height Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakRightakBottomCtl3D ParentCtl3DTabOrderTButtonButton2Left Top6WidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakBottomCaption Load &pictureTabOrderOnClick Button2Click TComboBoxComboBoxOutputLeftTopWidth(Height Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakRightakBottomTabOrder TCheckBoxWBCompensationLeft'TopWidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakBottomCaptionBlack point compensationTabOrder TCheckBox NoTransformLeftTopWidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akRightakBottomCaptionDon't transform at allTabOrder TRadioGroup RadioGroup1Left TophWidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakBottomCaptionTroughput optimization ItemIndex Items.Strings &No optimize (top quality, slow)&More memory (quality)&Standard (Balanced)&Less memory (for previews)TabOrderTButtonButton1LeftTopWidthHeight) Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakRightakBottomCaptionApply profilesTabOrderOnClick Button1Click TProgressBar ProgressBar1Left TopWidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akLeftakRightakBottomTabOrder TComboBoxComboBoxIntentLeftTop6Width2Height Margins.Left Margins.Top Margins.RightMargins.BottomStylecsDropDownListAnchors akLeftakRightakBottomTabOrderOnChangeComboBoxIntentChange Items.Strings PerceptualRelative colorimetric SaturationAbsolute colorimetricTButtonButton4LeftTopWidthHeight Margins.Left Margins.Top Margins.RightMargins.BottomAnchors akRightakBottomCaption...TabOrder OnClick Button4Click TScrollBar ScrollBar1LeftTop`WidthHeightAnchors akLeftakRightakBottomEnabledPageSizeTabOrder OnChangeScrollBar1ChangeTOpenPictureDialogOpenPictureDialog1FilterBMP files|*.bmpLeftTop TOpenDialog OpenDialog1 DefaultExticmFilter 0) AND (Signature = cmsSigDisplayClass)) then InSignatures := TRUE else if (((dwFlags AND IS_OUTPUT) <> 0) AND (Signature = cmsSigOutputClass)) then InSignatures := TRUE else if (((dwFlags AND IS_INPUT) <> 0) AND (Signature = cmsSigInputClass)) then InSignatures := TRUE else if (((dwFlags AND IS_COLORSPACE) <> 0) AND (Signature = cmsSigColorSpaceClass)) then InSignatures := TRUE else if (((dwFlags AND IS_ABSTRACT) <> 0) AND (Signature = cmsSigAbstractClass)) then InSignatures := TRUE else InSignatures := FALSE END; PROCEDURE FillCombo(var Combo: TComboBox; Signatures: DWORD); var Files, Descriptions: TStringList; Found: Integer; SearchRec: TSearchRec; Path, Profile: String; Dir: ARRAY [0 .. 1024] OF Char; hProfile: cmsHPROFILE; Descrip: array [0 .. 256] of Char; begin Files := TStringList.Create; Descriptions := TStringList.Create; GetSystemDirectory(Dir, 1023); Path := String(Dir) + '\SPOOL\DRIVERS\COLOR\'; Found := FindFirst(Path + '*.ic?', faAnyFile, SearchRec); while Found = 0 do begin Profile := Path + SearchRec.Name; hProfile := cmsOpenProfileFromFile(PAnsiChar(AnsiString(Profile)), 'r'); if (hProfile <> NIL) THEN begin if ((cmsGetColorSpace(hProfile) = cmsSigRgbData) AND InSignatures (cmsGetDeviceClass(hProfile), Signatures)) then begin cmsGetProfileInfo(hProfile, cmsInfoDescription, 'EN', 'us', Descrip, 256); Descriptions.Add(Descrip); Files.Add(Profile); end; cmsCloseProfile(hProfile); end; Found := FindNext(SearchRec); end; FindClose(SearchRec); Combo.Items := Descriptions; Combo.Tag := Integer(Files); end; // A rather simple Logger... note the "cdecl" convention PROCEDURE ErrorLogger(ContextID: cmsContext; ErrorCode: cmsUInt32Number; Text: PAnsiChar); Cdecl; begin MessageBox(0, PWideChar(WideString(Text)), 'Something is going wrong...', MB_OK OR MB_ICONWARNING or MB_TASKMODAL); end; constructor TForm1.Create(Owner: TComponent); var IntentNames: array [0 .. 20] of PAnsiChar; i, n: Integer; begin inherited Create(Owner); // Set the logger cmsSetLogErrorHandler(ErrorLogger); ScrollBar1.Min := 0; ScrollBar1.Max := 100; FillCombo(ComboBoxInput, IS_INPUT OR IS_COLORSPACE OR IS_DISPLAY); FillCombo(ComboBoxOutput, $FFFF ); // Get the supported intents n := cmsGetSupportedIntents(20, @IntentCodes, @IntentNames); ComboBoxIntent.Items.BeginUpdate; ComboBoxIntent.Items.Clear; for i:= 0 TO n - 1 DO ComboBoxIntent.Items.Add(String(IntentNames[i])); ComboBoxIntent.ItemIndex := 0; ComboBoxIntent.Items.EndUpdate; end; procedure TForm1.ScrollBar1Change(Sender: TObject); var d: Integer; s: String; begin d := ScrollBar1.Position; Str(d, s); Label4.Caption := 'Adaptation state '+s + '% (Abs. col only)'; end; procedure TForm1.Button2Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); Image1.Picture.Bitmap.PixelFormat := pf24bit; Image2.Picture.LoadFromFile(OpenPictureDialog1.FileName); Image2.Picture.Bitmap.PixelFormat := pf24bit; end end; function SelectedFile(var Combo: TComboBox): string; var List: TStringList; n: Integer; begin List := TStringList(Combo.Tag); n := Combo.ItemIndex; if (n >= 0) then SelectedFile := List.Strings[n] else SelectedFile := Combo.Text; end; procedure TForm1.ComboBoxIntentChange(Sender: TObject); begin ScrollBar1.Enabled := (ComboBoxIntent.itemIndex = 3); end; function TForm1.ComputeFlags: DWORD; var dwFlags: DWORD; begin dwFlags := 0; if (WBCompensation.Checked) then begin dwFlags := dwFlags OR cmsFLAGS_BLACKPOINTCOMPENSATION end; if (NoTransform.Checked) then begin dwFlags := dwFlags OR cmsFLAGS_NULLTRANSFORM end; case RadioGroup1.ItemIndex of 0: dwFlags := dwFlags OR cmsFLAGS_NOOPTIMIZE; 1: dwFlags := dwFlags OR cmsFLAGS_HIGHRESPRECALC; 3: dwFlags := dwFlags OR cmsFLAGS_LOWRESPRECALC; end; ComputeFlags := dwFlags end; procedure TForm1.Button1Click(Sender: TObject); var Source, Dest: String; hSrc, hDest: cmsHPROFILE; xform: cmsHTRANSFORM; i, PicW, PicH: Integer; Intent: Integer; dwFlags: DWORD; begin Source := SelectedFile(ComboBoxInput); Dest := SelectedFile(ComboBoxOutput); dwFlags := ComputeFlags; Intent := IntentCodes[ComboBoxIntent.ItemIndex]; cmsSetAdaptationState( ScrollBar1.Position / 100.0 ); if (Source <> '') AND (Dest <> '') then begin hSrc := cmsOpenProfileFromFile(PAnsiChar(AnsiString(Source)), 'r'); hDest := cmsOpenProfileFromFile(PAnsiChar(AnsiString(Dest)), 'r'); if (hSrc <> Nil) and (hDest <> Nil) then begin xform := cmsCreateTransform(hSrc, TYPE_BGR_8, hDest, TYPE_BGR_8, Intent, dwFlags); end else begin xform := nil; end; if hSrc <> nil then begin cmsCloseProfile(hSrc); end; if hDest <> Nil then begin cmsCloseProfile(hDest); end; if (xform <> nil) then begin PicW := Image2.Picture.width; PicH := Image2.Picture.height; ProgressBar1.Min := 0; ProgressBar1.Max := PicH; ProgressBar1.Step := 1; for i := 0 TO (PicH - 1) do begin if ((i MOD 100) = 0) then ProgressBar1.Position := i; cmsDoTransform(xform, Image1.Picture.Bitmap.Scanline[i], Image2.Picture.Bitmap.Scanline[i], PicW); end; ProgressBar1.Position := PicH; cmsDeleteTransform(xform); end; Image2.Repaint; ProgressBar1.Position := 0; end end; procedure TForm1.Button3Click(Sender: TObject); begin if OpenDialog1.Execute then ComboBoxInput.Text := OpenDialog1.FileName; end; procedure TForm1.Button4Click(Sender: TObject); begin if OpenDialog1.Execute then ComboBoxOutput.Text := OpenDialog1.FileName; end; end. lcms2-2.5/utils/delphi/delphidemo.res0000755002406300000240000000155412163060730017165 0ustar mariamausers   ( @wxx LLLx LLLLLLLx LLLLLLLLx LLLLLL@ LLw LLLLLLxwp LLLHLLxpx LLLLxwyHLćp LLLLGw{LćxxDDDDHw{ĄxDDDHxyĄDDDHHDDDDDDHHDDDDD@O?H?0MAINICON  lcms2-2.5/utils/delphi/delphidemo.dproj0000644002406300000240000001234712163060730017511 0ustar mariamausers {E3F889E8-CB8A-49AE-8173-4DDA022466BE} delphidemo.dpr Debug DCC32 12.0 true true Base true true Base true vcl;rtl;vclx;vclimg;vclactnband;dbrtl;vcldb;vcldbx;bdertl;vcltouch;xmlrtl;dsnap;dsnapcon;TeeUI;TeeDB;Tee;vclib;ibxpress;adortl;IndyCore;IndySystem;IndyProtocols;inet;intrawebdb_100_140;Intraweb_100_140;VclSmp;vclie;websnap;webdsnap;inetdb;inetdbbde;inetdbxpress;soaprtl;vclribbon;dbexpress;DbxCommonDriver;DataSnapIndy10ServerTransport;DataSnapProviderClient;DbxClientDriver;DataSnapServer;DBXInterBaseDriver;DBXMySQLDriver;dbxcds;DBXFirebirdDriver;DBXSybaseASEDriver;DBXSybaseASADriver;DBXOracleDriver;DBXMSSQLDriver;DBXInformixDriver;DBXDb2Driver;Rave77VCL 00400000 1 delphidemo.exe WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias) x86 true false false false false false RELEASE;$(DCC_Define) 0 false DEBUG;$(DCC_Define) MainSource
Form1
Base Cfg_2 Base Cfg_1 Base
Delphi.Personality.12 VCLApplication delphidemo.dpr False d:\lcms-1.13\delphi True False False False 1 0 0 0 False False False False False 3082 1252 1.0.0.0 1.0.0.0 Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components False 12
lcms2-2.5/utils/delphi/lcms2dll.pas0000644002406300000240000034063012163060730016557 0ustar mariamausers// // Little cms DELPHI wrapper //--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // // Version 2.1 // UNIT lcms2dll; INTERFACE USES Windows; TYPE Uint8 = Byte; Int8 = Shortint; UInt16 = Word; Int16 = Smallint; UInt32 = LongWord; Int32 = Longint; TYPE cmsUInt8Number = Uint8; cmsInt8Number = Int8; cmsUInt16Number = UInt16; cmsInt16Number = Int16; cmsUInt32Number = UInt32; cmsInt32Number = Int32; cmsInt64Number = Int64; cmsUInt64Number = UInt64; cmsFloat32Number = Single; cmsFloat64Number = Double; LPcmsUInt8Number = ^cmsUInt8Number; LPcmsInt8Number = ^cmsInt8Number; LPcmsUInt16Number = ^cmsUInt16Number; LPcmsInt16Number = ^cmsInt16Number; LPcmsUInt32Number = ^cmsUInt32Number; LPcmsInt32Number = ^cmsInt32Number; LPcmsInt64Number = ^cmsInt64Number; LPcmsUInt64Number = ^cmsUInt64Number; LPcmsFloat32Number = ^cmsFloat32Number; LPcmsFloat64Number = ^cmsFloat64Number; // Derivative types cmsSignature = cmsUInt32Number; cmsU8Fixed8Number = cmsUInt16Number; cmsS15Fixed16Number = cmsInt32Number; cmsU16Fixed16Number = cmsUInt32Number; // Boolean type, which will be using the native integer cmsBool = Boolean; CONST // Some common definitions cmsMAX_PATH = 256; // D50 XYZ normalized to Y=1.0 cmsD50X = 0.9642; cmsD50Y = 1.0; cmsD50Z = 0.8249; // V4 perceptual black cmsPERCEPTUAL_BLACK_X = 0.00336; cmsPERCEPTUAL_BLACK_Y = 0.0034731; cmsPERCEPTUAL_BLACK_Z = 0.00287; // Definitions in ICC spec cmsMagicNumber = $61637370; // 'acsp' lcmsSignature = $6c636d73; // 'lcms' TYPE // Base ICC type definitions cmsTagTypeSignature = ( cmsSigChromaticityType = $6368726D, // 'chrm' cmsSigColorantOrderType = $636C726F, // 'clro' cmsSigColorantTableType = $636C7274, // 'clrt' cmsSigCrdInfoType = $63726469, // 'crdi' cmsSigCurveType = $63757276, // 'curv' cmsSigDataType = $64617461, // 'data' cmsSigDictType = $64696374, // 'dict' cmsSigDateTimeType = $6474696D, // 'dtim' cmsSigDeviceSettingsType = $64657673, // 'devs' cmsSigLut16Type = $6d667432, // 'mft2' cmsSigLut8Type = $6d667431, // 'mft1' cmsSigLutAtoBType = $6d414220, // 'mAB ' cmsSigLutBtoAType = $6d424120, // 'mBA ' cmsSigMeasurementType = $6D656173, // 'meas' cmsSigMultiLocalizedUnicodeType = $6D6C7563, // 'mluc' cmsSigMultiProcessElementType = $6D706574, // 'mpet' cmsSigNamedColorType = $6E636f6C, // 'ncol' -- DEPRECATED! cmsSigNamedColor2Type = $6E636C32, // 'ncl2' cmsSigParametricCurveType = $70617261, // 'para' cmsSigProfileSequenceDescType = $70736571, // 'pseq' cmsSigProfileSequenceIdType = $70736964, // 'psid' cmsSigResponseCurveSet16Type = $72637332, // 'rcs2' cmsSigS15Fixed16ArrayType = $73663332, // 'sf32' cmsSigScreeningType = $7363726E, // 'scrn' cmsSigSignatureType = $73696720, // 'sig ' cmsSigTextType = $74657874, // 'text' cmsSigTextDescriptionType = $64657363, // 'desc' cmsSigU16Fixed16ArrayType = $75663332, // 'uf32' cmsSigUcrBgType = $62666420, // 'bfd ' cmsSigUInt16ArrayType = $75693136, // 'ui16' cmsSigUInt32ArrayType = $75693332, // 'ui32' cmsSigUInt64ArrayType = $75693634, // 'ui64' cmsSigUInt8ArrayType = $75693038, // 'ui08' cmsSigViewingConditionsType = $76696577, // 'view' cmsSigXYZType = $58595A20, // 'XYZ ' cmsSigVcgtType = $76636774 // 'vcgt' ); // Base ICC tag definitions cmsTagSignature = ( cmsSigAToB0Tag = $41324230, // 'A2B0' cmsSigAToB1Tag = $41324231, // 'A2B1' cmsSigAToB2Tag = $41324232, // 'A2B2' cmsSigBlueColorantTag = $6258595A, // 'bXYZ' cmsSigBlueMatrixColumnTag = $6258595A, // 'bXYZ' cmsSigBlueTRCTag = $62545243, // 'bTRC' cmsSigBToA0Tag = $42324130, // 'B2A0' cmsSigBToA1Tag = $42324131, // 'B2A1' cmsSigBToA2Tag = $42324132, // 'B2A2' cmsSigCalibrationDateTimeTag = $63616C74, // 'calt' cmsSigCharTargetTag = $74617267, // 'targ' cmsSigChromaticAdaptationTag = $63686164, // 'chad' cmsSigChromaticityTag = $6368726D, // 'chrm' cmsSigColorantOrderTag = $636C726F, // 'clro' cmsSigColorantTableTag = $636C7274, // 'clrt' cmsSigColorantTableOutTag = $636C6F74, // 'clot' cmsSigColorimetricIntentImageStateTag = $63696973, // 'ciis' cmsSigCopyrightTag = $63707274, // 'cprt' cmsSigCrdInfoTag = $63726469, // 'crdi' cmsSigDataTag = $64617461, // 'data' cmsSigDateTimeTag = $6474696D, // 'dtim' cmsSigDeviceMfgDescTag = $646D6E64, // 'dmnd' cmsSigDeviceModelDescTag = $646D6464, // 'dmdd' cmsSigDeviceSettingsTag = $64657673, // 'devs' cmsSigDToB0Tag = $44324230, // 'D2B0' cmsSigDToB1Tag = $44324231, // 'D2B1' cmsSigDToB2Tag = $44324232, // 'D2B2' cmsSigDToB3Tag = $44324233, // 'D2B3' cmsSigBToD0Tag = $42324430, // 'B2D0' cmsSigBToD1Tag = $42324431, // 'B2D1' cmsSigBToD2Tag = $42324432, // 'B2D2' cmsSigBToD3Tag = $42324433, // 'B2D3' cmsSigGamutTag = $67616D74, // 'gamt' cmsSigGrayTRCTag = $6b545243, // 'kTRC' cmsSigGreenColorantTag = $6758595A, // 'gXYZ' cmsSigGreenMatrixColumnTag = $6758595A, // 'gXYZ' cmsSigGreenTRCTag = $67545243, // 'gTRC' cmsSigLuminanceTag = $6C756d69, // 'lumi' cmsSigMeasurementTag = $6D656173, // 'meas' cmsSigMediaBlackPointTag = $626B7074, // 'bkpt' cmsSigMediaWhitePointTag = $77747074, // 'wtpt' cmsSigNamedColorTag = $6E636f6C, // 'ncol' // Deprecated by the ICC cmsSigNamedColor2Tag = $6E636C32, // 'ncl2' cmsSigOutputResponseTag = $72657370, // 'resp' cmsSigPerceptualRenderingIntentGamutTag = $72696730, // 'rig0' cmsSigPreview0Tag = $70726530, // 'pre0' cmsSigPreview1Tag = $70726531, // 'pre1' cmsSigPreview2Tag = $70726532, // 'pre2' cmsSigProfileDescriptionTag = $64657363, // 'desc' cmsSigProfileSequenceDescTag = $70736571, // 'pseq' cmsSigProfileSequenceIdTag = $70736964, // 'psid' cmsSigPs2CRD0Tag = $70736430, // 'psd0' cmsSigPs2CRD1Tag = $70736431, // 'psd1' cmsSigPs2CRD2Tag = $70736432, // 'psd2' cmsSigPs2CRD3Tag = $70736433, // 'psd3' cmsSigPs2CSATag = $70733273, // 'ps2s' cmsSigPs2RenderingIntentTag = $70733269, // 'ps2i' cmsSigRedColorantTag = $7258595A, // 'rXYZ' cmsSigRedMatrixColumnTag = $7258595A, // 'rXYZ' cmsSigRedTRCTag = $72545243, // 'rTRC' cmsSigSaturationRenderingIntentGamutTag = $72696732, // 'rig2' cmsSigScreeningDescTag = $73637264, // 'scrd' cmsSigScreeningTag = $7363726E, // 'scrn' cmsSigTechnologyTag = $74656368, // 'tech' cmsSigUcrBgTag = $62666420, // 'bfd ' cmsSigViewingCondDescTag = $76756564, // 'vued' cmsSigViewingConditionsTag = $76696577, // 'view' cmsSigVcgtTag = $76636774, // 'vcgt' cmsSigMetaTag = $6D657461 // 'meta' ); // ICC Technology tag cmsTechnologySignature = ( cmsSigDigitalCamera = $6463616D, // 'dcam' cmsSigFilmScanner = $6673636E, // 'fscn' cmsSigReflectiveScanner = $7273636E, // 'rscn' cmsSigInkJetPrinter = $696A6574, // 'ijet' cmsSigThermalWaxPrinter = $74776178, // 'twax' cmsSigElectrophotographicPrinter = $6570686F, // 'epho' cmsSigElectrostaticPrinter = $65737461, // 'esta' cmsSigDyeSublimationPrinter = $64737562, // 'dsub' cmsSigPhotographicPaperPrinter = $7270686F, // 'rpho' cmsSigFilmWriter = $6670726E, // 'fprn' cmsSigVideoMonitor = $7669646D, // 'vidm' cmsSigVideoCamera = $76696463, // 'vidc' cmsSigProjectionTelevision = $706A7476, // 'pjtv' cmsSigCRTDisplay = $43525420, // 'CRT ' cmsSigPMDisplay = $504D4420, // 'PMD ' cmsSigAMDisplay = $414D4420, // 'AMD ' cmsSigPhotoCD = $4B504344, // 'KPCD' cmsSigPhotoImageSetter = $696D6773, // 'imgs' cmsSigGravure = $67726176, // 'grav' cmsSigOffsetLithography = $6F666673, // 'offs' cmsSigSilkscreen = $73696C6B, // 'silk' cmsSigFlexography = $666C6578, // 'flex' cmsSigMotionPictureFilmScanner = $6D706673, // 'mpfs' cmsSigMotionPictureFilmRecorder = $6D706672, // 'mpfr' cmsSigDigitalMotionPictureCamera = $646D7063, // 'dmpc' cmsSigDigitalCinemaProjector = $64636A70 // 'dcpj' ); // ICC Color spaces cmsColorSpaceSignature = ( cmsSigXYZData = $58595A20, // 'XYZ ' cmsSigLabData = $4C616220, // 'Lab ' cmsSigLuvData = $4C757620, // 'Luv ' cmsSigYCbCrData = $59436272, // 'YCbr' cmsSigYxyData = $59787920, // 'Yxy ' cmsSigRgbData = $52474220, // 'RGB ' cmsSigGrayData = $47524159, // 'GRAY' cmsSigHsvData = $48535620, // 'HSV ' cmsSigHlsData = $484C5320, // 'HLS ' cmsSigCmykData = $434D594B, // 'CMYK' cmsSigCmyData = $434D5920, // 'CMY ' cmsSigMCH1Data = $4D434831, // 'MCH1' cmsSigMCH2Data = $4D434832, // 'MCH2' cmsSigMCH3Data = $4D434833, // 'MCH3' cmsSigMCH4Data = $4D434834, // 'MCH4' cmsSigMCH5Data = $4D434835, // 'MCH5' cmsSigMCH6Data = $4D434836, // 'MCH6' cmsSigMCH7Data = $4D434837, // 'MCH7' cmsSigMCH8Data = $4D434838, // 'MCH8' cmsSigMCH9Data = $4D434839, // 'MCH9' cmsSigMCHAData = $4D43483A, // 'MCHA' cmsSigMCHBData = $4D43483B, // 'MCHB' cmsSigMCHCData = $4D43483C, // 'MCHC' cmsSigMCHDData = $4D43483D, // 'MCHD' cmsSigMCHEData = $4D43483E, // 'MCHE' cmsSigMCHFData = $4D43483F, // 'MCHF' cmsSigNamedData = $6e6d636c, // 'nmcl' cmsSig1colorData = $31434C52, // '1CLR' cmsSig2colorData = $32434C52, // '2CLR' cmsSig3colorData = $33434C52, // '3CLR' cmsSig4colorData = $34434C52, // '4CLR' cmsSig5colorData = $35434C52, // '5CLR' cmsSig6colorData = $36434C52, // '6CLR' cmsSig7colorData = $37434C52, // '7CLR' cmsSig8colorData = $38434C52, // '8CLR' cmsSig9colorData = $39434C52, // '9CLR' cmsSig10colorData = $41434C52, // 'ACLR' cmsSig11colorData = $42434C52, // 'BCLR' cmsSig12colorData = $43434C52, // 'CCLR' cmsSig13colorData = $44434C52, // 'DCLR' cmsSig14colorData = $45434C52, // 'ECLR' cmsSig15colorData = $46434C52, // 'FCLR' cmsSigLuvKData = $4C75764B // 'LuvK' ); // ICC Profile Class cmsProfileClassSignature = ( cmsSigInputClass = $73636E72, // 'scnr' cmsSigDisplayClass = $6D6E7472, // 'mntr' cmsSigOutputClass = $70727472, // 'prtr' cmsSigLinkClass = $6C696E6B, // 'link' cmsSigAbstractClass = $61627374, // 'abst' cmsSigColorSpaceClass = $73706163, // 'spac' cmsSigNamedColorClass = $6e6d636c // 'nmcl' ); // ICC Platforms cmsPlatformSignature = ( cmsSigMacintosh = $4150504C, // 'APPL' cmsSigMicrosoft = $4D534654, // 'MSFT' cmsSigSolaris = $53554E57, // 'SUNW' cmsSigSGI = $53474920, // 'SGI ' cmsSigTaligent = $54474E54, // 'TGNT' cmsSigUnices = $2A6E6978 // '*nix' // From argyll -- Not official ); CONST // Reference gamut cmsSigPerceptualReferenceMediumGamut = $70726d67; //'prmg' // For cmsSigColorimetricIntentImageStateTag cmsSigSceneColorimetryEstimates = $73636F65; //'scoe' cmsSigSceneAppearanceEstimates = $73617065; //'sape' cmsSigFocalPlaneColorimetryEstimates = $66706365; //'fpce' cmsSigReflectionHardcopyOriginalColorimetry = $72686F63; //'rhoc' cmsSigReflectionPrintOutputColorimetry = $72706F63; //'rpoc' TYPE // Multi process elements types cmsStageSignature = ( cmsSigCurveSetElemType = $63767374, //'cvst' cmsSigMatrixElemType = $6D617466, //'matf' cmsSigCLutElemType = $636C7574, //'clut' cmsSigBAcsElemType = $62414353, // 'bACS' cmsSigEAcsElemType = $65414353, // 'eACS' // Custom from here, not in the ICC Spec cmsSigXYZ2LabElemType = $6C327820, // 'l2x ' cmsSigLab2XYZElemType = $78326C20, // 'x2l ' cmsSigNamedColorElemType = $6E636C20, // 'ncl ' cmsSigLabV2toV4 = $32203420, // '2 4 ' cmsSigLabV4toV2 = $34203220, // '4 2 ' // Identities cmsSigIdentityElemType = $69646E20 // 'idn ' ); // Types of CurveElements cmsCurveSegSignature = ( cmsSigFormulaCurveSeg = $70617266, // 'parf' cmsSigSampledCurveSeg = $73616D66, // 'samf' cmsSigSegmentedCurve = $63757266 // 'curf' ); CONST // Used in ResponseCurveType cmsSigStatusA = $53746141; //'StaA' cmsSigStatusE = $53746145; //'StaE' cmsSigStatusI = $53746149; //'StaI' cmsSigStatusT = $53746154; //'StaT' cmsSigStatusM = $5374614D; //'StaM' cmsSigDN = $444E2020; //'DN ' cmsSigDNP = $444E2050; //'DN P' cmsSigDNN = $444E4E20; //'DNN ' cmsSigDNNP = $444E4E50; //'DNNP' // Device attributes, currently defined values correspond to the low 4 bytes // of the 8 byte attribute quantity cmsReflective = 0; cmsTransparency = 1; cmsGlossy = 0; cmsMatte = 2; TYPE // Common structures in ICC tags cmsICCData = PACKED RECORD len : cmsUInt32Number; flag : cmsUInt32Number; data : Array [0..1] of cmsUInt8Number; END; // ICC date time cmsDateTimeNumber = PACKED RECORD year: cmsUInt16Number; month: cmsUInt16Number; day: cmsUInt16Number; hours: cmsUInt16Number; minutes: cmsUInt16Number; seconds: cmsUInt16Number; END; // ICC XYZ cmsEncodedXYZNumber = PACKED RECORD X: cmsS15Fixed16Number; Y: cmsS15Fixed16Number; Z: cmsS15Fixed16Number; END; // Profile ID as computed by MD5 algorithm cmsProfileID = PACKED RECORD CASE Integer OF 1: (ID8: Array[0..15] OF cmsUInt8Number); 2: (ID16: Array[0..7] OF cmsUInt16Number); 3: (ID32: Array[0..3] OF cmsUInt32Number); END; // ---------------------------------------------------------------------------------------------- // ICC profile internal base types. Strictly, shouldn't be declared in this unit, but maybe // somebody want to use this info for accessing profile header directly, so here it is. // Profile header -- it is 32-bit aligned, so no issues are expected on alignment cmsICCHeader = PACKED RECORD size: cmsUInt32Number; // Profile size in bytes cmmId: cmsSignature; // CMM for this profile version: cmsUInt32Number; // Format version number deviceClass: cmsProfileClassSignature; // Type of profile colorSpace: cmsColorSpaceSignature; // Color space of data pcs: cmsColorSpaceSignature; // PCS, XYZ or Lab only date: cmsDateTimeNumber; // Date profile was created magic: cmsSignature; // Magic Number to identify an ICC profile platform: cmsPlatformSignature; // Primary Platform flags: cmsUInt32Number; // Various bit settings manufacturer: cmsSignature; // Device manufacturer model: cmsUInt32Number; // Device model number attributes: cmsUInt64Number; // Device attributes renderingIntent:cmsUInt32Number; // Rendering intent illuminant: cmsEncodedXYZNumber; // Profile illuminant creator: cmsSignature; // Profile creator profileID: cmsProfileID; // Profile ID using MD5 reserved: array [0..27] of cmsInt8Number; // Reserved for future use END; // ICC base tag cmsTagBase = PACKED RECORD sig: cmsTagTypeSignature; reserved: array[0..3] of cmsInt8Number; END; // A tag entry in directory cmsTagEntry = PACKED RECORD sig: cmsTagSignature; // The tag signature offset: cmsUInt32Number; // Start of tag size: cmsUInt32Number; // Size in bytes END; cmsContext = Pointer; // Context identifier for multithreaded environments cmsHANDLE = Pointer; // Generic handle cmsHPROFILE = Pointer; // Opaque typedefs to hide internals cmsHTRANSFORM = Pointer; CONST cmsMAXCHANNELS = 16; // Maximum number of channels in ICC profiles // Format of pixel is defined by one cmsUInt32Number, using bit fields as follows // // A O TTTTT U Y F P X S EEE CCCC BBB // // A: Floating point -- With this flag we can differentiate 16 bits as float and as int // O: Optimized -- previous optimization already returns the final 8-bit value // T: Pixeltype // F: Flavor 0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla) // P: Planar? 0=Chunky, 1=Planar // X: swap 16 bps endianess? // S: Do swap? ie, BGR, KYMC // E: Extra samples // C: Channels (Samples per pixel) // B: bytes per sample // Y: Swap first - changes ABGR to BGRA and KCMY to CMYK FUNCTION FLOAT_SH(a: cmsUInt32Number): cmsUInt32Number; FUNCTION OPTIMIZED_SH(s: cmsUInt32Number): cmsUInt32Number; FUNCTION COLORSPACE_SH(s: cmsUInt32Number):cmsUInt32Number; FUNCTION SWAPFIRST_SH(s: cmsUInt32Number):cmsUInt32Number; FUNCTION FLAVOR_SH(s: cmsUInt32Number):cmsUInt32Number; FUNCTION PLANAR_SH(p: cmsUInt32Number):cmsUInt32Number; FUNCTION ENDIAN16_SH(e: cmsUInt32Number):cmsUInt32Number; FUNCTION DOSWAP_SH(e: cmsUInt32Number):cmsUInt32Number; FUNCTION EXTRA_SH(e: cmsUInt32Number):cmsUInt32Number; FUNCTION CHANNELS_SH(c: cmsUInt32Number):cmsUInt32Number; FUNCTION BYTES_SH(b: cmsUInt32Number):cmsUInt32Number; FUNCTION T_FLOAT(a: cmsUInt32Number): cmsUInt32Number; FUNCTION T_OPTIMIZED(o: cmsUInt32Number): cmsUInt32Number; FUNCTION T_COLORSPACE(s: cmsUInt32Number): cmsUInt32Number; FUNCTION T_SWAPFIRST(s: cmsUInt32Number): cmsUInt32Number; FUNCTION T_FLAVOR(s: cmsUInt32Number): cmsUInt32Number; FUNCTION T_PLANAR(p: cmsUInt32Number): cmsUInt32Number; FUNCTION T_ENDIAN16(e: cmsUInt32Number): cmsUInt32Number; FUNCTION T_DOSWAP(e: cmsUInt32Number): cmsUInt32Number; FUNCTION T_EXTRA(e: cmsUInt32Number): cmsUInt32Number; FUNCTION T_CHANNELS(c: cmsUInt32Number): cmsUInt32Number; FUNCTION T_BYTES(b: cmsUInt32Number): cmsUInt32Number; CONST // Pixel types PT_ANY = 0; // Don't check colorspace // 1 & 2 are reserved PT_GRAY = 3; PT_RGB = 4; PT_CMY = 5; PT_CMYK = 6; PT_YCbCr = 7; PT_YUV = 8; // Lu'v' PT_XYZ = 9; PT_Lab = 10; PT_YUVK = 11; // Lu'v'K PT_HSV = 12; PT_HLS = 13; PT_Yxy = 14; PT_MCH1 = 15; PT_MCH2 = 16; PT_MCH3 = 17; PT_MCH4 = 18; PT_MCH5 = 19; PT_MCH6 = 20; PT_MCH7 = 21; PT_MCH8 = 22; PT_MCH9 = 23; PT_MCH10 = 24; PT_MCH11 = 25; PT_MCH12 = 26; PT_MCH13 = 27; PT_MCH14 = 28; PT_MCH15 = 29; PT_LabV2 = 30; // Identical to PT_Lab, but using the V2 old encoding // Format descriptors TYPE_GRAY_8 = $030009; TYPE_GRAY_8_REV = $032009; TYPE_GRAY_16 = $03000a; TYPE_GRAY_16_REV = $03200a; TYPE_GRAY_16_SE = $03080a; TYPE_GRAYA_8 = $030089; TYPE_GRAYA_16 = $03008a; TYPE_GRAYA_16_SE = $03088a; TYPE_GRAYA_8_PLANAR = $031089; TYPE_GRAYA_16_PLANAR = $03108a; TYPE_RGB_8 = $040019; TYPE_RGB_8_PLANAR = $041019; TYPE_BGR_8 = $040419; TYPE_BGR_8_PLANAR = $041419; TYPE_RGB_16 = $04001a; TYPE_RGB_16_PLANAR = $04101a; TYPE_RGB_16_SE = $04081a; TYPE_BGR_16 = $04041a; TYPE_BGR_16_PLANAR = $04141a; TYPE_BGR_16_SE = $040c1a; TYPE_RGBA_8 = $040099; TYPE_RGBA_8_PLANAR = $041099; TYPE_RGBA_16 = $04009a; TYPE_RGBA_16_PLANAR = $04109a; TYPE_RGBA_16_SE = $04089a; TYPE_ARGB_8 = $044099; TYPE_ARGB_16 = $04409a; TYPE_ABGR_8 = $040499; TYPE_ABGR_16 = $04049a; TYPE_ABGR_16_PLANAR = $04149a; TYPE_ABGR_16_SE = $040c9a; TYPE_BGRA_8 = $044499; TYPE_BGRA_16 = $04449a; TYPE_BGRA_16_SE = $04489a; TYPE_CMY_8 = $050019; TYPE_CMY_8_PLANAR = $051019; TYPE_CMY_16 = $05001a; TYPE_CMY_16_PLANAR = $05101a; TYPE_CMY_16_SE = $05081a; TYPE_CMYK_8 = $060021; TYPE_CMYKA_8 = $0600a1; TYPE_CMYK_8_REV = $062021; TYPE_YUVK_8 = $062021; TYPE_CMYK_8_PLANAR = $061021; TYPE_CMYK_16 = $060022; TYPE_CMYK_16_REV = $062022; TYPE_YUVK_16 = $062022; TYPE_CMYK_16_PLANAR = $061022; TYPE_CMYK_16_SE = $060822; TYPE_KYMC_8 = $060421; TYPE_KYMC_16 = $060422; TYPE_KYMC_16_SE = $060c22; TYPE_KCMY_8 = $064021; TYPE_KCMY_8_REV = $066021; TYPE_KCMY_16 = $064022; TYPE_KCMY_16_REV = $066022; TYPE_KCMY_16_SE = $064822; TYPE_CMYK5_8 = $130029; TYPE_CMYK5_16 = $13002a; TYPE_CMYK5_16_SE = $13082a; TYPE_KYMC5_8 = $130429; TYPE_KYMC5_16 = $13042a; TYPE_KYMC5_16_SE = $130c2a; TYPE_CMYK6_8 = $140031; TYPE_CMYK6_8_PLANAR = $141031; TYPE_CMYK6_16 = $140032; TYPE_CMYK6_16_PLANAR = $141032; TYPE_CMYK6_16_SE = $140832; TYPE_CMYK7_8 = $150039; TYPE_CMYK7_16 = $15003a; TYPE_CMYK7_16_SE = $15083a; TYPE_KYMC7_8 = $150439; TYPE_KYMC7_16 = $15043a; TYPE_KYMC7_16_SE = $150c3a; TYPE_CMYK8_8 = $160041; TYPE_CMYK8_16 = $160042; TYPE_CMYK8_16_SE = $160842; TYPE_KYMC8_8 = $160441; TYPE_KYMC8_16 = $160442; TYPE_KYMC8_16_SE = $160c42; TYPE_CMYK9_8 = $170049; TYPE_CMYK9_16 = $17004a; TYPE_CMYK9_16_SE = $17084a; TYPE_KYMC9_8 = $170449; TYPE_KYMC9_16 = $17044a; TYPE_KYMC9_16_SE = $170c4a; TYPE_CMYK10_8 = $180051; TYPE_CMYK10_16 = $180052; TYPE_CMYK10_16_SE = $180852; TYPE_KYMC10_8 = $180451; TYPE_KYMC10_16 = $180452; TYPE_KYMC10_16_SE = $180c52; TYPE_CMYK11_8 = $190059; TYPE_CMYK11_16 = $19005a; TYPE_CMYK11_16_SE = $19085a; TYPE_KYMC11_8 = $190459; TYPE_KYMC11_16 = $19045a; TYPE_KYMC11_16_SE = $190c5a; TYPE_CMYK12_8 = $1a0061; TYPE_CMYK12_16 = $1a0062; TYPE_CMYK12_16_SE = $1a0862; TYPE_KYMC12_8 = $1a0461; TYPE_KYMC12_16 = $1a0462; TYPE_KYMC12_16_SE = $1a0c62; TYPE_XYZ_16 = $09001a; TYPE_Lab_8 = $0a0019; TYPE_ALab_8 = $0a0499; TYPE_Lab_16 = $0a001a; TYPE_Yxy_16 = $0e001a; TYPE_YCbCr_8 = $070019; TYPE_YCbCr_8_PLANAR = $071019; TYPE_YCbCr_16 = $07001a; TYPE_YCbCr_16_PLANAR = $07101a; TYPE_YCbCr_16_SE = $07081a; TYPE_YUV_8 = $080019; TYPE_YUV_8_PLANAR = $081019; TYPE_YUV_16 = $08001a; TYPE_YUV_16_PLANAR = $08101a; TYPE_YUV_16_SE = $08081a; TYPE_HLS_8 = $0d0019; TYPE_HLS_8_PLANAR = $0d1019; TYPE_HLS_16 = $0d001a; TYPE_HLS_16_PLANAR = $0d101a; TYPE_HLS_16_SE = $0d081a; TYPE_HSV_8 = $0c0019; TYPE_HSV_8_PLANAR = $0c1019; TYPE_HSV_16 = $0c001a; TYPE_HSV_16_PLANAR = $0c101a; TYPE_HSV_16_SE = $0c081a; TYPE_NAMED_COLOR_INDEX = $000A; TYPE_XYZ_FLT = $49001c; TYPE_Lab_FLT = $4a001c; TYPE_GRAY_FLT = $43000c; TYPE_RGB_FLT = $44001c; TYPE_CMYK_FLT = $460024; TYPE_XYZA_FLT = $49009c; TYPE_LabA_FLT = $4a009c; TYPE_RGBA_FLT = $44009c; TYPE_XYZ_DBL = $490018; TYPE_Lab_DBL = $4a0018; TYPE_GRAY_DBL = $430008; TYPE_RGB_DBL = $440018; TYPE_CMYK_DBL = $460020; TYPE_LabV2_8 = $1e0019; TYPE_ALabV2_8 = $1e0499; TYPE_LabV2_16 = $1e001a; TYPE // Colorimetric spaces cmsCIEXYZ = PACKED RECORD X, Y, Z : cmsFloat64Number; END; LPcmsCIEXYZ = ^cmsCIEXYZ; cmsCIExyY = PACKED RECORD x, y, YY : cmsFloat64Number END; LPcmsCIExyY = ^cmsCIEXYY; cmsCIELab = PACKED RECORD L, a, b: cmsFloat64Number END; LPcmsCIELab = ^cmsCIELab; cmsCIELCh = PACKED RECORD L, C, h : cmsFloat64Number END; LPcmsCIELCh = ^cmsCIELCh; cmsJCh = PACKED RECORD J, C, h : cmsFloat64Number END; LPcmsJCh = ^cmsJCH; cmsCIEXYZTRIPLE = PACKED RECORD Red, Green, Blue : cmsCIEXYZ END; LPcmsCIEXYZTRIPLE = ^cmsCIEXYZTRIPLE; cmsCIExyYTRIPLE = PACKED RECORD Red, Green, Blue : cmsCIExyY END; LPcmsCIExyYTRIPLE = ^cmsCIExyYTRIPLE; CONST // Illuminant types for structs below cmsILLUMINANT_TYPE_UNKNOWN = $0000000; cmsILLUMINANT_TYPE_D50 = $0000001; cmsILLUMINANT_TYPE_D65 = $0000002; cmsILLUMINANT_TYPE_D93 = $0000003; cmsILLUMINANT_TYPE_F2 = $0000004; cmsILLUMINANT_TYPE_D55 = $0000005; cmsILLUMINANT_TYPE_A = $0000006; cmsILLUMINANT_TYPE_E = $0000007; cmsILLUMINANT_TYPE_F8 = $0000008; TYPE cmsICCMeasurementConditions = PACKED RECORD Observer: cmsUInt32Number; // 0 = unknown, 1=CIE 1931, 2=CIE 1964 Backing: cmsCIEXYZ; // Value of backing Geometry: cmsUInt32Number; // 0=unknown, 1=45/0, 0/45 2=0d, d/0 Flare: cmsFloat64Number; // 0..1.0 IlluminantType: cmsUInt32Number; END; cmsICCViewingConditions = PACKED RECORD IlluminantXYZ: cmsCIEXYZ; // Not the same struct as CAM02, SurroundXYZ: cmsCIEXYZ; // This is for storing the tag IlluminantType: cmsUInt32Number; // viewing condition END; // Plug-In registering --------------------------------------------------------------------------------------------------- FUNCTION cmsPlugin(Plugin: Pointer): cmsBool; StdCall; PROCEDURE cmsUnregisterPlugins; StdCall; // Error logging ---------------------------------------------------------------------------------------------------------- // There is no error handling at all. When a function fails, it returns proper value. // For example, all create functions does return NULL on failure. Other may return FALSE. // It may be interesting, for the developer, to know why the function is failing. // for that reason, lcms2 does offer a logging function. This function will get // an ENGLISH string with some clues on what is going wrong. You can show this // info to the end user if you wish, or just create some sort of log on disk. // The logging function should NOT terminate the program, as this obviously can leave // unfreed resources. It is the programmer's responsibility to check each function // return code to make sure it didn't fail. CONST cmsERROR_UNDEFINED = 0; cmsERROR_FILE = 1; cmsERROR_RANGE = 2; cmsERROR_INTERNAL = 3; cmsERROR_NULL = 4; cmsERROR_READ = 5; cmsERROR_SEEK = 6; cmsERROR_WRITE = 7; cmsERROR_UNKNOWN_EXTENSION = 8; cmsERROR_COLORSPACE_CHECK = 9; cmsERROR_ALREADY_DEFINED = 10; cmsERROR_BAD_SIGNATURE = 11; cmsERROR_CORRUPTION_DETECTED = 12; cmsERROR_NOT_SUITABLE = 13; // Error logger is called with the ContextID when a message is raised. This gives the // chance to know which thread is responsible of the warning and any environment associated // with it. Non-multithreading applications may safely ignore this parameter. // Note that under certain special circumstances, ContextID may be NULL. TYPE cmsLogErrorHandlerFunction = PROCEDURE( ContextID: cmsContext; ErrorCode: cmsUInt32Number; Text: PAnsiChar); CDecl; // Allows user to set any specific logger PROCEDURE cmsSetLogErrorHandler(Fn: cmsLogErrorHandlerFunction); StdCall; // Conversions -------------------------------------------------------------------------------------------------------------- // Returns pointers to constant structs FUNCTION cmsD50_XYZ: LPcmsCIEXYZ; StdCall; FUNCTION cmsD50_xyY: LPcmsCIExyY; StdCall; // Colorimetric space conversions PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); StdCall; PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); StdCall; PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); StdCall; PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); StdCall; PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); StdCall; PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); StdCall; // Encoding /Decoding on PCS PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); StdCall; PROCEDURE cmsLabEncoded2FloatV2(Lab: LPcmsCIELab; wLab: Pointer); StdCall; PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); StdCall; PROCEDURE cmsFloat2LabEncodedV2(wLab: Pointer; Lab: LPcmsCIELab); StdCall; PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); StdCall; PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); StdCall; // DeltaE metrics FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall; // Temperature <-> Chromaticity (Black body) FUNCTION cmsWhitePointFromTemp(var WhitePoint: cmsCIExyY; TempK: cmsFloat64Number) : cmsBool; StdCall; FUNCTION cmsTempFromWhitePoint(var TeampK: cmsFloat64Number; var WhitePoint: cmsCIExyY) : cmsBool; StdCall; // Chromatic adaptation FUNCTION cmsAdaptToIlluminant(Result: LPcmsCIEXYZ; SourceWhitePt: LPcmsCIEXYZ; Illuminant: LPcmsCIEXYZ; Value: LPcmsCIEXYZ): cmsBool; StdCall; // CIECAM02 --------------------------------------------------------------------------------------------------- // Viewing conditions. Please note those are CAM model viewing conditions, and not the ICC tag viewing // conditions, which I'm naming cmsICCViewingConditions to make differences evident. Unfortunately, the tag // cannot deal with surround La, Yb and D value so is basically useless to store CAM02 viewing conditions. CONST AVG_SURROUND = 1; DIM_SURROUND = 2; DARK_SURROUND = 3; CUTSHEET_SURROUND = 4; D_CALCULATE = -1; TYPE cmsViewingConditions = PACKED RECORD WhitePoint: cmsCIEXYZ; Yb : cmsFloat64Number; La : cmsFloat64Number; surround : Integer; D_value : cmsFloat64Number END; LPcmsViewingConditions = ^cmsViewingConditions; FUNCTION cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; StdCall; PROCEDURE cmsCIECAM02Done(hModel : Pointer); StdCall; PROCEDURE cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall; PROCEDURE cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); StdCall; // Tone curves ----------------------------------------------------------------------------------------- // This describes a curve segment. For a table of supported types, see the manual. User can increase the number of // available types by using a proper plug-in. Parametric segments allow 10 parameters at most TYPE cmsCurveSegment = PACKED RECORD x0, x1: cmsFloat32Number; // Domain; for x0 < x <= x1 PType: cmsInt32Number; // Parametric type, Type == 0 means sampled segment. Negative values are reserved Params: array [0..9] of cmsFloat64Number; // Parameters if Type != 0 nGridPoints: cmsUInt32Number; // Number of grid points if Type == 0 SampledPoints: LPcmsFloat32Number; // Points to an array of floats if Type == 0 END; LPcmsToneCurve = Pointer; LPcmsCurveSegmentArray = ^cmsCurveSegmentArray; cmsCurveSegmentArray = array[0..0] of cmsCurveSegment; LPcmsFloat64NumberArray = ^cmsFloat64NumberArray; cmsFloat64NumberArray = array[0..0] of cmsFloat64Number; LPcmsUInt16NumberArray = ^cmsUInt16NumberArray; cmsUInt16NumberArray = array[0..0] of cmsUInt16Number; LPcmsFloat32NumberArray = ^cmsFloat32NumberArray; cmsFloat32NumberArray = array[0..0] of cmsFloat32Number; LPLPcmsToneCurveArray = ^LPcmsToneCurveArray; LPcmsToneCurveArray = array[0..0] of LPcmsToneCurve; LPcmsUInt32NumberArray = ^cmsUInt32NumberArray; cmsUInt32NumberArray = array[0..0] of cmsUInt32Number; FUNCTION cmsBuildSegmentedToneCurve(ContextID: cmsContext; nSegments: cmsInt32Number; Segments: LPcmsCurveSegmentArray): LPcmsToneCurve; StdCall; FUNCTION cmsBuildParametricToneCurve(ContextID: cmsContext; CType: cmsInt32Number; Params: LPcmsFloat64NumberArray): LPcmsToneCurve; StdCall; FUNCTION cmsBuildGamma(ContextID: cmsContext; Gamma: cmsFloat64Number): LPcmsToneCurve; StdCall; FUNCTION cmsBuildTabulatedToneCurve16(ContextID: cmsContext; nEntries: cmsInt32Number; values: LPcmsUInt16NumberArray): LPcmsToneCurve; StdCall; FUNCTION cmsBuildTabulatedToneCurveFloat(ContextID: cmsContext; nEntries: cmsUInt32Number; values: LPcmsFloat32NumberArray): LPcmsToneCurve; StdCall; PROCEDURE cmsFreeToneCurve(Curve: LPcmsToneCurve); StdCall; PROCEDURE cmsFreeToneCurveTriple(Curve: LPLPcmsToneCurveArray); StdCall; FUNCTION cmsDupToneCurve(Src: LPcmsToneCurve): LPcmsToneCurve; StdCall; FUNCTION cmsReverseToneCurve(InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; FUNCTION cmsReverseToneCurveEx(nResultSamples: cmsInt32Number; InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; FUNCTION cmsJoinToneCurve(ContextID: cmsContext; X, Y: LPcmsToneCurve; nPoints: cmsUInt32Number ): LPcmsToneCurve; StdCall; FUNCTION cmsSmoothToneCurve(Tab: LPcmsToneCurve; lambda: cmsFloat64Number): cmsBool; StdCall; FUNCTION cmsEvalToneCurveFloat(Curve: LPcmsToneCurve; v: cmsFloat32Number):cmsFloat32Number; StdCall; FUNCTION cmsEvalToneCurve16(Curve: LPcmsToneCurve; v:cmsUInt16Number):cmsUInt16Number; StdCall; FUNCTION cmsIsToneCurveMultisegment(InGamma: LPcmsToneCurve):cmsBool; StdCall; FUNCTION cmsIsToneCurveLinear(Curve: LPcmsToneCurve):cmsBool; StdCall; FUNCTION cmsIsToneCurveMonotonic(t: LPcmsToneCurve):cmsBool; StdCall; FUNCTION cmsIsToneCurveDescending(t: LPcmsToneCurve):cmsBool; StdCall; FUNCTION cmsGetToneCurveParametricType(t: LPcmsToneCurve):cmsInt32Number; StdCall; FUNCTION cmsEstimateGamma(t: LPcmsToneCurve; Precision:cmsFloat64Number):cmsFloat64Number; StdCall; // Implements pipelines of multi-processing elements ------------------------------------------------------------- TYPE LPcmsPipeline = Pointer; LPcmsStage = Pointer; LPLPcmsStage = ^LPcmsStage; // Those are hi-level pipelines FUNCTION cmsPipelineAlloc(ContextID: cmsContext; InputChannels, OutputChannels: cmsUInt32Number): LPcmsPipeline; StdCall; PROCEDURE cmsPipelineFree(lut: LPcmsPipeline); StdCall; FUNCTION cmsPipelineDup(Orig: LPcmsPipeline): LPcmsPipeline; StdCall; FUNCTION cmsPipelineInputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; FUNCTION cmsPipelineOutputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; FUNCTION cmsPipelineStageCount(lut: LPcmsPipeline): cmsUInt32Number; StdCall; FUNCTION cmsPipelineGetPtrToFirstStage(lut: LPcmsPipeline): LPcmsStage; StdCall; FUNCTION cmsPipelineGetPtrToLastStage(lut: LPcmsPipeline): LPcmsStage; StdCall; PROCEDURE cmsPipelineEval16(Inv, Outv: LPcmsUInt16NumberArray; lut: LPcmsPipeline); StdCall; PROCEDURE cmsPipelineEvalFloat(Inv, Outv: LPcmsFloat32NumberArray; lut: LPcmsPipeline); StdCall; FUNCTION cmsPipelineEvalReverseFloat(Target, Result, Hint: LPcmsFloat32NumberArray; lut: LPcmsPipeline): cmsBool; StdCall; FUNCTION cmsPipelineCat(l1, l2: LPcmsPipeline): cmsBool; StdCall; FUNCTION cmsPipelineSetSaveAs8bitsFlag(lut: LPcmsPipeline; On: cmsBool): cmsBool; StdCall; // Where to place/locate the stages in the pipeline chain TYPE cmsStageLoc = (cmsAT_BEGIN = 0, cmsAT_END = 1 ); PROCEDURE cmsPipelineInsertStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPcmsStage); StdCall; PROCEDURE cmsPipelineUnlinkStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPLPcmsStage); StdCall; // This function is quite useful to analyze the structure of a Pipeline and retrieve the Stage elements // that conform the Pipeline. It should be called with the Pipeline, the number of expected elements and // then a list of expected types followed with a list of double pointers to Stage elements. If // the function founds a match with current pipeline, it fills the pointers and returns TRUE // if not, returns FALSE without touching anything. // FUNCTION cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, n: cmsUInt32Number, ...): cmsBool; StdCall; // Matrix has double precision and CLUT has only float precision. That is because an ICC profile can encode // matrices with far more precision that CLUTS FUNCTION cmsStageAllocIdentity(ContextID: cmsContext; nChannels: cmsUInt32Number): LPcmsStage; StdCall; FUNCTION cmsStageAllocToneCurves(ContextID: cmsContext; nChannels: cmsUInt32Number; Curves: LPLPcmsToneCurveArray): LPcmsStage; StdCall; FUNCTION cmsStageAllocMatrix(ContextID: cmsContext; Rows, Cols: cmsUInt32Number; Matrix, Offset: LPcmsFloat64NumberArray): LPcmsStage; StdCall; FUNCTION cmsStageAllocCLut16bit(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; FUNCTION cmsStageAllocCLutFloat(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; FUNCTION cmsStageAllocCLut16bitGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; FUNCTION cmsStageAllocCLutFloatGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; FUNCTION cmsStageDup(mpe: LPcmsStage): LPcmsStage; StdCall; PROCEDURE cmsStageFree(mpe: LPcmsStage); StdCall; FUNCTION cmsStageNext(mpe: LPcmsStage): LPcmsStage; StdCall; FUNCTION cmsStageInputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; FUNCTION cmsStageOutputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; FUNCTION cmsStageType(mpe: LPcmsStage): cmsStageSignature; StdCall; FUNCTION cmsStageData(mpe: LPcmsStage): Pointer; StdCall; // Sampling Type cmsSAMPLER16 = FUNCTION (Inp, Outp: LPcmsUInt16NumberArray; Cargo: Pointer): cmsInt32Number; CDecl; cmsSAMPLERFLOAT = FUNCTION (Inp, Outp: LPcmsFloat32NumberArray; Cargo: Pointer): cmsInt32Number; CDecl; // Use this flag to prevent changes being written to destination Const SAMPLER_INSPECT = $01000000; // For CLUT only FUNCTION cmsStageSampleCLut16bit(mpe: LPcmsStage; Sampler: cmsSAMPLER16; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; FUNCTION cmsStageSampleCLutFloat(mpe: LPcmsStage; Sampler: cmsSAMPLERFLOAT; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; // Slicers FUNCTION cmsSliceSpace16(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray; Sampler: cmsSAMPLER16; Cargo: Pointer): cmsBool; StdCall; FUNCTION cmsSliceSpaceFloat(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray; Sampler: cmsSAMPLERFLOAT; Cargo: Pointer): cmsBool; StdCall; // Multilocalized Unicode management --------------------------------------------------------------------------------------- Type LPcmsMLU = Pointer; Const cmsNoLanguage = #0#0#0; cmsNoCountry = #0#0#0; FUNCTION cmsMLUalloc(ContextID: cmsContext; nItems: cmsUInt32Number): LPcmsMLU; StdCall; PROCEDURE cmsMLUfree(mlu: LPcmsMLU); StdCall; FUNCTION cmsMLUdup(mlu: LPcmsMLU): LPcmsMLU; StdCall; FUNCTION cmsMLUsetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode, ASCIIString: PAnsiChar): cmsBool; StdCall; FUNCTION cmsMLUsetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; WideString: PWChar): cmsBool; StdCall; FUNCTION cmsMLUgetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; FUNCTION cmsMLUgetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; FUNCTION cmsMLUgetTranslation(mlu: LPcmsMLU; LanguageCode, CountryCode, ObtainedLanguage, ObtainedCountry: PAnsiChar): cmsBool; StdCall; // Undercolorremoval & black generation ------------------------------------------------------------------------------------- Type cmsUcrBg = PACKED RECORD Ucr, Bg: LPcmsToneCurve; Desc: LPcmsMLU; END; // Screening ---------------------------------------------------------------------------------------------------------------- Const cmsPRINTER_DEFAULT_SCREENS = $0001; cmsFREQUENCE_UNITS_LINES_CM = $0000; cmsFREQUENCE_UNITS_LINES_INCH = $0002; cmsSPOT_UNKNOWN = 0; cmsSPOT_PRINTER_DEFAULT = 1; cmsSPOT_ROUND = 2; cmsSPOT_DIAMOND = 3; cmsSPOT_ELLIPSE = 4; cmsSPOT_LINE = 5; cmsSPOT_SQUARE = 6; cmsSPOT_CROSS = 7; Type cmsScreeningChannel = PACKED RECORD Frequency, ScreenAngle: cmsFloat64Number; SpotShape: cmsUInt32Number; END; cmsScreening = PACKED RECORD Flag, nChannels : cmsUInt32Number; Channels: Array [0..cmsMAXCHANNELS-1] OF cmsScreeningChannel; END; // Named color ----------------------------------------------------------------------------------------------------------------- LPcmsNAMEDCOLORLIST = Pointer; FUNCTION cmsAllocNamedColorList(ContextID: cmsContext; n, ColorantCount :cmsUInt32Number; Prefix, Suffix: PAnsiChar): LPcmsNAMEDCOLORLIST; StdCall; PROCEDURE cmsFreeNamedColorList(v: LPcmsNAMEDCOLORLIST); StdCall; FUNCTION cmsDupNamedColorList(v: LPcmsNAMEDCOLORLIST): LPcmsNAMEDCOLORLIST; StdCall; FUNCTION cmsAppendNamedColor(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar; PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; FUNCTION cmsNamedColorCount(v: LPcmsNAMEDCOLORLIST): cmsUInt32Number; StdCall; FUNCTION cmsNamedColorIndex(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar): cmsInt32Number; StdCall; FUNCTION cmsNamedColorInfo(v: LPcmsNAMEDCOLORLIST; nColor : cmsUInt32Number; Name,Prefix, Suffix : PAnsiChar; PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; // Retrieve named color list from transform FUNCTION cmsGetNamedColorList(xform: cmsHTRANSFORM ): LPcmsNAMEDCOLORLIST; StdCall; // Profile sequence ----------------------------------------------------------------------------------------------------- Type // Profile sequence descriptor. Some fields come from profile sequence descriptor tag, others // come from Profile Sequence Identifier Tag cmsPSEQDESC = PACKED RECORD deviceMfg, deviceModel: cmsSignature; attributes: cmsUInt64Number; technology: cmsTechnologySignature; ProfileID: cmsProfileID; Manufacturer, Model, Description : LPcmsMLU; END; LPcmsSEQDESC = ^cmsPSEQDESC; cmsSEQ = PACKED RECORD n: cmsUInt32Number; ContextID: cmsContext; seq: LPcmsSEQDESC; END; LPcmsSEQ = ^cmsSEQ; FUNCTION cmsAllocProfileSequenceDescription(ContextID: cmsContext; n: cmsUInt32Number):LPcmsSEQ; StdCall; FUNCTION cmsDupProfileSequenceDescription(pseq: LPcmsSEQ):LPcmsSEQ; StdCall; PROCEDURE cmsFreeProfileSequenceDescription(pseq: LPcmsSEQ); StdCall; // Dictionaries -------------------------------------------------------------------------------------------------------- TYPE LPcmsDICTentry = ^cmsDICTentry; cmsDICTentry = PACKED RECORD Next: LPcmsDICTentry; DisplayName, DisplayValue: LPcmsMLU; Name, Value : PWChar; END; FUNCTION cmsDictAlloc(ContextID: cmsContext): cmsHANDLE; StdCall; PROCEDURE cmsDictFree(hDict: cmsHANDLE); StdCall; FUNCTION cmsDictDup(hDict: cmsHANDLE): cmsHANDLE; StdCall; FUNCTION cmsDictAddEntry(hDict: cmsHANDLE; Name, Value: PWChar; DisplayName, DisplayValue : LPcmsMLU): cmsBool; StdCall; FUNCTION cmsDictGetEntryList(hDict: cmsHANDLE): LPcmsDICTentry; StdCall; FUNCTION cmsDictNextEntry(e : LPcmsDICTentry): LPcmsDICTentry; StdCall; // Access to Profile data ---------------------------------------------------------------------------------------------- FUNCTION cmsCreateProfilePlaceholder(ContextID: cmsContext): cmsHPROFILE; StdCall; FUNCTION cmsGetProfileContextID(hProfile: cmsHPROFILE):cmsContext; StdCall; FUNCTION cmsGetTagCount(hProfile: cmsHPROFILE): cmsInt32Number; StdCall; FUNCTION cmsGetTagSignature(hProfile: cmsHPROFILE; n: cmsUInt32Number): cmsTagSignature; StdCall; FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): cmsBool; StdCall; // Read and write pre-formatted data FUNCTION cmsReadTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): Pointer; StdCall; FUNCTION cmsWriteTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer): cmsBool; StdCall; FUNCTION cmsLinkTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; dest: cmsTagSignature): cmsBool; StdCall; FUNCTION cmsTagLinkedTo(hProfile: cmsHPROFILE; sig: cmsTagSignature):cmsTagSignature; StdCall; // Read and write raw data FUNCTION cmsReadRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; Buffer: Pointer; BufferSize: cmsUInt32Number): cmsInt32Number; StdCall; FUNCTION cmsWriteRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer; Size: cmsUInt32Number): cmsBool; StdCall; // Access header data Const cmsEmbeddedProfileFalse = $00000000; cmsEmbeddedProfileTrue = $00000001; cmsUseAnywhere = $00000000; cmsUseWithEmbeddedDataOnly = $00000002; FUNCTION cmsGetHeaderFlags(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; PROCEDURE cmsGetHeaderAttributes(hProfile: cmsHPROFILE; Flags: LPcmsUInt64Number); StdCall; PROCEDURE cmsGetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; // TODO: // FUNCTION cmsGetHeaderCreationDateTime(hProfile: cmsHPROFILE; struct tm *Dest): cmsBool; StdCall; FUNCTION cmsGetHeaderRenderingIntent(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; Flags: cmsUInt32Number); StdCall; FUNCTION cmsGetHeaderManufacturer(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; PROCEDURE cmsSetHeaderManufacturer(hProfile: cmsHPROFILE; manufacturer: cmsUInt32Number ); StdCall; FUNCTION cmsGetHeaderModel(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; PROCEDURE cmsSetHeaderModel(hProfile: cmsHPROFILE; model: cmsUInt32Number ); StdCall; PROCEDURE cmsSetHeaderAttributes(hProfile: cmsHPROFILE; Flags: cmsUInt64Number); StdCall; PROCEDURE cmsSetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; PROCEDURE cmsSetHeaderRenderingIntent(hProfile: cmsHPROFILE; RenderingIntent: cmsUInt32Number ); StdCall; FUNCTION cmsGetPCS(hProfile: cmsHPROFILE):cmsColorSpaceSignature; StdCall; PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: cmsColorSpaceSignature); StdCall; FUNCTION cmsGetColorSpace(hProfile: cmsHPROFILE): cmsColorSpaceSignature; StdCall; PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: cmsColorSpaceSignature); StdCall; FUNCTION cmsGetDeviceClass(hProfile: cmsHPROFILE): cmsProfileClassSignature; StdCall; PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: cmsProfileClassSignature); StdCall; PROCEDURE cmsSetProfileVersion(hProfile: cmsHPROFILE; Version: cmsFloat64Number); StdCall; FUNCTION cmsGetProfileVersion(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; FUNCTION cmsGetEncodedICCversion(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; PROCEDURE cmsSetEncodedICCversion(hProfile: cmsHPROFILE; Version: cmsUInt32Number); StdCall; Const // How profiles may be used LCMS_USED_AS_INPUT = 0; LCMS_USED_AS_OUTPUT = 1; LCMS_USED_AS_PROOF = 2; FUNCTION cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; FUNCTION cmsIsMatrixShaper(hProfile: cmsHPROFILE): cmsBool; StdCall; FUNCTION cmsIsCLUT(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; // Translate form/to our notation to ICC FUNCTION _cmsICCcolorSpace(OurNotation: Integer): cmsColorSpaceSignature; StdCall; FUNCTION _cmsLCMScolorSpace(ProfileSpace: cmsColorSpaceSignature): Integer; StdCall; FUNCTION cmsChannelsOf( ColorSpace: cmsColorSpaceSignature): cmsUInt32Number; StdCall; // Build a suitable formatter for the colorspace of this profile FUNCTION cmsFormatterForColorspaceOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; FUNCTION cmsFormatterForPCSOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; Type // Localized info cmsInfoType = ( cmsInfoDescription = 0, cmsInfoManufacturer = 1, cmsInfoModel = 2, cmsInfoCopyright = 3 ); FUNCTION cmsGetProfileInfo(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; FUNCTION cmsGetProfileInfoASCII(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; // IO handlers ---------------------------------------------------------------------------------------------------------- Type LPcmsIOHANDLER = Pointer; FUNCTION cmsOpenIOhandlerFromFile(ContextID: cmsContext; FileName, AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; // FUNCTION cmsOpenIOhandlerFromStream(ContextID: cmsContext; FILE* Stream): LPcmsIOHANDLER; StdCall; FUNCTION cmsOpenIOhandlerFromMem(ContextID: cmsContext; Buffer: Pointer; size: cmsUInt32Number; AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; FUNCTION cmsOpenIOhandlerFromNULL(ContextID: cmsContext): LPcmsIOHANDLER; StdCall; FUNCTION cmsCloseIOhandler(io: LPcmsIOHANDLER): cmsBool; StdCall; // MD5 message digest -------------------------------------------------------------------------------------------------- FUNCTION cmsMD5computeID(hProfile: cmsHPROFILE): cmsBool; StdCall; // Profile high level funtions ------------------------------------------------------------------------------------------ FUNCTION cmsOpenProfileFromFile(ICCProfile : PAnsiChar; sAccess: PAnsiChar): cmsHPROFILE; StdCall; FUNCTION cmsOpenProfileFromFileTHR(ContextID: cmsContext; ICCProfile, sAccess: PAnsiChar): cmsHPROFILE; StdCall; // FUNCTION CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; // FUNCTION CMSEXPORT cmsOpenProfileFromStreamTHR(ContextID: cmsContext; FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; FUNCTION cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; FUNCTION cmsOpenProfileFromMemTHR(ContextID: cmsContext; MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; FUNCTION cmsOpenProfileFromIOhandlerTHR(ContextID: cmsContext; io: LPcmsIOHANDLER): cmsHPROFILE; StdCall; FUNCTION cmsCloseProfile(hProfile: cmsHPROFILE): cmsBool; StdCall; FUNCTION cmsSaveProfileToFile(hProfile: cmsHPROFILE; FileName: PAnsiChar): cmsBool; StdCall; // FUNCTION CMSEXPORT cmsSaveProfileToStream(hProfile: cmsHPROFILE, FILE* Stream): cmsBool; StdCall; FUNCTION cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; FUNCTION cmsSaveProfileToIOhandler(hProfile: cmsHPROFILE; io: LPcmsIOHANDLER):cmsUInt32Number; StdCall; // Predefined virtual profiles ------------------------------------------------------------------------------------------ FUNCTION cmsCreateRGBProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY; Primaries: LPcmsCIExyYTRIPLE; TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; FUNCTION cmsCreateRGBProfile(WhitePoint: LPcmsCIExyY; Primaries: LPcmsCIExyYTRIPLE; TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; FUNCTION cmsCreateGrayProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY; TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY; TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; FUNCTION cmsCreateLinearizationDeviceLinkTHR(ContextID: cmsContext; ColorSpace: cmsColorSpaceSignature; TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: cmsColorSpaceSignature; TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; FUNCTION cmsCreateInkLimitingDeviceLinkTHR(ContextID: cmsContext; ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; FUNCTION cmsCreateLab2ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; FUNCTION cmsCreateLab2Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; FUNCTION cmsCreateLab4ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; FUNCTION cmsCreateXYZProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; FUNCTION cmsCreateXYZProfile: cmsHPROFILE; StdCall; FUNCTION cmsCreate_sRGBProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; FUNCTION cmsCreate_sRGBProfile: cmsHPROFILE; StdCall; FUNCTION cmsCreateBCHSWabstractProfileTHR(ContextID: cmsContext; nLUTPoints: Integer; Bright, Contrast, Hue, Saturation: cmsFloat64Number; TempSrc, TempDest: Integer): cmsHPROFILE; StdCall; FUNCTION cmsCreateBCHSWabstractProfile( nLUTPoints: Integer; Bright, Contrast, Hue, Saturation: cmsFloat64Number; TempSrc, TempDest: Integer): cmsHPROFILE; StdCall; FUNCTION cmsCreateNULLProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; FUNCTION cmsCreateNULLProfile: cmsHPROFILE; StdCall; // Converts a transform to a devicelink profile FUNCTION cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM; Version: cmsFloat64Number; dwFlags: cmsUInt32Number): cmsHPROFILE; StdCall; // Intents ---------------------------------------------------------------------------------------------- Const // ICC Intents INTENT_PERCEPTUAL = 0; INTENT_RELATIVE_COLORIMETRIC = 1; INTENT_SATURATION = 2; INTENT_ABSOLUTE_COLORIMETRIC = 3; // Non-ICC intents INTENT_PRESERVE_K_ONLY_PERCEPTUAL = 10; INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC = 11; INTENT_PRESERVE_K_ONLY_SATURATION = 12; INTENT_PRESERVE_K_PLANE_PERCEPTUAL = 13; INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC = 14; INTENT_PRESERVE_K_PLANE_SATURATION = 15; Type LPPAnsiChar = ^PAnsiChar; // Call with NULL as parameters to get the intent count FUNCTION cmsGetSupportedIntents(nMax: cmsUInt32Number; Codes: LPcmsUInt32Number; Descriptions: LPPAnsiChar): cmsUInt32Number; StdCall; Const // Flags cmsFLAGS_NOCACHE = $0040; // Inhibit 1-pixel cache cmsFLAGS_NOOPTIMIZE = $0100; // Inhibit optimizations cmsFLAGS_NULLTRANSFORM = $0200; // Don't transform anyway // Proofing flags cmsFLAGS_GAMUTCHECK = $1000; // Out of Gamut alarm cmsFLAGS_SOFTPROOFING = $4000; // Do softproofing // Misc cmsFLAGS_BLACKPOINTCOMPENSATION = $2000; cmsFLAGS_NOWHITEONWHITEFIXUP = $0004; // Don't fix scum dot cmsFLAGS_HIGHRESPRECALC = $0400; // Use more memory to give better accurancy cmsFLAGS_LOWRESPRECALC = $0800; // Use less memory to minimize resouces // For devicelink creation cmsFLAGS_8BITS_DEVICELINK = $0008; // Create 8 bits devicelinks cmsFLAGS_GUESSDEVICECLASS = $0020; // Guess device class (for transform2devicelink) cmsFLAGS_KEEP_SEQUENCE = $0080; // Keep profile sequence for devicelink creation // Specific to a particular optimizations cmsFLAGS_FORCE_CLUT = $0002; // Force CLUT optimization cmsFLAGS_CLUT_POST_LINEARIZATION = $0001; // create postlinearization tables if possible cmsFLAGS_CLUT_PRE_LINEARIZATION = $0010; // create prelinearization tables if possible // CRD special cmsFLAGS_NODEFAULTRESOURCEDEF = $01000000; // Fine-tune control over number of gridpoints FUNCTION cmsFLAGS_GRIDPOINTS(n: Integer): Integer; // Transforms --------------------------------------------------------------------------------------------------- type LPcmsHPROFILEArray = ^cmsHPROFILEArray; cmsHPROFILEArray = array[0..0] of cmsHPROFILE; LPcmsBoolArray = ^cmsBoolArray; cmsBoolArray = array[0..0] of cmsBool; FUNCTION cmsCreateTransformTHR(ContextID: cmsContext; Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; FUNCTION cmsCreateTransform(Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; FUNCTION cmsCreateProofingTransformTHR(ContextID: cmsContext; Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Proofing: cmsHPROFILE; Intent: cmsUInt32Number; ProofingIntent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; FUNCTION cmsCreateProofingTransform(Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Proofing: cmsHPROFILE; Intent: cmsUInt32Number; ProofingIntent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; FUNCTION cmsCreateMultiprofileTransformTHR(ContextID: cmsContext; hProfiles: LPcmsHPROFILEArray; nProfiles: cmsUInt32Number; InputFormat: cmsUInt32Number; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; FUNCTION cmsCreateMultiprofileTransform( hProfiles: LPcmsHPROFILEArray; nProfiles: cmsUInt32Number; InputFormat: cmsUInt32Number; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; FUNCTION cmsCreateExtendedTransform(ContextID: cmsContext; nProfiles: cmsUInt32Number; hProfiles: LPcmsHPROFILEArray; BPC: LPcmsBoolArray; Intents: LPcmsUInt32NumberArray; AdaptationStates: LPcmsFloat64NumberArray; hGamutProfile: cmsHPROFILE; nGamutPCSposition: cmsUInt32Number; InputFormat, OutputFormat: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; PROCEDURE cmsDeleteTransform(hTransform: cmsHTRANSFORM); StdCall; PROCEDURE cmsDoTransform(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number); StdCall; PROCEDURE cmsSetAlarmCodes( NewAlarm: LPcmsUInt16NumberArray); StdCall; PROCEDURE cmsGetAlarmCodes(NewAlarm: LPcmsUInt16NumberArray); StdCall; // Adaptation state for absolute colorimetric intent FUNCTION cmsSetAdaptationState(d: cmsFloat64Number):cmsFloat64Number; StdCall; // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed FUNCTION cmsGetTransformContextID(hTransform: cmsHTRANSFORM):cmsContext; StdCall; // For backwards compatibility FUNCTION cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM; InputFormat, OutputFormat: cmsUInt32Number): cmsBool; StdCall; // PostScript ColorRenderingDictionary and ColorSpaceArray ---------------------------------------------------- Type cmsPSResourceType = (cmsPS_RESOURCE_CSA, cmsPS_RESOURCE_CRD ) ; // lcms2 unified method to access postscript color resources FUNCTION cmsGetPostScriptColorResource(ContextID: cmsContext; RType: cmsPSResourceType; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; io: LPcmsIOHANDLER): cmsUInt32Number; StdCall; FUNCTION cmsGetPostScriptCSA(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number ): cmsUInt32Number; StdCall; FUNCTION cmsGetPostScriptCRD(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number): cmsUInt32Number; StdCall; // IT8.7 / CGATS.17-20$ handling ----------------------------------------------------------------------------- // CGATS.13 parser FUNCTION cmsIT8Alloc: cmsHANDLE; StdCall; PROCEDURE cmsIT8Free(hIT8: cmsHANDLE); StdCall; // Tables FUNCTION cmsIT8TableCount(hIT8: cmsHANDLE): Integer; StdCall; FUNCTION cmsIT8SetTable(hIT8: cmsHANDLE; nTable: Integer): Integer; StdCall; // Persistence FUNCTION cmsIT8LoadFromFile(cFileName: PAnsiChar): cmsHANDLE; StdCall; FUNCTION cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): cmsHANDLE; StdCall; FUNCTION cmsIT8SaveToFile(hIT8: cmsHANDLE; cFileName: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8SaveToMem(hIT8: cmsHANDLE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; // Properties FUNCTION cmsIT8GetSheetType(hIT8: cmsHANDLE): PAnsiChar; StdCall; FUNCTION cmsIT8SetSheetType(hIT8: cmsHANDLE; TheType: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8SetComment(hIT8: cmsHANDLE; cComment: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8SetPropertyStr(hIT8: cmsHANDLE; cProp, Str: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8SetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Double): cmsBool; StdCall; FUNCTION cmsIT8SetPropertyHex(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Integer): cmsBool; StdCall; FUNCTION cmsIT8SetPropertyUncooked(hIT8: cmsHANDLE; Key, Buffer: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8GetProperty(hIT8: cmsHANDLE; cProp: PAnsiChar): PAnsiChar; StdCall; FUNCTION cmsIT8GetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar): Double; StdCall; FUNCTION cmsIT8EnumProperties(hIT8: cmsHANDLE; var PropertyNames: LPPAnsiChar): Integer; StdCall; // Datasets FUNCTION cmsIT8GetDataRowCol(hIT8: cmsHANDLE; row, col: Integer): PAnsiChar; StdCall; FUNCTION cmsIT8GetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer): Double; StdCall; FUNCTION cmsIT8SetDataRowCol(hIT8: cmsHANDLE; row, col: Integer; Val: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8SetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer; Val: Double): cmsBool; StdCall; FUNCTION cmsIT8GetData(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar): PAnsiChar; StdCall; FUNCTION cmsIT8GetDataDbl(hIT8: cmsHANDLE;cPatch, cSample: PAnsiChar): Double; StdCall; FUNCTION cmsIT8SetData(hIT8: cmsHANDLE; cPatch, cSample, Val: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8SetDataDbl(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar; Val: Double): cmsBool; StdCall; FUNCTION cmsIT8SetDataFormat(hIT8: cmsHANDLE; n: Integer; Sample: PAnsiChar): cmsBool; StdCall; FUNCTION cmsIT8EnumDataFormat(hIT8: cmsHANDLE; var SampleNames: LPPAnsiChar): Integer; StdCall; FUNCTION cmsIT8GetPatchName(hIT8: cmsHANDLE; nPatch: Integer; Buffer: PAnsiChar): PAnsiChar; StdCall; // The LABEL extension FUNCTION cmsIT8SetTableByLabel(hIT8: cmsHANDLE; cSet, cField, ExpectedType: PAnsiChar): Integer; StdCall; FUNCTION cmsIT8FindDataFormat(hIT8: cmsHANDLE; cSample: PAnsiChar): Integer; StdCall; // Formatter for double PROCEDURE cmsIT8DefineDblFormat(hIT8: cmsHANDLE; Formatter: PAnsiChar); StdCall; // Gamut boundary description routines ------------------------------------------------------------------------------ FUNCTION cmsGBDAlloc(ContextID: cmsContext):cmsHANDLE; StdCall; PROCEDURE cmsGBDFree(hGBD: cmsHANDLE); StdCall; FUNCTION cmsGDBAddPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; FUNCTION cmsGDBCompute(hGDB: cmsHANDLE; dwFlags: cmsUInt32Number): cmsBool; StdCall; FUNCTION cmsGDBCheckPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; // Feature detection ---------------------------------------------------------------------------------------------- // Estimate the black point FUNCTION cmsDetectBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall; FUNCTION cmsDetectDestinationBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall; // Estimate total area coverage FUNCTION cmsDetectTAC(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; // Poor man's gamut mapping FUNCTION cmsDesaturateLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: cmsFloat64Number): cmsBool; StdCall; IMPLEMENTATION FUNCTION FLOAT_SH(a: cmsUInt32Number): cmsUInt32Number; begin FLOAT_SH := ((a) shl 22) end; FUNCTION OPTIMIZED_SH(s: cmsUInt32Number): cmsUInt32Number; begin OPTIMIZED_SH := ((s) shl 21) end; FUNCTION COLORSPACE_SH(s: cmsUInt32Number):cmsUInt32Number; begin COLORSPACE_SH := ((s) shl 16) end; FUNCTION SWAPFIRST_SH(s: cmsUInt32Number):cmsUInt32Number; begin SWAPFIRST_SH := ((s) shl 14) end; FUNCTION FLAVOR_SH(s: cmsUInt32Number):cmsUInt32Number; begin FLAVOR_SH := ((s) shl 13) end; FUNCTION PLANAR_SH(p: cmsUInt32Number):cmsUInt32Number; begin PLANAR_SH := ((p) shl 12) end; FUNCTION ENDIAN16_SH(e: cmsUInt32Number):cmsUInt32Number; begin ENDIAN16_SH := ((e) shl 11) end; FUNCTION DOSWAP_SH(e: cmsUInt32Number):cmsUInt32Number; begin DOSWAP_SH := ((e) shl 10) end; FUNCTION EXTRA_SH(e: cmsUInt32Number):cmsUInt32Number; begin EXTRA_SH := ((e) shl 7) end; FUNCTION CHANNELS_SH(c: cmsUInt32Number):cmsUInt32Number; begin CHANNELS_SH := ((c) shl 3) end; FUNCTION BYTES_SH(b: cmsUInt32Number):cmsUInt32Number; begin BYTES_SH := (b) end; FUNCTION T_FLOAT(a: cmsUInt32Number): cmsUInt32Number; begin T_FLOAT := (((a) shr 22) and 1) end; FUNCTION T_OPTIMIZED(o: cmsUInt32Number): cmsUInt32Number; begin T_OPTIMIZED := (((o) shr 21) and 1) end; FUNCTION T_COLORSPACE(s: cmsUInt32Number): cmsUInt32Number; begin T_COLORSPACE := (((s) shr 16) and 31) end; FUNCTION T_SWAPFIRST(s: cmsUInt32Number): cmsUInt32Number; begin T_SWAPFIRST := (((s) shr 14) and 1) end; FUNCTION T_FLAVOR(s: cmsUInt32Number): cmsUInt32Number; begin T_FLAVOR := (((s) shr 13) and 1) end; FUNCTION T_PLANAR(p: cmsUInt32Number): cmsUInt32Number; begin T_PLANAR := (((p) shr 12) and 1) end; FUNCTION T_ENDIAN16(e: cmsUInt32Number): cmsUInt32Number; begin T_ENDIAN16 := (((e) shr 11) and 1) end; FUNCTION T_DOSWAP(e: cmsUInt32Number): cmsUInt32Number; begin T_DOSWAP := (((e) shr 10) and 1) end; FUNCTION T_EXTRA(e: cmsUInt32Number): cmsUInt32Number; begin T_EXTRA := (((e) shr 7) and 7) end; FUNCTION T_CHANNELS(c: cmsUInt32Number): cmsUInt32Number; begin T_CHANNELS := (((c) shr 3) and 15) end; FUNCTION T_BYTES(b: cmsUInt32Number): cmsUInt32Number; begin T_BYTES := ((b) and 7) end; // FUNCTION cmsPlugin(Plugin: Pointer): cmsBool; StdCall; external 'lcms2.dll'; PROCEDURE cmsUnregisterPlugins; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetLogErrorHandler(Fn: cmsLogErrorHandlerFunction); StdCall; external 'lcms2.dll'; FUNCTION cmsD50_XYZ: LPcmsCIEXYZ; StdCall; external 'lcms2.dll'; FUNCTION cmsD50_xyY: LPcmsCIExyY; StdCall; external 'lcms2.dll'; PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); StdCall; external 'lcms2.dll'; PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); StdCall; external 'lcms2.dll'; PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll'; PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); StdCall; external 'lcms2.dll'; PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll'; PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); StdCall; external 'lcms2.dll'; PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); StdCall; external 'lcms2.dll'; PROCEDURE cmsLabEncoded2FloatV2(Lab: LPcmsCIELab; wLab: Pointer); StdCall; external 'lcms2.dll'; PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll'; PROCEDURE cmsFloat2LabEncodedV2(wLab: Pointer; Lab: LPcmsCIELab); StdCall; external 'lcms2.dll'; PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); StdCall; external 'lcms2.dll'; PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); StdCall; external 'lcms2.dll'; FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsWhitePointFromTemp(var WhitePoint: cmsCIExyY; TempK: cmsFloat64Number) : cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsTempFromWhitePoint(var TeampK: cmsFloat64Number; var WhitePoint: cmsCIExyY) : cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsAdaptToIlluminant(Result: LPcmsCIEXYZ; SourceWhitePt: LPcmsCIEXYZ; Illuminant: LPcmsCIEXYZ; Value: LPcmsCIEXYZ): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; StdCall; external 'lcms2.dll'; PROCEDURE cmsCIECAM02Done(hModel : Pointer); StdCall; external 'lcms2.dll'; PROCEDURE cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall; external 'lcms2.dll'; PROCEDURE cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); StdCall; external 'lcms2.dll'; FUNCTION cmsBuildSegmentedToneCurve(ContextID: cmsContext; nSegments: cmsInt32Number; Segments: LPcmsCurveSegmentArray): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsBuildParametricToneCurve(ContextID: cmsContext; CType: cmsInt32Number; Params: LPcmsFloat64NumberArray): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsBuildGamma(ContextID: cmsContext; Gamma: cmsFloat64Number): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsBuildTabulatedToneCurve16(ContextID: cmsContext; nEntries: cmsInt32Number; values: LPcmsUInt16NumberArray): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsBuildTabulatedToneCurveFloat(ContextID: cmsContext; nEntries: cmsUInt32Number; values: LPcmsFloat32NumberArray): LPcmsToneCurve; StdCall; external 'lcms2.dll'; PROCEDURE cmsFreeToneCurve(Curve: LPcmsToneCurve); StdCall; external 'lcms2.dll'; PROCEDURE cmsFreeToneCurveTriple(Curve: LPLPcmsToneCurveArray); StdCall; external 'lcms2.dll'; FUNCTION cmsDupToneCurve(Src: LPcmsToneCurve): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsReverseToneCurve(InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsReverseToneCurveEx(nResultSamples: cmsInt32Number; InGamma: LPcmsToneCurve): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsJoinToneCurve(ContextID: cmsContext; X, Y: LPcmsToneCurve; nPoints: cmsUInt32Number ): LPcmsToneCurve; StdCall; external 'lcms2.dll'; FUNCTION cmsSmoothToneCurve(Tab: LPcmsToneCurve; lambda: cmsFloat64Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsEvalToneCurveFloat(Curve: LPcmsToneCurve; v: cmsFloat32Number):cmsFloat32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsEvalToneCurve16(Curve: LPcmsToneCurve; v:cmsUInt16Number):cmsUInt16Number; StdCall; external 'lcms2.dll'; FUNCTION cmsIsToneCurveMultisegment(InGamma: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIsToneCurveLinear(Curve: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIsToneCurveMonotonic(t: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIsToneCurveDescending(t: LPcmsToneCurve):cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsGetToneCurveParametricType(t: LPcmsToneCurve):cmsInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsEstimateGamma(t: LPcmsToneCurve; Precision:cmsFloat64Number):cmsFloat64Number; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineAlloc(ContextID: cmsContext; InputChannels, OutputChannels: cmsUInt32Number): LPcmsPipeline; StdCall; external 'lcms2.dll'; PROCEDURE cmsPipelineFree(lut: LPcmsPipeline); StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineDup(Orig: LPcmsPipeline): LPcmsPipeline; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineInputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineOutputChannels(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineStageCount(lut: LPcmsPipeline): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineGetPtrToFirstStage(lut: LPcmsPipeline): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineGetPtrToLastStage(lut: LPcmsPipeline): LPcmsStage; StdCall; external 'lcms2.dll'; PROCEDURE cmsPipelineEval16(Inv, Outv: LPcmsUInt16NumberArray; lut: LPcmsPipeline); StdCall; external 'lcms2.dll'; PROCEDURE cmsPipelineEvalFloat(Inv, Outv: LPcmsFloat32NumberArray; lut: LPcmsPipeline); StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineEvalReverseFloat(Target, Result, Hint: LPcmsFloat32NumberArray; lut: LPcmsPipeline): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineCat(l1, l2: LPcmsPipeline): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsPipelineSetSaveAs8bitsFlag(lut: LPcmsPipeline; On: cmsBool): cmsBool; StdCall; external 'lcms2.dll'; PROCEDURE cmsPipelineInsertStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPcmsStage); StdCall; external 'lcms2.dll'; PROCEDURE cmsPipelineUnlinkStage(lut: LPcmsPipeline; loc: cmsStageLoc; mpe: LPLPcmsStage); StdCall; external 'lcms2.dll'; FUNCTION cmsStageAllocIdentity(ContextID: cmsContext; nChannels: cmsUInt32Number): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageAllocToneCurves(ContextID: cmsContext; nChannels: cmsUInt32Number; Curves: LPLPcmsToneCurveArray): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageAllocMatrix(ContextID: cmsContext; Rows, Cols: cmsUInt32Number; Matrix, Offset: LPcmsFloat64NumberArray): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageAllocCLut16bit(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageAllocCLutFloat(ContextID: cmsContext; nGridPoints: cmsUInt32Number; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageAllocCLut16bitGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsUInt16NumberArray): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageAllocCLutFloatGranular(ContextID: cmsContext; nGridPoints: LPcmsUInt32NumberArray; inputChan, outputChan: cmsUInt32Number; Table: LPcmsFloat32NumberArray): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageDup(mpe: LPcmsStage): LPcmsStage; StdCall; external 'lcms2.dll'; PROCEDURE cmsStageFree(mpe: LPcmsStage); StdCall; external 'lcms2.dll'; FUNCTION cmsStageNext(mpe: LPcmsStage): LPcmsStage; StdCall; external 'lcms2.dll'; FUNCTION cmsStageInputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsStageOutputChannels(mpe: LPcmsStage): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsStageType(mpe: LPcmsStage): cmsStageSignature; StdCall; external 'lcms2.dll'; FUNCTION cmsStageData(mpe: LPcmsStage): Pointer; StdCall; external 'lcms2.dll'; FUNCTION cmsStageSampleCLut16bit(mpe: LPcmsStage; Sampler: cmsSAMPLER16; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsStageSampleCLutFloat(mpe: LPcmsStage; Sampler: cmsSAMPLERFLOAT; Cargo: Pointer; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsSliceSpace16(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray; Sampler: cmsSAMPLER16; Cargo: Pointer): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsSliceSpaceFloat(nInputs: cmsUInt32Number; clutPoints: LPcmsUInt32NumberArray; Sampler: cmsSAMPLERFLOAT; Cargo: Pointer): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsMLUalloc(ContextID: cmsContext; nItems: cmsUInt32Number): LPcmsMLU; StdCall; external 'lcms2.dll'; PROCEDURE cmsMLUfree(mlu: LPcmsMLU); StdCall; external 'lcms2.dll'; FUNCTION cmsMLUdup(mlu: LPcmsMLU): LPcmsMLU; StdCall; external 'lcms2.dll'; FUNCTION cmsMLUsetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode, ASCIIString: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsMLUsetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; WideString: PWChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsMLUgetASCII(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsMLUgetWide(mlu: LPcmsMLU; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsMLUgetTranslation(mlu: LPcmsMLU; LanguageCode, CountryCode, ObtainedLanguage, ObtainedCountry: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsAllocNamedColorList(ContextID: cmsContext; n, ColorantCount :cmsUInt32Number; Prefix, Suffix: PAnsiChar): LPcmsNAMEDCOLORLIST; StdCall; external 'lcms2.dll'; PROCEDURE cmsFreeNamedColorList(v: LPcmsNAMEDCOLORLIST); StdCall; external 'lcms2.dll'; FUNCTION cmsDupNamedColorList(v: LPcmsNAMEDCOLORLIST): LPcmsNAMEDCOLORLIST; StdCall; external 'lcms2.dll'; FUNCTION cmsAppendNamedColor(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar; PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsNamedColorCount(v: LPcmsNAMEDCOLORLIST): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsNamedColorIndex(v: LPcmsNAMEDCOLORLIST; Name: PAnsiChar): cmsInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsNamedColorInfo(v: LPcmsNAMEDCOLORLIST; nColor : cmsUInt32Number; Name,Prefix, Suffix : PAnsiChar; PCS, Colorant : LPcmsUInt16NumberArray): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsGetNamedColorList(xform: cmsHTRANSFORM ): LPcmsNAMEDCOLORLIST; StdCall; external 'lcms2.dll'; FUNCTION cmsAllocProfileSequenceDescription(ContextID: cmsContext; n: cmsUInt32Number):LPcmsSEQ; StdCall; external 'lcms2.dll'; FUNCTION cmsDupProfileSequenceDescription(pseq: LPcmsSEQ):LPcmsSEQ; StdCall; external 'lcms2.dll'; PROCEDURE cmsFreeProfileSequenceDescription(pseq: LPcmsSEQ); StdCall; external 'lcms2.dll'; FUNCTION cmsDictAlloc(ContextID: cmsContext): cmsHANDLE; StdCall; external 'lcms2.dll'; PROCEDURE cmsDictFree(hDict: cmsHANDLE); StdCall; external 'lcms2.dll'; FUNCTION cmsDictDup(hDict: cmsHANDLE): cmsHANDLE; StdCall; external 'lcms2.dll'; FUNCTION cmsDictAddEntry(hDict: cmsHANDLE; Name, Value: PWChar; DisplayName, DisplayValue : LPcmsMLU): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsDictGetEntryList(hDict: cmsHANDLE): LPcmsDICTentry; StdCall; external 'lcms2.dll'; FUNCTION cmsDictNextEntry(e : LPcmsDICTentry): LPcmsDICTentry; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateProfilePlaceholder(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsGetProfileContextID(hProfile: cmsHPROFILE):cmsContext; StdCall; external 'lcms2.dll'; FUNCTION cmsGetTagCount(hProfile: cmsHPROFILE): cmsInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsGetTagSignature(hProfile: cmsHPROFILE; n: cmsUInt32Number): cmsTagSignature; StdCall; external 'lcms2.dll'; FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsReadTag(hProfile: cmsHPROFILE; sig: cmsTagSignature ): Pointer; StdCall; external 'lcms2.dll'; FUNCTION cmsWriteTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsLinkTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; dest: cmsTagSignature): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsTagLinkedTo(hProfile: cmsHPROFILE; sig: cmsTagSignature):cmsTagSignature; StdCall; external 'lcms2.dll'; FUNCTION cmsReadRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; Buffer: Pointer; BufferSize: cmsUInt32Number): cmsInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsWriteRawTag(hProfile: cmsHPROFILE; sig: cmsTagSignature; data: Pointer; Size: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsGetHeaderFlags(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll'; PROCEDURE cmsGetHeaderAttributes(hProfile: cmsHPROFILE; Flags: LPcmsUInt64Number); StdCall; external 'lcms2.dll'; PROCEDURE cmsGetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; external 'lcms2.dll'; FUNCTION cmsGetHeaderRenderingIntent(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; Flags: cmsUInt32Number); StdCall; external 'lcms2.dll'; FUNCTION cmsGetHeaderManufacturer(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetHeaderManufacturer(hProfile: cmsHPROFILE; manufacturer: cmsUInt32Number ); StdCall; external 'lcms2.dll'; FUNCTION cmsGetHeaderModel(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetHeaderModel(hProfile: cmsHPROFILE; model: cmsUInt32Number ); StdCall; external 'lcms2.dll'; PROCEDURE cmsSetHeaderAttributes(hProfile: cmsHPROFILE; Flags: cmsUInt64Number); StdCall; external 'lcms2.dll'; PROCEDURE cmsSetHeaderProfileID(hProfile: cmsHPROFILE; ProfileID: LPcmsUInt8Number); StdCall; external 'lcms2.dll'; PROCEDURE cmsSetHeaderRenderingIntent(hProfile: cmsHPROFILE; RenderingIntent: cmsUInt32Number ); StdCall; external 'lcms2.dll'; FUNCTION cmsGetPCS(hProfile: cmsHPROFILE):cmsColorSpaceSignature; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: cmsColorSpaceSignature); StdCall; external 'lcms2.dll'; FUNCTION cmsGetColorSpace(hProfile: cmsHPROFILE): cmsColorSpaceSignature; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: cmsColorSpaceSignature); StdCall; external 'lcms2.dll'; FUNCTION cmsGetDeviceClass(hProfile: cmsHPROFILE): cmsProfileClassSignature; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: cmsProfileClassSignature); StdCall; external 'lcms2.dll'; PROCEDURE cmsSetProfileVersion(hProfile: cmsHPROFILE; Version: cmsFloat64Number); StdCall; external 'lcms2.dll'; FUNCTION cmsGetProfileVersion(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; external 'lcms2.dll'; FUNCTION cmsGetEncodedICCversion(hProfile: cmsHPROFILE): cmsUInt32Number; StdCall; external 'lcms2.dll'; PROCEDURE cmsSetEncodedICCversion(hProfile: cmsHPROFILE; Version: cmsUInt32Number); StdCall; external 'lcms2.dll'; FUNCTION cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIsMatrixShaper(hProfile: cmsHPROFILE): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIsCLUT(hProfile: cmsHPROFILE; Intent: cmsUInt32Number; UsedDirection: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION _cmsICCcolorSpace(OurNotation: Integer): cmsColorSpaceSignature; StdCall; external 'lcms2.dll'; FUNCTION _cmsLCMScolorSpace(ProfileSpace: cmsColorSpaceSignature): Integer; StdCall; external 'lcms2.dll'; FUNCTION cmsChannelsOf( ColorSpace: cmsColorSpaceSignature): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsFormatterForColorspaceOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsFormatterForPCSOfProfile(hProfile: cmsHPROFILE; nBytes: cmsUInt32Number; lIsFloat: cmsBool): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsGetProfileInfo(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar; Buffer: PWChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsGetProfileInfoASCII(hProfile: cmsHPROFILE; Info: cmsInfoType; LanguageCode, CountryCode: PAnsiChar; Buffer: PAnsiChar; BufferSize: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenIOhandlerFromFile(ContextID: cmsContext; FileName, AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; external 'lcms2.dll'; // FUNCTION cmsOpenIOhandlerFromStream(ContextID: cmsContext; FILE* Stream): LPcmsIOHANDLER; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenIOhandlerFromMem(ContextID: cmsContext; Buffer: Pointer; size: cmsUInt32Number; AccessMode: PAnsiChar): LPcmsIOHANDLER; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenIOhandlerFromNULL(ContextID: cmsContext): LPcmsIOHANDLER; StdCall; external 'lcms2.dll'; FUNCTION cmsCloseIOhandler(io: LPcmsIOHANDLER): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsMD5computeID(hProfile: cmsHPROFILE): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenProfileFromFile(ICCProfile : PAnsiChar; sAccess: PAnsiChar): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenProfileFromFileTHR(ContextID: cmsContext; ICCProfile, sAccess: PAnsiChar): cmsHPROFILE; StdCall; external 'lcms2.dll'; // FUNCTION CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; external 'lcms2.dll'; // FUNCTION CMSEXPORT cmsOpenProfileFromStreamTHR(ContextID: cmsContext; FILE* ICCProfile, const char* sAccess): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenProfileFromMemTHR(ContextID: cmsContext; MemPtr: Pointer; dwSize: cmsUInt32Number): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsOpenProfileFromIOhandlerTHR(ContextID: cmsContext; io: LPcmsIOHANDLER): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCloseProfile(hProfile: cmsHPROFILE): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsSaveProfileToFile(hProfile: cmsHPROFILE; FileName: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; // FUNCTION CMSEXPORT cmsSaveProfileToStream(hProfile: cmsHPROFILE, FILE* Stream): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsSaveProfileToIOhandler(hProfile: cmsHPROFILE; io: LPcmsIOHANDLER):cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateRGBProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY; Primaries: LPcmsCIExyYTRIPLE; TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateRGBProfile(WhitePoint: LPcmsCIExyY; Primaries: LPcmsCIExyYTRIPLE; TransferFunction: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateGrayProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY; TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY; TransferFunction: LPcmsToneCurve): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateLinearizationDeviceLinkTHR(ContextID: cmsContext; ColorSpace: cmsColorSpaceSignature; TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: cmsColorSpaceSignature; TransferFunctions: LPLPcmsToneCurveArray): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateInkLimitingDeviceLinkTHR(ContextID: cmsContext; ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: cmsColorSpaceSignature; Limit: cmsFloat64Number): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateLab2ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateLab2Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateLab4ProfileTHR(ContextID: cmsContext; WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateXYZProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateXYZProfile: cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreate_sRGBProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreate_sRGBProfile: cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateBCHSWabstractProfileTHR(ContextID: cmsContext; nLUTPoints: Integer; Bright, Contrast, Hue, Saturation: cmsFloat64Number; TempSrc, TempDest: Integer): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateBCHSWabstractProfile( nLUTPoints: Integer; Bright, Contrast, Hue, Saturation: cmsFloat64Number; TempSrc, TempDest: Integer): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateNULLProfileTHR(ContextID: cmsContext): cmsHPROFILE; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateNULLProfile: cmsHPROFILE; StdCall; external 'lcms2.dll'; // Converts a transform to a devicelink profile FUNCTION cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM; Version: cmsFloat64Number; dwFlags: cmsUInt32Number): cmsHPROFILE; StdCall; external 'lcms2.dll'; // Call with NULL as parameters to get the intent count FUNCTION cmsGetSupportedIntents(nMax: cmsUInt32Number; Codes: LPcmsUInt32Number; Descriptions: LPPAnsiChar): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsFLAGS_GRIDPOINTS(n: Integer): Integer; begin cmsFLAGS_GRIDPOINTS := (((n) and $FF) shl 16) end; FUNCTION cmsCreateTransformTHR(ContextID: cmsContext; Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateTransform(Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateProofingTransformTHR(ContextID: cmsContext; Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Proofing: cmsHPROFILE; Intent: cmsUInt32Number; ProofingIntent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateProofingTransform(Input: cmsHPROFILE; InputFormat: cmsUInt32Number; Output: cmsHPROFILE; OutputFormat: cmsUInt32Number; Proofing: cmsHPROFILE; Intent: cmsUInt32Number; ProofingIntent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateMultiprofileTransformTHR(ContextID: cmsContext; hProfiles: LPcmsHPROFILEArray; nProfiles: cmsUInt32Number; InputFormat: cmsUInt32Number; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateMultiprofileTransform( hProfiles: LPcmsHPROFILEArray; nProfiles: cmsUInt32Number; InputFormat: cmsUInt32Number; OutputFormat: cmsUInt32Number; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll'; FUNCTION cmsCreateExtendedTransform(ContextID: cmsContext; nProfiles: cmsUInt32Number; hProfiles: LPcmsHPROFILEArray; BPC: LPcmsBoolArray; Intents: LPcmsUInt32NumberArray; AdaptationStates: LPcmsFloat64NumberArray; hGamutProfile: cmsHPROFILE; nGamutPCSposition: cmsUInt32Number; InputFormat, OutputFormat: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsHTRANSFORM; StdCall; external 'lcms2.dll'; PROCEDURE cmsDeleteTransform(hTransform: cmsHTRANSFORM); StdCall; external 'lcms2.dll'; PROCEDURE cmsDoTransform(Transform: cmsHTRANSFORM; InputBuffer, OutputBuffer: Pointer; size: cmsUInt32Number); StdCall; external 'lcms2.dll'; PROCEDURE cmsSetAlarmCodes( NewAlarm: LPcmsUInt16NumberArray); StdCall; external 'lcms2.dll'; PROCEDURE cmsGetAlarmCodes(NewAlarm: LPcmsUInt16NumberArray); StdCall; external 'lcms2.dll'; // Adaptation state for absolute colorimetric intent FUNCTION cmsSetAdaptationState(d: cmsFloat64Number):cmsFloat64Number; StdCall; external 'lcms2.dll'; // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed FUNCTION cmsGetTransformContextID(hTransform: cmsHTRANSFORM):cmsContext; StdCall; external 'lcms2.dll'; // For backwards compatibility FUNCTION cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM; InputFormat, OutputFormat: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; // lcms2 unified method to access postscript color resources FUNCTION cmsGetPostScriptColorResource(ContextID: cmsContext; RType: cmsPSResourceType; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; io: LPcmsIOHANDLER): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsGetPostScriptCSA(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number ): cmsUInt32Number; StdCall; external 'lcms2.dll'; FUNCTION cmsGetPostScriptCRD(ContextID: cmsContext; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number; Buffer: Pointer; dwBufferLen: cmsUInt32Number): cmsUInt32Number; StdCall; external 'lcms2.dll'; // CGATS.13 parser FUNCTION cmsIT8Alloc: cmsHANDLE; StdCall; external 'lcms2.dll'; PROCEDURE cmsIT8Free(hIT8: cmsHANDLE); StdCall; external 'lcms2.dll'; // Tables FUNCTION cmsIT8TableCount(hIT8: cmsHANDLE): Integer; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetTable(hIT8: cmsHANDLE; nTable: Integer): Integer; StdCall; external 'lcms2.dll'; // Persistence FUNCTION cmsIT8LoadFromFile(cFileName: PAnsiChar): cmsHANDLE; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): cmsHANDLE; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SaveToFile(hIT8: cmsHANDLE; cFileName: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SaveToMem(hIT8: cmsHANDLE; MemPtr: Pointer; BytesNeeded: LPcmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; // Properties FUNCTION cmsIT8GetSheetType(hIT8: cmsHANDLE): PAnsiChar; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetSheetType(hIT8: cmsHANDLE; TheType: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetComment(hIT8: cmsHANDLE; cComment: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetPropertyStr(hIT8: cmsHANDLE; cProp, Str: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Double): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetPropertyHex(hIT8: cmsHANDLE; cProp: PAnsiChar; Val: Integer): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetPropertyUncooked(hIT8: cmsHANDLE; Key, Buffer: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8GetProperty(hIT8: cmsHANDLE; cProp: PAnsiChar): PAnsiChar; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8GetPropertyDbl(hIT8: cmsHANDLE; cProp: PAnsiChar): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8EnumProperties(hIT8: cmsHANDLE; var PropertyNames: LPPAnsiChar): Integer; StdCall; external 'lcms2.dll'; // Datasets FUNCTION cmsIT8GetDataRowCol(hIT8: cmsHANDLE; row, col: Integer): PAnsiChar; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8GetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetDataRowCol(hIT8: cmsHANDLE; row, col: Integer; Val: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetDataRowColDbl(hIT8: cmsHANDLE; row, col: Integer; Val: Double): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8GetData(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar): PAnsiChar; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8GetDataDbl(hIT8: cmsHANDLE;cPatch, cSample: PAnsiChar): Double; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetData(hIT8: cmsHANDLE; cPatch, cSample, Val: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetDataDbl(hIT8: cmsHANDLE; cPatch, cSample: PAnsiChar; Val: Double): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8SetDataFormat(hIT8: cmsHANDLE; n: Integer; Sample: PAnsiChar): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8EnumDataFormat(hIT8: cmsHANDLE; var SampleNames: LPPAnsiChar): Integer; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8GetPatchName(hIT8: cmsHANDLE; nPatch: Integer; Buffer: PAnsiChar): PAnsiChar; StdCall; external 'lcms2.dll'; // The LABEL extension FUNCTION cmsIT8SetTableByLabel(hIT8: cmsHANDLE; cSet, cField, ExpectedType: PAnsiChar): Integer; StdCall; external 'lcms2.dll'; FUNCTION cmsIT8FindDataFormat(hIT8: cmsHANDLE; cSample: PAnsiChar): Integer; StdCall; external 'lcms2.dll'; // Formatter for double PROCEDURE cmsIT8DefineDblFormat(hIT8: cmsHANDLE; Formatter: PAnsiChar); StdCall; external 'lcms2.dll'; FUNCTION cmsGBDAlloc(ContextID: cmsContext):cmsHANDLE; StdCall; external 'lcms2.dll'; PROCEDURE cmsGBDFree(hGBD: cmsHANDLE); StdCall; external 'lcms2.dll'; FUNCTION cmsGDBAddPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsGDBCompute(hGDB: cmsHANDLE; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsGDBCheckPoint(hGBD: cmsHANDLE; Lab: LPcmsCIELab): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsDetectBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsDetectDestinationBlackPoint( BlackPoint: LPcmsCIEXYZ; hProfile: cmsHPROFILE; Intent: cmsUInt32Number; dwFlags: cmsUInt32Number): cmsBool; StdCall; external 'lcms2.dll'; FUNCTION cmsDetectTAC(hProfile: cmsHPROFILE): cmsFloat64Number; StdCall; external 'lcms2.dll'; FUNCTION cmsDesaturateLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: cmsFloat64Number): cmsBool; StdCall; external 'lcms2.dll'; END. lcms2-2.5/utils/delphi/lcms2.dll0000755002406300000240000121600012163060730016050 0ustar mariamausersMZ@ !L!This program cannot be run in DOS mode. $Ysssrf>srS,srgτs ^ssOsrcsrVsrWsrPsRichsPELPN!  pp@`$܏(0X@Њ@$.text `.rdataq@@.datalnH@.rsrcX0@@.reloc%@&@B݀p@݀8z ܰ8 y ̃݀ $yT$py \$$yL$D$  $݆% 5  ܮD$V WɹBD$t$  D$ \$$   \$,  x  p \$4_^U3ĉ$ Vܢ`W݂`Bru |$EBt$JL$ \$8݂`r JL$(\$@݂`r(JL$0\$H󥋌$_^3^]D${ ;Dz*{  { ݔ$ p3s݆( ܎H\$ ݄$z+55 Au)55Au"5eAu$505 5ݜ$݄$݆ܶP܎ atݔ$@Ct\$݆X.tT$0ܶ L$݆ݜ$D$D$@sL$ ݄$ D$(sL$\$(x݆8s-phsL$(ݔ$L$0ݔ$ܴ$@xs Bt$@ݜ$_^4̃$݄$V5WT$݆P܎ #s܎ݜ$݄$ T$ pzp݆( ܎H\$x݆8r-phr\$D$@rL$ܼ$`r|$\$݄$ܶ@X\$D$ T$ q\$D$ oD$AzJD$PHD$ @%80ݔ$ݔ$FD$PHD$@ (ݔ$ݔ$ɹBʍt$0 ɋ ݜ$ ݜ$  ݜ$_^$́ 3ĉ$$$ܰXVWB$0|$3\$Dx%Au8\$pD$L$F\XrBt$󥋌$$_^3̋V D$TVWɹBD$Tt$ D$d\$<  \$D   \$L_^U3ĉ$ BV܊`WBu |$rEBt$ܢ`|$8\$ r ܢ`|$@\$(r(ܢ`|$H\$0󥋌$_^3U]D$$VWɹBD$$t$ D$4x\$ p h `\$ X P H\$_^USVuWhpVK؅u _^[]E h@[@[@ ݛ@ݛ@0ݛ`@(0tPHt3Htݓ ݛ Rݓ ݛ 8ݓ ݛ ݛx ݛ p ݛ(ݛ8ݛPT$ݛ@ݛX݃`8Dz ,ݛ`D$BݛH$ /B$ BPBB$ BB󥍌$ Qb B_^[]̋D$t PhP[JUE S\$V@W\$@B$ݜ$($ 5]$ BPB$ B󥍌$ QùB$ ZEB$݄$݄$X݄$X_^[] UE Sݜ$V@Wݜ$@EBݜ$$$ ,EBP$$!B$ UB󥍌$ Q,B$ EB$݄$݄$ X݄$(X_^[] ̃ t t t3ø̋u#t"t't߃]w3V[u uøVgYut3Qt@8t;jPD$PZD$ D$<\uYQXt|$:t3Y̋htWVZƆ ËD$PV~Zj\VƆoau3Ë+΁s+R@WPIZ j%VTXú3ĉ$$ V$ $PQT$ hR^D$PQƄ$Ph|$$hQT$,Rhj PƄ$;džG$<8^33N̋;D$tPW(ø̋tiPTQOtW~(HQbdž džËtASUl$ VW;+‹PUBty^~;}_^]3[Ë_^][hD$agD$ SVݞWPOVt=0L$D$݆ hݞRVuÃ.ux3\$PUt?I0L$D$GD$ h\$IRUuW |$܆ݞP_E-u+u3Q|$ t PP;VQ;u_^t PR;SP;[̋WPQ";t4jR;uWP];3_Éx_VWy+;vBu džP 9sdžX_^̋ÍP@u+VWxD$ bt OWSVM _^Ul$Vt7tKt7;#tFPSY7t 6u^3]Åu^]Åt7N QU.7tvu^3]QSUl$V؋D$WU|$u|$HD$uL$htQ_^]3[YËT$RFu3D$PF D$8u0F6ttw?t ??ut7Ft$\$$L$(NtT$Rg_F^][Y_F^][YQjjRPD$jjjQPD$̋iL3҉ ̋D$Vt$ ;rup^VhP ^SVW|$hW73;u_^3[iݞ^dž džf hVfn3 $IhlRlr38Pnr_^[Vt$^Vt$D$ hPVTJ Ɔ^̋D$u38tVt$jPj PV^̋D$ u3 8tVt$jPj_ PD$Vo^ ́3ĉ$݄$V$ W$$PL$Q?jT$ Rj PV$_^3>́3ĉ$$V$ W$PL$ hQ> jT$ Rjd PVv$_^3G> ̋D$ Vt$jPj PD$V-^ SVt$ Wj\$ |$_^[t D$@3̋D$L$PQt PQVWu^hV|RhVLJ  &uhV_^ tL$3Ul$VWu@;~h,V_^3]ÃtV_^]ËD$S\$PD$ [ VWgudhVQPAhV7PAH@ɃɋuhPV[_^;};}t ˋ3Ul$ VWu0u_^3]ËL$;NxJ;,x(VL$_^]PUhV_^]PQhV_^]SWuÍP@u+‹~ N t%PWjSK;tDhjj3 _[Ã~t*;Nvhjjy3 _[ËFWSP< ~_[̸3ĉ$$ V$ $PQT$ hRID$Ƅ$$^38:QSUl$Vt$W0 \$< $\$C8#uQ4{t+Ph<U ? u |GGuո@ht$؋j3|$uOQ3ɋG)Gt`Owz$7PhDU @PhHU /P>PhPP>PhX W PRh`UU0\$\$_^][YQL$hlQ _^][YÍI]7n7777QVWD$tsUJ@hWUP>3~3d$D$  E;0tG;|Ѹ]_^YQSVWt$hSPy=D$ U39ID$ŋu-j SG<tt$2+Ët$J0;tt$E;|D$@D$;R]_^[Ỹ3$D$D$D$ D$D$hPC$uVt$W39>v5SWV5L$ QVjƍ\$RuG ;>rыD$ [PJ_@^̃L$3Ul$$VD$D$ D$D$WD$D$ L$L$D$;t ML$D$t$$39v1SWVT$RVƍ\$SPG ;>r[L$_A^M] QSUVW3VP tCt>t9t4ujWstiVGEm u]j 4L;tWPhVu_^][YhV\_^][Y_^]3[Ý3ĉ$SU$$V3W\$\$U|$ Z9u uBj pD$@;PQh8U3ۃtL$;|D$\$ th |$$[tBT$D$RPߋ1t(D$U|$ uB3$$_^][33Á3ĉ$SU$VWg\ S J @$?U%hl$jtQ3ɋ73Uhl$$tыRtjPL$ Q$= j|$\$Ƅ$4uR3ɋ؃\$d\$UDh$29Ct039QRj  PUD$,9$j;W6؃tCj,WCCFIH;r8 tƍP@u+€|0 D0u H8 thWfDhVYD?>jVWG PUD$,WJU:$_^][30ĐÍD$P$QhU5ʍT$RhU 뵍D$PhU hU됋=o?U==?VW?t+u싆 t( t# ttGo u_^USVu FxV9 $t,HtV3^[]ËtVt9HF~uQtzu샾 uQVV/hV"uRVV93^[]́$3ĉ$ SUVFD$$3Wt$D$$9|$I3Fl$ 9oG\$h0SK"/D$9Gd$|$؅tghL$4SQ_8D$< Ƅ$/P@u+yAu+;wD$0Ӌ+ъ @uT$UR\$8D$L$@D$;Ar\$hS!t ;$D$|$EtvD$390vlD$T$j|$0t8D$,HQVUh$T$@hR2D$8L$(PD$4Q\$P T$D$F;2rD$L$l$ t$@D$;A[El$ ;oKD$$@D$$|$;T$(V$0_^][3a,$hVSUVW33۽ |e~Ճ~QD$ȃw&D$Du us3 < r <w 3B;|_^]3[Ãt_^][ÍIDDDD́3ĉ$VWh,W7u*Wh0jP$_3^$3;+ČVhD$jP9Vq?uƍL$D<Q$_^3*Č̋D$UW|$P~u_] S\$VSt_OQSD!T$WRP5hhQ4}ƉIuVo^[_3] P3S~M!^[_] UW|$su_]D$ VPtnh,W,6t?hWP"4 }Ƃu#Q=V^_3]FP=uˋ^_]Vt$&L$ ^tVt$W 3Ʌt$Auɋ 3t q4 @uL$_^SUVW39~0$tL$QPtG;|_^][Ë_^][SUVW539~!$%tG;|_^][Ë_^][SUl$ VW39~"IWUPtG;|_^][Ë_^][̋D$PD$S\$Vt$ W|$|_^[ ̋D$ L$T$PQRt P#; ̋D$ L$S\$PD$ QX[́3ĉ$݄$SV$$PL$Q&$($$RP\$ $ ^[3&̋D$ SVt$ P؃y^3[ L$QxWc_^[ ̋D$ L$T$PQRt P: SUVt$Wl$Uy _^]3[uC\%h0Uu+oyD$PhDV _^][L$Qx\$ WP_^][́3ĉ$݄$S$V$W$$PL$hQ*T$ RSWV$ _^[3$SVt$ W|$u_^[ t$thPV'/ Ɔ_^[ ́3ĉ$$$V$W$ t8uPQVuHL$ QT$ R$QhdPU%uօt?tWT$R6uD$PV$ _^3#̋D$u(D$ ffƀVt$+ЍI @u^QD$@u3Y8Az ظY%` @\$D$Y̡`t$9t u3̃,V  B`B`A`\$ A`\$("\$@AbH\$8AbH\$0T$\$ $VT$D$ F\$$PD$\$0T$$VD$L$4\$D$8\$D$@$Q^,́VW|$@$PL$DQu _^ \$T$@R\$L$$@$P\$ QD$ \$T$D$(R\$D$$D$4P\$ 9L$ QT$f~f~u|D$h383ɉWf@u3fGufG%` @\$T$fGPL$PQT$tR2D$L8@` @u3+u ظ\$D$D$PfAz3*u ظ\$L$D$TfGAz3*u ظ\$T$D$XfGu 35Az ٸ\$D$d$hfG@ SjL$QWRSjD$`PL$TQRrCPL$PQRD$hPܫD$hT$XD$PD$LD$TS(AuKc(Au8@Az3` @Puظ` @(` @\$L$fAz3*u ظ\$T$D$TfGAz3)u ظ\$D$D$hfGu 30u ڸ\$L$jT$4RfGCWPL$0QT$R1SAu[؋L$|_^[3̸b]UL3ĉ$HEMU S]Vu D$ FW}L$T$=g3҅t*EL$P+D$D$DP0DPB;r Qk=KYMCLQk=KYMCQk=rtrpjjWD$j0T$$jRxL ID$0*DP3.5T$HL$T$D$QRPSL$`QVWD$ T$D$L$RPQT$\RӋƋ@(D$,jWh@jhJPD$ Dj"PWK D$$|L$Th@jh@Qh$@RW D$(tSD$P|rL$\$8jjjhKYMC;PWHtL$VjQejT$$Rh[V賘D$ tPD$(tPD$$tPD$,tPD$0tPͣD$_^[$H3 ]ËD$L$T$PQRSD$`PVW(_^[$H3 ]Ë$T_^[33 ]QUl$E=t]L$S\$+VL$ +߉l$L$ >u3tu 1QJju3L$u^[uT$ QhjR3]YËL$ T$QL$RT$QL$RWUQ҃]YËD$ UhjPk3]Y̋ `3t>S\$ UVW|$+;D$st),ti*@u_^][ ̅u`GËOV%uh %Iu^ËGhOQVR `ƆG 5`^SUVt$W|$P{Ss;u#GFt=RXSP;tP@Q5+_^][_^]3[SVt$ V{"jjV $t^[WVY"jSV#_^[̋D$= v3P̋D$VW|$WPu_^WjVs _^̋D$tPwYËD$ = v3PD$ P#"Vt$ W|$υt)3;s;r;r wD$ QP_^_3^W|$ v3_ËD$VWPtD$t WPV]  ^_̅uBeeeef`fVptMPtFHt? H5t H t @$t^3^̋D$L$PQ̋D$L$PQ̋D$ L$T$PQR ̋D$ L$T$PQR ̋D$tPD$P̋D$ L$T$PQR VWuPjSKtWSu VS_3^É~_FF ^Vjjt"S3F[u VP>3^Ë^S Vst#W~ t PP VQu_SR^[̋ SVWpBHz+X;v ;sƋu_^[ËH Aq_^[̋D$ it́3ĉ$$V$ $PQT$ hR$ D$PQV$ ^3QP:jL$QVD$ FWuG _VhCu^_ËG~QWRFPQdVTWR5^_V73Ʌ~3+W;t A;|^Ë^W=tIuu3_Åt_̃VUl$ D$hjP@ ]3^S\$WjS73;;GG jhUS6Gt|jUS&Gtlo GjVSGtL|$(wt~3~T$(fBOfA@;|t$$jUSG u;GtPSGtPSGtPSWS_[]3^D$nd+t$$t$ t$}uEjP3ҋw'O T$OjhEPQ }uEtURPSXODd WDdu3tOD$D$\$@hD$;D$ \OWjQ&_[]^ËT$hjRL 3^UE lV=$_][3̸豧ĨÁ3ĉ$$SWP3KhsmclD$=N,QD$ 0V0RD$$#D$$F4PN8QD$, VD$,RD$4PhpscahTFSMD$@N@QD$DVDRD$HD$HFHPNTVPQD$PRD$XPND$> D$@wl$@|$@D$@Pl$BaM _A,^] ̋D$H.VW Qw(D$ D$ y 5_^UQEVPtM ouVu3^]^]UQSVW}Wt/]E SPWtWtwtuV3_^[] dž\ _^[] ̋D$L$PQjUVW}Wt;E PW_t%M9wudž\ _^] xuV~_3^] ̋D$L$PQjUVW}Wt(EM hPQW6t uV3_^] _^] ̋D$L$PQj̃(3ĉD$$SUl$4}h]VWT$D$ D$+ōD$$ $T$Pvi {|$>D$(F>L$9D$$ 0QP|$уkUWR贖WL$D$jQWP҃4D$ WPSу UWRC+D$ptp PQS҃ lrD$ttuEQhjPTPSD$4MD$OU,WT$(GQRSWЃtK|$K+ωpS tUD$ D$@D$ ;Eh^_^][L$$3Ԟ(ËD$,t$,ERhjPfL$4_^][33蜞(UW39ohv>SVt!3xpE;ohr^[_]Ul 3ĉ$h SVuWh` D$VPP VP1>tmj2t_VT$tNE _t]'tStVT$u2Wh` L$QVϞ 3_^[$h 3c]h` T$RV裞 Wj$t _#^[3-]SVt$ WV\$hSPcu_^[WVW#u S藹_^[Vt$WVdL$QPIu_^WVgW_#^UVuWVM uQV1M_^] UhRQP=u_^] WVW<_#^] SUVt$3W;u 3_^][9\ tPV\ 9^hvC<t.tNHV,PPQP҃ FQP趒C;^hrËtP#NVQ蕒_^][̋Jr3t;2t @;r3ø̃3ĉD$SUVt$,W|$,/Ήt$4؅<t$_^]#[L$3˚PUL$$҃-mD$t|UtpT$ tcultX OHW,L$PQT$RUP@Ѓ<u:D$t$OWQhj R̒_^]3[L$3D$l$;Es,D$t$L$UQORPh(j Q|<L$$_^][3譙SWy_3[Ë _[U43ĉD$0ESVu 3W}t$ D$$΅u#kx\l3_^[L$03] H؅xK<tyt PGPc tXOHW,P<PQP҃9_hd|+GjdhjP]3_^[L$03蔘] KOh3Ήkt$(u,GRh`jP 3_^[L$03A] WKFXtL$$Q$Ѓ v؋T$(uIƍt$4#D$ t$,ORD$8PhxjQ莐3_^[L$03ŗ] i3;tT$  TlOHW,L$(PL$$RP QP҃ <uIƍt$4脐D$ t$,wWPL$8Qhj R3_^[L$03&] L$<_^[3̸ ] SUl$VW|$<uTl$tlD$ ;s؋QPЃSjUPуu5_^][t2\$tL$ ;sPRS褗 _^][UW D$tMD$uWP`T$ hRPWP؅t huS_^]3[GFO,RSN)t؋EL$VPQSV҃StЃS_^][Vt$ W|$ D$Pu_^L$S\$DŽtlt$VDŽWQR|<[_^Vt$ W|$ D$Pju_^ D$T$3ɉtl<_A^ ̋L$SW|$ 3y_3[_[htptwWUȅu-}PHVP NHV PNVW|=s WO=rtnmtQAVQ FAIV FNQVWhdahcSt_^YW:S=sS=rtnmuhtptwSȅuWs:_^Y|WM_^YUl$VWhZYXrSNhZYXgSAhZYXbS4ȅtktgtc\$\$$U8A\$EG\$F$P8A\$0G\$F$U8_^]_^3]̃SUVWShCRTkSl$t>jjV(t.St= baLuwT$RjVD$踔؅uWL(3_^][jhjjVl$(\$,\$0uPjW\)D$PjVPjWF)S@_^][ÍL$QjVPjW )jhjjVPjW)_^][̃d3ĉD$\SUVWSvD$ P*D$ hCRTr S\$(D$0\$0D$8\$8D$@\$@D$H\$HD$P\$PD$X\$XD$`\$`L$h\$hhCRTgSt$hCRTbSl$ D$t]tYtUjjWX&t0L$QjWPjV'jT$$RjjWPjV'_^][L$\3軐dËL$l_^][33覐dSWVH؋D$ PV[P&Vmu_3[= baLu6"PjWm'_[= ZYXu:"PjWQ'_[QSU,VWV= baLu1\$PjW"V= baLuPjW"_^][YV=YARGu _^][Y_^][SUWVg؋D$PVzP!VlVu_]3[= baLu = ZYXuPjWs! baLu$PjW[!_][Á ZYXu&PjW=!_][SUV4xWW=lcmnuD$u^YS3ۅUW3$pL$<VRWFPW WWhhcetWFduFNdnmdZF$ddmdKF(csedvF<tQr_VRP:x VQ1x^[SUl$ E] VjPwu^][ËWjMPQwFt039>v#ISP贆NV<t G;>r_^][Ã~t 39>vF<t KR舅G;>rCMPQwUVR|w_^]3[U4S] VuWjh@hhSShtsvcV|$l$$D$$ /|$@. /IuŋL$,|$ ;s ыB;rl$0L$(jQWssFuT$Rb_]^3[ L$(3|n+ՉT$ +A_ET$,<T$,n@*n@ \*V\T$ @nЃ *IuƋl$0L$(;sDFG;rD$_]p ^[ D$ @ @D$ @t́3ĉ$$SU$V$^ W~ L$QPGP$RPtL$ Qҋ~$$Pj$(_^][3/{SVWt|t3;w Nu_^[_^3[S\$VW{ jPqu_^[ËONW V tOɃ tQPRqGW PQ RGQ軜F_^[VW|$ w t#t PPdqF輝O QRPq_^̋D$ SUl$W|$jh@hhUPhtulcW؉\$u_][VjWpuS ^_]3[L$D$s ݉^F tcjSWypuT$Ri ^_]3[L$$t3tf,Af,B@;rl$ jPD$ UW|$,艛FuL$Q ^_]3[D$^_][̃$3ĉD$ D$,T$0L$(Vt$8D$D$D$ D$D$D$D$D$ D$D$< 3T$TD$Ty L$<$NfDtZy‹t$H>t3~L$4ffTDx@;|D$@PL$|QT$`RT$X Eu%>t 3~L$4If|Dxf<@;|D$4D$8@D$8;D$D*$|_^[3̸t]Ut3ĉ$pEM USVp L$ NYWy AT$0D$|$4|3_^[$p3s]}ߋn3ɉD$,;tΉL$ L$K\$(L$\$(T$xbD$t^3|8L$W\hD \lD \pD \t;|;}L$ ɋ@\t;|D$0PL$|QT$@RT$0 Euf>ta3|:L$WDxD|\Dp\Dt\;|;}L$ ɐDx@;||$ D$D$@D$;D$,$|_^[3̸q]Ut3ĉD$pEMS] VuWD$HL$Pr3_^[L$p3q]΋aD$LtD$D~pNt$Tt$T|$Dx5 3T$XD$Xy $4NfDt^yˋT$PRD$`jPT$T nD$D@D$D;D$L|L$|_^[3̸p]Ut3ĉD$pEMSVu W}t$$D$,L$(r3_^[L$p3p]ϋmD$0tD$O|$4|$4T$xV\$8+\$$436ʉL$ D$ Ѕy $2D$(OD$ 58\3yt$$L$(QT$uD$  ȋ@$uD$ A$@$p D$ H$] W|$3ɅuD$t__ T$ +t!Ju,3ɋыȋ@$utB$H$@$ȋD$t ׉_ Q_ ̋D$VW|$ ?u8u HOPW0tV4t!PjWv$u_^_3^̋L$T$A$Q$̋D$̋L$ 3t d$I$űL$ 3t d$I$@űD$L$T$HL$PT$ HP z %̃!$$\$@a$$D$\$@a$$D$\$D$z\$D$U3ĉ$( S]\$CVu W}|$t$tt3_^[$3"f]{uMu ٔ$ٔ$ٜ$ٜ$Aٜ$Aٜ$uG D$ٜ$D$ٜ$t$|$S$P$QǍ$D$ A3T$ 9Kv$+A;Kr3$ d$ل$ٜ$ل$ٜ$ل$ٜ$ل$ٜ$S$R$Pل$ل$F\Pل$ل$\hل$ل$ݜ?D$L$(QɍT$\R\$0`\$8`D$HP\$D/ل$3D$@\$d$ٜ$ل$D$H\$d$ٜ$ل$D$P\$d$ٜ$ؔAu ٔؔzٔArƋD$@؉D$؋$_^[3̸qc]̃ 8|$ 3l$ hD꾤xl$0΋33|$@*K 33P`Kߋ3ӉT$P(3T$,.ph4t$ 3~(0l$<ʋ33/' t$p 33t$(+0ߋ3t$p3t$8t$*h$ 39ʋ33l$Hh0@<> 33|D$33\$ÍeV ׋ 3D$D")ʋ 3D$0*C  3D$ 8# 3D$$9 ׋ 3ōY[eʋ 3D$(0  3D$,8} 3D$0] ׋ 3D$4O~o 3D$0,  3t$8>C 3|$<N  3|$@~Sʋ 3|$D5:  3Í0* 3D$HӆD$PًH ʉHHΉHH _^]H [KF uVWL_^3[_^F^[̅u3ËFWt<;rFWPQKu3_ÉF~_̅u3ËNW< Ǚ+;uN PQRSKu3_ÉF ~_̅tQ3~I f9quf99t @ ;|Ul$Wu_3]ËCV;C| _t:t$y+K+K;stS+S;rCsu^_3]ËL$UQPTCk@C tCS @lCK fT$$@fTCK @f<^C_]̋D$P@uSU+VpD$Q轆T$P譆\$ȉL$u^]3[WjVRI3t7tL$ ffG@;rD$P 6WQ WRI_^][̋D$SVQ1ЋD$Q!\$ u^3[L$t2VDQPT ^[Vt$u3^FWPQtF9G|qW tjN tc@PQRISNOF uGPR{HGt/FGGt"NtVRQPSF G_^W_3^Vt$t)F t PPHFt PQHVR~H^̃3ty9G~tUVw~2O f)f;l$uufl$f9itG@ ;|܃u3ҋO RtffL$tfPfL$ tP@G^]ÅtffD$tfQfD$ tQAG^]QD$ WQD$ЋD$Q |$ u3_YSVjPRT$R3tT$ |$ t:D$$u ^[3_YJ;sP3Ʌtf9Nu9N9A;r:^[B_YQD$ WQD$iЋD$QY|$ u3_YSjPRT$R3F[t|$u D$_YL$tVt$V;sqVPWPƃ 3f GF^_Y̋D$WQ҂ЋD$Q‚|$u3_SL$QPRj\$ [tߋT$ R茂T$fD$P{L$f2AB_̅u3ËFWux@ <wNPVTi&PQREu3_ÉFP~_VW|$ jXW"Eu_^~T|$FP9~s y9~rD$j!PN QXT$(j!RF-PXL$,_FMF,N^Vt$FPt PFTPDNTVQD^W|$u3_GWTSUV_-So UPQR&u^][_F;GsN;Orj!V URNj!F-SPNONGPi&NPRPQN$^][_Vt$u3^@;Fv Dt3W9Fv0T$SIu3 B>^Pi@f{;Fr[D$u3~Pi&f:u3H~Pi&f:_t@VPi&fD$ t8hPi&FPPVVPi& Ƅ^NPi&^Vt$u3^WV|$;r_3^T$ti&FP @BuT$tF +А @uT$tF-+Њ @uD$ tVPi&jQPL D$$t Vi&NPRRPL _^Ul$u]SVWU3~!3EPL$PQ-?tF&;|_^[]_^[]̋D$H Q̋D$@ PUUE8H Ƀ V@u31u ظ%` @\$D$;rITPhjQB^]ËQPi&T$U D$qPt$^D$ZIPD$D$Z]UUE8H ɃVW@u31u ظ%` @\$D$;rITRhjQB_^]39Av-u i&yP<|$@D$\;Ar_^]̃|$SWt %~&V-PFTh%h%SWjh lcnP_[̋D$H\x lcnt3@ SW|$3;u_3[wUl$Vj U7?;u ^]_3[j0WUn;v3N\$V\(N\,0Ou^]_[SVt$ 39v@W3FD$tPoND(tP^VD,tPMC0;r_Ft PFP>NVQ>^[W|$u3_GSj P5>؅tWj0QRa>Cu ST[3_GCU3 9/V3IWKDjPT1RHGKGTKT1GSLjQD2PXHOSDD2OT$RKD1$WD(PKD1(WD,PKD1,E0;/_^][_Vt$jVS=u^p^S\$V3tSWIFtPFtPF t PCPe=Ft KPQT=S>VRH=u_CSP7=^[̅u3DPQL$ Q4=VW|$ GjPu^Ul$V39u^]Wz$J$t$9ju9_u|>u_^]SUV3dh x2l l2x S x2l h 2 4 4 2o S 2 4` t^][̋D$fT$f ̃3ĉD$D$$S\$$UVt$43WD$9n~6D$+Í~0D$ D$WQPSE ;n|FTN PFPQT$ R3 9~~-IV\NXRT$?RV ЋRG ;~|؋L$(_^][33CVt$ F W|$ PW<:NXQW2:V\RW(:VW!:_^S\$Vt$Wj`VS:u_^[ËFjPS9G NVXQRS9GXFN\PQS9G\_^[Ul$Vj`UB9u^]3ɉ~^~+FT$u P , P RtA;|؋D$NjFT@tQUFP 9jSUF 8jSUFX8F\3~9L$uV\ NX,N\N\NXRt@;|Nj^]U3ĉ$M8SVu W}W3t$|^rY\$ YD$ \$ \D$ \$ Y\ D$ \$ \D$ \;rt$M;sA\$@D$\;rW؍D$\PL$ Q;39Ovo@` @8DXAz3*u ظ\$T$fNA;Or؋$_^[3̸i@]UQSVW؅u 3_^[]RJ3tPStF;r_^[]U4MytulcQ SVrWT$thjP8 3_^[]ËN0F0y T$N4D$8T$0F4y PT$N8D$\$ F8y PT$NL$,+L~D,PQQfD|,G;|$r9l$vL$|$,fD$ tO׹3tY\$$T$L+IDPE sT LRW%QWfDtPz@F;t$rӋ\$tt$$|$LfD$T$PSL$TQRD$<$_^][3 ;Ā̃3SD$D$D$D$ D$(UVWzReT$8eRPQhȃRL$(oh|$t9[ KW QhRL$$ @ h@EhEPhFWyrSHW QhRL$$ @ h@EhEPhFW=6VF|$ O PQ腡PjWlD$@jjWhGWVT$$:_^[3̸&]̋D$t PD$P̋D$L$h<PQ̋D$ L$S UVqIW ϋ  Tˋ(   ݋ ݋, + $   0 * y3 @~@y3 @~@y3 @~@H4 L$f1X6_fqfP8 ^]fA[QV3t$D$Q5\$D$$W9 P @$:M9Ft$|^ỸUl$ V3t$ D$ Q H \$D$$UE9\$ D$ 8@t_u31Az ظ%` @\$D$i f wCu32Az ظ %` @\$T$fwFt$ @ ^]̃ D$$SUVW:|$ O h<Qt$ u_^][ ËW D$$U8]DL$$y2T$$z D$0Q4 lT$4BP6VL$4QR8 @t$, D$ P @$757KuL$u3( D$,u$ P @$76F|ǃ|$t D$4 D$ hJhJUhJPx_^][ Ut3ĉD$pEMUD$SȃxVWT$(M x92T$RD$0PL$(QT$RhtsvchftamhftamhtsvcjVt$LԞ(>D$ P/T$,R#yPQT$8RD$0P3 t 9_uNVF QRPt$L$QPjV蛷uWN RD$4PjjQ葢PjVxT$R讳PjVet$D$MUPE QRPL$(Qt$,;T$RSȋD$PGT$ @U@IRWPRD$0=RLC4"=RLC2t =RLC3=RLC5u=RLC9 =RLC7=RLC8u¸=RLCAu =RLCE:=KYMCt~=RLCC= YMC=RLCDr =RLCF=YARGt = SLH=5HCM-M- baL+- += BGRʷ$   ǣϣףߣ6̊D$L$L$D$fD$̊L$T$D$L$L$T$L$D$D$̋D$L$T$ HL$ PT$ HL$ PT$ HL$PT$H jjD$ PD$Pуt3D$tT$jjD$ PD$Pуt3T$t D$PfS\$ UV3Wt&|$l$|$tWjUtF;r_^][ _^]3[ jjD$ PD$Pуt3Vt$ t T$R^UjjD$PEPуt3]E tT$ $RQP\]VjjD$PD$Pуt3^t$ tT$RP^pzAhQz)QzAYAY{U3ĉD$EVu jj L$QP҃t3^L$3g]t?D$PPL$ QP^T$RP^L$^3̸ ]̍D$PD$ jPH @D$PvT$ȋD$RjP L$H @SUVW|$3t\$l$sPUtF;r_^][ _^]3[ ̋D$PL$QD$ D$ jPH @̋D$PD$ D$D$PD$ jPH @UEM PQT$R$PE jPH @] U@E $iPSD$ȃlJBBB ^̋T$VPt$fF JQfFBPfFJ QfFfBf@QfFlfBQf^̃3ĉD$ D$jjL$ QP҃t3L$ 3D$PwL$ 3̃3ĉD$D$Vt$PC L$QjVD$D$ҋL$ ^3RVt$VЍH+uA^v3^jQL$QVH@^VW|$ WЍp+u_F^v_3^VL$jQ, T$RVWЃ_^́3ĉ$$ V$ $PQT$ hRy3^$3GË L$QPVҋ$ ^3̃= u 貺 D$$Vt$W>ppca~F=HepmwStH=Htniw-t"=Hmrft=Hpniikd)[=HmemuGL>=Hgatw)t=Htpot=Hrapuy茻蕢L=HpytuYt&v =_^hljj赺 _3^FhPhjj蔺_3^Phjj{_3^VW3跷33i3貓3343ͺ3fѡ95 td_5 ^̃$D$5H@$|$D$ D$ l$ \$ D$ l$PhVa <~h0VAhPh0 =t t u @8ú 3ĉ$SUVD$ PJhcsedV%htrpcV%3ۋ$\$$$;thL$QhhUwo;th$RhhVVohW;hW0hhW D$0PhW $<PhWD$@PPh WDhWh0W$$^][3J @\$@\$$hDV 7@\$@\$$h\VV htPẼwk$LPD$hP øPD$hP øPD$hP øPD$hP øPD$hP ÍI̱hVh4VhDVhhVthVihV^hVShVH@hV:hV/hxV$hVhV(W{SW($SMz$h0V_hDVHhHV39{vIC xQhLVmG ;{rhPVYhTVNh\VChlV8hxV-hTV"hTVhV @hVhVhVhVhVhVhlVhV@hTVhVhVhlVhTVwhVlhVahxVV@hVHhV=hV2_VWrI;ustM:+u1v>Fz+u v-Fz+uvFJ+3҅_^33҅_^QSUl$VW39|$~@\t8~(ËHPD@=thTVNDG;|$|_^][YU S]VW} tuf9ukCxf;r]f;wSCf;rJf;wEO$t$ T$D$tu_^[]ËT$ tE L$+f4f0Ju G;tIt$WGRPOWQRG sGOPQYWKG ;t,tWGRP3OWQR#CG Q39Z vE fXAwQC;Z r_^[]̃0SD$D$D$8H D$+ƉD$VWT$RWD$$C;r3ۅtRt$D$ +ƉD$ D$ 0QW҃tJL$(T$PSQWRT$@t0C;rƋT$ GRPHL$WQR:^][ Ët$ \$GVPt OSQ^]3[ ̃FS\$ UWjSP認D$[NjSQ蒍|$ %V҃3D$t%jV&jVE;r3tjD$+Nj߉D$$VЋT$D$4j+L$4UP L$4VQT$LV+ljE;l$(r\$(|$ VЋL$QVD$(҃ tX3t9l$ D$+ʼnD$D$(PVRt+MQVDtG;r؋T$RVЃu)|$ L$VQR葌t FWP背_]3[ËL$VQRlD$ NPQ^_][S\$VW|$CjPԋtL$VQSuSVR_^3[_^[̋D$ L$PQqËD$L$QjPR̸ ZYXS\$Ul$ VEjHPDu^][W|$L$QWf|$u*|$ jWT$RWtrf|$ujD$PWt[VWtPNQWtBVR^Wt/F PWt!N0Q^(WptV8RWbuEVPԊ_^]3[_^@^][QD$$PPVuYD$$4PVYU8Vu WjVZu3_^]jVFt}G\$${tG \$G$_tG8\$G0$C_^]̋D$L$QjHPRQD$S\$L$QSu[YW|$v_3[YUl$UVjjR;t,WFjFF VSЃ;tMVQI^]_3[YËT$ ^]_[YS\$V3WCN8PtF8tF8PtF8PtFIu|$VWgu_^[Ë SVWЃ _^[̋D$L$QjPR̈̋D$ L$UVt$jQVR=u^]SW3t݋D$SPtG;rD$_[0^]ËL$QUR8_[^3]U4SVW}3t&]E $P.tF;r_^[]_^3[]ËD$SUl$Vt$jEHVQ{؅u^][W3t4D$T$RP{t+L$D$y  XG\;r_u^][ËT$BSP^_^]3[U4SV3W9uvV}]  P@$譥|$>D$6 D$8l$8|$8D$8PSl$>qtF;ur_^[]_^3[]̋D$ T$ D$QHRQ҆̋D$L$QPR螆̋D$HVjQu3^ËT$ VRKtD$^̋D$ T$QR̋D$ T$ D$QHRQ2̋D$HSVjQ39؅u^[Ul$W|$ utOD$HWRQQt8D$WjVP҃;u Vhh>SE7;uSLtWjVRSЃ;tMVQG[^]3_ËT$[^]_Vt$FW|$PWu_^Ë NQRWЃ _^̋D$T$ QPBP̋D$ S\$s3[Ul$L$ QUru][W|$$;s _]3[Vt$VjR#7D$DNGPQʂ#WjVU҃;D$VhhP+78L$QVRD$(PUL$(QU|$(?D$(;ru3t"jjT$RUЃtVF;rD$(+؃FrFL$(QU̿t7T$(RU}t(3$jjD$PUуt*FCrT$$D$^_][ËT$BVPL$Qc9^_]3[̃\3ĉD$XD$`S\$lUl$lVWjDL$(jQD$D$$ jjhhS:w+ljD$ ju,\$ShR詁jD$ ChP蕁D$eL$QWR!D$/D$HjWQD$T$WRhhSs9L$?PQhhS :VUT$ RWUЃ T$ L$$QRUЃ tujU?tiFVU3t]\$UtLT$ L$$QBRUt7jUt+jUUt D$$PjCUу tD$D$tT$PBPj@D$jP hUu|$3~jhUhDF;|3t$$D$`jhWPуT3ɍGy@Ip rf,10 rfl1p rfl1p rfl1Out$l$\|$Ft$;dWUuT$RSU3u-3~DtPWF;|tWUWu3_^]LPD$hjP13~LQ!F;|_^]LSUl$V3tcItG yuV3ۅt"WHYiT$\$D$L$PQ袴t+C|F;r^][ËT$hDjR&v ^]3[VWu_3^Ått3;wOu3ҋ3_;B#^Ut3ĉD$pES] VW}D$,D$PS\$(jL$QSWT$RSDjSѰ4L$'D$<PD$GQPL$(t$L$0QST$8RS۱D$@PSȱL$HQS赱T$PRS袱D$XPS菱|L$`QS|iT$hRSiVD$pPSVC|$u2L$0Q"u$PGT$4RjjPPjVOVS\$$Q L$Ë\$WjVRrD$(D$$GVPq؅D$ jVSPу3t  ыL$$f@L$$;rGSPqt$(L$T$D$VQRPGPt5L$PjQWVRqD$L$ W\$PQR ut$V53_^[L$p3Oz]ËD$,L$|_^[D$3/z]U4S]V3W33xftamt$8t$u!3~DtP{F;|3^]@ËL$TPjQl 3~TRV{F;|^]@QCUiVW39;v43~)SHqT$PRtF;|G;;r̸_^]Y_^3]YUt3ĉD$pESVuW} D$,D$PW|$0ǩL$QW贩~T$RW衩kjW葩[\$ND$<BPD$(FQPL$,w D$L$0QW谪T$8RW蝪D$@PW芪L$HQWwT$PRWdD$XPWQL$`QW>T$hRW+{D$pPWhu6L$0Qu(PFT$4RjjPj:L$PjQE T$RW蚨$D$PW臨L$V\$QW|$(R L$\$$|FjWPj؅L$(SWQ`VSu$RjD$Ph 3_^[L$p3s]ËD$(L$$PD$QPRNu(FSPjD$P& 3_^[L$p3@s]ËL$PjQE VSRKjD$L$(V\$|$$PQR uD$P3_^[L$p3r]ËL$,D$_L$x^[3r]U4MSVW333ۉ|$4|$0t$,;trxftamuX @$;t_tsvc9Pu x @$|$43;tExtulcu p @$t$,;t.9Pu P @$T$0;thjPj 3_^[]QAQT$@D$8;tNyu RVtɋT$8RVtWVtjVרt$V t A$VnB$VݩU@$Vĩ< A $V諩#B($V蒩 @0$Vy A8$V`B@$VG_^[]$V-$V$Vy$Vc$VըM$V迨7$V詨!$V蓨 $V}\$4tCQRV-u_^[]jVD$0t@QRVu_^[]jVtVzD$<\$8;tL$,t QPVM\$0tV?4_^[]Uh3ĉD$dEPVуu3L$d3o]ÍT$RV謤tD$ PV蝤tэL$(QV莤tT$0RVtD$8PVptL$@QVatT$HRVRtD$PPVCsL$XQV0`$RVND$PV ;L$QV(O$RD$PjjQZL$d3)n]̃X3ĉD$TD$\SUl$hWPVу&jjT$XRVЃ3LPL@rT$RVjVԡjVġjV贡OjUSD$PQJD$] <uM39{v[jjT$RVЃulD$ f zG;{r_][L$T3mX<u%KPQV觡t+_][L$T3lXЋGRhjP{eL$`_][33lX̃3ĉD$ VV虧=vructY=arapt1t$eOPhjQe3^L$ 3XljT$ RVWL^L$ 37ljD$ PVWkL$ ^3lUHV3Wt$ v3_^]ËEPE Pуt;v 3|$t.$M }Dt(U RTtF;rۋMQD$PSR9|$ 3tDPpF;r_^]̃UVt$,VЃL$ QVhmu^3]ÍT$,RVVtjV芟tݍD$ PV t΍L$QVtT$RVtD$PVޟtL$QVϟtD$,S\$W|$0WPSRD$u_[^]ËD$tPVW~ PD$jPL$t&D$4PQӋDt L$PjQ`D$ t#\$4PVW) t T$PjR5D$$tPt PD$jPD$(t#\$4PVW t L$PjQT$8D$_[^]U t PD$jPJD$tPt L$PjQ&D$ tPVW t T$PjRL$$t&D$4PQӋt PD$jPD$(t#\$4PVW t L$PjQT$8D$_[^]̃(SU3Vt$<WVl$l$l$ l$$l$l$8l$(l$,l$0l$4Ћ\$HL$QhtsvcjSxT$RD$$PL$QhtsvchftamhtsvcjS T$RD$PL$QhtsvchtulchtsvcjS ubT$RD$PL$$QT$,RD$ PhtsvchtulchtsvchftamhtsvcjSF0u!L$EVPF^+ _]YUl$VWjjShUD$HVQ9FT$VR,u_^3]VWShUtD$WVP Ѓ tҋL$QWRlF_^]SUVW|$GjP l$L$hVUW\$0tPhVUWttE $P)tNU QRhtG;{r_^[]̋D$L$QhPRCUl$EVj8P/Cu^]S\$W|$VW蟂tNQW葂tV0RW3uEVPEC_[^3]_[^]UVuW} VW蛄u3_^]ÍFPW腄tN0QWw_^]̋D$P̋D$P̃83ĉD$4t VW\$ D$PV|$t$ ou_3^L$43VK8Á|$frucujVFt׍L$QVtjVtfD$frWUjhURl$0At$u]_^L$43J8S]3t/D$ D$V^P.Gh\$;r؋t$D$khD$\0p \0W^dd$t$ T$$RVqjVaD$$=fraptp=fmastD$,PV8|$,L$j{QWR@x3IT$ QR~QF;rD$4D$8D$PVD$8.~jV~fL$PSf|03t.d$L$ D$u^[_]Yh0(VUl$$SU譯tEVSP[33ttPLG;rL$QVR>L$ 3^[_]Ỹ 3ĉD$S\$,CUl$,VW{hfrucUD$~jU~WU2~jU"~3Ot'\$Q$U~wFh;r\$8{D$A\$+D$\$D$d$;uyhfmasU0~%jU ~KXQU~|$D$8H39t`S\Q$U ~D$8HF;t`rhfrapUD$(D$,D$0}jU};w}WU|trjU|tf| 3t'Q\$ D$ $Ux}tAF;r\$D$T$8@hD$\$;B_^][L$3aE ËL$,_^][33LE ̋D$ HT$L$PQS\$Uk Vt$WVK QVx|u_^]3[S RV|tC L$h`+UWPQ_^][USVu WD$PVytUL$QVxtF|$t$]SjVRG;D$t"CjWP3;D$uL$SQR];3_^[]3ۅt"M D$PQ ytD$T$C;r3t(M D$PQxtD$T$F;rދD$\$uNPD$SPWQVSR:D$NPQ:U_^[]QS\$K C Ul$QUD$ zu]3[YSRU~ztVW{{ 3t$D$ Q\$D$$U{tEF;r39sv.T$ BQu \$D$$UztF;sr_^][Y_^]3[Ỹ@3ĉD$̋FW3;t PP.F;t PQ .~~_̃Vttw tw(tw$^SUl$ VWj0jU؋躟 0t2u $t&|$v ut|$vu$uc_^]3[_^][VGPSku3^ËOQS ktW<v L$ 0^SUl$V3W9t$vf|$Ut]U tK|$v|$Uct.|$v|$U$FtF;t$r_^][_^]3[̋G QSluËWPSlSUl$ V3W9t$vDtC} t7|$v }t$|$v }$tF;t$r_^][_^]3[SUl$ WFمu _E][ËPSуt7V<D?PQ)+EtSuURPg+_]3[ËM3fy_]B[f9tf8u+SUW؋VЋL$yD$+T$uQI_]C[ËV#u_][ËVҋL$QL$+_][QGUl$tFO<t=PS҃u]YËG D$ QT$RSPl3ɃE]YE]Ỹ|$ Ul$ uEM]ËWVҋT$M+D$jRD$VP衱u_]ËVыU+_]UTMS] 3VWSD$,D$(D$D$ ҃pD$PS`gt9L$QSQgt*|$t*t% t UBWhjP*3_^[]ËMQRnD$ tMID$0WPD$QXT$VWRD$h hhVXt%WhcsedSxtVhtrpcShtW9tV/_^]YQSVWV3RjP;u3_^[YËGOYGXX Wh@ZGH$hhQT$GH(RhhQؤtW _^[YU43ĉ$0EMSVu W}PL$D|$H)؅h $SmhrtnmSh BGRS跇h ZYXS茇jSdhLJMWhtptwSVT$LRC$P׍L$L$QhdahcSȑJ|$@D$@\$HL$`Ft$H\$P\$XD$`$ݜ$RD$|hZYXrݜ$S݄$ݜ$D$tݜ$݄$ݜ$݄$ݜ$D$|ݜ$݄$ݜ$݄$ݜ$$PhZYXbSto$QhZYXgSҐtX|$Dt8RhCRTrS踐t>GPhCRTgS襐t+OQhCRTbS蒐tD$@t/PhmrhcSzuSЍ3_^[$03)]$<_^[3)]̋D$ L$T$PQRjj U43ĉD$0ESVu W}P}؅h $SޅhrtnmSShYARGS(h ZYXSjSՃhht7tVD$$PeAL$ QhtptwSutt,WhCRTkSauS跌3_^[L$03(] L$<_^[3(] ̋D$L$PQjU4SVW}W|؅h $S߄hknilSTU RS*RSjSۂRYVVW[tOEMPVQ觧t=PjWht#Wh0B2AS]th uS蠋3_^[] Wo_^[] ̋D$L$PQjU MEQ VqЉD$At$D$D$D$AuzD$@8` @Az3,u ظ\$T$‹U fAD$D$Az3)u ظ\$D$fBAD$D$u 3/Az ظ\$D$fBfIfJ^]U4} KYMCSVWtEhj Pk 3_^[]E{AtuD؋uhjV)E z]z]Vy؅th $SɁhknilS>hKYMCShKYMCSjSjjVFhKYMCVMjWWjQ豫D$uFL$ L$QT$ R\$(FD$\$0FD$ \$8?D$PL$$QV R9D$ PL$ Q8V^8E T$RP0=^]U3ĉ$ES\$@VEW}\$PE \$`$E(\$hE0$P>$QT$lRL7E4$$P$Q$R!7Wr؅htsbaSzh baLSzh baLS`zjS8yjjW辳tqE jj$$$$$$$$j$PWt"jL$LQhPWqu%VdzS3_^[$3]0WjVߴhutPhtptwS=Vh0B2AS1Vk$_^[3]0UE0E$M,UPQ \$E\$E\$E $Rj ],U4SVW}3WD$@eq؅h $SyhhrtrpS yhYARGSxh baLSxjjWt^T$ P H  @ 8  0 ( Rz} un  H   8    E  % XX] hljjY 3] U0E T$V\$W3@@\$( \$ F\$D$ fD$(f\$0Z)|$0tD${!\$GD$ \$r3_^]E_^D$D$=]́(U$4VW|$X$PL$\Qau _^](E\$D$(E\$E$PB\$L$XB\$$Q¹T$RSD$0P蒾L$@QST$R肾T$\$$D$(t$@$P}T$D$0$t$H\$$QXD$ t$8$\$T$$R3S$PL$`QP$8T$XR$PQ6_^](̃T3ĉD$P D$X\$S Q\$P \$\$  \$( \$0 \$8 \$@ \$H \$P8L$\[3T́VWPL$ Q+T$hRЍL$ Hu _^Ĭù|$ D$ PL$lQS;_^Ĭ́ S\$XF\$hT$X@\$(@T$`@ \$ @0T$P@8$\$0\$\$$P薷D$\$$D$ \$D$($QoD$8鍔$d$0T$xd$`d$ ݔ$d$Xd$(ݔ$\$\$$R$P$QYu[ $D$pD$h\$\$$RʶP$QT$(R蕻D$0L$8\$D$@L$`\$D$8L$X$S艶D$0L$C\$D$@L$ \$D$8L$($PZD$`L$0K0\$݄$L$@\$݄$L$8$Q%[ UUM D$Pu]E@\$L$8@\$$QĵRD$}+߃)}};]r\}t3;v uu+ ;w;Ew[PuVz=YPZ t{tdE+)E$V9YtR}t"MEFKME&E} tu ju8[ ""N +3uN j h=3u9ut/9ut*9uu-} tu VuZ ="!3=u7Yuuuuu uEEEu:8YËUuuu juZ]ËU eWj3Y}9Eu!N!xM Vutu!*!SE;wMuEuEBuuPutMxE EPjYY^_ËUujuu u<]ËU SVW} t}tuu  3_^[ËMt39Ew}F M}tFEEN t/Ft(;rWu6b)~> +}O;]rOt V&aYu}}t 3ҋu+WuV:YP+` ta;wM+;rP})EVPYYt)EFKEEAEN +3u N Ej hF:39u t!9ut39u;u&3\:uD5Yuuuu uPEEEu5YUW}3كE 8t3_ËUSu M]sTM胹~EPjSZJM Xt}tE`pE胸~1]}EPE%PfYYtEjE]EYH*3Ɉ]EAEjpUjRQMQhpEPe$kEt M }tMap[ËU= uEHw]juYY]UV3PPPPPPPPU I t $uI t $r ^ËU,3ʼnEVu uMu!J}tE܃`pXEԃ~EPjPH HtFɍEPEVPXe@ }tE܃`pM3^+ËUjuFYY]ËUVuWuC DF t8Vf]VHnV6PxmyFt PfYf _^]j h6M3uu& F @t f E6V1YeVYvP&YʋUVuF uLg}F uV(E eYVYF YyF ttuFuu Vc2YPo3Ƀ A^]j hq239Eu]?ut tuum-YeVu u EE EQ2u-Ỹ=r\$D$%=u<$f$ffd$zr~D$f(pf(f(fs4f~fTffʩtL= |}f=2  fL$D$f.{$T$ ԃT$T$$"oD$~D$ff(f=|%=2fT`XfL$D$ffT`f\$D$ËUeVuu$j^0 j$hVNE tӋ@ME|@Ws j^0뼃| &AwSWjh3PQ-rHF+yjd}M؋Ǚ_jh+؋EDAڙRPq+jQSRPq}U}M|sGEǀ3UȁEyIAu jdYuEluAU2EȁyIAu jdYuEluEEjSuFW'qjFhRPpU}uF3A9B} A9|QIN+jF E Sp0pjY3ShuWVpjFhRP_pSUj_^ 3[^ËUVqtuVYY#^]ËUuu3t PY]3]ËUQQEPEMj*h!NbQPp|=o@vЋMtQËU(3ʼnEEu>3M3Ãx|8s PEPrYYuȍEPpYjh -E uzdu38<udy h.HN+IN;~WPu N EM F yM tt@@ tjSSQ^x#ƒt%FM3GWEPu 6N E9}t N E%_[^A @tyt$Ix  QPvYYu ËUG @SVt2u,E+MC>u 8*uϰ?}^[]ËUx3ʼnES]Vu3Wu} u+  t `p F @u^VZ'Yttȃ @A$uttȃ@@$q3;g3ɉ: G9' B ƒ tJt6t%HHtv j ^ R C 7 *u,[;  k ʍDЉ*u&[;k ʍDЉItUhtDltws?luGXL @<6u4u<3u2u]u ]FE /F<-uqtm]tfF:s{{:{s,{*ЋσdzDGJu苝L{D2ȊЋDL<]cD@b+u.du t ƅs\t ؉l0\t؉lxt_XtZLxDžTt&HtdusDžLo.tt\S aYYj0[\tlH؉ltdd}sDžLxF@xGrtt\P`YY;c4cZt@3f@ƅ{l-u ƅY+u.du t ƅs\tx؉l(<sLxt]LptTPYLou88<Kjj <8M0P&Ytk8<SYlTCЙH8f>D[GDd<%u8GuG\tGlD;uwP7Yt%\tGD;u7tlu?%uNDxnuB4lt\P\YYt\l\YY0u PYlu*4u 8[ut% apt `p4[M_3^ƽWƃуtefofoNfoV fo^0ffOfW f_0fof@fonPfov`fo~pfg@foPfw`fpJutItfofvJut$t vIuȃt FGIuX^_]ú++Q‹ȃt FGIut vHuY j <d.3ËUVuMEu t0u$(}tE`p3}t }|Ѓ}$ʃeMSW~~EPjPeM BtGǀ-uM+uGEOF$=u*0t E 6WTt3%>uN@ uNhF PPt,F N@Ch58H3_[^ÃVW@t6;s!p ~tV\@N;r7'Y@|_^ËUEu{]Ë@]h@d5D$l$l$+SVW1E3PeuEEEEdËMd Y__^[]Q̋US] Vs35WEE{t N3 8!N F3 8E@fMUS[ EMt_I[LDEEttEx@GE؃u΀}t$t N3 8螳N V3 :莳E_^[]EɋM9csmu)=4t h4VtUjR4M UE 9X thWӋE MH t N3 8N V3 :EH9S OhW-t"t t Ht3øøøøËVWh3FWP3ȋ~~~  ~@ F+ο@Ou@Nu_^ËU3ʼnESWPv`3@;rƅ t0;w+@P j R Cujv vPWPjjV3SvWPWPWv S)DSvWPWPhv S)$3EtLtL @;rRDž3)ЍZ w LQ w L QA;rƋM_3[誰j h` `Gptltwhuj 5Yj SYewhu;5ht6tVhu@tVYhGh5huVdE뎋uj QYËUS3SME u p8]tEMapElD;FG;v}>uЋuE}urlj{CijC CtZf1f0JuL@;v~0C@IuCC Ss3ȋ {95 TM_^3[衭jhM}_huqE;CWh 3@Y؅Fwh#SuYYEuvhhuFh=@tPY^hS=dFp`j OYeC C C 3E}fLCf E @3E=} L`@3E=}h@5hhuh=@tP!YhSE0j NY%u @tSYeEÃ=,ujVY,3ËUSV5dW}W֋tP֋tP֋tP֋tP֍_PE{dt tPփ{t CtPփMu֋P_^[]ËUW}SV5hW֋tP֋tP֋tP֋tP֍_PE{dt tPփ{t CtPփMu֋P^[_]ËUSVu3W;to=th;t^9uZ;t9uPJSYY;t9uP)#SYYYY;tD9u@-P+PҾ+Pľ蹾=ht9uP)O萾YY~PEdt;t 9uPkY9_tG;t 9uPTYMuVEY_^[]ËUW} t;Et4V0;t(W8jYtV>YutVsY^3_]j ha`Fpt"~ltpluj g.Ytj KYe5lVYYYEEj ~JYuj8xV5|u5 V5^átP5 Ѓ tP Ijheh|uF\Hf3G~~pƆCƆKCFh@j JYevhdE>j dJY}E FluFlvlYE3Guj MIYj DIYËVW5ЋuNhje:YYt:V55 ЅtjVYYN VػY3W_^ËVuj_,Y^jhuF$tP苻YF,tP}YF4tPoYF t tjVhH3Z u~F> t>=unF> tjhLVX u ?jhTVX u  jh`VeX uF> t>tqhuE SuPUt3" EMH 3ɉHHHM H_^[jh33}jCY]3u;5`.@9t[@ uHuAFwFPBY@4VYY@@ t PVYYF둋}cj82Y @;tNh@ PP@u4uY@ P@@<}_ ;tg ___OE Ë}jAYSVWT$D$L$URPQQhd53ĉD$d%D$0XL$,3p t;T$4t;v.4v\ H {uhCXCXd_^[ËL$At3D$H3蚞Uhp pp> ]D$T$UL$)qqq( ]UVWS33333[_^]Ëj?X33333USVWjRhQJ_^[]Ul$RQt$ ]UUVujXEU;u o }S3;|;58r`F NW<@L0u# hwN];9] t5D0$EHjYtHuШtU] ]zШuB6M;rEu/Y]um unjjju6D(T,AHtzI tr}tlM} CED tPL% tE}t?@M}ED% u%L& t}t@MED& jMQuP4xMm;MdMD}t ; u ]EÉ]E;M<< t CAMEH;sA8 u M uEmEjEPjEP4u uE}t?DHt} t ML%;]u} tjjju*5} t CE9EFD@uC+E}EK xC3@;]rK @tu *zA;u@D1Ht%CT1| T%Cu T&C+ؙjRPuP4E+]Pu SujhEu4PYME;E tP詮YEEE3;EL0ƅt f; u ]EÉ]E;E tf EM;sHf9 u Ej MEjEPjEP4u u[}tUDHt(f} tj XfMLML%D& *;]uf} tjjju2f} t j XfE9Et@u ff+]]j^;u 0jmZe\3_[^jh0{]u x;8r <ҋ<@D0tƸ;E@um RSASYeD0tuu S E % ME EË]SSYËUVuu3a}uj^0sH}t9u rVuu u ju. }t9u sj"YjX^]̋T$ L$ti3D$ur=d.tTWr1كt +шuʃtt uD$_ËD$ËUGU3ʼnEE VuW34809}u3;u8BS@L8$$?tu'Mu[ @D8 tjjjV/VX1YD[@l39H P43;`;t 8?P4 3,9E#@?g $3 ǃx8tP4UM`8jEPKP Yt:4+M3@;jDSP4 C@jSDP4 n3PPjMQjDQP C@=j,PVEP$4 @089,j,PjEP$E 4,08<t<u!33Ƀ @D<t<uRDQYf;DI8t)j XPDQYf;D80E9@8T4D83ɋD8?D49M3+4H;Ms&CA u 0 @F@FrՋH+j(PVHP$4C(8;;+4;El%?49MH@+4jH^;MsCΉ u0j [f @@fƁ@rH+j(PVHP$4i(8;a+4;EGK4,9Mu,@+4jH^;Ms;,,΃ uj [f@@fƁ@r3VVhU QH++PPVh;j(P+P5P$4t (; D;\,+48;E ?Q(Qu448t(D8 D8ulDt-j^9Dua i0?DmY1$D@t48u3$!) 8+0[M_3^UjhP]u ҿ x;8rƿ 諿 Nҋ<@D0tSuJYeD0tuu Sn EQ Y ME EË]SJYËUSVuF Ȁ3ۀu@t9FW>+~,WPV_YP ;uF yF N _Ff^[]ËUVuu V5Y/V|YtF @tVP MYY3^]jhp 3}}jX0Y}3u;5`.@98t^@ tVPVAYY3BU@H t/9UuPJYtE9}utP/Yu E܉}F3u@4VJYYE}EtEj.YjYUWVu M};v;r=d.tWV;^_uur)$ Ǻr $4$0$Dp#ъFGFGr$ I#ъFGr$ #ъr$ IDDDDDDDDDDDDDD$ 08DXE^_ÐE^_ÐFGE^_ÍIFGFGE^_Ðt1|9u$r $$lIǺr +$$F#шGr$IF#шGFGr$F#шGFGFGV$IpxDDDDDDDDD D DDDD$E^_ÐFGE^_ÍIFGFGE^_ÐFGFGFGE^_ËUEt8uP7Y]ËU3ʼnEUS3VW;~EI8t@;u+H;}@E]9]$u E@E$539](SSuuPu$֋};u3R~Cj3Xr7D?=wH;tP蹝Y;t E]9]tWuuuju$օ5SSWuuu ։E;Mt)E ;9EPuWuuu };~Bj3Xr6D?;w$H;thPY;t 3;t?uWuuuu օt"SS9] uSSu uuWSu$EWYuEYe_^[M3脇ËUuMĎu(Eu$u uuuuu P$}tMapËUu M~EMA%}tMapËUjuYY]ËU$3ʼnEEM SVuWP3WWWWQEPEPM3 Et }}0EPEPFEYYuuEuuE+EMFEFEF_^3[Lø(F@D=H<L =Pt<TXE\<`;d~;ËU}t[]ËU|3ʼnEE3V3EE FWE}MuMMMMMMM9M$u$ǵ3<UU< t < t< t< uBS0B $uHπwjYJߋM$ :ujY+tHHt |jYE뤃ejY뛍HωuvM$ :uj<+t"<-t:t7֋5(֋5$9]u9Et]܉]ЉE؋}ԋ]EH}TsEtЃEEX}\sEtЃEE }u) jYu}tjY;ËUjju ]jjj ËUu2Yh̋U3M; t @r3]Ë]ËU3ʼnESVuWV3Y;ljXYjXYu =p6hTh WW hB VSfJ uh$SVW t 3PPPPPxVW@Y=YXt"jSYYt?VSP uG>u5d)%d' 3Y[_^5 % 3PPPPP̋UQMS3VU 9Et ]EE>"u39E"FE<tBU PF ]Yt} t M E FU Mt2}u t utBe>< t< uFN>}t EE3C3FA>\t>"u&u}t F8"u 339EEtIt\BuU tU}u< tK< tGt=Pt#;\Yt M E FM E  \YtFU FVtBU ME^[t ËU S3VW9,ufhhVSlh.5 ;tE8uuUEPSS} E =?sJMsB;r6PY;t)UEPWV}E H 5 3_^[ËU SV3;u3wf93tf90uf90uW=VVV+V@PSVVE׉E;t8PGYE;t*VVuPuSVVׅu u}YuSE S3_^[ËV00W;stЃ;r_^ËV88W;stЃ;r_^ËUVe2N\UW9t ;r;s9t3tPu3u `3@M S^`N`Hj$Y~\d9 |~d=u Fd~=u Fdn=u Fd^=u FdN=u Fd>=u Fd.=u Fd=u Fd=uFdvdjY~d`QY^`[_^]ËUcsm9Eu u PYY]3]3@ UeeSWN@;t t УeVEPu3u333EPE3E3;uO@u G 5։5^_[Ã%ËUQQE VuEEWVE Y;uI NjJuMQuPE;ut P;Yϋ@D0 EU_^jh艰]܉]Eu ŕ Ëx;8r踕 蝕 @ы<@L1tPg YeD0tuuu uE܉U; C ]܉]E E܋Uu YËU h$YMAt I AI AAAAa]ËUEu誔 3]Åx;8r菔 2ދȃ @D@]ËVW3@8@(r_^á39pËUSVu 3W};u;v E;t3{E;tvj^0蒓VuMjE9XfEf;v6;t;v WSVA 裓*蘓8]tMap_^[;t&;w xj"^08]tE`pyE;t8]t~t WW2s&Y|ܾp_t ~uPӃ|^[ËUE4pD]j h8X3G}39 ufjhYYu4p9tmjY;ue 3Pj XY]9u+hWPuWarY0 ] >WFrYE Ej )YËUEV4p>uP#YujY6@^]̋UMMZf9t3]ËA<8PEu3ҹ f9H‹]̋UEH<ASVq3WDt} H ;r X;r B(;r3_^[]̋UjhXh@dPSVW1E3PEdeEh*tTE-PhPt:@$ЃEMd Y_^[]ËE3ҁ9‹ËeE3Md Y_^[]ËUQQ3ʼnES3VW]9]u E@E539] SSuuPu֋;u3~<w4D?=wt;tPOpY;t ؅t?PjS` WSuujuօtuPSu EStEYe_^[M3ZËUuM)bu$Euuuuu P}tMapËUVucvYovQov IovAov9ov1o6*ov "ov$ov(ov, ov0ov4nvnv8nvWW6 Ej[+PD=P6J ;݃ @D$2M0 @D$M ʀ}u!Etȃ @D M#;u~EtxujuEjPuE%Pu ;u4P|ȃ @D 6TY6 @EVSSSSSs{jhx谖3}3u;;u{j^0{Y39};t9}tE%@tʉ}uuu uEP]EEE;tq3u9}t(9}t @D 6YËUjuuuuu !]ËUSuMQ39]u8]tE`p3E9Xu&uu u= 8]Map9]u&zoz8]tE`pfW} ;u&zAz8]tE`p7VM MEDMte9]uD]fU:u]Tf EfMf;pr f;pwfp1f;pr+f;pw%fpU At ʉMfuGDMtG9]u]XM:tf GMf;Hr f;HwfH1f;Hr+f;Hw%fHU At ʉMfMf;u!f;t 9]8]tE`p3^_[H8]tMapUjuu u]ËU}u3WuMO}u'uu u }MapS]u#x\x8]tE`p_Vu u$x1x}tE`p2 MCD8t=}u 3D8tY}tE`p3^[_Êu3 f CFD:t }u3Mtf Ff;uft}pH}tMap닋Ujuu u]USVWUjjh)u([]_^[]ËL$At2D$H3FUhP(RP$R]D$T$SVWD$UPjh)d53PD$dD$(Xp t:|$,t;t$,v-4v L$ H |uhDID_뷋L$d _^[3d y)uQ R 9QuSQ SQL$ KCk UQPXY]Y[ËUEVWxY;8sQ<@<u5=pS] utHtHuSjSjSj3[v v _^]ËUMS3VW;|[; 8sS<@D0t6<0t0=pu+tItIuSjSjSj 3u u_^[]ËUEumu Ru ]Åx;8rIu .u tՋ @Dt͋]j h蝏}4@E39^u5j Y]9^uhF PPu]FE09]t@D8 P@E^3ۋ}j YËUEȃ @D PD]jh׎M3}j cYuaj Y}}؃@;4@u@;Fu[~u8j Y3C]~uhF PPu]Fe(}u^ S@FtSD@냋}؋uj YÃ}uF+4@u}uyG,j@j YYEta @8 ;s@@ `@E}σ@DWYuME E虍j YfQSuƒt7$ffAfA fA0fA@fAPfA`fApHuЅt7tIfIHut3tIJutAHu[XËۃ+3RӃtAJutIKuZUUQ=u7ujMQjMQPtfEQL$+#ȋ%;r Y$-jh ]uVq x;8r7q pڋ<@DtSYeDt1SYPu Ee}tpMp ME E荋Ë]S4YQL$+ȃ YQL$+ȃ YU83ʼnEEM MH SفMȋHMH?WMEu'339\u @|33}jXeVu}䥥=OGW]ԉEyJBtj3Y+@MЅE؃҅T|u@|nǙjY#yOGe+3BL9}99}r"9Ut+eLz};rsEHUMyщM܋MЃjY!E@;} |+3}tC+ ;} 3}𫫫 ; +Eԍuȍ}𥙃¥yJBeeE )U׋]\3#ωMԋM u؉3uE}u|ӋjMZ+;|1tdJy5NFVEyJBjY+3B\Mԅ҅T|u@|fƙjY#yNFe3+BL1<;r;sE9MtLr3;rs3G1HyދMԃ!E@} jY|+3 AQyJBeeE )U׋]\3#ωMԋM u؉3uE}u|ӋjMZ+;|1tdJyj3XS ;3}𫫫M‹yJBeeE )U׋]\3#ωMԋM u؉3uE}u|ӋjMZ+;|1tdJy$3@$e‹yJBeeE )U֋M|#ΉMԋM }؉|}ԋME}}|ЋjMZ+;|1tdJy3^jY+ MɁ ً  ]@u M̋UY uM̉M_3[o:ËU83ʼnEEM MH SفMȋHMH?WMEu'339\u @|33}jXeVu}䥥=0OGW]ԉEyJBtj3Y+@MЅE؃҅T|u@|nǙjY#yOGe+3BL9}99}r"9Ut+eLz};rsEHUMyщM܋MЃjY!E@;} |+3}tC,+ 0;} 3}𫫫 ; +Eԍuȍ}𥙃¥yJBeeE )U׋]\3#ωMԋM u؉3uE}u|ӋjMZ+;|1tdJy50NFVEyJBjY+3B\Mԅ҅T|u@|fƙjY#yNFe3+BL1<;r;sE9MtLr3;rs3G1HyދMԃ!E@} jY|+3 4AQyJBeeE )U׋]\3#ωMԋM u؉3uE}u|ӋjMZ+;|1tdJyj3XS 4;(3}𫫫M‹yJBeeE )U׋]\3#ωMԋM u؉3uE}u|ӋjMZ+;|1tdJy<(3@<e‹yJBeeE )U֋M|#ΉMԋM }؉|}ԋME}}|ЋjMZ+;|1tdJy3^jY+ 4MɁ ً 8 ]@u M̋UY uM̉M_3[5ËUVu M]OdMGdu, M܋  9M}Mk W\DE}EuwdSUY]}؃}tjYSUYt tuEԉG`uEЉGd3qËUE]ËUE]ËUQSV5W5(5$؉]֋;+GruS="؍GY;sH;s;rPu׸YYuC;r>PuYYt/P48(u=8׉Vף$E3_^[ËVjj -YYV8($ujX^Ã&3^j h@)peuYEE EEpΧËUuYH]ËU$3ʼnEESEE VWE{e=Eu}h؅=hSׅ58PhSPhSPhpSP֣thXSP֣M5;tG9 t?P5֋؅t,t(ׅtMQj MQjPӅtEu M 3;Et)Pօt"ЉEt;EtPօtuЉE5օtuuuu3M_^3[2#ËUVuWt} uSj^0ZS_^]ËMu3f݋f:tOut+f ftOu3ufdSj"Y몋UUS]VWuu9U u3_^[]Åt} u)Sj^0R݅u3fЋMu3fԋƒu+fft'Ou"+ fftOtKuu3fy3uM jPfDJXdfRj"YjUEffu+EH]ËUVuWt} uYRj^0Q_^]ËEufߋ+f ftOu3ufRj"Y뼋UMx~ ul]ál l]QQ]3ËUEMSVW3xE3ۉxECx t E XEtEHEtEHEtEHEtEHEu E3H1HE3H1HE3H1HE3H1HE3H#1HtMI tMI tMI tMI  tE X  #t5=t"=t ;u)E!EE E #t =t ;u"E E EEM31E X 9} E}t&` EEXE X`E``EXP4H H EEXE X`EH`H`EXPcEPSjuMAt&At&At&At&Yt&ߋ3+út/HtHt Hu( % % !+tHtHu!#  # 9] tAPAP_^[]ËUjuuuuu u]ËUESV3ۋCut]tSYtEtjyYxEjWEY #tT=t7=t;ubM {LHM {,2M zM zE3tW} DEPQQ$M] } E S]Au3ҋEfE;}"+]tum]tMmHutE]E_tjYeuEtE t j Y3^[ËU}t~}L"]L!]ËUE tjt3@]ètjtjX]]ËU 3 ;M td@|3Et^EEEEEEEVuEE EE$hu(uEEPS uV,YE^Ëhu(uE ËU=u(uE \$\$E $uj/$]Khu!\E YY]ËSQQUkl$3ʼnEs CPs u#ePCPCPs C sPEPjso=u+t's C\$\$C$s Pq$P$s CYYM32][ËUQQE]EËUQQEEM] fEEËU3ҁ} u 9Uu3@]Á} u 9UujX]fMVf#^f;ujf;uE u9Utj3]ËUEDz3E3ɩukE u9Mt]]Au3@3e EtM eJEtVf!u^;t f EEQQQ$ &QEQQ$U E]ËUQ}EËUQ}EËUQ}E M#M f#Ef E m EËUQQMt -]t-]t -]t ؛ t]jh`Wc39d.tVE@tH9(t@EU.E=t =t33@Ëe%(eUEeU7cËUEu:HGjX]Ë 43]ËUEu HGjX]Ë 83]ËUEuGGjX]Ë 03]ø4ø8ø0øj,hFb3ۉ]ȉ]ԉ]]܉]؉]j艹Y]EEPY;EPY;EP.Y;Ẻ==hVYu;tt8tp;t!PV$YYA;tP+YV4G@P YY;VVGY@P5t ;SSSSSE;t P*Yh;3A k-uEFV=YiE<+t<0|<9F3ۋujMYÀ>:u8FVYk<E<9F<0}>:uFVYE<9F<0}9]t]E;tjVj@wоt Gu0u0_ËU e} SVW}%yH@Eu jd[ult  E +_jd_FjEÙU}[+ЉUGEim%Ek+E;Ut}}u jd[ult E  E ;~D?%yH@u jd[ult 44uk<M k<M$iM(}u5 =_^[ÍEP5 YuDEiy\& \&9| )=3PPPPPA̋U VE3Pu@Y9uXWS3C;u ;95 PPPf95uVPPRS PVVRVScZ T$PXPVPf95LuPVPRPwSRPVVwVNV$TjXjYE ]k}jXE EVVVVVQRSSjYEVVVVVuwSVjYH W;};|";;~;}[^;|;;~;}3Gk<Gk<i;u 3; 3;VVVVV(@jhe[395u*j貲Yu95u Eq[j話Yj h[jmYe}EE E0[jhYSW3D$ }GT$ ڃD$T$ D$ }T$ڃD$T$ uL$D$3D$ 3OyNS؋L$T$D$ ud$d$r;T$wr;D$ v+D$T$+D$ T$Oy؃_[UMtj3X;E sk? 3]M VuF3wVj5 u2=<tV=YuҋEt 3 Mt ^]ËUM S3;vj3X;Es> 3AMVW9]t u YVu%YYt;s+VjS8w _^[]ËUuM:E MUTu}tMA#E3t3@}tMapËUjjuj]jYËU}SVWuM]u'==}tE`pu tҿ9}v!=c=}tE`p]ExuuVSW }tAMap8+3MQPTMQPEFMtt;t+3_^[ËU39 u09Eu)=<]9E t}w] Puu u]ËUSVW3jSSu]]\E#ƒUtYjSSu@#ʃtAu }+;Sj PEum< b<_^[huYYE| ;rPuu=u t6+xӅuϋuuuYYuj P3;8u ; u;q|;skSuu uE#ƒDu7YPHE#‰Uu); ;u#uSuuuڤ#ƒ3US] Vu@ ΊA$Wy@tPtBt&tu=I L1$⁀'I L1$₀a I L1$!_^[u]%@]ËUEum::jX]Ë 3]3PPjPjh@hát tPËUSVu M];sTM胹~EPjSveM Xt}tE`pE胸~1]}EPE%P襁YYtEjE]EYd9*3Ɉ]EAEjpUjRQMQVpEP$oEt M }tMap^[ËU= uEHw ]juYY]ËU(3ʼnESVuWu} MiEP3SSSSWEPEP+EEVP1(Eu+u8]tE`pjX/u8]tE`pjEuEu8]tE`p3M_^3[ËU(3ʼnESVuWu} MEP3SSSSWEPEP胁EEVP(Eu+u8]tE`pjX/u8]tE`pjEuEu8]tE`p3M_^3[ËUMSY Vu3;uo7j^079E vU;~@9E wC7j"YW~0Dž~ tCj0Y@JMx;5| 0H89t>1uAW@7@PWV3_^[]ËUQM AS%V#WE A %ut;t<($3;u;uEfM PB<U UE  ɁPtM _^fH[ËU03ʼnEES]VEWEPEP"YYEPjj uЋfu܉CEECEPuV$uM_s ^3[3PPPPP4WVU33D$ }GET$ڃD$T$D$ }GT$ڃD$T$ u(L$D$3؋D$d$ȋd$G؋L$T$D$ ud$ȋD$r;T$wr;D$v N+D$T$3+D$T$My؃ʋӋًȋOu؃]^_̀@s sË3Ҁ33ËUEM %#Vut$t jj YYW4j^03Pu t  YY3^]tjYtjh@j72 j諈̋U}u33]uj5 ]ËU= V5 u3cWu95 tSuJ5 t@}t:u3Y'P3Y;v<8=uWuP tu3_^]ËD8UWVSM tMu} AZ I& t' t#:r:w:r:w:u u3:t rً[^_ËUt3ʼnEEU#S]EAV#f}W]EEE?EtC-C u }fu73f9Mf$  CfC0C3@ f;M 3@f;u}t@uhS3PPPPPX13f9Utu 9Uu-h;u"9UuhCjP般 uChCjPk uC3kʋiMCkM 3fMع@`ۉEfUu}My`ۉEETgk MMf9r}ĥEĥMƉE3ɉMMMMH 3UUU##΍4f;f;f;?f;w3uuu3f;uGEu9uu9uu 3fEf;uG@u 9pu90t!uuEMUɉU~UL MEEEVȃe ;r;sE}FtfEmM}EEM}f~;Eu-EMe EE EffMfyBEtEMuUm M HuMu9EtfMf9EwMu4}u+e}uef9MufEGfEEEf;33f9EEEIM3;}M?f;]E3҉UUUUU3##Ё4 ]f;Lf;Cf;5?f;wK3EE9fE }fEEEEEf}Z33f9uH%Ea3f;uFEu9Eu9Eu fEf;uFEu9Eu 9EvE}EEMM~KM؉MDM eʋW ;r;sE}_tfmM}EM}f~7}x+EMe E? EffMfyBEtEM}Um M H}Mu9EtfMf9EwMu4}u+e}uef9MufEFfEEEf;r#33f9EEEIM;fE ufEEEEEfu3feH%eEEUE}ft0)3ff9EfB0$  BBs~j_u?3fEEE]Me ؋E M]Eu؅y2ށ~(E]Mm ؋E N]E؍GZ]EUEu}ĥe}e ʋU ֋4  U ȋE <;r;sF3;rs3BtAEȍ0U;r;sAM ʍ4?uuM0 CM}uEKC<5}MD;9u 0K;]sE;]sCf*؀ˈXDEM_^3[À;0uK;sE;s3ff9U@ʀ P0@3t@tttt t˺#Vt#t;t ;u  ˁt u  ^t 3tSVWt t t t t Njʾ#t;t;t ;u ` @ _#^[tt ;u Ã@ @ËUSVW}f]3tjZttt ttˋ #ƿt$=t=t;u #tuét} M## E ;Em}]3tjZttt ttˋ#t(=t=t ;ututU 395d.}]Eyj^tttttȻ`#t* t@t ;u@#ǃ@t-t @uE#E# ;uPEY]M3҄yjZttttt#t$= t=@t ;u  #σ@tt @u‹3M E t _^[ËUSuMBM3;u8]tE`p39]u&g% %8]tE`p9] tV;v2%$?E9XuuQu u6pQu Quhp EPI ;u8]tE`p8]tMap^[ËUjuu u ]ËUQQSV3W= u;teVVVVjPVVӉE;tTjPYYE;tCVVuPj7VVӅt6EVPYYy9ut uaYu;u3_^[Ãu@YU,3ʼnEESVW}ىE܉U~?I8t@u+}u~*΋I8t@u+u}3|e}u@Et;ujX3C;~;~jEPu`t~-}r}Et؊PtыM܊ :r:v8u뺅~4}r}EtPtM :r:u8uw5jjWuj u֋؉]ԅ~@j3Xr4D;wątPYt Ee}Suuujuօjjuuj u֋؅tx~?j3Xr3D;w蕱ątPpYt 3t1SWuujuօtSWuuu uEWgYugEYe_^[M3ËUuMFu$Uu Muuuu b}tMapËUSuMU3;u8]tE`p39]u&(! 8]tE`p9] tV;v  KEH;uEPRu u?pERu RuhQP ;u 8]tE`p8]tMap^[ËUV5 !WPu u <=ttuً+ ^]Ë+ UQW3υtL9t @9uV@jPwYYuuj tYt+PY7Yu&E^_ËUES3ۉ];uOnV0Wu;tSj=VYY};t@;t<38_E ; u 7 ;u`9] t$9 ttJ9_^[9]jOY ;tމ9 uj4Y ;tÉ5 u;t+}udY;|R9tN46Y9]uEEFEG49u?sjjW5 蟁 ;tUN9];}ߍG;6=?+Pj5 c ;U YM 9] tmujVvYP菀YY;tPVV]YPW轘 uRM+E@#QWuM*WY9]tuEYEsSSSSSuEY3TUS39]u3>VWupVYY;tuVW u SSSSS3_^[]ËUSuME3;u 8]tE`p3pVu9^u:u PYY=D2t@:t: 9M u H9U t @f;u9M u8]tMap8]tE`p3^[ËUju u> ]%̃ $ ÍT$XR<$D$ tQf<$tu=  u,u%|$u "u|$u%t-`= & / Z̃=d.t-U$,$Ã=d.t<$XfftU T$|$l$T$D$t\ЁuT$t1 # fnfs f PYfT$^ʺ #f@YfWfTfvfɁf%=uefL$ fT$ fnfT `Yfs4ffffvf%=t#fL$ f%tYYfL$ f%GfL$ f%+XĺfT$f~fs f~ҁ ¹f YfYYɺHfd$fT$ f@YfWfTfvf%=f~u fs f~?uf@YfWfTfvf%=uUffd$% уtf%=?rf%=?sYXºcf~fs f~ fPYt:f~%=w%rwfD$D$f fD$T$ ԃT$T$$DUD$Ã~(=<VЃW?&=VЃ €WXX0YfY\0YfY\f(0Qf(5pYfYfXfpYXXf%Yfnʁƒ fW?fYT$Yfs-fpDf(=YXfYXffYYfYfXfYYfpYfpYYfnfs-fnfvfXXfTXfWfvf\XfTf_\XXÃN^YYXYXf%=fD$D$^XYYXf%=fD$D$fYfnYfs-fVtfYYYefYYTfpDfYf%@+-p< Ё=r ɀfnfs-fD$D$fd$f?f3%-K$$ƅp u; ƅp2+at@u tF t2t-Yƅpݽ`aAuƅp-Y uS u uu tƅp-Yu t]Xݽ`au-Y tƅp'-Yƅp u-Y-Zٛݽ`aAuݽ`aݽ`ٛu "Zٛt øVtV$$vft^tËUQQEQQ$t YYuLEQQ$EYYDz1EQ @Q]E$蚬EYYDzjX3@3ËUEV339Eu:9UuzzAE9Mu@9Uu;z AEu 3F9E u(9Uu}UwUAEt^X9M uU9UuPEQQ$YUYzu!UAuuE^]U$~$fD$f(ffs4ff( PZf(Zf(%`Zf(5pZfTfVfXf%f(0[f(@_fTf\fYf\XfYf(fXƁ*f Df( [f(f([fYfYfXf( [Yf(-ZfYf(ZfTfXfXfYYfXf(ffY˃f(fXXXfD$D$fD$f( ZfwHt^wlfD$f( PZf(ZfTfVftZúOfZ^f Z4f ZY/s:fW^ɺfL$T$ ԃT$T$$eLD$fT$fD$f~fs f~с t릍d$U$~$fD$f(ffs4ff( Pcf(`cf(cf(%pcf(5cfTfVfXf%f(`hf(PdfTf\fYf\XfYf(fXƁ*f Df( df(f( dfYfYfXf(0dYf(-cfYf(cfTfXfXfYYfXf(@dfYf(ffY˃f(fXfXXXfD$D$fD$f( cfwHt^wlfD$f( Pcf(cfTfVftcúOfc^f c4f cYs:fW^ɺ fL$T$ ԃT$T$$ID$fT$fD$f~fs f~с t릍$U$~<$~|$ff(fTlf/mUf/msnf/mf(fYf(fYf(-PmfYfX-@mfYfX-0mfYfX- mYf(fXY\f|$D$f/mf(fYf(fYf(-mfYfX-mfYfX-lfYfX-lfYfX-lfYfX-lfYfX-lfYfX-lYf(fXY\f|$D$~fWf/msO~m~-`m~Xfs,ff~؍@~,r~\YXxm^f~~pm^f~r~$rf(fYf(fYf(-PmfYfX-@mfYfX-0mfYfX- mYf(fXY\\\fVfD$D$f/hmuD$f/msm m$$D$m mD$~~plfTf.zD$mŐlúT$ ԃT$T$$FD$ÐU$~$fD$ff( nf(5nf(0nf(@nf%@+-< Ё(fYfXf(f\fYf(%PnfYf(-`nf\f~ȃ?f\f(pnfYf(fYfXYXffo5mffo5mffs.fYXfVfX~|wYƒXfD$D$Ã|$fT$ff$,$+fo5mffnfs4fVfnfs4f$$ft$D$f$$$$f$l$fs't)Zr+#rJwT$9r<fD$T$ ԃT$T$$DfD$fD$D$=s1D$=sfrYfrY뉋T$=wuD$=urrúVD$%=@sfD$XprfD$D$ÍISQQUkl$3ʼnECVs HWxtRHtCHt4Ht%HtFHHtHDž|9Dž|"Dž|Dž| Dž|Q~W| uICtt teMF]MWNQP|xPEP肛hx!>YYt=u VzYu6TYM_3^蒹][ËUfUf#f;u-EQQ$|HYYtHt Ht3@]jjX]ø]MfuE u}t]EDz @]%](8DP^lґ 4D`xڒ6NXdv̓ޓ .>P`n|Ȕޔ,<Rdrȕ0ٳEzKg??33x(null)(null)EEE50P( 8PX700WP `h````xpxxxxHH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunHH:mm:ssdddd, MMMM dd, yyyyMM/dd/yyPMAMDecemberNovemberOctoberSeptemberAugustJulyJuneAprilMarchFebruaryJanuaryDecNovOctSepAugJulJunMayAprMarFebJanSaturdayFridayThursdayWednesdayTuesdayMondaySundaySatFriThuWedTueMonSunKERNEL32.DLLFlsFreeFlsSetValueFlsGetValueFlsAlloc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ccsUTF-8UTF-16LEUNICODECorExitProcessmscoree.dllruntime error TLOSS error SING error DOMAIN error R6033 - Attempt to use MSIL code from this assembly during native code initialization This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. R6032 - not enough space for locale information R6031 - Attempt to initialize the CRT more than once. This indicates a bug in your application. R6030 - CRT not initialized R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data R6010 - abort() has been called R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point support not loaded `  hh8x8p !xyzMicrosoft Visual C++ Runtime Library ...<program name unknown>Runtime Error! Program:  IqI`B `BYnYntancossinmodffloorceilatanexp10acosasinloglog10exppow  EEE00P('8PW700PP (`h`hhhxppwpp ((((( H h(((( H H  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~e+000GetProcessWindowStationGetUserObjectInformationWGetLastActivePopupGetActiveWindowMessageBoxWUSER32.DLL_nextafter_logb_yn_y1_y0frexpfmod_hypot_cabsldexpfabssqrtatan2tanhcoshsinhSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecTZCONOUT$1#QNAN1#INF1#IND1#SNANCHI_SQD_PARSTDEV_DESTDEV_BSTDEV_ASTDEV_LSTDEV_ZSTDEV_YSTDEV_XMEAN_DELAB_DE_2000LAB_DE_CMCLAB_DE_94LAB_DELAB_HLAB_CLAB_BLAB_ALAB_LXYY_CAPYXYY_XXYY_YXYZ_ZXYZ_YXYZ_XSPECTRAL_DECSPECTRAL_PCTSPECTRAL_NMRGB_BRGB_GRGB_RD_MAJOR_FILTERD_VISD_BLUED_GREEND_REDCMYK_KCMYK_YCMYK_MCMYK_CSTRINGSAMPLE_IDTABLE_NAMETABLE_DESCRIPTORCOLORANTTARGET_TYPECOMPUTATIONAL_PARAMETERWEIGHTING_FUNCTIONPOLARIZATIONFILTERMEASUREMENT_GEOMETRYCHISQ_DOFSAMPLE_BACKINGPRINT_CONDITIONSMEASUREMENT_SOURCEINSTRUMENTATIONMATERIALSERIALPROD_DATEMANUFACTUREMANUFACTURERDIFFUSE_GEOMETRYDESCRIPTORCREATEDFILE_DESCRIPTORORIGINATORNUMBER_OF_SETSNUMBER_OF_FIELDSKEYWORDEND_DATA_FORMATEND_DATADATA_FORMAT_IDENTIFIERBEGIN_DATA_FORMATBEGIN_DATA.INCLUDE$INCLUDE2tfmftamtsvctulctsvc2tfmtsvctulctsvc BAmtsvc0B2A BAmtsvcftamtsvc0B2A BAmtsvctulctsvc0B2A BAmtsvctulctsvcftamtsvc0A2B ABmtsvc0A2B ABmtsvcftamtsvc0A2B ABmtsvctulctsvc0A2B ABmtsvcftamtsvctulctsvc??? ? ? ?{Gz?p?p???{Gz?{Gz?{Gz?Y@o@o@``Y@Y@Y@0B2A1B2A2B2A1B2A0B2D1B2D2B2D3B2D0A2B1A2B2A2B1A2B0D2B1D2B2D2B3D2B2??"e??????0$     **** CORRUPTED FORMAT STRING ***%s: Line %d, %s%sInvalid hexadecimal numberInvalid binary number%dUnrecognized character: 0x%xToo many recursion levelsFilename expectedFile path too longrtFile %s not foundExpected separatorTable %d out of sequenceAddToList: out of memoryTable %d is out of sequence%.10gCGATS.17# AllocateDataFormat: Unknown NUMBER_OF_FIELDSAllocateDataFormat: Unable to allocate dataFormat arrayMore than NUMBER_OF_FIELDS fields.AllocateDataSet: Unable to allocate data arrayPatch %d out of range, there are %d patchesSample %d out of range, there are %d samples Write to file error in CGATS parserWrite to memory overflows in CGATS parser # # %c # %s "%s" 0x%X 0x%B "%s,%s"Unknown write mode %dBEGIN_DATA_FORMAT END_DATA_FORMAT BEGIN_DATA """END_DATA wtSample type expectedCount mismatch. NUMBER_OF_FIELDS was %d, found %d Sample data expectedCount mismatch. NUMBER_OF_SETS was %d, found %d Keyword expectedProperty data expectedInvalid value '%s' for property '%s'.Invalid value for property '%s'.expected keyword or identifierUndefined DATA_FORMATLABEL%s %d %sFile '%s' not foundCouldn't add more patches '%s' %255s %d %255sColorSpace mismatchCouldn't link '%d' profilesUnsupported intent '%d'Couldn't create tone curve of more than 65530 entriesCouldn't create tone curve with zero segments and no tableInvalid parametric curve type %dcmsSmoothToneCurve: too many points.Wrong position of PCS. 1..255 expected, %d found.Invalid angleToo many input channels (%d channels, max=%d)Unsupported interpolation (%d->%d channels)Read from memory error. Got %d bytes, block should be of %d bytesToo few data; probably corrupted profileCouldn't read profile from NULL pointerCouldn't allocate %ld bytes for profileUnknown access mode '%c'Read error. Got %d bytes, block should be of %d bytesSeek error; probably corrupted filerbwbCouldn't create '%s'Tag '%x' already existsToo many tags (%d)not an ICC profile, invalid signaturer(Internal) no handler for tag %xCouldn't write type '%s'wCorrupted tag '%s''%s' Inconsistent number of items: expected %d, got %dUnsupported tag '%x'Unsupported type '%s' for tag '%s'Malformed struct in type '%s' for tag '%s'Unexpected direction (%d)Color %d out of range; ignored(internal) Attempt to PatchLUT on non-lut MPE(internal) %d Channels are not supported on PatchLUTUnrecognized pluginplugin needs Little CMS %d, current version is %dUnrecognized plugin type '%X'%02x%%!PS-Adobe-3.0 %% %% %s %% Source: %s %% %s %% Created: %s%%%%BeginResource /BlackPoint [%f %f %f] /WhitePoint [%f %f %f] dup 0.0 lt { pop 0.0 } if dup 1.0 gt { pop 1.0 } if PerceptualRelativeColorimetricAbsoluteColorimetricSaturationUndefined/RenderingIntent (%s) /RangeABC [ 0 1 0 1 0 1] /DecodeABC [ {100 mul 16 add 116 div } bind {255 mul 128 sub 500 div } bind {255 mul 128 sub 200 div } bind ] /MatrixABC [ 1 1 1 1 0 0 0 0 -1] /RangeLMN [ -0.236 1.254 0 1 -0.635 1.640 ] /DecodeLMN [ {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.964200 mul} bind {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse } bind {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.824900 mul} bind { %g exp } bind { [%d ] dup length 1 sub 3 -1 roll mul floor cvi exch ceiling cvi 3 index get 4 -1 roll 3 1 roll sub add 65535 div } bind [ %d [ [ /CIEBasedA << /DecodeA /MatrixA [ 0.9642 1.0000 0.8249 ] /RangeLMN [ 0.0 0.9642 0.0 1.0000 0.0 0.8249 ] >> [ /CIEBasedABC << /DecodeABC [ /MatrixABC [ %.6f %.6f %.6f [ /CIEBasedDEF <> [ /CIEBasedDEFG /DecodeDEF [ /Table >> Cannot create transform Profile -> LabOnly 3, 4 channels supported for CSA. This profile has %d channels.Profile is not suitable for CSA. Unsupported colorspace.Named color CSA(colorlistcomment) (%s) (Prefix) [ (Pantone ) (PANTONE ) ] (Suffix) [ ( CV) ( CVC) ( C) ] (%s) [ %.3f %.3f %.3f ] Invalid output color space/MatrixPQR [1 0 0 0 1 0 0 0 1 ] /RangePQR [ -0.5 2 -0.5 2 -0.5 2 ] %% Absolute colorimetric -- encode to relative to maximize LUT usage /TransformPQR [ {0.9642 mul %g div exch pop exch pop exch pop exch pop} bind {1.0000 mul %g div exch pop exch pop exch pop exch pop} bind {0.8249 mul %g div exch pop exch pop exch pop exch pop} bind ] %% Bradford Cone Space /MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] %% VonKries-like transform in Bradford Cone Space /TransformPQR [ {exch pop exch 3 get mul exch pop exch 3 get div} bind {exch pop exch 4 get mul exch pop exch 4 get div} bind {exch pop exch 5 get mul exch pop exch 5 get div} bind ] %% VonKries-like transform in Bradford Cone Space plus BPC /TransformPQR [ {4 index 3 get div 2 index 3 get mul 2 index 3 get 2 index 3 get sub mul 2 index 3 get 4 index 3 get 3 index 3 get sub mul sub 3 index 3 get 3 index 3 get exch sub div exch pop exch pop exch pop exch pop } bind {4 index 4 get div 2 index 4 get mul 2 index 4 get 2 index 4 get sub mul 2 index 4 get 4 index 4 get 3 index 4 get sub mul sub 3 index 4 get 3 index 4 get exch sub div exch pop exch pop exch pop exch pop } bind {4 index 5 get div 2 index 5 get mul 2 index 5 get 2 index 5 get sub mul 2 index 5 get 4 index 5 get 3 index 5 get sub mul sub 3 index 5 get 3 index 5 get exch sub div exch pop exch pop exch pop exch pop } bind ] /RangeLMN [ -0.635 2.0 0 2 -0.635 2.0 ] /EncodeLMN [ { 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind { 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind { 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind /MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] /EncodeABC [ { 116 mul 16 sub 100 div } bind { 500 mul 128 add 256 div } bind { 200 mul 128 add 256 div } bind Cannot create transform Lab -> Profile in CRD creation/ColorRenderingType 1 /RenderTable %d {} bind /Current exch /ColorRendering defineresource pop %.3fNamed profile(colorlistcomment) (%s) (%s) [ %s ] >> /Current exch /HPSpotTable defineresource pop Color Rendering Dictionary (CRD)%%%%EndResource %% CRD End spherical value out of range quadrant out of rangeUnknown parametric curve type '%d'Multisegment or Inverted parametric curves cannot be writtenUnsupported parametric curvemultiLocalizedUnicodeType of len != 12 is not supported.LUT8 needs 256 entries on prelinearizationLUT is not suitable to be saved as LUT8LUT is not suitable to be saved as LUT16Unknown precision of '%d'Unknown curve type '%s'Cannot save floating point data, CLUT are 8 or 16 bit onlyLUT is not suitable to be saved as LutAToBLUT is not suitable to be saved as LutBToAToo many colorants '%d'Too many named colors '%d'Too many device coordinates '%d'PSnm#0#1#2#3Unknown curve element type '%s' found.Unknown MPE type '%s' found.Found unknown MPE type '%s'Unsupported number of channels for VCGT '%d'Unsupported bit depth for VCGT '%d'Unsupported tag type for VCGT '%d'Unknown record length in dictionary '%d'USenNo copyright, use freelyLittle CMSRGB built-ingray built-inLinearization built-inLinearization built-inInkLimiting: Only CMYK currently supportedInkLimiting: Limit should be between 0..400ink-limiting built-inink-limiting built-inLab identity built-inXYZ identity built-insRGB built-inBCHS built-inNULL profile built-inNamed color devicelinkdevicelinkcmsWhitePointFromTemp: invalid tempUnsupported raster formatNULL input profiles on transformWrong input color space on transformWrong output color space on transformCouldn't link the profilesWrong number of profiles. 1..255 expected, %d found.cmsChangeBuffersFormat works only on transforms created originally with at least 16 bits of precision.A?@?@@f@v@0@-DT! @@?p@@>p?$@@cܥL@_@`Y@_@Y@`@z@ffffff@" p?{a?a{?UUUUUU?_B{ %@|T#??o@-C6?>MbP??OMbP?8Bty>?Iطq:Vwdu?=Զa?$[]N?j@+0d?rQ?\ѿ6`|?'gVD`u?Wӽx?ifF@ޚ?ByC濠ܾޑ0_I?6#\^n0 0 @y@zG!;@?و%@"??G5?0hyR?UnF?s_鳒?-d! Y- @/MҴ?Mozӛ??ffffff@Q?rq?\(\?= ףp=?(\?NN @ffffff@\Fߑ????r@i@)\m@d@ffffff??333333?Gz^@p= #4@SܥL@p@V@"@&@(@4@yzG?%kn'?P3u?$9C?͵?8?C>?d]Fx?~jth?_Qڋ?HPx?)\(?2%DioĿt$~?HPs?rq?W@E@?@333333?Gz??(\@SW?5l?"uq @Y8m?j@kt=?E_?@@!rhm@eA( @X@@@0q@I@Q?O@{Gz?Q?(\?>@ ףp= ?ff@9@@333333#@LK@&{?fffff:@]@؀q@Mb`?{Gzt?@@A>@xD l@`@s@F@@Affffff?zG??= ףp=?Gz??@'1Z?Ps?B>٬?"~j?<,Ԋ?|a2U? ףp= ??A@Q?e@u@d@vAE?q@'1Z?K7A?d@p= ף?@s@!rh?a@Mb?Y@J +?\@Q??@{Gz?a@)\(?o@X@y&1?<,Ԛm?Q?~jt?y&1?b=y?K7 g?'†Wʢ?"~j?ı.nTĿ镲 ?T?@p@{Gz???@0?{Gz?333333@xdx?ܵ?I!rг?JQ/#?` T?333333@@h@Q?333333?333333?333333?Q?{Gz??@vӂg?M]sl?yCnk???330C5h!??  ?5h!>@@?1mm.s,)?'>?i i1mm.s?,)'><i? i<ȿmb<Z" ?.ҿu<ϕk|?c}ؿ,g<ysh:?;8]+޿ ^ty[g?h9; %S ? %L jh2yʿ;f 4݋<Xw$3Ak ł<࿇暳s)f09N,J?8v<uZEeu?F2k Wt-v1-VA`пgY?\ϗb buпP/Ye?&%ѣ@}<P/Ye&%ѣ@}<?gY\ϗb bu?-v1?-VA`?uZEeuF2k Wt?N,J8v<?暳s?)f09?Xw$3?Ak ł<?2y?;f 4݋<?S Ϳ %L jh?ty[gſh9; %?ysh:;8]+޿ ^?ϕk|c}ؿ,g<?Z" .ҿu<?i i<ȿmb<?1mm.s,)'><?UUUUUUſ?UUUUUU?*llV4V>>m0_$@8C`a=`a=@T!?sp.c;`C?i i1mm.s?,)'><i? i<ȿmb<Z" ?.ҿu<ϕk|?c}ؿ,g<ysh:?;8]+޿ ^ty[g?h9; %S ? %L jh2yʿ;f 4݋<Xw$3Ak ł<࿇暳s)f09N,J?8v<uZEeu?F2k Wt-v1-VA`пgY?\ϗb buпP/Ye?&%ѣ@}<P/Ye&%ѣ@}<?gY\ϗb bu?-v1?-VA`?uZEeuF2k Wt?N,J8v<?暳s?)f09?Xw$3?Ak ł<?2y?;f 4݋<?S Ϳ %L jh?ty[gſh9; %?ysh:;8]+޿ ^?ϕk|c}ؿ,g<?Z" .ҿu<?i i<ȿmb<?1mm.s,)'><?UUUUUUſ?UUUUUU?*llV4V>>m0_$@8C`a=`a=@T!?sp.c;`CŠ#4<Xq?BJ=_D?mKF=Ԛ?s7E=@[-?K>d:=g?Z}=\uI=s~Q?g:"(N='?9~$O1=q?n1%=p)k?vʌ=`X:?q.W =Pi?g>M=[?ֲa M=_3?֍,uXO=`Ɏ/?1w<=>'eH?` JJ=x~? Š&=n`Y?˖C=0?]/=# g?uP= ?,lC=5q?ᕎ =@Dӳ?-[@=pt4z? فpnJ=l?i.Eg<y~??O^'=(Tt? x;;=P?RRF=&?XɣN=J@?~=Ht=c?AzU"=nB?U_lj7=]?qBD= h0"ؿ؍ IQn0ؿHn&E:׿E7D57A׿ %@@ֿ*Z+ASTֿrJD@ӑտNT?w3kտr19]ԿFKm8C!`Կ1y2Y@ Կ*(FEO5iѿ4Q!?: пC +pڌXпxO,C"пAri<q~_ϿR v== ~οo6@mPͿ d+>̿9Ȓ[\˿8B'&˿i[JZOʿbnEDE}ɿUgc@H ȿUZdL" ǿ=Dj!ǿVm:A@`3ƿ~%3kcſ"7M Ŀp>)%ÿ\Bjx¿#6HˆQ;`t-¿=]PH0;TaָE&a-#KV\ Vb4M@U@Xx55@캿D=iI^Gי'7AԷUNҪ1GƴO\C@+Bg:IB@Zu}M:(T!1n]vQ<)8h׾o$|f+x2S74U".mœFB*6IKS_ D 5M-Cz1}BKG c?OfFL,sX4I+xm w$VcE?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@??????????????????????@????@?? ? ?@ ? ? ? ?@ ? ? ? ?@ ? ? ? ?@ ? ? ? ?@ ? ???@????@????@????@????@????@????@????@????@??|)P!?Ua0 !=+34?2Q =`??7; WJ=`7E?'a%C=MkK?*b<=0ɘP?*,z?=d|S?KT'K=R_V?bF=p^BY?E&= 9&\?߇N9=p _?߭Eb2]A=`?f#I=hb?O2H`3=c?e2a1=ԆLe?2RM=f?A3_:=@0h?[2ieO=i?1rK=k?Σ-=l?̈[8=yQm?>|W8A=՛ko?>qݲN=np?z m{ M=t)(q?m,SD=E`q?}e?=ԩr?}~:fE=PSs?&A=& t?,&8=tt?eѴN@=PSu?^p?o40=!9v?W?N=<v?+#GYM=Hw?qC@=Pex?0 &ے=Xy?8=<8y?!({=H= z?d,GB=6K{?ҝE M=¾|?w31!=L|?^X-F=Dfqsg~7(7s6uE(ruv.E,t]rLvOrȚ p&qC"5FzIqoOjpO|Wp Ȯ/N#D5pO/3N^o I!` 1nDCE"Bnu ^!EWΉm--0lNpCP&`l™J$akN8xj[ -=8Riy~ La8i[٬zF+ghk<@8KHg}7ڒ%gmg1&3{4WfI8e}OA8ӌd_\MP4.dó6D@uc2I{bTWB`b.r}X]La6MŞr<P`;ƥIpη_v<-UF^9M\̢N3e[ݻk>? #JY&-DPZXm4I@@7eWO/jUIlNAi0TWq uIbR|m:K@VNQ?|G¾d0`7O84 fXLzB7CIp4"%H`/G: WI`ȃ1D/!H@%OAA9"Ix'8RؔN;*2]@G?E?@D?C?A?@?>?@=?;?@:?8?7?6?4?3?1?@0?.?@-?+?*?)?'?&?$?@#?!?@ ???????@??@???? ? ? ?@ ??@???????@??@?????@??@??@?????@??@???????@??@???????@??@???????@??@???????@??@?????@??@??@?????@??@????????@????@????@???@????@???@????@???????@????@???@????@???????@??~?~?@}?|?|?@{?z?y?y?@x?w?v?@v?u?t?t?@s?r?q?q?@p?o?o?@n?m?l?l?@k?j?j?@i?h?g?g?@f?e?d?d?c?b?b?@a?`?_?_?@^?]?]?@\?[?Z?Z?@Y?X?W?W?V?U?U?@T?S?R?R?@Q?P?P?@O?N?M?M?@L?K?J?@J?I?H?H?@G?>Y"G=>.ܶlWE=>jۋbH=>^IL#=>(i&I=h>gݟP'E=p>*)D=>&N=x>.;ĝ@=H >Qyu3= >c-=@>Rݡ:==> {M= @>C=` >bߔB= >tdC=$ >9O=>B NC=>j&==>.<=@>`lrG=>!ls1= ?8= @? mN=&?UtQ$=X?PiB{^C=?Gv72=@?qlm+=?!.j7/=d?L C=`?m +=P ?5Od% =?r<(?*Hga2=@ ?CI=r ?sA=* ?GTiA= ` ?KՋD=r" ?Dp`q=L$ ?~G=4& ? D='@?E=)?'P<+?f4±cC=@?qWn{;=?gC i8=?XKD=P?G;R"=7?8΁3,'1D=B'@?:+NB=(?1z@J=*?3=+`?wU4?=,?DO=;.?$b=/p?g)([|X>=H1?>gV=20?OBO=*4?bPA<5?e4=f7@?|[{~*L=9?ٹE=t:?G]C='"?@(6F=? #?'A=@H#?43 A=Ax#?uN}*J=C#?)r7Yr7=]D#?.K="=rE$?r =F0$?3=1Z1=H`$?h|=G=gI$?ܩN:=J$?4e 6=K$?{<9==M%?uYPwH=NH%?-*8=Px%?yF.=-Q%?\9 ;,=R%?29Zd@=T&?~YK| =sU0&?WĻ(J=VX&?RIG=X&?W N=Y&?g'9=[&? D"^=2)$7bmLMӿ( ԏS4_ >L|/ dM4g±82qڜ1ןqaPCQo%;9?_0Cw4g%6L&M;k@ڿ81ABۏ1uB)_ Y/󓎣,:x.Ճ^-?ޯԝI-:]=O>O#w_jُBn(+E -V~|_B}_ACK!ܨY:_5Gt/C$>#Hm- MVn@QU^tA$OÄþiM@K8|;2@(AV64oꬠTC9?&u.~Fs:4Կ J_L II=@0(ן$.G?}3Rʏ3 !|.4*ڟ ඄}3? G"jm >; *O 0 :O 2K;޿ Q`4_  ZD 69* F_ T3ʢK M.֢> @_@? 1\hUXpM&Jx3Ҭx/h 78Lv]EV 3Bv9r_cM*5&Lq3?:R$@܎$=K'\?Ъ{b>$EvCIw8R'FG_j,)+jBD|_ `kA%'r BL TE_GO#i# ;^طH?6(`JJ\HB5``.11\?QDTӾ96оk< xE˾CqTR;ǾdG GgL@_h %? SS@b?Wdy>c*GPAiFC.ֿ?53=?͸)a,?][SqnC?nwtӰY?eus<)kp?&<ߑțuE?Ka<>?5a1xH<lX? aJ.?#Eq<1 ?1j<1Lp!?|眊<dD8`<;f?Ud4ݛ u? gVr/eT'?*mb|L%?2L#FG?AֈDh?ԛƟfNJ?:|”<۠*B?&KVU?An/X0y?c~˛m?Lyc>=*p%??C;0=|?Ix"<=`` ә?yM==orO?+C==v?R1=PQ ?Ӏb=@P?5M[g?=V?d+[7=?nB>= kz*?w#8=0nط?C#7={?D i00=ˮf?j -=x)?}z= ? 0$=HV?o=X a?;M_8=@? 5=?^@'=L$?/r(==ɥ%?Nl,"=@\r??t8=85R?ӇӜ=L. ? >)g=Ը3U?Ӱ== ?hXg+=og?X=ذ0?{fHn=<w?y5s3R6=)?a8< O4W?4bV0=L?4@=@?Xۓ4=Tk?>_(=?*o=@[c?,=$4b?dO"=lx?#608=ě&m*?ɉh"0=בl?n6ѯ{<9[P?cezb<$?F 8"=8B.?0gǓW.=??BBxPD?X1=??0C0CΗ5@=)d U5j%5j?~@5wzA.lzZ? |?Q-8>=޶W?0 k8=ޮp? x9=>.ښ?pn5=Yح? Q*=c??b6=Y?T?=>?W!=@-32?Dz=p(?vP(=`?US?>=e?g7=`ŀ'?bͬ/=^s?}#=Jwk?zn=N ָ?LN9=@$"3?5Wg4p6=T?Nv$^)=&?.)<lB?M%=`j?w*= <śm?E2=ެ> ?E=t?? =OQ?w(@ <0?Ac 0=Pyp?dry?=St)?4K >=$?QhBC .=0 ub?-0=?a>-?=?Й,<(lX ?T@b ==P?3h,%=f??# =V ?ߠϡ6=Y?z $=G? $l35=@n?[+3=Rŷ?sdLi==p|?rx"#2=@.?|U2=lԝ?rF=a? 4=Y?sl׼#{ =`~R=?.i1=,? =vX?=p?h}s"= E[ ?%S#[k=7H?j=!V1?}a2=jq?20J5=?5=x¾/@?"B <1=iz?\-!y!=X0z?~b>==:? #.X'=HBO&?(~=xbb? .=Cq?y7i9+= v?:=0 ?2ض8=xPD?X1=??Q?Q?????????]?]?P?P? ? ?U?U?(?(?`?`?_?_?????z?z?1?1?p?p???(e?(e?@#?@#???`?`?hk?hk?,?,?x?x?????N?N?x?x?p?p???~?~?HN?HN???????p?p?Xi?Xi???????????8?8?s?s?pI?pI?&?&?????o?o? *? *???`?`?Z?Z???0?0???PY?PY???`?`???pm?pm?/?/?????-DT!?-DT!RUUUUU?vF$I?ɿ3YE?#Yqn?; 9/I?hKd?81UH!G?#$0|f?KRVnTUUUU?~I$I?gɿHB;E?q{雮?x֚? @ @??@>1|MC8C8C0<0<+eGW@+eGW@B.?B.?:;=:;=ѱt?ZfUUU?&WU?{?Mu{<`w>,g5RҌ<2ؼcnQU Zsni?տ?2n{a>?? M=?H{? {4r>?Pא?"">?u[?* >??G0_(>?4wb?i^^?(>?0?p3>?@?FM>?8M?BV>?d?}Ba.>?ȴ ?d>?g?ߊ>?@?f\*>?~e?-f>?]%?D G?>? ?\>>?X?1 #>?E?h>???ⳇ>??$ 49>?x8?k0H<>??rش8>?8fm?"m>">?ħ?[?k?"%>??݉@fR8>??T:>?T!?3&F >??<[#>?%?Y:/(A6>??N2>?8O?r!' >?r?8{K>?p?9l9$>? G?aj i9>?T|?'\|#<>?$?}dj#>?Wn?׈MVx:>?,?18o,>?D$? c/ >?@ |?x7|1>?|?9>?p #?IAu=>? s?xٴ4>?p?edf&.>?,?fA>?h*?v2>?$gN?RE\K>?q?'^IE>?DΒ?&aH>?L?&KrQF>?,?#/'>?إ?]Xc?>??Ԯ}>?e.?IdWA>?K?ΐ?>?Xg?4*A>?_?[džJ>??10H>??hc#]G>@,*?Qx F>@@p?ekR.N>@?Ӿn@>@b?O>@$Q/?CJO>@@E?G>@[?3E{A>@Tp?SfIS:>@X΅?B6)1<>@@3?>ځ7>@$?s(N>@@?V 6f=>@(?{>@@(W?-Jg >@?"aPK>@xm ?,Sڤ6>@?6hb">@@-?k,<>@X>?0=>@O?׀IXH>@-_? @>@@n?2E>@P~?=ő8>@lj?[j&,>@L7?x82>@@?c#VB>@0?7ڨ.Y>@P?[p&>@ؔ?h4MA>@@?EplE>@+?o$E>@h?\*K>@?-?B>@@P8?(l|@>@p!?u@J>@@p-?V1> @89?5>@ @ @h)P?R`DOG> @T[?9%K> @Mf?/<>@ @q?Ò?> @{?42G<> @L?Â|/> @Y?s @>@ @k?Òa@> @XS?x(3u8> @?vO,ib> @ȥ?&L͒C>@ @?}L> @X?Lo> @x?-Ϡ9> @s?6FID?9>@ @8J?gsL> @d?y> @?>&09C>@? @@(J?IV C>@`w?^@N>@?#%@>@s?MK>@@D'?ήQ->@.?9 !G>@6?.1>@>?.1NcB> @cE?sǔ1>@@LL?nHN>`@HS?W$>@8Z? Ȃq;>@a?N/[7>@(h?=mC>@0oo?H75M>@Hv?P.#> @|?G7>@@*?#42I>`@?ooJ>@?-#>@?h% F>@@?Rx^D>@PP?s@>@4L?P_! #> @4?:#G>@@L?qg:&J>`@Hɹ?5L$.4>@\w? !1C>@? [<>@D?<=@? ~=@y?B> @?~.4>@@h?u|8>`@E?A8yL;>@h?41C>@{?-+oF>@$?xO>@s?՝mT2>@W?=> @-?î\=>@@?\==`@ ?j\&">@X? 1D>>@?#O#`I>@?}0>@?F\IE>@t{#?ׯ,B> @0'?E ]$>@@,>,?ކ?5>`@0?iIqE>@4?ha;>@9?AD>@.=?̤KFw=@DMA?=@`E?apI0H> @gI?:->@@cM?%Q>`@@UQ?Ly5ښoE>@;U?vg0/>@Y?jv UG>@\?yK>@,`?A%My>@md?H> @ h?pM>@@0k?k}<>`@ho?f7O>@r?}O>@v?+ iI>@@z?bB'=>>@`}?ZM>@?1M> @a?R~=@@t?QNT B>`@x?W3cL>@ g?+(=@D?qJK>@L?;,*>@8!?D>@,O? E> @Du?in]D>@@?%3F>`@P?^F"VM>@?}30}->@@?~F y;>@?l R(>@躰?\7`>@?dg;> @?;Sv@E>@@<|?M>`@Y?|};2>@,0?@$?̯/p">@?\(0>@|?[s$F>@I?dӔV> @T?0)LK>@@h?)5G5>`@XY?|zJ>@@?W޾L?>@0?6:>@<3?QB>@x?7o/M>@Q?KcZ0> @?z-A5>@@Z?"BDcI>`@?`I.>@ L?Ld%>@ ?"l"w =@(??!>@?j^J>@8?ϞH0> @LL?%C>@@T?J+N>`@d?;l>0>@B?^{v@>@Ȋ?@Y˕B>@@?Tl0>@ ?w4n4>@G?oN=;> @h|?L{/>@@< ?Bnu5>`@ ?`,+>@d? 5>@$?l >@C?~+^M>@^?PKQD>@,u?^{#tF> @|?^4K >@@?4O >>`@?XEړ J>@?(gԹ,>@ ?43-spF>@"?P`E5+*>@$?=Q QD> @-DT!?\3&P`n|Ȕޔ,<Rdrȕ0GetLastErrorHeapFreeHeapAllocHeapReAllocDeleteFileAyGetSystemTimeAsFileTimeGetCurrentThreadIdDecodePointerGetCommandLineATerminateProcessGetCurrentProcessUnhandledExceptionFilterSetUnhandledExceptionFilterIsDebuggerPresentEncodePointerIsProcessorFeaturePresentEnterCriticalSection9LeaveCriticalSectionoSetHandleCountdGetStdHandleInitializeCriticalSectionAndSpinCountGetFileTypecGetStartupInfoWDeleteCriticalSectionrGetCPInfoInterlockedIncrementInterlockedDecrementhGetACP7GetOEMCP IsValidCodePageTlsAllocTlsGetValueTlsSetValueTlsFreeGetModuleHandleWsSetLastErrorEGetProcAddressRtlUnwindgMultiByteToWideCharReadFile%WriteFileWideCharToMultiByteGetConsoleCPGetConsoleMode-LCMapStringWRCloseHandleHeapCreateHeapDestroyExitProcessGetModuleFileNameWfSetFilePointerSleepGetModuleFileNameAaFreeEnvironmentStringsWGetEnvironmentStringsWQueryPerformanceCounterGetTickCountGetCurrentProcessIdiGetStringTypeWCreateFileASetStdHandle$WriteConsoleWWFlushFileBuffers?LoadLibraryWRaiseExceptionGetTimeZoneInformationSSetEndOfFileJGetProcessHeapCreateFileWHeapSizedCompareStringWVSetEnvironmentVariableAKERNEL32.dllNNr11L Щ@`gXpg0gp `p@g`g` @PPФgP @`p@@0`0"(#ut sr t`Pp`p p` S`QiH GLJpMLPNMI0Hml`T`SonGDpn n0O`NPOYY@ap@p** + *++a"(vPЌА`"(uPv @@aPpP'p`Pcpo+Pp/L`GGH+JPJI0IK220FE9@:0J0K4`IIP111`200/L ``pv 0@` `! `+`%$@0@ ` p  `@ pzxp ``0`0i@Pi `P[VY0@ed|Ң "8LWpkyɣ٣ F^pդ6DUan}Υ !7L_t¦Ϧݦ1Qbqħۧ )JezӨ-Nrȩ5I`sʪ ';HXep|ū0DZnì $3DRctҭ%AV`tϮ!4Rʯ߯ "3G^qа!5I`u̱۱ !3<UjIJϲ *5DYgvճ!8Rqմ&8Miy͵2ISalŶٶ(:Ri{ط ,?RiԸ &<I`x¹ڹ +6JXf  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0LCMS2.DLL_cms15Fixed16toDouble_cms8Fixed8toDouble_cmsAdjustEndianess16_cmsAdjustEndianess32_cmsAdjustEndianess64_cmsCalloc_cmsDecodeDateTimeNumber_cmsDefaultICCintents_cmsDoubleTo15Fixed16_cmsDoubleTo8Fixed8_cmsDupMem_cmsEncodeDateTimeNumber_cmsFree_cmsICCcolorSpace_cmsIOPrintf_cmsLCMScolorSpace_cmsMAT3eval_cmsMAT3identity_cmsMAT3inverse_cmsMAT3isIdentity_cmsMAT3per_cmsMAT3solve_cmsMalloc_cmsMallocZero_cmsPipelineSetOptimizationParameters_cmsRead15Fixed16Number_cmsReadAlignment_cmsReadFloat32Number_cmsReadTypeBase_cmsReadUInt16Array_cmsReadUInt16Number_cmsReadUInt32Number_cmsReadUInt64Number_cmsReadUInt8Number_cmsReadXYZNumber_cmsRealloc_cmsStageAllocPlaceholder_cmsVEC3cross_cmsVEC3distance_cmsVEC3dot_cmsVEC3init_cmsVEC3length_cmsVEC3minus_cmsWrite15Fixed16Number_cmsWriteAlignment_cmsWriteFloat32Number_cmsWriteTypeBase_cmsWriteUInt16Array_cmsWriteUInt16Number_cmsWriteUInt32Number_cmsWriteUInt64Number_cmsWriteUInt8Number_cmsWriteXYZNumbercmsAdaptToIlluminantcmsAllocNamedColorListcmsAllocProfileSequenceDescriptioncmsAppendNamedColorcmsBFDdeltaEcmsBuildGammacmsBuildParametricToneCurvecmsBuildSegmentedToneCurvecmsBuildTabulatedToneCurve16cmsBuildTabulatedToneCurveFloatcmsCIE2000DeltaEcmsCIE94DeltaEcmsCIECAM02DonecmsCIECAM02ForwardcmsCIECAM02InitcmsCIECAM02ReversecmsCMCdeltaEcmsChangeBuffersFormatcmsChannelsOfcmsCloseIOhandlercmsCloseProfilecmsCreateBCHSWabstractProfilecmsCreateBCHSWabstractProfileTHRcmsCreateExtendedTransformcmsCreateGrayProfilecmsCreateGrayProfileTHRcmsCreateInkLimitingDeviceLinkcmsCreateInkLimitingDeviceLinkTHRcmsCreateLab2ProfilecmsCreateLab2ProfileTHRcmsCreateLab4ProfilecmsCreateLab4ProfileTHRcmsCreateLinearizationDeviceLinkcmsCreateLinearizationDeviceLinkTHRcmsCreateMultiprofileTransformcmsCreateMultiprofileTransformTHRcmsCreateNULLProfilecmsCreateNULLProfileTHRcmsCreateProfilePlaceholdercmsCreateProofingTransformcmsCreateProofingTransformTHRcmsCreateRGBProfilecmsCreateRGBProfileTHRcmsCreateTransformcmsCreateTransformTHRcmsCreateXYZProfilecmsCreateXYZProfileTHRcmsCreate_sRGBProfilecmsCreate_sRGBProfileTHRcmsD50_XYZcmsD50_xyYcmsDeleteTransformcmsDeltaEcmsDesaturateLabcmsDetectBlackPointcmsDetectTACcmsDictAddEntrycmsDictAlloccmsDictDupcmsDictFreecmsDictGetEntryListcmsDictNextEntrycmsDoTransformcmsDupNamedColorListcmsDupProfileSequenceDescriptioncmsDupToneCurvecmsEstimateGammacmsEvalToneCurve16cmsEvalToneCurveFloatcmsFloat2LabEncodedcmsFloat2LabEncodedV2cmsFloat2XYZEncodedcmsFormatterForColorspaceOfProfilecmsFormatterForPCSOfProfilecmsFreeNamedColorListcmsFreeProfileSequenceDescriptioncmsFreeToneCurvecmsFreeToneCurveTriplecmsGBDAlloccmsGBDFreecmsGDBAddPointcmsGDBCheckPointcmsGDBComputecmsGetAlarmCodescmsGetColorSpacecmsGetDeviceClasscmsGetEncodedICCversioncmsGetHeaderAttributescmsGetHeaderCreationDateTimecmsGetHeaderFlagscmsGetHeaderManufacturercmsGetHeaderModelcmsGetHeaderProfileIDcmsGetHeaderRenderingIntentcmsGetNamedColorListcmsGetPCScmsGetPostScriptCRDcmsGetPostScriptCSAcmsGetPostScriptColorResourcecmsGetProfileContextIDcmsGetProfileInfocmsGetProfileInfoASCIIcmsGetProfileVersioncmsGetSupportedIntentscmsGetTagCountcmsGetTagSignaturecmsGetToneCurveParametricTypecmsGetTransformContextID_cmsGetTransformInputFormat@4_cmsGetTransformOutputFormat@4cmsIT8AlloccmsIT8DefineDblFormatcmsIT8EnumDataFormatcmsIT8EnumPropertiescmsIT8FindDataFormatcmsIT8FreecmsIT8GetDatacmsIT8GetDataDblcmsIT8GetDataRowColcmsIT8GetDataRowColDblcmsIT8GetPatchNamecmsIT8GetPropertycmsIT8GetPropertyDblcmsIT8GetSheetTypecmsIT8LoadFromFilecmsIT8LoadFromMemcmsIT8SaveToFilecmsIT8SaveToMemcmsIT8SetCommentcmsIT8SetDatacmsIT8SetDataDblcmsIT8SetDataFormatcmsIT8SetDataRowColcmsIT8SetDataRowColDblcmsIT8SetPropertyDblcmsIT8SetPropertyHexcmsIT8SetPropertyStrcmsIT8SetPropertyUncookedcmsIT8SetSheetTypecmsIT8SetTablecmsIT8SetTableByLabelcmsIT8TableCountcmsIsCLUTcmsIsIntentSupportedcmsIsMatrixShapercmsIsTagcmsIsToneCurveDescendingcmsIsToneCurveLinearcmsIsToneCurveMonotoniccmsIsToneCurveMultisegmentcmsJoinToneCurvecmsLCh2LabcmsLab2LChcmsLab2XYZcmsLabEncoded2FloatcmsLabEncoded2FloatV2cmsLinkTagcmsMD5computeIDcmsMLUalloccmsMLUdupcmsMLUfreecmsMLUgetASCIIcmsMLUgetTranslationcmsMLUgetWidecmsMLUsetASCIIcmsMLUsetWidecmsNamedColorCountcmsNamedColorIndexcmsNamedColorInfocmsOpenIOhandlerFromFilecmsOpenIOhandlerFromMemcmsOpenIOhandlerFromNULLcmsOpenIOhandlerFromStreamcmsOpenProfileFromFilecmsOpenProfileFromFileTHRcmsOpenProfileFromIOhandlerTHRcmsOpenProfileFromMemcmsOpenProfileFromMemTHRcmsOpenProfileFromStreamcmsOpenProfileFromStreamTHRcmsPipelineAlloccmsPipelineCatcmsPipelineCheckAndRetreiveStagescmsPipelineDupcmsPipelineEval16cmsPipelineEvalFloatcmsPipelineEvalReverseFloatcmsPipelineFreecmsPipelineGetPtrToFirstStagecmsPipelineGetPtrToLastStagecmsPipelineInputChannelscmsPipelineInsertStagecmsPipelineOutputChannelscmsPipelineSetSaveAs8bitsFlagcmsPipelineStageCountcmsPipelineUnlinkStagecmsPlugincmsReadRawTagcmsReadTagcmsReverseToneCurvecmsReverseToneCurveExcmsSaveProfileToFilecmsSaveProfileToIOhandlercmsSaveProfileToMemcmsSaveProfileToStreamcmsSetAdaptationStatecmsSetAlarmCodescmsSetColorSpacecmsSetDeviceClasscmsSetEncodedICCversioncmsSetHeaderAttributescmsSetHeaderFlagscmsSetHeaderManufacturercmsSetHeaderModelcmsSetHeaderProfileIDcmsSetHeaderRenderingIntentcmsSetLogErrorHandlercmsSetPCScmsSetProfileVersioncmsSignalErrorcmsSliceSpace16cmsSliceSpaceFloatcmsSmoothToneCurvecmsStageAllocCLut16bitcmsStageAllocCLut16bitGranularcmsStageAllocCLutFloatcmsStageAllocCLutFloatGranularcmsStageAllocIdentitycmsStageAllocMatrixcmsStageAllocToneCurvescmsStageDatacmsStageDupcmsStageFreecmsStageInputChannelscmsStageNextcmsStageOutputChannelscmsStageSampleCLut16bitcmsStageSampleCLutFloatcmsStageTypecmsTagLinkedTocmsTempFromWhitePointcmsTransform2DeviceLinkcmsUnregisterPluginscmsWhitePointFromTempcmsWriteRawTagcmsWriteTagcmsXYZ2LabcmsXYZ2xyYcmsXYZEncoded2FloatcmsfilelengthcmsstrcasecmpcmsxyY2XYZN@D        ! 5A CPR S WY l m pr   )    ``  abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~Cxtplhd`XPH<0( |p\P H@80( |tld\TLD<, t|h@,dddddHPh@Lus?;Zx0Nm:Yw/Ml c c c c c c c c c c..HJ. 5 @ @@@@ @P@$@@ @4@N@ p+ŝi@]%O@qוC)@D@<զIx@oGAkU'9p|Bݎ~QCv)/&D(DJzEeǑF e uuvHMXB䧓9;5SM]=];Z] T7aZ%]g']݀nLɛ R`%u?q= ףp= ף?Zd;On?,eX?#GGŧ?@il7?3=BzՔ?aw̫?/L[Mľ?S;uD?g9Eϔ?$#⼺;1az?aUY~S|_?/D?$?9'*?}d|FU>c{#Tw=:zc%C1@eN?$@M-[?&kCҿD@'@j?_$\?9m4ӿI@1=a?׻?xԿN@\r)?;ǀ?;ֿQ@s?£#?Nё\CؿT@x#?X?K46ڿV@ 0*?;Tގ?VܿY@*g\?eN?WL޿@_@N?++MJ?מYb@R%?|'f?@ee@ʡE?S c A?BC+i@r3܀?˾+?_LJ l@a?r3܀?d]Fx@o@Sg?Pf?H}80q@?4KԲ?Br@Aǘ?X? F%uPt@Y?vq -?z6u@ .V`?X0_^?zpw@L7A`?I +?' y@ek?~7?Jtz@5?w?S: |@)?x?a?k }@St$?=?7A`0!@@gDio?a?S&h@]Fx ?0AC?K7A/0@ ?= ?33333S7@@j?zFw?(\bD@h˹W?a?]SCAb@SCAe`tsvc`(+$$ftam+-$$tulc-/$$mrhcPorlc23fs  23fup@txetp`csedvrucpParappPmitd`1tfmp`p2tfm`p trlc`@P@2lcn`P@P`culmpqesp`P` gis0psaem0atad BAm@ `p  ABm `p@ dfbp`idrc`!"tepm0`1`pnrcs"`#$weiv $$$ ZYXpp xpP@disp P``tcid>0@@BPBtgcv@478090B2A2tfm BAm1tfm1B2A2tfm BAm1tfmh2B2A2tfm BAm1tfm0A2B2tfm ABm1tfm01A2B2tfm ABm1tfm2A2B2tfm ABm1tfmZYXr ZYX\ZYXg ZYXZYXb ZYX$CRTrvrucarapx`CRTgvrucarapx`CRTbvrucarapx`Ptlacmitdgrattxetdahc 23fs|mrhcmrhcorlcorlcDtrlctrlctolctrlc trpctxetculmcsedpmitdmitddnmdcsedculmtxet8ddmdcsedculmtxettmag2tfm ABm1tfmCRTkvrucarap`dimul ZYXtpkb ZYX,tptw ZYX2lcn2lcn0erp2tfm ABm1tfmX1erp2tfm ABm1tfm2erp2tfm ABm1tfm csedcsedculmtxetqespqesphcet gisLsiic gis0gir gis2gir gisxsaemsaem0dspatad@1dspatad2dspatad3dspatadls2spatadi2spatad4deuvcsedculmtxet dfb dfbidrcidrc`0B2Dtepm1B2Dtepm(2B2Dtepm3B2Dtepm0D2BtepmT1D2Btepm2D2Btepm3D2BtepmdrcscsedweivweivHnrcsnrcstgcvtgcvatemtcidtdispdispJ0]I]CPd@^@ a @XpX X XXPVVWPUVU@U!S! T!@`T!T!DU'RgR \ \\]["Z\@p\@\" ["@P["["D[/ZoYJ@hJhI@iIi@d@fJxI@y@y@{ ww@x wqr0s s `u@ uD v @v `tsu@uD`vut10m1m!n! @o!@o!0p!Dpgj'k 0xx@x Px pxtttvw@0wD`w"q" @q"q"q2Pn2n/plojJ I JI@g}@@g@p0GO@5  lmeeeef`f iPerceptualVRelative colorimetricVSaturationV Absolute colorimetricV Perceptual preserving black inkY$ Relative colorimetric preserving black inkY0 Saturation preserving black inkY< Perceptual preserving black plane@`HRelative colorimetric preserving black plane@`TSaturation preserving black plane@`t`PD80$th\H<0( |pd\TLD<4(sqrtcossin?powloglog10atan? 8Ph  0\3Z\4VS_VERSION_INFOStringFileInfo040904e4Comments8 CompanyNameMarti MariaLFileDescriptionlcms color engine(FileVersion2.3*InternalNamelcms^LegalCopyrightCopyright Marti Maria 2011(LegalTrademarks< OriginalFilenamelcms2.dll PrivateBuildNProductNameLittleCMS color engine: ProductVersion2, 0, 3, 0 SpecialBuildDVarFileInfo$Translation  PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGX40%0:0E0[0j0}00000000 11/171A1M1U1]1}12-2=2M2W2a2o2w2222222 33 3M3U33334 444T4Z4k4q4~44444444445 55&595A5Y5l5z555555555 66K6a6m666666637=7H7T7f7w7}77778 88'8-8O8W8g8o888888899G9X9h9p9z99999:::%:-:M::: ;;';1;?;G;O;;;;<< <,<8<< X00N1s1222334$4n5u5^66677/78z8y9::: :::X::;e;t;x;|;;;=Q?000!0B0H0f00W1123/3e3354I44J5^5y555 666666Y7_7p777777777778'818j8q88888959F9_9h999q;;;>???????@T000 011k2%33A44444445)5>5$669::7;<<=V=\==B??PP142j22r4 6q88999 9999:;;(<:>>>>>>>`pM0?1S2h3333F4J44466666666666667 77$707L7l777778869:9C9W9999R:a::;<.=5=pl!00000111 11111 1$1(1,1014181\2223333-4<44425@57679s9~9999:$:M:S:W;;;<>H11f1>222245!6666(7W7p778<9d9s99:<>>z?800K1_1n111H2v2z2222334&6667B1M23334M6667819N9]:;;;<=K=S=_=g=s={=============> >>> >$>(>,>0>4>5???I?S?]???T0,1s11111132o283U3q333444$4.4444446866678>>><v002#2g224466888]9h:::::;;< <<=De0j0o03 33466677u8z88:[:::::;;[??H]0001121W132S2q2v22222313@3H3g34G5(6/69999-:<::;5779: 856*606U666 77677777>>>????0<0001(1L1 33677788(88888<999::c::@d0111111}3P4U4[4444=7,828o8w888999:::Q:<6W>>>>>> ?P$001(1|111>P>W>]>g>t>z>`T00.1`1g1m1w111 4$4`4j444 555t6x666688R8i8t888888 99R99p,9999;;;<<<==R>Y>_>??0!0'0T1X1111L3P333345,5B5J5555555,6666#7[777777B9W9]9d9r9999:::Q:W:d:s::::; ;$;<;B;g;m;s;;;;;;<<<>#>:>R>X>? ?[?a??@30<0w0}0000 1F22323b3s3|3333333(4444444 55#5)545E5K5V5h5n5y555555555?6E6P6a6g6r6666666666677778888(808>8H8V8b8j8x888899999y:::::,;2;8;F;\;;;;;;;;;; 2><>H>R>>d?h?l?p?t?x?|????????????????????????|122 22222 2$2(2,2024282<2@2D2H2L2P2T2333444 44444 4$4(4,4044484666J99[:~::;<===>>>!?/?R?X??????????0'000000000011'121w111111111 22"212;2L2P2T2X2a2l2w22222222222#3E3U3i33333333333444$4/4:4E4S4^4i4t4444444456Y77777888+868A8`8k8888888 9959@999999999999:-:O:x:::;;I;O;<<$==5>d>>>>>>W?j?0000011-181C1X1q1|11111111111233e3}33333333344444 5{55555%6B6Z666{77$889D::;;;F?8011"272u2222303n3333444444556L70=00022{2222244566-6A666667b9991:::W;;<<=00336:a> Z1233%4J8N999:4<,)1d33334g5E6i6W7p<2=>>3?8?Z?_? 800"1|11111$282L2`2t255678D9;=??0,20Q01d123M4456.848N8X888n>@xg222221333333+494>4T4Y4444*7R77Q888J99999:;;C;g;; >D?P?`?m?x???????P|000h0m12233M586677088 9999: :#:-:3:=:E:O:W:h:w:::::::::::0;6;@;P;};;;T=`=o={=======`D0000112D33$44-6 8888888N::::<2===>>p%00012L2d2k2s2x2|22222222333 33Z3`3d3h3l3333344 4-4W4444444444445556c7j7778!868A888T9`999Y:e:::7<<>l1Z334w5}5555556*77g8m8y888f99*:C:::::<>>>>>>>+?_?e?k?????90f0000000011111#1+131;1G1P1U1[1e1n1y111111111223V4t444 5$5r8b9::;=;=>?B?F?J?N?R?V?Z?g?y?,Y0c0p000001!1D1W12W3u33::33'6.6@6F6`6o6|666666666 7 7*7P77777788%9K9Q9{9999#:-:X:p:::::";E;K;`;;;;;R<,=4=L=g==1>n>>?(0@0M0W0e0n0x00000001R111 2'2p222s3333333334$4*43484G4n44445W55566\7v777778 888$8*838?8E8M8S8_8e8r8|888888)9/9Y9_9e9{9993:V:`:::::;;;$;*;0;?;M;W;];s;x;;;;;;;;;;;;;;;;;;;;; < <&<.<3<;<@6?070M000J1|112223n33 4$4+43484<4@4i444444444445 5$5(5,5555555556I6P6T6X6\6`6d6h6l666666:77889Q:V:\:`:f:j:p:t:z:~:::::::::::U;>)>u1y1}11111111111122D2v22A3M3V3\3b3n3t3}3334#464A4F4X4b4g44444444445;5E5k5r5555;6N6`6666666747A7V77778E8R8X888889E99999N:::::: ;;>;G;P;f;;;;;;;;;;;< 5H5Y5d5$757=7C7H7N77778P8\8k8p888,:O:\:h:p:x::::: ;;0;N;;;<<<<<<<<=>5>1?N?s?|01+1L1U1|11111111222<2C2\2p2v22222J3j344/4M4a4g4445{9999999 ::1:C:U:g:y:::::::? |0000000(1H14>4w444445'559: ::::::: ;[;n;;;;!<:">`>X?e????0H0N0X00h1\2d2334455;5I55566677f8G999:::6;M;=U>>@34Z888888888889M9R99999999:!:'::::::M;R;[;j;;;;;<*<5<;>$>3>9>R>Z>d>q>y>>>>>>>>>? ???(?4?A?H?S?[?c?l?u?????`\L0Y0r0000011244495@55566667 77;8i89;!=h=n={====j>,?T?d????p9<<1==[>j?00 11111!2-2<2H2223^34 525r5}5555R66677Q7Z7b777)878I8T888888Y9g9y9999999:B::;;$;>>>>?? ?2?r????0-0?0R0000 1p122K3L4\4m4u444455555566>6667i7u777777738?8888p99:u: ;;&;8;H;T;S<[<<<<<<===#=A=M=c=l=u==$>^>r>>>>>?4??N0_00000$1H1Q1\111+2k2r2223i334G444 5545w566667/8q88888199%:w:::;Y;a;i;q;;;;<<%<1<<<<<<<======>>q>}>>>>>?:?B?_?o?{??xJ0R0f0p000000011 1,181D1P1111111122$202<2t22222222263>3F3N333333V4I5\555556H014181<1@1L1P111h6?$?,?4?:B:F:d ;;X;x;;;;;<80>P>l>p>>>>>>??8?X?t?x????0 011h8h9l9p9t9x9|999999999999999999999999999999999::: :: :$:(:,:0:4:8:<:@:D:H:L:P:T:X:\:`:d:h:l:p:t:x:|::::::::::::::::::::(;8;H;X;h;;;;;;;;;;@=D=H=L=P=T=X=\=`=d=>>>>>>>>>>>>>>>>>>>>>2 222$2,242<2D2L2T2\2d2l2t2|2222222222222233<8\8d8h8l8p8|8888888888888888888899 999$9(9,909<9D9H9L9P9\9d9h9l9p9|999999999999999999999:: :::$:(:,:0:<:D:H:L:P:\:d:h:l:p:|:::::::::::::::::::::;; ;;;$;(;,;0;<;D;H;L;P;\;d;h;l;p;|;;;;;;;;;;;;;;;;;;;;;<< <<<$<(<,<0<<,>>>>>T?X???x0 00000H1L112x22@334h4l4405455555\6`66(777P8T88899|999H::;t;;<<<=h==0>>>>\??($000P112|22D33 4p455(545@5L5X5d5p5|555555555556 66$606<6H6T6`6l6x6666666666667 77$707<7H7T7`7l7x77777777777788 8,888D8P8\8h8t888888888888999(949@9L9X9d9p9|9999999999999::: ::::::::::::;;<<>>??0 0(1,14282@3D3L4P4X5`5h5p5x555555555555555556666 6(60686<6@6D6H6L6P6T6X6\6`6d6h6l6p6t6x6|66666666666666666666666lcms2-2.5/utils/delphi/delphidemo.dpr0000644002406300000240000000026112163060730017150 0ustar mariamausersprogram delphidemo; uses Forms, demo1 in 'demo1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. lcms2-2.5/utils/common/0000755002406300000240000000000012163061353014355 5ustar mariamauserslcms2-2.5/utils/common/utils.h0000644002406300000240000000647012163060730015673 0ustar mariamausers //--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- #ifndef _lcms_utils_h // Deal with Microsoft's attempt at deprecating C standard runtime functions #ifdef _MSC_VER # if (_MSC_VER >= 1400) # ifndef _CRT_SECURE_NO_DEPRECATE # define _CRT_SECURE_NO_DEPRECATE # endif # ifndef _CRT_SECURE_NO_WARNINGS # define _CRT_SECURE_NO_WARNINGS # endif # endif #endif #include "lcms2.h" #include #include #include #include #include #include #include #include // Avoid warnings #define UTILS_UNUSED_PARAMETER(x) ((void)x) // Init the utility functions void InitUtils(const char* PName); // Fatal Error (print the message and exit(1))--------------------------------------------- extern int Verbose; void FatalError(const char *frm, ...); // xgetopt() interface ------------------------------------------------------------- extern int xoptind; extern char *xoptarg; extern int xopterr; extern char SW; int xgetopt(int argc, char *argv[], char *optionS); // The stock profile utility ------------------------------------------------------- cmsHPROFILE OpenStockProfile(cmsContext ContextID, const char* File); // The print info utility ---------------------------------------------------------- void PrintProfileInformation(cmsHPROFILE h); // --------------------------------------------------------------------------------- void PrintRenderingIntents(void); void PrintBuiltins(void); // --------------------------------------------------------------------------------- cmsBool SaveMemoryBlock(const cmsUInt8Number* Buffer, cmsUInt32Number dwLen, const char* Filename); // --------------------------------------------------------------------------------- // Return a pixel type on depending on the number of channels int PixelTypeFromChanCount(int ColorChannels); // ------------------------------------------------------------------------------ // Return number of channels of pixel type int ChanCountFromPixelType(int ColorChannels); #define _lcms_utils_h #endif lcms2-2.5/utils/common/xgetopt.c0000644002406300000240000000327312163060730016216 0ustar mariamausers/* getopt.c */ #include #include #include int xoptind = 1; /* index of which argument is next */ char *xoptarg; /* pointer to argument of current option */ int xopterr = 0; /* allow error message */ static char *letP = NULL; /* remember next option char's location */ char SW = '-'; /* DOS switch character, either '-' or '/' */ /* Parse the command line options, System V style. Standard option syntax is: option ::= SW [optLetter]* [argLetter space* argument] */ int xgetopt(int argc, char *argv[], char *optionS) { unsigned char ch; char *optP; if (SW == 0) { SW = '/'; } if (argc > xoptind) { if (letP == NULL) { if ((letP = argv[xoptind]) == NULL || *(letP++) != SW) goto gopEOF; if (*letP == SW) { xoptind++; goto gopEOF; } } if (0 == (ch = *(letP++))) { xoptind++; goto gopEOF; } if (':' == ch || (optP = strchr(optionS, ch)) == NULL) goto gopError; if (':' == *(++optP)) { xoptind++; if (0 == *letP) { if (argc <= xoptind) goto gopError; letP = argv[xoptind++]; } xoptarg = letP; letP = NULL; } else { if (0 == *letP) { xoptind++; letP = NULL; } xoptarg = NULL; } return ch; } gopEOF: xoptarg = letP = NULL; return EOF; gopError: xoptarg = NULL; errno = EINVAL; if (xopterr) perror ("get command line option"); return ('?'); } lcms2-2.5/utils/common/vprf.c0000644002406300000240000002206712163060730015503 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "utils.h" int Verbose = 0; static char ProgramName[256] = ""; void FatalError(const char *frm, ...) { va_list args; va_start(args, frm); fprintf(stderr, "[%s fatal error]: ", ProgramName); vfprintf(stderr, frm, args); fprintf(stderr, "\n"); va_end(args); exit(1); } // Show errors to the end user (unless quiet option) static void MyErrorLogHandler(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text) { if (Verbose >= 0) fprintf(stderr, "[%s]: %s\n", ProgramName, Text); UTILS_UNUSED_PARAMETER(ErrorCode); UTILS_UNUSED_PARAMETER(ContextID); } void InitUtils(const char* PName) { strncpy(ProgramName, PName, sizeof(ProgramName)); ProgramName[sizeof(ProgramName)-1] = 0; cmsSetLogErrorHandler(MyErrorLogHandler); } // Virtual profiles are handled here. cmsHPROFILE OpenStockProfile(cmsContext ContextID, const char* File) { if (!File) return cmsCreate_sRGBProfileTHR(ContextID); if (cmsstrcasecmp(File, "*Lab2") == 0) return cmsCreateLab2ProfileTHR(ContextID, NULL); if (cmsstrcasecmp(File, "*Lab4") == 0) return cmsCreateLab4ProfileTHR(ContextID, NULL); if (cmsstrcasecmp(File, "*Lab") == 0) return cmsCreateLab4ProfileTHR(ContextID, NULL); if (cmsstrcasecmp(File, "*LabD65") == 0) { cmsCIExyY D65xyY; cmsWhitePointFromTemp( &D65xyY, 6504); return cmsCreateLab4ProfileTHR(ContextID, &D65xyY); } if (cmsstrcasecmp(File, "*XYZ") == 0) return cmsCreateXYZProfileTHR(ContextID); if (cmsstrcasecmp(File, "*Gray22") == 0) { cmsToneCurve* Curve = cmsBuildGamma(ContextID, 2.2); cmsHPROFILE hProfile = cmsCreateGrayProfileTHR(ContextID, cmsD50_xyY(), Curve); cmsFreeToneCurve(Curve); return hProfile; } if (cmsstrcasecmp(File, "*Gray30") == 0) { cmsToneCurve* Curve = cmsBuildGamma(ContextID, 3.0); cmsHPROFILE hProfile = cmsCreateGrayProfileTHR(ContextID, cmsD50_xyY(), Curve); cmsFreeToneCurve(Curve); return hProfile; } if (cmsstrcasecmp(File, "*srgb") == 0) return cmsCreate_sRGBProfileTHR(ContextID); if (cmsstrcasecmp(File, "*null") == 0) return cmsCreateNULLProfileTHR(ContextID); if (cmsstrcasecmp(File, "*Lin2222") == 0) { cmsToneCurve* Gamma = cmsBuildGamma(0, 2.2); cmsToneCurve* Gamma4[4]; cmsHPROFILE hProfile; Gamma4[0] = Gamma4[1] = Gamma4[2] = Gamma4[3] = Gamma; hProfile = cmsCreateLinearizationDeviceLink(cmsSigCmykData, Gamma4); cmsFreeToneCurve(Gamma); return hProfile; } return cmsOpenProfileFromFileTHR(ContextID, File, "r"); } // Help on available built-ins void PrintBuiltins(void) { fprintf(stderr, "\nBuilt-in profiles:\n\n"); fprintf(stderr, "\t*Lab2 -- D50-based v2 CIEL*a*b\n" "\t*Lab4 -- D50-based v4 CIEL*a*b\n" "\t*Lab -- D50-based v4 CIEL*a*b\n" "\t*XYZ -- CIE XYZ (PCS)\n" "\t*sRGB -- sRGB color space\n" "\t*Gray22 - Monochrome of Gamma 2.2\n" "\t*Gray30 - Monochrome of Gamma 3.0\n" "\t*null - Monochrome black for all input\n" "\t*Lin2222- CMYK linearization of gamma 2.2 on each channel\n"); } // Auxiliar for printing information on profile static void PrintInfo(cmsHPROFILE h, cmsInfoType Info) { char* text; int len; len = cmsGetProfileInfoASCII(h, Info, "en", "US", NULL, 0); if (len == 0) return; text = malloc(len * sizeof(char)); if (text == NULL) return; cmsGetProfileInfoASCII(h, Info, "en", "US", text, len); if (strlen(text) > 0) printf("%s\n", text); free(text); } // Displays the colorant table static void PrintColorantTable(cmsHPROFILE hInput, cmsTagSignature Sig, const char* Title) { cmsNAMEDCOLORLIST* list; int i, n; if (cmsIsTag(hInput, Sig)) { printf("%s:\n", Title); list = cmsReadTag(hInput, Sig); if (list == NULL) { printf("(Unavailable)\n"); return; } n = cmsNamedColorCount(list); for (i=0; i < n; i++) { char Name[cmsMAX_PATH]; cmsNamedColorInfo(list, i, Name, NULL, NULL, NULL, NULL); printf("\t%s\n", Name); } printf("\n"); } } void PrintProfileInformation(cmsHPROFILE hInput) { PrintInfo(hInput, cmsInfoDescription); PrintInfo(hInput, cmsInfoManufacturer); PrintInfo(hInput, cmsInfoModel); PrintInfo(hInput, cmsInfoCopyright); if (Verbose > 2) { PrintColorantTable(hInput, cmsSigColorantTableTag, "Input colorant table"); PrintColorantTable(hInput, cmsSigColorantTableOutTag, "Input colorant out table"); } printf("\n"); } // ----------------------------------------------------------------------------- void PrintRenderingIntents(void) { cmsUInt32Number Codes[200]; char* Descriptions[200]; cmsUInt32Number n, i; fprintf(stderr, "%ct rendering intent:\n\n", SW); n = cmsGetSupportedIntents(200, Codes, Descriptions); for (i=0; i < n; i++) { fprintf(stderr, "\t%u - %s\n", Codes[i], Descriptions[i]); } fprintf(stderr, "\n"); } // ------------------------------------------------------------------------------ cmsBool SaveMemoryBlock(const cmsUInt8Number* Buffer, cmsUInt32Number dwLen, const char* Filename) { FILE* out = fopen(Filename, "wb"); if (out == NULL) { FatalError("Cannot create '%s'", Filename); return FALSE; } if (fwrite(Buffer, 1, dwLen, out) != dwLen) { FatalError("Cannot write %ld bytes to %s", dwLen, Filename); return FALSE; } if (fclose(out) != 0) { FatalError("Error flushing file '%s'", Filename); return FALSE; } return TRUE; } // ------------------------------------------------------------------------------ // Return a pixel type on depending on the number of channels int PixelTypeFromChanCount(int ColorChannels) { switch (ColorChannels) { case 1: return PT_GRAY; case 2: return PT_MCH2; case 3: return PT_MCH3; case 4: return PT_CMYK; case 5: return PT_MCH5; case 6: return PT_MCH6; case 7: return PT_MCH7; case 8: return PT_MCH8; case 9: return PT_MCH9; case 10: return PT_MCH10; case 11: return PT_MCH11; case 12: return PT_MCH12; case 13: return PT_MCH13; case 14: return PT_MCH14; case 15: return PT_MCH15; default: FatalError("What a weird separation of %d channels?!?!", ColorChannels); return -1; } } // ------------------------------------------------------------------------------ // Return number of channels of pixel type int ChanCountFromPixelType(int ColorChannels) { switch (ColorChannels) { case PT_GRAY: return 1; case PT_RGB: case PT_CMY: case PT_Lab: case PT_YUV: case PT_YCbCr: return 3; case PT_CMYK: return 4 ; case PT_MCH2: return 2 ; case PT_MCH3: return 3 ; case PT_MCH4: return 4 ; case PT_MCH5: return 5 ; case PT_MCH6: return 6 ; case PT_MCH7: return 7 ; case PT_MCH8: return 8 ; case PT_MCH9: return 9 ; case PT_MCH10: return 10; case PT_MCH11: return 11; case PT_MCH12: return 12; case PT_MCH13: return 12; case PT_MCH14: return 14; case PT_MCH15: return 15; default: FatalError("Unsupported color space of %d channels", ColorChannels); return -1; } } lcms2-2.5/utils/jpgicc/0000755002406300000240000000000012163061555014330 5ustar mariamauserslcms2-2.5/utils/jpgicc/iccjpeg.h0000644002406300000240000000523712163060730016106 0ustar mariamausers/* * iccprofile.h * * This file provides code to read and write International Color Consortium * (ICC) device profiles embedded in JFIF JPEG image files. The ICC has * defined a standard format for including such data in JPEG "APP2" markers. * The code given here does not know anything about the internal structure * of the ICC profile data; it just knows how to put the profile data into * a JPEG file being written, or get it back out when reading. * * This code depends on new features added to the IJG JPEG library as of * IJG release 6b; it will not compile or work with older IJG versions. * * NOTE: this code would need surgery to work on 16-bit-int machines * with ICC profiles exceeding 64K bytes in size. See iccprofile.c * for details. */ #include /* needed to define "FILE", "NULL" */ #include "jpeglib.h" /* * This routine writes the given ICC profile data into a JPEG file. * It *must* be called AFTER calling jpeg_start_compress() and BEFORE * the first call to jpeg_write_scanlines(). * (This ordering ensures that the APP2 marker(s) will appear after the * SOI and JFIF or Adobe markers, but before all else.) */ extern void write_icc_profile JPP((j_compress_ptr cinfo, const JOCTET *icc_data_ptr, unsigned int icc_data_len)); /* * Reading a JPEG file that may contain an ICC profile requires two steps: * * 1. After jpeg_create_decompress() but before jpeg_read_header(), * call setup_read_icc_profile(). This routine tells the IJG library * to save in memory any APP2 markers it may find in the file. * * 2. After jpeg_read_header(), call read_icc_profile() to find out * whether there was a profile and obtain it if so. */ /* * Prepare for reading an ICC profile */ extern void setup_read_icc_profile JPP((j_decompress_ptr cinfo)); /* * See if there was an ICC profile in the JPEG file being read; * if so, reassemble and return the profile data. * * TRUE is returned if an ICC profile was found, FALSE if not. * If TRUE is returned, *icc_data_ptr is set to point to the * returned data, and *icc_data_len is set to its length. * * IMPORTANT: the data at **icc_data_ptr has been allocated with malloc() * and must be freed by the caller with free() when the caller no longer * needs it. (Alternatively, we could write this routine to use the * IJG library's memory allocator, so that the data would be freed implicitly * at jpeg_finish_decompress() time. But it seems likely that many apps * will prefer to have the data stick around after decompression finishes.) */ extern boolean read_icc_profile JPP((j_decompress_ptr cinfo, JOCTET **icc_data_ptr, unsigned int *icc_data_len)); lcms2-2.5/utils/jpgicc/jpgicc.c0000644002406300000240000010455112163060730015733 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // This program does apply profiles to (some) JPEG files #include "utils.h" #include "jpeglib.h" #include "iccjpeg.h" // Flags static cmsBool BlackPointCompensation = FALSE; static cmsBool IgnoreEmbedded = FALSE; static cmsBool GamutCheck = FALSE; static cmsBool lIsITUFax = FALSE; static cmsBool lIsPhotoshopApp13 = FALSE; static cmsBool lIsEXIF; static cmsBool lIsDeviceLink = FALSE; static cmsBool EmbedProfile = FALSE; static const char* SaveEmbedded = NULL; static int Intent = INTENT_PERCEPTUAL; static int ProofingIntent = INTENT_PERCEPTUAL; static int PrecalcMode = 1; static int jpegQuality = 75; static cmsFloat64Number ObserverAdaptationState = 0; static char *cInpProf = NULL; static char *cOutProf = NULL; static char *cProofing = NULL; static FILE * InFile; static FILE * OutFile; static struct jpeg_decompress_struct Decompressor; static struct jpeg_compress_struct Compressor; static struct my_error_mgr { struct jpeg_error_mgr pub; // "public" fields void* Cargo; // "private" fields } ErrorHandler; cmsUInt16Number Alarm[4] = {128,128,128,0}; // Out of mem static void OutOfMem(size_t size) { FatalError("Out of memory on allocating %d bytes.", size); } static void my_error_exit (j_common_ptr cinfo) { char buffer[JMSG_LENGTH_MAX]; (*cinfo->err->format_message) (cinfo, buffer); FatalError(buffer); } /* Definition of the APPn Markers Defined for continuous-tone G3FAX The application code APP1 initiates identification of the image as a G3FAX application and defines the spatial resolution and subsampling. This marker directly follows the SOI marker. The data format will be as follows: X'FFE1' (APP1), length, FAX identifier, version, spatial resolution. The above terms are defined as follows: Length: (Two octets) Total APP1 field octet count including the octet count itself, but excluding the APP1 marker. FAX identifier: (Six octets) X'47', X'33', X'46', X'41', X'58', X'00'. This X'00'-terminated string "G3FAX" uniquely identifies this APP1 marker. Version: (Two octets) X'07CA'. This string specifies the year of approval of the standard, for identification in the case of future revision (for example, 1994). Spatial Resolution: (Two octets) Lightness pixel density in pels/25.4 mm. The basic value is 200. Allowed values are 100, 200, 300, 400, 600 and 1200 pels/25.4 mm, with square (or equivalent) pels. NOTE The functional equivalence of inch-based and mm-based resolutions is maintained. For example, the 200 200 */ static cmsBool IsITUFax(jpeg_saved_marker_ptr ptr) { while (ptr) { if (ptr -> marker == (JPEG_APP0 + 1) && ptr -> data_length > 5) { const char* data = (const char*) ptr -> data; if (strcmp(data, "G3FAX") == 0) return TRUE; } ptr = ptr -> next; } return FALSE; } // Save a ITU T.42/Fax marker with defaults on boundaries. This is the only mode we support right now. static void SetITUFax(j_compress_ptr cinfo) { unsigned char Marker[] = "G3FAX\x00\0x07\xCA\x00\xC8"; jpeg_write_marker(cinfo, (JPEG_APP0 + 1), Marker, 10); } // Build a profile for decoding ITU T.42/Fax JPEG streams. // The profile has an additional ability in the input direction of // gamut compress values between 85 < a < -85 and -75 < b < 125. This conforms // the default range for ITU/T.42 -- See RFC 2301, section 6.2.3 for details // L* = [0, 100] // a* = [85, 85] // b* = [75, 125] // These functions does convert the encoding of ITUFAX to floating point // and vice-versa. No gamut mapping is performed yet. static void ITU2Lab(const cmsUInt16Number In[3], cmsCIELab* Lab) { Lab -> L = (double) In[0] / 655.35; Lab -> a = (double) 170.* (In[1] - 32768.) / 65535.; Lab -> b = (double) 200.* (In[2] - 24576.) / 65535.; } static void Lab2ITU(const cmsCIELab* Lab, cmsUInt16Number Out[3]) { Out[0] = (cmsUInt16Number) floor((double) (Lab -> L / 100.)* 65535. ); Out[1] = (cmsUInt16Number) floor((double) (Lab -> a / 170.)* 65535. + 32768. ); Out[2] = (cmsUInt16Number) floor((double) (Lab -> b / 200.)* 65535. + 24576. ); } // These are the samplers-- They are passed as callbacks to cmsStageSampleCLut16bit() // then, cmsSample3DGrid() will sweel whole Lab gamut calling these functions // once for each node. In[] will contain the Lab PCS value to convert to ITUFAX // on PCS2ITU, or the ITUFAX value to convert to Lab in ITU2PCS // You can change the number of sample points if desired, the algorithm will // remain same. 33 points gives good accurancy, but you can reduce to 22 or less // is space is critical #define GRID_POINTS 33 static int PCS2ITU(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { cmsCIELab Lab; cmsLabEncoded2Float(&Lab, In); cmsDesaturateLab(&Lab, 85, -85, 125, -75); // This function does the necessary gamut remapping Lab2ITU(&Lab, Out); return TRUE; UTILS_UNUSED_PARAMETER(Cargo); } static int ITU2PCS( register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { cmsCIELab Lab; ITU2Lab(In, &Lab); cmsFloat2LabEncoded(Out, &Lab); return TRUE; UTILS_UNUSED_PARAMETER(Cargo); } // This function does create the virtual input profile, which decodes ITU to the profile connection space static cmsHPROFILE CreateITU2PCS_ICC(void) { cmsHPROFILE hProfile; cmsPipeline* AToB0; cmsStage* ColorMap; AToB0 = cmsPipelineAlloc(0, 3, 3); if (AToB0 == NULL) return NULL; ColorMap = cmsStageAllocCLut16bit(0, GRID_POINTS, 3, 3, NULL); if (ColorMap == NULL) return NULL; cmsPipelineInsertStage(AToB0, cmsAT_BEGIN, ColorMap); cmsStageSampleCLut16bit(ColorMap, ITU2PCS, NULL, 0); hProfile = cmsCreateProfilePlaceholder(0); if (hProfile == NULL) { cmsPipelineFree(AToB0); return NULL; } cmsWriteTag(hProfile, cmsSigAToB0Tag, AToB0); cmsSetColorSpace(hProfile, cmsSigLabData); cmsSetPCS(hProfile, cmsSigLabData); cmsSetDeviceClass(hProfile, cmsSigColorSpaceClass); cmsPipelineFree(AToB0); return hProfile; } // This function does create the virtual output profile, with the necessary gamut mapping static cmsHPROFILE CreatePCS2ITU_ICC(void) { cmsHPROFILE hProfile; cmsPipeline* BToA0; cmsStage* ColorMap; BToA0 = cmsPipelineAlloc(0, 3, 3); if (BToA0 == NULL) return NULL; ColorMap = cmsStageAllocCLut16bit(0, GRID_POINTS, 3, 3, NULL); if (ColorMap == NULL) return NULL; cmsPipelineInsertStage(BToA0, cmsAT_BEGIN, ColorMap); cmsStageSampleCLut16bit(ColorMap, PCS2ITU, NULL, 0); hProfile = cmsCreateProfilePlaceholder(0); if (hProfile == NULL) { cmsPipelineFree(BToA0); return NULL; } cmsWriteTag(hProfile, cmsSigBToA0Tag, BToA0); cmsSetColorSpace(hProfile, cmsSigLabData); cmsSetPCS(hProfile, cmsSigLabData); cmsSetDeviceClass(hProfile, cmsSigColorSpaceClass); cmsPipelineFree(BToA0); return hProfile; } #define PS_FIXED_TO_FLOAT(h, l) ((float) (h) + ((float) (l)/(1<<16))) static cmsBool ProcessPhotoshopAPP13(JOCTET FAR *data, int datalen) { int i; for (i = 14; i < datalen; ) { long len; unsigned int type; if (!(GETJOCTET(data[i] ) == 0x38 && GETJOCTET(data[i+1]) == 0x42 && GETJOCTET(data[i+2]) == 0x49 && GETJOCTET(data[i+3]) == 0x4D)) break; // Not recognized i += 4; // identifying string type = (unsigned int) (GETJOCTET(data[i]<<8) + GETJOCTET(data[i+1])); i += 2; // resource type i += GETJOCTET(data[i]) + ((GETJOCTET(data[i]) & 1) ? 1 : 2); // resource name len = ((((GETJOCTET(data[i]<<8) + GETJOCTET(data[i+1]))<<8) + GETJOCTET(data[i+2]))<<8) + GETJOCTET(data[i+3]); i += 4; // Size if (type == 0x03ED && len >= 16) { Decompressor.X_density = (UINT16) PS_FIXED_TO_FLOAT(GETJOCTET(data[i]<<8) + GETJOCTET(data[i+1]), GETJOCTET(data[i+2]<<8) + GETJOCTET(data[i+3])); Decompressor.Y_density = (UINT16) PS_FIXED_TO_FLOAT(GETJOCTET(data[i+8]<<8) + GETJOCTET(data[i+9]), GETJOCTET(data[i+10]<<8) + GETJOCTET(data[i+11])); // Set the density unit to 1 since the // Vertical and Horizontal resolutions // are specified in Pixels per inch Decompressor.density_unit = 0x01; return TRUE; } i += len + ((len & 1) ? 1 : 0); // Alignment } return FALSE; } static cmsBool HandlePhotoshopAPP13(jpeg_saved_marker_ptr ptr) { while (ptr) { if (ptr -> marker == (JPEG_APP0 + 13) && ptr -> data_length > 9) { JOCTET FAR* data = ptr -> data; if(GETJOCTET(data[0]) == 0x50 && GETJOCTET(data[1]) == 0x68 && GETJOCTET(data[2]) == 0x6F && GETJOCTET(data[3]) == 0x74 && GETJOCTET(data[4]) == 0x6F && GETJOCTET(data[5]) == 0x73 && GETJOCTET(data[6]) == 0x68 && GETJOCTET(data[7]) == 0x6F && GETJOCTET(data[8]) == 0x70) { ProcessPhotoshopAPP13(data, ptr -> data_length); return TRUE; } } ptr = ptr -> next; } return FALSE; } typedef unsigned short uint16_t; typedef unsigned char uint8_t; typedef unsigned int uint32_t; #define INTEL_BYTE_ORDER 0x4949 #define XRESOLUTION 0x011a #define YRESOLUTION 0x011b #define RESOLUTION_UNIT 0x128 // Read a 16-bit word static uint16_t read16(uint8_t* arr, int pos, int swapBytes) { uint8_t b1 = arr[pos]; uint8_t b2 = arr[pos+1]; return (swapBytes) ? ((b2 << 8) | b1) : ((b1 << 8) | b2); } // Read a 32-bit word static uint32_t read32(uint8_t* arr, int pos, int swapBytes) { if(!swapBytes) { return (arr[pos] << 24) | (arr[pos+1] << 16) | (arr[pos+2] << 8) | arr[pos+3]; } return arr[pos] | (arr[pos+1] << 8) | (arr[pos+2] << 16) | (arr[pos+3] << 24); } static int read_tag(uint8_t* arr, int pos, int swapBytes, void* dest) { // Format should be 5 over here (rational) uint32_t format = read16(arr, pos + 2, swapBytes); // Components should be 1 uint32_t components = read32(arr, pos + 4, swapBytes); // Points to the value uint32_t offset; // sanity if (components != 1) return 0; if (format == 3) offset = pos + 8; else offset = read32(arr, pos + 8, swapBytes); switch (format) { case 5: // Rational { double num = read32(arr, offset, swapBytes); double den = read32(arr, offset + 4, swapBytes); *(double *) dest = num / den; } break; case 3: // uint 16 *(int*) dest = read16(arr, offset, swapBytes); break; default: return 0; } return 1; } // Handler for EXIF data static cmsBool HandleEXIF(struct jpeg_decompress_struct* cinfo) { jpeg_saved_marker_ptr ptr; uint32_t ifd_ofs; int pos = 0, swapBytes = 0; uint32_t i, numEntries; double XRes = -1, YRes = -1; int Unit = 2; // Inches for (ptr = cinfo ->marker_list; ptr; ptr = ptr ->next) { if ((ptr ->marker == JPEG_APP0+1) && ptr ->data_length > 6) { JOCTET FAR* data = ptr -> data; if (memcmp(data, "Exif\0\0", 6) == 0) { data += 6; // Skip EXIF marker // 8 byte TIFF header // first two determine byte order pos = 0; if (read16(data, pos, 0) == INTEL_BYTE_ORDER) { swapBytes = 1; } pos += 2; // next two bytes are always 0x002A (TIFF version) pos += 2; // offset to Image File Directory (includes the previous 8 bytes) ifd_ofs = read32(data, pos, swapBytes); // Search the directory for resolution tags numEntries = read16(data, ifd_ofs, swapBytes); for (i=0; i < numEntries; i++) { uint32_t entryOffset = ifd_ofs + 2 + (12 * i); uint32_t tag = read16(data, entryOffset, swapBytes); switch (tag) { case RESOLUTION_UNIT: if (!read_tag(data, entryOffset, swapBytes, &Unit)) return FALSE; break; case XRESOLUTION: if (!read_tag(data, entryOffset, swapBytes, &XRes)) return FALSE; break; case YRESOLUTION: if (!read_tag(data, entryOffset, swapBytes, &YRes)) return FALSE; break; default:; } } // Proceed if all found if (XRes != -1 && YRes != -1) { // 1 = None // 2 = inches // 3 = cm switch (Unit) { case 2: cinfo ->X_density = (UINT16) floor(XRes + 0.5); cinfo ->Y_density = (UINT16) floor(YRes + 0.5); break; case 1: cinfo ->X_density = (UINT16) floor(XRes * 2.54 + 0.5); cinfo ->Y_density = (UINT16) floor(YRes * 2.54 + 0.5); break; default: return FALSE; } cinfo ->density_unit = 1; /* 1 for dots/inch, or 2 for dots/cm.*/ } } } } return FALSE; } static cmsBool OpenInput(const char* FileName) { int m; lIsITUFax = FALSE; InFile = fopen(FileName, "rb"); if (InFile == NULL) { FatalError("Cannot open '%s'", FileName); } // Now we can initialize the JPEG decompression object. Decompressor.err = jpeg_std_error(&ErrorHandler.pub); ErrorHandler.pub.error_exit = my_error_exit; ErrorHandler.pub.output_message = my_error_exit; jpeg_create_decompress(&Decompressor); jpeg_stdio_src(&Decompressor, InFile); for (m = 0; m < 16; m++) jpeg_save_markers(&Decompressor, JPEG_APP0 + m, 0xFFFF); // setup_read_icc_profile(&Decompressor); fseek(InFile, 0, SEEK_SET); jpeg_read_header(&Decompressor, TRUE); return TRUE; } static cmsBool OpenOutput(const char* FileName) { OutFile = fopen(FileName, "wb"); if (OutFile == NULL) { FatalError("Cannot create '%s'", FileName); } Compressor.err = jpeg_std_error(&ErrorHandler.pub); ErrorHandler.pub.error_exit = my_error_exit; ErrorHandler.pub.output_message = my_error_exit; Compressor.input_components = Compressor.num_components = 4; jpeg_create_compress(&Compressor); jpeg_stdio_dest(&Compressor, OutFile); return TRUE; } static cmsBool Done(void) { jpeg_destroy_decompress(&Decompressor); jpeg_destroy_compress(&Compressor); return fclose(InFile) + fclose(OutFile); } // Build up the pixeltype descriptor static cmsUInt32Number GetInputPixelType(void) { int space, bps, extra, ColorChannels, Flavor; lIsITUFax = IsITUFax(Decompressor.marker_list); lIsPhotoshopApp13 = HandlePhotoshopAPP13(Decompressor.marker_list); lIsEXIF = HandleEXIF(&Decompressor); ColorChannels = Decompressor.num_components; extra = 0; // Alpha = None bps = 1; // 8 bits Flavor = 0; // Vanilla if (lIsITUFax) { space = PT_Lab; Decompressor.out_color_space = JCS_YCbCr; // Fake to don't touch } else switch (Decompressor.jpeg_color_space) { case JCS_GRAYSCALE: // monochrome space = PT_GRAY; Decompressor.out_color_space = JCS_GRAYSCALE; break; case JCS_RGB: // red/green/blue space = PT_RGB; Decompressor.out_color_space = JCS_RGB; break; case JCS_YCbCr: // Y/Cb/Cr (also known as YUV) space = PT_RGB; // Let IJG code to do the conversion Decompressor.out_color_space = JCS_RGB; break; case JCS_CMYK: // C/M/Y/K space = PT_CMYK; Decompressor.out_color_space = JCS_CMYK; if (Decompressor.saw_Adobe_marker) // Adobe keeps CMYK inverted, so change flavor Flavor = 1; // from vanilla to chocolate break; case JCS_YCCK: // Y/Cb/Cr/K space = PT_CMYK; Decompressor.out_color_space = JCS_CMYK; if (Decompressor.saw_Adobe_marker) // ditto Flavor = 1; break; default: FatalError("Unsupported color space (0x%x)", Decompressor.jpeg_color_space); return 0; } return (EXTRA_SH(extra)|CHANNELS_SH(ColorChannels)|BYTES_SH(bps)|COLORSPACE_SH(space)|FLAVOR_SH(Flavor)); } // Rearrange pixel type to build output descriptor static cmsUInt32Number ComputeOutputFormatDescriptor(cmsUInt32Number dwInput, int OutColorSpace) { int IsPlanar = T_PLANAR(dwInput); int Channels = 0; int Flavor = 0; switch (OutColorSpace) { case PT_GRAY: Channels = 1; break; case PT_RGB: case PT_CMY: case PT_Lab: case PT_YUV: case PT_YCbCr: Channels = 3; break; case PT_CMYK: if (Compressor.write_Adobe_marker) // Adobe keeps CMYK inverted, so change flavor to chocolate Flavor = 1; Channels = 4; break; default: FatalError("Unsupported output color space"); } return (COLORSPACE_SH(OutColorSpace)|PLANAR_SH(IsPlanar)|CHANNELS_SH(Channels)|BYTES_SH(1)|FLAVOR_SH(Flavor)); } // Equivalence between ICC color spaces and lcms color spaces static int GetProfileColorSpace(cmsHPROFILE hProfile) { cmsColorSpaceSignature ProfileSpace = cmsGetColorSpace(hProfile); return _cmsLCMScolorSpace(ProfileSpace); } static int GetDevicelinkColorSpace(cmsHPROFILE hProfile) { cmsColorSpaceSignature ProfileSpace = cmsGetPCS(hProfile); return _cmsLCMScolorSpace(ProfileSpace); } // From TRANSUPP static void jcopy_markers_execute(j_decompress_ptr srcinfo, j_compress_ptr dstinfo) { jpeg_saved_marker_ptr marker; /* In the current implementation, we don't actually need to examine the * option flag here; we just copy everything that got saved. * But to avoid confusion, we do not output JFIF and Adobe APP14 markers * if the encoder library already wrote one. */ for (marker = srcinfo->marker_list; marker != NULL; marker = marker->next) { if (dstinfo->write_JFIF_header && marker->marker == JPEG_APP0 && marker->data_length >= 5 && GETJOCTET(marker->data[0]) == 0x4A && GETJOCTET(marker->data[1]) == 0x46 && GETJOCTET(marker->data[2]) == 0x49 && GETJOCTET(marker->data[3]) == 0x46 && GETJOCTET(marker->data[4]) == 0) continue; /* reject duplicate JFIF */ if (dstinfo->write_Adobe_marker && marker->marker == JPEG_APP0+14 && marker->data_length >= 5 && GETJOCTET(marker->data[0]) == 0x41 && GETJOCTET(marker->data[1]) == 0x64 && GETJOCTET(marker->data[2]) == 0x6F && GETJOCTET(marker->data[3]) == 0x62 && GETJOCTET(marker->data[4]) == 0x65) continue; /* reject duplicate Adobe */ jpeg_write_marker(dstinfo, marker->marker, marker->data, marker->data_length); } } static void WriteOutputFields(int OutputColorSpace) { J_COLOR_SPACE in_space, jpeg_space; int components; switch (OutputColorSpace) { case PT_GRAY: in_space = jpeg_space = JCS_GRAYSCALE; components = 1; break; case PT_RGB: in_space = JCS_RGB; jpeg_space = JCS_YCbCr; components = 3; break; // red/green/blue case PT_YCbCr: in_space = jpeg_space = JCS_YCbCr; components = 3; break; // Y/Cb/Cr (also known as YUV) case PT_CMYK: in_space = JCS_CMYK; jpeg_space = JCS_YCCK; components = 4; break; // C/M/Y/components case PT_Lab: in_space = jpeg_space = JCS_YCbCr; components = 3; break; // Fake to don't touch default: FatalError("Unsupported output color space"); return; } if (jpegQuality >= 100) { // avoid destructive conversion when asking for lossless compression jpeg_space = in_space; } Compressor.in_color_space = in_space; Compressor.jpeg_color_space = jpeg_space; Compressor.input_components = Compressor.num_components = components; jpeg_set_defaults(&Compressor); jpeg_set_colorspace(&Compressor, jpeg_space); // Make sure to pass resolution through if (OutputColorSpace == PT_CMYK) Compressor.write_JFIF_header = 1; // Avoid subsampling on high quality factor jpeg_set_quality(&Compressor, jpegQuality, 1); if (jpegQuality >= 70) { int i; for(i=0; i < Compressor.num_components; i++) { Compressor.comp_info[i].h_samp_factor = 1; Compressor.comp_info[i].v_samp_factor = 1; } } } static void DoEmbedProfile(const char* ProfileFile) { FILE* f; size_t size, EmbedLen; cmsUInt8Number* EmbedBuffer; f = fopen(ProfileFile, "rb"); if (f == NULL) return; size = cmsfilelength(f); EmbedBuffer = (cmsUInt8Number*) malloc(size + 1); EmbedLen = fread(EmbedBuffer, 1, size, f); fclose(f); EmbedBuffer[EmbedLen] = 0; write_icc_profile (&Compressor, EmbedBuffer, EmbedLen); free(EmbedBuffer); } static int DoTransform(cmsHTRANSFORM hXForm, int OutputColorSpace) { JSAMPROW ScanLineIn; JSAMPROW ScanLineOut; //Preserve resolution values from the original // (Thanks to Robert Bergs for finding out this bug) Compressor.density_unit = Decompressor.density_unit; Compressor.X_density = Decompressor.X_density; Compressor.Y_density = Decompressor.Y_density; // Compressor.write_JFIF_header = 1; jpeg_start_decompress(&Decompressor); jpeg_start_compress(&Compressor, TRUE); if (OutputColorSpace == PT_Lab) SetITUFax(&Compressor); // Embed the profile if needed if (EmbedProfile && cOutProf) DoEmbedProfile(cOutProf); ScanLineIn = (JSAMPROW) malloc(Decompressor.output_width * Decompressor.num_components); ScanLineOut = (JSAMPROW) malloc(Compressor.image_width * Compressor.num_components); while (Decompressor.output_scanline < Decompressor.output_height) { jpeg_read_scanlines(&Decompressor, &ScanLineIn, 1); cmsDoTransform(hXForm, ScanLineIn, ScanLineOut, Decompressor.output_width); jpeg_write_scanlines(&Compressor, &ScanLineOut, 1); } free(ScanLineIn); free(ScanLineOut); jpeg_finish_decompress(&Decompressor); jpeg_finish_compress(&Compressor); return TRUE; } // Transform one image static int TransformImage(char *cDefInpProf, char *cOutProf) { cmsHPROFILE hIn, hOut, hProof; cmsHTRANSFORM xform; cmsUInt32Number wInput, wOutput; int OutputColorSpace; cmsUInt32Number dwFlags = 0; cmsUInt32Number EmbedLen; cmsUInt8Number* EmbedBuffer; cmsSetAdaptationState(ObserverAdaptationState); if (BlackPointCompensation) { dwFlags |= cmsFLAGS_BLACKPOINTCOMPENSATION; } switch (PrecalcMode) { case 0: dwFlags |= cmsFLAGS_NOOPTIMIZE; break; case 2: dwFlags |= cmsFLAGS_HIGHRESPRECALC; break; case 3: dwFlags |= cmsFLAGS_LOWRESPRECALC; break; default:; } if (GamutCheck) { dwFlags |= cmsFLAGS_GAMUTCHECK; cmsSetAlarmCodes(Alarm); } // Take input color space wInput = GetInputPixelType(); if (lIsDeviceLink) { hIn = cmsOpenProfileFromFile(cDefInpProf, "r"); hOut = NULL; hProof = NULL; } else { if (!IgnoreEmbedded && read_icc_profile(&Decompressor, &EmbedBuffer, &EmbedLen)) { hIn = cmsOpenProfileFromMem(EmbedBuffer, EmbedLen); if (Verbose) { fprintf(stdout, " (Embedded profile found)\n"); PrintProfileInformation(hIn); fflush(stdout); } if (hIn != NULL && SaveEmbedded != NULL) SaveMemoryBlock(EmbedBuffer, EmbedLen, SaveEmbedded); free(EmbedBuffer); } else { // Default for ITU/Fax if (cDefInpProf == NULL && T_COLORSPACE(wInput) == PT_Lab) cDefInpProf = "*Lab"; if (cDefInpProf != NULL && cmsstrcasecmp(cDefInpProf, "*lab") == 0) hIn = CreateITU2PCS_ICC(); else hIn = OpenStockProfile(0, cDefInpProf); } if (cOutProf != NULL && cmsstrcasecmp(cOutProf, "*lab") == 0) hOut = CreatePCS2ITU_ICC(); else hOut = OpenStockProfile(0, cOutProf); hProof = NULL; if (cProofing != NULL) { hProof = OpenStockProfile(0, cProofing); if (hProof == NULL) { FatalError("Proofing profile couldn't be read."); } dwFlags |= cmsFLAGS_SOFTPROOFING; } } if (!hIn) FatalError("Input profile couldn't be read."); if (!hOut) FatalError("Output profile couldn't be read."); // Assure both, input profile and input JPEG are on same colorspace if (cmsGetColorSpace(hIn) != _cmsICCcolorSpace(T_COLORSPACE(wInput))) FatalError("Input profile is not operating in proper color space"); // Output colorspace is given by output profile if (lIsDeviceLink) { OutputColorSpace = GetDevicelinkColorSpace(hIn); } else { OutputColorSpace = GetProfileColorSpace(hOut); } jpeg_copy_critical_parameters(&Decompressor, &Compressor); WriteOutputFields(OutputColorSpace); wOutput = ComputeOutputFormatDescriptor(wInput, OutputColorSpace); xform = cmsCreateProofingTransform(hIn, wInput, hOut, wOutput, hProof, Intent, ProofingIntent, dwFlags); if (xform == NULL) FatalError("Cannot transform by using the profiles"); DoTransform(xform, OutputColorSpace); jcopy_markers_execute(&Decompressor, &Compressor); cmsDeleteTransform(xform); cmsCloseProfile(hIn); cmsCloseProfile(hOut); if (hProof) cmsCloseProfile(hProof); return 1; } // Simply print help static void Help(int level) { fprintf(stderr, "little cms ICC profile applier for JPEG - v3.2 [LittleCMS %2.2f]\n\n", LCMS_VERSION / 1000.0); switch(level) { default: case 0: fprintf(stderr, "usage: jpgicc [flags] input.jpg output.jpg\n"); fprintf(stderr, "\nflags:\n\n"); fprintf(stderr, "%cv - Verbose\n", SW); fprintf(stderr, "%ci - Input profile (defaults to sRGB)\n", SW); fprintf(stderr, "%co - Output profile (defaults to sRGB)\n", SW); PrintRenderingIntents(); fprintf(stderr, "%cb - Black point compensation\n", SW); fprintf(stderr, "%cd<0..1> - Observer adaptation state (abs.col. only)\n", SW); fprintf(stderr, "%cn - Ignore embedded profile\n", SW); fprintf(stderr, "%ce - Embed destination profile\n", SW); fprintf(stderr, "%cs - Save embedded profile as \n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%cc<0,1,2,3> - Precalculates transform (0=Off, 1=Normal, 2=Hi-res, 3=LoRes) [defaults to 1]\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%cp - Soft proof profile\n", SW); fprintf(stderr, "%cm<0,1,2,3> - SoftProof intent\n", SW); fprintf(stderr, "%cg - Marks out-of-gamut colors on softproof\n", SW); fprintf(stderr, "%c!,, - Out-of-gamut marker channel values\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%cq<0..100> - Output JPEG quality\n", SW); fprintf(stderr, "\n"); fprintf(stderr, "%ch<0,1,2,3> - More help\n", SW); break; case 1: fprintf(stderr, "Examples:\n\n" "To color correct from scanner to sRGB:\n" "\tjpgicc %ciscanner.icm in.jpg out.jpg\n" "To convert from monitor1 to monitor2:\n" "\tjpgicc %cimon1.icm %comon2.icm in.jpg out.jpg\n" "To make a CMYK separation:\n" "\tjpgicc %coprinter.icm inrgb.jpg outcmyk.jpg\n" "To recover sRGB from a CMYK separation:\n" "\tjpgicc %ciprinter.icm incmyk.jpg outrgb.jpg\n" "To convert from CIELab ITU/Fax JPEG to sRGB\n" "\tjpgicc in.jpg out.jpg\n\n", SW, SW, SW, SW, SW); break; case 2: PrintBuiltins(); break; case 3: fprintf(stderr, "This program is intended to be a demo of the little cms\n" "engine. Both lcms and this program are freeware. You can\n" "obtain both in source code at http://www.littlecms.com\n" "For suggestions, comments, bug reports etc. send mail to\n" "marti@littlecms.com\n\n"); break; } exit(0); } // The toggles stuff static void HandleSwitches(int argc, char *argv[]) { int s; while ((s=xgetopt(argc,argv,"bBnNvVGgh:H:i:I:o:O:P:p:t:T:c:C:Q:q:M:m:L:l:eEs:S:!:D:d:")) != EOF) { switch (s) { case 'b': case 'B': BlackPointCompensation = TRUE; break; case 'd': case 'D': ObserverAdaptationState = atof(xoptarg); if (ObserverAdaptationState < 0 || ObserverAdaptationState > 1.0) FatalError("Adaptation state should be 0..1"); break; case 'v': case 'V': Verbose = TRUE; break; case 'i': case 'I': if (lIsDeviceLink) FatalError("Device-link already specified"); cInpProf = xoptarg; break; case 'o': case 'O': if (lIsDeviceLink) FatalError("Device-link already specified"); cOutProf = xoptarg; break; case 'l': case 'L': if (cInpProf != NULL || cOutProf != NULL) FatalError("input/output profiles already specified"); cInpProf = xoptarg; lIsDeviceLink = TRUE; break; case 'p': case 'P': cProofing = xoptarg; break; case 't': case 'T': Intent = atoi(xoptarg); break; case 'N': case 'n': IgnoreEmbedded = TRUE; break; case 'e': case 'E': EmbedProfile = TRUE; break; case 'g': case 'G': GamutCheck = TRUE; break; case 'c': case 'C': PrecalcMode = atoi(xoptarg); if (PrecalcMode < 0 || PrecalcMode > 2) FatalError("Unknown precalc mode '%d'", PrecalcMode); break; case 'H': case 'h': { int a = atoi(xoptarg); Help(a); } break; case 'q': case 'Q': jpegQuality = atoi(xoptarg); if (jpegQuality > 100) jpegQuality = 100; if (jpegQuality < 0) jpegQuality = 0; break; case 'm': case 'M': ProofingIntent = atoi(xoptarg); break; case 's': case 'S': SaveEmbedded = xoptarg; break; case '!': if (sscanf(xoptarg, "%hu,%hu,%hu", &Alarm[0], &Alarm[1], &Alarm[2]) == 3) { int i; for (i=0; i < 3; i++) { Alarm[i] = (Alarm[i] << 8) | Alarm[i]; } } break; default: FatalError("Unknown option - run without args to see valid ones"); } } } int main(int argc, char* argv[]) { InitUtils("jpgicc"); HandleSwitches(argc, argv); if ((argc - xoptind) != 2) { Help(0); } OpenInput(argv[xoptind]); OpenOutput(argv[xoptind+1]); TransformImage(cInpProf, cOutProf); if (Verbose) { fprintf(stdout, "\n"); fflush(stdout); } Done(); return 0; } lcms2-2.5/utils/jpgicc/jpgicc.10000644002406300000240000000331712163060730015647 0ustar mariamausers.\"Shiju P. Nair September 30, 2004 .TH JPEGICC 1 "September 30, 2004" .SH NAME jpegicc - little cms ICC profile applier for JPEG. .SH SYNOPSIS .B jpegicc .RI [ options ] " input.jpg output.jpg" .SH DESCRIPTION lcms is a standalone CMM engine, which deals with the color management. It implements a fast transformation between ICC profiles. .B jpegicc is little cms ICC profile applier for JPEG. .SH OPTIONS .TP .B \-b Black point compensation. .TP .B \-c <0,1,2,3> Precalculates transform. (0=Off, 1=Normal, 2=Hi-res, 3=LoRes) [defaults to 1] .TP .B \-g Marks out-of-gamut colors on softproof. .TP .B \-h <0,1,2> Show summary of options and examples. .TP .BI \-i\ profile Input profile (defaults to sRGB). .TP .B \-m <0,1,2,3> SoftProof intent. .TP .B \-n Ignore embedded profile. .TP .BI \-p\ profile Soft proof profile .TP .BI \-o\ profile .p Output profile (defaults to sRGB). .TP .B \-q <0..100> Output JPEG quality. .TP .B \-t <0,1,2,3> Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute). .TP .B \-v Verbose. .SH EXAMPLES .nf To color correct from scanner to sRGB: jpegicc -iscanner.icm in.jpg out.jpg To convert from monitor1 to monitor2: jpegicc -imon1.icm -omon2.icm in.jpg out.jpg To make a CMYK separation: jpegicc -oprinter.icm inrgb.jpg outcmyk.jpg To recover sRGB from a CMYK separation: jpegicc -iprinter.icm incmyk.jpg outrgb.jpg To convert from CIELab ITU/Fax JPEG to sRGB jpegicc -iitufax.icm in.jpg out.jpg .fi .SH NOTES For suggestions, comments, bug reports etc. send mail to info@littlecms.com. .SH SEE ALSO .BR tifficc (1), .BR icc2ps (1), .BR icclink (1), .BR icctrans (1), .BR wtpt (1) .SH AUTHOR This manual page was written by Shiju p. Nair , for the Debian project. lcms2-2.5/utils/jpgicc/Makefile.in0000644002406300000240000006067212163060730016402 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building jpegicc # Written by Bob Friesenhahn, June 2003 # Bugs introduced by Marti Maria on October 2004 VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @HasJPEG_TRUE@bin_PROGRAMS = jpgicc$(EXEEXT) subdir = utils/jpgicc DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" PROGRAMS = $(bin_PROGRAMS) am_jpgicc_OBJECTS = jpgicc.$(OBJEXT) iccjpeg.$(OBJEXT) \ xgetopt.$(OBJEXT) vprf.$(OBJEXT) jpgicc_OBJECTS = $(am_jpgicc_OBJECTS) jpgicc_DEPENDENCIES = $(top_builddir)/src/liblcms2.la jpgicc_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(jpgicc_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(jpgicc_SOURCES) DIST_SOURCES = $(jpgicc_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common jpgicc_LDADD = $(top_builddir)/src/liblcms2.la @JPEGICC_DEPLIBS@ jpgicc_LDFLAGS = @LDFLAGS@ jpgicc_SOURCES = jpgicc.c iccjpeg.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h man_MANS = jpgicc.1 EXTRA_DIST = iccjpeg.h $(man_MANS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign utils/jpgicc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign utils/jpgicc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list jpgicc$(EXEEXT): $(jpgicc_OBJECTS) $(jpgicc_DEPENDENCIES) $(EXTRA_jpgicc_DEPENDENCIES) @rm -f jpgicc$(EXEEXT) $(jpgicc_LINK) $(jpgicc_OBJECTS) $(jpgicc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iccjpeg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jpgicc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vprf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetopt.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< xgetopt.o: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.o -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.o `test -f '../common/xgetopt.c' || echo '$(srcdir)/'`../common/xgetopt.c xgetopt.obj: ../common/xgetopt.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xgetopt.obj -MD -MP -MF $(DEPDIR)/xgetopt.Tpo -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/xgetopt.Tpo $(DEPDIR)/xgetopt.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/xgetopt.c' object='xgetopt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xgetopt.obj `if test -f '../common/xgetopt.c'; then $(CYGPATH_W) '../common/xgetopt.c'; else $(CYGPATH_W) '$(srcdir)/../common/xgetopt.c'; fi` vprf.o: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.o -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.o `test -f '../common/vprf.c' || echo '$(srcdir)/'`../common/vprf.c vprf.obj: ../common/vprf.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT vprf.obj -MD -MP -MF $(DEPDIR)/vprf.Tpo -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/vprf.Tpo $(DEPDIR)/vprf.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../common/vprf.c' object='vprf.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vprf.obj `if test -f '../common/vprf.c'; then $(CYGPATH_W) '../common/vprf.c'; else $(CYGPATH_W) '$(srcdir)/../common/vprf.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-man \ uninstall-man1 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/utils/jpgicc/iccjpeg.c0000644002406300000240000002063612163060730016101 0ustar mariamausers/* * iccprofile.c * * This file provides code to read and write International Color Consortium * (ICC) device profiles embedded in JFIF JPEG image files. The ICC has * defined a standard format for including such data in JPEG "APP2" markers. * The code given here does not know anything about the internal structure * of the ICC profile data; it just knows how to put the profile data into * a JPEG file being written, or get it back out when reading. * * This code depends on new features added to the IJG JPEG library as of * IJG release 6b; it will not compile or work with older IJG versions. * * NOTE: this code would need surgery to work on 16-bit-int machines * with ICC profiles exceeding 64K bytes in size. If you need to do that, * change all the "unsigned int" variables to "INT32". You'll also need * to find a malloc() replacement that can allocate more than 64K. */ #include "iccjpeg.h" #include /* define malloc() */ /* * Since an ICC profile can be larger than the maximum size of a JPEG marker * (64K), we need provisions to split it into multiple markers. The format * defined by the ICC specifies one or more APP2 markers containing the * following data: * Identifying string ASCII "ICC_PROFILE\0" (12 bytes) * Marker sequence number 1 for first APP2, 2 for next, etc (1 byte) * Number of markers Total number of APP2's used (1 byte) * Profile data (remainder of APP2 data) * Decoders should use the marker sequence numbers to reassemble the profile, * rather than assuming that the APP2 markers appear in the correct sequence. */ #define ICC_MARKER (JPEG_APP0 + 2) /* JPEG marker code for ICC */ #define ICC_OVERHEAD_LEN 14 /* size of non-profile data in APP2 */ #define MAX_BYTES_IN_MARKER 65533 /* maximum data len of a JPEG marker */ #define MAX_DATA_BYTES_IN_MARKER (MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN) /* * This routine writes the given ICC profile data into a JPEG file. * It *must* be called AFTER calling jpeg_start_compress() and BEFORE * the first call to jpeg_write_scanlines(). * (This ordering ensures that the APP2 marker(s) will appear after the * SOI and JFIF or Adobe markers, but before all else.) */ void write_icc_profile (j_compress_ptr cinfo, const JOCTET *icc_data_ptr, unsigned int icc_data_len) { unsigned int num_markers; /* total number of markers we'll write */ int cur_marker = 1; /* per spec, counting starts at 1 */ unsigned int length; /* number of bytes to write in this marker */ /* Calculate the number of markers we'll need, rounding up of course */ num_markers = icc_data_len / MAX_DATA_BYTES_IN_MARKER; if (num_markers * MAX_DATA_BYTES_IN_MARKER != icc_data_len) num_markers++; while (icc_data_len > 0) { /* length of profile to put in this marker */ length = icc_data_len; if (length > MAX_DATA_BYTES_IN_MARKER) length = MAX_DATA_BYTES_IN_MARKER; icc_data_len -= length; /* Write the JPEG marker header (APP2 code and marker length) */ jpeg_write_m_header(cinfo, ICC_MARKER, (unsigned int) (length + ICC_OVERHEAD_LEN)); /* Write the marker identifying string "ICC_PROFILE" (null-terminated). * We code it in this less-than-transparent way so that the code works * even if the local character set is not ASCII. */ jpeg_write_m_byte(cinfo, 0x49); jpeg_write_m_byte(cinfo, 0x43); jpeg_write_m_byte(cinfo, 0x43); jpeg_write_m_byte(cinfo, 0x5F); jpeg_write_m_byte(cinfo, 0x50); jpeg_write_m_byte(cinfo, 0x52); jpeg_write_m_byte(cinfo, 0x4F); jpeg_write_m_byte(cinfo, 0x46); jpeg_write_m_byte(cinfo, 0x49); jpeg_write_m_byte(cinfo, 0x4C); jpeg_write_m_byte(cinfo, 0x45); jpeg_write_m_byte(cinfo, 0x0); /* Add the sequencing info */ jpeg_write_m_byte(cinfo, cur_marker); jpeg_write_m_byte(cinfo, (int) num_markers); /* Add the profile data */ while (length--) { jpeg_write_m_byte(cinfo, *icc_data_ptr); icc_data_ptr++; } cur_marker++; } } /* * Prepare for reading an ICC profile */ void setup_read_icc_profile (j_decompress_ptr cinfo) { /* Tell the library to keep any APP2 data it may find */ jpeg_save_markers(cinfo, ICC_MARKER, 0xFFFF); } /* * Handy subroutine to test whether a saved marker is an ICC profile marker. */ static boolean marker_is_icc (jpeg_saved_marker_ptr marker) { return marker->marker == ICC_MARKER && marker->data_length >= ICC_OVERHEAD_LEN && /* verify the identifying string */ GETJOCTET(marker->data[0]) == 0x49 && GETJOCTET(marker->data[1]) == 0x43 && GETJOCTET(marker->data[2]) == 0x43 && GETJOCTET(marker->data[3]) == 0x5F && GETJOCTET(marker->data[4]) == 0x50 && GETJOCTET(marker->data[5]) == 0x52 && GETJOCTET(marker->data[6]) == 0x4F && GETJOCTET(marker->data[7]) == 0x46 && GETJOCTET(marker->data[8]) == 0x49 && GETJOCTET(marker->data[9]) == 0x4C && GETJOCTET(marker->data[10]) == 0x45 && GETJOCTET(marker->data[11]) == 0x0; } /* * See if there was an ICC profile in the JPEG file being read; * if so, reassemble and return the profile data. * * TRUE is returned if an ICC profile was found, FALSE if not. * If TRUE is returned, *icc_data_ptr is set to point to the * returned data, and *icc_data_len is set to its length. * * IMPORTANT: the data at **icc_data_ptr has been allocated with malloc() * and must be freed by the caller with free() when the caller no longer * needs it. (Alternatively, we could write this routine to use the * IJG library's memory allocator, so that the data would be freed implicitly * at jpeg_finish_decompress() time. But it seems likely that many apps * will prefer to have the data stick around after decompression finishes.) * * NOTE: if the file contains invalid ICC APP2 markers, we just silently * return FALSE. You might want to issue an error message instead. */ boolean read_icc_profile (j_decompress_ptr cinfo, JOCTET **icc_data_ptr, unsigned int *icc_data_len) { jpeg_saved_marker_ptr marker; int num_markers = 0; int seq_no; JOCTET *icc_data; unsigned int total_length; #define MAX_SEQ_NO 255 /* sufficient since marker numbers are bytes */ char marker_present[MAX_SEQ_NO+1]; /* 1 if marker found */ unsigned int data_length[MAX_SEQ_NO+1]; /* size of profile data in marker */ unsigned int data_offset[MAX_SEQ_NO+1]; /* offset for data in marker */ *icc_data_ptr = NULL; /* avoid confusion if FALSE return */ *icc_data_len = 0; /* This first pass over the saved markers discovers whether there are * any ICC markers and verifies the consistency of the marker numbering. */ for (seq_no = 1; seq_no <= MAX_SEQ_NO; seq_no++) marker_present[seq_no] = 0; for (marker = cinfo->marker_list; marker != NULL; marker = marker->next) { if (marker_is_icc(marker)) { if (num_markers == 0) num_markers = GETJOCTET(marker->data[13]); else if (num_markers != GETJOCTET(marker->data[13])) return FALSE; /* inconsistent num_markers fields */ seq_no = GETJOCTET(marker->data[12]); if (seq_no <= 0 || seq_no > num_markers) return FALSE; /* bogus sequence number */ if (marker_present[seq_no]) return FALSE; /* duplicate sequence numbers */ marker_present[seq_no] = 1; data_length[seq_no] = marker->data_length - ICC_OVERHEAD_LEN; } } if (num_markers == 0) return FALSE; /* Check for missing markers, count total space needed, * compute offset of each marker's part of the data. */ total_length = 0; for (seq_no = 1; seq_no <= num_markers; seq_no++) { if (marker_present[seq_no] == 0) return FALSE; /* missing sequence number */ data_offset[seq_no] = total_length; total_length += data_length[seq_no]; } if (total_length <= 0) return FALSE; /* found only empty markers? */ /* Allocate space for assembled data */ icc_data = (JOCTET *) malloc(total_length * sizeof(JOCTET)); if (icc_data == NULL) return FALSE; /* oops, out of memory */ /* and fill it in */ for (marker = cinfo->marker_list; marker != NULL; marker = marker->next) { if (marker_is_icc(marker)) { JOCTET FAR *src_ptr; JOCTET *dst_ptr; unsigned int length; seq_no = GETJOCTET(marker->data[12]); dst_ptr = icc_data + data_offset[seq_no]; src_ptr = marker->data + ICC_OVERHEAD_LEN; length = data_length[seq_no]; while (length--) { *dst_ptr++ = *src_ptr++; } } } *icc_data_ptr = icc_data; *icc_data_len = total_length; return TRUE; } lcms2-2.5/utils/jpgicc/Makefile.am0000644002406300000240000000117712163060730016364 0ustar mariamausers# # Makefile for building jpegicc # Written by Bob Friesenhahn, June 2003 # Bugs introduced by Marti Maria on October 2004 # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_srcdir)/utils/common -I$(top_builddir)/utils/common if HasJPEG bin_PROGRAMS = jpgicc else bin_PROGRAMS = endif jpgicc_LDADD = $(top_builddir)/src/liblcms2.la @JPEGICC_DEPLIBS@ jpgicc_LDFLAGS = @LDFLAGS@ jpgicc_SOURCES = jpgicc.c iccjpeg.c ../common/xgetopt.c ../common/vprf.c ../common/utils.h man_MANS = jpgicc.1 EXTRA_DIST = iccjpeg.h $(man_MANS) lcms2-2.5/doc/0000755002406300000240000000000012163061353012472 5ustar mariamauserslcms2-2.5/doc/LittleCMS2.5 Plugin API.pdf0000755002406300000240000517222312163060730017040 0ustar mariamausers%PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xTj@}7q/%b))(!SEm'/;Z)0fΙ9E^luEQVt_m|}Βt}Ji2 , T;XF%~Vq7ίy"Ee'ϸ#ZF2Xoh5yS c.bD?7dcv[X~H2I75z+oB+Qex8Ђʲ.,\J_桀&FccIqH)D"̓w·t3?@ɓG@ D/g/Yh%%UYR4e^uD|1HnB-fח"CUXY j)q*oa 5otl0S FVQA`3*xrZ8 q9;\|2 7ޖ?9j$يu:W|0hx)&=dxg|:L[ܰYT@}ZS!Ois=,gt*nmƸ1\*08D(%φgj)2NMv2h6rJ0(cpg^th[IpXQ΂T( is9yPZ'Ɋաߙ\ȶKzTSSkN~SQŹ*ǖ mWcbQ4&¬o0>x_beud&׻t {Z/K endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 12 0 obj [ 13 0 R] endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <> stream JFIFxExifMM*b.33`h(=d #` %*/4]8^<CLU9[Ra,gMm[t{*$ZekZW8 15 !P""B}  n!'T- 6 ) S cC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222.b" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( +&}7]!k%k $gx*4 V"|y)tbvIr0;8gYT H{i$`>%I5~>Ul=qc?|@uQiW-o`\E<,p$)E|_^x)T/Z:*8Kޤ((+̾'|Wolw\De}3=6Z ?M[hGTm,"e v=\)((((((((((((((((((((((((((((P]'ú kk$֍yW7ᆠ''>HFgYسsLPfxSĚyZ;88^[u,{WxF;?u/dBk|Us<KbK˶Է7=Gy?9~,xF ;PղAn;_?0?u৆\Kqz}lۓiBJ{~u >#x~>S̳;D(2s7]xnglHHswQ@q'ďĚM/u/k>3> յJ/< [j?hdMރgH68?A^c}e%s\Kq#1`ZFltW[[iPٳ Hb X2R|E jY?/R̶pщV9lp}\ii7=#iF3&jiPElgv <ƽᇏn<|u+;e{?Z_[WnP}?Jή֖5OPqܹ=)#pU-gx,ŴmsZV+/uMMSR-m2J+O%[;@p.]ҿ诇o|iFB~ '\T6]anZGQF$7=U~nZҬ;Dq"oPu ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( OSUmi(}}0{]6(b9B D6aQ\6>+o:ʷsa@krE 85{ͧNnu$EZ){Uصҵ((((((((((((((((((((((((()f8P2O|3L>.s$_e,p?,W8}kPI6F" $^"Gumf@<3N@O)rUg}N-㪯_ >JnO'}*{B3 /]Dx!y!tn-fq2u@Ş"EbK=F&8BH(᝭^9(C@>W^:_O ķl v'~UE>-U|`pMI{uocnl kqh@-ZV?.GZ((((((((((((((((((((((((()5_:l5GU_!_+WZhJ@ruWҺ%o<$M{(sWCfF׋-;]'d(#L1 T΋~oW[~*cEO`ƽW-sŚ>kkirg$|vsy&w+Jc^;N[߉V2KthX~Um~Okda4ۮ?1@59w+'R??Ӽ+/;Vq+H7zk=9Up3]ĉ2Fp,3_]a\dR@ @!AOiZJ7ad2=O^A]-Lech+ᦗB+fq|W]6k[,=_ח,+<uv q^n|%]{\]۩&>e{9iFPE{7o|A=BZ IA--WԚvCL7lH1Bk|' };(@zgIn =۴Fν.7M\ʑ@7 ݸ1@4]_ x_I' uGߕxw|CkoʲĶ:ۜk^/Dg#Θcn;8>~kකt^t˂}#HH|{mmзZP uQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE5j|TKf[e 5WZo BXVV~Ē3\x?rfx G" ?ƀ'п/O6,㠟Ƽo ֙GYr7s\cӵx} -1&y%%_|.g-Ͷ>kZoi INXS OmoD66RVbA~FnѾF^ '\Ҽ^bn<3Z-(z#y=7úq/c?ſJ|3?tVŢh>fhw]i>:֭o#)'$pHJ kMfX/pj%?,?߆{ɓC ?ݎ}j_HULnO=!A<#dR4d?ƺO[x7Ʋ[\:vkC ?^ :4idXB;^'>ptj[ 3Jךh$YPX9D`c?]d$Q:(3=MyW>9DcBu!C~t7m;E]^1{RXjz͔.cɯּSOjgjfv.=?5oXAϓ79JPj}q؅%ȼz Bt-FBSZ?w6:w?Er"bD)pm4yUEo:>6E~L?iNj<,t-vs -nz:\/sD|Sa ?ivtP)hfR9I#`Zi BN3Vk?c,WoGEW]ª}* dj5@#QEYb+{Rkb>BU~Ue6 i:uno 6o.?/G?Zɿ| rI&ϭu?e?Uqq*O.?/G;ֿMct96O*>1ոtˏQN;?HόfKh(}W]s_8r\C貛MfHֽĸUiڒj1qnF7/`Pt}Qeٕ,u>hh4RdRaQ@y6yw,'lk2Xdj>#|G5 <wJ-"O?Z-@yV3ZvcO ek˱fy, QkO/4GWt?<>T<\_ʼw<ϯ#:tDx;}5O.yqq*<Z_74GWtwj]PTyqq*??ֵ>oy࿈4tkȗ8l;o<{y )CWN\R}])Jqtf(4 * m>[%HU7?%V\|N>Utά D sniW<Gk>3xGfFվ*fO&k!F\I_? EE2V/1u=#MóM OfTR"2վKEzWלUZ\W?_A^qVγQ_~bQEQEs]\E]jԇT;w?]5 58;4oUUi;4o|5 m;QQk \[7JC Ğ-gFkV[RS排[5~#k:tڂ#O?Z2PCkЪYi<[[.<)4cf1ǖ:Wg>oXk7@,=`-<+ϩ բU$'v*՝Yݰ*H ( (8o>!B5v|%Fѿ~Q__T]RD5-Bu \:xMc [)H!_C'ҺQzM]dnݕxR`ZK]&Ũ?{ާW0T:RVSG/h87&QEzQ@Q@Q@Q@%5+ʼZ%&#*CO_38cKy|_3Z1}%[מE=vcO–>MvXQEQEQEQEQEQEQEQEQER3R@P2IK^w ԛ찐y??jxc{պq5YߧC- ׼~AEW9Q@Q@Q@Q@2xn;t&{@늺pu$T0%^{E/hͯx&z_W^ фq#+< PD;~S׻hKol⾆P~=|4ZxCX>h*C_sgT3:Mn˺9MeԞ]^E0+/{q^[klun }7W_:kh+|FPmchS"]O5 ( ( ( ( ( ( ( ( ( >u:Zm}콼*6HojD5Ƈba%)30aJk$+?\ ( ( (wc@I][ӣ87H54?&5?o1gV?z4q}۸J(Ը;zU$fTFf8U$ YI6A֠n$C5eK/(W@qקeS81Hz/A~!](TU.[ۨ8 OƳ%}ھx",~7袊s(((((((((o?q;FUW> ?#_GhJ(/c z/4^#oH#tW~8ε[NU:ld~WMGupETeWZ( ( (#p#?5 լHٿ5^>eqե~˅G ZDcv}>?vmЊKxϨ]u 2/VKeks#+1TW:#Z/scP߻#"q%loF?Լ1HY-+Ao,lb*ed99#\ƻ#UP(((_"i3~C5ހL]L--ñ>q_׼ 9 ]Z_3xQ'__kE⟦Q@Q@ﮖK8fۭAC'+*ιnLȀ`|W3[ӡ&Vx$+S8oo W-Wò m֏+ؙy;= _UA+>4ᥣ=ԑc|70@"m"TnK8ifhFY܀&Ƥ]ɍĘ u-BWBz:Fmy-a>Ȯ`@PA)9;ݓP-P _tm.%O̎z6»xJOuXI5f|EOڇ͖Nq{UpC {vgCOת꿮(D((( è#޴4kF~)9{wة+ex\lmZ:}/7$REucrX?zWÓ@xaчQ^ԗq_&#WNy|oV7 G%|7jklف5)D#!/Riec7OyMO.Y|3<,0q\q \^ҭuXˋb;`zc֍y?O\Kִ jv˴,Gnx>jꚜg{{ r61U$h,k$n2 uQEq?> C=;#Ϻ dc^{ײf 7 m}j(r0UϵpZ>-6qq 6<p OJ~ k%NZݥX-ـ ?^P[mk pڑơUG5QEQEQEQEUԣ3i1/;Ō&`k>ᯑ:OEǓz+EC35_,EQ@Q@gō{Q1օtNYˋPÒn?TiAЀOj|l.GҕHc/Eu,}_# `[r_5FWSɁs ϻ^o/s;.\Xc ԝ\_15qi7=ڃ+ Ի]2#|hR>S{W|[eB)'#CYԅ%VSV~QMFܠӫ_MlcY#|i&5oE_lzw8;~ |/4G7We^ҟ2?xM9~.%#}}jTj+M9>_dG1&I$rvZt_ՐѬUuEӱz2Z~xkǫZ1W7GHnQWH: ⿊(>D((%Fѿ~7zҿ@ >?X49YP*J)xg{.$OAq?jt|W mVHe O:tY],L.~av|/ 0۬%lcǷֽD6!Eoռ[ɋF~ӲC42WN# Wx:dBG#k˵ ϧL|z~ux. Geh#P]b]iy:84` W66<%.a(-Q]Q@Q@E3I )< $GAaHˍGu_ËwL6ŒԱ ħڿjyzkZNn؏߭t~+k&#vrG<֟ \xmڰug>Z50+]`g=)>YǣIc:}Kq) J9ְ_;xv[1/­$9@H1^5#}ρ=gH}+z,#QExoVcer]MPG8Ը >W\zu5cFw *{ d"[4%~rGP _s\SG d1wwƽhW`"Li9Qig |}ᏮsG9|QZ=kv/n @Ҁ:( ( ( (TtoHi+>.xQK+3yl|lu,:3qSo,=h֎i'EQo~dJ$Њ_;8I?dׅzQM5p*M((((f𗍬PJܷu8?MUuEԌ=|=_eQ>; *kZU{Vi7ksl0 ;֍xryR!½[r+?$if/jY@_C)m¿s͖^ _j_EbV _E[+?RңR kܜ#8]3SHM]3xRMs}o;s3ڽX#Vd;_ Ew`1M$I$C *ATQs?C㸯+珑 ( (8oCwo_|(~ B5v00:>ѪiS_7_A_[ZưtRLc/zFXt׻Zilƚ6}+|bC\*-''גd%]2+󜊞`=ڋ'g5:'ȶ$Ie 5}'Sk xľpmȺZ,u+4o×1wtαy~'.ZkϧtJ[5Aw $ "7Uam'GnrV9+ȯ.8?3.q;ii '~4SxIjmlO.&9lzrtd,u?ajoaT+EWQEQEQE5f)('q՗KuK֔yv:G㯊t6I ynNK qU~[6fo?w_~\Et"[:'3`{Rwgn|4e=E[/-, {h|euZ|Wm$c(>3:đbmwn*pUr}y+N@ZEPEPU!BGX|+OoD*5Fǡd*OFWҞ$,&%) |_xR|,ҿL^\87\_WvMEG \DѺRWZ3xI)E0((((((B^8Է"A98?4R9E|Y!?x=~ x_%˟X"PO$ +UG+7qoE!EPEP_?W_| C4$_UII{@/ ?Ÿ+RVR׼}PQ@7A@U*_ @GA_7TWREȅQ@Q@77zҾqo?q;FUWG~G_C~F7TW<w}O_%Zۨy5ߴFCHo7s=Usn? wS¿7yl(9nI0"QS袔a|*QEPQ@Q@Wc刐e;@قf8N~n'F:3|14:ZQz/4 iPP OֻFu)Q AP1\C|5-/mn-tjÜӯsDaHISq_dq]MfW+pPEPEPEPEP||G/WECmC)FHQ̌vW~ ƹ۹NZ : {q_Mi0s閏}+t+vsհ[pP ֤gѮdm`h8vAp@8P8P: x9QEQEQEP\9m$rB#Yr`_/]uxIZ7ukA#7JַN9M+os^c⏇6c5vp0zhU{nw{wg˱2A( Mf-R4@1y05#}UU_z#bʋZ{4gդ,*5#Y0WV/tT?lHom[G74αR+TzF1I"|Ʉ/ix㖹w,2[FU3R3pj1ДӌUGfSRWm}FY^}C>~{R?ex{z\ߣG,Kh'}?_q\,Khq~PϷ^7}K6I"^&,__Y^ְ9kw3%H|hy}JTFڟ]Øj)MU_C-/ҥ/ҥd0(h/hʢIB/$Xzf gmq=ׁapqn|a+ו?e+_o\,Khq~xPϷ1R?ex{z\ߣG,Kh'}?_q\,Khq~PϷ^7}K*7J?Ѝ}Ǣ+毇Q5֯ a@H})ǘWMR}^.4`/#ƚ$?I3 3ǟ=mK.׋j_doݱQ%_?¾'*x*Jz.Ng9EI>i|*n2:ZEV~i%гE@p7R =$SץOTOѢZ>Mё+u(LQAuXƇ8 EDYd5w>+eyV+',$"\OOo(N+<E5ğ~-\ϻ cE97IVuh_^pĶk|\ز3GQ4h"_q_ uk;t$3u/#ңZ#@qy>zρ ҦK}iG hLgq{ 6{}w-d+6c[4sHT,p3}t55?^]S5̥],T\q\TN8UutQEQEQ]%w@YwbW?r/M̓p"Q,v-CX~i^ys>? Ϭ>>? O?Wuv@>-tK0)Q@Q@Ŝw$0y^ZB95Y%ExG #}ctQEx_ #}ctQEx_ #}ctQEyo$lfR z ҥKHA=N0°<3]%7 ~_x 8 Ĭ=s^TTmmQ@=]7rKXDOL*ǟᝯ8uu},l"n('i<-\jq=nTGV4W)Rի/F/ op>{wl-d헁J`Gn?LW&n*z\ "WacY?J C AW^E tJl( c{}4ooZ* ,+LJP-RZRI=1zqW(iV]_\$1F%':+Um{irƄI˞l.0ClVo&` t=? 8/Gzm^;!$#yQ.1a|Eӡ v AWwY,QoǞӼ;k__Hsp<cÞ~6k{tj~ܜk[s$CHKCeo%E~&ՠS[(Tamr *3־wmtInR,|R;ܚ5EH3˷'P ZcP7S[Tuy@VH3—]xGGI$&` ؜VEsn\F"tuʰ"i kh0QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQER8sG^fn&(fsb=3{wu=VSIn-ks0XϨPpI@}}k[*/hQd%9`eDUyE*s0vAV%"P2]N?J kR1?,W5(#em,w yin隇똬ѢM>}?>qGnn%.yaI5}vш1h\K Ei@[]E5ģ|gWPYͅgnCLFF9==J((((((((((((((((((((((((((((((((((+'ѴoMu݆KXMrfJmN}iu ~ŎUy7@;;tuDgvc-$ZTQ@ 6.cv9ǦiQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 25 0 R 28 0 R 30 0 R 32 0 R 34 0 R 36 0 R 37 0 R 39 0 R 40 0 R 43 0 R 46 0 R 49 0 R 50 0 R 52 0 R 55 0 R 59 0 R 63 0 R 66 0 R 70 0 R 72 0 R 75 0 R 76 0 R 79 0 R 82 0 R 87 0 R 89 0 R 92 0 R 93 0 R 95 0 R] /MediaBox[ 0 0 612 792] /Contents 22 0 R/Group<>/Tabs/S/StructParents 1>> endobj 22 0 obj <> stream x_oH;̣@?9,C[l͡>xS%5.qr܇xȎ9Hʴ@EC9vU~eͯ6_9?Y,~Oׯ'V9ժY^$W7OO.g쳺gd>/iՂ7EV{^gU*UJy6'?7^6E/XQD? |ݫU|pH|y2 d tH<'Sz}h9_$/IJmt 1ey8{gWݙ!ɼI30 &yK4#(ό6--Xß~ ;[v셙ukb}L,vۑ모}/;~OaQdlLf|9VͼEy ..gّ?Zc+"&&tD˫̛4"ܰ*fUVGÏܻ=: T?@ppEz&]:vn;ufgW\ۍ:3i5kna7ef8N(uS3&&*8/Dp)̽!=b!)6>3&g*],jD^ 5|WnvG*a3dzԙvT6Mu3skM6ߣi3.Z9On"dwol4-cy'[M<:F;jT 8*4z ѳSuAq YJA9!4,Jbm 1̉yhC4.kmɃݡA_z~2TkO+:rBi39%MP@[0T(qdpC7<{wڀ[o͋8h]&] j/sVռ w'>-/(z~O-R&TEA?ViNd3K{]`3|9#IӦL/UY>-:| ?lVn|hehYvfӖ È:,'Dgefc&j&IMRh @w>G#_0 % C%܆EcZUp[]{h t4 /CR$X0ȸ$$д9Gtw!H 4CAXuv}}{aK ,KL5@bz282dӤy&5aڅ@l*5EY3B%[0HP*F> *b"ORf[@Qbۢ|"N񮧌EY%VG0Hw/G3!UUιlQ"{=>mEM`nPsP[@碃)](9:%R"WxId WVYgT^(RrqU2oWxoMقAކ* oNcu{6_,o`ch80*=|sv _4Cb+*f/؂yf\UU (êd{ƱGfOad /6͡]wMU&c,oy"N6M૫LL%*BJʕ*:q:Ult]p!?9`.U(7>l(:6]$=j`rXטaM1ݛ@W>T!'|&&I&zK@y³x*ijHgK;nVo1YB }H&M'8V=W,>SvcMZ<Iy{70SF,PwYܺb._M(k<ّ[hNJ`gw8zԩ |8M>DUj~ l -5ÿQ_C/M/4#M|5xPɮnq~UТ!쪃Ttlc,;jD|\l32DH}]1UȢy+ڶ?)ܛkt0ߛ[" ;qǿ.(cW͒7D9cc\6c؆LFTIŀ&y ~+%% ^Y-;}Z2+rC'yN@dqMpKxHr&ao݉9 ݺtͺc5xgE'is N'ԧl)]n.tcS6X OdD0UUm0iO +$QvQ&86MقA:6K;U>[3lFdUb59HӑSg"9`2jL(ͩJhhthЄN`4 A!A7ke2˽QY^,7iB!hRMYEOckldTġ&*gJjU2k㘧q*3قAb׻۪[-9.JCj.=tYC 8ҕCdSvD&L%IIFktAYj& MrjTMu!2&HfkT&BE#4h endstream endobj 23 0 obj <> endobj 24 0 obj <> endobj 25 0 obj <>/F 4/Dest[ 27 0 R/XYZ 82 721 0] /StructParent 59>> endobj 26 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 99 0 R 101 0 R 103 0 R 106 0 R 108 0 R 110 0 R 114 0 R 115 0 R 119 0 R] /MediaBox[ 0 0 612 792] /Contents 97 0 R/Group<>/Tabs/S/StructParents 2>> endobj 27 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 122 0 R/Group<>/Tabs/S/StructParents 3>> endobj 28 0 obj <>/F 4/Dest[ 29 0 R/XYZ 82 721 0] /StructParent 60>> endobj 29 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 137 0 R/Group<>/Tabs/S/StructParents 4>> endobj 30 0 obj <>/F 4/Dest[ 31 0 R/XYZ 82 721 0] /StructParent 61>> endobj 31 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 138 0 R/Group<>/Tabs/S/StructParents 5>> endobj 32 0 obj <>/F 4/Dest[ 33 0 R/XYZ 82 721 0] /StructParent 62>> endobj 33 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 141 0 R/Group<>/Tabs/S/StructParents 6>> endobj 34 0 obj <>/F 4/Dest[ 35 0 R/XYZ 82 721 0] /StructParent 63>> endobj 35 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 146 0 R/Group<>/Tabs/S/StructParents 7>> endobj 36 0 obj <>/F 4/Dest[ 35 0 R/XYZ 85 437 0] /StructParent 64>> endobj 37 0 obj <>/F 4/Dest[ 38 0 R/XYZ 82 721 0] /StructParent 65>> endobj 38 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 149 0 R/Group<>/Tabs/S/StructParents 8>> endobj 39 0 obj <>/F 4/Dest[ 38 0 R/XYZ 82 469 0] /StructParent 66>> endobj 40 0 obj <>/F 4/Dest[ 42 0 R/XYZ 82 721 0] /StructParent 67>> endobj 41 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 152 0 R/Group<>/Tabs/S/StructParents 9>> endobj 42 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 153 0 R/Group<>/Tabs/S/StructParents 10>> endobj 43 0 obj <>/F 4/Dest[ 45 0 R/XYZ 82 721 0] /StructParent 68>> endobj 44 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 154 0 R/Group<>/Tabs/S/StructParents 11>> endobj 45 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 160 0 R/Group<>/Tabs/S/StructParents 12>> endobj 46 0 obj <>/F 4/Dest[ 48 0 R/XYZ 82 721 0] /StructParent 69>> endobj 47 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 161 0 R/Group<>/Tabs/S/StructParents 13>> endobj 48 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 162 0 R/Group<>/Tabs/S/StructParents 14>> endobj 49 0 obj <>/F 4/Dest[ 48 0 R/XYZ 82 522 0] /StructParent 70>> endobj 50 0 obj <>/F 4/Dest[ 51 0 R/XYZ 82 721 0] /StructParent 71>> endobj 51 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 163 0 R/Group<>/Tabs/S/StructParents 15>> endobj 52 0 obj <>/F 4/Dest[ 54 0 R/XYZ 82 721 0] /StructParent 72>> endobj 53 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 164 0 R/Group<>/Tabs/S/StructParents 16>> endobj 54 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 165 0 R/Group<>/Tabs/S/StructParents 17>> endobj 55 0 obj <>/F 4/Dest[ 58 0 R/XYZ 82 721 0] /StructParent 73>> endobj 56 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 166 0 R/Group<>/Tabs/S/StructParents 18>> endobj 57 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 167 0 R/Group<>/Tabs/S/StructParents 19>> endobj 58 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 173 0 R/Group<>/Tabs/S/StructParents 20>> endobj 59 0 obj <>/F 4/Dest[ 62 0 R/XYZ 82 721 0] /StructParent 74>> endobj 60 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 174 0 R/Group<>/Tabs/S/StructParents 21>> endobj 61 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 175 0 R/Group<>/Tabs/S/StructParents 22>> endobj 62 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 176 0 R/Group<>/Tabs/S/StructParents 23>> endobj 63 0 obj <>/F 4/Dest[ 65 0 R/XYZ 82 721 0] /StructParent 75>> endobj 64 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 182 0 R/Group<>/Tabs/S/StructParents 24>> endobj 65 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 183 0 R/Group<>/Tabs/S/StructParents 25>> endobj 66 0 obj <>/F 4/Dest[ 69 0 R/XYZ 82 721 0] /StructParent 76>> endobj 67 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 184 0 R/Group<>/Tabs/S/StructParents 26>> endobj 68 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 185 0 R/Group<>/Tabs/S/StructParents 27>> endobj 69 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 186 0 R/Group<>/Tabs/S/StructParents 28>> endobj 70 0 obj <>/F 4/Dest[ 71 0 R/XYZ 82 721 0] /StructParent 77>> endobj 71 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 187 0 R/Group<>/Tabs/S/StructParents 29>> endobj 72 0 obj <>/F 4/Dest[ 74 0 R/XYZ 82 721 0] /StructParent 78>> endobj 73 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 190 0 R/Group<>/Tabs/S/StructParents 30>> endobj 74 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 191 0 R/Group<>/Tabs/S/StructParents 31>> endobj 75 0 obj <>/F 4/Dest[ 74 0 R/XYZ 82 618 0] /StructParent 79>> endobj 76 0 obj <>/F 4/Dest[ 78 0 R/XYZ 82 721 0] /StructParent 80>> endobj 77 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 192 0 R/Group<>/Tabs/S/StructParents 32>> endobj 78 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 200 0 R/Group<>/Tabs/S/StructParents 33>> endobj 79 0 obj <>/F 4/Dest[ 81 0 R/XYZ 82 721 0] /StructParent 81>> endobj 80 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 201 0 R/Group<>/Tabs/S/StructParents 34>> endobj 81 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 202 0 R/Group<>/Tabs/S/StructParents 35>> endobj 82 0 obj <>/F 4/Dest[ 86 0 R/XYZ 82 721 0] /StructParent 82>> endobj 83 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 203 0 R/Group<>/Tabs/S/StructParents 36>> endobj 84 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 204 0 R/Group<>/Tabs/S/StructParents 37>> endobj 85 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 205 0 R/Group<>/Tabs/S/StructParents 38>> endobj 86 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 206 0 R/Group<>/Tabs/S/StructParents 39>> endobj 87 0 obj <>/F 4/Dest[ 88 0 R/XYZ 82 320 0] /StructParent 83>> endobj 88 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 209 0 R/Group<>/Tabs/S/StructParents 40>> endobj 89 0 obj <>/F 4/Dest[ 91 0 R/XYZ 82 721 0] /StructParent 84>> endobj 90 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 210 0 R/Group<>/Tabs/S/StructParents 41>> endobj 91 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 211 0 R/Group<>/Tabs/S/StructParents 42>> endobj 92 0 obj <>/F 4/Dest[ 91 0 R/XYZ 82 702 0] /StructParent 85>> endobj 93 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 721 0] /StructParent 86>> endobj 94 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 212 0 R/Group<>/Tabs/S/StructParents 43>> endobj 95 0 obj <>/F 4/Dest[ 96 0 R/XYZ 82 721 0] /StructParent 87>> endobj 96 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 213 0 R/Group<>/Tabs/S/StructParents 44>> endobj 97 0 obj <> stream x]k; *Bd}JuҒ \^wuٔߟv},ْ9jf4#Ogu_t4CMorz\oeUߣsa1M?2D .4Z܏GHKL4ʅR>}xD|4eh -@`X_sAQ v)\H*ΑX#ʱ.ǣj 5$̚ k[T$w3D!{i2&%ÅQmSNJǣs H?&|χ ؒ2BP-UzJ1 mJz]WM2٪ X9ǟ.&)XbZ闧e_́u/Y( m 7j;Y9YL.Xޠh"{Ke 'yV=c'w)v-1EЋ]_r $DRC:ܺ[X%k qp9<Jժ1q,Tq8@Q\ DJksśqSql/6- f:"w̛_9c|(sT1 sDһ!+UA昈T;Bsvyd!t;8:qxUGrD'kc-5{tm~ALp-/#͹ٶ"`20c~)\fTԓ5P]@-&JIT"7%t]۶2r]n1gs?RoPrmdsY+JBqJi釚cFSQ@-~Сt$]0B~5zc h5vB`4Fw:C{f!+.jJy%= :ށN$K Ѕ&Jr }+jkًxT<(^` c; ` \3[R@)[^yaK 6;Mg n5slꍽ2ԕQre2@0W^Rs6,ST9`s-M ȅ&6Q%!{y6Ȫ?a:Q01^f`P`j`RiHJup M41d#8b #s Tzop XoHh)VЌ|*U:\cwo|tmK)8.#s}#-u!G endstream endobj 98 0 obj <> endobj 99 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 721 0] /StructParent 88>> endobj 100 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 214 0 R/Group<>/Tabs/S/StructParents 45>> endobj 101 0 obj <>/F 4/Dest[ 102 0 R/XYZ 82 721 0] /StructParent 89>> endobj 102 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 215 0 R/Group<>/Tabs/S/StructParents 46>> endobj 103 0 obj <>/F 4/Dest[ 105 0 R/XYZ 82 721 0] /StructParent 90>> endobj 104 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 216 0 R/Group<>/Tabs/S/StructParents 47>> endobj 105 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 217 0 R/Group<>/Tabs/S/StructParents 48>> endobj 106 0 obj <>/F 4/Dest[ 107 0 R/XYZ 82 721 0] /StructParent 91>> endobj 107 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 219 0 R] /MediaBox[ 0 0 612 792] /Contents 218 0 R/Group<>/Tabs/S/StructParents 49>> endobj 108 0 obj <>/F 4/Dest[ 109 0 R/XYZ 82 721 0] /StructParent 92>> endobj 109 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 220 0 R/Group<>/Tabs/S/StructParents 50>> endobj 110 0 obj <>/F 4/Dest[ 113 0 R/XYZ 82 721 0] /StructParent 93>> endobj 111 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 221 0 R/Group<>/Tabs/S/StructParents 51>> endobj 112 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 222 0 R/Group<>/Tabs/S/StructParents 52>> endobj 113 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 223 0 R/Group<>/Tabs/S/StructParents 53>> endobj 114 0 obj <>/F 4/Dest[ 113 0 R/XYZ 82 666 0] /StructParent 94>> endobj 115 0 obj <>/F 4/Dest[ 118 0 R/XYZ 82 693 0] /StructParent 95>> endobj 116 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 224 0 R/Group<>/Tabs/S/StructParents 54>> endobj 117 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 225 0 R/Group<>/Tabs/S/StructParents 55>> endobj 118 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 226 0 R/Group<>/Tabs/S/StructParents 56>> endobj 119 0 obj <>/F 4/Dest[ 121 0 R/XYZ 82 480 0] /StructParent 96>> endobj 120 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 227 0 R/Group<>/Tabs/S/StructParents 57>> endobj 121 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 228 0 R/Group<>/Tabs/S/StructParents 58>> endobj 122 0 obj <> stream xnF݀$;$1<mqCQZ|VURSTs$/EvUu7xNֻk4[sjv_M_*mUu{{xyq}/<΂$//?ab/Rajqyy{i7߻{'؉ЃiWJ(tSđ Tާ/v*^_Q/>z(E 8"HIQ:nDRH\^ewm e9(ϔ^yM<*-I=tW,J`,#}K,)s–Q L5B:MEm.e$uB8~gK`vv(-Qd'@9uPyW3.kdmLhiV͋z@?sª!lAèImH|x+!E&wg@)qnu]RW~H[ܹ(*7y Z 7@mU^+k bk;'ٟ|(MZTxaoM{t[| ~)YH!+"#,?o"`j><_tRpt.PA(?WyPO4F TU%lX"X.YUt.GRQ(1>/*_qזUQjhc.(`a T1#C{̾u*$im,Bcj qa1è?7s-DB6co>%ZeѢjx߼ِA;Ll 7m1(ŏ NP W2šf>Ɓ`iCkQyn/$o;_\u X]"rKMu/0 (U3B{2=ls4VJ&Uj.)ywrwY.ͲJM')K4-e7>3JURN21;-y(JLoB \ۅHP"( DV_y+`u^X8*:0uRIaI2)T6qCuKc,{9-n󊚒̤9lX-SYB$1%쩴h5jbQDcp#(QW| tjb* Q7w:!!8ZJDs1=My@OX(8'|W!DuMYЉ@1UrU݀JpJo<[#"XҶhU*y8D|A)8@[gm"~\ۮ4R3BlH1dc!$zM^(tHɺ. <]؈RgA@ߝpdH?o6 O 6,vjwz$4N#LlhuڔѦ6Cg/qo(3 qC_mZb:e<9~jj[a`":;5=ŚGlLJ&Kծs jwWyW"Z>tdfb{ng;Kx  vm4 q&0PHa hڠeR:"{tM4{6ѫoؠ;E>{gdg):$x4A¿f@l;ո榥`41kJJwJ4f}ěX*7ycA֐0Խ Á` t'~Zg OnS|Iēx!˧(0wiH*+٠{8Sgq 3Ni^W)Njp#! . gsLzH{5xh:q#V3;KQXNk@Nc(ق$0w#.r!w^s.ASC"OvY]f sd|IDmݱ^AIl~>S B$rjٟ=^[ЩXƜxl0JҀyN8i3a.⾚CؘCFCACƶ(!> endobj 124 0 obj <> endobj 125 0 obj [ 126 0 R] endobj 126 0 obj <> endobj 127 0 obj <> endobj 128 0 obj <> endobj 129 0 obj <> endobj 130 0 obj <> endobj 131 0 obj <> endobj 132 0 obj [ 133 0 R] endobj 133 0 obj <> endobj 134 0 obj <> endobj 135 0 obj <> endobj 136 0 obj <> stream xܜw\Tֆ0^`ދb]cDM4F4z%;AEE+b VH/Cޙ&o wkF柼Xk uյU5u8k0!Λfm} ^űCUMuM7k‹ w9ofVf\j8)*),)+/@?󷗔4=,+,.)kzX^a3D?LZeR)i?y"R\B⃗|*(jPje_Օ_PX3TW=~{R_̟2uu%fϝ1s9-^bR CsloąP,.7p^TVw=~CY[pUou-XtFpѲU.]6itL!Kf͚KAgΙkgyU¢>bKVl h-@1 h 8e>b~ih?soO8xتu_#8iѲwB*,-1:rB#vn qKKWV~C͚7j~816e3F?oѢAÆ-[˗{tk4ŋ'L%z9BW]] Lc../~xy Ziʵs/dE@жKO?[c5M6~~~s.;q'͘1u֬Ĕ\ V8'N~ʺږW-Fʵk&N6bؾ>{^pxd#{;}f`ڬxiy ,Z*(<< 8xyPԂeˠMAA_3 />g`O*))3EE!j 1BXnӱc!N9v̖0h麀I kL31& ZP2ӧZt ͇ߍ?e_,-/xa&d%hkt :$8)dBwD:})]*[mMғۢv>tpUs,y;e˗jLVi_?UQas≕W_$V ǒI#hdŠ1FIqԹ8+hܥOɳgn :|4o ɋ7vukMp+WZ`9UˬÅk...ƣ-[#w+ [G*kd݊E|?vԪML?u̎*\XbA!۹<6m{Mkl 3g^pEF~ԢqU? ~N T-'q(x_.7lYKjꀍ=>jJb<.NJCS'+lE;wɁ[h\&ƌ nYQYGSB""I kq( E*b*JcBW͑:|oi~b-C~dSfz+0|bIp͂AW߱gB_#+(NxP|423BPo+)XߟA Dc:غԶ\L&ElE%` aC& 3usgŤ2%amEƝ:v0xOeϞhjhp'US_k:v$O"H%Yb@p+HUEI kOBB"4BR9JK&& x+2"Z :ҹ[GNVV47?u35<5583>y-l\b@ml)<8Mlri!dvY(95$-(-[VCnڷF\F%urr\p!q$q\LC\:{±',(} j/_GvpQ4jQHj<`1s-|ZJ%O!AHtSL0h@FbzktLo޽9˂ )/^d\j0y{啕+1bW[oB"Ƒ+Y9CxAI, %Sv販n?&Yؽ%fuJG.&XI X܍[JqsU 5 S߾}gzchh4j0>~ھsБ#!PȤHЩ,2 X,K"8Ih؄A(NSJ]b1C$D6kܐa(*#?lW􁭡6BZ=Iz`BC1XaYZ5ugl exBLW+ S*=<4dB B )fBt3GD yQiu7@asH<#3z|sw6oG<˘HˊˆkxLBpl>K`t$M@i%+X++)S׀ p1k7oߵ&!AϚǿrMmKa;L&e$a%uQFŕI+"jCcHF[p,F][lit.hN ס#\jچ/^_BaDd^x8zxXhT>1Uʭ=\}uQي 6P|^h 'A2bޅo7 o _\ Zs;vD(M\h;=[\ !"]գD'xS$YA] U#|>0b;"1ꍲg)O_26qҼ"moG 34>.S8< qx {m+h E"% çrHPM(F0n(!XbA~_-<})v]@rbY9^ʌ+}2Mefum=ӓ ȋG?clʂAdPs[=܊!˫j{Ά-1Z%iʞX P !2) ?=~iUUzf!ORb/ť=~"e]_k_AEջO00T*FR).1>~ն]kEfs6έ|\Zu4?,4&V+:Bӵle+:,#+W9s|e% '1CmCe}CG\!s?3|2K`Iu;ARr ]FgK\.B= jN"A:xyjЁ) J˖eP;*z~*ѦcǃǏCZq7onܼ% 0^h~`eohu:SUS۸δ;()%18rކ-#Vt9EH$ӥ: ޻"(F 2fI،04#O!9oޓ ml؈& Tp҇kM;xb_HP[dhx c (UHe%>! X%kcWQe/((b VتSGFiQ)8os1:bn׮oyX4a`\UYJ]f#GfuvUprj܁qt'I-6T ܾF|ݺW.^AUy:ƣIJ Lap- “BYo򤌬799ۣw  -()]dM~wKҟ$*ن7r܉7%#hb v,] h\c^VvKInCzWZK1G-J;!0t{L&hn Ш]n4 P23nb&T\MqM]t)Vt ̣KT wKն"ʳ7CFՊ '}IDp02ZC386>%#Sii=׮ݵo_Euͻygb.d]0#6*./3z]̵QY(!StCbD*'ؗ:j%ԖxF< z<V04 'FL[w{?] rѵҞ=?zT7oU>gb:bH4phnVvL.ITO_Hpbc}F72P/D0ѐwFG+;//]΍wH7Amɸ* V"(KH"S+>!*= sgH>ƭ_% $ 8mB fA+KsE1Ak啕HL@%4TL ~sc Kj~i:p.u֍9r1C" 4-!' VӾw!&JP/fe;2IZl01ץ@J(!*8z'e8y҂w~"Q ܾҀ"p5w54^%17|7n,[.%4VGhb Yd)h9 !H,pձWg Ljŕp,f!aeK(Bz[mJˮK:vx/; /^7ݼ|u02IɴhHCF׺r5T۰5bE$$V\YO)(9RҟD ȄjyXb+l}7AG~OH "db %QqUm(G?|fDa 4B6o}2acǒDB2%2Lffi^vʗ-3BZ”I|U&id݂CҼoݣc+nb ɀS(-YH|]@^a瑻lv\LIIIfffRRRVVykO_~~`e|CS/i2DLQ)0֮W=3ڷ[INGUOurK0YJquBjA*E1)T}s=CCC'6oߴ%$3+8---%%>_dmKYieTTc!XoX!#~.ZMF`2vzBJ`\6jNmѡ5@QELK..:eQAܘqꫫ1Vjݺ;u ݱ3 ^gBZ^*//7_aK?IsoJ{GH,wTܷ~~m{Dd2/`kP4gbEB$vb%#:7_x>`С3 *.ݼfSp%<|RP\)LZ.?Է?2wFӳT*rE9a[۶L^$|:wAh*l:L`A`ѭ\D(wtUIJ a\;wo} тҪW9)af2 C33r kK+Q~JJ>sAlk*-OgkW^mJ5C&R-(.mxo%@c(ɜ} VV-5ns/~p榐a;oKƏNLNKLJpԖ3q$X\pv~A1Ӧ$b'w4t~|7ˇ5LL6nnIZIЩ g% yd"X؀ \,tV}GOGڹpnAYVI)Ϟ0_U݀ 84ݺ02{XZkCNzmӫ_5IL)Pk8N]\XUsfhຝj^⣼6~ Q5 T? w^´_0 MjVrŷ]>bU*-l{oOP9 c"ӸoUV?TWV3*b KܼZT 6Jzg||n%uq:qfBUd2[.q)){ @Zƫ ýGiwSJ*M˚u͈4|P7KT OwC[ĸv'w[J GQ)\okwNc lm G₲*Z tw5`yy8y*ҭ!Аn߻8=3 yEEBOw'̟/suQy{]d^$®S{*v$wq4p`=|RPA#ǨĶN<,'ex2=qjܦb`CcFhudfD]cW‰mvtFֹkyd)OH}[ptm%#~nMW*1)1&w0nO؞G>xӥ5YoMiKF Mw ]u}C~棴1]vQ{Ryyk|YqɇcVmt;1 g旀Ҁv}SJJ%vph Tl6)T>rW+=)d[c9陯o%|]۸Y!0ߨip=xqe==Z9Vm;<|#zSJ{i|7&bq$'?{<;'~Y<{t'B/(X~L[Z2&+)-O\n͵mWv]^toeӪ_f'e]yW=\p |WBwOz*&'N=㨡&VvFG02DCK}\pYГbn?+]]Q[mSjv5#x&VbZ#n;bƥiѩ/.;f 98ћs quw>r̈́8{ >sn])9;[xwfÇ,V?|QPQulLȎ]^yҚ`9sXPTXO,-`| χnN`g<3e& <ɘPCsًpuZoZ//xf t6b^ӡ/L~"dGԞwY]ݲrrͻ Mږ!/N`eeeE%/|ͷGkis?%=p+enQf^qc,Y#2ְçO^0=V%wsE0*\]Qi]z_V{֦Q'j6oc7wUq3/ є `0WVVV.\Ko?x? ff#]O|x-QBs[[DŽn{g`}p+퀑5_k 9h׮꺧ov=-3tՇo^زEh C\.¸U܅'ӢUkwv}IYnIO2>yo곌w~hi{ͭګU7k!M퓗^g(Kє"@FFxCCSz!  X9ǒ;z~۴yф$LCwty +0䪛?ptFӧ[ϝ7_^A'?{l# []ʭǯ?BY|l$AMkxF0e]]p ZKT׷J-OIT"bյ,6PGg7zW`E7"c${knn~ϟ95{勓g,irK[}ܮCcwP_z_*"J%c Mg?ɩ2_m杺ںz |`W .|uv76>3 U{`Xض],Zh;M0-[qkWp;[[ZQYWL~QPѹ+WS(j6 ~cUO_~ŋM ϝ|MD,!82Y{0Ye@ ӳNgz3.&wœR h7P*,?{᥊ׯ]Q[$|pXLhT^@ֹ7=+7ndjmmjC64413ep#{9Z͝g>J-,*Xx"9>uz&:u./+5-fAaN~a^rJ?sLFJFNA֮VUúppLn9.Q[Wbͬl M22emBO'B{ ]}4\Pd l6~$>hBL̔3'S>stPRoٹ!+mpTC.X7[:H sņMdw=}{][m|5)+. ;9u:!ؙөG_`d`~]vout2S!Qx&ml~9J?h? 6 4ûg [yC~ፗw_}~i嗪2rݳy3OEZq#'7l!OTI}C Y*7H m}`Aꟼx7/mq.>|| wر׻|[9y03s ڻ4s1;!{^@L[{ ^4t 6l͇o­m]mpPw=x )#W0Rx~/Ȩ7 ]9y嗯g_p- Q }i19((-Okxr%O`|.8\%> Z `!AҊs,\9Y׏nn?Ce_y=Ru Ծ{<$;O#5,W#p1c:w{PO@wDl6$c39Ta &Et"Xi,AU\Qh19_D&),#d_D/]~Ϳov͎WܪArdKXp7+qySOٷ{=|;;/s^l9Qw5H! (H)^U&STH)$WNQHNNDA3q,QeƵ.֮۶{ǾAW߆$Ŋ+555ҷ`_9.DI\/O7nZ+V/߰eѺ6 hͰRՓP'+ym,N&MT\V*$4U7I^^@LQrѯנx {¥+ltwIqqYn{dSKôsg::wY&$~~w0 42ek.U477CGL@ޭ9p PX2ATDԍ@bq!XrTI*LQ,Xx&KW+]7)wnSC""_i*P_\2bkOq'9a!Qqf3&KIbR RDu@4Y^ X"& T*0_fϛ׹+8,s!z{giN3WÃthms߱ p }EFN^jFɓ yiFKpWF ď0;3t͌fȪ+i( #QP'!=V\JX^ + ɨՍ -AIWtp-Se /84鋗'N=v<""l?J[\<~6[Uq::**P @@) x ,M3n<+uҷ[d4yuϟ[ZLѨ4В~KCv*2VDGQ)ȏ*"C Ș;,X6ѻ5= @75MMmt-tWoݖ{q$9ID$ <{$WE?-7KCﴳ]͙*!.%/M$ Lݪ~8Qa9*NO. vXfL+Ϛށ~a q6nߖ_ZI m~ea zw7|H =DTTqrRoUJf֢ g:;ۃ 5m4 ;(=4_L2r,0Co}uHy $;=4d_028 xBOoή/->@{:x)qi od2&M$ML&IK99izx 6@7AЃ1OBd}݋UPGĚZ-ml0c0x^GP_gĠR۟?+ JIjYZh "+E}F- zp>$"kk#j 568X!3FE(@֦df#.o`CrRy[eXpv&3, JZ[ b3QҏS`Fgg' 3=y0cLB +ʹ{-d2l6 \ک$Cm:QB01kk[L;q'~oŪ0Ҵw 'I+ʎ,Kg~]ֵo޸vɩrݹ=0×OJ>_ftuu|~𡙙QT+ շ<_ZAcЩq4d A$QO2"b &hhqxU ุeݪ=ݝd2Y9$`'...$$$***YY?m Fk@IΝKJM\t:eSȩh7(`1{qzž=?$==="(''-vzXϧO-//zP*ih!yDZD."C3Jd k9Âmxx3#DAQmGtvS(_yǹML6rPiLi_?-ͩb/,N7hMݕ󙗯ݬb qݥm9g0E?簾,фXIn}c;̎¥.1X|V? pѳݝp]zEC}]fV*VYNhԔ=M+9u~ o!=v\:MB汘-y VQFQQ!N PO6g`IWCZ>4x"K{X99)ũ)qgSvlؽ­OBQ> l8c.ODKe+/Tq~|ͦsB"\eŷ*/~j<#<u2EY2R|zhzG^׽{hea*&<^_҂'^5wmk~ oFwr֦63}܏'džOI=GLD]cGLΏe1ipP^1?/efeݹS9@N2)щQѐuw>o|C? ٴ~jרp8mm#R^N~7ojY.q.ç< 0h endstream endobj 137 0 obj <> stream xkoF"¦/>9uq%"NT73bܴeqgfwgfg\V|2/_Wd(fۧMqqr_&U^zy{=?~/GyD"LgAMd@wgqpO_Tg_gf) 8ߩPL< Qilwgn?`b3%jw ?>6vzq0q6ґp#\>N-֖~>?{ϑ|?7 z~ q@4%7^J(H+Wf?bΡ4=S\}ʠ&!].t 5\Z\\ɰ&Y-bŕ W^ٷSFmJP8Of2x$#R-?@[h/\H6i>=3mX K3劅]>lڱIhy?:;8^\%!*˂@8] َFZ%8?bj!k2y;A~/U h2^]/cH⍉x?}\`Sy+dEhF%*ϻ?^\ .Q+&#z}KjҥN" (2~ 848C Ɛ92Sl,lr;x;8 3R;NU`8 L|Mx'ʀYb0F@7=r٦QJ(4=J>D#GҋD D~bڗ3T?5N ܠe|{X(YQ;)yqazDcvQn̉:8 +%Iˈm =KU9_6 `t am p c 4Ϗ)r+D*~Lɇ{$+R%Kh%gh1luӦެ,BL"d\mr, G8;km)J;pJ,pp7ICTp mC[ A~D RR$1lfkݗpе`E/9H1nxN5VT>v #Ԟ=vL{], 2O]` *-ڮaڙȥeJ%QK<+j<K=ikLa5HC-ȸߎ0Ϩ:ke/}E;B/,GоB4ցAR`|0M"d;!#]`,Slq4|G'>,Nп׾^8pEΒ1Atm~Uf4~:'Jh|P}/aq82JY1_ b#Z7+ٸiCVgI#3?*M,#n%8>;E5pq㶬p"6ICgS ࡂsۥcdήrGddetf%Ip )9Eo^. 'e@l(O!L( GR.'bNJ"ƣ cm7s+X+?mܐT)nI>4#ɊM$Ytڕ 9dQ|J3M )yӺ*+N)l3hG/HfC2fhjtZ8\nOqiy0xk>Wf"%n'fnsH'n )vvc+RbFFHY'd"|9aЛfgHڰd`]ULnÙnGvc=#VӪO{1,S ӒeBluXZ8:C#-[BMK’;(L 4%VH"FB0u#@ bٯfvG21)>_׳OD*VNg.DZxFRY2#LNewxz kAZ3*edq)3$>7eX۹cOkl$_Z4y G-q EEu, /%=h$+{y za_;0Vr%^ڗ ue'd,?-!.ɪr4svlvj]MCĉ6ULeIj%)qƴ5w#(;sufX]BXCo^̻ |[fjyO 'd-* 8\rFt7lh`15ltQ S8Кbϯ/Ⱦlʁ$[oR:&w$NA.!yX]q@!mfJ{bG{qKÔ)3)mBxfKc rZ@' pky0.ԐMπr+ S-63MM$3Rf#KOfjۂ JNJYN57"l [p ap*mz ~eT_-B)f=R% ŕΊ0npNʦ4 ],Q#  NTRo( ~utD$zӼ?:&8[49hqlfTn03|[凰 VQ; @ۣ#SnX8i8: G:9@5ՓbaCafI6pY˪yYi quۇYʩ6@9-ѤKKWM"cDPU|HI@jç';RtSetFM.d~WPLw:c &@CN.IX>n?ԅx/ca޾&cOJ t6O X >_2dcCXߑM AKټn6.$eʼi=/;I (G6}ZYS yk]k{TlVG)6(6c8r|OZQSZlTm~W( ?[;:6ZGEgٲ5ATollGw'd﹬qlT1csh*3ܑ8%QI֨܂Ք L3r z+E4ѕ[InA˸@v88C:r~ܡHqy vJ{bG{D, Ds=C- ZBCf(pʭ2t]kxw3]3=2D÷'\WJӛ O|d@hz#N:me  n2&߀79zyC sMohfZ7y\n3I4(ftL]okd ؐEюHV _>J{ݻdOoOlN^am/ߥm ~Ji;؇y8f!\r'ZiE}-k:e09v)0j#(YrI:'<$:~N7I ֠NҊ3,5{8|g >>_&飰}:K6X ~*;q=}joUaO{&$b'=_oȂO IXXe),W?5{(Sқ;h,+qC6i?tQ٥[m5YG\`mFq{<(81w?ˎu{1Gޓ endstream endobj 138 0 obj <> stream x[moFna?AM;K iҢK802m %U ofIrDq8;;3զY\Wxqim}>\\ֿ]\~^瀞Ųj˗ӓo$<+ vy}z"&˵Ɍe@{ ٞpv.T'f7v[32-͵`xHxYBg*ӆmӓg'_;BKG?%_ywoC>;z'O( 72+ىvJ֛O'a_cYANFk) AR2*3 ava뻇C<_\Xbyvg[vY{vfٹl~ffk1Ԭ^ٹ-/foC2q P"ˋ9я?;o{җZـqhf9][r+PSuSoc$q_7#"Š.*AESelؙ- ;YmjT[VZ?ڇr^\C e&FXWl~濾nɖu7l/5nlPyM]UTq`Wpf2]|#8q]ټ\}yn^p!rQʼO} +Z嶛uS}rVn~NKu)S,`&lͲCEn ?5sF!;T4g'S9^VᏟQvBPQANR9sSԪ`C^P{&Ja.x& QAԭmyY qLLp7 TԳ*ϔ?PpI Ї1g*4З\i0)$ c{ \&d,Gϟ?E!F¬np۬vp ʈLq<Gcw?i1O"SĘ'C!l]SHf}GCQ wPtPGHI:3$LxujÖ5䐛KV HL"H?[D 4DEj4DOnz<wPE/C!fB⹅t&$[(~*[YO]SW L#8܏.;i &6L o 2x 5>ףQi|;\rêI6uw~mG ;qXr[ˬkgug0hHB<W(cY.ÇA@qg [ si16z i?;fl|V ]lG=/"=p+.}Ix@ex-O s Wͪ5m XS3GSc0EMH ~}X.aZ:p`# j@^C&ua+nfVBQiN΃x?Gyvqg"OwLPƟK*z?6:z;,֮7J$KSG?-$YZ?Ϝ~B_N2l]JXWn}(xpL=؝%lHr=JΜ+O{uE!ݏA~ x&KBIg"9JNIӋS\';('1!8yfh2fwꎣcǎd26kRfj}Cx"s-'%i7?C'*j=Z>^UMSp;D(ia&UEUfbEpJե鷶Rj>{Zֽ/'ayK>_EiUfBhc'6l{Oә%u0,q;*a,`b[ ۥS4o<.T޲Δk{j}e.\ks|jX4--˨8ӱiү'üyu$v endstream endobj 139 0 obj <> endobj 140 0 obj <> endobj 141 0 obj <> stream xkF;}'H\tdfVf=/j%3c^]U]GOuyGO:_]Gg|SVy]'O~|pvޣ<`q{, RiH)]Ods/6{_=Dq$`tb dQQI( {ݿ<,0%$߾ *~YH\i6%d\(8KbfI`I?߿53X }`Hk@+C#mHR}z,M^m&l2N">3_ :918?ep"䔇E:Q!MC<ؔ'"Lb9R2%&8%iMnBK~2I7m!+|#;'d U\!F#Zh}Q7*Jt1]u#.tݖ;"!]v-IxPYŦ<s]C@/8K6hވ5.Esg^}..B[v MFC^>{Ӵl+$qMWbx!Q.J@ 5=lF=%N$N~u($ߌWq@V"?`p!g,?6%#mlkkh4[TV/v TkE1O ?*c3Jm_!W5ӈ?ۜ*:vtCI:ʚ~0Yb5hN|ڧ͓ϐZ:>Ob,#FaTC&UCNrf$BrR * "ܔdtVyqKn;%Mxl`ζ. xݨ(^frُH҈sR=R`;76U/@5^un_[tbkE>ʃA~MyǢTv9eKކ $*]Ϡ8Cv%qOwl M x"RNHp. T!(N$CDu_,)a孁V|=>\tfa뚶dZwǛXy 't‰!hYE|(Mn05:av&{W.&XRh~x|D+{Tne lZBb]4!,rWмїQĒ#.qѕFDJe E8M%h*ĨB7ħ*pVЈT6*/Z؟XÈc~1HL2/TSaV2|TWm7x#H,5HCa.=X`kXJm"a Ge-XdǤնlB=U)5ןcqU/.E$Sc3cmO方- O͸'3g bn L&F]i ZWAs@U@3^5ULv\Vp[;bd,qvqaRF$tif%6/-Kl"n\wJ Qz4P Emܵ ~MU0V@k:B'g:沉 < 60$)HQL4@O N-"M8m!#zl\1"lCYB3LGl1QsF݅Er9:.G6Ag. (]29WhLG71qY)dC:zg5L)WmqlwUaNڥQ*;5uBrkYN Vc;,2~0=*6bkum3d}xwWPkoָ¦PZNW~*gs=[::~)ҰcF[T5U-vWw6+>eMv׾Wyn|_tM%x JbHOkB7@96b:Pk b*˲Z*6td/Un9,$ cgB JZi9{C qAlZ:px-&MR뵫?qjqwdcNÊjw۠7pLfwWXqHWiŶ=%kAyoRQձXw儏9ڸ* SS Qs5lԆ$|:W {lz/Sѡ1 uZ㰏[eQGjߝF Ls6H{`ۖbzA$6VHF:ҧRWu0elӇ>it89qTU9*V(ٟZ^oPÁ/nGbVex4ʂ9?/EeI{:*8w.A䙮!DGKtQHBxVеvsd*[D5M$Ʀt,4~ԓSev!d,&sVuٽEY۲vnh@Ol9wL}-zm,}ҏBؠ[A+^t=} M2JX"0k=XW١)[ґzЃ$칥cLg _8&e> endobj 143 0 obj <> endobj 144 0 obj <> endobj 145 0 obj <> endobj 146 0 obj <> stream xnF݀O i΍m6E 6)DD$J8ڏos EġmD̙ۜ\\VuMkի˺ΦO{_߭l^Y]ׯ\yݟ\\sAx' KȻ_d9= 9~|z{߼NO00X28ţ U@( KdxLRyU~zF0!$_J^{f GfmJȀA*iq Β~:=ȧ|y&SR9kHϐX\C]E%#YeSsoΏGy0x?OUE=rr.Xқ~s?įr//ż 8dJڐ[#H N48;z3yvQE80jw,Aa[M0WXHtc xdseag4[lݕI-~Lͣ&yhkHc[W!SoBG!KP$ x߼>)p._wyl%=eWA us4.;4XFS]IXe$ic%THya(ic + MIzII‚@Ɂ>gOYiQ-in\'{!T]f:061O:nS"R6)o@D3ٰvY~XFtXwl Nd(梐]dll3P‘+b:j᯳*'E99ȉb_ ̒{u;p{i.\>L\$Eka(YqG\h!"p=ƞ݂5XIk;8`Y:5xmZH/3_@igAy&Qְ`'<],Zwp7Z2?%$ lf.)ahUal,3Sq4%wҌ\y 7Fe*iY}BQTߣO^fmKAg-B;Ӭ1豥ߖQd4xF;&&ٰdaP說Qڿ#*7zI)ֺQNVI0qٻR#/;d eS9ZM HcsrlF3T2_2rlSmȟ *\^7S,ve)Ly |]LvYCU̮]UB2.^њymCgF_`U>吷uNRd/,,/]aIh:; jA6 :œ}uY@u+>Еit(m&Uc7%T6-w3l:g= 5/ѻ@f+™sc:%@6()-נw`]Inj#g_g**vwnZS|Xzϗ}#XpNanMH,v{6㱜sE'%4a(%4M}Aحd҅SЯu4o6_x#/.0FULb03ROEniLZe#:^vCe^,tE1c -DV3lh,_fAIdJd5PblJj LO|.ݐjLrCd)6dK7{>j>bbv7ЛG.31a :-c :hEyȅ A;$âvEc-bS.3*sV>ӓevEѓmYigPvLܸ K.Uj |n' endstream endobj 147 0 obj <> endobj 148 0 obj <> endobj 149 0 obj <> stream x[mo8 A~Xhnmsw8d V9vjmz!%RZwuli83tl[-f*yYU7":{EB&WG8AH!g\$G(_./G/pQ5&HϜd8Y"y"Y&L3Ɠmy|t(yE&PjBD4)Ӥ|[P͋?';v0k4eXsLA%lT*,~;>R?>qY@70O@H ΒQexBr{r\W'< l 9V3a(A <#(79vwJ+˓Sƶ8gqME0Dl3.JJDrrL߼[LXbhѣ{TfE*jc.7@w\ MgS.̏j?;K?o6y5_dDfX2h)8siZ ̹߂#'$-ȭ57v7-|j v;Pn\$镢+jy KF5J Q 8Փ-ji{V7}2EPR* W־h~0NuS)WRun y^ ׻AƭzU|S%rҋej(L3kJ@(z#3C釤iǤOwbݜf+zyP h"p=̀o1O\S̗͇E&g{uM1 YD9̀ov5`7Ae #ZM1 F22VU1,Oofg7& /K(ȵ ~)s_s(ui~0H_PcZ_~ ̤I4uUC;O V{ոe7?P7ZFEj> hSٍZ19mD՚Vd]˝Vm76sZX3C]2B 3(*ql1)*ddj&AXuƻMOq³~Eq"\ǡP^%x%ytEj5hʘ4AQs!ώA^$ڞkM>BC4$zzbYV$3!uebuelqFVZQmFê![hD'Kh$@\ SScX7[˧"ɗW^ќ!J^.r}KSd_*Lq1d<=%A8q`mh[ׅ B<-5taV]Vِr#Z?JHV}JZ6zEjF͊(IKU`Mpǩ: pIA0v4!w dוhF!S#MzV[ BȅxG`4QMCSA&~Rob&ND {\hpTgދ͕W8˵Aā FjQPZ?zli2T7`mo]V]-K L_ӿmqlws X_c~CPַnc3S Bf~lXl\iA6dK>"P&f_Ep+DiBb&%*x ;| $BfTQ2~%M5A ed6~9r4M9h@xc][[l#ފፐK;D΢JvzoJc&|ڷwy.Fυ| blzSٝ΁=s@cwڏK5/ˌe7Z|HƯ>]Gw /=z׎4|R) (kuckdMmRG3McnB5Phx[*hkYyqңI37mtRo@ j4M"5踏Wz^ef7''t4җW(zq`/sӒL9̗sPI9ErhvO 6Æ14eL_ fqOAr9ExcēUZB\۝$qI}н9/GJKG.--=DNʦC&C ^}& *uP2I'_b?0')A'xlKq_S* P`XC#V`򄂄]iErU :> /;ա`stS VlcOrգh)14Hp9EMk@t77UXrnO?`_\y/@ U,hߑ}ݸ#WVx;^e3\?ww?FY`URX"̢au?S;i0 B:MEJ =8jXc^)(D;4bY`U4TQډm=9F U U V;`p!AZPq?x endstream endobj 150 0 obj <> endobj 151 0 obj <> endobj 152 0 obj <> stream xYs6U7SE\$5j3,ɨ1>o sқ/,d F^#ER._?>x<՘ RX¬#**};2[j&Q=>o}vus8;LK"$IrjˢP(%tWwutvy\?*ne "Bn㺅nޫI9(KBN,dT1Sˊ^ 9I2nʚ|O R^"aR qc94^A<4MfiEVM}JUN<ųLXxa[hس<l\NsՙCBeGʮvJ,V>4\{I/OɂDpscsh-">w #Zh_ÕU{&/\_R^(i|_;Pmo#d20m?GнT}+כw]\O2.)a) t&qr ]RUDzAI!tZtnudb΂Z\yfzc V$}Ua6g6`K}7½O(h(\f` :/G'RN![jC3fGLg[j/YK5Y?*m6Xwi`",ǨњrP.6[>F-Ȱź4p/?znc,ˉxnHQ*rxT%R&SGk(;FiJ\UvyK"i#2,,Cf2t)Te0ޓAFyDTxfgP|B}q+%{ټ:K{mT j>~e&sGFm'?Za*iC]Wp1{ P&2 ӌ42Ǒ;r B Un؜uNĞn]8-YS#3`S ԴD XsicL?=-IՂz&@8 x 2|LER>r " ^ I!ɹQԆ!)H"SHIJxK@+,=>,0vC蘹tDP_зx 7/R#f#H}!>0JSƠ -L9RP-5f cc2habrZ9n H I^ ZL1%qpk-M6땜_=4GxN%7egu-4gnKTf%2ȣcӍpR1qbb_5L v0?6^VJ9YZb!I-xAdòr( (Q)20(&c'HIV<<˘d$:"b/Tm[7kEcqRYQpvȜ{cV.If9º#p /3p GTنcDMyecYA!<6\VF M#; <4AN K# 2fF%!id4𥑨H Ff^%-/$o L m>2s`ԑ+:yy%bӏm8~ l1Sc%p3,.e))/G3N b 2ȅy/dcIX($&;3PRJIl`3LJ!cM8]Z6bF 6Z2NC`kj10ف1_ ,Pf Tw.e tZ1]`bqqBao ;͞QK,c1Xިм/hS7%ayj^"'H YΌ,١AUgx_-uݬvVm Ӎ /C٧4(ا~DZ1/D\ Pݨ0ިiBs2ܼlz|waop^&EI%H9RK #pR%aMrdhI) QВ>F^ՇÛ{ɦb ;ks5ej6MMm ?9-LėM?tpTyn&ouH?llۄYR5+ grBC9AS D&‰ٗS7Q LLe fZ`\>$-Lu?ac]*z(8" ų>ݡA4h&i=}!Ӑ4d=)}NTy{(vl1ܶ+'!ersC ,0pjr`R(;񂆉GIJcsdJ>/gGUuJv,#l*K,,4g麖>/3EқJZb$ t4;5 <-Qx>ʤf|y6BNM]<;5Zbaf,۩RN ^0Qi)NPS5{֧9ܰ,$914 &V/Bі{iRaRRqq//ʈQ,?B=7S؆>˯Nڲv)-zk|>Qsv+c>cjXWRPam;-|oSb ~J/3U2~|rEF&zg%ȅ-=Y~T]MWd6&Z: ul;UobQuϐ ;VmVm}Hmn-.Cp؍Ua9LI]S"=w-hw _@Ukz~RG ByxEiԭ endstream endobj 153 0 obj <> stream x\o~VpGs_$(pkR9xLBeّs{gfIqW]RѴQ,qvvvv7/vq=xmg*<Csz>Yf~?%||s2yVWW"",RYaׯh,Jn6ׯ.__3p3ͳ"7YjI!MVΪ2tV%BeHWo^JCkGh,aE$RM&Y9ӇI m{P:@^Ȭ4:8$=0e*3~@J=W_h-?1eAŚ2IvdL?5'*_?h.,bHs ̎|7[+Ms_2m>r{sNy!RYwƤ%`^r \2}2U 4vҼMBJ|Zϰa>Q7],A GRgzv> W %'rhi_zquΤ]s@@8AUhaZ+aLӪ2' V$L}>n!u`Q(Yh8VgQOexX W9vMf֬ԛwIJf:ؠroɧue>EȃG?=wRT[)3#U᭮|{ݠ Xg=r-/[k4HQFeZ!;y.,.#ΆuVcV&z t' D>4[-j0]x.) u9o6AR*+Z(elR uиW&`4hMVY$viT{N1B5C4%"$`Oamo< @0F&&|WLiHWR!;1!I19Md~2?FаAz8|u]MbtIO|M" XX8y ƧR͒Ԓ~RuVΤd%0rfrPEajPI?9o#)G]Q|HN hȢDס#!t:@\2C(8=/ݼZf7 p&$caBMLgee$Lw]6NA#cx^V.ˣbO '‰d!hvA>~4XU #`B:HD//&B9׭T#\c4,F!b@bBz0lZv S]=Us\ [Qc2oI^J\}B}hkz :os!IvTŠ(LIɅa9Q.\tey.)GP Nc)xhzرTD@#4qiG3$C%ž"#.p^6dx3<(#W>TдZ;Y*+6!KΫeЊdB)d3W51("40#"YoN"pz7<w;i]-^']Y53{%>NK_J7a?(\ 2"ZEO~dc:œ+6ރ'+_#3-0BgA лܓL ϕ:"N۩8Hꢻ t&]&C~GC_)r5hqv@bިބ/ߨJdXF9f7֬yҚ]b ]MS3fw9=Ҭq6`j?BREJ:V֥/,zjq-~؁"͖#S4a+zqZ[-/n/n)hB$ K 'PvBXyJa}~'&DqX) L I3Ͱ wTщ*\4yV|~UͿ4nj/æJ">WM˾N%ԵԂjzVy-Z\해,mU,4E!i9:t>e#poK|ٙȺ8[U2&y\dkzO%Tn “n<-E{hqe 69r9q?.37E+ endstream endobj 154 0 obj <> stream x\o7n~\}\{q94Ezuq88EֶP=\INo.Iщ҇ᐜf증l/|vNivruvl򫯲߼^\=xBVfk("YY4x6E]e(Blݝ<;=ɾ}2V)RH,[7/_}oٽ龛dE#T?)bB?.'W9eN~:=@\k '_/ W#ş0FXQnPN^Mfg"?)f===%' .W ldeEC;`)SX])hI.ۙnp RԲP5ԏZ[5Eɲ1% tgHH,<( 2XϞ#[v%C/)jԏկ2I#;V~֯MG3 LbZތD@{B> V2JF$>ӕ):/*3{ ˑix07ֺA0%!^$DR{^K8!/~%" M^}sg[֬lZn9aqݭ,}CVSL3#^NYfg,7&$#,zP{$x $KfHDM]#jC:-A'4>%EHƬ!)20jWg햝, azP֣8k(m,F% Xp(0$<) e!R0D"Cx !<$aʆc|iȦ*g lM s³4K? ,O֢LmyvOmUl<rvԴS9pfu`Yp xϴhY|-ͮܞ/ ߰%+8{b/uS1&loL}cB@Pjbu$zZ2a!% ExBV { `iGTuYXh) eH}H+Z]z,*Vv]ոG,F,7hft}HzT)SlD@ĀBϮՁ##~lZ0l4) @S(N+;æۓ$no)K\CXeXB-!SE6 M!N/b2ۢx|A+Pf@RPGyS&j$;K%+dL+_ޠ[UCNKw&Fo zFzGhIJ)TWZF#.#%?Q%1R2+9&}cA ܌(?@nQî%׾!lƚ Kp`ictl"'.,hL5@x'Uܳ'c ms` aIMJ/ (鋊ep;t7!:K!L_rg:Hs}QϑEwI4^JR}!D2.%l_* ݛl[]N:s.wx3"H*#BLDk &Yk)4}pN$_=&HxU&:8uxJE1K6& b2ڤ_S `@-`ZLwGNucqmU.CF3h2t~E^p #Vx[;hR7 $t"U%nx5HItSɿ=Vۑ~'YQ e[MB=O OM*>|␉&G-"8{kG_mNWN^ N8~-T'mUSoid/')?15Q y73Vq&evz7r֠W5棵v(AСXT2lZeىw1 ȉO'qupYM<:axDr~.}.`I><%K*RwO1G\a(PyxH~5#8쎨~%އ=HOAvrȢdٞE>_I95+'LS.^^I GZ爆% KT_"R[Bw1%.;eJ޽Ɣl:=~f>~% 8ғHIL>"!UùKV9M^H2ʷ|--AXMPHnS?rFzwZ/⬼I ^GTpaIRQ_䠬Q)~Pkx{Y6b5-:41Bu9`!V5F@%!{[/E%h"ul"h*~b59ù8C3m9(>g-J^sM{R&Zlo睮럓NanFxшvXEloUD+mjd^-_]Ty@3>r %+QkFe{T3 (gaL@B~]NĔsF!ƔӔFklJEcPIos%3sK̓d;[_/RChz#B3jS?a\S|\yqm:uU3_cxMNe-[;MWm J<$MK !|ݪjj3NR[+XKohd2 u뛹j{âp?_Ͷsێ _w)]Ϻy/2 ~I>*=Buh޷nkJwUqH6xװ޷׳lh(`r6f3]F6`kuoՓ*~G;F :suj CPʥU { sZ.tIU~4WDZ[^ٽ2hBɉdRZʇm8n5AR)n cm׫^OELE0 x]j繸ӮAͣ,WKcp]ۄ6j\z 7V7յs&psݹ6VF9D%OÀ h wC^wt:`## 5 0V7}{la #[8-V=rCI4ϵsC(J4~><_] F!C_5<:s=/f,X~.Sd P#jBS:eQ!3RѮSJEh'SE\[n?3!^NQ`z^\,}0CU9_7 endstream endobj 155 0 obj <> endobj 156 0 obj [ 157 0 R] endobj 157 0 obj <> endobj 158 0 obj <> endobj 159 0 obj <> endobj 160 0 obj <> stream xioF{tӜ( I"W]- Zd"]w̐C$-o޼勦+WsE勻b\^ow_^?ٳ#|/K3W8iOgn\wg^r `1LB4"Xyi⤡:"igoϞ9߾tT1K o/? Ko_^r|Eڣȟ( BOx$,$$% Ϟ}N O d.6a(ל0 cCx! R{Uwy6t+Ⱦ]_InOm} jToƤ޲ .VՎU& Kpi${RH`!Ht8#;~OZZP>+ȏѦ6LX@g<PXӊ؎r~xwmY/"4d!Cyܕ-}'$؋Mq4`A(a#R|Dή!M|O7E0&d6WDGC;ESmJ6H zm {|$\O2C/1ySq @˷G0ֲ1G ϶\ؘb[g*Ͼ^Mz%p9~[Gsd[ OK!Y*oh)>l@\(v]X:RNf]84\xJJAerP{UYRd*ԖZ˒s`R:ȯr7+$ҁپ `!H(Q.€"]U!BUYZQ讠u[EU?xrר.}yЬy K) (Qn 5RPYDbN֞SayX'ZCBܗvHG ~{BE`lk@w zWkˎ^DwX|G# B1l9vஶ nUZ-UsPLA1Lr˚&,\p)˨~@(O YOT2c~a XڮX`ZsYYbpm=w] "=~w")60+#(+!;!|Am sqrQړ_N P>*MliO- /)RK:yO>L̀LGHKm ÞV*Yhhv[2жK{sRzShQ1 7A%(#i̲i!h&[ d[Pkn :j lF4%"`l%cIkl>xEMfzv-%(jZ I aM-LQ:4IOhbzƦذ9&,ɷ%{L5H]%_jg`x@ވ!!5$Ěr8E0W{^P z8LzWS<ݥɟ|ΜG:u"DgvyW]P[EQXDn~A˭uuXC*s2R}5wHU \!DzV9LE%g,Ua$=UY3@L'XP;ܺ*XeM@zv`fes B< MQ<}!ݚ7˜dG_7t|Aa2׏Ix] +E'(Oveu QfRDovU-~iA鸽WXv6*d$}zf2tM' =? NMPF$Th2kqO[ܢvw&bBiaEqO{z?٢d{1xˌڜS=U5Ou3ijJl$_s!<d34ӽ /=\H"WS9U. Q=dphӱd x[t_]e?Rk~`9ݜvFhm4~CGqRf 1.n1胚2)ɥguCc1qk -ˋ]/ x>ܒG]2"spbc'ɤޝoLH`A!nE? $< Ye!L>,/Rh"Suz2% %d!!u,u X5@o!hA&1h:#+3\N 9r%c/WLzxYLn6'c;A[A eQ8a7jj&@"| b4qYM&aF)F!Ҋ> stream xkoe/V|n]+P$8K{k;n/PCrWU6t!zwߝͲMϯ6_==Vw^mK("ZЄ4)dF$2*z8=!ɝe<NOdkrӓwɸI\dHRjLeVI!"<2V'oNOw?M~k, aTп5Xݏo/fHXj8EF5dY)(’4u\\T83ir3ea?mKgF+PFLy0N/u5q3;cQٙd~7s6Ljʈw>,r8KPȘg*lA=>_5fgR|IД9? ehxZg"MTDԫoscYdT5hxcl0/3Q"c+dFL4PZJio$ L&g7(ʌ W3 +/iՒ8h7k$gGel I#`.N A``yJRh*ö)·컏sOmHvZWg"cW SQ2uf$cNA D 1J*01`j1ՠ [ADX7( +/@nGqK\&M=@æ`SӲɁA616G"#&2GDG +%`axqD\ Ȟbs#4?r e)H[ !Ӛ#m ü89/5b؈3 gLƎ곈{Љz3,gk4V|b&7ۧ蔘2b34)&0mԭf ΍ ㊈,e&71ШA=n@[.XU1,9(4?0aQ*GU maSuL5~4'kTh7`W[3]C:]F.DV~sGLWR Vt858d7yziǑJP*ͦsx2"Ƕ8eV0جܰ_:U d`Q2 Y)˲*! #{Rf _jsetf3ʫ]S)y&iGMMt)8<)LRؼbbB3gC 6\9jrߘnsB`ĝנmg x_-/#v+1 gKjbZ!^SN-eZ=jbc̱#Zq{TQi-gQ/i-@nyGR1@rF[lЦJ\O+!TG.(a¬0mMSFK xjTT_9Ph2r/\82&҂[ 큽^&j[M'meT܏sazo2@\[~ׅ`} ٹO'~IدL;h#` {sP6q3n_țlh/7 endstream endobj 162 0 obj <> stream x[moFn$qE6m^>8AȴM@: fv⮸yyԻw]Xvɏ?uKin&<n3[:[Jx]EF*0GeīDFyPR ϔǿ}%0>ff9CUd՞ q8B 1/tWw][<}![^dy=Ov|,1p^ټēemwn٭C2et0^6P6ix96 yeՉvXt,N`r‘ټ06CCEXX롁v )g ŵ & Jè҇Fd89=ޮ5T,x@U)YهHy>R0\i;tEzCLLd.KlmFwvjdZOݮY5mPaX H+ӣ8-A81Zbo^/e*ѡhh ] * j f oɦ{w*lpӡx^?Y e97Zj)L V Bsg_N  6 J3l_9BtI0UcDEu΍H`䫰A#Տ^QG(FUpUU^LbPT\C"xuxC$ 7ޡ0)YZTib9>V9@8666"Y!-o#Un+o&Q]h1pH{9;"#i>Q[g$gԤ`=$DFc}MEcM*#ΧKC}DaXv },?++䜢boO}nç|ل2lWYS*k7Sf-SgOhT4}hwaKLjDԗԖpAN+F_be1޵N2i =|=XfxRq,vsZDxSjLLkHKLI) -d%?̗ *t17AFar_N唈`\ЏȩqfG7"lfιe= Yɴ)Rnkژ"W6zgN{EXz\!Y,-\bos?7#p{WW"q_"eve\o&e&eT%ks#^i}VF Ü\L&)no-?|}yӰ^[wtG ᠲPV7Mg>^XvZ(lXXSf5ZJ|4uh]sHõGZ0Z9ڂQZ习bW/8rRMN!3FDAb^hG7 WaF09m6iFg_6 ٟG +UdQPFlt+0~ޣ Ԉ >~(&հ<cŊc.Ӊ[U\s*}ڀS"M#A˩Dڶj@3zfXVI'Ͱ"<òJ͊-8ZC3@2mor6 "<2b#}^8'P,Gz!ѿsi;ai&詾3%%.;3v?M% 31y_f;wf"|}[)YujXQM_`"K̺G6P ʰ([`> stream x[moFna?AMF2) IS8Ep@i[8ITDmp~3HJS،8g}xfi%uUM.VVl9fďo߈OO.IGaӓXD7 T$ڄƊ DӓH#FӨ4f)"n#NU{uXLb逴V,LS.^bQ X8Fb2RJmR:}ҊJGrJ'C#1 IɱD2<:UP)1߃"ybш3{LMJXR>AkĐ]hqE)@ŎYZ83BIO DqAPXqu*7VϭQW~&xd+SCc29P,=69L־2Vd Rd2qB#T>G5uKMAȫ ?c]6.t>tC',o_擇Ձ쁹NN>B }+3U€YpH_~,4L̑G宲ccYsmÇVخN,`Y]}UKZYm !Hkvz}}. H޾gͬ)Gu_%f͑G掮4`޶{{\Y7Xbnܱi}T[()5\J̲cl_{ĸ]ql8aGa0jwt7Ⱥ@*qǦ'Z_y^޼ϗWC |էWn_ ?W:R80wVO[m<\5L[[@Oٱn|Z~@pߍ[~lk\_Lp[G+-rU80<5ƼyVd[@~ecGۖ#l:,5ֻʎu~l6|a}'csUmVՠjMp)3t{aӹW/<[4.#"Z]D5mqRMqI1E]6]elrp8aGnWqQf'҄ac,fPwR)u1-jCnCZRzj?:8(vuj;t'S(j_+WmgsUn{;Ƚm6qÁN8脍qqk8sVf$ V Կ0uOԿ0S\6{wеnjxj6 &vω1V{nR[v\s2(唏)r8b$$ڞZh"iӉtHm[[GH"H1Ùq1äaXtUnZ;p&yH'3}LۄԊxdYTfHבy΀j"HЎ h+3 hu g T7J~Gi=˸ﱌX6Ґx=oikl"z&:4})rc&{Asq?CgU>;2w>qcb׃F٭4LGLyIg4ָ:=%U}+p۾f 0^3{X6Sߡ#fMEMUG/1'ㄶ=A+ovҔminQ';t|쒃[fH=jcʛۭ(͇5~6jQ_T)uҐOzOl˗ft C,:±Zg&K!4|!3WMffŌ8(<]rQ*/x =3Fg%tæ هU5!7i]oMG6`=][lUsEe5tM\o/@ ?:ڳw GG&z# KjbXM9f&@ĻcF˷q2~Kpس#ETXKC@dޏ_*ڠ)2x'Ku/XTEZ=naDm (u+yx eο],BEO`G'M^!'mY󽂮ù[rN}h3`ѳ71 Ep: endstream endobj 164 0 obj <> stream x]o7n~ \&>iEN;TW%W.W?j#iv 9^w7uWg/fegˇgfgwnׯo/ފ#1j:U]|r|.~|F: ;bZI4e(M^WY-:E.U޼ KGX[B&,|-43޽Θomf sMDH;%n͔y\\_Nx=FZ+$=5=ƼJּwFєQM&:W#O?bo;f89U_q̅۲JٓVi&tU"+2zui41?ٙooHMxuOczn٩Gu\Xj`8>-7d^zg!P0TMSLʵO:5%>#;HIEyUU\Ăѷ\[f+lt{yW1gS dT˨nq>[=7t}5x7o.rp1Rl[rr*5&ӽ|k&ZP`^"/r :oDBLOˏ/p`+E=,HŁFqƄqK¸C1'rY19ex%&"MjGDŽx}IK( XYi62PKƭã2c~!!T]}ixԠB$a( <Fg* 1ͪ~a?>N/js1 Nzye ظeK_"k]wK)~떗?P3@ve8p ϽΖd~|Y0unɪ8^7t_A|n(#H(@pf3}fCy0S7fPAkk$3әiCBLEIA^>T@1|rBp0p ݊sܮ8'9t.^h]>QGP`*|@}F Zb6z8J[#GxG Mm]s~㸝AqhgLn48"H (ݕZ8 5: jdj"uˈ/ ^i%v9UP`*u<;Z_Lϲ\^.R)cOQV`]ĭceDM!U4{wtEɰ 4S2sJWE1Io?|'3RKBLH=ReiKGl̾R 8 uNɮ|ِ}̾:9:ЭX .m:#FS+) )- 1RJJF)i$$ 5JU iP@5*{}w cc3KhY㖯1nw ᐯD -%$md\O.R;OtP`˒<O,UWY$xA:x[bV蟖*$xHtNB$tki{+䂊|^yZTWAS]W"1*l:Bupo4*&T'9+i0i0hi`PSJ0uaq:]]%h2h/+W'kpń<FS.b@{KC؝IӞFK552|;>;~=+7ewt@N_- 1}5RokrC0.iM+9w|\k<76YD(Iv$uDSjGP2qEWcw4|EI 4Dj(ͬ{"qZdwcp8p|fZc\؂CyD{;"i{4T{7{8l= Boޜn[X3zMNUA2Ub⌲2uIq{-w1HtĴ4?FHI-rTr d`-i^Yi"%fMIg.b)zl"q]C,Ph0u|X`oQ׶ӛ. iڷ.g)Ro&e읐9F"~MQ H[!.n9LH 9>O 5qi;iۗ;.k;>>- .ԯ3[9,Xa@9NHt4!u3Zn!GڙFad?똵zY-?RsZΧgm960?xm<7ZKEh֘\ZsE+vuu?{D]Ż^tiW~PAuOXh^b]#qǺ#tQgmύ7Gޝc^ݖYpYh5EJD\2,Sʅy`Owv7>M_L_>ew1%{jΧN\}RfIE)<;5jf*xH#[!].8+pgjH kc.\˽=)){z7?}w??8`o #R4R4;3W*8~ (yZH=M=D4- '~eց~v8[_MupE^dw-ou2N`?,l@4䔎| H|KCRZnIt [4:'/b:"d<r `k"!Ƌ,~5A5Zk:̅ެ)rb.Bm>>'b"$0*0z̅m B̅\k/g}:Y6yOf}mNt_18 8jiqDX!'(YMU Ql/]XcZ>IJa7$T$|{vN}a0DD1񱥡cMGnİxꐰ}Xޛr'ޕ##U)*tlHȡB@ 9w1V/EƱ(b@AKC5BC$ĵ29؈N0 @C_M*=*Owdgz`rT4xՒ0A2j!]/;*W%Kz 2XYK立wsAnU#:3 - EzC@ Bw j~F_`[.'zl 'FxhoSށ mloA2^\,}huw):~c^D#:S45A:k4Է2J;䂲x'ۺ^Ay'$8'#]Nqq0A󊷈CL YT}lܧ~;`QH endstream endobj 165 0 obj <> stream x[o6nPe)- $n)ŵ0@^]wI73ԃH-۴HvWpųm;{ݖ6>Z=qvT]ebQ (WIGT#}$48:#k&%*w&Y!PH,eGL$RE诚PœSNHuK\^sh$.Y2a@xRHZ'1\2X:f`&PoA`4R2gJSFcĩ2UHbH/˓SjϢ~ۭ?V=-v'"isWi0gX"+NƩdkv㽘pwLA`F.(ƿq"# )ю:9mi^Xܞo>mmU7TSakp;g:05tzNN p|yrb|Zoi^0aHXRV&^@~(cEf4S]1W;YOR% 0![  0C쑦n BS龖[1wEBZKt[a~l=quZ.K6:G@iգv=(Y bTT@Ap:GdiBX@$2hm4TF"Y?tϽHҒ"I00X%j6a_Waa*sHQq[ݙb޽SWPDa3̶S>)\ Of Ww! ruI.T˴8[׆i;a4Qht"#X 8%\B%m݆ݶW妚K욉A9)[qquY!6`ONs +$H_֗q:on=UIX.e8vL K.da3_-ixM`S OdD 7+@"~ HJ#sS'ufћ0DžoD7b]'،^{~pubwo@A k:@M$ A +yN\*R5ӱ ijxsSR !ޯ{[v{_q~w>'_[zjb<غ~CZݞ9:|k/Xg~Բa""CGCW䪅j-eYw=RӘh6aǘ@&Y*|ϣhU׀Ůܮ&'snP;!ȓ+9I:zl8.'r|=&|#~KcOġxXf{"6F6/Z}ڑhxKC檪jIoqsӮPFtI.RD E{s1%s&dNMHXLƊ!C ܱ^G ܿB!gd\r-IX8ˬ=:}3|AN7'{(hP=ȧN{gϩrCd*]yhU=rYs&(}mՀ%)sd ;فA]x7q쪱 4u\*ᱫָ6!x> b/,ѻgnnOw N*'5ɢ{F=Z:v==-ڛ:C48Ab:hmz1Q[nW$1! /2csR-7.끚T?\Լ \>nW/zʏ5%wUO9AɲUWղfٻڭ%=sa1uax۬nEۧnFX7Xln5?2Co3FR|dݻ\a"IG~?^ endstream endobj 166 0 obj <> stream xZYs~WA `JdS˫UU~(PB hG>3C@A.Z6:??lbT>Dwgg/ٗⱪZч5(I,]Ј4dB(2*]?vzrG?NO`9I8I$Q 5@'Jr $KL$YDy"dԔ'w'էY%T0ӄiRI. n׏{VI. %[%[ }bvOHq7_g msډט1ƖuD"IOGK1)VeThw[yq`/IP?YS΢)H}\o (};7f"|Be*$K=wWF@]& i'f.!ImE!`eCUBL3 E؏N_&kI@rcy$V cKƵ$D"<4(fGŸ4>SUNΩ"!"TsIDucwu!e\/s] 3U|ޮ&"/2G&+v]%.#~7'ab:M, շb-]r\Zzd%>J` ;yAg 9=hL;4}pSíd&S6F]}4 e# ؂92LNS_ 0sV_; HIy;IJ(;|X":Q&><<;gsdLt6u sw$]eē.診h8soca>`$Ox_~Ht@@/o8\zӎ >0TII&k-HuUc[ ,8?/*@BKs71% }耳<`b>#}O;#;pe&$Ll |&&L7DivzyUc,8ϏcI*~~ta9$|*Wm$1~AO;m I=oL4vݼ͂8G - 2 )p\Kl',vJTDf.C{Zl/gh4m9;q Ir3o{)4 sIJ ]T(.Pg>K%(`^q9j[cVJSpDR_745[Xjklې~6f2DQqVsYr~,V6mO?I*-T:X^6foxډu+q%gnڝ'QfIVWA? ,b!Ofw04hjx<#nMZ!(0g4H+@ʡt{o>/KPY.,ڦh^tT ކo׋`bg8z1.QJ(Wg{m]# :`s>_ cO:X ca{U'Ы|I)N?.1g~?S++EpqhwP(ktimqJz[WD_В4_K#6ѕ>IcBt}E}biW퓩M*􃺪M1/6f\Tz/zWq2z%(:ΙNŽZЮM ѴaadTAT` Q.rԶ~qtM1Ks_H)Lðޢqu}/|^) _ M7=amBSҝ/ZC1:5-m7w湁z[\WmaG Cr ԰0jWD|@c!T?FeQ$G+gxޡVKůGyl3GQ!}HPϰ1 Oe3Kh#;LgU݄s(~dK33*&ZެJ$@JaZ `Ɓih7Ѣ{!ߧ6> stream x\o7݀EuG/-ˡ)weWE!WKκI7%=[糳uѳzvv~NNnn|m.z~d8+:;9yVYtzeiNBBB^+ų%iQMQWY:P:[{_e/<~K+XA&2:[[қ_dky$o#-UA\QKıKtơ'g`^~{@M`55 oc csF)o)cpgRE6*Qkqivvp(]/gu]@# ݷzꂋ@_B{VՀd~+*_?f`ۃC_^E@BNo :Q-wf un1̡US"+^2S`DnqO "f):]ϣ )1A@!2K.SV5X!x**4UۗMw?^w^i{Vt5OE I9cj,jOT2 AWS|^EU>~G ˁy<bRmy~+!9W{^$c~5|%Ɠ{͡1*ʼE%8A'.ljINHz"8kߩ2{gFJ{uT`t7P:aYc&b c!Ƙ?k-Yخ  9z(;ZqyA8R1CňS 9rj~뛝WX˽Nab C'g^HD)9LtGHIqpi?=ʾͺ10{u/.)e%5N ݽ 1K3sJ0"UnOiaoxUaL;M:Z1`'wp/Cu0eM[3*h]5,jw-Lb/C$ĒB F59:ℨ`N|A+COuRqHsE]`&5\s[R$׎xv<\O NeʆQ)U񁗂h;\_=| xm֣zݝOJj L|M8Z/N  eu-i,R3q$9 yMNPpǚ|Ae=P}/rAKr]:nBfL =ܐHIP`$%5!rN47}Ldy.KeJx#/CNi]uMLa/C Cҡ{8nC/"{)t~B#'7Vޖnx[MVFdl}]]/Ž}P;\\++!>ѫ o)Gk obec/}; *P7ni]wr9_ex]Z{p?f׷W/g?EnfYh?:EvݮTe(v׏Ҕ\_GV{ZGՀ_3P28wJO>_n1Wc\⫱YJf:;P痟uã+6Ϻ[P-QFh& =qy2 Ś6> endobj 169 0 obj [ 170 0 R] endobj 170 0 obj <> endobj 171 0 obj <> endobj 172 0 obj <> endobj 173 0 obj <> stream x[S9Nx+ z΃G=jư=f@RfZݭ_ZRz7l~ߐǧ/On6ߓ7'rF4!{PHBXPEa;}{ w~~w{F;aQ*IL&P*n#'ϒ02&\JM7dćpv'?!u`$N2d@xJ=;c8%P2*5_v.k_#%1Xcum8i}}=x~6|]wف &Ryrm`[X|=kB99P%5^8DurQMcTC39 7Qcvo fqvY{,ICے>Ц2ѢTT mƩ0=mDF3E1tf3D r2;Ipr~ОQljڱ5: e@}Y}/#ze:[|/A(. e!͘lХԗt*3bM^׋kXU[w}IvH" ?`iPT=қǼ!%|" )ӾW]Cn w OÞFK_zf?4 mo\TkTLR{vV6†CL O|qסax Z, hPRm $K2[M$dMjw  4pH0OE$eS"lSvL%*xȳ5:@MŲ*T|TIX^d.Ol%&-i+&(HLQWȿrFޑ9==%'C]PjZI|3%2jt9A?S!/㦒<ƶ/*Iϋ|G~Q e3VPF2f\1YM2)M TbU۶8X"(Ci|1IER2o o]>>ch:o(JcՄg#n9U Ie t%/- 6.Y퓎— ۬xmq ^*T rfp<1c 9b8o#r2,"a;_Տ1>Xf?ǹZ,MqFXg(X]eqBn$ .bFn>UÝ(2&")C.H P:"ྵA:\OgtqK;^}0SJS](M/aj dP4F5' 4=0 &@P<ə5o(  )>i'?@2@& n$/ vӋSܥ$D]$HI 5'L=H & Va9, wqDdW{X(^"A~p~NZq0:Ԛ E mʑ5 =N(K؃0O&S0,}CG;="DpY)'\ynZbΡƔC^mjS_~CѸCS{bS e){_@&I&, |PcF_ ~rDN3*_zUڐKDՐ)`WtViQPo *z"ތ@X:|$yVXP}  Ք]3ԉޡPc7nrty Cib}EPcϻ!Zz3AI O&( LQq *DQDv\\|ʞ㻉e%vE楅JɑK^+)}Om3Krg+c޾'}dk9~C}p*3|w a|s}ė|-*)pY_i5  |MZs]MAV~^vm辨6E28aX`(x^yZfs ͽo} 3,nuHoޒlﲛ-?㡟8;$o.ta-t:=hY3yiJӐh+w4'T]SQg֙"vc(R(g]GbW5bتT4Ibq iIQNVᖮfcQeMÚJ L:$BpLjcwW8Hh{sKvq-R{83щ]^ ²X;y\3$+zҢ~[ݮlB`F^&n x05 kXXcO( VE6B7ƢhptW+\%TaX#paT9V/U2Mۇt5BX uk2aQ3VƊtb$*1D d-Q e׬ u,&ҖUflK=Vx6zKzYg-џ55Lɪ/͘4ag$kQz+eToXuZFtqVv ̈́9trC5sجgS/;@.5iui4^eI1 [/Zfq(ݤ>aj(y .m]gVC3ҒH]jQ(]Ÿ%.ªB޽/[_Qt~ߒ@ 18x1iGҙ#;ٶLi]r,]/k㘪Jrz4Z4V*&Vʽq%/a?R;+faff[?Ί+uvն9aIm1k{!8xer s-~R:\_gz*iu,iOo}bE}_^[(fFo=Ef GܤnSϤ؜EZ :m]Ķ//`f[/#[ ,[]1n ;G4st$,0Mё-(5v~ oW+ܙy5ɴL)h:1 Dpې|~r X W6a: S =^\U&ٓޣ h 3M bˑ3K8m7KNe#  xs4<}|ZD$玚}N4pZO>I<sLmo'OXLX?_Ŧ-:f(v/LpMIĝt.$ endstream endobj 174 0 obj <> stream x\o6njY|J68kڴ}p`^;kww^P~3ԋwK 4;$ř:{٭n]7g/v::; ҲH.nX,)TI.Utrqd߽Q.g/ߏTSiKlNq i'LTd<>yv|䷚PW!̸!ϒ5Ž}uk ?;$Y2e@xZJ8Kb$z`~:>:`$H~270g0R2h.Q{R4/9_NNls?햛mT͞n2w@)Ā_ΚTגV3%VW Jjښⵦ!eODB'Lt?/U ~i}3 }5WF0jqyiui2bfqzhee7I=J+Idd$hp PJC꒥4~*K&u)Rhm~gR`MHKAdqrt"f!^){lK] dq=ؠ@1ꝜD֏OUp0q*J7KFVYcb[4h*kwh(kg0\-uθ+nvr%/HinXY [I2廸+;iF{Rဗ(]$`F[I>[m {8ѳupT̐,nj 򣂆.{r1*sl {^EKҸ {EAx&jАzrGKP'F'fh§|0XKL[ɄHU iI"^8&ڭ{竘g̚ ӳ׿Z9lsΣrf4՘(]z[&UuSZ+ &ӱirzFl $[[EPpGjih(TߢAf5l17{{&hd} H Y jc?^abf,I 8B,9dD,i,,Ȝx)S 1h .k{X2*F JITJ.gx$ZlTn%ޑ*Iտ*33h"EkD^Q8%VPQW FQFGkd4ՂQQr8X *fC76>1)&/JT_Dqvq!@4=Nfq7wSkI65E`%4PJ̋Y18M#h&ZS)D:9L*qQAAn-L,ߘ{CG>hw@2 IyC*i@bpB>[Ǫs wm`y(83Ȅ5HxJ!'r:\s.S:<*Okƃc1{\L|P@t_XmA|z﮷܈aW\J>UL蛯ONwZW"m=A+SUABukƻZnjܤ7ؒqzs jn/~Mx?"tmA0{sVۊaW@v0ؙaZ 4+3 k6. yn*2hU7 As \kEᄗAޱ}_zFlE:HЪ, - i ^Nq`c=2,# )ܞ k ز"z7[v7y$+<-fE9 >>n"QBZ-yR)-]e} \^ёFCmL>By،ݥd51$1mTN77} ?K^}onMSWadK64z"BVa[7Z}ucGy 3#=4} 'Oiubl KEp.#y%:K-*p27 ecv3,yeK@nU@F(9 hwP~]^Nj[M  NKpc^Hq*r5's`ضr`kXq`gA_ƁR2~Av1 |xldzfxV,10Kfe}Nrؓk*]]crOǻ[}qG ∄av]j7.2n7 8=/s@_Q=f(uQToE0CԨ; @^@wX,l=mL2̙YO|=2G:K\{&soВf%E:hz_iu}썽 Ed ހث&n'tR{}]ی`R7 8ɋ*"3>1l+ vG&ֹoB^`/Hš"MSebTdsT& W9vY* Z l,GS||U 2@7ՁFt}6Y,L9d)t*(K?)d>")"MށH#MKi4Up$G}uҹ;mfFי{י,[-> ٜ.x y}1FE Q]sKߑM<얓Vޗ;dt=2Tф1'Xw{nob,[M dGy i>$Ig=pTK BO]GWd-'W _סy:CGZ؍1/}+8>h2# ]V|7-B{1!8 ي.g3Y,»](MA޲VR4ÜHw9z#U).-IVwH' t RiQ> stream x\mo6nA%s,J6$Kznpf,]A~HjHm)jg8$G:y-/]O'w"_zrlX矓_>I~9?<89 ɳL/H$)EIE&drRb( O$M'y-)1U2j퓦ΉSqh,#g2+J'1M7n7lc,z:m"/3BMHcIUsk.#4$,[v'S #>i+\կ{G}#f{gj2IYʄRf>G(+1כE놉6z\U0 CxͶ\kh>N71 j]Ѿ G Phv*ߥ1 ]|*ǠH`jZ}MU!]=y" H!@N3Aͷ!9aeVЁq\YԁG5HBoIQ?\Xɭ8F,s'/GðˊehG@0ZG"6W:a@#]s'R7"&Uzk{Gb J|/(yU,\HAaK?l}b#Շ^Bg[vBSR8)z,jwduPC='P3'tdlb#eƐԡPTԑU{S0u\8P: -u|}̡ʙa2nVQ,\: -I5WjPfJ#$ 1D^!80Sa,S* 25c a k#3(*B$;7Qn9VvfY^̣ -z{wł9l&=_kcpp%1 4,=2-iEcg>c流kʇenQ6g?SoE3uJZ }F(14j p%#3٪_)1 j|Z 0 U CTƆ56&Rcn?UK/bf:ȈF7ʍDX' 2 jpDkcX;hct52ѕf#P+ Y>tpdَt:]oď v / p7'z|;PXuuF|g3h:90Z$ ̡ n(‡:;wo^pW5%f>Ӆ8Q`p;zCFid#DpOͤA"3O rn-Qy 2Hb:ɾӶ[ U6,|nH*.>^M~g ]=ԸA$:p(meUKRW0PjJnYBn aF,he0ȹMfX ƹ:]';h|.ZAa|*pæ*tV#C}=\G䷷/_&ߢ*U]}<2_9| }%6T a-h{&'$Alj+QTyMm^m'2/HE }N㐚#,0uΊ(y(9ٳ7u?WE*ɡ8CE|=B)uc!%*漨ӣxCrة ˡٟς uf1b!h$v8phe,\@R[=w Y $ǻ&N$O^q7?^ݻ0Ir%,?`^`jI❻'@01p2ĀTf މmk)L i9:|='=]n$'/֟nvC &&6pD8wej)!DP A9{@:\A\ +zkYNdjQs3.o5c5^8NrQtD_Sj mkwpE=4kn>X56Mw3LAcRU@ذ ֶ2\N )2rocYZn LtP<GmH^!6 asY5: 680 iʠi`3o)#JGўaX{@P{N=BK ==q/U{vuXw[`I3y5I jmt'RgpvƋfVp 㙓4T3EF)DYgNO F$VAIJ<~8ñv{P\1w}|a㎾m?b~z߉bL' NƘZ$/c͂r1Q`p#F9Ȝs^+&msmL7;q\T)~>l p`#ߨ829$`' :j~+ z(ʴf}*\Z>puMŒOfpᤕTŲNKgHbѼWU5h7=DIԃiQ3dJP1RgFyN{yRe=  HW0ĻzaA0D3KfL78o5Ç'j!vH:{ztէKjj!^gG,_uTWXPhN=#O/OKf(s_S}f"=0 #jnnr[֯t]l$UN4X deE5= QhK` Rq! endstream endobj 176 0 obj <> stream xks6gt"H6$vMIkz7J'H-4wsv>@iѩɈ"X,bo󳗛M9&v:{WNgr3[/.WWѫ㣳DYRQ&,2&n LG,[.d}hG'F?>z 8Y"Q2 B'E 8$Ϣ\%yehU}}|~{^j @& 2|U}wz⤛iR%S̓8N Hgq;B9 FVJEgޏ # KcF#PWFD F#Q|[Nt !ey©N:jNA,UFHj=pXd~=e JƔvƑɩ]Ys>J Znegc%udˤȁ^Ig v@u7UؔSHǩ>TlmyΪ2S9Qq9]]tܛZ9[ofiK$@ lMVw.~9(#Px/ 27'Lf oN٨BGQ, 2k H9gw8c?=& @)UN`x+-e"t 9 5!Op-W S~yf<(xCǏw`3c#h"D|3F?SL/9Ad:[apz``gHp_mJz*3 ,=l0+W`=6 ہAka`(0P/y .*[F 0b2юO &03R="ic4UYoCh(lj nQa]u~w tW|h`1Hڿqկ*85ll :G;…zހPrdQvfh|M\4(5Uط"MbieMi6fW÷]?Ffw lDlA@j*,oxmjk!eؐ|`lҸvc / Twzz j",1ddwH<5o'SXPB{8K];KbHrBH^IY? }).`=dH_*8VJ5;d7^Ssm˓v/Ȩ`\KGvͳn4o'dqk 3:FxXrBFm,j98khlbeSRΫkZ=:%"[m9fj^ J\a=X)7neҹ [PFX=F~ڽۂ XIdT%@*&T4bUl*^UjbN@iD'N@8FI*M^t@{ *^7W=PD~ص{b 2'*"bQv X?`QN2v>;m!" bLSE?(: ,a]"#TuùkANopH@؞(=Z6E934a4J+`SߨZVUzw@ZoTCەRM͓a'uI?"W#v6-T#v١MJL58TC30ՐO(5sxrigac<.-{G` &xUem D7j=[U:Ҝh9h[9 ;Kz,& 3ִYG'zHؒfmPDK*v`a [ 3paˈfɔs^2I3@h ;,~wԵ{Q 2e;d7Hjw QF={V'^('&w=7+Sr7<x q[>kF 24rI;ӉM"˓⦜a-n㾜ܘٸ/0}a_N:7O\mL6gr^VRɲTP8ٗBD (;Mi|t >/|h 2qiN\i6e9`TߪZfUB 'o^q )Њz;bItviXȰ\ +. KsE}}74 TAm"u{CJ]#]|cMt]ru޾{}߃S|{?HcCU."@K* Y Ғ)Oamg]G |gāaX) !߳+a~Z* .140b U7f ! xp40ə,HS i9PvQ U3 B}fYjC@ ^2Z^j2=Idaﶓ2SN]8dWIljYaϫԲ!/βRA/ICnoXQdXhvزo~-T1._V57~} u~bsQ*2E =rE endstream endobj 177 0 obj <> endobj 178 0 obj [ 179 0 R] endobj 179 0 obj <> endobj 180 0 obj <> endobj 181 0 obj <> endobj 182 0 obj <> stream xYn7} 9)ޗl-iTA UU2"ȿwȽq$Elgr˻zܡϧ/wG4>~]Mv|޾xN_x4}%h4(""-1ѨKf7=#x4hxt@s4Dk!(86 kD9ݭƣg:fж5s9`lFֽ&d~vI'W/#^eDƾB>]0qa)$bloV':hYh|[_92u(w0GKkMa k@B/uև"(;30F?:̢j"8!"&鄄T(s8/4.t9*=5'GUWכ*"pI PMmgg ЄA;~¡$Zlw|UFS4h=qUj)EׁUqT܋2nbJwbB:,GVcBV}w.DxƉIvĶs,9T'j˛+8YlcE?oIy qeL;ۀ.[pz5IGRӰ,9,,%fr$!'J %I cER;|%<,>;NBar |Pv@n+tRӟޤaihg1gSonOsR&ě!DJ8zPpfUT4ڀdn 3 :HV*"}-,2`8x4A)tlCÉyZ> stream xko6{}Rl")(n> C:+ɛofH=hv/م9rnXW_|Ӷz[nۛX\Şt {umQu^KHvq+" ydEpJ$F(D9RgrkD<;Y5+ #i~,(p+x,ȭÛ߮TXiG`/ ?@1oNs1}jwΠXG3܆_YT  Fbn,eoo "hu e 3Nx̸&+/!acqfsx>h,x 2(+9aj'K{R Mh`*(eClưnQ~ 4jIeL-B/%d";O>S lsnf'AأU4PZbV1cmC9{ajhnL4eHTLӿ+-S5;ӓ]2ct^aP 1^-z5gut'vJ0K-̕?h/JTy2<^Uzʹ#Dnݜ;EkZ oy3mu`·5b`hj: jQˏ5Fx.M#<g c]6} _%^&txO5 BD!Iobo 7eS=+:ys0'x/%9`ݷb'8)vkW e)Co`~jJGDV]W4dWഎ"T";CP p.^YO-a:W%ukXCoȨAw̃ ;kCVrx>3vNLXa߫ 9)j.)b=N^߁oߟP0zuJAoA#5!vm$íoI_MXĒgnO[뾓j`8}K:]74-68!J;bVPNΖI(M4ק,ѵwb֡ҡ\m˺~MUc8.,\Y<'<f x[R<'rӯ'u$WԥJtA`Q TPٶùKV( O \ IHæz$>5*j%zNo@.=FQiE#xB"̆轇X)$yʆ0 ^Iv#q!KS8KO YvbC&Ewe@ƞH*7@*MM -M{mU[+-.[ǠVZkNRau>>ci~ݕio1ۢn)tn>U:yB `R.؆w%.Ĥ G">S<ѹlI?Q}ΝѶ'I2^O1@}6x2>npsxw\.;\Cr8Ĕ5H^]H?k|Y> stream x\oFn?JFMs$Ӣ@ں`ȎpJ]sofOivuiXhvvv7yzM䫯.^oz~l_'\I>=N&"K";=I0iV$6}H7'Yr}zr3Jƿ'?| TSY;"Y6- 0*"O P6zvzrwvz|ӛϊ:‚3IH;K@|q$~wzoFTiis$pK z&`ӛ;䀕@J++_+/eOHUF}rveBH|3'۱},4r|Gu~OOdE*$#Ys8h:%)wOO.>{\Uk- 92c4Klg،>Nc3^'f~he/3?(d$:2ѠT>Xtoz3 оlnGo"reL pX+$.^xV)(qU8|7.W%c /$NtId@!22 -ӧ2j3PgJ1w};Bg];֣6d06;o]ɲ+S%ecn=X'AIPGhM1Jcvp<8 !8V{8C!$˯HM_p8&Kr vfk]vI[-]Yڢ Pb'^?Au[Ά3y`8v۬͠SKPA:Q^< 3*}Cbi-Yl* 9P5ef׈翟&K}d,HwE0t݌(Tc%~TK3(GkU..}`d3GAiMA PjD!elGar(fqqG8JA)@)43ƾ"\G`Er=n{Zo j{johas``\DR2V&#*n ,8 N]bdB:$d =|$a\(հSyڑ;=׽ې9FdvȋHURV r! F!xWژPXT]v73bY jUv q"jb8WKcmp.8:gP\(pyQd_]fk`9HPB*;auh㕵,ٌlqb~d$iR9?uEZ10S4E EvO fJ"AH- K_~x ]p5(3I3_} Jh ^jҼqs7[i2HÛ⭮[GxaOmJϵxö^* rTQ$g,>ZCu:O9d DKg|o DajA:1&l^> ew)fbm3&Fl٬2vj K6WYWQQ)edPvex9؎Y^lАE˴CRHl\²KR9@~pI"r$4loF3moy̠hv Ң̏qX5nVSyY.LlUǛ9`2dYAlcD_V 725l1`"g!) jbN wpAfl d%#= zS0^lU!kf> aywXPn4 g3B'Y-ݐs=)Ã@i Q ; ѥHe= ѥB_ h2qETY 9ur?`CA56D@CiP?=~enhܹ -I\<.~V8~;"/َHeZ}vFwwr hsjhwNK- #?>wDsɌiR{ǫikzP/Tvv-e,ƅ??aB!ܮȌ{Gymf&(*k ҍOpE6YbT#2>}qIq Tb E# yuokH"2(ITn@mגy'W8 ?]x,}/7x7p|:s=$+'>'pau{"oGtKeG+_-߿h*,#S,G*Yr£)bH#ue:$o5Ns _Vj4Ժ%E}ml0Ėւϕ=ٰ݇u)PB Bps/3JZYR[!ّYWN^$2H+cc;~[!GF7a?ْŴ+qw܂lz &lr_Gq:. <+v19{8U;q>@Q)YSYH!ћ^ss2ƦhsJUǎ\kBuIŎ;($TA! (d'OeYbF(gOU&SS0",>Mݙ7}᧡>iEvBcՐΏ/4x vdu< ҳ4ғ疆쬬K{J3Jb㏛=3+/y~7HH bf&GpcH8:A>&>S~ ~KJuX[oX|V  AI;.f81BʂBUr/=f4< ]%twR ncW|"Kqoo >:1?]vhba2w3:x &_bqxEBTߒiNW+P,S%gp^SzcX`gҀDajS2HEרT7$ 7 +Y:vhU}ĺ>~Y.ȯoYv2_t[ vL?%w+HlS|5o2c:@ < 8{'v6C `ct^D~]{:`Q endstream endobj 185 0 obj <> stream x\O96д_DsS&DVKDE߯{!MAkv=~r{Ӓӗgvxuwsp{k`,چmoqV_] .tv{d[G3;K`T>]貂质Vhj֨a\J{9Vʒ@,k@?InmZEY7Kqh&humoc$THCfu°0Jq-' i.xB4fl#g}9ٓΞ}߰kxvi~;_ӦeSpLbYhjb10@ X{bUA~)(<(l?z4ĥxY45_a0w0-*b TF+SAȤ VN7wN,f{u;X,OO?n7w'ޞ,їӅ]v;<{[Q )b i`ikt߂uY 9HjܗNA@KagPm1W}2PV=/KN2 _u۟'ưFMP+&7 VX h\o]oƄcLZ9d?Ya(FpV/ﲋGy*ec}3T˙Xc1|(_U$Z>0ZrmWjt.(VK)}d~Q=ܗhV|GB{Cѻ6j gFWyŇQ>\o;Y8IZ'Tq{@)_)/}VeL%0R&]eՠ;^`7*;GṗzѓtGBS/%bK_re5a!THǬM̲Bȏlvٻ {̎gYn(Դ&dRVֶ{cc7W 쇰>Π("!'1g"{YVXp# ^O_-/[@0%溪W&;.MgUS[+ !tYy2#!r2s@0F߬BPu Xe2^ Z]O<ġI<+4`b5 |yw?eY\a&3fg4"#Q( G&ޘ8cnjYa[7d9/x#,_izhvuy6_[aU I.;۪l~y5JS"?MoC ijAj4iխ*lB:k\A$ϫ`DFӬcZAR⚢b3Cb1Xn)|4pUo>ۄڵ"LoyrI[n)*v^Uk,{VXf4w8W H;WOCtrx23$j9]"[73 i4TQ  t2|ԳKf{YF1+Wo. 5H;qBz$Ny.Ihd2^Eo n? 즑[ffC nr%m?b=18g!!O@udQ)ެtE24>ďш<+4u27辏NfڐSz?I'%WIR]և2WkrX0B?7xNhN$ i$iHBW AE^0YD# v`e1y :PB'v@J衬 Ymk{MzɓD\'4'̦қBOCjJmT8@!xCD~88@'xC#Gz Gm|xNhV4蟧Ѡ#n(7tCnXCJga^iS2@3AJޓ;K4-9e)!r7Fp!8kjШZSإ#PlrIF4|Ӻ4dST :{ :?{*}J4|& Uě$"d$hDC)@np^tM)g^v[}7E] ur^]|:M9FfUz*!8N$tE7zzn EnϵIeoc/wj3 !k"f6U^kc endstream endobj 186 0 obj <> stream x\Yo6~7tƲxJBs&^$N`+_0I7 Aat ESjQ+zqQ7-_4vx7SI'&$m>ZU}Y%&,.mQRw$eh1%Tm %YL)k<˒xnZ&',UC-%7%E "ޒ@-MtN7 e 7G$Z13qlJ+xs$3N"S5ib26CwOZ3B(yWj$p j|\|tDý=[Oԭ9tT{jؾ کu4ir.aLȮ $'dg=߳0F ez%50pڪu>t?[iUDk Ar}Sy~tMT.Uڗh]NVwUlwj }N}t'NӰ@P+4"OƨommmTMZ}oV?]yHٰ3Fjti;m]myTjjl]PPrup8m ;=T9F깟Yb$nxSxId"V){;5̼95KR,}i9G Xs:Zf4f{}X(yD{/J6JyݽԺMS,-a=;XXH /8XZֶ9EMZYk bꯄȝBțaGL3/Cx2 yg{pfF?` vlI}:'9=C\:l.(ин^B2sqx#x+Aw1;0jMW'a=`6s)/. Oփx;Rz'l 'rܯhq"=vq -N\#xc8 ȱ 8 %E="or?Hff9r!=3osuU8&@!\$VO $ oK.a]x*4h Q$+f N//O]A_3rIgxqGpG?b^& հtvOfP`CmCtrz$ԖpNzYBj Y #5/n|[w5MH'ur7(6חo Pre k up[;#nO3͓fy&xu7ۯ:T/:1|q½`ŘafJm }a+9PzN( yǜ ˌg "AՍ6E"+[lT-_֘+Móa;רz|. @f.P$yW\M!Y>~ x{$ hu .0d ==e@[p|@>,@ }$0FU갹X;JZN+`t֯ՀW $3wqC5HKtIJ$(~CȹIzItXC-L2a͡fT6E}v6-ߍh t}NSa#Tɇ% endstream endobj 187 0 obj <> stream x[_s6LL NgiIrn=8FlɤJRmowA@tir `{nW|޲~xնXjۦWeޮ7W[΢0Rv<=XD,AD@*vd?$d݌}a *LDj\FY&,Aʢ8 #T0% `%_ܠqﯮ߰hioEA&ȸM$P=,GvzK2;b/3}|u2 8H]mqʳs1kf?pSe0 Beu@BQ $z!Y=n?rZn|h\e1I]]ɦ&ާve5oqƃTJδ, a=V?9G@HD5 D?z?F0@$Y>ӂGL!h}a(,$('!&-Qh",jEA"w9TQoi9"ܬHn,|$AHؔ4,;/c>%ʁ^_OW |}5<[tIfU$+GXq,;FelLaNMh6նr!$>CM`SXf!ƒ6Ö́5ڝ#q kRak>șuV"0bpmӾ>nxځ@/yb]+~R >__+ԊDa`fȔ[ؽ=%~6D)Acjy]4/LS[e 1:1BJ1tbkŎ/#5;2IV-buL/G"ہ.0#YwGKOlT9`4^vsM^.vCxЋ%Ès׌؎ry2^v v|w?yeX ѩ al6{pn3"ǀ.@P5|kx9箍@2m'!m(W1nst)0Wq%;\o$L.7W'|2V xK5b'wx]Uk/+y$ vabVhf6hw7WAS.YD BC `G3%PX O'ʆ߮VȈkP+<^|5aRVwNf+Ѿs^6N]5|VxS̔?>+k<;@sWs#\(A\^-r:Aniݱ.AbEJ2Nes>axv$X\Lc*'$v'cIX=0#]CϽkO}.tzxj\x8h&.ΩAvz:yY"pݔ- 4("5N=,4Jh >}H4>$a,Se* Bgx"wDh&^S9tU85'9"Kv'Ǡh`]va[=nc>imy`Mur7MNV8t34SL+~R8Eڸ4F=볥)= W8/4̣ .E"DirE'ɵ_ۦ ga9__sR t4Dj?2 9ƥmP70wtN?4ϛqY,ڢn.]4hWF(K"GiJyAL__dx8AvoKMyL36p@ vQiW,؜dpA u81f3 1Ŷs*ς~ޫiVn7|t-zV-)7xڷ&68> endobj 189 0 obj <> endobj 190 0 obj <> stream x\ms7o6^/侴Iol&ɹ;AtYv4#K$_i %%)ݦM@@ b5V˗Gǫpe| .G_Gûlg?>MN.YS'{,?22erydo?r/OG M<+Q&Kˬ*EV'ȄLo/Ԅ"̹"$3 >y?=f:v~^OS"c@.y5Oc8%z`AZ0gv?=C~IQV2[KL*cmO1 dcTHg"]%ǻ:*KuY5cN)E9 (} ҵ2pry6;?t&掎q2WgDQղa<0(N\5Yɓa/%V%ϊ-V_3ffF|Aޖ@Cni47h|g "YFxdv s,D %<,!;P-E2Xo'E _}0PYU߂G@ F`7|ˀ XzG<,!YVD@ o;Hk(Z <S_b!p_5PsǞy V¿.>3:BE8!qWBH^#ݼ%Y pA,p_50(΢o2-+Pd>ٛؕ:s.z0ȶ$+([hz-nrÚ#| ۈ秧*"uESp@|υ6W$`XphiCP7 +."IYeCb1˹kIxchheʈ-A- ʒI(*N\d8-Bul/}(O0j-A8ֶ4`+)%DɰܐhsGGEavH鋑FlpQT<U:yLv>~A| e̕՟i;imXi !K ԡA4B4^2(2q a.fg`Ί:N^yz2l4J|r3igwre˄ VxG/)|Azyه˟/>]\t...i$KIeE$+#q$˲x'j@JЎ H|1B@R@"%Ubm (̔-#(kA&!bdKiVlI45%3p%KC̖*J$ 6BT^:+ݎ\rSLnղv:OO*wkxͧjGt{.8 Z^- (r'b!\[,dW5nYރ(7*ȗZG1a/2M-Z5uTW7Óe3@Ш:X,A84.ÜQ`cI5}/=pns{KCImT\,Ҫ_@Q;Ӆ]&Z2Ky{βòG?ʌ%IKCR ڐ~p7BzM"ܕjX @ixOF9Pc 1`4@%(2t00ڃDD1>Mfdzb2ӭ8s8&0 [*CQP3!c2(~' { Use [0MF|֌PAY*=_9KF@KCeC= !/qKLY 9A<nuG+Ft{=$M:_E]D0> = nǗaq|KvmrV$yF0HwqfVAxoEBz4Viܖ l@J9q=y`.FIPi>{ A4XF=[4boKwKC7) $P0꯳7.uY-Ax}oi |IXS>aC{A۝5 Z~0{P$ƕ>x'B<^kKNVGgdZݩ|'B_!}rGHλ?LCSHG8Xͳ N9۸ЏFrYkh=D%*&QLrlֆR|ANdYZxnMe_F\=ӒОɪ籆 gGv^)298,t%|0; .h1D&SUl /z ]7;J^C*4?g!?>8x(.`Y}GؚO?xCm4Ws,HW(q8:oӤ)Je b>4ˇ!ҌrY~~ğ2-_]ȸr1-o/0=: cc3p?_Fp5 lɝ{"8.iЀ*]s(LZN`g SO`լ&5TY~HBq@FˏP3 |~o>&/zd2.ʘ_AK2rV'7q;)E@H^N,NG7f#"kV(Go*ّ:mga/*"F?omj2 endstream endobj 191 0 obj <> stream x\[sH~OUð/e*'S>5;;>xUGϯ?))tzOv7h |îYM׿4}n]o~fwYn[ׯ}Ho_Q Q%i:K<~4/?~uGgG'`& N42'U,R'e$ThW~u?F!,0Do5B"J'on҉L&&$P%=&V?^zH`?\/a-d Ы}u&##MM<&R2=Ւ8ibD ΘW䆧G[z0\]j K{y&;}>{a*W񢞭;*,nQMK]nᇸ^ޟ(&UFq׻߷q: TH` 9`<_^ fή/w&j ~ ŏHcáa$Ç"‡ȇYacsA )FTrq,HSp*` 2\ f%k!25a8]C.%'ՉTtZ3w\\P?`̚<*EO\ſ.J`Ne2 7O@ h 7.j4$Jez.tiqN\i:v$iQNAN ȥi"'H b rīϙ)'.z-!><.80Dªp`CC?<u` sܺڇS*Œ.́/ 5がܟP$)]BiB .ˤttO O:lF # wT 8%C1r"8F,BpVg?Ft`Oazsy_~iE<W|%JnE1@ \=JGiR\i ܩrH뼭{}ݐ y/Cdhlj0M)(JB㔫/tZNllc~d*6sq[ sÑfbPq/xRPDU(;GA|1/cYBoh.m s6!tY<޾OC6UAZ<Ȇ ~h⦞5tDŬr2P{$22Z^jj͐BXQ?Z4J }uCd! q FIUUu2G-U<HՊ*T,P :#2ԭUX4C &`HݢYQyJ=a˄}BSSNaT*ҭy3g Qʩn1'X'\^p? ˂7K|$#PŌ^u5Ի k<-x"Ә ȟM46ZpF#˪,nbۥ1%o vsv-ú,}KLHsb~9] Dx]@5{{SR~;Tgsͭv1ftK}-_#zjå_M-S0&[ZjՔ{.GgWj645<! 3KVGsФ.r޶M 9;9E3N(Gm٣@m*0vhB)a-ҁHD .2Tj>CoE}MDdm ^pK 9*w!UeY"ujcxK&/ښE[Q 8-!UdU̅}C] e+¡Tp7TIk BW fbRlCx{td.#_jijۭ-)MvEoB"U2cD|b*!uhKkuG;. ꑰ;зfHn^L͓SaC?~N+`O(O0`TLn?|cN%f^Q%$1mKZ !Sτ9`fJ|18xmR;H-Y؝;~a6ON]-b9Pa[蚎]FH"։7?t/csmpn|%|\RX9Hw\1}oO&>V5,cֲUM+94%kaih|1$9BN\ IdL: p65e"Xi< 5hAJLw`wGl-x<'$7If'm:{ o7 ؈)9ږ_qY[ pE`%>vF# 8la?&5Gop [eV>sBc֔x}^mfh``ό_R)r+/7# H[׏g_8QA8'M{p *+Ai^{L=S1v򋩍l_]$r_(ulu}+$UvfHQ#[- f4Zna>%"\=ޢI&^ @zb`4?rPhlG=鞷] *5>kَaЭvbxDzސk2j. 󉷅Ǿ~Z-n$J`1`#ȑf*^vM%LxUb{O TQ7 ԘS6Pl+I%~;2f Q[ġ spѯ V(gdvT!'cwrtDc W dyf0k_R92Paӏs/I&iDܲ M)(`_Pt@z 6eؽévc'VāAc?T8e{i,<M.ϒ=?2QQlˌ=Ssy52|f\8n$/;4V(fx2ۆ<ɝi~sDW`].nQW>(X: {> stream xZmo۶ E][Kӡ[׭ .osH/vbYg_byWG՟jWۗ۫ӓW Q]}8=/EĤ@X*tub߽ Aӓyf7꿧'`ƒ(xE;LR9*.XHNO><9=A?\?Ae #HF'houp?\~HoH$d&8C:$pPj98w ,A[&'&df- 'E.UGQ\ |4ϳwڏR%I Ʃ S/?-f<l]׎1;ʤS0ko[z$Vk$(cd 2ya\G dlj3%v]~\ulk߿Zo5govf~4:sX2X`5IرC5xo$d,z|E |Ja^FOA~bQZؚg#|OG7/U>!&a[D)K^rzY|KLۚ7=gQ8g )g#{|6gqU 0.fM}_=?PxAoRu`lw~qDǻ&-S \&]+M9QDCj!BtT3]V O\)!2I\2 iHz-$zwW4WН.0 7DU&BLL=N3"@Hbby z:UG:PԦAҀѵ p1񱲡K`4-ҍ{p7d1OZFn#(ؿ j|DPP͜JcT^JZ*zR$|lzwGK%J,N%e()5Onb{ 0{[R`yK8i'I߄ν#L/@J7f.\(S`DkHY HXܫԑ+ËJ=ՇզBVv ]gYl\K5 vi!#iIc]͢~UQcll`K-hUG %#!|TOV)@t2@LhAB qcn$@8Lj&ʪ0(H]B Oy{^oNbO5j_<MX2ד `)@w2^YY*o NjSf33MdA@AL"TsI K ݱxDW7+G-gg<{XDV宂& }u[\ծ-W9W}ԧ⾚̪Zl6Vuѳ|Se `$Gۍbb?zv> 3B.C> R rh(8{$HG:8iy٦( 5di3V6gy{vL`4|N aO8BpΟEч#As endstream endobj 193 0 obj <> endobj 194 0 obj <> endobj 195 0 obj <> endobj 196 0 obj [ 197 0 R] endobj 197 0 obj <> endobj 198 0 obj <> endobj 199 0 obj <> endobj 200 0 obj <> stream xZYoF~7Pǎac2xיQ#m )E[<ipIdWWUuqrViVy'Ufjݝ,֛_O66}XiZggއ yI-Gz HEB2O@ >$($HPo ]$ D$#/AQmGͅ[Cք&$L M^'ŧK4XzҭdA"N(|.zt|\G2C;Akto։c]2!JT90KK ߡ~_-f@6qȒ8⚹ ?vθ_z|/?y;$ 06iWE#HO:aLMqUz9%?.Ag1.K\~表_܇<QqKA~MV7ugxZtPt#.f$K98GLӌ HmZLr=5;4hXk7W=e}fsVus 8;A62V&5%P"0O lBJ-l."$49gB#M[nuk6i^DI/!gsirA³GeHl%Rho:;Dh1C;2ӎ:EW'QyF7',iޮWEr6|*qWE^{<|Fh Y\,d5],T"B) -DBp#{Hiq~Ғ`^|]ˍʼ$`*8Ѭ*zY@tkx\?:@!Ƞ:]9g5xp0ت0QbDwhу|UxЩ_UMU ƒluY p1SQId͛X!Re̾r$(A;*kȪ˯( B rATEidL>˼+a Ue!0zs](!e8DO QVhe|% >DIn1-, { aL[u[ŝSE@۩!'."r̞l2jU`rxQo)Vey+(*_fz)%XȂi_y(Oj '(ebP |g,칄onk6wOPmߍm#%C=XQ5 <hhhM mm*,؆%,[%,:j"ƕ3k4kMa*&}{;:Esh}S L+ Q왯ӝGHZeF;ɑƔqµ%OP2b1nyLi7?NPu='B4:^6hj{k*u .2LAx4c#>Z{ەV-=0v{1]+^MJUB7aRCOYlO ^~yJm]i; " ^F.)M ~p>":X *Bٮ*z K OBPT|D{k**-ҼM Pj!-x* x^[H»ٰݪ Mk99T'tԭ0NP'|jlB6TltƯ.`)Ut=N96DJ m";俻.En0.k*3Q3WmN&>`";&'4+qesf`WEfw<0e!)u`~xȽ~Iܞo1vr2/ endstream endobj 201 0 obj <> stream x\ko6n̷mj6$M`3vgҙqE%Եg2:sIsxuyExNo6fz3:\~?_fwt3_.):9ࢮAXGP% \BHt`?~PFwϏ;Wι2 ],ߒR8AeQ e.Uah5ݹAoN(-2@L hޜ:C؍!7H 57#zHDIu5˛ ~yFK[: }49/9gW>UɇnQH~8,ѩLT(CMށςž %2nPQLhOfjv-oї~;s|\wHYOϮ-Z$;-3 a{dΛoQʗʡz2*u!)5)D\UIL ;,Ɏiw)G͌s9uM7Ogדfڧ:t~d?GEV) {>ֽkXOF5%*kUoHl¼(u8q"v$tQ#@YՓ!ksô\pcއ*F:؄ UQVi2BS[!UĚXQGlnjiFHHͺFهO *n,}Oo^G勼UXU0Xsʞn{0a[~S>KY0I,9ɺ`w'ˎqNqW o=[)f/SWeo}D3̷7(wL6剧3FHmg i,9}+=чg?^N:N|,81kKz{iӲOS a_%,d?sXt'ys`G6q~B * gj> e?UKHˌx?Xl$nn!tY`N4LB踻Q%0Z -Jjh:P CB M]OӋ$j Uq=Y?2Ԩ6zRX,Ğ}#0F{<-Tqcͤf,UJH 1D>+oۉpMʲˆ[6~VtOZL:e.jV GUQo `?ΦLo=2H\Օ*y,tS/P <<IXDhjoW/DS#u=.7Tq~Pi[ b Q% OHQ2mG㣥؛hh˛x=ѵ| Ȱ؂# k)uryuvWfj*^!2b\_y p}AG*,LX_Xı 8 afCY`Z%q=8k1PAڸ*b9 m'YպdG_WsK,f J~2Ñ%$O gJ#37+Verٶݧ]&т͎ KS&"x@:"`Dp;%P@2MceΑWzѻڮ ;_> 4ķ33bh@R\,*+2}וL_. ̍~7t8p1p.!%W)trK`&khWq-Xoǩ$[4NL9ӣ1fD%HK(.qU.ȜRXIYpwJa3sJ)Od 􊗳o*fi|A:A@]U&!|Znxx[-ofadzTE69--š˶jXdj~Ւ!,#xZI (u]Zԙ8ڿ9ﲌJ*=:ol~4Ա%,D-# ::= [ 0א\iYgU4^T ^M(ŀsM'05֯9'| ybRT^β,þqcU@Go1v0˷"4v܊c!JDΈeTiYW IZv7gs:Vꛮ3Xv meQ`M:$L8jM(KN+޺?4=N~O0("%>z߄ӍT0)DopUN޶d)MEo`X&RΈB4dgX{<4|Pֹi7  1}̺*hj}sݐ>h"h1`bZC8 N,jpwRT17 CVG&E[pedJ/䊪T!jHB3Eo#FZ6m"3zz[`jD֭s3@㥇͡{ 澗yg}IYͰi[ u٪AkifXg ݱaimZ,ł[xK|=$y0*'Jթ ı}ߘb!mvk ݞ]^}kqڶ0mq]L^LGsl?;uMC*lSL7BW0qd8JkS}_DK299\ԓC>9~Q^,0:Tf2]5Z4] )ƲƄpi0hOܒ 6; QIciʋEۼ8L $q YjhAj~۲kXG,kuR}^ya459W2ԏp(f*(`|$dB_(HbM$?. endstream endobj 202 0 obj <> stream xko6{}T">DIwEv[>AXcmofH٢L4mp8AmW.믺-yt{}~}󼩯U5՗_F_{}}s~vG,M"??cQ Ȓr%n_=?Km]@&F'Yo.YQyTȤHdm7g7߿4Jr7 }û(5kp=+ז 0xRJZ%1\2X6j^0OHL6~zfY? ?B`f (y(>|tc7ŕrDYSf)1+`.+>H< [V=b$-cR$ay`fGv4UHA6[4m%6 /YR p26h'j=ʸZFk2Qtݶj"[9GQY·,~W]=OOdi6`鈉}h7kߌ,E}b47 XyEU{ ZmK~j2ɹ.DDkS2~{qrӥz֡:@nwKca0*:<# 'ztgưaCEB|֔|]HAb `/Tើ#K >˝g!r]{I ԆUJz<-dyCCӢ?gIi OVZ'M= ebAp v\5ys\$)P }a4( *|:50(T Q̓fЄ޶ ޝ4J`VD3AQZhB+P4zA/1?̿ML)JHA9^( Sj|ӕ #.C=QW>(طfW?ZQaVDeg0%,"3*]q?_Z5 v+G QQ ix]D÷(/PiM LB&JÞIT a:ǡ4yYce(Ҭ%l"R Rap= dø,uYdh!!˘1ڃ1P5lc܁94> BPBxQG.?3" t2+x,/TL;—icZ-1̳-qHvi^nCe'8+CJi'B`BŇ*#+IHr5"|(>m@; xDjS >I0ܦ2eVglስ+NmHzvxO>m .m](q8JK.s5.K\prC$$ec;r0 z1KjX+z&YK bq::T!JB09aNOPh#y ыtH]w{Byz_j4z Foc#=Lo 0RE1Hk+7Fj:lz#=L0 Vr{,}ȖWtt `{g׎2=il$5UlX@'x7;s)֨~wkXz 0BeCb3CH6.Jeҿ2KJ9(19 Z $xu R ?+r,Tiʏf'PIzwMp0\9tsA*=RY(*XeEߣ(ZS(Ec*i?_TN~2܌TTFq/9iwR+rI",ד9v·-͹ڱ-qyqU ߵiϦ =0ͲpETdPt© E]32lX>>hRZy>a]5xZ0\zKYlPbCnQI&QQӈւ]TOF m v7 udU9u<4F"+$=Z߂rwۈu?4yTљ+9*ZQ;ۺΖH7uv5%z6kO 6[w,y7M=5X{)%P~8sǞny򼞒_}{ = kMp C4o;a屔y)( e\ '1ݳ>R8Cs 0,昘gR5WX?IӺ![ wVeX̙*3e79KXx\of`V+e%h}DLY\:EܷՄ;L_ݢS.s boh*z[1iGo8zrf`{e1U5'gK H *iWJC)HJ2htי=D'Ȩc=)G8d8Y&s85w&> stream x\ms6~iʹMM;t5'KDMn$qѮrXo}Ͷ]6oڶ5zMsvQ.VuXWE^H$qUF7G"J_YQ8ˣ{ =~25?|t5N~.u|x&q ,Bh d2 xVqYDHʢms|t(zw0ׄ%&HE \*JrgGO⢻efg2S. DOr~5K ku?=a&Pe\Duʠ4J )C 61-YK[F4ENxiGxDJhTOi9Mgߞ5K2vg\y[*pl  , `PD٥"!+c*uUY\{V/wI!3\rNT1(m]*qFw =0H2ZM0'އãz^8樿{7l/ȅ]1rGCefkz,qgsIfF51 JPtme5#hkQ8$ŏ$V0R=ldEU&R}҈MdQ"H Mp[0kiWuȇT Ch[6gR̒ J8^~a)D>b8pXPlUiߝ٦$K,EDi.(d3yXC)$Ewpud9)yS!> NqӁ+N^Do@aupJN_OJg6:}{Onphܳ 5].xe,`65}(W*en3HH2 ?E\@%t$u-骞~⒀^33rAA+hbydǶ^|"TrWoSqTp:N{"S38SN,Pe*a N\ek=&=fCR"˱cw',Uŧ%< 2<[2shn|e?9lj6},c6NYݢ."e#9`ʫz CX\@`\  $R."Ni< f?̃|`~k;\l r,rJxOx"TiA>U(&m UXWσL8 J`!p6Aq11͊ؓ] 2–Tѫb.h)*J# NI25J dj} i $l@|*e3PL(՞͟ ,'eqSZ Y3Ê ~L"Zbfy8Hř(Ȅt>ZF91can}*8TI#lϯfÜ-X,.u u0rjDvl,28;nLLbJْQ~= ֯0Kg_kURʇLtatbi4cʹ5Q8_5%aY^gk|(؅ϡC;anSܣD6n!9f 1"zO(B$b.;{8=h4֞J26=%y}m#mq`{$!0mwMv?9g-ԁw(Yo:ج´լ=Sozˇ^<{(MDR% Oч&z˛7_JzuwuKkojoGǠ׸ >:JX/'C=ig4;4ZǮU:T?jFoQϡ6jz:0Ϸ zص2ݦ/n5 ]#lg\vPI\<1rP *W;-i`uf:JzEх(e!< -gP-dr9}bf,ф4T?ָm,\";CXh.{bKB/;SN:9Vyç^ ;6aYAz[m,n{͵׍wd /-تSt7a]dho0|I!l2Mo;|}!K'n,\) ̣]G7[fV?iT+j!U%FP]fk+(94nI Lj<.m7BI@Cq?~,61bqgyVe:>|7Oi' M԰GUI> g𬲏/ޮW͋=Tdt9y<,ЪKˤww)O0I p^:*% 7IIu6mqhXEvUx)^ݐZVW]hy:Ll%c!4&:v)svCGe a:i{ SbKBL<4Uը['"dwױ>udb]*#T;})>߷ۇ9jKj`X&9ʂ*IT@q::A'L\lv<gkߋh:k>p/bbrj⽸Bus!۠ElS?Uxk7ȅ/,;xoX[=ɴ[=UŘG*R,@D^9y'7h&&"@CԗE)˰4~=N%Ð|z~(aEo/Ce.?YLflk3鷟eoW=sئ6?q/{i sYtd*W8-mQ[͐4l_}l9^sE2+ 4̑}A`bĘ&E {ˊЁf|@> stream xYYH~G?qwH&U.>D+UoUO6dB&2>kbgdgF/<,)כ/M:I*ɳs+rGd<( HADB!}`o|dޭG_~  |}(-$S~,APG!}!6fO=+*40`*4'd v$(`m{{ZMrSKBwb(v L(ceJl/Z|KcU0Ee-(d7TQw$O&Aa&XEd.?c*E'[>8~b(_Lr @ %85 TTpT5|z0٥iL3 +)k P 1 6B AAuQ2ЃoO=M uw/kYvelQAYј$tf9 lpf yޝd Ny&OBegrL oWN̢I fD *L2w^ln`%NtnPӍ&]fSa-{v˻yili-%mӗ[1eң>iKDYK;*K֊GF]S;q!vY05tyV*hƊʆc؊ PJ0[`WZXsZ*put۩VH8dPwJ5ձ8[9J‚mTt?hKxP{4 Q(-k@9Ĭ0x:SfuL91y"mՀFk>GfPb+ER5;v٤2,rڠ}~ChV2@TXr5w`SAm84,LhnIEH3zLHs[*CVk!mŬf.:)B*?cD<ʐJOk[] u,uzUO 9sm˞iޱ B?Y(d>k*/u ֕BXuHۤXkSGzǤYCƣ3J'9AvBMEmWd):㡑fy=2TC8o\)nv70\Go/B~6wiƜYjPO Wt KCj$@il[5@BJw);xwB(ʬCP{pb֘3w1E揮8eTyvʠ%}('% EqIo  CoTЀA ޥx35|m4G /p58>$KO'˽9m-jZF ~Xgf|ւRcIF6Ƨx5/d ?)!ݧ sPT?3SlVF3oAH6I;HHiM$$øDkrZX,w.6 CoN`fͲNOx[] \ U` :R/ o9`*+7WB7Vz'aYh]PAnz.էj>ۙ=bhX-{}iOdQP/AZYw+Jl8* uY endstream endobj 205 0 obj <> stream x\ms67x]ǵ8;sNGiY3JT\/I@" /2}h\E/_UhXGÓדۯz4Gt1?=^t=<8$FIG8Br<Ox>؛P4? hktà P N8Jgp9NҤࠨH,YG&G xwQ J0HQ&E}AZt۟"T7EOq $âKXt 0v2*>EY!ià$Tri"[VElՊڹΖk@Ҹ늰FDlQC0$[̉},H?_/ךk;qz,gyyt]m,), u,Ug`dsuddlKƆYYAV!KfY#%MK2>W<^: s&i4乥=4HLmJ3H=ސ{"F$01 HN堪##swHT-$m|U ɣ|.ѾmPnCtB@ 41@:1ʴA@AJ0fxfCK9Y_1@<-Ybæ bc)yi Pn;N%Z&S BB"I8.w@Eo-Y"hxجN}Ј$ e:oCvǀaܢ&閺~ܯ!`-&V&I K>j#(}&δ!XdV-MʣiYë6u#B{L0p'RECr tjqM|V6C9-꼐u<'Fx*-4'E/PrrE泯x\<?mH Qh}'="HCؑCᓆ&s$.M"`n4 *&Wf򦬮rZWKneSfczjX1=ԠR UD Cë:FRsV:[ I6 hx7Lɮ=t"2Ҧ_Ԏv!Y-\/ YnO,Owwns@2,czOL]=|] qoeq\Ҕlz&0s]n?lptXPnc31XyL 9!P g"X4t9`}WBkPUn]8S ЪtXh72Cr|ω j c]5ː@GyFtOQZ1.3F[y_l=NPt3 kOjw2qtBGB'bϡ*ػ[>D}LoP;'z(C=(Xؚ6QS{ӆcZTQsWxtL5X0#A]5 JO> ċH)j6pW l ޷g[-Z$02:{sq6=_V<<8&ѓzEA)~ɫ8/r\52>3,Kc)?x)v4VWxW#\i~keBL9 e֛rq %Ww6HFy|Ǒzgi8O~L6d{.Z$Yܫ]#0ԢE1ܺ4!b{<7nȆ4 endstream endobj 206 0 obj <> stream xnF݀aJ1͹- $qf}hXJQI=gf(̈IM!3~勺YCErNn.͇㦼|[W֫~ /^kFhޝQ?J2'I"%~ _)g7| ӿ8X& >SAI K$Sq.gg)Dc!I]=;?#?a4`4Р|FV|՛+XvkV"-dq.4Pc:Do DɅ{~Њ6BP*1O`2VOMMS-kә\( GH*_L@,/s+@]M.D ]($6pw8 0f˧z ZLD M]&2ޭ%KܭPCX=[bg C+ \((|#%QPe4Yao=RDԠ+%HWMAS\ӧ*~ʧ*E,Z= 1e`J T`^(\`lOUqz $A(K{:J|Y* ffQ6ц.TC/\hk|.#tb4O|!׾HE9Eb4}I*׳IaW|4ZkVZ=Ł~}qQuwA2C)s'pccMٺIdcdr*Dfyq1O<-=f&Q0ZsasN$Lx%hǢh*mR 5ZC{ s+\d,~E~ٙx: Ӫ@O({[[8ƠBȸ-\aúd8M?_{G 1.|W\迄K;_3ӌ9G@gX=[TFF{iѤ 5'Zqo0BSovAA{B3bk0ùVUAԛ\ԡbZnruB @9{`Ft4٨ MrA38ࡳ_HPQnuqQaV hV%fe%kaZkŮ>_5'LSw߳h^455+<3o~|5сy?ӄE=ⷒUm5fQsۛHBgxSz{wlX!l=`Onph5nO@-<\>mAIŧ0P*kynb|e'M%Q1WxX" k|WeޟjQj7vQxY[x_JQ89ኩ[=i $yczOwйSay6*0r; 6ˁD1ir ޼;y!XSgr͟DJ /<8і[,":іmyGv-?e%`/UzZ{oxc[ %pHGv8ݕuA7ׁ.AwIĺ lw-I"M`or3/0Am7(w7w纕+dFV:sOG~ό{RO0w ?dB婿& ! endstream endobj 207 0 obj <> endobj 208 0 obj <> endobj 209 0 obj <> stream x\s6(e4L4mn.mڸsN)W[r(=]@Z@^D,v}=ieh>mMu]_;xߗlo_E//NO%qG%r'yI4?$'h[tӓQ $dQtqQY8d$ݫKG\&\JM ޽z:J9}zL)!cDžԓc8%S' qIfӓgH IKr }֋GHlTFoPW{8/g?ݷ]Y =V*R%B8q.%-1m#q+v 0q#Mћ7{9{U~.7_Y0^NP $<*bI%cʻ^,IQ FCL&R%PSq!DcKQ+3aÄtcjFX,0ؙ$ #eEY?F_CA/QfXo?zj]ѕ Xs̀oǛOn53lOp3ygf YH0%ף` Rczɮcc@X!:؊ҭݴv%8gE?ѝnq5`p}2h1. eDV bGC:#׆ =DAg8?ZEB|>?I+ C^az^mPdiߠãNI9&ًW˻ESWAsho\r ,;\twf.g٧ { wL4R>x Ou{OqNJ\1a*m BNCAVTIX2ܵ1`݀Mw5`s$аG9th4Vdqn&&bCMHeVC$B~+5ʫE؛U/ x_7L_mE"D=j_lϽν؞w $wsΥJ%YPcK)rQøVbtuNyMSiWo2FgAaH8&Na!Tv mrWaa iꇲ 0C"<-N @Sn 9J*eƙ3)+"\nB˿c |*#z@0edдYI!fi*6;s#mt,I;s6w}@1mِDN Eqں!IJn! .'2sMkű #x|$sřְl]ݣm7}]7-a%w+xz:_ HGf"*B);IXJ`y-.H\ngRqwtASdҒm%8gȱ݋4Tp7Y4Tpu'Ζz\ A\CܷA$Igmq4c~hh&B[JAcy6d{Bz =?ɹuT h n8|zFEPEQ٤*${,b%0U~l$S{ 8}nAM-glZZz^^]EK}Zϔ)W?UF@X"'mS6Kfijq]^ !r˾p(Qijr[T~ PQ?FzI`P2.ɴZa+=v5Dm@ ߡz@ȋnM8Zeρ5\oۍ_US߁61I3S.=tc\F/$חVTKR`Q[6&A.I" G NFy  9yk õtQldvrHJeQnHx.qpJ]ꈧkQ8oKLA|=F7#_`+"3<)'G"g=hK]:2&^ȳs5nꖑdux73bCqx+xI\w uHfđg|j6m]}rf.[P)vCrө -p+3?#i)"D,(8sDdcSP`]>7{k#V62L)J"ŏiš.DZ\ T(xDaEKԄB>l=oV F@Ra "&t9pA@/\|ֺYBł=?Wύ/E- 4KB,!.ii_/i؎?6 }[$n'enDH'yN iVSAb)fՁ)cr",Gp$X<@\ ;.`@ap a F &ph{8ބxmA ԛHl*Ūux=]*6U>q RyGt8T[dN't B)1䫶j/uJha8S[G)4#12s+_)+KwU6Zug4鎞0.ݗ" JZB .o Nr- n ޞ~o'}e:/"c_SNCt賩Ѧ/mgSW n,7`dE2NNxٙuJd MT  1jR6gMI endstream endobj 210 0 obj <> stream x\ms6|=1M5ɛs[7qt<,'%G: R$ . 8եg?ϟggs1_nA*J|ve̒Gf0uV#,W>yxSfDx-LŦOhB_g4Vs b8#pNW2S̜gY펋viFWer-7ǯ6f67LA\7GRiZ [.*dEKIAg ^A8HL>3 RH`ke\Ws]'EUigag/Cȣf(lDeĒ0R,;+U?fB*Љ=$ڲ/qY%%j!D埃w5HE;H"+L/щ].ǐRv{b|>ѡ10 Yow( ETVʹk(^A+ ǶRiwר-;Rt¯0|짠e<*^n2lÓSPgk0Xc` 6{w("h!f^oȪLEqf/`Is 4vm*&1 *[y= [bv sO\.k*׋p16 k@k^t.fNDjpkHiI̻B% lJӲkHj^h<6f ةy=]zj$ÏS^aRn -ff=aGz ꏡaCƙk6Y|Z  ![ *npF9OhOYBm{A]b@^cLSPLٝ{_|*ƛ!(iS4> k=Ph95mp YyO,dMe% e ÿFٗ'4e@AIHg:CRZ ϯq걙>.c 75/pNB7jnݘs_iPɍE%BtY0aZ!q=E^YWHW-iCʡ 9Z۰ 7#vGQ#d5F|ej@s' uvcFO-1+vnS=ĽtLmG!7P@qx{^@@CXqFA<觷^K6q"0UW[:|CUapo/@6BRڂX >t*1y&^14^\5J]-1*lwER ) e5ުdxUiQQQ +wHvt`bvFJUu[9m!-t"M'wHq% [;aev[²)i-_K5xQ`c{v]v5a2hN'CF^)\D6mjNm&wŧQ(\=:a!RI"Y#u{>[ݏ((w .(aEİՆ/ej>H^:|| ǭ)E-`,K W 鞋Azޮ/_(S%;EŇjz<"R1o?Ѩ)Jf*qzp68h=21[J!F|Д4ٻoLyAd6ƶWgtg((躠 !@ds.PT[qv55\qvh k-u()pjGh59zp$L-YپWbhɪ7 Ml9Bbv?4O!üZQ2!rPGjVwVenR6d*M6O}H̆ⓊgƃN"szp9oR{?] J'" vMo^Ԙ*`ZeӲ)Ro/ UδNT(?QL:Qh@x aObo#Fwqu7d#v)&֘hoފs AoDDRl.3L^['V~%F!`نYմ؏l^ Lj&U5^A#ePXYkfQ^/V^'N3w,RC:L6Ů|cӡݚn|]P1^8|D×<Ŭw+)k ;]3ňz:d%Tf}9\%ٓWosrU*2B|0mDiI  惽 7XYh$zpu2aSJ2'_iBR #dP%|F˶}^0& o?DK.'q( ͅ8M2܇5VP`/N&y ֡J pټ;9B;cQu9N{FMVEp\;8ۣ5W/N&DJa?N"\dqز=~{ΐ3Vzdcc*qEk^JbA9%~5us>04>;қهG h(~jO93أc4G Bzt,e4fqɤUymv4F +vW=xwYscQdȽ@ȝLvOƤ'y852 w6fgx>m;0{nadRP%1 I{["x[ $ JXEKj`(㿔=T+Խ76˷& \Ӌl#v endstream endobj 211 0 obj <> stream x\moFn)o\- 8niEp@X8Yr%9pfK.W/yffC6d|f3OoϏӳb-"yu}|tOXUer}w|ĒcILT*{D>q&MFy&(Sy_d nQ*UVꤔY0IGw'Gɏo.,`΍4$ >y!ɛ܉n+U̓N TzrJa5ޯf!X; :cQ5Yjqg{+3@~z"lF2}|\Nu$W_=b IɳpyǡkTÀgqpFr v?5V +ldhi˖EkNE\Ny oEmX@lGkBWjHam˳_x1*tM`P\F\Ftc"gr q&/ `%T|7dnSl`vEWSߴt\I.n4YAD *i ~*Ͳy7Og{Iw(*Z`YMf̧zVRs3@ݷdzg3|du=]=S_x\˨7ћeVw aVj[(dכq32j %~}ZMsX^R4l_J'+zך;бU0,3--E0VLJ.gcƕ7ɄnV#=k\,2[L`(Ez}?m\嬙9Oϑӧr֐W.o@y׈|6=k ZÜSp97{N峅5747ޡddvjo~6a0%j4zLAFZ.xu;+=E8έͧ!!^fw\9sUQ}_A_g7vAkm+ -ݻ!gl۽B>33]٠,[L g*kgT¨*A3fmcSzYZtx# ځH8iݤ&C.Wsɶ2wG6~ u_D$vҿӐM{DF7?g^nE"+,8J.Cj}* $=um3d_^4\Hr5(,ljD%+^o/\}0 (*%3wC88x?4쯯Q_1¯aJ8NU4tVۊ#oocz cV&2(*ܤ8cmF;tWdi~oqy_ћ"owIDwwi,>e.REGW# 4 sf<*ЁM>&`?u:k*~ܳDSuHꦘ,w`#`O~RO](;LDd]:ʬhcfc0 Zj3m زj,'=@2yׄۦ6Kc;mm6 !覭<@~m4: IƂY1*I}3ĝ&9HuƃkLg|d*Z+W > !|"$6@)̇+V#ɎMMK3!_3.;D}Ful pseM!ͷ}ht^ݹY~F7rֹC#3M6dX7?ɕѽ0a@:x2"6ɟw5t=lwݻ݊DvksܼufІ"':K~^1CYCǏIb0哽Bj|?8‡!D>(L.PCKS80._k^b4d͋^/Z9Sψ|wlԔ ZݓHxf U/dۦ.r-Ծ'FLPtSH7;0cQ\+ Z'4A0Publ+[ PMf;yl1+bc.ͫ {YHFR3c>  c7&睴NF98R@Rv<;YRymga/Yw:wПYKzI`}ozs}>bG Nx endstream endobj 212 0 obj <> stream x]ksܶ}\gY|Jj;qS6MSgH;w\g׽.@qK$@Cӳӳ輪|XzެW_|Q|ճU6#QT(SVMQkS[\ށ?㣪x_>>z(N~/.u|tRե,|(6 g-[ڲFM!TMY{r|T^qtډXK4g_UgyޕhioQ ndjg@Cqyfu`G 4SFkR3K]Q7d8D7o/orvi:j[քUqpT/>|X<mq⣻3$)?1ΎVc? UMY7^9_ujy,~l;0^-V5"D-&Ia.cSPH6n,5iaJ8)G:mww#*5T( [UB)`,[+#@{뾍 ŀO0rQoD#7z_HW[]4`c4 |{w-MfF&d+(ͰӺ--\]2dXx]{5@<mJ5# aUt3;"$:*۶9Xsk`+X0"I/EIlIR$6aϡ9Ou<_^!)~^÷CHǘa'A * 6ܠd.77pLqJqC8spG$?m"GHW blf!"\bP)bƹ*MWd͚${:͚"eLi9G=)P5uPgdɚFSJH8s`ځi~{E^'1 *E^[YxMF蠓\@k!:@؍cxMqHOg`Gmt.mHv) MMPLoҌ!S{!yۣٟG=4t/?eX_mţ49l(vfCG/F0D7_oapOLnц >2E <C*o$A 7hw6hK1O'm³8ˆO;9`7Q&s@u--RKjo;-=^ramI`=*q/fږb i>Ɉb=bKqR{1ޏ-I ͜gh9x,KMpIvZs5Ix}gr 6<õ$kj.olMBٰ\$tNk'ᚢititN)Pu>i$/X7 _;JK;14#XoHnG>̪%U>I#Ic}N!G~;d2"\*R94 rnS S?x5 YYk}O-'dՖjGCmJb؏sYw{RB 0b RFvs  u]n?e#ō.L?ҶEFYbzybia}Iq71듧&+2-#6./nɸ'XQNH-O"EC_֮U˭BU ŎdsF?=p[G,;ݧK,rXٮժ<Ћmصm >]O[nt'f2 zpemSsy8mM0V=_la.W|2ą?s-%NfkiBK9 )%X`'ZwϜ/*ZXMM틊@Yo-y)D6AMFZ.$w!`0Q=Tf>MJ7xkS GccsmLe A&~T,y% 5J>xlg̜b!(vUS9x↠lj zj!;7A.0GY 郰Tig%'ʹ?;OdPsFMBD6ZLБ9}`:6sKZ"Iq[2pS=O@5t C4;êS@:+ȒAC؁ف^i})v$; ;`LM >e2Eqt5yJPT%B%=Gd]БĨq%b~It0Y k5d:(Ȣ.X&S (\CQ (wV¬B: $K0 Ri䣈 #8ePw% jK9I nI"UhLVt9%tE0 >ILU&, &M0 0N`)L*5bA&70YHYBr9.o\ud C 5L 1h,jٴg: ʠ+ 1s[Ʃ%YN\ 0C#v7/9 )0"(# 88و"h"Q$3Is5Yбb zf hgQK aY a_ٞtaE,eVs.`efXVtd5u[aMmZ!+3W3C6Q>"m*|x:}~DxOdvV'2IMl'&dBJfU'PWS^%_@lh惛 n!&w䠣QsD C`zϨ%I1>w3Pӷ,`4K8Í;2]DKG^06.vلQ vOfG"H`ɍZ&D̬6q\&ϼYse41KYqJtZI񊂚W;-ThevP?in,@ertdQlw)I^{cyWj-XnXgϿ{rízQRE=N:6MnTDNgFgít&:Q(Sfj3$wnIxDI(:1[˝X15&x]͍bfyGhW_w$K$RaDgn2keW%JW2c}HJtat%EhY\]]D'jW"ُ]R4_'{|fCJ|vp!@D endstream endobj 213 0 obj <> stream xZmo6 bQ.meغ0zhTv6$YMJ4-xׇw5fþl|?׻r6_,gjūϫMoOd6l~9= 36M>>: )E;˼ρd/li÷Glu=Xoo71]suGi\>SF/@~&e,Qwa^\Ӟ! ;GV[uP%s8dr~Ap.a' u+ @^X"Q XNd^Z]29JnE z榌,oc:6'WCYh;UnawH"Ң`hi*1HxpdH5s]z/^rG`ǁAQUI:)|959s}<'3|ˀ"['ab>#xQ2O ] 7ɉɉ̾PW9>@v\Ex VQ$PAv:]@v3+/fp6!*pFlb~:{m$:u"ywp˷IBcU`=+=ESDysVeJ] ̪*"T"PIbc^ p]9V [Д  BG bһKpQv+j#|T-(}=*z-,t#K+ 4g*$l"妐T8[:9l9`)}SYA? & l)r۬l7}Od ~jh$Wi< l0LmY^Κyw_R=Ql G|X^b 6`0@"eBйϖѝZ )x\ @w"a vd\=V067EB٣MP$l }2o 1ƛeWc4wH-ƞ(} P@&& : H! c E ; 3X^QYj( fOdct]Ut9C7؈nMp9a$ݹ*FIn16W]]׋ ȖP"p.z pn!F(|h! OZ@#0hWIAxp!`atIS d;5M9@5XЩ;s _[V#)ZV6qu)H^«q J' ͗aE2%H5جZuRi-]gc)>=p\h)F ]-U)<|mLnG '}Qa g㓏<ޣGA=ƎMFAmڇ󚥲e%8-]фj(8wk_~tHy_!o62#x,֠r}Tmؕ tiq 4N.Zӷ$MJ P&J_Hi]R?ruN(hil O48*M ^9Zϖ;Qm~Q URcЅC%5<$p}Ac=EDGjJwDC endstream endobj 214 0 obj <> stream x[mon )h/7 8ӦC(-u_DjI:X8o!gmNv:۷'gU5}&7'׫_O|\NiX-OOɻA8%׷G0ÉՔYR(M!G᏿݌Wr `gTBq:- -5*j Tiݾ:>"߽'7& GϯO.qK߽xNXcyÉkwȵr[%[}\nFx+4פk :js9WշQ7o鮳g rDZD$/d4j<)F늜]~|:́2Dw1K [ ]·W/-zTyઠR:BZ_x"Fmf4W@†ZjIp NR XԉlbyPO\^]:cp 5- G)T|y*&< |#d(j? rjOV(ly1.4vG{gI`9kw۳[kk_*H2W6 aN7jX_/bήi"FQR$H~Zwg:ӘBRb>#` 2lU/7 N@Q$}n!tJʾ[gp`$%q:BXm$P6ЍcXcaGM SW!ܻ, nޭVr#Etp2k {w9 <0; 7jO|†XܖQV( ~ ? UVh@DN{E_ƠY*&a.;]`{*SMh)S.בg/ej)7ˠ-;MY a?)k:H|m(6К}"FC"ncBNݸ6[6fJUA7KīVH= !ᖶm!O䨚o 3Z Lsr|I>/U \+(=$2uST gz'IJOiQbgq?28KZ&_bލIe^NS̽j޼IBƬ1ƘHL[m9BZpb 8Wa4/ĥ&݌i)c,2{ؠ9X T1&X|RRPC$lCœS7é['$Ǖ^Ւ7O|5u^!iTٷ?]Z+:zGai^7j`~G;D݋0qb=%~3*L#dkN T 6_̋r,kgws7hm˜~F)zSjrW j/R)YݵNCLwgr< A~^jk_] hvG /4 t 7QͿ/M- +09>)|i衰F]]n5?*1-Bsf:V~t ^]=VMRgSQʋ="WC>]XFӤ-66 6cb2ţcs |w4|GhXs#":)KM1ZCԪ܈mPRWFTƪ!M#(|[Z*H ܔ `p҅kK3p-Pl7Jz|19$.R{lnCwg7K[. M*@5r8 E>=))oE =s7yP"2}ǟ 2衃[L7 ؂ɗf܄* #j=쿴!_Q{g<(0:o%+cTe8gܖ 3yYagqIw4}_q~|~k%sw~$9+¤]G:8LO+!j9ӪctdM endstream endobj 215 0 obj <> stream xZ[o~G8QīmQ`[EIqNրc\PD$E^|C]6CC}>/f/r=k_o>on.?2BˢReQjR YHEn_$OvBϾFeav!KJP:TQK`T"ZP^I/ȷ?| XBjCX2C* o_5_^r?|tEJCpLԴMrQP QJUK z,l|^[op#7Io}_󆀧6U %؊(Q)* v(Joz,$ c%mos+ʔaczaں,)~PbXQX~m> 1H$4;mGQn; YszNvЈ oc:&'GCKYZՅlH %Dc HU GHFXe!tFaG 9_U]I|f7ro/!`IpĬᓄN /z'™a[GOm|xƼqs֨wS1_lSy5)DmͼEb $9Ǻ29NBrkxͧrf_߯wJ,'\M B|#.|v1,-DT:f$;d <=.QR$Йx6Z?l6> K3"h(YBÔ-'5MK!0O/E5I~JSr &a88.I (|>z '^>F$:ō4-E <-WhD-3Q*>@%B)1R̔?po6Sm}HfEl{6K|ZBP[׳ Z4뻘8(DQwFc3Q!g~CT`[b/9sx<!R1l[t]0毚V:xXj +&>24yрw& 1LGbDb{kgP"`mf.\_`v`plͅIki2; lYYcDf\%:31T8{[*Xgy e06 3ϖ.*,T9X ^'|C#56*ٱbLM5;0x|N؆ >jc&'G-~ c+pBSD+n"UWP-EnD{6oJ+sڂ! tCr-/Ub6硓zNJ{+`p.t3`imUO_m!4ǯo6'(_MuJEk77xϘB'`l/ڟVwS9 y@BN+htg<ufDsa;kݛFd'Zxa۲Ӆw&ApCѱTsKh^fK,B:0עwB. QcBo"".]\L+6+i쑦rC@TEzǽ[7w?03Zf⼨.TX&p%I5,O:+pW1Ս endstream endobj 216 0 obj <> stream xX[o6~7Gi)uE4ifˎDve%hΡXI%i$-G*Z/WyfrRU|Affe2'պWM-ywvJMA8YJ?X6dz;0,!/dpC53p04ӠԒTєpI&e>,_ S4`pʉ <9ǔ>~<#<{i(q-h\JS81%*dy8 OP5ž}vm1\yF)b}1~vcTP wܭq- XiCm X%f4IY_B/N?qDhS0nX&ij@)ʔ?{]scM𨠵R*(zdUu>€wl~C>a Mp@/s}1],IbFNk}de,e. `>U_ 5nlQ]rktª}!馵,@YpNDQ41#lx@lI1r'{6gQ4t+~>T@2΍/ tJ;6274V7ӅnG2X$s>}Ԓ ˑ9BL$fJvg|K%deJ85䉅pWd2jԓ*ERJ'H_fBۅ2ҡkAx=j]|_wv(BjEA늄指(S8a{l NL!L NQ[vY)s:8{,-QYu kH3J}"d06= PL㦖i#}K|ֺMсA6 Tڑe-kDžzo2Ikz<fI!n%Llce]Tx^(JtbۼA#O]i3z3l.r#U^^ڣLc@̥Yuxұ w1aC؈B0?=,2$ 1РzXcN`> stream xZ[o~G;)mi-]!- l vjο?3$e6I%g8˛u;mq^ˇrW⧻ˏҢ% -d)U8?#7 e?=)9l/%QS Zad%pJ(Rbݜ\8Be +CH!/к_n?{M팓\%+kahE@uBHԞuA8y3i'FrΠ3: U4~=v`%s>y֪eَ'bOh7[@S"~tXPo@rGT,X1|ɣi\XfG6e,G嬝Sӷ ]jM:0;cgY4dꝀ UUh"%aDY3aMT?̈́P& PWQ>ͯ>?*<i)#hZh}/3,9jva nszmW6v1eSjsv5VYEشU] vkjI枎$-EyRe~rfH5(HJQ^Ǘ. $gg:iagB!8u sHB:##$t t %Xbj^پjkDXSMz~T,GH+`3|9[hss<-WXl >JciLR h>B|_~N2HriqYn"ʍ۴yA@{d[O~w[6OQj)bDc-Q0rrFfuV**V ቊH'c==eTcb=,08LWvӮP±&9^\S5 e󉖺5律/8bo#g"i{Z kM026p*b ^y.K(lLS%Sѹ'"98a,. pu]!,>^TMO`^g!U=ֈ Eo%IMRW?K}o\O8)4խ]~V\Og@pP®'keY{ue{d=G"62ޢ=]3y5tl>l/g/ТheB+ q24a%ԕlFgۦm֛ ]0(O1 Q祂qk6D?fZ_7hrHMlCd\,`7'I"OyrunR!u8ZI;Iތ$P!rL4CChfTG2>:R` #9Zj!Z4$ڃs;%[(Z>ǎ0Iǚb15D1A'CxFTnI2q}ɖxJk)6$b$wN W ȣ%샒ϫeEPIJl/)~Ri@ǼCa$Ns1OQdǮ 4-j,qSVA N: M'muNmήj^^ÄiClJ;8- gw/9BY ӸIfw:idܙ({Ҏd5IHTT=x-+6۸J]x0yǫE쬳xupW5>^NƫE AZ9 H9'.puue^jh?!VB=PfP@Ǽ2mLtz}=`Œ1[h/ endstream endobj 218 0 obj <> stream x\ms۸~6C5s3\V& c˶lɕKkl¾ag9w.ynW<,no^z\~)ywz~=MH*߽~E\GJdy\dHOkEr}*O2ϯ_}N'~5S2)A $(AL %SfUT<2.^Jf$!4aN5)פ~HV%󗓳$ zP馚(rA3u= Ԏ@9Q|NEޫ_Cr%aMo4j8'9thcȕ7hDԟǗ{[`XGEV$/W냣2˳?NESC䕠Gu*++#<&+ݏfz|}S~+A2+~TK{|$xM HEE2Ru>j^ .X^Hk>CGx<X;0?jRx.҇ZKn , eS.)_LuNOnTPД=zu΁HgHx"h#"0֋¶K}{65p,.BkvO(WCxunO[<@eB{իt5UN+ :w)U#IL҄*cVʻyGXMegP.TD)LM PRnW_>^ޟ]NǴ2׎^V.|45n%WXU~:cB.luQmm)BUMj.ВX䀀%$N@)Gb|`HTGr1HlMur4㞥-4j0!A>!ƈ(1{ CyGAF*0QP6P?eF8a3Fa"V4f8S`xyNP3=i~ވiR٨:iZ8oHvk $1x(lqwv1]]Ǡ*y O<aǝg*nO=2g ;լ?L1ZfHȰfj?!0k!$ I2QMBY1D;3!y6.>r3(0oJb((<[y b{A=S Vi;d6C1Z1hf3Txf%CiSe1 t; #cql]e_uS`gÎ>0qyƊ(U$ÊxH4R$f(y `-4>B@ h + ; 2oVW ٞ-ڧ(2 glپdXqdVXvxv`RmD ^KO`TxCyG'*hkx}՛)3 G;<2}ɰ)+]l1Z gHȰfG!Pk a4Cqi9Bp}ŇO_f.>\`)Aka3n_E2hXNh3# & qh%A娝'i_[3bTR[(R.zh3L^@$x-4S'bxk h喽 )4o u0H+A2Xg:pAaAU1  :Ɯx(T\ Qq lB1Q"k 4]O{@> (jiLduhJJ 8mд*P*](ySd^bQEls» N T]r° ֏7JQEH/FqsPOۓjRPkWIxxٝ;Nq޴EyPJM`?jcW;0Qŋ :^ >|}ou1I#BIn3rC`#X7fmptph 4&:4ZSu!ؚᑛݮ!O5 ';NJ0e8`ըp$讶h/Cрf[wJt)C(&X"b2X`!Ryf~p쳩0ɲ œs=lB}O_F%LY:s-Lib^Wnc?pmIGЈWJ?ⱪq$ yU&1#{,^4JWr`dT=oV5Ԅ_H) R" ,*4}u[%VTw4^TDFvYY4k#pB )DfszYoj5.v:78v^"p/ <Гfm 5n}ALpz <[]vi ׸$ubD@b9 bNiowKm6:%7U+ ^L NXÈd{WWwaRavW63er^uf(UvB[,d^\#a(Yҙvm1^ojl5CFX)>mWde/iuG.b,ς]$Uy #m΄T?e'V9iNȱ;sROahJ[^ZZV.h^dzfҞYc\à q }Uq[=)k[TSE2K5iJU/m,S{2Wn4)iᇨr} AVorjXb p5hQMB/!;V eT[5tO26'`>:LT;ҞTc MgDw{.\hj(j}wܲ n{El/O_ N5sѰ|0?*Uj9]>=?.ZnSl_nnn`=[V1u0o>i5ԁ"==?_7R)Izy|39Xl1z|h^+pcn( a C-N7]CMGJl*.u$?,V7xi BMZkh;=P<+HɟTH u6zg /IO"n/Bj_p%8,3gwƈmz0^$'ecn=5v(ͽ %o^_\qX!ʅLxc_C,ט%Jt=6_mсrI֢%֩QQ7J5ŻRaӵ ܿAjC}7@jdݸSZ,n{(!M迪oT?.wpS5@FT7bƛT߄WsIGvXv-)<ի-RckǸZj[Է@T:A0sWi+sjs17 H|A*+oCt7ܶfh"b`/y jd⚥21dЙe\A #LlkO`hD>ĨU/6ZH(_˸=zCHOK endstream endobj 219 0 obj <>/F 4/Dest[ 107 0 R/XYZ 82 484 0] /StructParent 97>> endobj 220 0 obj <> stream xZ[o~7/iQ uM.΃[LD%ҥ4>R"Wڥh*ٹ~Ck>_oߵmx,uSq~?UޖuwӓQ,aDPzd?$ӓ=O'7ɮsz0B C("3 0MX”q*͚Ɔ0%H" ϯPY{5ꦥ 9kfG@׋@v$TlB 1Jq|3֡ !"o@/f:W`sYf6WS='AӲwW_}@鲓NjC+<ۑnQ&aJ/8Py&A*(V$(v P538VæM8i]A 2;0d~`9)yڛ+A׏z6Afsy7 \_QdPW3}`0VTPa贴OGS5}N?DYC5nZ\4Gd)+(EH%ecrOrR|d`[Džc0?b-S>/{&#ehx u+"Dc-| l whӐt F$@%dIm-y[#Ѹ]*T,(oN7JԲ  NJ2mx/tm(+[ܵ©YRƮ)G8@:S/~=@16M(& 4ca /*Q}{oX[ߪ_oR~?o,Y\P ~3+V4lVm\mESTCلу8{єჂbZ#aUxGER[uUsnm2x{͢W'U׭CkQӉViMz]Mr[^ $g;NT=K8Q'1R9 *{Jĥ<2 adN!] SXvy rbx@|)W9NNApgG#𰉠^0&ͣ="v(WڸPμ68c$"#s %IIO,F2YK sf\B9_f46cyGw%7oЃO/e~,ؽA ~Ӏ.{TV{$\fd`X"mް~`nsؿh(Oʈ~v`I1^V"6|8.i"L*IeD 3ցG3 f,FӮ1m󖙼+=LR]ҳh^Kx|:ɛpdSXN? z^4Q3u)Dg#xHK]8Gi=IP%ոj/y!K%cIlsS8!1]C"La1q.P|3WSx8?i?튝 @$aW* xWչ endstream endobj 221 0 obj <> stream x[o7n?z|#WH^ ,m,ɕMf\-)]%yOWnv5vO^udz^O'˻?Nړl1f?߼f?S0^Mί8+_j5u@ ^_~>} {ޝxnZyrJ zO~;s@d-eZ71\NJ ڀ8&NO7McKԔE_;v(z9)E2\7F M[4C&&#Rj &<^at-TѲ]%<>oKzbl6kfO᦯je„ Gi+l`iOe%2 cAhFbRVfY$PE6UƭOG-dhµ|2_?PX (٧*;għh<ݓ\M,ȍ5B\Jxh/4q¡DߦTH+H4 CD6StBFu5BYKA62Dp a݂[$Hz! ~Ug\_s/A,e`:2'rcI'U(-DhĻ( F}ݠ[^f yltn QXkXZq Z oFZ*jn2T)*d졠 i2*و9 #"k$=ՀqڕATS0v9Qk v`MEy *w ɩ+ VFgM0Y0A<|Ctf^/}}Ю lo@|mss:uZgSz˳ Bfz5ѻYA=CQNdΡ9^X6Nfb=RTE%p`Aav N|XNi .0ev5p)6ȼtr hUآ9\1J B,=%MV-Ib5"LfBthQa"$J'F@5 xcM-!fL|dq9{^$a{y?Ekݴc2'(~ѱ#?EBv5`~Isq"G 3H;lҥVJlc0Fw_R UpBmURΓ%h*Lw4_e endstream endobj 222 0 obj <> stream xX[o6~7GEuN m=:g,RYޖCJdSr["? yr"''gy>_ܐu!9Η<_шO;06c_F !T^ߣdi_~oWrkw4*3dDq 0D&BH{/=rvL +HVd 'SjBhawJ44S 2WM]cUP6t'䝻0.\1 +H'I( 5YTC5ݰ+3 lM7 @HP><8vۂc%茻5V6ݏ|?:]n ԓsS_Ng/%e6o7AE ~T\{p?̕z++j5o+ԝ+uo<UqWPZ3j9>#\Q/)H dLRMKR4~˽V{~jBnfn k)XoCQ1u_t 0B1N'15&^N0jU>)q"vs}Ihs_1e250g8 xG8wv  Gz4NF=%l >v*dHԠ̘q䖔I!ԅ]J幓S0.,ZjB خpʲ1+.eJ=jv%\7#(>wt(L$ۼ4ڵpVu;ݾ R_= 4l~gp\(ȎXZ4l̠M&G  u@rxE* sDo267BqN!{ܮz Y=mKl-@ K@y{|G 7 gydMl/ {|OGK䷻tgDm:u NW$4>"p\oM@#dCnj1ϓV5#^M5eG/g 7YيW[p<8̏ apQkrn}S3BYBNII:泱hF=D<Ĭxx|I Ӕ ƽ7$]$lrgEJFˣ>uK(q"pdyodh endstream endobj 223 0 obj <> stream x[mo.@;#Z}w 8 $PR!鼲 /-ɥKX8g ob'_~yf_,?5?z_m_}E-[N-\ޜ0BT)*&w@?􄒏毌ߝ\Wrӓwjla⺨𬋪$,*D!6'7NOȻߒZBm +CH!_/p߿} vsG3q6rŋZ}2->.W3%xz@BW c-#%)eASS]%h"S_.n>dJ(~vֺ(Wk{f~Vζ{S (CzXѵ=Zpyln=,]nW͎7ds, ""\P||V~n{<6Ƕ;,,;;XFq'N]zBJ x݄&WOEoLg`WrV(/ඍٛպ` ஸxqX.J43aZ#mj \JzbP^֘r6o{~__7e,枝Z,0oq򇇻km!De\9fi)9*̣t!VEj  V0H8* ¸g.s.<40W+oД2LxIJ6?3h f T #<9j,햽q%8^uTVW3k9@P*4JOciBFaqU׈ @cSn٘qP|hnn}ؗ)U=q&xB )K$K`!˱pvk 8-p Lh,p<pAN1bL (tTL@g&jbF>Jd`ðޅt/!3 <ѓá.Ccaф`.yP/1,rJ[W\l*e`-kJoͩ{`PU<Øzwx`#Md?28_K_ H yڢ|.-:‡c JHfq+HL'mO0qVI2 ex# $`zy ux yy%H{ .zIu#8Eg@Oy2'pQwxmKy<7 & K幉^Zn3K n&&:xnr7!7Uß̓-1r^AXGp i2GO$4ѡ@<0Ӊ;{nTu()6aV4l1]5NP5 kj4?%rfzdَoyT2J4PT Z4Uvn=d楉ąy}qp7ї) M>xu!><vAQۚl]aOě{J:Z)PKVG_F(].Dmv:x<:&&)i(UQf`Zcؼ92g2}TO}M_nB%2ƣII{ {!G`,|r4Fe 80:>SO\֕ⲽs岎&m mEͶVlrzԮ v[o Lb#Tv0hu%p\RpUַ!^ ƎkjYHyU+QgƣPOYU{ LV LRnAfo\e]t0n~/җuUj)MU %WJ ,9b`Rz|\A)f4աNP|~<סH%31/:C]GMr?y9PsBQx5ۑ0[igP6(ǀhk-b GhGlb;ͱ}Te@?{̓'+*  z7Fsyp;-bE5 D.GZ]RPᓦ?t$~\faewT&NHΔ@3{¾)WHWu1zQ.3;7]sS.5*FWvm'pڧ**F!ߡqlH㖁 Wbr5/M퓧Bb *Ɏ;eHe=C®)mɚ۷&=qUM/,&(cQ.طvNSeFҤYmi]kg3֮= endstream endobj 224 0 obj <> stream x[mo7na?ywr{A'vh܇8(H$3]-pi[ipf8˳z[~}vί-nOgWή80[ηw7ۋw۫㣳n\uW 5sU֦d? Hn7Gr!>>4N~=> Wx-LhVNծVZ/:>.{WyB&<~U-w\T;Nwĉ9kQ7ʟ8 Tgquiup?RN{cxG~8~蝘c uT` ]ivt' r6MH[VǓS5{xXz[i);^ #:Sb+@reMum!UT|CBq2Ⱥ"Ž .'z̺6m-L̇rţX"+xD:<^CRkֵ :2=oLl9~ke~DzSčн7܉b I;ot"+(7j_21v%QCH?7 }d,D\PmU5'7o$652"}4F푔0F%;f2GX}/\j-!=@4w? n>95|{HͼYA!kFrh. ZC}Q$ h}crsPC`8VQYin,-Fd1'#ɦ:GTUcz]H pB܋8ph, IIXBZxsyD=I>7HW9nvM@11SYfM3F7So ^Z±?}nsCz KqL"#J"ojۋ| @."6/v%t[5ȷ*.&o):;v[3=u*&X"SUo ;v딒M,o3Q<%xWc+e js 3aGp5h7b1KxhK8[h*JLgQ5$@[8UjU6iL* c7BV^n+.e Ьx5Y%kc|zz06xOҋM7sb*&\4$ >.)m""`2YD>T硲':u组7;xSI %O' @DC9CZAj;'kN4Uo@Is@@>ih 4k99tq6+u)8kQi1 %*\ƹRfجg)%hK+O#Ƽ24H,!lwl*Ek;%nS r r r\4ȑEw[\D<@.QE \@B@.T Erӓ94!YX?N18_li\ěׇf;`mE^B`#kOMɴPkfm^%Ehf_Y-ptؼJiNԮ 3E/ {[[ {8:Rr[P09ۺ,Rpzu_#f-:TxU@egIv+\nؙAF@Ln4j Jz 4I*4Ǚ3ꞛ~I׋v-l)lq@b/oyh&_u }&$I4CV\ (JYTF6BWInIɽ8Lvi 74M6PEHS5Y vN# :e25uR2^k'Ξ*5 jLPtM*2ufpx5;,KrY 9ֈR(4 ٣Z}ŏU59vhZMhJ"@1KnwZlјJ*n#ci>"/AE RD?""i Ro)1MHAaj @q | e0f@OJs}>ı $J SIkq$JQ%վBf i-+O"޼>417<3ݍw$՘ZŬRyy^sMJ{f9aJOj:ҤWͩ/hܾo4<[QãXQhXLQ`?oWaEBr5dtb|4~Ć?a y endstream endobj 225 0 obj <> stream xX[o6~7GiIuAZ@3G<4vj+(w%EM*N]/dS.o拒MNr&t}u2リ\oy\97pFsG7' p4eX6dzdop->M53𴊓 iah(#\Rɦn^ ^yB&<"+ \qޝVDK۴T4W8&q4 Tg.f6>?! 'U\R輏o }ވQG3x&r}]xCtUen6;/m /Wd0~=lSw,Ns)ntD2O BaL,WBp2^MJsT :#ʰ1.4!ֆ (Zh@Ă/"j1CoU}X{,S$si% oxS53$p?Kg;埮C뛏b*Hg(p&UrxvznrգQc#ڲ@KmlgTZ'fD1ƖƋ ibHZI6@t A*Hf7๞f4nbWL ,rCa.,{q|qh,HgX-/Y"P9YնEt) )N酓Q8%v`dD&{fӪW]0sN!IcKmcx7&^ѱBU: j^X1*l;]KUv??`{|$c$gH{Kt(bE_7H*ttIwM4t`OMBGhB|/ 5QnX3(=5Q3 ӣ@ݡT4@DSFx6R*OE uڒ P ,-\#r[W Y_E"%~ƁE9_/W6!LBa4I}=9x~b"'¼ol_*`W&6*鐿 @t`  G;GH_L»e$e$#dtyaPl0:['M4n` \R S؂Y̗mjjm?L)G 35 /dJiVuJt^OP'L#-"pd"t8-ZY-`N\Wd:&/$0/@: VIe2 `CT*dMx;^f?%b;_a|q6P|ghAQ ^MT*B~}瞖Sov/xs\^1o߶aNDV5JFY BVQGӋTW]IG0' _ToDQّ|tJQpyUt׮J!Wo(߭aiqY|Ǒ9Iܳ1?2 endstream endobj 226 0 obj <> stream x[mo7n;w[ÀEzJ-kp~3䮖%)qSHp87 WgvKNN϶9^=~88?}Z,gjyzJ^9'/9ajjr UEkb&|P _~:<@VfWjx55UPSՆԲ Td=?<\;'@퀵RnB,||{w sG3qޔU#nᖀu`׷7e|x@~BW >떑[NFTG >V7/FfJ Ri]ŒlMqu45]dLN -ၻ\;nx̙F_hm1\;ٵ8 ymj^7*`fr$  OԑQJID)Z»v.o2[Sd> V6$2fg|# +~8) $q=ng dprE? x5Ҁstiq7z I,#A U|{X<|.曤iHH+`Ќ+OaķLS%SP9gTBg9gm_OZ5 < >4! Pkҧ_i_bi:_¯m8142 4i_ci=fC#d^:p?{io\8ڑ@HNvoR9";]$Ģ)йjj\9=LmlSnms Y#l_ d Xg4F \v<."  X}rćF#gC&fDXQN14#U7x&hJdL6'}3} G`R"Gu"ӍcQl̐YSoz@vR˫K,Hd۳"l%MmGŠ=b6b B(L{{;Qh^\ g,*n0})Zc^+X(?h:A\U''Gݺp0@799n˦=u=&gGc&Í]|_aI[^Xs k~=gFf k#J p{GFLj9⤭>(mApBhjUGJ񞀒>v~iˆXۀQc5b8KEG3#x3Ñ`m:/Ƿ$%{m1/XP f׈ptH^oGْPRhH_}/Φm`{AauuKn%NeuCQ߼tR2^!"11:4y٥:P}v9բL?~;_&Jta TAޔvwbX-.|`9{%*S/aA9L93;fWoN23g4bNʼnrn(Gs}:d:&TINv:W3ku=/y6)-؋J10cӂڠu02!yF ttfWokbGW+"{z`6IQv%Y>A[C-GٵX`:y Gv%mmP"M9o0` #0~s߭B)7.t0R EbtOv.vƅV'պbuaձZ/u_LʅnkO8Zgݸw5 |mǛmىةBn;m_2!M+1p"g푀Lc {-ox;{z#=;Z#z{;#>xOcg//mstER?JK"`*V~{"<]³Ñ~ Z_L},[ؤQ]> stream x[mo9 Agi.zmnCvqpS!k4# EQ$Evq5ܲ/ONWvqrb9.VWoÃw+v~uxY qV颬UІٯdǯ6 م. 5iaZ,TQ1. z~xputx>a!a)r>bK >[V{ĝv{Rȵ(j6qKq~y1ѕOJ~s:e8n8~{etKMeT {1x}m3r36p^,nz&鱝'/9PDXѷhL 83[0 nR'g'ӫUE:<;Vp =^~S_\hv 6#R^N $K/AvQ?, R rrzY1Rd)$Xc%7Fn'>55?ݚ :TZV;WH3hΏK8vC(%~`۝Z ku`FVn$TĞ-,i#{KOhCZC?u}r~ u5/-:jۻ;?^TË.ojpz>=y;I7FW6~2"Pc)#~V4x2D_-7$X-!c@YOS:5KPНj>MǎpHMΟD4ݍQ!c D% 7+vU+gàCl(֧iͮ|8U+QP}HDe~Vg?' @+ ơTW+Nx> E(gM{9%yz>Ҙa` str38( ǔZHT-s]!7Ҙ{]C%bG!iKE.JS+>G\lNvi1=A h0h:ԣUEb}Ts8i ;J!rGOG0ڃz4vbwYh~NgnR!̄T/ޮh]<:|:m>o*_P"jV9ye(["S L>`:쨄фU/2#r=Z+Z.s cۻ5v-7jv9[@bHzzf73x@6WI\\I~cOu86C|A-FfͶ gBxp O_}F9-v'awۊC=5`loAP vaWE+cϘ2ye&u=e>^g> eu {=Z> stream xkoFH1om`q".mnq%U&]3ĕRm,{:=_]>oهm9~?~{*Nee].$.TG7ή:>҂'M fS#Γzog:jίg'*RK-,(gBu_^Nd&.Rm.}c*Qc$-G/y]5$ ;dIzf esoI6cIa=aE{Ee^ϒhQA2ض䡺>`]OOYţVi H?Iv,5 /eJy؛由A0aA\v~r$asSz;yG3.e[͵SiN=%q6Zz7GPmF0,ve%x3X@6ʹv Е-KfeUPhXpyUAeg'69|ZcZ[-y{#IF{ι0O\rՙ[] <9;ppv8Wmŕ$TeT}l[1}aձ6|]Bzp>,PmohL et }.K]1mMF#`灮;"P nΞ˪-Vů5pypP4tyR0yƋdD{oW[Ҟ"N܋^<}]a8Bm2z[qbQ Zoדή"\x7;xcUr ɼ"Ҹ0 t\ <@ 8AyΑu/t !$b-}h %j>pLW B# !"Djl< mPzbsߺ(!ۻNr"2T0] gW[L ir9FSf/yU5*-b:-^ΡE(Yi RtUBDgq(wdŲlOfᯪܰ6 ;bKMJcsױ KWAZ\3' rGٶSGN3;I_37LAt"}԰=s,{ $薜HfUॊU0*NV=LN?;l˥bq=ShY䆋ɕ^7Cu9>tn$Y @( %DiFh-vB @!`׮1ui;XEUj퇥K99W'ݻIn`UgsLh !fo01E91nÈEwAĄRƐa9 `|OaQ}< Vʨi7)ݳ.6Ղj1eTz xܷ'P琣R 3y(>w{uz\.Z=O1tk3<//(ew'; :5jc3眯2YfwPZ7yeYgkk-P6ŗlY5TuK{ ۳a$kC{Z;Cl_Vnkk9yGH|'kfh7ti1}n(،nѬO'AGTB: }{߳X+r3rʠ}% :z&pjWrI ,3DyݑEє&)94x$duBHL!kJ=PF\(HiF8蹡ecwhdũIn( >\ѣn?TWT+E!j_аRy`{>ݴ[^tNJ: 㮚~/8 XiW Ȧ\ni[HxVC cG~z{E(%v;V?E([s\JðnIe-X{9> endobj 230 0 obj <> endobj 231 0 obj <> endobj 232 0 obj <> endobj 233 0 obj <> endobj 234 0 obj <> endobj 235 0 obj <> endobj 236 0 obj <> endobj 237 0 obj <> endobj 238 0 obj <> endobj 239 0 obj <> endobj 240 0 obj <> endobj 241 0 obj <> endobj 242 0 obj <> endobj 243 0 obj <> endobj 244 0 obj <> endobj 245 0 obj <> endobj 246 0 obj <> endobj 247 0 obj <> endobj 248 0 obj <> endobj 249 0 obj <> endobj 250 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <> endobj 253 0 obj <> endobj 254 0 obj <> endobj 255 0 obj <> endobj 256 0 obj <> endobj 257 0 obj <> endobj 258 0 obj <> endobj 259 0 obj <> endobj 260 0 obj <> endobj 261 0 obj <> endobj 262 0 obj <> endobj 263 0 obj <> endobj 264 0 obj <> endobj 265 0 obj <> endobj 266 0 obj <> endobj 267 0 obj <> endobj 268 0 obj <> endobj 275 0 obj <> stream x]]$q}ЏC" | HȊe8k$9$KNݹ],xNUf'丹-d$lۼ<9񘶠)EXVݖBc5aG GZ6E6 [Ni˸6:Jx,[5ѻJc<%NB{<=c1pq5bnjq.Nǧ#.c120rZ1r9ad<  Wo_# r;_/@( #)Ɓ##kBQ #yt*;l4Y9 @K&s>lVrv~%7$e^,HY /Țx1F& SșFk)( Ap1 *N,(6ORK7\>IeUNCɉ$<+ &R<% V$ \Ǜfll5WipӔM+jUqwv<6/{zd&@9!pXR&Sޣ P&鄵euFY2 FVsA\=E/\ +(Pʎ"[)T<|gVSȭT=#.)E d#J0rh*\TXŜf@A!`@V+&S#RLa #qU+M`AZ<(wVF9"##WTD88(÷#]ݑ/@*py("BDʑfJ]3$̨ nj GQmT.&)d+)qd8Byv5$;a"񤄀s $%iC9r EI9Fhhrd RqdR̈,FYB 63(3'(lD!qde:(qd UJ#GV(J#gڨB6*@Py~ oB# ~;zxT)FdtV)00L҆rBZh62G.Q%( )Q8r`){H{sZ{T|D~OLlA&A VLm0J1z3^G<6*ùZYЀ4)EJ9qA(B)8 QzON98^S^>MaO#{D6*yR s o(`S&dȀT(!aSV`E*#4v{ C^b H_eϓC keϲcU 4Uըy ezF+mV;6*悒g۫C"6[$2 ▹063/f<\An EA%P f X=qmH,װ!XyZ y,ٻD֒S3% e! Qհ>c6}w/ݗo?~7}_Ռ`U%(eR5(E˚{AeM)XEdADxO, "=I,u JjqZ喸-.g˳{blxXW,+K`)W˫jq*-Kβ,6,Z&zgIlYL>6zo†7[֍ET3 (t7D_7[?ۿh94b=,Og}0DxǝO?|?}?_ữaUgh8AY D@g)(Rw%L[;w%F]P[õZ;3u,yY},T\;+YVV>,Ai}j-O- KڮV>L>\+iZ&lO- K,X2v%ˢֺ]ɲkddZ+Y0֫ӄ= }z=YY֚J&[ִJoהYJ_}|zf:Ie_xٿvߞdCGtPM?f 'iYpF[ns\OJe{)kj3\ݕk4jAiPoPQSW\jjbt4j;h aSl l4l_rNMMrNƍ!pJNN+) 9e9zybq"6y,ҐS'34&xunL9u9K6IK#9@'#\;g9K3IWJ4r;h#+F^ mM'=/3ZC(c+id˔s2?2;t"7y䶦>̷R@nc˘3?N=dyԛe) NU=dur=d] mM ElޯQN _W$ouJ7{O?{7z*@Y+z݋^g{ tS@ly'zNo>+^Yt׆pPM{cCRtt@9'Zw\t5N'8 }4;oFnZ|ӂoo>A=( qӚnp3nwy77a7ziܔ777x7]|pgqS|3 Z޸޸{O~;7q9]zg999:Rh),c~Тn=xu޺ބ !ޤh\5LMMM}f0׵i4ڤ;7oݓyٴA~7 QoRM_vխSMQ_bS A'w&ol͙;jehQJ%ymI-[L͕&5Ẅ>Mk٤żkyn$U] MxȯeoS.4EC]Z=GتXC;>Z.4mK$M[\LZy$YSh[=mk`#"gDoڽeMmzYӽM/KCeڮM#ם1udUѢ,JbQRR(R(=K5-yKxqWKxM/.lZj0yI&W51m{iZ#yDWiz^#@AYͼޱղ j1)3[6T7n3&EJJń:~)п4xتiմҶkkdQ*SG>Qzq> stream x]ˮ8n?F@5)T,Ƞ2{Z/[{T^%rzXK})yi,!uKq9,纤gZRϸ3$\7/u+ {T)KXК%@FF;D)/SA95. +m؈ ɝVAh^e6ANCۺfٌV@:0fLm {m\i h`ft{kK0aK+ǒ 1’" f@_J4%e ~Fgf H4pT1!@Z߆,u l+y#7*V Z``R@R<~ uQ:Ӈ2 " DgR_L?DTg>˕ vheu2$ S7cQa]5DvM` Ȕ˖MmNHmMEj"@R]emlEOɞ՟ cR>r 4ϖ! >е|GlU)բIm-Yإ!3mnIk!Qw Ia Cltf23ffS%&!ME;*VFVSjMel4xŌ>Չs?2c28b9mVVNj "Ǎ9(6hCnHWjNژ$k`wsrZ:[ 2 d'K OB[)r a)V*V C@m@RTYTP< `z!L|(4`5Vk!; Z؁CZ++dFv(TU-A]ImF,Awq]um=WAzPGqQu)} kSIKPeYJLNDp %ښ:Xd%@6!A *A5qL$X1SsXhTWjkAmxpNRdJŨclO3(. AZR2a g[J$RQ1($UKm]Ů|]C'uQ_}81rQ4G}]_C}oxoS\y0U6/<9tn<.<20έ-iiZvHfщ 3k_'8{E4tAڡ6*mGSpd\xHXt::3'8CR<cQ<Ɛ}rLln*.Wۙ ,lb,Èp),0e3Uxϒ6t_L1oGr[sS~tIT︗&=qϳGiR+R]Y#jO.^!ȑ}OO[E%깢8+Bl"ދ%(KV:FOO PD0]P|# Ŕ=LT1T#+7`jbgF&aorSylxR!\uC100ΝX )s|q㪰O_%^WP=n%dUu$PĨ.O.4b: 6'+oȃ+D#Hߘ X0#C֜ɻ8m|D.89l~a/(& w=}Xżs1ٷ?|b/?YV+)i9ncaL!suZwzO>ɺw}uS럖uܭyzSnʢ?r&Ǫ`Δ~wq3=iij9h|09ϔƯM7c)v+ʟ++ ^^yGË=,N?noq<^M^e1q:q1xrQM -92G].KkěskL+N=-TmT]r{'6}śR29uNn>D]ܖCc㭮~.G}h#כ9~Mo]B>PHxtT#g0$0^t_zԹ(ՍbϯW;:bxWkMOG^G.:0{Bs _[~;!|"0V7&- /QzMo1x~=L71d endstream endobj 1335 0 obj <> stream x]ˮ,q?- A^ 4^ق7d"')OME&7ɾ!KH.5 їE% "KDX9.Fi)QD^$Rs'QjKd}Pf˨D_k"UgQ1iɵV) -' (z&,Xg2jwTٲ6 2:*X_ǡ J.qF/1LΘ Au1Sn KL+FLBH[^bV@i 2f/:2Zr2CCзz^Fz%a:SҜbl)V+AXK&#.f \=dg1G5 ct=K^8P`.9py2,e\OJKKU@aA%kz2j{8 aJ@AF"@/Y2#ZʚK z֩zo(4"Pg2J )*#dԨ u (Gqޥސ1G +c;`.u`2͠9M0?')vB4xjB %Q9Cx,|_IolJ;3&,de,mڪ:IťŠg ΛL2[я Qmiv?m Z4yk5򃝷96K_;W{ׂ&-=zފj,=ӎ2eCP>v[{ѣAFBs͘>&Ura#3d(Jk( 16`#Kw:V9fv> 3M3Ġ6V W` Ac֘9_)p+"2=LBz-H +oVHJC/PZ+zJiW. B*`q|A dSF.g3$,0#AW$ca` $& $0E )ËIQ~dJSi[3PZ}@i$WSFm% 8@H҉5x ]uH 0 HAf 22xlHXDah Ij#IDCn/fA u-]5pn7JD ) VI21D%=%L)_c'(2UhK@jdEHXkFS$5Q%Ue=c HWztY$YK21fb| 9U!S͍K* / 5;%35DRSM_xKn/55I}IcE rOm%mpE_Ҫ5 )]l%m/}ISKڜ_.l6/ @} H$u6֑KF/,iJ}IWK:HJkud%34>%($$} u6@J}  I_24dSK{" ٚ%Cm/ dhdtuѻRژRƂܕI$I%i OIkdփ,$-%`UyfdTAٕ|P}&{do?kSJLNd" f&$ iRp6 iN F_d=@K*Aźw3~Y??/}@ 2^gf`VpmP 6<5T6c6 -yAK`0z,k ja.wv,~X8Q]?;"llw0!l}籨VoTv l\):!eWR> [yނ s`g3ķ/.j&f[YYbWc  5uت`cBˬC}sSU>>p{JKP^в;‹ytyO oܼ Rd~cÁe!kSw.=bj0C ͥ C>Q&n'.5ܼiu^654swqKqvq}R^0S^%ϔXR-R-Y"y.,dKy]%Xl,1KAdo.ux(b6y%{`W`}<,#̧og+_I)ۖEķ1F%tu#|o~z&PT= e'51Ẁ 嚛-BPDz<.tB.xlڡCasח*)>R2Z2ҍҍҍҍ &2Ny)V\LVmد$s:kע]h[t{.gS쫸|>n[Uؔ[S+fJ6ILl4IL|pIrsxw[F$qv\7;v.vH|b_]߮{is{i.~Y0#.:j7aAuxl|ltlo|7t_}}F}i2C.hMlQMKц=5_x [ba {.ҵsh2}tMhpN]$Ն}\vly7ZcYO|,#r>?˧B#=۠oOYݝn<O]Ym /z3n9~J],Εũx`%bc%cV<phX XxxTޘ,=Cld˂<Ϟϼxd>`|Z;Ôy@*۶ v9h9ڀi y96ms& onq=l&:TnP؀ñԱ]_UG6krG#mG#m?:?Ϗn\{ }>~kꔻ\U6}'S|Y4݋eH=@vh<>w;ʗy|uǽ^>7l<_?l _º^t_w`wYc.]] =\6\1\1\1\1\d 9[0nX ^j:d_/иh׍+#+׽.f4rkF֌[kFUR6V_]ph5{\w9^׬6:僾-3],pY*Sffbֿ>2+^>.+tt|f˚uYYuYYuY̽.ԕn;jVا v'~ݷGT~Cwl󎍍]0 ޜOrm;o6F{Eƅ>wmc\x?]z]\>YY=]xܠp;BuOx ׌~>rI2mYa[vI5^KvRwbfyXH\wQs"ovi#vUoޟ1~.< {1Z#-AjRYa;63ݵetݵK~0vPgrw#](wnxym.]n$.q1awbr68F .o{ӿË^c(C}Gp|'8}|o E;{~|o<;5tI5h~vZfUo ۾2A}59 溍әS#aoדF5m.1#ȭ阑 {8fd.7Yֶo 6b|ڍ=+Ǟ 2ovl#Fӝk~oXټodu +ï .6\7\j<\+>\+ n=ܗqcsNjp։qzv~.piBfFTr\f\ |ҍҍҍҍҍcnQ3'onXY}:l2+{tPV_t endstream endobj 1836 0 obj <> stream x]ˮ,q?- ,B2dY ywDѧXܼJ&L] iYWCYRuqN @-!x ~X2kҒc^2Z!%J.%I-uVZ_ZS I4IG%HMm9>c É]U^]l%nڪf\4\:5Hw{q4> g 햴(w>9T8R9(v1H_ VaU6Fj3>k @HZd$x`Bq+}b#0h>$F_l!F$/X\0B_.)L\M%Jq^k0Cp # u Ύ)S86&B1'\`LF.($@ҊBd LnZPR.q9" 1T}x>_gVXD=@Qc8:y坕I.1Z2נFQ'6A)j 01)p%.LqLA|GQ zUD{(iɃ'ATc* }*ke (R gbЄș1jB$\d<(y#1ΘA; ~Aby:0"鉄XY-&KkY0B;" oq\tFQ$㠺-Ȧ4զ̳$V_Mo4 ٖ&X/:Qp4$$/Ţ .!&#B,[P!BLꏠ22{PqhRd84kQW?:CqZiTMɴ(PK͢[6 *l63%Aƀ % G~ &aI.<_fLчҨi3-t"ϣxM뼞 %S`j9Eӊ'S+9ţ;c:JDBiNK/z(U O)Ey?;f\X:ˆs=;3=VL~穹e&O:S͆n1IClrξӜzI4mMQ|6sl= 6tZ7tIzڝZ ؝lsvw~+9z6; 7O@ 1/,{S{ukt}ʗѤer۶{2zZ̈́# &E>=ӹ\t{v=ias50פ{dezDnQr~;~G`S r^a翳OGNxf?̵6mޟ]c.޶2knkfm M62&7TmnF'sJɢg̖Nғ^rjd S'K I]!xz0&ӄ'N^6N|ut 7@/? u'>rU<[sR|%\lDh#hKHܭtٟR[؆+tod1}Ns^Ҹ _|Yz>'0;'[:3hrl3-n3@LLѪI˴ЧjS٦zcɮ32ӫ2#3GL`÷ 3|8Oq@>_u]$ 's|X/ᣧ\1(|=|GM`)(󣶴ʭ?s|(Oc1L><^bUS|OlE@Qoiٸ|jTmWS6EܽX"yJ(utz"bRE˯&-g2mŜn>S||zbR1I>I-ESDS$Byϑt!!޶1Nɓzlt1ijͤq;Ϊ=)]j^G M6`Pa(0m6 Ekܷ2|U4f;Wf9xtqVlX϶(˶Ͷ(+6<Iޜ4Oi~Joլ6fR;Rـp9hSKm۬q,l}SҌ6~EFAťzjZ%f >B8ƗT[ofjYvqhum݇+G"έznCȵ64fםr>_ђ_G}`vDknOnqXh cKz37_?2{l1ۡ7; a81ڥM^O_qfGv߻ݻ l(7F󿪘 !%ݛr<8volG)?D1Uv~mn͆!S/Sn@7 Ôư*K7. _r۽!SjXg6m0!U%ǟ??a.)5)o aJC؅J.8]r[{Cn0E}qآ $awYɥܖKCn vovmfv7[D a/+tvimn!Sj٥>ܸOl/9 \my<>{{Cn˟8K6yR˟?rq{Oshclۿ}C{Ѷ{b۩vLeJF9/ߞ77u}zfy^Z7jQ6ºt<6ݷϻO/KrԏuejzUܨ@[ml@o67?6X &x%iJ_L޶jP7y4~l m+t3lj607̩V|{&'tʜ`A~69M:E:E:۔ZEs!٢9V<٢9Pl(I6$J %نlCI$9t{A.~1O4gI5gS6`S-u_.e endstream endobj 2337 0 obj <> stream xԝ߮8rwTF?`06fax0`/ _gjg2=dƧJ#13z/HIdH)jy9-B]Ri[DA<-RbY4#Pǟ-AZbG8R|G8Җ"H:-%#I.#aiNKkCZTUD8q~]D8fNX˲HqLHq,vlOgdٮQ8ϮQqk5Z7ZvN2Y2E:YR1e'{mX9W]21d-ѳ%h~ծUF-QUVF3 v٪]Am K2Qz3fiMZ!gkifgXK{gcΏe0ЮQO]q̮dk<5tF)KnkT]EkyUSVd$K'QX1Zf1dGduk8r5J9GTFC[pO' Kq $i!iweI:eI]IF0/qd*woRY1F.]~fR~W&T]c(vUϪ.6YhhΒ1]88Ƴas*Sx`4<.+x.^z5cvsZDZcŨcZ"ݼxDy ]=* C _FAI㺦uB%K5+e\ךq]RuM祎ZsʹvMhUϵkTVbPuخr2Zjd4Z8t^gkƚF=jj]#~/Zz_jmnU+{Z] 1+]YhsӹU8f6715k4_o.[7ejTymiLO5@K{e1F9cv1Fq̮Q8fh:5ZǬ=8:w&7Qɴn+64dj a$hX~5jj~QW+}l蝞Ia_!RZ4Xc4aK8jWqd +O؆u1'6mYmЯ~28ġ_'{OxicZOl=ii 6|>tJ͚C#N]Ha  }0 jhs+|&qoFw }+NVh',} rM^tO l@v@3eU5>>elЇSImЇ1q FEDz>X ڑ1ֵ5םuק;Y'=:>ͳyR>z|ڧo%o|0ѧ-}ZfDkRsksk܏YVLd}eC-e|77No?o>_?/_u?>?Ǯll2n4s9X-ݲ)z MlmD>+FΕb3HlsOt.[粥lsZ<չl}lTf\Kt%ދ-?9,}&k=uESZwX_SYSYk::׶uNeuŭ^ !_T>{X\y3>Z/,}fm33ɜ,?rlse.[ֻ֦!ek沽k%7lebi*S;6\)ם͡9wK_s+qLO֯Ds,s_*h3\AjyMmBlHs :&rWהbҗeK#ksBNs,wf9͙YNs /~ONO|9o.J3spy9m.?Dzչlm*Xee׹}&72{s&w RCSL8<)&͵SSLSLk<}v>ݥcRsm[ڶεmk:ԹPk:9f^OqPSr?˩s\LekTX:mUz{3\W"9J$S7š+Zr1^Ε X:mi/sc0z~~,J͵$s9<Ή)P8gCiΆX7j*ysm6ϵmk2959*s-^LFqXJ^;sq`[ չlm*:W8m ܽs9oo]+:B ?B @B!AQB!BB( !CB8!DBH!EQBX!FBh!GBx!HB#!IQB&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJ&I(aJW\k^q+y]̂k^q\%9v]䂷]ןm/xu v] ]ןmW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮvW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW튷]+vۮxomW]WuO?ӧ?X| 'D빤O{iՋG+O?Ow_}:sǏw.J?w_Oo>nj?~tgտ~?~:|;O?}G_//V%kNZB- ,L yҁaa@όo6wnu#ftNӞ:={F5˜eňd2=" ̌V<#A-E?KZۭпZu{@Mh5Cg561B6`dE| DXc 7VMԌU(116bYQAֿGWhXKȅ(a6w _.[3#gB~k|%t:__lkhTLj^OP1bĔi"f>L|0a) 3f!LBh0`.TfLcb Z#f4=#2 #~,{F^sy,7:s:EXWD^]EpTO#EaPDADL2DJwChQJ-@,HmDE3=$s\&OJMĽ}^0TnR4ƛ4M&_ƠљE~.4<)w4?)-OJv~TnRo统3!rɴͥgVr;iI>|oMRM4ߔ!oH\7qHN7y:0wi}'mwnSy04I-_-+=Oi=w"D;iL˃iLKWHeg7iIyOfOMZwTߏYrc (/`z9>oSHS$&~ab&.`b%ޗp_b{%0^bv%>\bq%[bl%pZbg%N0Ybb%Wb]p%w>F8i48-wҺ3moGI+z' ;x'M7iJiyQZtm*7I;iP@/}ugCz#P6@|q'mWHȿ (/+^>B@P*|-y;c͗>B@y W+cAx c$(_Cp 2Z uVƷWH/<e }h3p|!φ o<uws ;@w@@| }(; \:a (;n]> @u @6|X]'V6=ighρ.+cAx c7P@@ۅsu'=DVȏAy6ԗA{.;@+A}GH; oLA]ڂ C@z (;NA;r#@:yeT\>__79e2LS2T&R*Be^L̔2Qf B9(3eS :=l{҆S+#P[ldTԻgaTeScN^+}6@ͼ eP)pP l >iy  pٸmjVSgCy6C˶z@^ > g,kM> sAG܇d\yd >)H_#P}Erta 퀼ovP#F眗K۪@w݌]YLn LA|u76}'A@1(NA }A7@ҮI2I~c#p rt@P7pHc1  pv^!)(GnBWOrce= } ct(_cf಍tC|6 o v }d t (@]ak._eTMyak7!> ;܇zh>/}HG }hj =a> )h/VoLއx;AvH^`Z=P|]Fd@zd^5(Ov yc6@M1{M\  e^eP6eI~V:< OOH-HOz(2h/^]_l `&|.E/ŀZ7^*f*;i3}곷5W CAvH; ߇hB>6 G@ e h@6O;lvx ; 퀼;l%C 2/g\)nx F _I)CzCje?tt3oA6v }+S2(tía(aC~'A}6}!퀼l\)P)lM)-)l*)*)$u=$m !LA@2Pvx+@j@<6;v)6;uNX'i[Pu# d; n <> |l6w@|hs/=a HG h+zڂkl9 ;9 [9 {9Jafƍ΍W<6@3Cck(0] *w ;qJl{R6| +@ z 2P `H %3ExآTؓd bz  )hptz϶__l>ړ SO%^;5hwa~ d; އ;H; OAy 7@6!쀸;LA@ ˦wF؛[؜ۀ'M cP7mb^נ!LA@$(xH@|[?kon |SG (SP@;\{M㽦^oBP$hޏf 4~%6bvXV;cW17k ۪ _ o|SgC'A>>n/aq7P@vxO"t?>>xgiA ٠A8i1(~Eh3+ANAxėAzo >`:'|qTO>³!> ?ʳ>ړAN/yURhGVP> ˠ !^$ ` RGa3}HO(D'J˓b}YlS8DTv4hѴiwVOc؟8euTQZGj*<koqxqk+:t̑C!;FM8pqx# J16>lE^?b*U&kᕝ9_~Wv"~ 5kxa^S\#S8N "mpؠA]u Zlkꄺ+7BTCueNa6g $4hiXQGOcb{Yܦ؅pEg3>fAF'11bamq +0OY G}hӸ?qV4!+ey&B|=]>Jz)1) N=htb׀㮺Tr[6>buHs 3?8P޸/;~bĴY˿ئ}+) *|)Y\˓b}Rl_#oYI-x3~D<"iܦGæz,YǞ52Ae~G\p@%K`Eh?eMa?ܴiqZ7i!"qbvw `Bw`N~˰wDS- L*T|L2[OJ1%IM+ao,S|sgĝ 7S4X0R9&Lpx1_BDlih,6~%Jx%QEj|jr0 endstream endobj 2564 0 obj [ 220 0 0 0 0 0 0 0 0 0 0 0 0 0 199 466 0 0 0 0 0 0 0 0 0 0 259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 433 0 457 0 0 530 271 0 0 267 799 0 507 527 0 0 382 345 0 0 728] endobj 2565 0 obj <> stream x} |[ՕilZ,َOV8mV-^oYqR$Rb[Fc BCP $lW34Pa)t Ж4`}$mahFwv+ ;_['2KvvuI@<k7WlWWTv5^"7Q3_AD߈w,;=wo_L~U~''@FǠi8_?4<9x4x^:܏. i'ԯa=e%=g7kU DFﴜ+ȿn{ɘ~PGAn 0+X|,ޠcrX/T}Ƞb<7X75Ϧy >Ry[g4Ê4B ďC2tLf7t^h@Dnm4DqUқ,J^Ps׀@qQwVA`ߡjm$^Ylcr)Nx|Ԥ:>T @QDz9;\sЫKuElUes>+瞂+c߇R*R*8#bA[\{$ߓ*R*?:KI?ZTJTJTJTJTJTJTJTJTJT$ xJq*k3~Ã+\u-G/9w*.Ӊ]TDDƎ9OX]L閛4tq.RVلiQ]"zwov/r-g,gٜl&y8fq"aԳֳE`K%5C/)Ocz[LK2!E rpD7COCcݢNQu&QU*T҅i'1d4( łU\-֢>v<V4FE)IH-<[N<(#3]TѳJ*d?j[զ^@JA)O@tk=PT: fI]>Hf-fbg`!1y&iUMweITYay&X  if'Hxe&ߴ<>Jp(SH ƞjv*J'Vk:]yuWnϪmYl¢,HJ ZMzVN UB(+ X |~Se@[ 5n~fܦE#>LeY=vKE?;_k)qR7j[)*u{T,+bYG,u1L% jz!Fk!&Oyb\f4t镸Gㅶpok)6N;Ӑv6c4\J_<*7DK(z/5[or>~Gw``Z'~%1;zr;Gcp'ߴD8 Wp!*g kBmAKOR]S5Xϓ#U u)F*LІUA%G}QhPvP +6U,۫W.K58Nι4 ܞm53xgee]q06v`n8v%64:^yhpbZշVڊ8mU]3ś͹f*bիrʗZtkZeK4OutZ t˚+Rx9m ))_|h3--daRg֖JkwξAt?n//cۀk`-6[ [Z̵ijJ$7*M>VK+b^׶4uEEiZ%|`WTVUVYi6ymN'yYMN)L#i i ;]cq>:nbEhռJe6䪭}v]MRTvաv[Rb/3rUXFii~N #cHwIkk3H Vf*9ꮂEMRvLzdٍ7sx_9ix>ޜ6D6kTN5|1ꘝ:S1V@@-⪫f3Tjwgj2~Z=t ܥ[ hf 5?M':͐9љ>O6 ?Ϗp9P$|䏫g2fE4ck L4e: WjGeފ0k)_\\uV7;V;+W|s oQpV+\{Nt6ꪋ':1D.ؘ[4\lYpMc1v#J9]4̷ww^3b-0b?Gוyw|fFzCvC<~,ue$^W =uUf{]na]˚ϞݗHǯ̾o-ԁ -ka@A2:w9E|QW>MPG􈩯gR-ݧ˶U~kgڗ,;vym盷>;p^R:I%#_}wQ !Ic_V 5  +QSor:yqW>^AӠjN4͏-||y?g!FfXYxyJ:/Z kz1]ɼ_Ϧ_\lHWv9mYkϞ^);@l gDwŋH˦e?&m<]MZe̹ -'o L@p&^گ˛K/,Йtoàg78O^ ^)}|rն9uڋY_S=VlUYefcYu+\ʺ[Gxo)FD;ލm.+]֡KԇJMg[1eB![xq?:&:]NX .<2]mj'xؾ'hh.GYt=iə}SYh> mNuI -mk!:o*?oѩÛDe`֗a ?=[Xb<ʊ rO܉NAe>>I\''aBHO]b8~RmrWg#jZLQs?/_T'4gCxSC@ATs*)y'z1^DWP*#qZx;Wl|3ǝxoxӯށ7! vswp8RI*2,!OsRPAd9xx1b;r}cS(# Q>ӵt6Q _WwG 16C . \0唚/ FFѿ Aъ=;lT$?q_dK6~ ˧,Qn5UoJXS9WޖsS*sLTNTNTNTNTNTNTNTNTNm6bN A+X9%ױka :VOzV7p#+oB+X9~+[n"oc8m,r7GX eHCb%  ,_MXߋKLg0I +d@i1F*B#,-,-,-,-,-,-,љ5PZ aF ( `Gb]>¶~l9tnlF30BLY|]N`Uc8B@a/kd>WUri0p |owrŤw?4mGqDÒ^|k<NzcL^_ګ[&v*]i5,Ү$zkcnI>t0 2Ơ 'Xb Ed#=!IF b8Ogz\_ks#RXC~ P;Z݇mCL(EpT_U4Nwe(HBm tgs(QYǃI|G|Bєγ%>ð!Fe/עͥ{2_vC帔C'$5lx̑EΕFw 9{<;CL̑ǘrۆ"1ZB9XIfifc1z1yɸ3ftגxe>iA9 7 9Q`4(;ϗbl<+RX-iqRB? =SzFuS.{%5&F\ xQѤ%ED@ c 02̼,Ѿ(z,Ѣ̏ŋ݌s[`FeH 2ifA!$R$=\Pce~dNN_dј"0뗬b^sA>}*l.(ӊw$0Ǚ>K>tH1pbD QK9{1Xh0fKOijT!&͟`X| `^̠|6I|d\d#W͏ i$,dsΛ݁3Te%;f19aA+"a+)FŘ$gPM91]EN҉b:;~bA2oJlI b"vUڴs q>8@irlsW.wd4MZB@$k/^H{#΍۰J[Nb ="7/Qqx.1ܓE0R.Fc}lqs2/ՍBo GÃ1# GPxJX3<,􅆂"H+Qaw 0*h/ #Bx2H Q ^a( AFc8#^\&4}Ȥ؇c^_X$Qpdg; "á@5ȡA$#g7/0<)DcP p$tix4 <#c(8 ؎E+IV#>`( X GchxwӦQ:A!_RЖD F/x}@Dq|<@E';@iҸbFQAa"WFCT "Dƣ}12ՋFR0QbD*B%5 LJT0D<dLH :>cdB FDŽ=-a0 oMƇa"@W%P,(x3b/m F}>9;<,K-w/Q82GQ1PѢQ Q?hQwv.q( AQБB d@CN%JkSR4Q^u>iUUc_)Sw ĬKDPF a3:xHu1oL= l_x|4 .֣&? ؊7ƚzU煇"ޱD?0wxU_/@:d:[A-6Rv@}ɗ  _!_E!5O~|GcH?NN!yH<[H|!!}<"=}@^@EH韐 y韒אww;<7M!}; |-_ɿF. +~ w!xeGW]hŵdv2oe@D\} UDCN"0!"!O $!DDCw q88|#C_D48GHhp2?%b ! K'__F ;(Qv5*Ĉ1  BĀ1@! H8#.-"bÀD%h=UD??wYSu:2A5WAh:t E.*F>tD 䒠A'KJOB>tߐ swՍFaW6)s\f-V<%9_GަlC~Wyy@)CA(=CC䏔O)q).J>UXKO 3)r__1W"+Ǖ'%J I$rR|J mbPrF9CIR\#U"W(ȕ֊\ħ(\D\B\F\A]NKHa[)զڐ9HUXM(CGWÑ  MM͐͑#H566Vj+jk6jj[vj;j{(5 vv;;TDv@vDV;;TEB1j ==]ծ"wS!ߧއ]|z?rrrO'{(yP}ef9fW8fk8qz}=wtVIg}m%eZ>{0@({0`ACD>~ W(1ߡF. -D)s({3P,Ua=`5"~\8EOH7YtEx6xP!Z~om]-܎Cˠ<*Z z"zȠZ_[n@VDU,{Z"\4 X`[%1:kFCYV:jcS'ֱulnYֱu#č_FvT^gVL=b˜i}󮘝F@WR3MSDX"6+ C\ښ:bmm#mSl)%l&>Ń/Q4[?r[-``[̚vypy>z=6gkOR5gW֬_f{׬CԬ#fܚ+Ԭ_׽f5nYStYl:ׄmxlvPU;~ѴQڨ]D-VZѵvK.'L#o6UUg|OBwݜ?κU%*L ks)Jĵ'fզQl#""sL瘆,1hѰEgh}sJ&%TC%5}&"lOuܔ.um*mö"/uHsW=g:︥Www[Ì7*%h?q 4Lkc#ltE=w<ܳL>[@UOVV1(yPF<1dPϐ'/#zybԥvh5~]'tDq?5qjԬ鳦{?cԌ)3Rg,Oʝfɬ:725~ٮٮ)#2%Gg15wVbf1ϛh^S?Ky/(y94]ZLڴEi6M.Z(wW.^ؕ6mŇ)ݛk-Km-٘yci{o:\K/t .渄ryيZ^GKjVeyػȊL-yftflf!3d\!s[+sẉe3+67,Ndِb['>~=ܲ"jɬ~7{a['_y):mV5$po6r/rڰĕ[V1m^~DdI.>0O1X->3m*ײu.0us5f5+hoi?El|Ln kI,u6ZBSigjڍR`/cuL~V'V?te[;Բ:32j՞iMy4ZܰڵϵzVHw-ō[+C'LkYZT}|B5yɟn-:s,Lk02mO+ԉo8.ww<=}*7MX pN~BIC>0#(~+MSs Ss.0c><3c>3fya>s3a>s3a~@,|Ha $5֋bYI"v3(zr<5ǠQCXhA +PVzhz@TzqpeTsm/Ü ~٭6s$ 5WjOk͛w3(AI@.. U!31f lJc -]!;> mk&+A84m# ySYsyPAݝ:B4t!0 #`$< 98ca 0&ALf)0tx^DI0!psa"J ,7oA_!C&Oc%b5P9|[ {{ ??k9C)8 1ePg* pk WwJ5S )kk9DZk#6Ttx^DI0fl% C*cX 6 y[*, :4ݡeRGQB=B#h,*M)tJ^ 􆇠Ga PPPPh;fA2s3Wf+2kJ}Ó0@zT־WG"? #j2Dkyh ͠9=`O{8 ݐyFC}aЅаCSԦtx^DHj̫ ̭j  eX h`5dq}-ކ`hELXڻ߃}H5}2[Rv pNH.3z]7%B>S4pCYڍ DN"OJKV8RurN֛d;ݜ[9]rY<+ BKo>  !<0 !E>!d}&b^F `P aPB}h L;N_<\JSnV@[h!Jfۡ:a"wC ]^A A Axxc'` A0x<10xI)0tx^DI#z<GL#&|)^ޔ*Ok`3o[( Ww :H[41xH$Ovu[Ch =D{ם@0fC2́0})0RLūx*^L›&32(PpEyUAJC;b:҇g|x&ɇg|x&)ϔgJTD< }J? x@a$yf,Hx!CyxnBiA5>*D_3uT֙ xT>/?UYk*kMea g|x-^ˇ3K2[)0^֓5 _ /W!K E~ q-i9k[k|=6pf oE΃|x{P;}>c\)|a'|_W5n~p~C/7O3{:Q8ƽy (R)8-WaʠΡ<\T%0}eېv1:ǫqרV'Tjg)c,EC-kcxx9k d <1>ҭ1g W,?v(Y2bƯα?QO!+5::6)!4RgMىb++Pe`! [!F.a/@|8(DL#溢 A~ZtX/sr\!:ygs|;ćE)_pm>vQwXsӹֽ4L80/+̐/5Z^v ]_ F:n\[1z.tTZ_rE8*WhޱƼXܻ>%)}H Ys=d^+e6W"|jx_K`)2`9dH;Y%b`"5żb'_| nvp413b875 rY pEu]+;\kp1 x6&ȅͰBp&N'7<} Nb@J{UcLM‘BcԚ@Sh͡=wi 1pu]7p0|3`|H`&-K35xx[ˀeV0sVjb,;V/s6'|30oK?["ܹT8tD^<[D:]-NѦ\bbC gHߐ0 amF eX$+USF:弇 Ts[g/#_N+󪯂Y_exr`=lw`#l\ y]A>o \)|?"`lqx8<[-``r -N%<I8?¿o(gC_(_L~:\Id5x5lI`k 5ؚlM[IO#6!SXe6;y̵" c` 쏁1?c` 쏁1?d͋w})ʈmE[%9r%vvg 4QA=t9D@$pB;hQp;wBIa ..p7=npt!S`3ӱlf6 EfL6PXSpMAt.°B;( F_mգ>e7@nq#Є6M4Fcn4Fcn4FkM_FcndžƼh v9Wc^4Ec^478D4Ec^x#${].к9纘И'0M7hsP(~@q06IKᜏHxFq0XaLbm2Mi0^KdG3ădsamR`>K^4tcEwr;\ެ; x&by,専 nVfh Fx"Eж24l!>ʣm{P@{\Փe>|H9,YW9?':,7`)p\\3 y dCesLqW?sM o;4*:Rf<.O'[c>5]e b!EJ2Vb(T'|U_u_U2A*žaOE_n$ˋ=5%)=]ĞW`eYnϿ_<Kx%v"˼_"q'34t|qU>UH>F1|h݇V}h &OC6D̫hj~Y8iIm ̸of)g`8nŻM/)hcaLI Yfpmoܽ_ëڂ2늊k0G>ˑ`| 7`|݌o0o0y簾r4Mh*GSZnh*GS9Tr4Mh*uTb4Mh*6 h(FC1Pb4 yٳ*!zH th!#`$l9Y\W108`"LJZvN =pNi0 5vMz`pBp?z4}CtjX򔭅D ZAkhm(;%u^&?Ɲq/o1^<Ǡ?<O0  CAGY!/P_uMV:ymh-yyJ ca2割R<6 NZP@]4)wLښ# 2Cf y!3a<̐0Cf e3CٶuAxc8<Oal&6&60q3afd6q)0R%oP yZ4,K<57Om+O9y%9r\n{#v}29;tT=!MOD3Z4E\$-%5CQ0]ca 0ݓ f̆d8sa|L aȌnvw~7w~7w~ vj;5ewzٝ^vfwٝnviX/K\ٙmrGˎd=lc UO#ϑ䥴]Or}+@dy~U ͛J]v/eAePg* pI)eo 4~XǠ?<O0  C f,H uUGhYG,X u!" jPgn Zl BV8 E9QM@= @c r0-Z]mY}D ?ZNjbeXŋebI ,+Ɗx"X/čC3ء vhFe7zٍlvh v3؉^vez9ʅzWʝ9ˁME/s/2 We~Mש;En `:TYB.8r#s'mBh*;jAm :+mzRsԧ,\;7F7_4M34MEҮ%mrh-qa̶/:A{Np'z:#z =.p71K}7;< ][O{|ǃvGoGf8_ߣ׋}5=v'rI :Tіc0}~v )?C>v#7xhi71ԏE8H=6Q,9 (P 42(PpE }5R `[YFۅ//WdWOdB z*뼏LiAQ~T+?HAmH)@Vi$G hDѵjU>gwgYiG׺,vW{PɈQD@g_g2s^^>^̜d2s&>Oƃ~~Ş3w:fc'=;s(C'GsA:sA:o\Σҹ sA:ҹ sA8ġ$pSIQI<*G%!In&%]kt;$ݐ+H+H J-nktM$IMmt[$6I.$]t%6I'$]"$ݐ.I^I'$];Fmt]nPmtIZuqR덎uN:sΉ^g^$ǜuh?U{$zSIEҵKICmt[$ IwtOҵJFIےnsl I7($];Mmt}n* ntn;Mmt%VIQ J6I*N6iCViEl6ҦUڴI!mIf&mڥMi6f)HҦ/?$y>#mviMJ>i&mZ1f*m f6f9Ml6ۥViQ J6i*mBiJiJ)Hi#m9W2gEK rܸҶFۚ`cjs؛̦qiZ_7 5 7] j*87ډ8y&XXl0yǼ X Z)i*ACzz,]-c m3mvp02_^WwhМ>,>#jmg_9vs:8󍎙 jg|dNӶ@[oB}i{~nm9oxMg gum O:_)>N6jg}N, >ŬUX|?̨Q͌ZȨF5TcT3ZEj`TQujfTKըfF-d¨fF5Tj`BFϨ:F0Q UQ u<¨fF50j!QujaT3F50j¨fF5Tj`F-dj`T ZQQ5Q j`"FϨ21Ռj`T j`TQ u<¨fF50Quͨ:F0Q ZȨFUǨfF0Q2̨Q͌ZȨF1Q͌j`BF1j7¨fF5Tj`F1Q͌j`TQujaT3Q A_j6[y1Wӂ`.Rz=Uwӽt7VTt^]QGQ5yɤJ=;^uE+voCmS;vn'sf;6uFu]TwWFMzۥv̙&uvPRgNTgwmlR_kWP_NuƖX}ݮZu[]dvuuZPWGՑj]]vml9\]ݦkn)#::VC;Y[Sus٫nv3dYP7Qusٮnv+XRn&rPR/NT/ z9RkN%Aur:٭NvSBjK쮍5 YȚ,kYgz3sƜЌ.ϞFab:X4E,ʲEfsfsiiwġ/`S\iêh?GYVzٶon;q8X7:n\syk; 'k?{Ӿ@=͞F#mq\#ҋ3Yh3F֭h6ö9֭d[\ikg݊>}*}߭"ۋ6=~{Kk׹s f`C3< Y8Y74kcC661F6qqZ3-,,4VaǴǵ~q)ם6~Fgϳ qSŬdd2ƘWfn֭e]u[Vfn6ƴL+3laevfZFɦQ& g=chTfSv3eTɟ͎QvɝQ l7f5 n3Ƿ12*[˖reӻcdT֫CzrLOʏ11"?ިrc*zjUKczv롵ze^c2bDFtQ=1&Fejg~̙c`Dt9ۣ awC:C gxZ[A}:އ T/4ꅭ>7B1d#T}xVF=xߠZ >:UQ-kӍ zx57 إzqx4hg4zukzxE4zyAO[x뽪b=h~W,P]50׳`{bD/#zUFV,`ExbF{:F}Kֲ%,ÒC!}xȘUmY5Y}>hTV0h)x22ix_ xhod fu1k3kx4XYBL[kD [˺^5n1އA}#2W5jd T5MlV(_Ɂ+s_$y06n/v0^ff3lcf3Vauړ}$+6_fǽB|Pp,۩+95 It3]lgf+335̜nfffw zfdfMB73W3eLf0f&Yv6.bCΰLu=̿afJT̮2s&3Te3;>fTd悪L2s&30^f&623̵ۘl>^^fT2&7kOrn\aۭC;|C0;i_rr=3g2z=algf3W/g2sAnf&ff9h#UogH~2ba{u=ZE?oeaPMw]Y8R̪X^UY8,vUnfa#,,vp~jp; X֪yp ׳p Y,̳p;X},lga ի[],e( GX,\¤:p X)խy~nً!K,,AKYY8 Y¥,eVngV&.z }; GГy ۫!ng6p XZ0`zn`a; X8[Y[Y8!p) p; GX:[ba; ے{_vlpqG`ep~-+HǠ5x2=UG]YOO=TlA۾L^Of3ۂ}G=dfKdpNxy*p*VR\[ $W<S>xq<嵿P#x~'Oa~`${~O:=E/(8#,ވ1o=x{bpľo'|j^eվ"uǧx\_z{r-V!WwlߔM R5QL_{]N㩷z|^O 3ޱ7xMbõ߱.1Ru\ }2O&Ʉ>'dBL }2O&Ʉ>'dBL }2O&Ʉ>'dBL }2O&Ʉ>'d"(4 Ќ8` Z5[I+%gGOA7<ym_pVfYK*  t1uR0K?x|o1?פæ8:S-s3:w8xvjY\j5Rމwiwyqa|P"w{}-[\ؕ^R\\=^{~k[ŇuN~Ko;1 U]jB l} e</1bK%0.ߏxnr\+qp5Xqnj܄q `-zp+ns Cۏ/ua=>O܁OӸW >aE| 24m OmpU<,K{?+y_fl:7Pgo·?a{}lǿ~p?Fvx('x?~anzP/%BD^"KzP/%BD^"KzP/%BD^"KzP/%BD>3O-:I: 3 Fix3ނb!6, R&3qgCfKq.˜eh;afr8jݸbc5^,`fՌ+юRt2tx$󉸘+UV٥BOKR9G$6ԃrk̚+xj#z//4Ǎ񪳩Mq6Uu6T)_SU_SAR_U2V RT5/eǏ/TkT5P󻸿>8 SrrZ*u큶mkmGwlwd%{O8r=_d{4uvMSYem^ڒ*5V^(|͖kIkISTOi{y)uո־l1UCVk@j=śj/w뗻fyYnǵ?`| 1cǐ!C>| 1cǐ!C>| 1cO]5kא!_C| _c|{?~|{?~|{?Ԙ[rSs/]9|Ujj?+sУԅ(?\ݏNH*i W<}-DK'W ̙7FXoP]k=.l܍|?~=Gϝ1( O1x_~o\`xY($d_Q=U+כpr2:r=?DhT?ƃE?C)3cvߢ'~KGa(68-1/3+ydyu^en1uf~}ɿ~\}|N wd~p?Fvx('x?~ani3_9Wl[*oƼ3S\cTnоJM~sWJ\.\kp-C7Vz܀7f܂5X܊p;܅؂a 坡7"g+˔QLGxx[8ҙwM5Uoc߻مWoޏ$Y\oܗ2r\+qp5ݰwǝqg~ܙwǝqg~ܙwǝqg~ܙwӽ~χa֡GY- ܋c;;؁?}#x;cJG(9%d]S*Œ;ԕS/^i ^RtpïSj&<~[XogI)} P8Y3fc18W?q2fM73f|> i8騅מ2Yxq8 'C̐=33g,q6HO'铃A42 `sدT?,uG+lQSrjH&p<;O\` >}!_K#Cqx||~{*w除I`Ƌ?m:xuT>|/~Κ]{7>gYq+I}ٱkyojq> mxxkb~'M3o1x[pHf{hП?dc]/_.7Z*Ūr\*7;0k zav;]L=A/r?4]pp.ѺԿĿ\Ds]g~Y0| |~r~z5 ÏcEL\RǂkD̰cY yR0˸' xHgiô?QYiWO>f`xrx{璾v^!}T̨=o5TWEPjQzt)H3 O~Æ#t' }BZCFH?0|3un!|` P ۝lxJ.:?t'&6ll+3Exy0FoPOM`T0FUӬat(lvTgl ]Da0aY&DpVd# %P PvGO>[g9H;.u# z z!eǀctusx0zN '05*/+*p#nf"s== P w Y;`'hhnװ=;(O3Xad(Lei&;I&HW1 Ciju'jkroub5zqb>#w0j60j:aYZ>\+w_%5=jF|}^V:Ezڠ72lGF=mqfQz ׂ߁LdݣW!N{Ef̹oHwj`OYͬNQ{97d1z)ҌEˊ釡и/xx\Yl"wC郡(QGG> |m<4]:c\.VX WV&deCYN«"+T;ff/Ef]=wjO4 R%qB3I'ԋCaR6Z{'*smc*a/b/ ɸ}l:>k!oY1ӈGGGGGRcVc×yGF{+I?BF{`q6l4fwY4vqʢιv{'nŃJZOx0{NsRˮ'kO*œJR<O*sYGD[=W*elZ({U;J?ЧږO 5;KDF٭\q&5N~ดhj(nsE=6Qcp{=6PO|XO{}ҊzXzzzzzzJ_lgU`g ,WN_FG`̅VհBo!#K5\'1T3Tz E?`-Xvu|NڪBv:q/ٶ3Նj<OSTQd&:ɕ'c8'fP3(\I/&MΠR9grᛕhu)zAcծLwSޓkzs|] L}1bMo~1FE3/f>_||8<~e3h$b$j"P5"b,تD$ZR:$|l0R[hB<݂[houOdl=dcQ}^sQ$ijNY'u<$iTGx:;6GK/V+!h-窝7Ր[/9 @\5QZ rv=?:+H-P:8z:6FѬ(k2sͨEH34Ve8Vokgů=g.$ȴ#)SIE`FX0*Dנ/<Kj_ⵦ?* Rots&r5<9 k}n ÙDza0z2VB3z22Yx^ȱor?%bNR.j#}D~hQEa`aIUD9x3\`])M\3k㳚f̎6N,Q Kl%563`0bNs0Ō1n.LZ˧ "(h,ː5fdMݑqmuW+>&["KF+F#aDw9Ft fƑ>1Z뙢D\ILpd*7ffbN[%)e€:'|UkRx |0iӗhm& ʞ@mebE:XDߎZP}5SvfG8fdt^xE\'ϰv40< f瘕n[h{Ts<(#TWWW,R OTWW2 ы[+Ę}&bdnPܠȽBo kG|zu?K2B3T3L%>3'e3N-$#k&J ̃c B8-l±9ͱWQDҖy22]0ʲ"$ל fĖE_]kRo!5&!H9pr H2gӍFb./91k(mhkg_%?8 'G_By L4!3x  )_D,K2\LpatAh,y0 xZ άsݏw]9k l׉5WVuYf V_ jYI+#S7f2;?oۨf,AFok`}]GdK'|<fO<ԟ fs 7Cai]Z2sjf6#MLI~] jЪjNZ3\ZKkiR Z\CKHynro=t@uk9h W\{c|`Kc␠e2h ygΌ睍e4q{z}Yq1 ?X-DJ}(RTa{S]YAA>H W5H mTW.qcl/C>H ( :ZBDQt}C[t?;QU!]U5w 骂xgUN 骐 骐 $ I[M>9H:84sI vNn#i RDʕHIɟH23eD=?z}l/@A_5[k+FvmqtOx+tdg9֮'JKhz4Voq/HT2W_j&*-R/+ݢ@9zzL/RzQd#>3(B}'-bK1N ׈q qxTf +;m2Ov ϐ#aWrSN"OP|ZFy}B d,/+y& ˫TTETʖEj/STy_/oP䍪$Ay:L&oSG#-'>KWR5P$S'ԏO4u~N/(:[+gԥj/_V uTWFU,nQU&Sa\QO,5[~Vk_ rzQ(?SR~PojZ jV-Uv]uj=_jTHmRvWuQUի, {89:;~sQuw:;]!AΡpu9Jq:}ձΉ 9ǹ@w.sQ?rf9gH,qWC/CՈ~!귡_SC Wυ&WII]44BL\=Zq/P܋'Dz{{ƽ՝3>>O "ws[~ ww;1NO:x!/^Ĺċzxo?osw7#T!o QُWu.f;/xx;ۼ9^^qVނP;]P[- rP[>>zu^eh?o5}:!aV#nCCDžw ww aɡៅuPa C׆ .\)ts[w '\#JН7o W //^^* M ?IxcBkNnwFJB=n{D3#"gUF^[ "/ő#o7EGv,N,,uDGֺlqEG#;#;9Ӿ]?s~wq_=y11~?8=?]?]?.#Q\w??/tkxȭ~ӟOq{RW? Oi/^'yy wCbp}_jh':$zwbtDWIsOEˏ2oΈ^ȪΪFf}wfwY;_fˎzf4Ԁ鰭T~ xNoeI3-{v^?CyXrgIzZsƈ$I`=3'm#˕iiO8i7[2Stj|_+{A,]E]ay)Wn3rɖ8SNYajjq]JNկ`XtX%Ks][Dwxw]͝Wp=<=(מ.A71=쓆qMjl쉶µMlZaLJ [zc[elU1$\6Kͭ]#+q^%sqO2o4K} R&;QH&mSE ֔G֌$8$<;Y[\ig''YHqj'zDfZe Vu{nֺų^6ļF$K j5N[8=M]v(9 3m_鯙כQTűo6#izQ.z4ff.6u9 Z;RGLgHJ^UIysH=dcK2g֐;ǵvd?LwǶzaz o,.J{*]3ZؽXߧڭq^k&kO_F]j6inL}yhmɠg(v``ϓv~j/ؗ8;-O2H˟f[G Vxcuq3O59~%OhV7깖@jYn|r]y*woصˬu$>CKy7wOYl:9^w.׸>gWzNd^||/K֓2Y*Y9$0+8ߥmBpNz*}Y/ݭoj%>) nփ-̷vk|>FSatƾ {['_A Stb#{[otiNq{k[= ǯ{-#}|C;goÝ47'A=oߦ3 IZf Ȩ?l\|YVe[-}g1b^sѣvfa",b)nCmALw S(G[ştqxJ<+墒*. ٟK&}e/K%ޖKe{AS 9\FdL,y&[e/|\"grTuR3;ӿL_dߙؾ3=־3}}gR8|*/BdžN~"͛oB7BEdƼ+?r|;.׺17&k3sF֯s/p/[܋Vo-qG qÝ~2obwSjO;*^Tx9o?5uRw{{G)^w_= G{1z¼f{#3^wWU{zy+߽kի u!o{{F}==j[j{{E}yoyoaW-P;jycX{{_io#uޗNؼ%}}tvsy?9<slKsy3` va v1;kÿs~!|S.;o;w\I Wg_?O;g:OO8T >?Ϲ߼_/t0:2:YAѓ'G<==z3+:":™̉=y:诜gFu=/k\( eG.E;| ===~w`h?ݟ}8 ҎDщ}х}0Wu?gz^[EcXj S#9K7_h~(8~c…b,u\"Qxq5\#:q#iyp-{{_vq|1 &w?G S7:>Z@Xe#a :bO`X:^lZ 5rE_IOHall'BVD } OFeTY2WLezvEv$;egY,.*@y8I$'˃Mv8L@B(#Ace?j;ND`XՇU! d.# ߳H+9/pBdH^ e0A^ &ڽYB%{or#r:yT>*zh)KΒEoz"7j𪊴37 IH-4!J(E JE@D,Jsk,*"*DeY+e| u?eΔSf}}]ۯоѾ^A C?F[:wwU;.tv\;B;r.6*NB:lCMa¶A 9īFPo^QjN'tM{tRtWz@uDz*e)FKHaWPxC&JGc>V2qT84BTPDM&Ga#a vo7YF -7S1{1)/1.=L ɨB2$Hc$458c1m=CXpq=Jg:c"'pgL1޿Sf1 %O7 \e̢$vc6ra܉\ww̿s^J33y<<|c>.0N sq?\d,B ņR0A2D#lQ#eFJ~xi6FޥR(>f<Ǎ!2cJxx%?k@W+0^]1^œxiuƻx{ȵ؄o5SkCc'/v_S;c:{=~<y8k%2ax84ߢ W<aQN ([ Rc6măsPs9%8G"f&ɔҤ3L1P#4z(Wmffc9f.h`-MYDwA|YmͶۙq,ؼ)34W ~9(f2lDc1ky#Ҁ~n1o=˼ 6A9\`.“fe1fv0d1A棈| 1S5Ql 1OO!||u-7#33H,jw+$dť1אnbB^ŨX1*FXj)^EWQ= mc!Mǂ_Pbv;46w4wQs/7 77?lF-Go7@f9a(SB MY8HL˶b(يbg!Ut+ފ 'e`7JBiV2ҤX)[˪ZRTʹ2_BzV=PFɍ<̷kX$[S5U;ZꆔݭTiAY)`][+Tl SuuF#xQ(κWG[?k]ZYP (&&>\ +EVJMJ~6$0df`귀OӦ Lk ~+miclm6;0UkՁ+ޟzO`>@0_|}/aޟz}_|b}e~bޛz/뽙b[Ĉ8GME(a'$)"v Q2EH#SdL ECj"QX,S?q1 q8141 <1Z.UQ=Qe%b ua?#AxW_/ Eļ"^Q R#xZ{=f[`o[R| {.88uXꨵ(E牣Oudz2FO=Qf=ezfzfR[lϝEEJ@ԀQ&U׆IR!N#9z^@MBry.@|S(B(ְma jiPDaawջRkB6zw;iz}PJ)VկЯ8}>1aAA] {>xPVCSՀx&R-}TVmVY$}~'ʿK ϢWcBBJFUVjEEh eu bjo 37+eΪRK%<X)%:J0n3nCJ"J`-š'5O V;vJX$i 'NX1UpRYᔰI`%Z%I;'Y>.ORYI8NT`0NP!+t_&11ɴ`{F XVX3Z&)fMRMRWLX)f 'fM&w-3 \<.reAJeR*%UJB*,0 Q*U(S)\6̺muK!6f't6;.f<ŅfwaiDfo5"T 'NkV8prY̫tN9[Ƭv Y77YƛQsv9'HyWs9zP}<(E*u&7=\EPG/ml UʙQVGP)otQ܈M&(%Ҡ"6sSJ##cc\E/ 襯Q.&= vڏrv̓=B}k3G-JMXMŰJ`쁭[:ŲJbYMXMժYG%UNVM&vUE;Ųvvvʁjjb΃򲎊e `7~YaZnM˚MRSXM%jTgVSXMYZ"TIJYSժT7@AŲJ&Y`O&S5ŚJjOJ;X Qk5Tzzwdzu7y?5212Dk5~~oo~~u7ٛ7]hf4z>#|kQ]652z@2Sf"ḷlv'i#d/ًdهˋM^&/:r1z\,oF49 3 *oEm]B; 9>JIz\A釞t! !l&OS\) '_B'\k!ߖoS[InBneF~CŬ*[֐*5RY=0loCI^滌Z5doJw 51bR1~sŜ9AڠH嫵A3֟Ur]Go[~^^K?tP礓tVY,|¯_3Ljȏ>纴Gy;gB7(V:wU9Ubm {\_Wj/M5,ӜQПT[NMLo;._^uU,Nmrw_G??Sē7 ꭅGg{}|*ُ_?Q?wyg}3</k%]S}@=/\Uճʹt< _N<GrP8G?ۊ%NY=+ר5}ќ'9!Nռ͞^&-NO}Sj:'2>Wik`?-K9GͧyT_?֥BU9j<Va\:1XQ9x {\5Ju) VrbK'GLeQ<:/Ngݕ{jy/2y.`W뽟.Yw-϶Bj3O߁}5iOw~CU9!伊}v,ٕwH`O_ej+8]_F!s*ʸrN>>6-GRM&w֚W|?f-s֬Z8Qnb_/ij?TǗ.rD"WUzyE3ќlZP,:S-zSH\DEџ`q)%eTC #V 7*a߰bOYbHf/@&fSc bWR{5QK#ZJjT*O{uωSX%VSgx.dn?]!ޠbXG=.GJC,>`bM>qa>cECc.t#{TO"MV{*Myh'fxyLOOf}:O'UI:^7'ݧ椹joNgz~o7xrh,[F{zjڡSi:-~*-J_IMLG܆H3‡aB}~q?U"JR{KY&ex={[6TCy LE/eKiܗ/%r_JA_Z2_@JՌ{T,QEY_%B\Մ{WJ͍b#eMbSf=x1k3fsojOcO6D虍gqϬǞ.,1/ 794MhSS( c T^m:دد ͫ:%Q5{~loThoC)vCJw;p##%bf.{w={RS}1PP6LnԂ-o"5SiHctA\x+Ol(S}$cd:e :.5Y2 Wz(̩yQ##+ϧH!W;َd{ٞjū:FNTCv".#eW{ޔR)u'`9R [NȫՔv$⯕ע1rՖ7ț(Sr'ʉ'IrȤF];f7a\1uFg1:{)3֎Qm5FS6 ߛ{.7gފ[{ko%f^Moޔ/`fn" ?*ab:0V`v2B2' ąB ---2Z1ZCWQ .#b(,ƏEqPEFѕXbzrSLxW1!ʭbf%+Wtƕb>K1"g?VDB WW34f\ɮĕb)SR]<t&T,G<3$cG?1?VTc7e(I`Iy::x*֋TKl`+IgIeIgIe`Ig6pU7'@T ›tƛtI3 uR:Q`O*cOMƞ ƞTƞtƞ`O1${tM?x=6l=''''Q%TT'Ib{=լx P} @qlFM`?kO'*S8'(U@@; MgKe̫8D&dĤH0YCք] Wz!╇o:]̗HSKeaotJB9ek+tY,aW 8Y*K*,L v]D<?)ʁ`"V~1ryEɸ@^ \c\LѰqSl'% őoзF1&-C<rZ9 giwFg @:#hvuG8BmBBCBBC;f8'-< <23\`'0<&F`c`33#y`W@H฻%(^U ԿAB]U?<enlCG|P0T@opPp?&xg_ .wVsQg0'x"C)Pv(?p<9Ճ K#PUː;-^vNU(ɍn/3#e唵(k[VZ֭,l@ِѬ :EF,=^UFΝΨPW7+>??1'__?Y2|/KDUnVp'Ϲ]J ݻ}w[BCC#"3CB7\wB/  //5| o57#92 _tChKdjhixNоP4\?|$Z8|ᑑa u =U{# #H8i DŽiO!Irz8t3C| w?:Oe|LR?:H&0ethZ`(ȉȫQ=*##K"#{BYvV"&U'+BYEnĿw!A ]i`6l ^Y G{ßGSѢ0EGGDGGoѕuїB**++}-Z8':4:-4-ˉ. w؀>;VV,1lxMCKY"ZC Hx|b1:@iL ;6K``;G~ B;xwswg5wCLxN =Em[; 0 3ɁXO7:QΫ7}m4[.,1KhJ{nfo:`^d#@s 3s{s$7[鄚U5Rʴl5cLkfi9j~D rC!-O[ejjԊ2fNuukMҺZ7[7k}[i֭֭Z6k6mݭ kYo[hWZkMnmYY_h7&{{kӽyfvv}}6>&vR6G)ApT́"Pu/ke2[fkh d3ml!k A_m#=9J6ʱrInm3<}P.2}#aڷ2"hGQ|BM+OB!WS W V1Mʽ"NE<$fjNhk*}|Dg__E:=|}|D_ߕboo7w:U)K";/zP6'~~S4oRgӜENs6ֻn;tǺSg5Y Ei΍Χ`l:KkDw*{A71wS1o3¿Bh,@;FSyKp?5?Eu G%#)`QMCkWpmpDs`[`yAg˂v9לu|ԴͿWx'v7;#a5w6o;wg8#9tv;˜g4gCx_{T d7Ϳo[ӭr]r36hnvga/gCqo ݁t;:QqdȄc`L0&X˄ V+2Ɗ£%r_@B]~@h0YcL,X&h1&(eZV߭s?=s[*ު{[RK%'n'L oxDiԅ>o_G& }Oyu}n}>!ŏ#Fþ⾓~s|77׷&4GZ? zXXG-R ѧ ʃ'@!,&@BɆFDUyt%}B (Bf(yȋQ>1L Y'P!,yUk )QXovrGr@weD/RiT~sB]E.9ڌy-y0`HJɘd{s3vB1x3' (ic| cĭ@n v!v f̌-<2vTl/~ZHvz2n-C #`D:Lw|]DlA:[L}x1 *{캸-U$Rln!Qbyfܔ$|#O r4=]؈VcbylPm>~>Yb ( B#.Zˆob05+ĦcwGTīZ>NWjhsƶyg\fȅdB6Th;lcSyw]`il_d~,DpDXu2RuƸ^I\KD\X~blR}']]낍L\b5Q K8u1aN$ ~Hwrm.-I=8Q|̞ߢ 1{ʎ"0|6sYͫéT(T'c4mӯEZ(BTF ѽؑXA"ycrl fLc;,`<=}CES MF1ZBE@RӻMI9agT4U-x \.~&ϊU5bF|xUF*[3QEPK5怵GkQ_lTn1è TfdMD[|55 ׎ocI Pa0nl&:I$2".+Y _$HcZTdv EUnpNjzB->R&}}vDxΖ),7X}IsYQʼzπPf9Zt,z;^~YEbC1|Z;;iVS>bcvL݈E6c&AId;GhlȲx%1$z݋Nqr\͚e]y-̨7j\ᛉeoE찓pcL9|gT:HwLiXEl$^1#URxT)Ppc"=s5Ͱlx4z9Z *~)-AJmx7D"#D 'Gw᮫ @:DG#V|+֠OuawZ B*P Vp\ Xofؙ (KRCmj}_P>Կ?~CP~>BTHia0*tGtL:}΢1:FGP COG8Kg<:|I.@t!]>EG$1c鏣2'Ϣr'sO .C1U"A53󆄡U5 25dx }etaaBOR~+xGX]63q2r|mge|/ǼE=jî.% fò]𾒦d(G#|H)SB ?&+|dKAk2a蚕Ç9R?&ue#jW$ GEnAXP  jC#Yg9A^r" VEIi<|XW{NH>>sobc\1Nܗnto6XV$=Np.By\ٓt !v{]gGCy=+\(-zܻuݽ)VݕPT1Uś!vM[12JxO<2ݙqwG2ݹR[]{ eR*r,e28Tn3!#;+dyMfKL+'\IAySd#bޢPͅ&B$nGʆq\!3FCk'2R݂҂ǥ|Ve[%+MD2e;%Iz9E΀X]9r\+Wr;wXv*{K"_!/C~t|P辧Ee_J~Ȇ|[^XNIQR:J쭓0(%OG>Zc=㽌rV${bHI^4 { ! A"ߋc2}ߑ9~L~daٰL>kX1<H1Y\2YeX]&0%Fd VLbՙ|_#O}&O%ϒM6c}l4ٚҔO'?IE7t=0&N㻌) G$Tc1~cm*dd/ڤ1c 77<#R{Ɉ3jR>獧~c0O_/awO4b*npS (_ --#[x c0Ph @"p30 lӂ`y60lZ=gBnh ZO,zRH,ZW;HY8\-LB$ሐ N =W\ r0-P 7=r 9>K]9Y6-nO{=$aKew pzE a[, 0a=(V@wE,O\-B0M֊7ġU#qE\J|,D,vQgā֕gk?냵/.s 1R!x=[ܒA4w6bOGmk={1?9WqnC0y3|-[׻yՒo]- ;xLSKz +p,$p|j$Uw5+NͪsA7X&P L6M@N V)A.P6oWv?D(XpJcp08(5TLgыO}1jscdi,Zz"珲q[pg WEۂHv]=m] DŽ'ȂvDz zKzK~'=ki{,;mS0 ^Veܠ 9 IbfL,82=#,pY% 2$hwR< .Uƃ֫'}HX!8q%ac&` 9W)ܓzO9߶]e۬ނ޳'_g F,T^r7,_en[;0n[>a'ݮw=¯]Mw7'%|Ȣ޳צ{6wǼ]2|fL;೽oowϺuٯq=ݗW#&^!l1ݰ%2pO/GItB6"~~w#;J;J;JOJfҽ" DMC*EsG]+[[۶m1QlsO٦!ϴ#9f[h _w#?Og6/6m53geWϛk5Mj/lc.dvv1im:;\Y&9,as-g:yXb+ڎod%L~}g6ϛF;)2fZ|ϴi?gۻ8mhm7 u:6:Mݎ F ~ fG9_[ l._j=k׊}l>^ذ[cϴtkgy7}ml=ɾɜh=oBgoitdgl; v9La;nhs=RO0W[$vȟֳ Iacz}[6?ewY;rw[9mW-*+döH=>ms:Λ9G-r/xN2h%-%VmrpT4hoı_ǹzѝKm={*upwd۽<Yr[;,i-x1=83`T,皙lvYYβ1tgoOmݭ%VMK=Zڦ[.63-K-|[ͷ۶peܜb8Fe$bT d=+fi\ӰepuY|dӐ͗Z6uY( [`l,@i8혅xj<*Y\ma*9m.bfgNpK`[=[mKFgqYK'̓-L9c%a&7{)ע:,Uծvɞn:6C9biI8faֹej,>c/t웊_hذ74O" ; ~u>œz":MȬmO6^ .taf3,x~DlINΜ^Q7y4&,Brv3Ndav[jlu3:{\!WVtêU^)k~4TOX9o7,bgGTY{[}nUt`Vt8DVjoZ\9z4XYdcsّ }s碳ܞ\;ږ|vi{b)u^wLs=#~2ѻ;Gx\*:Ls =_e [,3g==F$ߨ C}jPSK}ԯBvPOQ)1<.B?Mt9CmmT_ۏ5Y`N߄ޘ;hJ CMӔ?iM}AcSgЯM}QcS 2FGujYyHMݘSSa::Yi;i|CS)ܫ M^;_&wuT=90T`NKǜJ; TgtlJǘM>ٔ )M1}] pJ6ϰ6L a>kH*A'Q}:!Ȏ;,dyrhs>G=aO0р(M/̳[H9/!B,kc`@1_02ÀnuK,D$[-r%aYB>"P./8Ka !^%^pEuOv+׫V~~$@uQ;>tt_>k͗_& iԧoѕeכWdkl9޷%؏(T.8j:ء tGO3&1N7Ѝ.r}jK%([-X&;t.mصYGsVb,vc}˾5ߦwu3q86kT`,Ġ_EI_hTNjC~RR?eEୀ0p>g?nb1:ָj$C Rk"u˦ r+9HM|FV͌1.E\Q)&S0MݤܥUJANuh!_8:5eݣQ+GfqZҨV1GvabEhǝLqZmV(jZ2O{)bbFB*B槸nJ0G  %GyդAwZ9Cσf_Get㲸C# n qf^|Ap?92/s0m-c026r~qCN4ߏlSS\  M7a`_c J22fYF=!h&QWRteY!*֜qLu3':ì3R{ .[F*rsLU$uޏn b `ǓeE ?+#D6[撪&8,ΰqJN-7kJ" :(JqX5E2:S\+a(3qKj.kΰ&ހhJi~ީF4މwAIk 3] 0*'=T 2ۥQ~frk&w@h-R`S=u1:"<"OUrةܓUsavtc6=kGQF"u NV{;’,;g{]v?`'4l0l;죇 $Ǥ`>8fpgtLq?B z# ;b3*dSzKǼ΍=y0vyy5ݠ^gԚfGf;alDQǢ0ڛ}m7{S̳h7 Vfp,qSSla,2=igƍ+'cܯcܯcbPO-'g?h݅w[Z7ZO֍WZzP M''gv N>PZ3'>,~OGgi +ېs{QӸ\nV+[l` *u:Ujѩ6|uh4+EEpU`3șv8gEg(yjҹuArUz`@{xg1Tr䷾r;ʙA@Epc_L夣Z;r{IS~l{1ŏR[}RwZ7>o}n4߱564n7niGZ_UUjCNko0VӺS E Een\(Rn/VA@"bA&Y@. )wbg\s;眴롫r 29ڷں8ָ+rF;}Nit4~3^c# BU_~pqkU)!oo *P;:7}h\R RR2;lr H.At/n/V:K )믌(?֎TLATs;7]RП0Nb\:W54r&9NRE@Wt20\Wﵛk|q:+oHxIr eeH$  u/Ā.ā|\ڡNpm-d |sp7ޯa tSauKق5 9EЇ[[P6dBuQDE*z_>d} O ! . )>XEy[?9+#!}r oEwLYB?2e 6O|Y>hTȚB֬ YVY?fDȚ.d5kSȚs!k֞PrRr!NT,BQ B( ~' *X,%I`iޗoHˀ$@ 1 1`}%y >O邿<]<]p?O_G? _o}0 |"_| NOd NK=7ioUoy y g>}0|NU-dPU#d2}L_u2?lnߒ|uI%&,C?&Nـlvɾ+ݲQٟ¤lL6Ӳ}_}fa쇲?}#[!{.[);=~R Rۗ]*/ݿT K՗Ku?\Ba!w?&>ibLO 5KÚ#!q 8mfqsC=ǚZ#v^D . X,DfO[jXA}GBQSrgUuh&-ini^HT#c<ÞdKTKy|8"-: )K&h74L1yJN( gMyQ|r*^qeyAǪLQsNx?X+|?7r$bX'^=@3k<[__ΰCy33 sZT;K2}\ݝy8BՓ1V9x^ߟג1, IKj1E67d3ƛ2tp?#P7奖ud@ N4$cu- 2Ew'egyޙO4MKs_) t:|_rSe񪩦my!M3@r9)ZlZ4c,`]~!ci+GCTD1k2ھ]OCSJ,̈󾥬CקLµ0"v=8+%))lIS曀|^Nsgy9./% # '"8RRT;e5'T;Rmꜗ%3{i|^Hnʎjaii@7j}Hs'c!RD)k"q!ډ.Gobr2O5m',MgD6)1 7k7kB4p%L!C~?IEx8 ^Wx ^ހ7 Hwtg~?~s_Co?[~ s~wP=y_ /G#PxT< }QX Ǡ/PxB<}Y<)"S)+Y,)~)~ )oAQm6xGE__AowŻPW_A_ ʼnAOŧU RHTH)/ Rǯ xC%_|J|QEK/AI/K %K" "yS&-[PmP$V $W$WtUUH-yG!yW.)&ݔ$J,I$ %I@ْTI*t[ZH2%PBkkPaz: (p3p ט5f}Y`V_O{olu+@5Ek"FcsVq| <>a9{> CWB>9-=@uXY-ǯ=8k_؃G }j5n‰ U2 m`+Y֭|qivz>i|/< Uj2qS: jkfhixk0o0|Q˸eɲc9#n#קݾs:c 7A|/تNxV}X5M5eZ{)1J-,J5|n}l>>CZϭUFAbpAjݺg}UܵPeZǶ[A]><_wXYfSB2 V#OY[,jkQJ\/%pL זjdhu}uN׈3)E{,G,/kD}|>ltUC~HiA">#8e:@ A7mȴش""Ti D4.GOsTm7ѯG+)5ye?i~rLJNҢ\w5Fٍd]議ʫnBM&]V- Qb:$~%:\se5nτWɥI !)!q z$类7>ÑIp3p`4Q9BYs]1ke\mT/%3LJɹw^hOZLɑ˯+c>ҍEx:KP&m'Yпh÷)9Vod^ V)9j#B{h52iv {6;ПNП#)&B,H7Ē69 yؼHԩu2Ԏ>UG7N73CZ $wIvj>?/w&m^+̈́b#r^Qɺ̤@I8F!R!Y+7EEhuɖ䩫JbG2!$Z Zz7_KKFFȣ'bs6uPfQ!Y Z0R̠9Ay0hOi %t2]F=d U@,[ ڏ̣h;h 3E'Z`@Qt]G1Sh (].F6Qi^fi>A#%33;8nIRg^ H-XH3u 򑤳gW&++n =N>.<p%X}e?nsNa@B̉?q3jLydl2o:wuE^7$'mEu1,%1*f=IyrED{6haXJfڳؾJiJAH""UJ)M)REJ)"EH)ȃRD҈"b 39jշOǻֳ5{Ͻ=ɍ -.Vיk=].\]5in( V6 ' [q7]w-GVD*w>8:*Z*\x5;䪹>6\ŲhdtKmŀEkK&7(ݾ{qe@DwThcnkFMH-o>ەv߮,jt9_ZH%g,'(Llm^9آ & Ol-VUocFұi!!귺Ȣ93>>_NOm.*8pnqNފQʶŖ;bCCM976/X5X .mM){Hvs:[1v STrd{ͱCۋFĦoϬWNʄϕ-_ KuY_5+qGG:qC|Lшʧo*>\)\rvrEs'%'㋣Kv2էkKQ~ц9-陽BË6vW[=W%D!%0'ŗ /$x:-yqB^MsV5V–KnSVGT 6'v`ؐu BK\XUw>٫(7T^^p,6+ls=bJ#e+,Vpy]ʟ_?o_ll,6|"4Ŀ8xؖ%Gz冶[JyNhW [)u.l*).9Rr%3rH`Ghhyp~psrb,ˌ=\^[4bH"y8*Y'7֔V JviIu/Y0{GNHUϕΏ'R㽃 gwwvHt(>6꤯.>">rp0<>HhYcmȟ+tmPQKͼX}xtzothbtSB߁7O&P\R>=Y[[NۤD;q-$Z?[2)ݐ~p ˣѹ=jdOIM-:X{-7v;A%+ְ.'Woݒ*73`ٴ3Q4\X2#66a%<-r L-NHM-^>[x]J& #ԊԪ22?٣)Teڜޘޜ_X1h@qhjDE6[(l)KDo}11-Q_q*1*exsb~bnܲ F'E7Fr ^8`qeɾ[D_oQ>'$T]74'1mخ݉SoOH_=lv`9i+r$66զ%%ښWr6u%2)~pxuù5_MjS|JbODĞjSG"G;Um_2vzLզK ;&6OcK|Dh}ߢե OO O IoKS5l䤪xcN؉ѝuu2:\=ScEdMsT7~"7>\Jn)?Q &t8+Mxqg 4t*(zG'ޮ_Х|e&>)<,Q_`}|E|E\C`kގC%ʫN؜8Tp"x(߷&*>9$5``EM^c})YG*Vۥ|goT+bTHddGUU7Heyg}[m}ڪ-ے FIħgڞ\\ܫ3j*Ο,SA0q!8oLWUK5Gx}>O>u}ws?13~ѹQxAkMo3XsN-~kxmʃp8_v=?!>&R&ZVϫo8t$m{imI6'o<ԷiV}:귶B>veU?;>VZG}'QgCS.m3F*"i*i3|gfUlB } Ok؟Pr'T?!J'D؟eBٟЋ ٟp-?/j؟Џ ٟ0 O uOAO ٟp|֊_-Hޤ(+g/ ;UL|u>tT_Oˢq^oyx=~ן|SD]Jc3٭drpvt~AQfggQj>v*nOO:ue[?{?yjFVw+nrޭ\ü[w+Gxrw+Wnjޭ܋w+n>[/Vxrޭz>)5b~g,Q&Rg(6mJZk;Iׄ~W=|g:CߨP{`|Ir>{5;6 _KﯥמU>e_{-)R<ݫɞS8:kNi%F:{bh{J_"^qл:Q3cLc[a[c=#O_>ؠ]zPE)>^Z=VbrgҪGq bOSlOT'l[s~7GWLY"8Q & ?)+ߟW~e[k{ G-ܑ~a QnάT\*S"W\Q~yvkfTŕuLgŵu쒋2m^rG" /!lY+0ؓp&|-i׵H`'FrXI^Ghܱ. UO @@?!>|2d|HɝSpW1a8WGQV("Ҵ/"wc~Zhr>=')$46 T [|S(ۏ -< iM_GSL/s^6J$6-bZz'g2HyUBS@Rڛn0R~9y T?A2C;Ug1/ߢ PKћgzhd-ğ\;ƈcF_e6%1}h=ZA4_p.%1wyd&d4F4;[zÈv^K ^G>ӤHөg=ǺIA뫊jY{7Q71i/Qe~* _єw TyeNg]C?_]Uʅa?kB| ~ɚM; S8ah^&s ߂P{sېD)Oy4u,usB>>:\ p} > ,.Q[ˣy|Ӕ/ %rb%|M@M@y ZGPܝ|=L8r1\{8_шVvIٱPLSp99[/7?TuGozu"a^A.!gZGyj:=}FKoqe H4?CpGò+{F!6iДv"< WoȦw NS+Is?ǗME39D< 9-+dfQ5qHe8M׉Q楻].+vjkPj3>9_ 4yp&A$zT B9i>w-6',C%U}~s[UoG $}jQC;YJ#la+dX'̓:kg.^f@yXm4J늜T)i2TV "Ju.=jt;?!m0EKQbH;UJ3X#dG/ՙ3k׼e|G}nNX\qگX}ψ{?PzF["Wc ax1.uYB1#߄y$gQ#xHϑD4\. qA k`/x\#x _SϠW6&4+a'HiE^h.GC7nH3y; #)}Oe>fafM _2z}yS^"`=:K2G&$ 1Zm]<ؙ^10>yY0Gy̲s;evH$Fx`4+`D _u^\ZMi,a3=ԘIj+L;Vy6}J-L, x[:8k5&R$ᜋ.PlKR^9LG #@c3/rHxZlV BWCEl6 44ńn]lOf2VF+~80~kKήJ1 VL:R~WX;XDtY\c-tOSf/JaeuBAlS`]8Dg1|fIA lQaJU%o_Ծ;ك!)1.lBM.cAh| COC )SXbN֣r3ϻ*Kr],I_ܭ8hx]ɹ)LTE jeb5׶kꟾ*'fE;J,ab<_ph1L k|GЎ&3ߑD%ȡ]\SfI038J^Ze5=/;pM[KuDO皕߼G9mz3)/ bka؇zx aqgӖm7,PU՗~؏C,;IA ><.O"w#eM&6^s12%p6s;X&Ε]俠t VzS-t॔Ĭq_\lKy Kif]:r'rh"SjX˵>)?&RRn")'ss5>djɹ4Q&R:0J @@s]W )§.| Aԏx E6*|D 5QECc_hyI3?ԤBi'tKZA߽wdMI~Ǥ)%'(E[Q#ӓE3F4ejg(v\3)Ts:BuUKz#pE o:r5֥o5}|DA$Ip.Ab)ƾbz~f/(͚ВgNg_Ѽ!z).E5oGWO|݀b9L[5[UܤK"b@m:*Q[FI) z(TiMvT/ &|N|Iq %yzEEzX%z_S˃z>?-7{5d}[*%oGcewh{IGg!ѭe\w r 3E#Wj8G_Kh_KPGX"> [h]Eך;˨ֻ~%GrZo9{ 8z˹󐇑C vnf,ܸ>Ƣ-5^A~ۚNuߤy|@ǵWuzY5js{."}432\M^]{Is1q=LIۭ:jֲ]6"m4 ޡK+KSOl΀X)ܹvZGsA ~__3LN.8~_SKײM}Tטx':9o(~(x5=*84veߩ'^7Hjl >t?#`{|үG3ЎAx\mQ23O?8mkytKa?M)cv=gX_b1n_1&/"?r)`KI(g^x!' N=7~F=Kx.O'\ylx/1<fQta633N_}+ps +9j7=y̳0fi9^AvDd.響Tk_`]=?e^ƾGsk⢌/-S\}ɇk2)N1YS_\0î 'ek}P/3Ƃ1%5;i5h‡!}#UhFd|>{qa{H#+ckeZhv|zvNTӢ>o4d$,IrY CfH3$*bBF5QQY@VE0!_v̬ʮ?[OsNuUKp0bZ8  1?c>9ѺYr@WMvhw7w86\@Zx=``WTqu( lB=r!^8šj) l <X2@28F#rb FG&Zêpnq`I\٭-ju.v | e6#ǹ:|]0Z .= D+L &ۢna'ZPD\\@p1]~o Et._F8 ןk Yo~$0v؀Ѯ68|/nwW$rV#EN/& '"\694/YAkz8 ص7RxE!|zM &nnNJc[=un{.q6-@Vehr1x'mƾ1Bq \$ V$8JBUL`+X0޻[Q ȅ&"MU׬xFH7hSۀhAyW,5A`ZCz! @FO;7ZE}D:fGQ3<&OdEK+qhA:uYV"F{>gIЧHA{:KD=X.KÊǡ]2MÒXUcu_caUXIG+)5鎻>HPOG QgЄQtSqȏtcgh8FS"vMQЎn⃀À71%1(Ӏ K 5}Ǭl1O(1o)Ӂ%݁ѹC0sW#sk3q3q8(S}G|1☟_Qxγzz;5Umzb;bP#:WG \@<]< 9y61kG2_9o1קV2QaVS^ ;Uy@3ȉ(S ~֕[MbTbnPF(NE/rQ~6RamquknuhFLVhO zlN(Gah(jZ{\VۏbW(Zh̡:,Qwvrg1ۘK8:Wr7 M w9r0+ XF9ڳŬZ}>2֬zѷS^s;2⨽x.,{98+ gq;ms\ g|%Dm~?ZtaGugY?!]@p ?{m"_=?nlieٽ#Bǘ ܝpG^E4uC/`<ɘ9 Wl{q壯 =عZs0q5x@Œ;I]bm9q_h`Xv[ǹ~rhkG'z ma <\߁9hRc^+R0Oiq7yn c]Dk~λQhQvV|̀0'h4JqwImWF#A䬎w=pv4!+hGCA 7G8L2k~N6Oʙ0fg͠΁A;V";bg*NIT*Q1c-3-u!~Ih:l ʠ6VP jG=h(9O|bYޫs0۰. llk o ..^;gV x;yz'p7p/p?0u=(Bi5Tߊ1!VJTcy^߮]vOLiV7 7!SF$4&C{N+.HUESY EX)7{>qR֖dO9BN jQ*{#yB*CVTO5BM%0$?6y`Z-Z(ݷPz)i*ܴl4og9~6VBZYN.i[z[cáq8 ])5`m˽^0]B魅~ү_ _Ut!Wx`bBG ޯSVTO/Q[ *)+?ibꯊ׎ GpOҍaFVÆQvZ5PzwtBTlPzc[4 kʬ e Bk9#`6כ2s|Px{rEW e#X6ǡgm(y[^?شܴ#r3R IqHw-|A ݰjзZ$;,iFKd+~7mM?pMmbq b$iwَpˆW7R_%K5WnnnGǑO=܄gϸ ˑ[pV G'܊||~K|5^^p]r=f MX[SV[CncP5$gf}x 7eC3}3g_D6QxӼH3pF*88(8# Q Q(( (( (Pv+?ʁ?ʃ?*?*?*?*??TTT44444444 hh hh h8   |=l o-UԎ*.e.Gt>^f5=mk7t-^DGt +RyFm]hZxEh+VxE^nW&QNE[юD+:N"sADoћ.!_-Φ8t#)x}xC;t^8y]Tu8k\y]4u9k\y]tuKOUyَZVp7u{:ld'q>ٸO6|瓍:lylcg:mOugg+>:q*#CnLK W'%͉rKblb.1!1AnMLJL'H>#opmΓyғw8OzNIOnw]w)R:G]Ph>0o*F(79|]/Bb/K!)0h|H'"S@.YykaZu-̏{w>]dydu{סЙЙ:SBgЙ!tf:3  Y:tf:tfu*AU;*t]5j8-G5ZNQm娎rTa=NO:᝴}#j䈚993Q+'GqrDQ{'GurrDQ'GrrDq;b*$8IfKÜp')4I tBh'4:L'&8N.h 䂲\ '48\':N.h ZV:\N.h ].qrAMO5r[6{A@BRz *Urj}5وVԖJQ{F8r4FY}54$;>lM(מ1ǎ!5tmt;[!Ai=IKyͥ}w.i7he+:BQ[CZ#Xz5ȡ7[7܄[]܆Ӄܑ{}IiccIt4zzetT-+ڶq1\d7bXha q\D;9b].G!\R|*>RK%8C帬,p9YUV eY+[J4n3j4AM5IML57{Ӽ9|w7x o -.u:~»»w{뽍vxM]Bi$* QNW5D]K7u B4mtPE#=B(=FigvHtח[D>*"L\_K׆eF)5Ol1Iי45f&^2K11㖧*28J9ѿNnOɠb*YA 穼*u^`Z+5u]Fn >RۂOOԝazꮰbXQVP 5az(l6Tph86TYaz"NR)4T8=Q{ü0OUZHwBFp#`ZH{'Rt ^(WJ.:3ueKk\&k#VtЎ_{f%uS6R-Zh5]Fi+JXkq+U퟾얶&'O-H1;#ܙxē6| |$LH"bt)%HטWŔSGL1ezŔi4Eڀ"w&xg2j'F"E4QL%jFfr)g2G<9GΕyr\ Er\"ɥi|^W?ݎzR߱:>?'"_h)GH$%DQRDqNEąBJek*&iTF2?ov2({9'.|=_>ҕ,[ur^ o7ɛ7z.}蹉{+&%{DSJ4= !XdާЦ񑷒e 6ނVVRmqmq.~JE&yD y\/_Fy5ފ9I;vJ}v,-옸$n-r'x9ANd9EN~ݳȎ,;ۧ*wKe/ً#'@9mL-gͱݽ==-ߖ&r%G19Vf'>[{Un{ie>Io{9}d>r:vN{ۻݻ=e޽uk8E[:-JO Od^߫ ZeCNpS8pQNb\ӹR\pr\+pEkT*|Wj\kpMŵRq}n ,M73V/gq[nb:qg]wܓ{Y~֪U3P>p#y1|t2yOI<;Syg[gY_/C~Il~K@:{J)}_qF}R?2l񌶦o-$LҤTS5i)nM SҔ2MaJb0UM5S05M-S1uM=S40 M#4Z3ܜiZimژL[δ7LGt6]LWt7=LO6}L_77 6CPsffeF13dq&ˌ7DmfefkS֔3M3L6ST3ͼm10V4G͇#|j>GOcWqk[;=@^AA"H)AjP$(łAdP*( 2A|P# juA~8h4 g-Au&8+h]nAG3 ``0( gÃ`T0: 2öa}!v ;]®a{# {}¾a8  C¡0kGg}:ZIdkN B gÜ0Zs¹p~ \. Kpi,s pH)*K)&O R)ɔ.κv3>FKKcVkN7bn&m-_-S8Vf1}Ob&k?ů"|V;ɏcg}*wݎEIXacADRI*4;3ۂFo Z]nm夽^i@U.';)dqs■ׯ C̎󖳃*TUck@4c&{bS]7fZ@Riq*͍/C##F[Vͭë_&zz;N_oW8mz=WQ垷=ۢӾ{"gʶ}oک;Ko77̞ٛ7՛[-fOh۝p"萋.¥t.eum[pCJwr/_侶O4='\۳g]UߣmfϷf1o7f)c ^ƬG^,?n7y9h^{@~`G/ ?S|>7 ?!*OoN,1*\[uϓ'O⎔)]#֒Kʷ5Tӣ@Ӕ.TV].VuRu\]TUjڨV5jVmQש|W^| K2+y=_/M| oɋRL.+Jy\%ϗ TjF"20SZ3c0S1֖kEN| d2WQӎOyN-E+gK;2}%i|s|G ?/BE4?mvTw~7U;>jYPE"m^t?է9@l}>-H*[%Z-#+)@B-u+%ҶV~*zVB=TMPm#Զ9jjc5g:Cͻݬv@nF}wnۨy,`GXM˷I.k#.'}3c+<ϚO-cj#T3'?} xM;k~MԛwTsTH# HJDJ<IDD8唞~s1c9ǚs̕{2RK!S]IF,W'j2AQS^qKv I+OQ28@vw4[H1O @$ $vpA{AAGA$^0I ,H HL,'Ep_@H 9B.tB-B0^8I ,L LN& Ӆ/ g g g  3Ylap0Wpp0OX$\+, KLAƕd\A$6$/O$ rB"$'*$FLr2%p81mYm;L /[Bu\z>=2-ŸŸB--/tN* 4t)%)z*DHWT{\^EE(HqRSe %\DwX\)_Q^||?O*ɏ™7xzoE-9T~ %R}\j9oAxG(o APCDvPGHQ#sé?᝜xg\[*T=n-@G|/yg7g/Si4qNrNsC"C 9r>䫐C 6仐MfJoӕCЭ"}L@_LߢowydKyjyfg9yn={JrRrJrZrF,97?yZFM'''*~aQxRxF*$l"H!҉,"(L!"INIɉh9''drIN0Q#Ee͢mj>AQ2#o)1_,M(qxxxx8Q"N/W %rqxJG_\'n7[ŗmZ"($:E⒄I"$]$=%$%C$$qI$U2S2O)ɑI%Œ2f6Id䠤Ar=g%$%W%7%w)O\*AjzҀ4J#&-+ MHӤ󥋥ҕi\UZ))JKV%id NfdaYYOY?@(Yl,A,K͔͓erdy|YLYMCV-';(k]]]ݔݕSr\"W r#]Q0hXy^Ogs+}B]_ߣ߯7OK6M]rl$`ccgcwc_cqqq1bL75.0fWMƭJNcxdޞ`Oۗ%Mm*{~d?eo/7CP8tsD88z:9:8F9 dGcc#ӑs;e͎mj>AG㮓NS48mN3pvuvF9cÜcgsss3׹Y,q;+۝UAgyyE$.ಹ>>zG1y'3333IL{zx<<=ER&VOgS9i4{Z=')|޾(_ooo/777ߗ}e;mj>A_.sK*o{?O_'g-+Lyp7Xl6O2GC ln^`3K@F˯6L+dDXyb%&6 ˩M@22h(A UU *WA UŽ@F4ׁm-$ 4 e-u&2 Lo|+8VصbLq*Uj!1 7ȹ} j` Кlf6Z5Z!2KY䐳|ꡭꡭi<5J] VJWA*ԮBU]ͫyZEΩ\,=kY k_~V !SBX)BX)B2 2֢ZZVk!u%z 3>#I X <<<<$s dÁ5@FEAFj1`CƆ#_m2hC#c@2 hPXA 5ՠ@5s zkBXdFF&2AIl`[&21MhA+ ZYy6mc];3&\ss;#YAAd4:Ppb~,q$ B2 j3+AƫBp֢GC:cz=ࡇ7(8P{ !ʇQ 'Q"g$): %<+vR~M`@(FQY h_Ӡ Tv!1ȴ t-hFEnEXN-hF(Y` x|5+ux xxPb3[@Fc6^b3, dڭ 33JAftA$u,6czp6[ XYK+xpD,6#*> l"V 2g-V NÎG"z^&e"tXd 9 XЌf- $@@0EH,?`ˇpiN30d 0^<8"6BIong**ZZbh&q!A,< q F` ~(CøkD>K %=\LMf %F.&oG F% d('tSyzUViH*)3eʠ*s5Lkma |B5:roU=dA@#eƆaL-C  #V&#ZLA٬ "BЅsjl~O8v1F`1FxN8Y,5ɷ_DF9ffyg3!0Ka#r10{z(3JL,rC|䱑 X^+A Ґ\ W!_":?JSftAԐH>q>+HBi!zZ_ Y_ +\+dZA:C 7/Am l-Af-2uEWѧ1d7A[Y"4S0:|~ȯ.dGi [f?Gf8%0Hf---mm-f>3Lv o4X&e<0 EVo|!BBfnSz- 0^=ig -.)rh)sI:A4A&8 TUA/r-2 ҐTSM0PBYɎL|BAU=ta-%g ƀC0$3iHᣉhG+A_L昑-9VVÎZ;lH ci#InG G ׁ%R`p  X\ lgnJ/Xe)[,gMlI h%R`p  xxx삼 .Ȼ[ZʅV.wm0 = C00 = C0xxxxVg 3?=  hPۑr&f`!p-bXHXHx = = =d7Hv|#d7Hv|#nn ,d.vpar=[n`||-7lYElYLJ.7 F(/eQ/ѐ|4VhV[4FmI7o E@ftAa|Aa|1JX,B'F|F|(?BPh Ca8C&t,Ƣm,|ekn | X,b[,|8菃8菃8菃8菃8h8Oql<űSOql<űSOql<ű_K /%_K@oN`}M`}M`}M`}M`}M`}M`}M\DDDDDDD>$ICOI> ~'d'C>s2Z%U2Z%C2&ml?~&Lf3g2`?67);~Sw NaV)C<}IA_R_ / `! Ҡ; Ӡ; Ҡ!鐙zBYn[p#M`x2 ̂'ЖmЖmЖmЖmЖmЖ`( v29`( v29c1GxQ<(s?@e [e[arĖa5Ke5r&`0G %e [e[arĖAYYYYu,aR,c5lYΖ2hV`V`V`V`u T"r|X>n2z6`9jY4͠AD|E׹ S#@> <,f-xB΅{A+ Z`,#C䨕4 ?m~M@q'GtwhDn]N/_qĹ@]ZH^$7Mp=#t77 hyr%?~1L+7W{]{ H_%E{PEFk_?J'׬se%osk8T ezSQT F{'u.*Jro=~'3L2_E#'wM堤!U>:7t~hhhhy{8aR2"80<+&/RYG3O.Iye!\ L94'CF:<±X42p*l$N&dy+|Dvm,>qAvve\Ȥ'2CDE<;G?lm%vjhy]IBR#lR;G=9N6}tGilKPXxSO ؙQӧ;z9=izڔ9^ޙIP2jѳg$MB:1f:t䄩ӧ%h/:0^ppAđs}xL #r{@g>k59m ンӲMǒl\x7/5ND| ]/4$$rŁ O6%=rfмGH?orZ9}oMj;/ g|Ts8h^ +Ð:ZhmI>+1z4uBx{M5/CgSCkpv!Yo6n;fI[?T77iʵ6ضG^SOwWa2B]Q/P瓎]ԋ0KÍż?l:qݿu3W=|gyOeq|7MZQ9OXbSO2%vѷ;? 84Q7jzuؔ~|Qi3edK֘xv/Z(x>uxW3 Nwtܩs'd@1X_CB:|Ĩ!G={Ӫ~kٰ>z¸}J~Y;@W[ٱ?\س9ي] Ooۍ_a!сsU0&z^ SeL{vw:}S;9yoiسM+}?pocNSiqƜ%sد7/񙟽~[<>'^}LsĔ׻\SƹPaʅ9jZw/;ԒmTQ?{sEEknj/:7s.ʮ= ׻}bF?m͹>ɍMG3vOWGY'"S{v8)-%b94}j0܎i^>cXxy!C t9*5k)PX}dޔgLxS%9bf6u-c} {MΟ7Gz3iw__׽22\vķ?1HO_Zծm;I;;CxN&[2g\YGaK;\x7sWľqnYE/MxǪOVy}<`˧#w[}1u3}en^E+[3'/}4LC{d˹Yrǽ(NXQgמ_upҷǿ축B=)e;;RwmPA%z, >d)/P5ߓt 5)ХK7fA>rSN>qj?6wG ~p)ooktjË~ӝV\jxOOʻ}}W|}Jjl坻-}_TrI/LM:xцE ο:-1AǾ?s\Wvz1%[&=X0hCw&[Ȯzͼ>eֶ+ K_WpCΥ' k4ൖ#v?`꓍MQymGw,{I08?ҫ}RgΙ*e7Kj'.LȕWO',92>%w=_/csY‚I|F1nj9{p|gpKsHIן 8/;גs7bݲrb7]%Fy:-zYjWwG = t3M1k4nGH@•s,H-Rp vUp 0u1560u5urv3T5PIO O)e&,>nv@1]uZfasYiL5a?bI%;_Kq$d圷Q[ rf>;dÔƴR"[uw6Ko^GW[ǖ(;nyC{>l|qCu_μhho_n3:)Rj]L< _kTqzR$_7[,+| #֣ͻӖQmﱺuFvnp nzsKQ So||82PZJXK JZJ%ɉTi)L*^X`+x'[j6+k|ا3|־j[M<9Zݙ:ғB>Wdv 403rģ[;ڙ݉X>^Xe}tJ#2n2[)b}J k\ FWί/y'r\\y&>y9mrWl Don]6$bkAP6NfCq4!(Ԁkd1&N,8;"*e}- R,j`edHf(bť10(00T2y@D +rZ tZRY^XQV.412:q}:mЉsrެ6Nsk| kZ=YlxC|fץ+7٩U${+^~)q+J)R#f_wN=ڷۨo w"W.*T%w%?1IbgRjpm&S BʹO?Zin_1iyg2{KO<ApNsپ |焧[L^UaMLML҈8b3lb q=1W(6;41.5@N܈a_FpVC~`jihdh`Ṣ09?/ .翹뎨}J'PiXu|m?2o֯wr;%[Kn?a5({$Rt=0!&wEM6*Iϑȵ|opEiTo`V'yNQG.f[\ߓɩ-faigS3D'v`02cyaq4e_ )?L:v$WWj)K2V T )1ϩ4ܫPyYs=俱WhiGnd+ƙ6~. endstream endobj 2566 0 obj <> stream x}K0 /g#vAB,PӮ.8!0ӄ)>>=ƄnkQ߇Q쥻{jڀRQ78WB]F{޵.X.Em^&VuwAmд'+;_=vQeGWK-V~3^\ LSuee=`'˭{lH;rp£HF'L J@ Pi23mS,Aȋ]/@n&2(NM<4 E,(B̬  F$aq) B4N@[A56Oev ,֛z.L QJR&ްBQ 6wSrr.A9!vɃ^9כOV>W+?D쿊t}?_?hKkX@-Ug&tUUU0o~0{6}]9f5 endstream endobj 2567 0 obj <> stream x} |T9d&df,3If! a d ,Y@ !aSfmZW&hVQV,U 'V{}9>Zc\ lViՔI/tSn`̻lbiuև;J鏗M΋G6)ű.Y>th[~^P",̌l S B\iL5Pj6^k,D|0*bPÇLt_ƦW,h PE1A'  #E< ul5`~w^?Kl|#G+1Sƽ2㉬g+h?p/Cm?11flS&;{\6f~I}m ٵV6sìSV;IFzWR7y?oc5k{{c)iϬޗxʳf҇e{wƹUodƎ?Ct6@e>wחR_K}?')sn6P&+Fv|vQ.~8ԔC[~ݑWVG".?0St7c2hCb|@߿{ۓzK_K}/ԗR_K}/ԗR_K}/Tނ:lY β66ղ9g6v7pPw֯B,O=MczFZt6b0ة9j?Xw|<B91a%j|Yp-WYX+R!nQkW[V375OO @9.PҲN>&.z 5d(REӒɾ,J?2$>&cNܫ/' =cӡQm1xLF}zo?x,ӪDAC¤BS/*JY-X+uA[{8ܶaGpJs[fOke&zqD6O8(g =/yXꚘ•PV`fUUE& 2JdZ}߃aZRfMi6qԡ)m l5HxHKbefx6.ik%QGyp<*\E-Da/b 's8GIm ASXP5i)@GwwuM YXjsh|~cTԛ$hkSԈ)MXCTGzQlD[ky5Kk쌲1xԧ1$nTPۖMlK16VUCY-9dț(jjTNgG8 ,>i9V%?Gh`%9Z@{;V(˕zxESXs*>&`u8YĠL(s4VXEYV}d5w5YҠx9|baڶ 9y[횹l/1Pcx5С{_|* qgKqR)f)6IQ R )IqkX#j)VIRR,4)IqHqKX"b)IPf)X E R̗bR̕buRJQ#IR̖""EURTJQ!,)fJ1CR(4)J1ERL\2)J(bKQ,x)Nbc#h)%H)FH1\B)I1T!RH1XARK'@)H_\)BRHORdI/ERK+ERH,G IR$J)C)RؤJa"^ &)0JaBBKt蒢S#RI)+) )>3)H_IW)"ŧRY?IG)>c) GR|(R/{R+;R-oIoHIH/I/HIHOIbOHIWGxDHk)!)C_=R'n)bRKb;WRl).))nWR&ŭR"6)n&)n):))*)bWHK).2).)HqI&/P 8_aaaaaaaaaaaaaaaaaaoB?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\=\=\=\F;\F;\F;\F;\F;\F;\F;\F;\F;dccٔ;+9J362mMHh= uDkPjʭ"j!XD DQeDK/Lh bERB55- j$j O4Sn.:ZfE**f$A4DiDSc))DcID14PYw"h"Mvabj7qTs,j>hHpBeP!Y`j7((h Du(G$ʦOIAN#Ƽ3@iD1LP Q2=Dn2&%I cFeV" Q'{h/ѣTok"zj>@G;\ ŒډDvKh;=dn.;ۉ~EtѭDm#:z*:kWS*+R/.ˈ.%h T"ʵB ΏyA< @,MtV<81HfM|#@>iANh jUu 5_I"i-NˈN%:dn b"jj6- j$j O4&]O#K4&]G]ҍjNΦEj*J; s;̌ssHUM)L41fPY}4>Ts&ADDcx(7.%s1(sՀF\uT60 Cc.1!1؛D C>Qu6hu֟((Ds /# Rgu^D.(G%J9A1 )a K>C{ȿ ~x=;)Co߰ =2"_y2sB?dS'K/C'c@{/ضmAx=(ea@e=ÿӺuuun.Nv -mS7C}#p:u-+/rweRL%-[U"ّY[#gF6E6onMM6mش};‰q GΈYClr^x\d5kԯkx>d Wն:Y%ZfD[ c-([:ne[ۗGN[,r2hqdőEE͑ۛ#ME "E Ey#s"sEjj"'Hd{u"R"2hFdӋEN>-2hrdɑIE2L;S `F:F||_|Q^G/ƗviH})U /wAS IY39zܒWk\\J @ x7$. 8+`3`#`Ѝ (k.8>>| GcG{;ooo////OOOO{GG:=}n Q`ln~ lnnnnW....m/ XVϱ9?csϱ9?csϱy 3 883 883 883 883 883 883 883 88ϱ9?{cs}ϱ9>s?<Rctc]WWlk|]ek6vEc0ua\l,%1}@@1 ngg>뺢,Z[*_Cx"=R ZM7u8T:6e5b/ӗ3S2v; eq]{%>Zk9[l [ UzNkmүk(Yٙx2g5%,syxj /~4.b9_.z1a+]Ůpj~݌5#ʮfM_'bkl#/46b1om^-~5AMꅞeq s }tFRQkoU^^ u؍؁**ԭФntoM=uiدxwjJ2Y݅}vsTV;ٽړvc}xXf˃!0V#l/Nnݧ(8{yQrOpB=˞cϳo{Q>U{ۡ^al% o`1TZSDe&6Mg3؜_3;^l ߳SZjdzr %aA?EuM+6mA[~H]p9?5?:\ fVFF f'(mQaꖖs#u8esxv1pJzjq9Ϊ99gTSj4=ԲM OrFٜp:1&˜ppjعk,fב6plَ֔$t%M.[ҹ{E9n v2l6Y6 d?';t>x*"*)vjӮ=~6xM澡Cr qeGߦb{ܙXVb47Lܥӫz̢}fj0[ f9{KM͙bdSp&&5KH&ӓs rlߜ9!TsebUv)VY"Ywe:9ޙu]>m݇j;m7%N睤;Iw>${=ef0IIiq4q@o}=ߛ|՘ 3aojیk}IdI;hF\ ;,3ČtfXg bvk8#=ݑ*VhXlK؄,RӳGsy 7ې:;;wCCuxp><[]0an;FW;x~{l񼱛]{~_Aǔx`MΛ0{/ d=d=d=d=d=9xG9/xA>^w4RLeMsq6C=|K+]2qy8DZag!)ގ2&P"vE>},I[B\N kj u8 DnD:{k "\Ļ|y3^ }yxޚnZJVY*T 'mU&q촴T<|ߒ~t#?Җ9|IKz&I5 k{w g9I#s`5>)ãd.v;ow֝Cg3ݺ3ݚ33-T *D', v{P}y]AdSd+SM) ZUv>ʛ z&+bNʌ\9lh*GOK$'mʚ1,Wpz˞rOlKÛ fn<$l& }1%!BbAE;T!F2uf+5Sf/Lݹ#$46UA {}8 N|ҩ[z[ιfŊk]ݲyn<>;v]gʾ<[NewHQQ,Mrc.c^0:K)d7$['$BM<.s3&+wh;3|?|ŝ7^d?@ ZƗUaq얓!ZNVUVUV'B# n0F15bBrS4ԝ+" B\L K,-_dM~*N`upLd׿lg_'SeKnݝ5~ߊ)3&upƍXSB ͢IEUZ&(r<ThAFPP#oU> H"p?fS̉Q(xU$SDSUXmB m&d#H hsu!KceX040v:,6|d|QSY?t./42Pke!ѤCݝ;G[D۲⿆ûl ].֦ M{<9iÝ*D*tTkDd2:I#PeGu!yBẀ"+~%ѬrRS/(iD &$`X@]$Zt$4 6t 4zDb#QX"%K $R5W}o';Ntj6Ovwx}GW&&FL4ѥ{&[gu+vٽ\!@,iZ^ߴcѱ;V'9פ&ƳUA;n\VW߾b?\#Psv B4b#G*]<$QVuep~/%A<-3*.oXt H@2ƫǃQ^A+PS.so `aO 7AnOT( ^".߳9*Fݧ}cU )ӆ@M@b3;AV@|<BEuROPV̶gxh"V- LiM7*V'Gv+őB=#4RX5o TX4t{VuQmӄp< -njo7k Z0+$?=/.oWб(Y,3; >X4a@!Ee-*-%n5YYb`Yͦ:K^ @tl~ҥܝΙ?5YS95W @@gnT^!e[(Њ>Dr9G%;nzzk\B^)9Z#ޕo?س˻vyv^9~]/ܷsx`/5sAf+/ْxߊ /Pz`,tkQFUxUsi$OPv@>&Io\+E'4F]}pFd!]."h}:y8B #%S~Q@r:RaP*" 'ʌ'o}`"Vэ$E2>W=y(AP:R_QC#GrӋ{q])텲sv(KݵI hX{VN76&M&J5 Blߠ,||'JLgeIUHU:8׼||/UdUבA{}Jʺo&aqAXY n6ʀ2ĉcO߾1i[!gt4q~iS7_ڔ|PQ-S1:DvSmӷtޞ_]c&sP@+PVY <}gFdD0<" Q0Hzx$Oc)@^>bo[St2 wgn貦.}uOĖ_Mׅ;^ B}2ӟm__;8_yh{) MݲmS` VՆYGs1\Ӿ)meok.6 Nq#Y:ݙ$' uحYP=_pSV[y\`k+С״JESG9 9e)'^@Z-((8 {f-74sBH|*nKº~GIqnd'f+wоR= ҘcG{Ur "R||{QD/*r tVEhi_|%ZCճ,]s1!J!X %~e ȴTsx/mp!,sjd.vԴ&FܐcU}e^emu8c T[0COzT/YepԂua`ci[/i+ c! ܶ+A M{WáYK>ⵠVGʓU_-^>E<``p$T 5$X:*VJ@d {'Խ]E%#v._,`Ft)`a \cɩGOEj/`d` TY/^(j;@̂Irq\i\:i-'X+WIꡩ^g9Q=Qهz7(P2cEOR+YrK6sZ(疣4^"Y/ BMKds!9XRDNK R YKye2eC-jD bJMsMO*wiob5ݩMeJU6g.4ɱ- ث!1!V9jԙT. u zPUF =:/y%>::&$mr*GJu=Y{*#=-  y' B5|DP.1 0Z^-Q{{:"랴h+ l q>L_ Q QB.&K?~Fr7Ξ܁;MϺ:vv]ݣ{|{3uqڒnkd͹](P|%܂q7 cQ rAx(% ~y Kȵ Mz:P-.%|B_MNpdŎ-$e@Y[;s[)][ʊ5mێ3D {$˫K Ihl(v|O,e/al t /ɧPlF3?|ұ%[[õcg QQG7zQ J`KHx.ȕbh!])AAl@Sj5K.N: XQ@R9̅%61,eSͽe.\.ehd!phlőih .63Ζ$-VƜn}jCs'5zcsWW +>=c!ZDLrqZ*EDL-(EH/Tq/NSo6i(,6 B)/T5(cd 'Q `8ϥCe&z3V- :WTZjLZHKBZ[bR{msC^.K 6#٘7XְP-g)6|궕h-s@~k6cB0bT"ERUȤ*I$z!y%86\ "(f{]ȥ R:A)[6};'_;(w,r4BUf Rzw7tx2ܨd.>.+9vr#e)q#~9c2]IPIPҢ2U4ͫUQǏdD'VtUYzQšr 1}eeZ2ٷ4{[G,~Ƭ(@p/cB2#8jYvэ5+j8 < ]\{ {G9:Oz4_({&CjB U ʃ1x=BGy?O!rf?$+X>~Td(Q=C+GףfXst0)3\ SpGտU"L60' ip?T/+cG.LDZWRI!a!пxφވc0ybulV]| \ _QFxM2hM2&:{t{F0ux}((T\'14~t S X(U[q8:z5::v]i9p]"8~2~lPC]Չ6ַ&>1xlM] 6f }B g_y 8R&.#cZ6;_rAUt|G"%oՂPmZ3$3 _p-YXc$HK:3 3Fq.7 3=#WA+'/k3&$芼o u Z}]POJg.0՗C"J\vb0_=ܹ*Yyl2|b}g3aaTIvZ9iUzrׁM 0Ioak˒m(7{vtǗKMkuq[iDM`H-׮zGCZK gp4_s*xpx8lKZ6kct ^I vWm6] -y/_~n UqGa}aozvl^F+M|Ey{9WL f\|WE%ܽKmꫯih9?O{:;]l;Y5񽹧+>=V܃S)#-OwC: ˣu6IBtOb)bs ?lo~7h<3{`>~sg%4{CgY` ;Wnx#^wB=$[ǂ7ԸfMDK)nD7\ǿyyLo]bJe yE6=`llVBcL<ԾUli t\\GݻxW{·V?eCoZQY7wӊd튽0)Vv?|a$&lf]!~Hyl64`GtA6Byƻ%J[@KH4}@`w`=O}"i}\&CEim46W`?[9"] NT$ʼnffQ]Ta''#CѱHH=ℳsduGF5 T^po_Ԋ~m,' (:yQ0}fsmj2ؼJfƶ#=@1ukDS+ +ҕl\:KHy\Ȕ&SJV^+2ӸCrc2I_mtMv%i&pQnBY!-GW޴4ҠAw!Q(smheaɕT8lnEj}"e+gklD_RRFk$.m_۶An=cÓ5PW u&ڶ__ٓc`xu[Fw x{64ZSۓZYWm7Vd[VErL u]ͻC0] =ɱ|.(FґiԍaF3Z<3Q`)e*\>>S .C>yEF%E]Q-lyӲ"eǴ6YB_sέ@)KEwL&&Wv K_ CL/ox۞ڑ\ѕhɬntnh^g _g>ǿW59?-Y_lX  y@ BU !'9(q{23r%;0-WHqиZQdim?5zMvz WG/4!`ATp[YDЗO 6iT݈؊Z%9;{Ϝ9I6E !(P`D4D @V7vw7njohߧ[j[DklTEĚV̹ {og~33g~}i)k.a P]=܅'iX].8%Oꛬ xoz8hWΗ,GԻWǺO}ul p菮^eYvp,ll/ fue::p~a/pS_I7{7T\zNs<馭K̘9yƔ9y\mTzgc{LtrmwӒϚyJBO:);sV}ɥW/ }w}]&*;s >7LP;=LSxd^9>GsV9F:}4djӸƧpT~J7سW?杁'߱x܋(jkX5gg&ܜMOv{2,if??QFyhVcOI"Gbp:i(Digq_vTz_7mֹ: q1Jce܇9-)~z,5˃e(! ='p5VTM9CYarZ&8滚׼,iܜgje.X;{;w5Ks )EY\{'K 셟l.g,~acl3xӼNZ[ɳ<c:cE.Gni7vyENO|Ld?Εz9]i'ߨ{LM#,h%9 +oLdqf:#S\VuΌ'g~[wCX3&e͙5'4'foJ.\9JjKSi~*~Z/p2*492\N2W 0P[?pLb<[*8TޯЗ[JYkJ9t2ϛ`.=ivV>ۆBz/]i>.J_ô?$+dpZkrɺnɀ岻V\zFmo|e-5ol*\t՝uWx UW杼t>Ͻ .ONܩkbfI־6|uͩ5޸gM`ɂKKͥdְxX6'_̜ۚ'Oy?4p=lufGڳL#iݙoϞ1Y  EN#%-hϙ>Iry'jT!gl: ˴Mq;ʲӘ2_`qG⎓>qgM͙h̢9gn.;{=F >3lIK3(?AzPJek˯RV9q_H##9K3DudroH)Lʼ){NؔstL9YniR X|ӔȉT'O3+NӪ[ۙL3S4LyS)}3qǑ.S?3=O3zOf~tkiY))ڜ5T9-< 3;&DHi"M4&DHi"M4&DHv^ΘRƕ݌92}h!iԯ@ЈChTڡ_T[&C*.]ϲ VP?;P4oBgE HMsa y^ ߅#h'9‡4}Ш~ڮڡȦǡmzj=<64rc*+xsa+/AT[q=d|^cUhFT@+ʫvP[Cz `ERI\#+΄VgC h,"++B#Qp+WX!|{:[ :Dc9|Z3.jyň4W*i,7-ගvR.R>e`{CTп@ǖ؟J6PZ?c?B#z#47-y%:X*y[ !UPnvo9zF9Xg9?rwC%rw-Fڡ6޳P4cz/@ &T|7I]Z91@YG~ 4cimCr͘נ~G6c\Є:tܠNVqcTQ*i?vjtkA-Gՠ-ah,篡 HyVhV@s1S~yXi;TԲq}!';]!a=`[ ݠ QVꋡB}߄[F kՀ`C%#Qh9Xԣ wC+ۡ-o6q|/|G0.`?ax(nn πVPiPƎC.[r4Qx3) oBo-~h+6 oeZQ>OVXQ"AX&G÷!h!bZ;|yɳ|vxvenDvX% vCw&i5=9/P;@kz'4kW ~%vkJ|Jډ&2KQ>kA|$CAF݁u` ݨoVꓠU,# Az/WQn̡ vK< -߃BwA _Q~X Yos棇w|:7:2N"{џO@'7Vs^A,:!>@ ZAX# Q>?g' X=>~QT 6 J+˱x8 =_E(dy3qL7y3qLDS>h)h4_کK%qB_AB[z Yo!-dVjJ-[e+lԲZv#>LuC0f_h5.]4h5.Z3 }P 4}k w/C{)h҇ywA ("UAq2C[1N!"q ހzHsqnx6kl7%WnX<Z vâ̇@@e y'-B.A{<n \ߝsCHH1 ZWB}b®̇}OZ22/Iw~:Da];@v>a%G7(14_ ;nPahnЇ z;# CP;~ބwB+{I^"nC?DkcMJqĠy},C\bva {N80F!k`8,C2+yP/B^~׿-Ш~9zXuX C纡9:C6h.4Q=D%?`S@!z%,^W@}7{utUϲ,CTP| wJfB[g~{}uЇ(_OCqՆo*2h%|wC ?@%ܝ*h-F1Fܗy@sCO#^*b5V0hhhhhhhhhhhhhhAgB^M^j"5BWqE;", VWX>ke U|ȏ I!}"Sf^9"̫im,x>[mU\l4y~3TS]lwef>CMMdA1z-5ylf^a6f^f^Mkcan0ִr+udy;bk6q\`杼"96y7g 6,78y78y5[ Fl Fl Fl F|7"<-j"`u,̚VD\HkQ@f "iRm3Ugɣz[֭P?ZhePZ׈Զ G5Qq~hGۑ–lӂ(ǑgQod/fQh4mL6|V1SIC|깑Jc-I+'HBM(i$Fr4m.-5ĥWh[ Q:#`fX&s\v 8}DZgjzHBꭑzh'-̧3f7%LAkXsPj46uG1 cZSTKkƕ\uיin5>5 kl1zY+=J6Ssds\סTkroBzZ;E+";mH!cvJŴ+6{_ @+pyB(Ķ҈Jk\VcWDc0VI;n<:о3h r F=:7I\^eN1d̉DzmfSkO!Z!i*D#m2WW=)Ǐ[;gəaK҉jT_Xɨq-J~׍/{2Wi9c,FM^'©D3Gjpͦ2-ZL?9T?ev?j_F/ E% i͑Qp9\ 47kAhD>RnS l @D&-RPتmm ۵hi k&i[DkFh}#lkupX;?m#Z6QEkA]myyJcK0˦0ZFAD t۵8CuQ-ФE8Nт&jުm l C(N\]_,hMZ] omZc 0lXۨ %@G1V9Zm{mѰ%15ԆX}m-pj%Mo G[\d8p6|fluH5cMH-uES5v^9-X}yh j 5/nmnF̦2毖65Iq8$Z@}1-ֹ/\0`~-Llo5Mu?N1  €d РꛢZvs&(pV߸E4US =r)bZ"pX/)r$*%%+DX.l`smQ\kxpXfZ(e`}XZ_\ kNh;o6tO\x~KUWm/>#Ch,rmֽ_}vlo'MB{ӗJe,\6 yLV+|!wU l9JMe#{mfX5{ h6bG,UOf+ Wr/|u7 +7y}?[?;.}Ǖl[)E<|P)M\E^eT~,6)*eV§<&S"ZCXĄS'[E(\/.+!VNqC?bP<RW7i}c,7 ``Y`\ ƥ`/c7q=`0%?/_XEWd0 Ƨ0^ q5wM`|_>0~`>Ɵ"g` ` 7N0'GXWW.,iO`|KJ0`}0~/`|]dg`\ [8 ;`|; Tsρ`|7+(9U;|/*00 _ox/3` ]TbZE'|LǰDtZ``$%0~wUEza5_eu8n~uk3vߔd0.%`OO㯃q?Ə `|uV ~>њ`,{[`C0~e0~Gy@q2O`\Wqof0.~0~_#`<՗ rb(` ׂ:0 u`kz#>0~_7wU!TqH] 0(_70g3ήKc<qd W`| `+6f"0^ Ɨ~8oO``|*"W(Kfe-R `ƽ`|;Ə`;yBsâF\x7m`C0~I0~_#`<֣b#bj؉uyzQܦրq'a0u08b,SQKr²F]eߪ>xq97`C0ρ`;O`|10*Cցk³=9`qS ׁ-`|'e0~ ;S.1żOqq9o0[`0oz%6SFpTRQj"naMt׊kx7E0~Zܢ2OcY"Y֊w-{aWn0~?!0,?욮.m===5ë'drpO7^QQs8bbliY,v{wR: Yvj|Q=D<#;vnwm`;喾>:hWu@^ CYk1-nьW9쮮"bvW֭]Ii ^dnꨧBvdpiݪr%$rlF>3UfWKFVk[<^ ӽS X`]hEIxqTvnu>.Ȥїi/fJԬ6A*U=hQXCDMe6pokZb:뉭d6QX3WD&v0gxj^ M ƁsɃ ;ʆnF[l+ kwYb{<4qHr[n=T`YʗK2#_,I kFʅ~ KҾ0س-r`%oqPO8bO͛:f&_fR/-6`)a' Ѵz4MX:F>gcލ̽wb!݂$}Ўe]xDjSZXƷ*쩝/+je'>cc{ߡr;RG_{~Uol`{b498dpa\ l'6>'#8b ؛fp qC-7# 8ZǗcn­4.[@5ɀ`ccAnT@5` jfa6FAS 06p0&#I\vsX.;c/_M`V/t]م:GbFP;^dKy׺IRƯ`mnً5Y5pr;͔vp]::Zz|\OuNG=j䢼!fhcR.R!6U"HJvpqG 7caLPtw3gڜ9wRfxlnچ=rUƭVOTU/jr9]TӒ!^ٮSCq}b֌#1ciNtLNΝc39pl$r;Ta,߿WF,yhQTn3CKLexphI0`I \e2i1qoTǙ?쑻+E hr{h0E;ޡ;/o q2:fUDEGֵxkV沪금UA<ڍF3wZQ/Te1\iU̎;1UyX;\ZVohw3c&I\Gv&1>7G1hޱ#cw`ئ]snOnnD B1B){Td2Btȋ]1z5 5'| OO2b"қcO&{;c#nS 1`kD_w,^\`LJQF0NQ7Ls%H8jI,2zMӨr@QqQJ)mnKXiv}}n2v0q8T0 ү qq(j_F O$cl4d8[myVp}ajcg3:öLrIu u}u}[umJ|qgeu3Kf&%¦," eWQ Rlu "d {4*nֺEDX[F"b %'!y&#R;g^u}ogY!de MMm'Izɹ'*ʥ7}+X^Pwe&*C]RM|ݒਵ$eN ;9o>_?Qzcm69? M'qxEL,1T ʟIV=>m1ț:^řzM 0&z݂ r&G(NŖtk=Os;=YyygX]]mݞlMvY'7&7Z!,9>JX}( ɝQYw~K^QFIu/r2<(}(ZҬ+zyՖV;և)UicPI&mhV^e˾ΔVʨx{sKNQWKQS}(6gڴ6r6_Į紊xi8[ԧҟd|Me|MeZ̠tѵ?ed>Fucn[︬D'SfNݣG*zsGTQ^^ɽ[Rg8%侯Kʜ_U5kPL8y`-٠AE{R ^50.kmk/;w##{#? (noؚ<Ǝ3\7fc>vdKU^1{\!sy6em23fWARadˆ u94C" 3fV2NaB$g &ܞyGIJU_un>yzSgM2Ŭγg?<;vlcvd}N9d͙=g欝l8A`ʃg0oʼW1  z/q /Tv}s_ޜ]_.xQS=,oX\QKZnɦ%D\xgF.eN/o+^9'U,8[T?'c]b=ȿi{coq經X_94+9grΖXR ھ@?\6^Se&-z52e:q}gL%zQ9yVc~}|\A=z(WG\!|ި08pv$Xӏzxu/ɣxLO~7X>P6w<(}\؜ uYL̩ȩjeUt㜠,j֣^mޯO:b3§i215{c~fj{a*sfTI~vevunm-(=wߙLMmҁ0E^ǶG.zԌFp89L*e>:RMiSZc-Q˔.{rS)FMV=8m3abW1RsrXQLTWLS9F>]Ljp]QYQ#\ltccj#H۬Gܦ3H=4brR4'=|uY~zҬ9ߕ_?j~claej֣šf:ݚ( j5Ŷ_REώ&陕C#fG:l4bT0!'569U-jFˈ=㙧FnPi9zM[t8]񒩷tW..3(1WS34u*i|cLi6.sU+rZiq˼:jB}mIum?vy\V{'jUzZ;UVI@VdۧU ~EnjUUJ=yZl->q12EYt4r^+uZSiz9ñ-9ñIz!FOta쿄]V7+nժjLRL/َ~ol'W0w:v6ZRBנ =&BU61BȆE#b ,er9%<Qx 'IX ħ E d![`" _LD!T+LZ3d_o_ EP %pJPA8=Zȯ Oj bWkx)r<0_V:8Ɓ6ŀ6LJ'hC=EGg/[p` ́r!@#x^7ux:F@CT|1Q!DGڠ gk6#ۺmגmmmSȶ1dHZoST+mU5՚`;Jvzwdr*-e\eWUr^\E{HP֧Tk(U;\o\o\rSӗup[$kY'wT85 jFbZV!]zB\a [lKړ@zW/j_u"_$gyYJCG`< WC]^W"(Ra8pT 2(7 h(w?i@]4,,WosaB6,Rsx~VQ3g d_-׮zh=9#<7\Sa܋_VhG.xܽVW~ϻCo})z [#b$3df A23Hf $3]IEɴ(%ӢdZLE!c"dLyjĠW"vL!ʣdM 5A&Hɚ Y$kdM 5A&dĹq-[TWD(GQ=QTFP4T bDŠne‰Ғ]emcWB6Z0~EGKyV4sbd:d:d:d:d:d:d:d:d:d:t ceWʮ"lm6{6kfMڬI5i&i m6D fCm8#rimn"+G;2vdmؙؙؙؙؙؙؙؙؙؙؙؙN[ CmghsEc\:c\:[:[:Z:m%ؖ֕b|K'"/"G7RR9_DΛ|10///]廬GzgOGp`481'~d ̤b1E2*e|Z.Ϲ_u$>͹_pX-_G#9#ʙwee p!W+r~y!IDGd a6́0`oUUvՊznhk9W.ڷ2KLan,5q5\9gaNY?SaVclwLSԬ=5kOSԬ=5kOSي3gqf+Μr3L/gz9˙^r3ժWrZ7J}3=Lgz8Ùp3=3@$w5sFNZnp+&%1wKb-)Q;]rV]4k"zB/ W@ JW0~a a0FHa7M0XfȀ ^uxބ lwaa3|` GGfk<.,[alCۿŖ a5t^dVg&Q_ vYl _№"6R!MV8  &xf;b_눬p^BG3t bep,srI.8ٟWo<Dye.!$B^H+.v]"nqA{E]E]@WݩSyuL&žwag2X+ a[oewy fʊD kŲ88[㉝ȡ%zfԱu,cA X8Â:Ա^͹% ZCh jgsG@W2b9w='pp g0Pak:F p#a q0n j[`" 9L_ZSz9x\X *xZYxEX /Z7*&mlF@Fx6{>6}yZq[u [alaB"{Ԋ܌j5jei.ZNgdzxvz<;=Ngdz웹G>?ȃgYm>gW > /'HJh% THnjYxJgxde$<н#GAҎ1LJ}yz9Ol_xPOԽ/d.wm/a8泹spo(a٨{2sgqfv`v8 ܳ8gqp5cdYZ@KH4h\"BG݅y\=J*`u2z]qYe;$/Ż  B2\-%J$ZCh =t颞.颞t ]+tdh {f +y}'k` `뛁\˔]DltM=8^]:,ٴky}^;\o#cL^6& y,Ѣ78i$!lXxtؖmljUԺzi,FEͷjDufin}բ [@W1ru̬vyAf&]IQNz 'IX OrIxxK^W7*^ x[ {zɰQӈusBMoZ7ʧ^+zS|Oŵ8?u;~H5A ԳRR?4&`2xq#7~j ])+vԮڕRRg8?qƏ3~g8?qƏ3~g8?qƏ3~g8?QJQJQJQJq/G*b'*cu3>#}鞨FߌK ډW;j'^D @ @ @ jPÇ>5|C jPÇ>5|C jPÇ>5|C jPÇ>52P#52P#52P#52P#5|I.4%DBˉpHCmJЦDEwqka<'*wm`p\Ix!.Rbh THv^֠a ֠a ֠a ֠a{Ca 0z7p108,f0Yk s`.<`>, `DɜC5*uJYO4L\BNʰ#8FGDP9QF#L&a0DP?Qԏ~E(GQ?Qԏ~E(GQ?Qԏ~E(GQ?PBS O)?(a0E"rF\Q.QԍnuE(FQ7QԍnuE(FQ7QԍnuE(Fis nr{HF]'l4qLh}Z~2X}J>qYKfrtYY}P8 fMdw-]KvגݵdwRoSKՒ}d_-WKՒ}d_Y[M- ťh[Whlp"}+ѷR^dm/JtDJtDJtDJt-DBt-DBt-DBt-DBt-DBt-DBt-DBt-DBt-DBt-DBt-DBt-DBt-$ɩjr&ɩjrFJtDJtDJtDJtDJtDJtDJtDJtDJtDJtDJtDJtt8XٰJw[(X?gƹ&s_ȍogwrvw}2w>~{qm"v2]2h˝nVs TD Z7LN:mNpAw}Qە[[ YIs#!ޣ}?LfUkk/jmݖmVmwn("ЋwPKED- n@B&; @ @~5SgYuxggw5kiK{c?V{(ߎ>ijv|gE<}O/U9*rwyzgkxN^W]%s}^vmf ٛn>Ѱ[;;::O-=%X2\ 67#Em֠]]I`O+yKay%^-cU'Ktl-vޓApubp\>q*_Єfp[_b6;n&l&6mu-\_^0Dl"w{?,,u pQ_IVuJʄ jax)u<syzzkpcHc&u {S(>$FPde&ZVm"oxygl| ?O|'>x>+.H_9E%ĐD|}vHŵ.CCzxD^2LNkр인 kb)xH;S?X}Obz5TQ6}s=fe'*Lw5&$+(Qb(1yɆkj8?eLs88 r10G\aE 5C>h@5ֺv܁;w_Ο(R/R/R/ Lίi6tOaGNJ׉(e7K`?ξΞgαkߓswٱٱvBѮg;J;is.y.i ^Oy?K1XKRĄ\{osoy\\.s.fmɁ[U'{;T/6xVYk뜑osbvN TX?V\^ڻ%^/;4/͢y3xU[XUċ"j]$R7"]7qh(7.Q J~AdYD:>L4])EFADl`׋ "` 6 ,^kD-/D(D:,/VV+ET SAtD:iT RhTQY$4,ViZ$]V EfѢYdhEf+UoTZhRVoR;o;^ v{^ۛb]l7vyx3u\g}ѧb;j5Ŏz:OkXֵֺ-muumMg[vD]m-&X v@y^>Oxy7/Sx޼fl޼f:Zǫ:}j٧}jgoÛQ-ղl{=\ko;yl,twg3lYm7:q̬v]N3FӈZՈZf4Vi5:(ֲ1zڥzڠ z̆^oz[v^ozۥz;-vy7y7.oXnP#/w%fDϝzl^qWRM@ v>4:d4{tVzJv8g_j8OӶ^̰D 44u~"X]Zw7"1vF'j~;;6/H|IY]l6?b츚Wc^~;cx1w#qcx4?Z.38h|aL[iˁOp}qm3mƱ86}wCݢ-ݢ-ۢmǖx7?D;RT͔RWr)Eߣ/|2#ͱ+Fc{sĨ*eѝtuʺ^=K_iܫUS,7Xi"H13Yj.ݍ5kZ]kb4+YNJ숼u]7W[:l9 Z"G*Yj0_3V=d&Vo*}K2,d[Vnb&j[YXXXIO[YuXuXɮ%x^eҞ(A٦Xg>X)dʮ,nMkd.z[kѻ銘&ݺd.٭e.e6#id.٥+#rw,guFVI+d)T"B=񩨯O>Jjgvvg`'mYzSYwxnmt;;;K3V2,;ͼ4z,Eavfiff}Xow`ݮ lK?Km`]lmwCy)`Rgz+>XGef+:>QUSK1 kZ)k[i e[}V9+::בEJ M+uJݴR7L+5j8s8 /K2.W/*.p!keo[xݰlß~X|,ܓ|Ob,&{*)Tv]AeW a8-ដvlpOap?èx{jROՇ)Oİ0}N/O0%}9 w'c:ZZXtkx<݆mt;]Y+H)Pbe2F5胾8gs}8iǙ]J[UWD~ѡ8 'U\"|&໸*~ay:,ԣKш!uy1y1y1h': х=a81G#N'$7d+ڰP$clvt`T,NEsbAOi{=m/ 勵x .s2IH 7V-Fi6JQ99Nw8f4;^{^{^{^{^{^{/NþS(U UA⏊ oFsѹ*cX>>CP>>FkaLχ|8?"­ o[܎;rtt օ1VtcE﷢3L+:ӊδ37H 8:Ϊʦ<8$)Әg,1 1ssƅao2Mƾ7&cd]a{qx1aL#G>~'1=[=7cnxm5Vw]mWYmYmYmYmYmXmXmXmXmӢ}APXb=2F,[uҨ, 2_:'5~@(P @(P @(ww%F Qm@%F Qm@%F Qm555ѿ8 a8~Zu> QQQQQME`thM3iF4͈4#fDӌhM3n,6˻n,6G;fCd!GEѢhQ}4M4}y>OiOiOiOiOi|7eCN&D9('dLr2QN&D9('dLr2QN&D9('dLr2QN&ʩ%j     jZDZV-Q[(SVXed,ŲGKEElvyh/ Cdd]f;Of*' UOJ\f%7F}o~K h,&%+t2ls}32rYY.+ee,岲\VrYY.+e)6Jn(6Jn(6Jn('!b}U BA&F&˜*IF,gU ^!ĩe(G"YEAEQPQT?+gUE!u{?\;kU`0eM}>H(P)ʣ(< *ʣ(PPPPפє8GSc$F!jZjZ*bz6OI(\72 HK4 c}2r)kͧGQ9#U תP 9pm(&UX] buA32C] bje2"ОW8=k{*S b6y!V;Nɨ!b5Do/}`Ldz"VOꉘ Me1%4ʨ-bE"V[ i4B^ >-SMT i4ZA-͠FSK~^Wy~^Wy~^Wy~^Wy~^rTWQ]9+Gu娮ՕrTWQ]9+Gu娮ՕrTWLc$>j+#WjصkC0? mZBQh T>UQ4U[!(VX6KEEy}ShόX]MW-R|Y/Ke),ŗ_R|Y/Ke),ŗ_R|Y/Ke),ŗ_R|Y/Ke),ŗ +2Zo0ߢ.Q- |H%ዉKWk{aIl&Z#m-awtLtW[saivX6س~O? zQͩ. UKFM|"cqNIFXUv1o[00?/K 6we^܇䰲0, ߄BoC_bU>>6J}ݽ]vDwH'v%6%zB*wSbu=Ód:]ɪަd&ս0(Yz /'G܈0c07cnx.4%t<x3 s=fa6`.Q?b^ /,īx 6F ˱yDMhƪ0'J*T?CpNdhJ}* 87S^O|R2yE+0uX%XaeM؂NtbªtA8qQ8+4?an:LD܃DhH?VVU*?xE ++p5~ØVVEaUW}Uu MBf(᧸#ag3{~܉0 wx3>܏ &c ØG0 3 Obz[/PU\"|^p c&~_V܆_7-nwaƽ<ɘK>U>T\1WoK,>..ƄX܌q{BA\P?sAcs~ϱ9V?Xcs~ϱ9V?Xcs~ϱ9V?Xcs~ϱ9V?Xcs~ϱ9V?-\e2wC]ڮfmWCC;՝as#WGkʻ,/MM,/[d;pSpSpSpjv5\~* ꧂)V3jXb5SFN&jXЮhO JN|.Z@ߘߘߘߘߘߘߘߘߘvz^iQڞoM 1ӛUKs MHS6fDž[0>l8Dן krY:x%lb~tEabMJ"H]_A1|^m/dRG9k]]J/\D/7|}ϹRs7q=gKK~nِh}s9^(~v ٲ/ʖe˶wo)G9|3Ł=E1;>lI4 {hs-~ۥ.12:LGhmV98lQtREH!JT!jdQ>z$:4qw%|:u:А J 7a4`,n8܂ 5 5 5 5 5 _PzZeY⯙^nH6yŸlͽ&WVW2W×ĕ<1,QV am g3Dў8Z?gY͑чkn{?pHVV,*=R_Bqwpg;cwlDDQ*@7]vWm(<͢"}󒰹OZW=J;#=Ye)O>OKoj+E_c>.Q\NO|O"~?txnO&nFcz=SZaZ\XnW=#g&EN}9}.ǕIɘkƙZnc+~6#c{Tcd]1MA%[7=Gxb'g}1o,ycݞ\_z*W]w9ODŵGDmbLFd<\d'WuiJnjQT.^7L]ieVzw**6Oz:xr1RSưyӻ{htA8 h{f)Hqv~;rŒW̄1S]#pq\?9jyglyۭB,VD6 {=jEQ}rfBѓ44gcN_BAN&:8U`GNb֚V6rZڲki:v=L[ei7{{"̦L1Uxv2o o31?NXS~oŚּ5k/嗱J~5;.Bޅwa-v1{| ?Ɵ`]P>GgYw>z0/db7Mmocvl67' >JD(7"UE9~EPTbQSfKD]q"[*N'墾hV[%lh.`D тmgFq8mEY\.f[E[щ,GtqEo.E_ї+1R⁘&xG#bx_|ʣbX*Wu=KTo5+@~7{#oޏ>[_'|?j_o+v}>?CK%n$xLei2KYY"TyȔ"KWe{9@4Gŵ1 ʡ9\3q%NJ9A.'ʉ|I$SN9]~ zʏE?B<$H.#D<-NnHqR*[LQ5TC:]5U B,Vg"/L].rR])֨X:bE"TOUR}!qyjzܓj9ƪ^{jSS,TjBdv^kuPFPû:]]4 zMAw}"hu ..:{]m˂+[kkAwGpgpwO+}^``@x0 z#^`d0 S`x= v'^oh y!RTH{BtobB(˛e{/ &;;zo;;{oo-|nkoz]{^^pp?oVx`5/5_-e5HgGFD^LEl_J_:\ZշdHwe{dKeuo,'eɚz~Z#YG_$l_z%e+H^?_Bzl岣^ɛWA[DI(^TʇA4*&E!Ѵh|*(fEQr\_}DN>!_>%FӢFoDD7G_oE'F_3xB !9P!!S~'ax;>%T8mfYmR=_1cط8ĴC97.ߦn4;gm8>,@YZ#m̽"Ƭ0[̷(av]qm<-@#f69fMl{7XjfBw'P|9UfvD K,%iy/DZ,ApCϪAg Vɥ~f晅b^4;Ǚ$sX{m.;|nA>7_x̕M1`%ؓqml旊8e'|;/fD)n6')Pfؖ;ngFykwoI }yte`ffQ15׷ipf^=|~m*+REn\yŦ?"?dļpk}n%dq_ oQtyrQD ۏ^GXcrE9vQԿ66%A1&ZrG=^ #O"]HjnNEЧ[--: 3*>.?O|U0~Ԛ&tfy%V4=O⣹t6m {|o~GԞ!=IC73$ẁv8fS7Ј>Ԙ~5Ԋ1FW#Ztwa/>|= &dmsw=4IkPkpzJThVgEGq={Z~2}#ߕҷC9_4Џ֦֦u)-6-Mw666m6m66{Lh6K6K6+&I,tX tى kg $2A  ʳ.AFPd٬kP5 dj l q_k&b}"DatNck5^9`~l5 kk`Y[am 쀵#AkGC֎@RvRT+";-V3 j)B[ LثCUi/jQuʁDq$R8N"5$vJ]!e2r)2JJ*WUWC^+:y5kY'N^SRJrب,dW!O"9Nur\r|-!5!2]t&dz)1o[G[mIY.o7%z{T;L'N3gBϦTu:"\u.y<"PZV\.&ZTE?y/Eo 3 UW$ϴZ՞u::qE 6]U7PQWսꁒCO=\Uo>u} RqUCA!p5yWvT3qOfYhէjZ2PL@A&"SZV֣ j#UQfqڎ6T;KBn=jZWC~|@@AJQ!Ԟr(c_5)Ӣ B B B B B B B B 1@A-g1QE@#")9,ʐ(C@ՔӿQ^PTk^!u^Oiz@F;[o[Mozez7xٯ#>H Eib QI@GC0Fph*R@I nT薁B"x(5F9U jj@|tj\/D_@PKWEC )ɢ!%ތ0¡4p8(!>C>Aڀ#_`9A\\|n>p8(u8X``yif8,%Remκ"uC؝uG8 (PR%C@-JFJJ&8LLf*p0` ?QC$ }a2hKE;&žL}u:;,f:$nB#I e8+ggm?[gH8 8 qn¡t薦ڨ6Xt2u9t+--֑A݀Ս.-q뮺r/N: ~z?!ø!-C IP,tF[ e8<> 6EAy$NȈȳ߁5I$9dIA|Gs)e"*(h(HÑT H2ARc#5R;*;vqؑ xeGщHv7fg^=]DWNc3{Vewy7WҲ3\؝[ [l%fYWpFzsg]%oL+XwaiQyr68NUf |hjKGy3ߴZ^M8ڦfssfYi~FJUnlKu]7)g5V N&A7=8Od|K/Q=9]繝3Kq<\r ɏP{Z*$-_f9c2 i]7c|I孢Zc([-rjaj}KyZelF|} Ռ7uޥW8aM1ɬ89vHNsa,k~1ԋ|"܊5%oio(pPf>ʭfj[)h~WxՑkЍc\˒Ssc@\p.g6bX)nKQ;ܮ7Jn>+]mRԷJӷ}1o+w s{"ư(+TKȑ'z۟+s{q7[ ˝YDoGo>U<_(_)qEө$%M%{bynu={L\Z~;/E21ߍ}f}?hr>Jj[_q"~P/̻x,N/Ɣ.z9,vYicveLw6Gxĝ}Dv5.!6̌Xw_|2JMѫ_4]>s1qLٴyP0xnfq(JC-]*㟣?5Ϲ9OȰ,/p]տ{C{s_'s ՝bo{KȅM;bCͯ1Z)[wn?+zxn1zaƢw(%ʼ7|[q)6BǬǣ%G:h}vө+ɒ+/΍~K;'w]/yVKD.gٛY.\j z3o-GBvT/[bro[ȓpry\UEj>lujz*gJ?0g8er_v_9H-lܜ17ÿ2Nɭ/w62sb**UV}JS݌5/y߁cV#i~׎r+o ݪWy W]YfH}CK7$GfK|;v]5?2:įb _1C'_MZNn-yK [>kt4W87 ʼU’?{4fcrZU(G8;2qd6ۡOl~,fiJw6$`iosy|ng]S^K/Qژ(~b..hAB[rL7w⣶/GܚsOsGy< }_󗨽Ϛɰ՞suu8?i>q oĥԒOm ײ2bVu*<)߬C{RȾsW=]5:ָѤb}YfNGBߊTpb_;uw+L/sHtD)&6\\a_6/ͯm c7bLZ_P-7rq\G(]/'ϴ\7+.Gѿ4jTw)=q#6L_󐍡v[){; Cnr]NK+H'^QxEֽxBy67Ig8\>cs%R3bص@2Rg睮N7yڲ4n_gؽl0fC(fL띎fYtNGOw<ސ7w:gO;-VwޓOa)Z'I§j>ϠM}>?i ϡ?\>vo<ɿ?n>ϧ|!_HQ/D28s<Ɣ08rH4bQU.yKr^咝?Vc:сʱ4eXo$o7^ zzc7I~O-_zXoXoأ.h}'76xc㭏76xc76xc7ƾlƙ=ݍֻWֻ9'Xn]/݃U}O}O  ӂ!z04߰[z_[k|Vv0|_ E,X+ ze{W670!YlYlCY"jPP-:IT55BN١ơry,Q#tNQ7t^qbP+Q/:F4]Z#M4gfֻhi 6q&[o"G:=1zkj7OX6MX?mgyiO~ڼOWi26/iIzWiZ?m^;iZX?m^Kͻi.~ڼK6rRZ/k޵˚zYn^ּ56eݛռ$&R"gz ).(Gi}A]QMJMI<"fCD u2(:D-30%04{Eݩ'^5¦a5(K p=[Zc au ,NwX\X%@str˧{އ l2RWRFl{@;ԮPP{2Ss0|> 55c͛;4@OKIӹ$v~WOJ| B|*UӀUWq( ,gE8 ,Y5UQ  "]S!2; jc$\hh93؀c([ݷwW_ྩ>D?:{H 0J{#to7Rgq@P7{20̠֛(5 5 i; L򓨥_/CB 0D_/lE"cRPH+T_鯤(j$pS12m"oG[oQy;V].Jw߃=}#~?@gC(9GrJBztO #" 2 0%ʈZjJQ2A&Ww,tg ,+L%z@ʪ&ڲ6'@#'ʺ O'[OCie}4 y i;⢮Ʋ1&l*f<Hhsy) ^vDPK'y"ovy'w^كΒI_rZ[ŵ?J CˇQ#<*E-4P#P:QH-GS|V9ɱr,9 Ej`}J*"|MBJ49 y_oйM&J~Kr:ΐ3@O,8?#_j sп_I3+(_˯ў/磅?hBN"j, e(y\\:^n& ]-wn{ж [=NELRBuCMU]U\SPB}U TNAjCtj)fHm.SYX !t&ЙBgB !t&ЙBg 3Q3!D'Z qLLn}IAˠ%rAsx9!DD9]9;)1+<ТZТ` G|@0thTh4* R`X0 W)ЫF2*1^ ^  4- [M !4-дBB! Qˎ`ʁEօ ѹ!bn50 L! BFBPqJ@J %QPP2()jJ )-/~Y8ujtZCj_F-v -)/>}{xȟ@F$ )f!+ߏk#ُ u0*BWBvW= vFg<S|?[Ч.G=SGeG2FB2Q.VVA&1Re[ekeYX8#/ _$+|F,yЯUɾz3*Ųd/(F%*vTohG P;I޿"@ƿ0/?C&$dR'S2z2AOT^DWPTp_P(Q$!W"P+_S2sB߈?2K%@+ӧ"GNrpz%y%#_W"SOE0zJ끋劁sSYxW˹rOx=V"V"n@n݈:urt!@n0燹n8׹syʘC" |2Ȁ/(_cRGdSX2%]E]"P*[ݩĒEt[.b-".b"@1)E,]".b ".b"@dtS"@dtStD1%X}.b tKFtS>0%X2)?>0%Ò?La KF0} ^A5*5kւa@W?ZSX&)@ì!X />mPTE@oŐ/K⺥/%Q| 0u/qWhM0o&񯁒YǷ߄Tj^ Gka#U8upL^T$6qŻK|?!gAuN%jX GY:&rT8߁{{Tԡy; E5:}}}?YW Z3gw)= L`@ìB 4kTB ˠ^⊅j C:PlLnR`J0 "%hM:ԋn5zѭF/ыA[^tQP|yU W}Tҭ6tڑyT0OyJ1ULP< V [ *URAP}ꓧQ<d d'UOӪowA< [p4O@}S&2)V}W]TReRʤUwLerT&Ϡ2yI(̸scc0OU'U'aP&%IPΫ~['U OɳUHITV]&y4GpYP&٨LJTs9x_OJQ|^;p: VVȯJMB!B!<+ J-c!vA8qbbYIiYc<!BIi9Еx-4t jF c;Ǯv| \`G AJ.!KKXI<8D*DDvll0Ǔ.-1v,+<6Ǒ.'"H%s bw|xTA.z>' NK윏A8 qEs7{t-;ܷ}""""Wis! _`g=7mq?-ʌ? *?{]9Fl5mڦ^;̍CSHAU[R2eW84Eo+k;[.u4]+GZ][[CW5} CWc81kkN5#YOuNig}uh2.IC 4wfВv_^W`b#; 7>ttMH)WDQGYIUwoRRь$cy.02WoFʠy8wK]}-ooPwwo-Vֿie}R^ך$ 㙀5S>uTf"|ڧyAuT5b͗iD]c-~TյZXamgma:k'-ix9N ifL7]Ai/[* e!i/G/,5)5+ޓgx.{S{ 0{E:ES_KgW,MҤ.MZZiuiF. .swS  rҬzɢ.[GauMn[}wGyVn=?k1I74b )Y"꿠,n鶆H\FeI֋_l,^ޒѽ5dX6ym`u&`Kl˨?Iۉ/k,iZ-1 1ןɳ@j+t}Jsڐ2mkBNvԔXH7;m40~PnQ\,*!r>~ Q aľrܟ=i!Vm3y(m%N+=WmC9礿Hm; Xk9l9svp"f4m)#@9@r_ѭM+h?AF\Oݩl`.`98wr_-uv_`=_[e]kJў lFw7;셀{I r@n^A[W ]k= (`[7K{MW@e{]@Xk5cvT޽.@}.]uhkH%H lokcpw}/Y 8ׄA>t)TJP3X?oYn4'U,̲:XBr@Ira` V\p@=mgkT=o?;t}rj}:130}6glֱQo_ l%o-Z] e:GԬq CbGwERGixo*jGe3:G]༮HG˧+ю>۔nC:+:8:XyRv(B 8F"oE[G;ڸۥu:n`v tHqlhIwq"cn]CS#sG;0t+qq219M)Owq 8A<ˀ3?L f9S u7Yn9s8wRnY,;˂%1ٓ 8kUwIwKlaO)abQߓlS0SZ:(9uC_A)~%#[ T:MXq{O*;w49}1{zZ! )k aOss{tQyX;c5P'>x l {=E'{|<{BCRsfQ@8p Γ-2ÞQ6y~tfN朂3y ;WlU"8oq.ow.{9ouཞ..v5.U9J%fž3PZyW^(gV* 8*W+tގ=W]塢뮪Pi]m{\NB=wCmfBuyß\%\zi^rtMw٥{TǟpIW\~`g O.qt%ـKSÁ)zvF}k<6/k]p)X` -GCt mԷΆdȨ׸CzBNo8Y7\Iz~Sxpdwh~p?6,V( VC1֓ҿ-|pgxAC w EGùFyp1dSD8czʘ?%s;"X)a,6_+G 5 c}R7RelHq4;=HQI4y2"qzyۓi3<1)t7{#㨧*7nFDNOCnix5Hxbo;._fیO& W-&(=&"?,?¼%?&XcfL3ϙwymi̻Y-51#?һ}55*>T,38\dbO\%1}ƒ{c\=*qq$ӱY9qoq]}6''V0 uwqS kpWAnc} r(w[f7+2}G|!{|sJ=t(7T~SR%KT~OyX<.RN("˦RʔdSl=|1o>NXNf@ɦOQDEmXKu%Etކ91 FĖ1xB<]7!/x))Wir[77;>x)w}Tj|kOa>a>!,Tt GNT~aa#;Q9/ O=~^$ x >Md$}?Y*cdq$ːò Y;E d|*,[V%"9 cً${6ϯbRQ$)pE*\%H%Ub-扅‚X"Ub 6mb(E(q8&nw{1qqB<%'iqfngy񆸸n̬%̙Yh·ERsxf6יik1kEZZ5Q3߼ռüۼΟy@xM2H49'O)$ƓJh*h *RGCL&_!$tBKyGG#4 N|ҋZ0Ʉ ?eIG=FC%@{Z'O|!&#hEw>G~"~/ Y,2JR$WRW3cqq>Ya >A꙯12e |43}Lyq1n 1! sgl-mf|cNI53Lnc2?'z柘"F$`( "_>;?×ޑ+Jj'x]?wAnXY41q ,d<11K4MNΚ&MӦӬitôh xO`Z&d 9BP$ BP'4 -BQ F"8ˆU!A;( '9pQ, ׄ-Ꮀ,nb"YbX ebX^l[ :Eh[!h6q'DZE/,_KDUhX)X嫱`a?UUUU< <Q\DZʟ**)2 ki"bc`?,sP,)~ #L6=*uX| X5X/b5b5<?}JeF7@k x:ne.0;|/KN lI~alPwu\#D D;F6ʅ8f~Ti2j?3y4LMfacj6:۟Ӧ4"k3lzcL&(Dfp=7sc+nmDt=PQ]wfXJ%h ZKUk Xc|ꄹakZb}Zcg-Zk4gxTQc XC3wdŮ}k}k}g}Y{J=wooy}n", &#B&}LA)w垨]Y~) ]/ c}7o1!=Jb b;Y֖8C%B\]24Y\ C%Y;hl(.ʽ&&3M ,w#4dvh]4/TtqJ#%JSR ItqxPp B=Ѣ⒊һ ZN+ *](YZCա=7mgSZ_>Ey76օ6 5 E\PV3Xx}SiO>p *9:v5Tx~<'xqRO j H$k|^ct1ێp,M%UShW1 N]XWC7߃[9~_z5Fxyiw/W^rPx?%?-?#ß{Lx/v?>| y)F |o 6AsmvM,"bⱤ1/}Ri_EvVGLlE7Fӳ&QM&mO&["CѶy>~{˴o;"#XM{xJ_A6u_ 1}'Dc-" &cjʫzH31qc8>HsCcy=*,"H#c# oLG;#伆y/uKדfdv@X0EXuE8@I[#/[\?Z[UO|lp (<灡ҞO-0< ,v"Jp!0!201Rzvjqb8o'AsA-qbqs>r,>37+1+w%XVemLZ["ZWȦxP"[Eq@(:(kϕ#HML-51"PrWCt9nl& hr%ڳ8]#\ \f9ĉg,?sV4L?ʒ触_fZʒ3RsңEFF˲h,7{ ' &EGr<.DWB{a課9ѵeE <^ee6>'ExGXlilEP٪19cshsن)}}ls{ٶhkYm"YٮhbcY]*5Doơh7c19ֿTlPٹXJYk,b,#Yv56ǷFl<;Ϡ+ق)Y`Fl~03&|k178> b?Z')%-Vs@|">8+uscX&yZtWo@JT9])g9r''kU(wWr"*AJd(eLQ d}MUIjQ$ŧI/rX |?|{{P;T=`܃~=h|J*nCmø nCqnC }6464 pMkI#4Sy9 /6tge*y D;ɸ;ѯNB>DƝhDNwq'jw6wt/ 22܉7p',nCJnn0wĝp'@\)@pŽ>Au}DPvςoNX$TUuujwuRIoHpE*B"JRKRe%&HQ %li~E~3Z>{1?}_G4ߙG1|~ܓ~'7 "_XC~0`;{@+*&a4?YO4t G0/bFG£hFB.F3[QU4٘ј1~B^aK41a>]YXZ/HDL]BC-*lli-Izi5Eچg+/RkE \ZTTZZ)5V]CM=e+jF+;{NW}(W\rwֻt$<:Kœ)y5Pλx `H|d]=!캻xzC$1RǤf,%SR*ʹ#/R.E)W *RɻepRO wI9E)"IEj3Ib9S*NS1KHj!໅}LHȳ?GoeIE>UĞr=m7\_HwAZ;ci&&1WF,/Uɫɗ:EFI/o!_.K'C-uݒȇFj1|tҌsUʧI!ZZ٭t͖۩$_Izhխo7VI V*ÕX˳բd)cy*T*ZK8}IT&LJHYT(Jm QR53-ޮ,RIJU*5NHCK%Vꕃl)ڴ^jV}J+֣Bã\ $VHQnJ;Mv'Slk;ݝw[3id19r&y[H)uS$..q/X9fT^~JX^^ެpos]rJ.]noF+=.DO 'ڧ%Q)RQֻ;|ɮFL_/5 o/ۗr}C9rtQ4ѩ{U W/lqCS2dZ:"IsWDwuPsx|_A"o՝==[[Aq||k5oo3G3+;mZ.O"H\]IK*w[>DľS>nfQ}}cq4f"U6Ńlw6Ui; AFO6+E Ogg'3E*VZx]{\O噫\̧ճO [hB+L1=1)ճSYY窐<=[<]'=;<={%Y5{{]gr8Lm99i{:=שMd;u4ozɵ;`ZKT'|%;;µӓpwȫݭ7;;A蝪4y l<ӫx % =K.oȻ+J=OYFm4E}Z6m&d&KQ42 з^4}p/7p}PVv F~ 8t=ly}S%tAs;TFTrO{+=OUUM+?5'ԋA5h@{DG^trgX}t].#]"lvӳ*moS BFn+͟ML1wַ$>뎧g:=甾idIA$kABNx1_wƏ$Ϋ6=c47al٦kX[[g}~^>ݥJD>#x.Q'r*5:y(NZmT-TJcVӬZj@69^MۥR\Y Vۮ6\d|kKgcTFm֮kz|:&=ԙ@מOw޹f9o ]O"M՞oa=F{i u['3lux\db;kJ[\'^[U<*ڜ]l7֫ўd=EIڃl;zztm#KM>+IwX#!t5\u 8F 6<ߜWsٺ8Fs:}Rgv{/-'Q2kqdoٳS{g {3fMZ˝ZnϛB(li6J5^]pܓ0m; Wjr.یlbAsAgkN*w^'A+1rjuƤڢgkr޵l'=9uzկm4YK?~R\kNknV)qٓaOU><ȞQJl?W{NyMiLXg7;b" V'=@lS?싵~jv:W"ZD,o 3}Q1!NRN`ETc{ꧼ#j9`CշaAԭA{Jl c:Ai92qytdjh6ƫA9C9(rP>u8FwgLBʁG8Vݜ8(rP.آɵ|CAcq WE㰪hTe_c <4Owebxo~)҉FeMJxYf!*"*&"D ZEhfmD"#j :Dt9V7;>yF-I*OO4Hk[>$eg&Io9)h QM4K^\D&bݤ%DˉV#Hh;;Kt@{nHx8iDm<>ID3>q[ sH3UbVMTg~}&| %.ZhuXg[YVTj YY+֕jz&Vkuuzzd=I嬵zzzeeےlf[-ngSɱM,9j[Vlmmmmmmmmֶ]gk5NZmmnhodO31<{I>>>.}=f_b_6ڷط[K;J_^*iyPv*a p =aX h_\_\_\0 )Ņ!atCq|aeͥris`5W_1W_a^c~Sxּ|@Xj>f,,ǯ/le:`]J=3r4Ȓ1I|, <9zE_G#u3(fPXY6f%|V.aqiyKv`uM`5YhljnA,NY'ZҚĪ\u:i/m =~c`1is`4O7ۅ~bDx2tbw rwsi~!d?uy$' #Ccs_^$Nj9_$c4~'bũ(nц吗~jk5\ ,[oUE=΂O[~u<~2.В@#t&@G! ~,1r 9pů0KВ報 ^a 뀵* [X66_N+YwDxx*0\'; h/i >p}nX膅nXWm$mЀА;_Q$|a2C?P+x,{Vc䇵bs6옌9hȽ{ih| cs~,0xj ;'Ga(?B_}8Ԭy[Bp?Y+UD5vs]UyC ÐovX|CplNi9 644lbMCF,74~_eڶv65X`I.XY܆Y'ZyvmNX8f);X];X{!$2_ZF:bqt|2>U b }3I}`vN99e'BDa* [4,!dL+.ZAd!8"GķiX*BBȽhG5d8IMogS|*&/ӰX [ jO4R=V-߇jߘL(|!~+ˍR< k?NJ jb^&N쇵QK'\~fc~$2Lq VǗ8^ D`76T"N48 ' SXםSXSh!ts+NG"&F 914V~U u^B,pD/b:zGN :i,s️|F6V٠v 14h~ojXdJB!FH' q5blu | Ke|Nz=pOaEO(п/UJKln(aa[/Qȫr8z?O_/pKXAs0lF>$|@ ^9|Zq{3a%l51|}ssM) msuhn H1e듀 R-]uj5]>Vy}̣gP:$ihFb'J8_\NE8/~$m 0/b442e\8_1dY`N(\$(0/xԽӨ#x ɇU.xW~X3@g:YxnC $C2 '" eho  l큾,1#Le==7CGgFƫs~2p3p: senN/?`y;CԑN7tQI+Zu /_Cb]{9b#Z݈12$0 *L^GӁO?T\ O3[$;gwy+M4BFq,|#`3ol\oWGWm:X=ëP?c:_4 '+*XBs/YCt`h#Y ?}yx:SL"bdP1@@DDAEDȦB@D@D*l)l"K@dAdwbH&>]wӧN>֩35=#4zt OLjuЛtϐf)XUÕy7r!0"Ϙ]))dUuhb6`82sbDQ`)bP'1+C}C)cw.~t> ܖWcf1!a@ގϢuŘ5ϠpZd;XØ("~N,٫l[7`,X6~Jx.a2E =V=kg߳k8 T=+IA~~J(xk6TA#f,V4@KUa }AS0־5ՊO=O\6_}0;Z5D)/ \D=c!fNo I `0ZWCle"|..ׯw-"kAr%ؿoXqrwF r5u x/7U~`2*7}T> 7"5AdO21CvCW@ND%Yl ݧb6 4U^T[ЇjMeXxօ>ᾓKqh }`1{X( OטS*ᙜ,-2O9Z; yw#{b:e's>m5Yg^yL0bv$\ܼ0l_3h۳/iK:l^ : sm[Ci 4FD`O c͌;1`l,o$܍"^/hv/ԣ08?2fWAy~Ԡ3nSK6(Vywg׋q!NYhhAmoީ?q<>@l ̞6z-Vw֠I?)Th#}o3 K[#[G ˠn~h5h5O YT[Q"V!&r1ˬk#b~|-5h_:QaC~D_Q}GB o7LZ"YdESQq6/)hM5ˬeYުlhndD45SO#']Xփ>401j2uQk2-)sn"U1ڛ_`5F#;use joQ<X1+akq!s?2xi"D)t@ cx:݅8_Bڧ Xx .4脠4(lGДMK}, "@n @o!?*@3۠hEU( f4pZ7B^ E+cD{`;[7 |oЫ,@ E'{Kt>1}͑41L[[+oKzxh-bP{,x"µ'FF `\l[ &*x@9i|Q^MF`_G@E$lC~^U*QMߨ|aS c. fcbػѫny>v*!6>E5] =Vj'\[܃ma)،zɸjA4q-/+6DߝC9ƵBn?;a9~C L6w_^D@ y }WWӰmouc:De`dÛ* {_BFȼM+ Yxja? o@"fF O/*d}5e#7,D^>2Vz)Q6|v ا#g z5Z`x2zsygT́Xk< F!+ܿd{lK=VO_4W'2AiQ3` E|Р>ӠAS6- 4Z@n),OCjPZCOCl@`oU#䣈'yhy1K@qz޶vedoAހxC9CJA NC ,o6l< ^1ch|⺅9kVA_ںVHB_̾3i]^ތ{,(J a6!? Ko+ Q'æ<,ƠcL{7l3a_5~R葽p/WA1 h ݁͛ ' Ѻry*<r#AT\ ,{&06zs$= }WW .N.h&5(}d{U2f#:2:z!O/Mfv X bfTP¼ۇX6fB3 c}ǜ2wZ@m#*6j۫$!{3d@ps rG{r;s;8Q60H2"uk1oGhMm`vxvun,Ǚx75 ~8ӏDЬ1RV̀JvyMsW??l戫8 ް!NB%"YZ-2Gci}nؔ5qՋgC(#M~{{ZV=v3;!xN|Deg8"ڛtXNC? Y*Z} H&>A4|S WSBS6!1"Z; £6-eHvuF1;BbٹX`s AC]W <1k0F4bf\&"f3/>6jBnc,t| i0 pЗZGCsFC4,!⯇C G ^&3%;pf*x(kUFk<( n楎oc$r`<0XЇMa_7"wY Yudi˰ŵba`3[N%b۠/t,1ޮި"Z#>3`0cuOPրur^Bd{<,"3c(Bi+1&Iފ׈sT "Wטlx7]-?AT˫ _vȫv枞P/!uu4}닟+1fk7 꺴ToFQWxG3``]T~<6L+ +2In&r50m6ƌzFZŻ\2(Ew> v@CW먁4Fj"m9K`YD{!/n`75Jd|qWY0"}-3"K,#x̓ϬD7tF>hDFin43OG}HrYe!7iG̳Z y_5Ϗ'elţ0r}yPf߷Ye||=c1, $__1rj#GF_WI Cƿ< dϦ!<,[߽ۙ1eb| ^s:ŠmP>ѕ^xu)PB8,Z堩 fW2qj|}eQQhm0x<<e!\|_^ 9?0zDsd&Z[`647z䗐5kXB ay|.Yِ$=R6뜉' sa>yך5kaDe6}0ɐOz{!_F+2*4g Q QQCe=AP]zZj zRgzz>LbK5zR+}DKuB(o z}EQb('ίЫ$KS{zޢ^4iР6M|8j88/7CеXгT^f1ԏQJԛR'!2wէC PnÃK%TRMM/Rsj~P:ԃަ~KE>*=$աԂڐCK4S'Jir=KV`y0ppp&ppy=:fvnAѶmƧm , |X]Rszv]|n llLнu[{ p84*%Y7:b8J8dKWȺιGtkQ`FjΰcU{6aqqf֩T( ISXKT_8ZNsb;?\ W?fR@$[cVcl Y3kuJ(,>"UL EE9Kse͸ T4׊r8o|x:s2Oy0Ќ[wivy>%rq"y;xy98}w~ϋ?̟+} ΅y>;Fn˯kU _?'տ.QN{WLnǚ}^6,+Z^DK?-p+"܎Ѳ-в-2syr;ȭYͧYsZj-tL4SLo1v@=4[4rjAXI42zJT+FZhuͺFc[-kݱ8}"B"D{=4^3q&(MD)$E,EOZ#z^VW>xWubD16qbOŧIh3udr'Ps :\<'[l'-i봵9VyJp:; NUwz9J/F֕ײ"ܡPe].2PQTr.UTܪ*CGR8zX=1Q(S8**A%pUQU䂪ı* RUUU_=ªǩڪ6?ZV\Ia.:\LuRzC%ԛM~H⒪ɥT/ՋK#=?>Pp5T TJx˪j$Sc.Ʃq>Qp5^jIjWRS~BMSӸfjUl5Rs\yZ3jZbF}52kwZVr-FQz6ڤ6q=_P?ڦj gn~Qpڣp#O:M!u_ReuI]ꪺʯ:7S*[wn5rYVX#3,u&E(QDhQR u8m(sQt tr:Q.ӝr;N28)Gũ8ʫ"zS(*JP~UR{UiU G#TPQe(VūxN}y** tz\=N z@=8zTOu2(o1UKբ⪥jI%T[ՖRU{*:TJ%$*ꦺ#*Y%ӣ*EP[T?Տ5ʪAjSC*aTAP#FjKczB}>3=&^OV)5UMjNO􌚥fQ55G͡ =TC-T J}Eϩ%j RKRUR\-jZAϫj5C{E];ӨڬgCEWDUWFjN]e]ʾv*ګM~}xEf:B-uZkR7 zUT7彿(-jiV{e2@qTըgOfϾXd_ij8orr""R!Lթ.%R3~~GL14f8Dcw1YKpLc8Dccr8cJ{Emcr8cJG8(G3z )cqݗngP)#47#̧>3}f>33gdd>#|Fgdl9>#s}F3gd"/}FFfy&#}F|3ge>#\gfJU>3}f|3:>#|F6l3|F#"Sւm>#}Fvg>#{|F93rg䐟+}f~93Qc>#'|FN93rgd+F#S93rg%+>#W}F\3rg>#}F333s%c&H3Ac&(<_|/:thک/0|;Ip}O=܉;SswdNhNJ7&r_ q?~<'R^^(&\!\  qv].n2#z7i}kעoٛ$Bvm~]?cv;m+ymҎ!;l+;6][#H鶊Tg\^_i7󏼅⭼7e|/b]G5s>K[׭+x%ռ5>gksyy"h_:mڻ^b_93fv*4>40?#i֫|,gzOI4TFuf,Msh.}|Z@ i}I_b] }Kh9}kJZEi }Ok]9Hi6ӏD[im~UM{h/t@טCt~#c✠tN:Kt@]+tjt&ݢ6At2)" Eh$&%h*^DsBī5ZmE;^tE'Yt$*[b/8,~Go8&8%N38'΋ "%q]qE\uqC] qGd,ٺmv88r"7܂[kܚxyxŋk^;;x'̻{x/|!>̿1In{gCaW}>fO'Si}>g/Ke}վf_oM}ΰؙvGV峲)dmYG֕zY_(Ȇ2Q6e|Y6fl![VUl-ȶ_{Yv$*ߔ[!eO"{mG+ߕd9@' ,ȡrL#9Bh9F/?D9INST9MN3r/ȅrR~%%kT~#5U~'Wȕr\-Z\' rLf"[6];rE{^OAyH#7yT yRyVyQ^yU^m̐wd̒EQ%g9rBΓ7d)o߃o |/80~pP`psﻃw;Mu?t#ܑ(w;ѝNvSitw;ӝvs/y|w].qv߸߻kuzwMs?wqc {=^pn{ӽvp3;nqCB"!;Sӡ3s Kˡ+kЭۡ?B;PV(S 0e8*p(pp= BP #Y0Q8E ;٦(]P?Ksqg}þs-,2 ,U8\`֪)`ʆlZ B:ڠ N@;99袺 ]UŪkڠT 2&-_Cvj;Uk8V{Auu(!u#u#8Su:1uKuK8S u:N#ՑpJU i?\䢹q= דKnϦ%!esD%kZ6l֖cY֑Vc5X'֙ɺJ`=4p2\b :܀p n ><+J⍢TVNQx(W|TTS)JiP_+s?fX G:ZBܱqTN#  ",D}bHz`1"H*1&id01%Cd9jAl ; k$WuLuЛ8eB@A: c3LIgpq.M78@4pOzyTSgгNݾ \+5a4oaLT-2mQ1F0EGTxzbe57Dxn!qKBb"wq׸[?;dQf̐Oj8N w1BFoڈwVH.#R1 H->↶|gK~VH\FI-bE*wDڥF֗hS8jˀeĭVEk ĒhKmqH5-ujR,,!:Zy BV*D9WW"wFhK=s F_1.ds8~08(Y:.*:.Zt\t\Qv&z]cu:3.f_S\b9mvoĞs-C 1$ZD:($4d6&7[ilF;iBfJv#?'{^s9njC]cGq&wQՅ>yo"!fH} 3H'e mH(@XLzGH4WF]Jy_1zns Qpͻmx9~q-ͳ?=3-S"␂␒KqHEqH␚6!OqH8$Rҥ8GqȀ!!#CL)ɿ+ރL3v (<.A hG =!vɀ10B(5 v>8'pl8܇xe*F` 3ƆqdqtcJHd? uhҶ+ԣm7O(m44m 4m,<ƴ&M@FF$mk* m7r+WrUWvZ.mz֧m@nQҶ. N .`l/kcm` <Ouu,xc?Ǻ`V5:cZ`-΁VXς`sY# Xod3Tb]zmTw3Vc]& چGݐ8|yvIƑdO : y9C`yIfKxC}fvǣKqrpѶ3Ҷ ,mWXAnѰ1QqjkEmBj[PѶ\mOۏjV-Jۆ0o.\\>\n?w;("+D-QͽʸU{d~ ?OgL~o[mv~_7]>̗NADAW).HFV_3T%_QLAgdFd,xY 3&%8)1l۝M`ف VNbMUt5b-[b#Ol"6bCLľbq&1K/N'Sb#yb8_\(. qV\/n7[nq_< ţqxZ<+/kB|%C\2D5=IWjjML5q~II)I)Q ]ahQy{lmhB>W%SF#i$+=%Eit$^*[n?L~{T RqGQ֛ngn<4Hw}>8"Ҹ9w;;~e^Cohcr,~Sioٯ;SuVĘOlLw<=:}RbG#o /~6[o+iw1~d1^in[ݔ#6.2swtP6kK~ Z7s G[S`Vyǥ%_XNȢ/VvhJ\wW>OSzn]FqM~AI_{u2 2G\2ı$NƠfY-BW(,ۊ/7W7 Ch+pM6L"/;($aF:Τ=v412" ZIAy 葚\=&[/$%'J׺'$IN@0*zj\=0CRcPK-_%fT_1p}E\?w劣B{/M0& ;6Ƙ.f?nxCO=|Y7O}UEU+_}VSg8>*##:\ڕ|W$ߍ9/o[k~ђRefaPƈS{{jmZMމ=W&l{-|x~izzK Gً=]]NlUViNYuEGU㜪ӛsٷӯdO j.v_eC'Y=W確VnK4mc svʚ1i F|(|:Rch7=,!1545*1BI=}YO TuE> =Rl׭PǻY"Z2 !&"B 67xYY֞34(_ ]Rqr~2^>%f/DUS(+U+L35}z< "s1fENر9u,iW~^O;lJV{FinjSwlXmz{{CY>k{ 'zHq 09#dz_qӊ3<]hU5F]NҖ^L+Ze_ i㈰+^Ύv.=̜3{y';rbdIޯjZ])X!TIUy%Y"u"F% JjV 5SW=w'??0lšZmj~ܫW٭MPr%fM=]AWln]꾥][K?\W\z ^}2JUmn|:ںw1Ae˶^˜jCj?Wq֨Zg6hhϙ>,86^7t$lfjlo]۩2#b?:STi咆?sh})Wq/sL@unC&'udto;~KɩN7Iޞ]~kꆷISj;h*SpxF gcc{\+T7sNvW--^]gκXbx݅]@MHIWzb%6:IVM0J2Pi"A#|]{)? >]-kڍnkvU2!#F)p$ß4Œn«ϸS .tZ֟T k<_S0eTV ؚIRJJjc}G{Kue=j9:{]B_[ ϺuӺi뛧6xxil]jqj[:7eE7˧%FUUSxγPLVSnNղ~q3C |Ĕi}s-Z= =}E'W_ޤw/ew}uiř >O3(ޒkqf^~]PfPM;gUZl=y#A:yt-b|嵚X[^e.Dž$CJ9ݏELH:>ϲ"\'6x~wm׌4ƾJ:x郴}u߻\5{oXn,U[ӸnW=~v@v0MbXw-ͮhm6d'k7N8h\:f=+X1/L~zc2q=7ո\<9cc6)w]4Y;bu[2TZOIZ-ՖjI^2Qdʋߓ ^}rCz~mZ/?Vl[rrɖS%[GZgæ7j7yEv'%O-rq[|v=4,.+OS[{J5uN@ꅣBڵn+\4I3eivfo7緧 _7&]0in3Ңi~u3nV oQn"FsG>i7#XVg=)ƫ[]i3fkFLɏb[PUc忠2E( Co-Z |O1̏3C/mI~[kJ-KRZoFN&-xXZV-oDpٱ?MvƠ`\bpaŃ݌غ} kUuЋ_N<%7wL؃|j\l{{*LŃ_߿p{L7R̂gOťL۔_gVwmćѝdb𦖅ǻ#45S}+29k{ o2}^5h[:әAq:)g$dk]uMS{iyMΥf:R .I?;5qצ} 72hڵZu?8ׯbXݰ9R}?.۝PW͎1e5f]#?]xuCu/`37cw {OK>3H*69om= u]avw֯:nP{[© Z6ozGwXq\՝yOG;&(RK˧L8xE3i*;]he}NCv& k23 @>;Q4o}J P2~%^#J?*5Ep5ѩXu&VA.9AZCRH= OR- #i$( iՆ9MMKN#w\bXz;%fuhô g4jEZ#UG]v/ >ml _#YK輩rgl,|تFjz1{yQ+7Yf5u gl>1n.w)"mVoxdw-eLqUo핝>d7m,9+O }J>+ke~߫ʌe2jˆ -s^wieZ,"/gkI.=H Z`*9W`8\_#i}żΒY8]Ư[X|LƜEðTc`T]Uzf9@_ɀ ֖=z}V,0jhyVɝ\Yyز^A'׭Go)]~|iycʲ?vũ9$)hꬍۻoi.Nw {E~-mw:KxOطAW_N_ݱ+Zqh+ˮp:간HARԝ",kZ>j _g^!͗d.~mvՊ.I\⩙|Ä/>>h endstream endobj 2568 0 obj [ 0[ 507] 3[ 226 579] 17[ 544 533] 24[ 615] 28[ 488] 38[ 459 631] 44[ 623] 47[ 252] 60[ 520] 62[ 420] 68[ 855 646] 75[ 662] 87[ 517] 90[ 543] 94[ 459] 100[ 487] 104[ 642] 115[ 567 890] 121[ 519 487] 258[ 479] 271[ 525 423] 282[ 525] 286[ 498] 296[ 305] 336[ 471] 346[ 525] 349[ 230] 361[ 239] 364[ 455] 367[ 230] 373[ 799 525] 381[ 527] 393[ 525] 395[ 525 349] 400[ 391] 410[ 335] 437[ 525] 448[ 452 715] 454[ 433 453] 460[ 395] 845[ 463] 853[ 250 268 268 252 690] 859[ 250] 862[ 418 418] 876[ 386] 882[ 306] 890[ 498] 894[ 303 303 307 307] 918[ 221 401 682] 926[ 834] 928[ 507] 1004[ 507 507 507 507 507 507 507 507 507 507] 1085[ 498] 1089[ 498] ] endobj 2569 0 obj [ 226 0 401 0 0 0 682 221 303 303 0 498 250 306 252 386 507 507 507 507 507 507 507 507 507 507 268 268 0 498 0 463 0 579 544 533 615 488 459 631 623 252 0 520 420 855 646 662 517 0 543 459 487 642 567 890 519 487 0 307 0 307 0 498 0 479 525 423 525 498 305 471 525 230 239 455 230 799 525 527 525 525 349 391 335 525 452 715 433 453 395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 834 0 0 0 0 507] endobj 2570 0 obj <> stream xen0E /EJ)!Ģ=HXY53iڦ:3AUj;Q6xkeaV?©L\]rh 'C^W5Vޫss6Ў,zlS;P?ݼɴlOЯJZݜg:v򣵘0)# HqD'"%RJ=/Փ^WkIi=n 톂s  * %y]QR*?6 vpBQieYɳ~Lx5p>dz cF |  endstream endobj 2571 0 obj <> stream x|y\ZyAdA z Z}=^{~:DLD:ӱvp#ۈ9:/`*ѩ "1~LΤ{;Otz&)cr1=KB#G&h_VOčhhZƄV5Qݥ + {l$J E{SJ,<٩ ԳDkT]P2xQr"s++N?W_?뫧kDc^U}yYw 9? ~O y{/Xs^XZgDD/{ɂA?AM(oC?@t ~ +1_qmYŞmkcȯ#);S^}6|8g`㤇b'&?ϛx-A _|[dJGGL>)U)A^G&27 DP+9"dZ!LB׏Qoɛn!'Y,֕r$b0 .7ș4B9SG8?Wp}FN }A'SKzNrg>CnLS0M*zi+U|Ԩ"Np>5ZǺG{h%JxV@Shմy=DPz{F`Pڗ=墥Tzn!ٚ =t'c7Z^F»9` R A.`z>M}0۩c̪POBo1cf":Qg:I $Czn*Wh;ЧSq|қ> p-t#Z%a:ʥmU q}S[{j>rH-$vbE$B1 U M-7NpH /K' hDDhn>{[B1ziwQ#f)0qw yd!u9@y^a$N7F8X{[/<ubFh~3q*cg~ m4\>%+Hq˦-葏'Ho+[h6`|3]zWj=*GIZbD-$` b| <I\ux Vf^9 9NBj.4cH}heH>7 _N:H{7w {@/@{~>zQmR"x (_X7$)&pv~a_6;# moޯ]Q"@/(۟?'`=~+_~rRwYA u/90l!s(RA%/9 Uw0f}XÅ<*N"^mlwۯŸv/;WvOv쯅rG{jzvOB5:BV^*JۺbzgݖH3$O&q46S.DRo"v/W+uXz%= 'zk3K/J(N7(_dU M$ŲD-cRM`^nqv vA]aSyv;melJIOϊ>7r:p9IeQA~䇾so9e^gZ]qוy~6/=nTxZۧN{[;>#mK9pvb>7Qt+hF٩8%`HGz)(1zTT }t,Ioct>؈w4l m5kr*gDgWrL`ysEcGFF!{JIP/3f"vsciv:ur7r?v#Hb&*';=$KDP "ɧj~Cq#P+HOm=Zm;75+/X s۱Zy 'vR x7 /{!Оw*[fg.О3wdHVBTuke1(nG.>pb>J]ߎd-u6'2.%22V _9v5FV;]m.v$wc|XP%]qT~7@;MdX 5%MHU}78طB~}A{`I aOSpC"D'O;RK M_$瘱J&p-=A4(Cym8r9lRP5ĪVb吹"!$tJë,1J0}L28}V@pSO@%D@A L:Bv > Sg`TEnaFSW`B Em؃mmIb8| <H6`>R,@wxL~ N$Pè l34Si Щ (J+̠i!48,Jl)Oi$p_B$N&'p s^NU82CX 2N/8Px%e_``1M4N`L2x)XFn%Υ)r( igקp!+B`%LbDutqx=Q p9h6pW]8XMs7*ʍOpI#]\E?ƭjmx;#?W+\C wP!5t-pUq+4>]Kݴx6a ^i)p]o+~YZaGn*0mV |n6ōU#G U;8|n>Io|Jv> |vjӝ!k uƛh=6aS{ u& tpfxVO_h3p?m?ы% |*Bۀ*| |4^7o#C-zw1%zV=}0:,e [9zجqi⤜Sri3 g^q嬢2hpg8#G8 :$y퓔h+!>.=[Td׈.C;t`1`J̴.\zm$n+FBq"I/-bKK:Qre%ζdq#)ђif,wd ,*>AשxV+*X2#3,..dF/),@su~2DG1WG̔:A itueٮQVkARKm%.rUJWݸ|]<9ZmKlYD%Emg滴Gf—ComdF̳ך[-mZ% jF5bvU.^.-r&rV2eJUW([yUEXMZlQi˷Y]QnuT3]$%[)>R֖beOi,ٲ.K#ɷaNC% ҡ(Q5+2!&(E.SlRs_]RI :G2*MՐvWRE|ӱHQ̳UY@|VTW|J^E2ٛe̩U/A2ǵ Y]εeOoɬ)6;7wжL $z҂Sp {(a 1':lm4#VgcY$SAO:Zݙ,_0>I 6Ps9g6}̺Yhs+'H>D]Ń/O͂Ƒ-sGqK,rm3dŮlbn5ڳ]r ,K܆#+/ *JMĜ(OXP |$5"5dd?E_|"_0h׽ٹ' \dĈ.Ȇ䤷$Mb )2ݯ:b9 =2P"ˑrY.VrUąZeF2#.-32sU2]cdUe~Ro(eIl?9.ޣƷHCti~b_w݄C`{s?o$GR8B ?Zy6˜h3fUd8?MoiSjc:Y-eXZS A5=@@{X!9zP"xtSP:D fwZ0c!eDʡjFs, m~njh;RZNkߟOǬ ?'j)F^=IJG̃8| ?%Z:u*鯧͐#[6V+*~S$>4F%TϸxFQ7Mz/1ޜȩD-1F>(eGͤ 4n7 '@v>-" 7T\-aͮԧO4vio=jow0I \AbrŞA?/qC>lw?NfR<% xW։ Z74[4mT}HmNh#;,\弐+^7@Op#19EI%qDHmv֠]~H^_fKf~B-%-oӚ:uu#^\~cW`Н$)SX ;p$F-㞀O4TWA\yʯ; 幋]0U%>ƵA>qтoo}Hjچہ})^!c"hܷrDh7|nXE(6}"Iii1C"QCXh&fi H~}:(GbޥkBI]](`ܪ4 ,xi w A|av&Cc1N|.އ9n~2Z-ZZ@*q7y*}7qXbZ(â>zVs %r 7b= 2 ][_8uXpC\3OӛKd5C$p~*^q5M?FLsz6k3L&)Z?I#hO~tkjg:ԩZ錅u[4>0' cՊ'F8wd+m`>iXß'Cï}J_߀<-4yV<8Ҝ 3gD?@ɘH_*( y94 Vr=Eu8!+Qo]JPi%6^zO&^K<>^֜<U;d`bPo.zEQK)x!4Qt'hG 2u>ܱA0tDŽȳ&";ʴg'-O :cBP .[cֹ:]h&:OdICGO qEh9g{:h$~(_#p:DpǃA98dzkqɃ%TScC*sq"<8$\Ċ6[x%ZfX"#-}.G#z'9Ol a$ ;g^G܇[qi<1 g#kkWUшHI52.&&pXJ=4΁9sm #tG(146.6+9$1ipasrֳm9!$[qFs}dt*x6"=/?9´39{mKlɅT8Y8$p!Wܡ0xdB=Ca)& FLЧ09pplaVq#3 U.b[V.taK(wf+$ܙlf%'Q\PPZ[Z+qjkVu-ZزN,͛w̄w|}h4yA'O>?9f?VQ16~`={O lEŢ0F%h@!U|FRZ,OiOv:;۽>׸< `}*BIGI9qG7wR~Yeo=1ǿq>63vR3ƷRS.\]<~1bӺ0x{ӮifMz8Ej'O1'ZKxO?FnQ5T.϶R[w)/s p:c>P*հs(mx-x5MY+9ږ)CG{sfeOj8q%#gPehw_{zQpon.d!Vz>,|Zj2,}WQ527ե5@ Ţiʝ]!sl6u𖧽vE[/]LD"H+ ?!K.Y8MHK|2P_DdH JhZD4IJȒHO"'v:ꁙR2_`T}mV˒E)f]3 maFqJא't΂/~@綷 }*bk&,(5d˼TLU~[R(Z&8XgYy;w!):ubl8Y>f&ѐ^RaX}sqbCY,ZخD,*IyN$2S QynUt"F h۪_K\/7nq9S(Āys+8Ԯ~^E;nH2/Ы%l,O!+: BQ)^HMӸ0f[\ډlF( #S+u;zD)SxgrGˌ>jE^Ɛ9P8FƼiS=C@bT݃'vYSN O?ty`Qw>.qWWs7[{V~8ö~n mb,Ҙ~Cm>a1M W`:4pb@T]6STLTxtש6wHF^o(k|d3D٘g[?l :9'F!a3OȌӦ3I籡 8erh3I&ŭDSisr@' WS1Gi`iTA|W(nťƜZnsvn̴:~gI噢|T͞Q( <+Qw~ ~CRqDoE$'*t:)WP& @x8iR.z.8IJ T%U ei^௨Kinj&_K Sn^io nqEA=BBG6 d}-=\?lj9zCߜe۱@z笸𥾸x S8 񶝐BbA{tjt^4# Ai0ptNy)Ȉ F$l2Q)"\#/| 8֮PmJ?t+Z(x!L“RDw5,F^#t<{AU -O|3M.j[l Y+0u:!*>I2sR;X=x|)#᱀-kb3Tq$8_\ q sUjU˪-7g8d&τT%X#iOiôcMA;NCPqVl q/@oC9 !N > l5 '$'Q丨coإc)MӻVlhgvE*pkU bnF&~d$e}6<;KP1svA.z;Ն.92;JdjY|w>+=5S\;j]@wjok+S&f$+Xݏ#\/y(OxQ$mq@qb 4Nm.D|"%ir ~S$"jMZ_;H}x_g ;t{h H|̦̎G E,`=sA39mCHz\&OJ4DRv1dG\DzɭDYӱt tWQ04vZu^f5 -MHCIkwx n{_+17z)7&N/E=Ա~pz >~cK[5Kxмu.+f ğ(^#T(jRAwK5|.9O#BLSpM3hFJ 7 S>}|z~ҿUU{ DK$"-)霷,2B]-pd䓌u„'etd4:Vm/IȊڣ Rcرa>_M}4cNZ.p6[T0ˍ,MaW̸ǿ߽O5 ?x3^~Q307ܾr+wG >'8)t"qԊ텘+ eCѐ62,23`cOfNcI&o3^뺕\`5r0qy|<$#_,_%_&oIe{KCak5ODG/nYV\ں)-i,A"+yT"1pؓ6͊[T!Q$mfL^ӑ(ܳ%G\{}.Ss1dZ3LI%Ԇ8ԽZ!QSJp7^yUIBq7:JtQ63)S\$/O2瘌#rf.L05uN:R:J[RYz &Gpm8[j,4R [iN<.OpςU۟';*~nGtH_՟V,]aR߾/V]?j1^VWlk׺+_th]l8ñЍ\n7r{mn;L-YE^267{9AyLT 1 C3A( q9D:xc,XSŚW93|` IT«#bϣO'vϨlds2[ j1>{{|Wj u>}|VJ<0x6獭!طYd[Zd,%?ژE -:Kjl*N{~WPm>\v!Rh o*S4[@Xt3lH(*X gh5A H74y$ _$PWTߵ ] I z+&|ä}Ƙ^qt7s17;$5{ ~սԁQ#-ԧEذaǹ眞o-sS״wz(x֚_^sv9gxcݲ.ʀ^$jǃz2KL$x3aAiϥrn{gLO#\"(I{@6S2-Vb汎Ҝ@=O&gfy`W&x/$u?ꘄ.a`5쬌6KF=JbqpڝY:# .1l6bA*litB0uxj0>a7thk`#_*4f-)7f;c4SD:Ӯ\б_0hep'xWY_^*J`s $`/Odڍ#ȵH{Pz0/)"DnkHu{3;}4hH$o6% a!ݎ/;x)6z`v,W2_nHGSu!Ysd re~`ùzNqw8<ˢ8=^ͳb 1L.[ؖl[=C>.R(z3GRBNE kQW0 DbPT)ΰ>7HA.\$Ui4Pn]ߝل^8^\_%3;7N&p݉'X>cie'j րPV=) Lu取;*?( z2|e2UQwZz;Ң!UiS3ΨL!ݠo*GxH,$Ƃd0 _^q85sL(w~ICT2|"P/ T)5BG(鮌yDznk+yMӐ8&Z"F,oȀ+6\ ( "I3h$%FQ57Wdv5oX.yи<%~t7Q|4K6VK~lQo n~4. /ϫ ;BN 6D)Ԇ?HZm{jZY#r[r}gIeoZ׺IM' ֥RqT̈̌8.ijFD$+#+*`4 d8ɲ O$~S *{"["l z,BbMYU5-ζHJMkƆPR6a{^ϲϷ/[5|'(/;ݢYwZBX:MBJ6A0o˥j:H~2xQsjY-m4P#\VeW>xt%lZILcxx ?(X<%覢h[W(QH;(Frpǯ{3~gqӅM/6_PKn_}k"*:sf]s9=EfgFm QB.p}ݳԵ̳Էk vO-Ek{bѬjCђ-9+%l0df,3RT,UJLIY}H=6F_$lo踟۾v'F)$iR?x>O3K<}LSFK~` AP F71XR9o:sMOyC[dOziмc]v3D%pGzΛxCa77@ T:z*jj׵ᵑ5Rkk3v[ NE(wKjK`*[?~^"eSڨX!G ylK%4H")_ȅB8ڦ߆{0;Y͘tBd i|#61kT%N2fYrI9Xq 8g 8& 2Yj!Au,HhxRg 9fo^ywd6\:񪒘M8{93-_iӉWż7w0w,é"裌%??ļL6gVT[,.jg6 ysR1ϡ *ެ,1p-B*O*IT&ij>\Ë^?5[ hX$@57MpȐX4` S<_~՟\µRI_t;1zPRp;m5شfICOzW/啽*aX@W-ҝ7y.2T63`lTU#Q՟k3Pb[NP@2}@m6sF4'!Is j&ZZ 5;LP7vtw;ԩXa)mZ.h6rީSPĀ wxdZ;5P#P4*Z)ZGѳS%M=AmCG5KF=xl/ N(pSʣ:3 0E=xthspM@"ՉEFO7{̀ P!t̟8G /:CSȏǛ'=ͽ ȇ`sa/2SqD\w1X M3[]J:4`],uVM c46Y%`' HU\B>ܝ-/)(JcyX,(k@DlF_/8 ΋7B̴IaM \[@nөU_Oۻ:/.0zY}M-mo]Qgt0|,yTGyNʯg@,PZ[Tb_贶MG4!!rv G@UɴH~]j|~])o-jhL~"lHkaUl E;N2=VB Ech4Z&eiE@JݥMTXVtE5ѨkSL^Bӵ|?Q^}tFiiF%4Xwv[چOETxD4B, x71#x$=6^EᰟlR pW TU`cK͍%z+HvAACj49wۍM+%N,N}q߱IItc#6& a &{&S)-f,od 2rud(Vo[xU%q"c6|E`ٙ,mlXr&wDb{wBR@de) 0%%v}*FY} [FZNTs3ބ~RwCQhF3h;z |E݋⽪5Rj*u<%xuޥ:N ayz!Lۥ - fl:ͶBm=b jS.LP7B!5!VUZ8 U `Z*SZhYZ[ ԮPJG/pj~jI)SJO;RTSkSS;RaF0e0 CQ $9B3.&4K~Y~[J/LƮٗFQ;{޳s̞3{LJ6& ف@!+jՂ R<""*<-*dn 9ޝyϳiɅbtRFr$5xj*`X /hΙLLu)O P^t9MͤQZ-Ԏt XbpR˟$82jQN@@nH=MM:ېdo)|JM߷JջU2jA 4Bw5,Ac1P_s,a0--u;&_#ߣA2yHr5{м1#׍ ;e2^|h66sm$2HHI[RQ.qs&j ē :Z)qBUJ~@DZ ttl#Mt3;<GVDYCװ0bv=fr`Qdz3`I_S#BZ.3!6eQEs{ ;o9G3t=N= z8R%74]=OS6v @4 Z({I`+y^6[}?k1y`H e∪2[?_v/lϞ80{3`p']7@G?)z%9Z0VUxG5 Qo;λ5iIP5)"ύH+=pˢ'U[[hv}5٨ԮCŗԅ@Wx: eetW|I|ySqC\6bs:]VFU\* ]#uj4^V8p@-Ҥ8Z(SP*$2ìX/0L;_V=lǸ_yƌܨoy;n^~Aٙ篹գ֥f1? ~tӍ/ dujORN-!_ -w!58JSP^ I%"ooO|PDF+Jj%OJw$@^__͟ң*ItOJER {a@y~zڎW)HPb!a'o_y V\o^k&؉%Y, ~JK8ZPjk1erqn1]Zc)g;e 8/Sr~$BR.87fF NLsyy`gQq#-5TC(کf\ C%PxMaHRlf|4ܸ_'jt <}tW/ j0&<4GDd$4gL|=6?=9[ۤQQ?nc4aIa6 %4 dIyxRI(Yդ4e#8n2p<~%1? e> cX7ϸݼK!A٦!I٬8$H$~#h94;XxmI< 1pXQU]đ:]&2~F?8Pf%Ij0|(nQih7c3n0p\3-^ѷY5ksd} Z?6qm0!y,psgDU-qW+˔s<]._VfsY,,j߃# Ʃ 5( !ӱa[h!(O~ طrX\ZnTA:|=lxB^'h:sFfKqy쌍r &p}#+ %UiRqE4acwn7^TMg `;\fK@PW8}:KH>gߪ$iK QVQ90Rj ['Y7,LXwVr?塺-RRo}Kڕ.i‘b_/_P.=L¤4)m(* eI6I FFlRvZdIe]99 7b/~8BxaTj-Gρ4uI>Y=GMC_ \}L p\N2hw+4x`;ڐ^Yw9`Li`8q@ 0|_ kh{si]鱛ch:n+ݪGHca4&S/h EJ@|#x-q|- s(ƹṍLtIOH )}ƍ9JBX_IʡnXB8Cց^%XWO6b 6Wbu5DDC$55?ra:dDN&D9(J] <,Oj-Ъ.)NIƨNj9"eGԚc#e-I}5Wj yHVf1 bƻ29o!}-K+_Zވ>FsH9{@nq4v@nDW*V?\X"/1 /"01z$"P=VT\ʧl"GUji=@nD-ԇ߫ m8o "B{wކAnVkOF#wjDѿQ cv̾tiкUתy1(}{nԏuKf+g=nz$xN6EybϼK<0#(R#\#BY 8؁`?"2mB2ՈnE"(JrJ!Tv"dYtXNJ77;#o\tӢt[sHa^xڳ?˶Ϲ׫yI:rYăsyߺ.2ekORb 4+Vs9-YAؐ/`(ۊ^0g,E z9JB0lKNxq'>, Ls1BM¡Jҵt؇ʜjqF[y2sA>2>؅B"ς4&'>!\4FYAdCT^.6̷.¯\:,-|hK&+(Ӏ 2%@U"H^`,s+_bP>{_}oR꥝StK̻_W3f&[$Չ_+)x*~D?1Enxf̚b1:fs07Lq(L^kH'Ts_YǮ׆e |n-?&k[ [ybZwă#he +d,$wV36W\x1G$k8%A+8cu2{CX.eu/#sT{w͒.Ekw.}HK^zK?MbܮKtnG}$p7hD BDGC7zyw(`B1sՠ'& A ILYjť#4TTZ C^pGO2Rٲ|P UCtCzpOC8@&fP/b L JA0`\\8gH4+\]5s| ]u߻޷]/C>5I~n$ɸ:MCI0{SkVx#>?B. {(g| _o {wouYsͷSzZH".6%v'ߍjyf@MU"zȡJmZ@2l#4 L0:`! +D$'>z?$OuO2Eطr^xpmrSg߾;QCbbdXjv}CmmsޤM8Ͷ]$2g A Fb!,ZK~ D7 KʢbiR@QEsbO }ճBnV21LJVQh+ZS% )+q$^8 ƃP!)2bF4Ph_~myŷdX!/bL5oEdQ[?np_%ˀ0YKoE?EK"KI\c.0sG|iݙ̶'5@C8H6"\:+$ђ F`1D4w7uN3J ?ec6=:iixE;1>>ևl!ªZ kd2JӈaFJccئ#o6z2hK.L!0&ܔCVeL58S%q}O?[vyyn|ׯU1c*yi'e Jg7VP&C] B \]9.z +x7xzp:L [L5<˭m'dpf0n>䊧UQJCqҢ{;PS!Rï2~EU7(\ZjGt`zi!̢pOU#1IlQ3bZHW1juJrCf ur򔙁P!I`2F!<&_Vlh 2-il1j8tKp^6||KI_]j6Eǧ;Zqqߧڴ.7P8 !]$BBg s+m'2mCU,ı^p3>fvip8zv2g->uZ _*bl8G.|uKsj0wWep^_VY*e?J(9w+ qTԽIY ?G; $uD6)DG y̼b&O2e?~==%FFGfE3H.4Cfb>$ ћBP-҅38# !_ͨR_ߑdCٜ˪#mq8 1a *0e蔌3 h$"L. 34EX0F"! By{r>֦R5O0"p HsWLmXdfq1[e>i]`^jIhBv TKg҅QoTuUyqN{{׬FmU1>!a`'eT+K#jF5?>!C2D]]WM*_MOTȊu(9@Q!i ;tRrpepQRU;R J TQ4/~V*x]>+MH]5j;(jl _T N0ų\AhERG B=P7=|,@74wJgl2ͣT<0h9rT[uHIԛA((R((#FBduB` m3dt3tCAhvMr]m3SYcƄHfCtsJ0W-p52:ʸ| K6viӵ OUY=u`7PS.CPSwӮmaPBHi8=Ǹ9k5>/Ysy+霒Yg5l} up{6bY(<%Tk;{Gc/&ܡs;W\@s,fq0mBa= FTEui6Z9Dgƅ|3P2pCXƄ6.LRAAA ; X,hVPV5aCJ:Z:g'OX: \;P#xo|;3^_V)4X#jo,0//pNگ&.E{kk8lBZպ'tFΧ 4/ev qIC7xڙg}y(d%Ro‚Q <Nz gUGZ"&yV'bzDU)vYo5!Ũe(ȧT!3Xtwh+Q]UI{W߿W7{y3sR%8"wysoѺ@C*u2wZQWS˨&w݆oXQeJ~7(jo(iu06LLv@cDy,iHh8!nGkqpcĈ3<);a!w_oi[j_gOpW?h0ӷfx )>U Y;Yyp .C NCØ4왺UrʾpMcʭL7&`ӰchM~{/c>7c(+m m1A6C۝)-״"eY~ܕ"ܠjzxF`,%G\R6D(S|r$ayRgruOGù|dQ9h;i]qƵtF"Y/gUE@5`9.RtGTt5櫥y %twD4pC\bnmH+{|kK)1]*R29BߜgscO0ic q,ѷg⣞ZoP*-"P񞶬tR-ZV9Y eŽ"hЗsC ZZjYp+͌?ܠdנFfgD;/y"<՞)>4lZbEcNjmif3!dN,/;H7#I ɈR|0p<42*^5IH1JGƆ#[[eVrRN2(؊C:zWv55jQm(͉OU)3Kc7Cm2@Kx-G6q E#b& C MRNyɼE< o2G3Ld2 ̄$<$# "@DP $"k)RZJ)RTR)K)ȇ*r)뜙LX^{_k}ΙP䗓m|s#FleL1Om|i:9s>dЧUz*,r>{ Үi݉(/A=dGUo2 &ە0wy{W=&%Iww۲F$R-%5MIK-z*ʀԑԯ(_ILL,VjSgzf,2?u{g}5פ7pϯң8<.^S<1g< f4an.a֣g3zf%^Cˇ-/+/G*CnW˶C rNnWc˫FFƍ%%wurVߞ2jvp5K+NoqD§/9kqr5@JbFŠx7'oF+h[w!zV3yvB~29qؘP'`T=ݶHYQU·c1ҜiގO_7y#/>[kk&w-q-ko7 Mg3eiG(y{ery鍯io1Lz#Sq`*3\r< |qjzcxv~~Mz\%%z/%7ח+ފt1^g2gK̔ hI,}+y{& bgZ6^G1Ә"7b?4l՜ƟsuA &u$ ?ᑯK]Ӽg#շ-Hf8Rtn>4~RJ1SHyCÄ`\y~cL~a v"$X7/0GEfe؏ą>Lf+r%% \rJ#!HpإvHv3Vn哕DkUf'7?]s<z*:xd*8+1c?Udq_o`<Ƹ<Gt,2/_06w/_O3Z,O]*d}تv0yų) r}`3INT &n-wAsՏ5PПbIRFzɥף\§NP M,Db.˚l|tMCKOLp%7m\w*1m8[VFStڭ:۪!Kh+yTv/c8KzyFP}]$ S٤'gA7Da'W}"_G=v>UWT&g"C - R<ӷr@xEE:,QV+>m>}gX^832]Y]]Jō2+ {n8`kHE?a -P:PN)*MFe7 +x2ˆο5=nt_`^;`";δm\)}m}.=^Vї3yH'?㙋 gۤLI<.j;]G|UΦo7>c!w>g~di+Gug? ?۝=[$PJ't$CI'WD!-jGT?tx43[:w~MKwv,= l~MpAS^|UySyOSԇq=.Y~`Ͷ]g%Ƿ'%<%'8})3S{133OЬgzs=9S}crOx; W_RP\sKrgQkˡuO4,.[Vq~ʀU8xqOCvݮun]vݮun]vݮun/c(`79sSHK&-;`VbdTWƲ&c2V֙t2E1-Mښiͬ F mp0˓ [%Jh:D+L3q:">U1I3p/e}7ID%ceaol{K`/9 %KQ Si ߋ1l[aJv}8;g2>cD~F~_D:J?a')!f;w ?lSMl#9SYYyBZӵ`P#>cgጳmF|]G2eCO .6wE/GS}Fߢ#ÿ1Ϟ̻+)UyRx ɐ+axa|![C^4{1,4cY1Kf a8.`.)X6#X؝|Z%F,aLbEJb?/HUK+ ?P |̻Հy%c& d4{ҡV3 ̀u.fi#cfb^: @=`#U6OB{ЌB0H+.j.-*/^*NPX|p*© _ PT| !8%Ԑ- NO -B46"gp BoE>N8# AyCvG%@ ʹ|>& n(EE?2a/>>HcA -ǃgL؋|-IhߢtnKQarh y \`mpoևn m,h_ѦX#/:)XG.^E 8nKG:@~ءpPpDh[LuGFB?AO l F+a~D>hr:;d57Sx `]1NdLN ! ]&}X 1h,ֆ6. t&\*RHG"R,ԯbѦSJV!\G5&:tWhHa\[~{ na˕뵪w u]|+bݠw槁:$pN"8Ai7. -6p(ԥIPV0R7,Eʍmj  mti[hϝq)6֛Pmطw}^t؈>= ?ˈ끵s谯[1`#:lG+O0}ؘa7:D谕|@c `g|#cͬwڼymۙ'oޡy'Nޒa`$. (670``I`9zguzXd )vK3I_B=QX#NO=bIIIFei#Y$}d=l)?Hz0'RK܋š1utttt,οۿ*/CC+}$}2^.0.`6V'nc ٛjs\L#31iMOt_ag%Kr9--Yjcw,rn9c92Vݧ^Vs{*3+|>_/+ }#|c'*s}|My9s[ ͷW[[ 9k63~;U ]BS$8OvvnYiMO3tj lBՊ9;mhzqUIۘ*m J+`>j.3;bt:pGSK~p\8bQIatK/H/ ?p^^f&KIoT*궇YVV* xX9;}q{YE5p2\,}p7_EF^ieZkjY˂(d4 9BFFB0FFF]K#'av2Ɯ*p-dcuI9'ȯ^v[7]),Ie[O\5p۳Oߙ?J>!q.~Rn>Dw^kFG;dY:vb^?\E_X~<`9|6l%:bU0mmKkF+r-g 4{76ZA!]9.!30ְ3ܼ8c1h *45q4i Zi Jk5Tj/YhW_f'v0xĚϡ5xV KyY O|L o"Ll +Kfh&N$$& 鈿fj%{ %{T2f YZ.u5~zI\aOcSccEx~?c7zm5yq76XQCu އ| [62xeƘ6˛e|ϵ}9Z\K^; {"euk$jG̫Bmاj,dpL$:1bB]\dPbEc]+c/ZCgA{p\NS\GO%\l& ^ dL=ء/"Gzb49;ϻuvTCӟc}$q?73I&x2? ^˕,N_d!i4I\y\&uVwZp05fˌSz^.=ifݗ07HW$mBͷJ[YjSfv/Jfmm($t%K'{ỈMǜke<[ڲc~K/1'ļW|y?% N%bjY9:|o8։*rO'z5xe<Ǭuݹu;NŬ IZ ;J{NHL.fFN!2!DZ>H\X˱N+S1|>aebb':X31: ;YW@Yvj!63(gVbo;]N18U]]N33}ڌzcyxBBD+|)yB-|ga/RsϓMv?A@cMWդ+;f_ߓo/Bc*n#q ]32Y*c f_>yK1{ X9bi؞TW͉_<\ɧT?NV(c(*ߥLX!3bTVP+w}JФIiʋ؝zbT$,X@xŢ]e2ŒS^%22ŸGhN*E*~^#h38 84T2\˧2"lx 0IT.=0r)JIpVN}1Ҟ V M,VҰV]P`a!`$Eh&!-,  U-T턗Rٖ4m)REjTNryчD]d IW6~[kEOh o,|TKm%=Di뿕KN_rm!|Fj + "7|B[CBJ[IWRJ;iA4B_ܷVҳr)$VC|mS9J9:I&M`)@zQ .U :XO,ZMGF-&Jxz{,y4<S-jzjJ(lo&Z×hcE;Y4'}D`p5!FwZ`.Q7lPIuza9D;YH4u/Ld+YI<賄_X2oi؝7R ]> xZ#hGbN2l]uy7cDZACJaEn1Cʺx R*jmWV0c^<õWI|8VFEcK:/Lu/yuXA߬Jנ6Mb?)m1i>EgX{B&# n"G ?&c+NIHTQ;ф Z*YhXL#d0}trf:,~Мl0t[f{hdM#]q=E0hqr B5Ƙ2wEb}N!dtħ]GBf9"4kwS.;c>]I^?%>:i2iBx1O0L#>S8)}K1 Kdck85Us2SOJt/ޘ 9v\ӧnb-^\]_7-QPŖ^QPV^S7#Ul3»]S]>,t#|.ED,2Z `[ ͶdX',]G#]3cˌU+ 8F(%'5)JR7GQQj4QrLaLG?)G)["5QKվj:zFfBM]V5j:[mTQs{ԯ_WWPRCcS7[y@E{fj % sr *A sQIHW1(F 5*&zJeݽ{}zꮮ߿zfBV 5fԊ(:N ]FQ79zޢAbQQhJR(JҠ(JR1eNM(jDc <Kc?pq23p&yx)^WR\+q ނx/nA|ü;P0!PJ ՠSZPiE:P ȅ\@AChip1\ `.0 %Lk(@" 09 `@n 7qXhXc. H=p>0lm@ << y /Ex^Jv3-T}x1POS@~ _W@q/AHG "Ri G& d D4Ih0F 'L!/ 4X ?&,B(LD(XXǴA(آD&d P Jh'NF(8 מeL0elrPpFy(T\RLOVF'*E 20 UJjP -`ډvh/ |Pj:AgGBG0C@ӮO@ԉ:A.` A5n1>R(E C@8z =%E7 F>O {š8 A5)J$Q8=" R-8>xy DAE 5! `9Z[௰'a'- G^>o8Y![4MEMGh6 Fa( B%h=@Qڃ)Cu3<)G=B_# CEJ(?*e,Cq$ʼn8ㅸ/+q1^q5x7n-W܎y"JAaahET?'OD0ѧD ItH(CDĈMth ѡD$IGtH4=D{䈮]Q HtE2+DWԈ] ItE6!^?K \ºa]n@X7$ʍ &rSBܜPnA(@($['ʭ 6r[B$BܞP>P@Bv$|O%>!ՙBXt%, yIP@ \WpVa+<xUx>*8pːD69"䂼P(D+Q1ZQ5ڵh7jD-WfKP@9t]A7mt=@O CQP$(=dXl*]Rcp"pބz 7f܊&ew;9<}>%B2OЧJS#4}>-B6O7ЧK }\BOAC aИ0hB4%!ќhAH@H$$Z' 6D[B$B!ў8@HBHt$$N%$:֙Bxt%< $}asaӛ933 >P_B!ԟ::@ $B s!PBh!4A$FB 1XBh!4@M$߮D8lMx >1h, 0{feb+,f)KE6ҡ.,Q;RRGR'RB6)!MJ%%0Aa+aJak4l9Q~樯0*DR ~vH`h:Qd&.v7=#X,q,KDz`ٳ78X Kca2:b[.bA݋/RÀ]}]J\۰u]!a̲S1cǙ8v~m֍aukn[=V/:俏RXO1G`wAk;ͤ*ix7pYw{}[@df"v#e73f!rFfC=)m6a6܍=Wŋ2R> KM)#wE^))U`@ D0->aQcHgRL M ELlQ^d Hb!%L!s|18 `!sBփ^Pg (@*Ζʦ4 RI̪86Ŵ!{t %E8lc6SI?͔ Ȥd2`{ ?wZXHib¾Ӷvo;i<5:{d:#Jg?VC6 e,?H )ob:EkPp)ŧ%򦜔W֐皚OH&ϕe-ߧ*rPLqqs#hٱB4K43VHs'3f)|YXlHdgXv8k)fOj UfR⴩KEe{͆.9i/iytQUNh +2GV?*=vH',\u3C#P=lPҤTNݴٔ6}9#[ˢnx}27i.xUUZ& Bd=o/fth]ÒCfϼ]v~ޚKT@]L_a:U/[.fyOo25&+s%_v]teD?ӿߤH7PSr{ؐijtV s5eX2:kmJ%{W|=1_C^<k%  Ыg,ѪSf^F{_AvyE|Q:չ6Nl"*m(y'Awm3b$XDC捖wʜK^8R>iI/i;ΏO?q\&cm{t~#Umq/'M/JO]nUBWoX|Kۦ+&$b.=D*hr jROh6):~-:*uP$#^_]e+\Lj2t~p" .jz5`qoUgAy37ђBzEV?w`kLaFc 1Z1:7RFiz<Its" igW7?/-qC܎?h42 {[=7Exzmiy)ur|n3=a7}NV[Vuu)Dx)3~Ic%÷)K鹏)o}zN[z%R4VNl}V!#CXOО,Oh 40mHe7/.5-rޤ踗&e[HDMsݿܘ\{ϛyvj?+Vx}z;P=ѥz;J]INmC>&Ȯ5vؖdFg@$!đd5x8hsڴڸ0O?<99LW781z|̏:[}$][OgV?ΐK,h3Gfi/055 I?EV|p[t_RWcFpHJW9}x~AUҹ=FE˳';]so]7h(JwBBtb4s\.FXեxّ [}|EG޽^8Kscwk꺄Z_UEvur$oSZ S3P`1׬e~a"+>&7{j Q F}rH$^TGݴVg {|#ڔkDsic2ɿ IJ:cvqL8yҳcmVQW[_]޴jN[΁#Ss.먽3">tZ裦g_l, {~uoTʾ91^7_>T#g۸m{%lSt4p}#ffXQq6MM?w-X{)')_*c{YL*Wyq_ݲۺ9"n{+~AoSNtP<ž993rcwi;tƕF>Z"dԙ+WPFx. I(XoP?5'ͭmO\%wgsF O0[`GOܨbQ#nVl c /+Oj@:_[=sjo/o2ھTw8QFytcLb‘~q]ꋝW9y6٩z >f%p(yYTRBFQoʏ8,i!2ϡffܦ?6[i֠9uVw}!o5 (vDg- WcG)SKZO<9nGƅoK;wz]IW#PZ=HsA{D2Ҥ%-%鬆{F|KF~cWVt^8L*+v593<Ο"`AnSM"•ZTZ=7ٝ]K ͟(>~3oV|񔒓O<%%XJ^,=,^8LQWٗ"'ӍYw8ߪ7%77̽)pwk:YODensignKL=vX R}ɗ߾|y١Gʽ5 Whhv//v64hmFWH){@_EF4 m Qa|{;WO*:v.=moE^vQmtګ*%zK7Q:6Eg!ý:볾Wy̝9S+Lu4%;r ^]oQ+ *DwA?2E{Tg_ymTTm79->.,10>xzJAӖ C&3$5fY.Ɖs)%/MPR̼zXW;;D>[H̹w >ES|Bwcg >ukOӬmG@sgLѱ D%\RpEo#b^. endstream endobj 2572 0 obj [ 0[ 600] 3[ 600 600] 6[ 600] 9[ 600] 11[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] 36[ 600 600 600 600 600 600 600 600 600] 46[ 600 600 600 600 600 600] 53[ 600 600 600 600 600 600 600 600] 62[ 600] 64[ 600] 66[ 600] 68[ 600 600 600 600 600 600 600 600 600] 78[ 600 600 600 600 600 600] 85[ 600 600 600 600 600 600 600 600 600 600 600 600] 179[ 600 600] ] endobj 2573 0 obj [ 600 600 0 600 0 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 0 600 0 600 0 600 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600] endobj 2574 0 obj <> stream xen0yfg:,Zu _ 0S8}ىH+F5oqV 8,尃 |1LdQn-oZ@j"Q9BO~nz -kii^Zϟ}@bQ7L}8)*?vퟜY]N>Gʿ$d'n˹#E:bKxO|νl O9*euye昛1 )uD7xsi81,V.eH,Fx^{s8c/m|˽/ endstream endobj 2575 0 obj <> stream x} xTy3L2K2K2Yd2I$L& ddC$d(AAbX$Vh ZոQ^گ U(hmJ&ȳ,yw x *G*W ?Z D jd_UN 'OPqn L fW6[jpԻ u\վ? q.e ڏ.ZSf_[ n\ܾj%D~^|Xz@ _lӱyUך)N4. Tl+@̮Ww<;y5+v]? +گZ{|``W^kdt=W.\?bThrvgD5Uwuf@pbw`jpxKi1>M5YЎyi}! d%-sc '"`4 'ceeמ ;rOC0I>+M=V$S_ "wqXuXFl.XK˔A|]8oa--䞃 ZFN0p;Àyu~\;䳛a Nf9b2n)8ʘ(? e8~Lڠ J<vn N^`B9@"-@I!*ʙ`ħwY%X L͞<6Dt88f`>2?'@Okڡ_75W9 q w"@ĻF McD @"D @"D @"D @"D @"D @?6IT'BM$" xbR sa>,aZ>y$t$j^FG&H2rv/a3F^?~!oxџOCK`$O 鮸[6EQ3&rg]v5ZF1$>0 ̐`$3; p'w=p/~ {&䄴%?X9Y۱7l=d fH Ѡ5bAZЁu9~{+al-p;VwE'_?En8BByslminX?czʹS&W*+ʅIމ<%㋋ |g^n#{\Vf=ݖfSS, fi51jU2J!q,C EseSR1MT|6-/gAotٜ%"ՈM 4rCf]'ϰU"gǏmZ_̪oڴ[FqXdZDƎ؅i_֢j jPDqpTBi}n67_ȃ硋̜IzJXvDY4D8EHDb&_v21/U`Dmcz:Q+7(JF׈5+m QUQQ.K$0 D`*KEak 6 { m8-,RTB[mZXPm+Dkljj[P[!u4>U|66Mz6zLH͇}ʦ!G^%b ḅ2/ig3/EsZ)C`F{l.V964NKb׾-|=ZQ+f3PۖRS7=[Jn\W-QlTi:!:kx*&8Ğ*jbw hO(4J B9 hhO;Ͳ<CWTx2 7U,"S4rQ51IK0F5 ) fF3CCU-GMն궞j_>8ҽkm=juʪ6^lۚEm[' e.ӳW]_#յTUQfX1;twG{mScuմ bzeѠMx':++ ^!,m`6`c fӞp6\سݣySTzP#mUJ}\ekaBcaRMi" V&jim:,uLq-kQ׊+#U=H|UO[褍u+0w^7{xF=<,PնW{eGLkcimcOHT6XI_wd|O* ͖m>Zd::H|׃ލm͝p!=p[46Tb (TʅQ ų&O6_.5l&V&^<؞찌mN{j: 1@ElȖZ~KcCʶtk:Z 6jL4rPz9I!; H@ i:u\P'H[ECdäEΞfl0 l[)0rm[X!lT_FeA hn/6ZQe ehFR[MC_ Bm Ajv,8*J“q(IEx9UP mȣ1cçs=`wH{.VX8.HꞞO+*fS%_*L03o-T4~ g·aᛰp:,  '‰EX]X4, ±p4, o7aHX8;ŽaaSXh -a9,4ưP0-, a!',(Â",ȄIZ_IK) ~.O%z\HD?Dߕ}MJD_DH_%DItDwHtDItD{$zD7J6ފT(wK ]/u] :JtD+$K+TD'b,W#n@!#~ ;"Co!E<qU7UݸWun\ՍqU7D 8GB] qt!(pW|x  T2q6&;1᷆悌ykney4gGx4gN?HDS㬸L GkEdph梞$ )p -G1IcTD'b,r)є/xrM ou#j%W#YhYbõ] I"Yx΍$&2P`]PbHBC%~f7vfsf+ `a҇7ybpBg̎x P¬;@|=s>̺#gK|13g@SZV9\nAil}g,s#`S;n Rf>uȩ~u Eq]ҸU!~5sŀ16Qe11uL=Ӏ|&3Pu̅(7|jlSbD q䷿9&_># C2?p{M{v{9:Wr\;{Yǖ]⧟j|D Id=1Ar=|_FtS&x~}y|^8H΁/)8"ˡgt2M3m`qFW҈6C6-Rr6#ɽ=ķ;;6ejy:AאMif4 >L*˜yuCx՚F^5$~)qc4|S[qxndg{t'?IӇM?'rics"lI911ФI2uX?=;vKn-.ޚL)؊ko.sl=ǯON_v3{9) p#uA^59Kr8Ouc|n@ѪuI_m 6Sl$͈."8u#h#H72`.6 BmP.<: g8sVß?ddfej9M-6ݦIIS5 X{hujeJ-WDYNZSWfM6Qij4X)&bUbU0Q̶*c_ Q"1Ơ5癫4k\st>2"IE뢚 ^f:oW]8t}9'24okD}R&&*jWU\*m tU4!]?0 %r$M$~r ⷈ 4)?"D<?E< Lj"ۈo"x0^;w nA܌  q:b 4b|D'b.bQ(Sq'c5C/??ۿ޿ο_OWc=1ס_ ȶ f6;w9lPƯWߣ4ԟqv?İ FN3GA;wK=%*?^PB:F7ſ{yx^[%Y8OOSW|Hf|! "mDM L0`5 Zm?ўu ~B=r- N{`W #xj`{}ea)GAĹ~蔴3fWmk`IXp?ꟅzxPD1]4S#b&I2oG73;n肛A+?xg;N؅^;0-$m?1^/`l`V0Nbݰ5|%of}KpwFl1$DY -$ҒJ< k݂\7"<]w"(G}Ċl!fw3$Ǯ'I[K6TKb{w=Kz$^[y{{g8$Iq6!30/ɥ%\R[o6݌7_ =w~| ~gR7z~p#]LXx)TCT?i#Y/6smG *`>}Lidd qh%ƎG߅Fsa3?ʞ Tt5YK5 '.l> {k#S\\^}\ 'v>a>y v*\ܝ+d~+lN[uo֦kMFȂȇBgaָIV sTyyB9X9Bّ'~~_^fϧfuV1;aU s+@g{˶Ipe7Nm|ݷqi3Lc۫lo9ݍq?n3/VZl+7/#9=枇m60%^ZM08rZGZy,bec{S\p)D.gI>FO^VǎeIǨcr'BgӖ&rE ^aŚ,c4fI~/gLxQOۖ_Qw&4m.K4|G3ݕ6K.Ÿ愞l<6ȐPTOD čXWKӚfYsS1[} *)Q! C鴚?P(Wͪ &Φݬ>m\Ifs ybӜxפ4S|Gܹ,x5 E5uWt{'%?W1xc {cXU2LRid5TS_N{PNQ*RSR|)|QlTo6٧(Ml.7p 77!T^xZFC8. `04iμ7b⬀oL|9ɾɁ_Ur`wJA]xOs!1˞ajAlFI%ɽi7VZm--XZm` jΠVGitLw& yTtU ]27Yo*̱7t . a\̩;mD?%ig]uƮ6.<;==N!3 _'[:Nr틗y[jsb].uj^ei8<%0WwhXMఙr5}(*d l> 9114124dF!ef:3eU< gzIZ%P1p;9qyP#9&˚H~P=;aͨvbӪs+K RUɂ9Bڪ3}" zY"ϧ0}8tS 9<<.6wo}2zU(l6[0f,7%ߒf]YWN`'Nil)[-V±aBoɝxV*I X!Aa&{[t뱔m:/<ɗD|B7-0ٞfJø{rs\Ѳ,ߓlɲs.6:iTcebF;f\jLPjU*M' 8zUdh徨(6hׯ 7ZUF1v܅51a50ܺ+ vokk`ŅF)4 ^NƬ  ~JBۮd};ܮ>_ºsLaaT%7DMnSH]2x~[;`4X14'R{rJ.е*+B2BeR=JMlzup)򜳲&~2Y;fhB҃53ehc |ILlTT%sλ﷒#Fɝ6E:kYtWb,*`#vz9q:BW=LdYv;UBx^ׇؾ93Wz2.zx Z|s&gLbz\:9MNi|YZQ/%hz<#'Z=^O}m'avye-Ïm#O\kzE-7zpO}DGx7&)j,"gmr;\Y~V0u'[A>T0w)ӳ\E7=:}Jyl?׵__7ji6ksgK3hZ,ZmɻǶ8;HL@K8)m($/}{ЅR@k^()hi(P^xwFct53sνҸ1,2IM$xחbh҈d}=vvrWQ:$Vpݏ et|yG(bM3H>΂\3zV,w-s>QE㍫{=9%ђQ+DA\Aʧ3.5>Tˇ|>.|x] $PNЩu (Â.ڝmLd$R80rks.GLe|8^IU{Sh ei2I_: s|,56tԅ,ߩe˺#:9?N|^h 7msgEXKHᑓGɟ봠} 9<8-r2Z C%Hq OoDd'ݒy2czm220T7<~AD7|LzaoNs+{$mwxt=Ԣ RʦKQWu`CSL,FD}3qXMh O6{iH&-jN: X^:hƞh7TɑC('G38쉋JJ*䕬Va~d^ 81-KV$ҬDOR1i(UkDz?ZtsHa{A9f-kCKVHKKgˑhAw!=Y חf/[YQ\hHLxI CG !ZC9ZInDMW<7DUpm w_&p"v>7O&Xޑ>TW4 Y+f#;Tm$H0Л@^Il3+8gjҏ:bvt^gwc ~kBͪV-: b8q9Nk5X,h@;V^>R ]2[*1T_[ thN_A_3XZ1i$RU 厚CiU06E4Ba"C,&>x d:|D&>3'e:z}F[{)B{? Pw@JwD*-OT $W;E"oAF#T P BX4a L:6ApA3,"všPK|2DbԐ1.,Ńp<:LAJ ,C6f7?Gu]a߻rϞ5I%R)}jTaK= Wv{غaWm_ֽ߭MeVC!7lks ާ¢n"A JPA#yDYXYchu:F N {ØF,p8&a^a uiD--%> ȴG/@ʃV :4\5?7{og hE7-sSn'U#緹M,ղiu_޽1ÿK/gw&MlDT! ׊H4l?Gp,㠶0cg sD[TP5",|<$_uɸ ;c KPX 8vvl`I%㰼8 ξٜiKwlnׯ9Z.;wl}u_Ax9g޵6Whm࿺p{76`ڨ8`eW IeF $ID*ʐT1jhAMhn`w0X[*jץX!5SCLG0 OJtъW. C(?% ll<]߶mOziuuǩo`;(VZƞ O5˹$tH6o|XVbm_$`>E+e#=;"G9ve>|սiC-$\ٚq1_4ZVeh%mHDIjrP3|0\2\}""-c_ BMvt H|*fG'd lI!UTQ^u<. 4kG,hZ. .AXd,p!:@'2힢C7,xD-;H)aI[ e\Rge<;^i_ܶnɜ8sNݺ;z;gׯvV E+:{뿥`t֏̃+y\ ٶ- t\ggV4ž|+otBxaa]s  ?UOl!.EhEtU> q͏j:`p©bz}/.Y%EyUL&Sli6DՖ>kD龲O:%2.k/]ήtK>(6#. u QjJޛ!loC+`/"K/gɁ .Y;eYی=]a[vх^{[xJij5ڃJϩIIN$n&>G J~RF:%|6- D 4P8r1Zp%4Z`B3!YpDl8W$+-Jӱ$R| r%Kd3y\$Tj5Z'\A& L|Qț}~јO$P Jlȿ|y)iӡT]\32(mJgTVt[[ rjla<懪܆2Fw=7M [V"% Z|82V~`!`İZp}/tMXI5X{p-[N)5PHN)P=j%xp! HPq2L%Ǥ0Ma2f<3q"wfHdqLVfz#SIŵjxW(t,ˎ>jқf/-l K8YbG5*<沮)頢3jtTwo/ьnPDM)(˙%U5keۺW3 yMH FߘBK1.:Eq3{|W^>lڹ/xw>?^}qGD-G9."TvD [slYf o;@h -'ezzÌ1`9W` NI_7?FFbX *YL $l[xJP^eP[&#=3z?7{W4jo!;[ )Xt-ua8?+Vnh"-8wVL?>$C/&ŰWVfJhb Vk9#;³vZÚt)Ida3/f6YeP>iC*nO<3i(hmUҟskn}˖XC]$uPKX4+}okbaFԪYv( 'EkUVZvy\ 1 0VCZcїchVTD7-ZT)#ZD|JQmyoʗ-"_jF}rȞKls `*]5ͿYa{wL~.HI/^nJ$DCDkqŸ8d>dΰ;9kg%vȐ@BDCaOB@qD # ye g8jc-Jk'V (͒Q2p NzJr N 9ؕ]]~KKnߙڵi|F]i-K7vyq{Nk:^9{ugs밼|>lʊ5U}E#H@="1mcNjd'/N=b:F PuWO ojjZ?LB2Jn^2f<Z ˕7Y$/iZwvleme#P5-7D[V,:}նV,7G8﬉Tkŀ-P}D ZJP`>TT3pTRvDRVJZD.O"u52 xpǢ#r5G7$w4NY2P,=/Vp݂O!:ˈ+DQJn0<"XG彸u2Zf&ބ$vCהT qiZ=Ynyd:riD7bN3?[|.WCDRRͮX%.g.:F5TȚX9\Ń\ fK\ ,K=|.^˃meHW ߝ6qU90>@~<Βw6x0֊D0 I%0<x5i}6_Fk%bnS#LT0 !պ LM!Lť8.4tluM5$:Y%@>7=Nxjp3&UppOo5&_uWՕVp[`%[O.WNř4`]-l R^$(o̹Q*dnMil dzZDGSC-TEu)`B$׫!@jc4'j+K|VEȍ]ꨢTU0 +kPsLvXfHM~Í3dvF\Gd38c pt vRY^骏Hzh'^%D<[ѕHZH-iD@FZ/a,&BHѤ FDR#ўQآpbffurgH+VȖZZ̾<4 C#wmKY.}/&6;@@c֗/ ̥`W]劜"J6I/!q'D* #8fF@)qy.?(tl6)սzvlBƾhiqyy6Oވ=ŴŻ\n  _)\~kG!;W!*HD<H/>\ ~J6D| i h@DK e濿O6J)pAL ߪJIO*!Ah=lO4Zթ(2u1XI:_CWA(s_+g腗COEAF^ѻ\gu蟄'x}ض`,/82NXK1ʐ@}5||,q.O˺Mr/mw}&|&}0"/:56Jx\&A1pOeeЄ3i_ duA >:ɬЕE',f>f htK:u6eZpc7co#C5^M~%MaQ/&\z}e2/e'/+3BB?YO_Ɏ\S< 9o e `޹M}Sg7;q^ )YmV.eV 2 ϊX%'0 ׿.=!#+lR8)@+#.cͷI@ |8EUh52.ߌa|XjIOg}B|XJ &ak^5bD/! ]9O]VfK~J&btZu*H4e0"Z@U%BCK > Y[3%d=/NQt2<_P!n@{Uzszӓq]Ηz{k}XwSfDYQi5 e#LVVEh;L&KAM٤!m%l ӫUUF`gˊ\\ Uo zr,hhVDs4(Z<ۭ:JK,IG5Q=q88-V丘#v$gxb̌wdM۾9@)N.%HP˗Žx3D|.X. ͗^߻{6oOݻX焪C-}JJo65s@rζeyfWzPH^W$P8bFS [eBh*(&&Xg\w;V_(ZלB`qV(鐼&"Ų)?TWmx``l0d*[c,l}VH=;8^[c Lج~svWu7g֜ms.Sǩ$'_H3 ĕ2ƹ?**(徒,KW $'<[F?W"91d^|pK*/In($'9INr$'9INr$'9INr$'9INr$'9INr$'9IN}߈BBX^ cVBƢ`qLMK˒`V!pn!` b>;#0RPXX-W"f3q`!X!sX1Vrrrrr2olXxX g#*N%21nO3pÌq e8yhe,d$Й)p.t< ,Kos$p[^>89XÌ~I5NG}+0ƀa ?`oˀE`<XX2nSNq^qNc@#8/N /{b1vA#Y;.p{fx^*ovN8  ,?NxuN81q\h92~6x; cbC@\\살C^nsqF4A&^vۇ&W ǹ=Jm3;%𖰐q+~`/cc?΢~v)% p?X*GF s^? GJ?=K XnRI88uKqnեX)F b8a}8pd`Hs!~N;i`,pÌT9!~eFQf`eFQf`eFQf`eFQp=<94"qdt.A$ppnjq3c&P%87$yX,K%Nj&xU^Ԥt\+//@\D^.CWpO^m<;+-z[yְVD5Ռ1ᴾMZbm޶7dMfm JgI^- U- Sg"z[cG1I|EoŜgEXkmUħf]\76VϺGoeDR-:Z[Ykk>נڮv;z!F{wKۡ'̅rr EGVbGfcp5MtXfz8n:WrZ]K;M:j Z\kf#q{:Ű{-R(||MC+q-}EjƲ\iWia16rFt vŋGj3JOG)h99 0~{2r)sYzniZRcv]:SLiZ9JgDcjTU~IGR8}W_t sjFl۱ 2+Z8Q/سiЫexV^A"T{K'ۈ 5|:#ffƒv/D/WʜʝTЪע #& ϮdʜpRjLSa3iV#7iOǙȎ+l-C#ŋgYm/W>T;82[{fYVhճ*j> m|V9G2f߅=TˉkZ8Sy~d ,RҖqjT35=x 54sg1]R{^fލq rK \[ba|6a 7o4SH'\jd>:W#R\ 踉bb7JT%h$W"05{uViD@QPk&G@#Ơw}OUשOG[\4_h5 ֆ`@DVpW vG` GY3+m?J _'E#sA"HH1HsmI~J(Jqxt.Ore!Fȥ߱,}~SQEap#iz\Adt^R`'eJ^loq{b.k"7DZ%K:::[ .`sjZ6!C3r=lǡvQ-l4 %\]E$EoK\|GCjGB, /G]JlC/&MjK G<$yKLdJBNtEGaWLPB(J84еAl.DB8Er+,W{IBfL|w*ϵ7]Z;4^4^=q h|g͢&=UIA<=c4+&|`KET _w<<Q YYQ(!f9E[p bH.JDX̓[:$O$mb4,vHO.bCG[~'b\*[yW:qHQ9$˛v<(ˇ Ybe|Z]>,< U(2_iW>lT*nSYt))҅3Mّ[x+oo:Bno;! ]#KpJ1W nom%x[[+x{?o?o_܉YrKB Uaނ-ޞo۳kU]/wmJ\-Sumxo+j:66 ޞO/ef#m!x4+ۃE[}o/w}FHRE1rJ -^omx{ ޾  &p<[݈==o&oO߃wxtZ3UW eR.]Pn.*UP+KBo۷Q0Sh΀MPTy}yIsooG){1|_EMNy[7x^ooo3x}rG,m;*Nx;ޞoo_"xKCJUV=o[} Q4x{Wx xooSJP:yJzx - Jۧ۝x"xޞosuvNJ&V >jZ 3;wb+b*.SoG[x{}}o^E_'(7qPy꛲ oπoWw[6~,EܮejTB%V*QNiW+ ޶y+ %h8x/, ooS6%ݢT~Byȫcv]}JW>)+w})% v)n?=%11J )"Uث~RS?-wbD VqH=$Fo tF@W/IjR`.da\lVV+* _T04*aV%bJ-pLh8t>R:VIeNy،{u/=wM*(XpawyKSUë/k.׺;1j[9ݰvެ:ט["c^*Hx?jl\nqTU[r38wj'jg?ɚzUܢwL`f0jݵE1Y&1Q ڷRl_r/ h( \̔p7/FU XlN$3Bb!*,jXH90PNѨEBͺ5kYaQnbE?L*1QM'؈rfh:٨3=l.cOؚ k`̬ I\^b'a\fEk[~[Ň\5'-\GlwrTpǖMr,&ɒ&̒dV(c"STbXs kٌSa`f̀1=#NgيG,/*3$#quIט Sٌayfº2\&lԩp#WjPZCNsA,,f(YȔh1I5WYT01(yE=g#J*`"Yl#!SqJRNrOI$%ГR7e% nWAtضLUꁓrbƦ h9csrws~J,?H委*Ϙ$t~JiʰN'[]ZS&_Ěܵ,njT*'gMWOP)3AK-Z.LP2zW/&.Y U**NYqt"1c&Y)A d%u)j1j)jIå)A)ZsPOOR%]g4<#<1Ƭj2kTzF\Ci/Oj+,+Vd\FfvR^(驩%rM54eƍtL`SRrl8kU$!5Z#LR*YZ,^Cڵ޻rV|_pWLMMwz J:Z}?mf(iwdfޏI X8"ּ35wC>Zx]NX$L")q>eQ2Qt"&a5#iݘ P 6U;΍®l53O)bN9&H:1X_qcU51M2٧sd&)n$)}BU+Z83%:dudWkFu`_b2NX(-EOHkDXYqM:sq/)јGxanqZ2V;yq:b2VTIJdbQO M[u:Zב8+F=a{t5=Sz=$y}#=urjT*XV"6p4)V[i3H6(BټB(v;,%5TSs >oS$tQѪcFU5nCY~X4rUvRUE!]rUD wUŬUAU1PU̪"RUU%UŜ~@Y2ˊ*8,…^%PX,مŢZP\uava K$no S¢/\KZj\.þ*lr^Z(6j͌j&zQ\Bz?U./z>"1*055+lfOCahCʵH2CiPZ&Re&B9.4R{oZJk ^(6b,eʍYzeOoct' UjZ*iLU|0=q!Q2S:d7I:gM%kӕ\Hk=f.FZ5ΰop1f\P lNW$&2K%3ҋRyαk.i>YtQzSn `$61*_=tۑmukR,ݧ|3]F3װ~5= UhRb\ul!9aǏ2+6+Vl•pON:ÞX}ےN ErخOc )'b Mr80g>;X b3Pג1YrX^O}}y1/^}bK>C>s8$McB>J8M_=bNjeJL/OrU*CZ=z=9Vތ!z#{w wb{/"0zyb|)v n=dfi'&ajz#Uڍ+$;v1Sya6Sn!56Iܹ+HbNC8/{Qɣc[< nUk)} 6|!UG-n8.a 4)ZL5NgEhb,cF㊦cou8,ʘN}W$"v^U#XYw4-N퍵cǦ*SX_)=cxu':zt3L (Fhb,m"sB3` >̋ڄ``ɓ,CsZ>65xkUQz5U9R9I83"a>NADvslK0mL3Rr "!RY%b}`鉥'$X.bGߏlq2 @ԱΊcSE*E-={!/˒&!g=莐HLaZP{qn555Ϣ{6n ~S0iJe6S1.?Oi^sio+YW]^+#FZQb5>uknWǍ >{цW_N~6l ϩ켱 iQñl;َ/ĿI./]Ո2Mk5ɡ=ްy 5hgL߈NlyZzc>Iqf~-i<G(d^FtmsƮnbPma{mAz䚬oMV׽>uVP֏k׮Xv]:نVگ=##E'EϿ,lw3lMK6<ž0S3xweOOx3oolU9L;q5rk;ho3<|}%ƢΠ$p7 m{Eg{>%L$!Cf8"5̣zQ |x εgH] f_!\W2pO"BFW4}_#(' d1SJ}wh9룮>.Q3k஍y⫨'iO|H[' XFM?53gs;wK6^a绷\%UU -^/Ҕ+'U[2 ~P߫l߫9ˣr g9.~“0ITh䑎jê 2j>&K 4`(RWʺR~pad dC0B<c`, Q0 88` 7t(YgLQS{i~3䝅s -}t9mَL}OG)0 88` Li3 `̄Y\k6i!Z"`lM)XAo CEL.ߴ^ep+*&a^S" C h pt'm ^͢,~88L6~6i!8)_"_Ej@9u$)g owv{>}I@S 1Y4fl5h ~9 p29_)X;=x_~B5rLNJTcDL[ik3mm͝3Q[΀0 fS^s0σm^ŜWJe/USkC 趿XlAsh ZCx}FD#ݧb-}t-%r$hJ :UE8dZ4 : ׃na7C:m0p PȄap < !cyqFx&B>L`2<SaLf̄Y0v*90{1I;t @W`78!:8)rT,X %P `9' V*15Pka POK*uJR*uJRlU*[M(8o aGOP Gpx*"6H0%WOgfL qapbw| xxa-m Dg`3Tx^[^Ux ^:Mgyo><.ž| _װoaa?@ 0~0#3cpNi~3p΁\4Fp.Eh \Ep:\>\ۈ VYe3X-׻"sO33s/s#5XL0Kfbvp5>p+,VLs IܟHH_I'E_6(`4H4)h(dB>l a8Y-=G<|NEH Dji# dvH.˳4s:s iIimksofNwqu^v3Ź/-;KC嫤旘LK`T,YrIh)W7y̜17}_UWm]".̞2{:̩YF-YKԬ%j555kG\}(WՇj\G\RKu^O?$旄2GjSWUK-YyӅs*F[3%_5Zڬ:ՒK-[0;> Ҿ@^#'CQ_^BJ`9'@򕤫$f_m赼:rk W|+/Iz[}$Ns'y| ;_@K̝O% T|8H<18'pg? opw8 @0fF|G6Gn>yτjLc >fSY#2^e ^e ^#=Iko"} *ix6óPEx/p-leEx ^7yJ xO遷xa>!x>"ctfs%| {nt/|>C\;R7$06~"Gg8 8_N)y~ߠg(!BU9xB$S T lg s<.P>BW!%b8iQh8CzV"bD nzS(O[6xއpP ǰvDbX`7}J}π~2O;1n}ʴo[A)*^/CNlPOJHp p+@$R9N w*b]g0ý\wGHQEsKA'Ȉ 2 #%(+HU^ i oW~U_fcHhlL`2<4τY0w)90|0;a aPż_ b.z/唭*V(WWJÍψǍ^H I տf-o&{M| /بFJ< C:B2tp0:$F4kB<c`, LSaL3f,@*sbF FWwÈh<&GQeyeQfėIATHcnV,4b4`e DҩP@YiJ,_DupQ뚊7ŰB 2X+ (a!h+婌lo4QdxTϽ` > ]>w %0AcTM /9ڈ ɸ,^bWs)8\z+n`U0RGW] F3 iدyTgEd"" <, y1TTX 9-Dd˨ӊԉb8:2uԱR2$Ȱ\.[ډr"ǒHyeP,WR#uItUK^W\MKkDOKQޓk(M\un})|Xn|7Q~33wDI . Ἳ9J~&s_Z!H'YFr0e^690h#Po,ux'pGa"O13r++++(p~:8 ci~3p΁V @[{+}omǬM4)"h*DuZ 8!3 ,oMBPg.̣|Y@)b_ Kb]*n-=D[ ʟ2XI*W ZN:ͺs7@u֍oiʟ,Uo9%[wb$mnj[_(QasXT3ZD*")DbL4rD#7M4rD#7M4rʈFeڿ Z@)\o*DѧSL)&}D'{*8ߍW ݸzUvnۍ{qo7ƽݸvnۍ{Ÿw1\dpb8q`7Ɓp`7Ɓ8.Ɓ8pƁ/8kap۪A nŸm 6q0nlnV9q,*q37nܸ7 fÃ͜7ܸ7 favfe7|Y7 fYn7fa,pRܬ 7sf)Y7sf^,qJܬ7sf,7fa,pRܬ 7sf)7 fa̅fe7K7 fa,mp3'n*qR̉fN0=Fr0{dQ=Hl!püh7*nVUfN̡7 fa̅Ufe7돣q?Q8Gف8qq?QºQp'xq Q*qRʼn8pŇq0QJq2ʼn(^%qJGq(Q|8JG (.G)Q8JR(8bUW"$Ƴ0,wM;&7r\WXf{۩G"n+uӥ5SRtW8#u7%=G*Ih1H &R%FK--H[Re9y2)cb|+6H - HyyJ:&vΤWQ':]K%u(q/Mv(CY_ fIo3$LwQ>nJ~&0νt8eqH, }4:Pa&?!o XqO|&>F:YSDTz4([g$EY!es8 s. ]HYZbXJ^ i)2VPeդkH)[Gz7m$DeOS Ǜ-Iݥ~Feסn{zu@a.(),-Ja~.0PuQX?Q?Ja]GO .0_(Ң QX?Q/Ga].0JJpT'.HV5\Կϐ"t@ވ!*4fZ$nC5"_yD^?׭?4D$=qwqD0눊qD\?֭74D$"ֿ"la~"3*ywBtdM#kODuQQ5ID]D05LD":"jO$uIQ4&"<|#BE 1D*"#*b1DJ>nID]D02L"R:"eOt! RzV Tq-Qgq9)T;jIA-vԲ 8mC1 pƎjRPո9)TA'QOLo(IЎ+HDY{ RQS#^ԔRPSjTԔnI5[zP/z=F/ޔ_On}))7SN-g(`-e`A]3x(drްsPYe817I;yPU{<ڳCP0h\GG7zcŠRo ,TP]Cu1ݶ<SP^sJgG})ώ\ۜTX +QB;*@P T ӭ%NZK.;f1odޖSQcu5kuSg|Y>WFTIPc j,eަ0oB2U&8) U֡ݨQ]#Q&/(Q[GP_[h}%QYQX KAFA~ċxQqj=!Ǐ? 9A<EQD 5(Mu׃xK_ +xAz7Hгnz3@o7A?=^_1^ͰT^ KL!?~z#/Z?@iiq?-Ӵ:CW.ƽ+j+~>ww1+}=m{5z%K*qR B.z-^#ds\ BU2+z2BP.ƽ^ͧW&l:=B.z9^#dt w1]{=_Ϥ.=䡀tK&*HgeܗƽqbܻPU0PFe\#q_ɸdW'J)@)(%1]{ޅjqr2hS?]ʨq2qqbܻƽqU2+QWC]}Ÿw|GDm-q_ɸdW<'+@y(/1]{ޅ q3 (s}~m|*,VOhߝnN vCaTJ3<‹JQ>TK3Qik>TF4S ZiEk *-Z+u kɺJJՅ4&RаVJˣJBZiR墵mQkՅZiEk}T]]ء.D ZiTr}uaV*}4Uf0W_0*G]N*G4GS:Uu)Uu?*:e0B]R3ytW#(1{gՅ(1O_rk]!WwEͮUJ\Yv!J׹"(1vE\׹Yw!Jy:W%.S_犠ĈUϾ QbO}+#:W> /D=ֹ(1#(q>/׹\(%BY+(1#(1sYya:W9JJ DE\(1#:KJT׸B(1+׷vBoPb[=J[%D>B!h}KUb%FPbD_rB7|5(]kH}u5$"Jj\&嚅fi&ZbIېI;v"u7'tb?4tD|NrH.$]Bt%i9iSϒ>/Iۉlct^ c`"̂]wKߠHZcE4 ?A-(p~:8 4 8 @l>Vc>&M4"F쵙kOp#"=G0^l8$G\wRd^+u3o8eVL4&#H5P75Nʹp@5|P'b;q?rck򵢆8hr<&B1x1WiA˽䍀khڿkhڿkhڿkhڿkhڿkhڿkhڿkh В7774pDn8uSp3gF4;HƎʮ5ЃvɱԾ?n&/]ˠ"&*7fC#(|T=SD.#*`m"2\QwXs4f]mwApvQdWl/0iCBt A!uU3 A9=g_g_z?>yz>=it{͙s>Y?9QχjE/MJՎ?Ͼ/+Io`vI<^ڛ%+JBt55A_d)A{˩8[fAOr.sq}h"JeSW܀ōωݤ~n`z;rWpQݶlf'T[K9s܏_~ \o#-Qcb<') i sxxuӲ JW0eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6eS^6i~Gqh05:,DW1#>cq qNFN8-D$'n3p&fAnDgl|r#*l98B\q >K!7t$nI 'toz6.hB,KiC0㘆Ò*ҹ*ҹ*ҹ*F9&|Xe,2rK9\Dq\[*zjP*vCխ5U֨|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|֨a-Ԩl5}>ٟf}m8Y~9gSd1ŤTKayp`Xqh&Rc^TJmz3S*۟U(B`šMqFYv%G[zz玦(qIwx}'x~&N$OFǟħ[{}gx[ ͱE[ıEl;98߸]\j2\Wvm3, u/]t lR|QwM_ڹvyc_Ƥuz=I졐=BP C!{(d졐=BP C!{(d졐=BP C!{(dW^+sxeA[.Z{| o;(Gn-nm>܎:OQQYUy:sqTSMs7uԹLs7Y"\dEF\dEF\dEF\dEF\dEF\dEF\dEF\dEFTLTLTLTLTLTLTLTLTLTLTLTL_:K'}/tҗNI_:K'}/tҗNI_:K'}/tҗNI_:K'}/tҗhǎx7v+ hF "b<&`"ރݰ;h^མ}&}h?>J.:Sa|HAڃl8kᰤOS!T>OS!T1`Fsq;Gsq;Gsq;GܾٝjLɎ\LfP4b͠ý'\k|rO5>'\㓹eb:ǫx xğ&$AG !rm-xbG] |t.>G] |t.>G] |t.>G] |t.>G] |t.] |t(Ё] |t&]TrJRA*9H%  |t!,hJA[C7zhFʙ=.)Q^j7f%ެ,KWtАAC:DeАCCz2Ss|N)9eJYs|N)S2,S2Ss|N)9e>)j)9e>L]ˢyhSgT(}3%~_I\\ qs{}7wܩV,ۊ89< fp|R;*Ƣ.qR}Sٽ-46E[z4]EW,bXtŢ+]EW,bXtŢ+]EW,bXtŢ+P%Y%Vm%Yq%W%Yy%Y}%XŢ/}E_,b͘nt31݌fL7c͘nt31݌fL7cXƢ7Eo,zcXƢ7Eo,ztH?y$qtǪ%5ܒ[jZ h^ 8&rZ!s')}:UOo \ _"Je|__opy/+:o0Q3xyK`ײ|G XV`%^+A{M:ne~<98E\W%_9f!UHd ȅIdk?aߩj6uPa{ڳO6޹HN7ÎGЋnTі;gqd ӓaz2LO0='d ӓaz2LO0='d ӓaz2LO0='dت<* bغ .cr`0owx U8 Bҟw-ӈ`{d> vJ)XQykZ%VUb!b!RR*X5XuXWC͌X͌X͌X͌X͌X͌X͌X͌X͌X͌887r0Wӹms2uA%WR siߺT ~Etw[KKKKKKKKKKKKKKKK}B7N8iXECPt,>s1ab\RwIQUgK9H?LZ-[jUgߣ.[խGuy:O\73ߋ{~/EH"^ߋ{~/ CuH!Q:sS >H*NWY4KF5[^'#(IYZk61[ ~&s 6؍n5tF<2cm$fk'$sX< 4lEF M$IMFbE*c7^۵qXd!=7fȌGٯNGb85[5[5Xb5qp*uHGNbSبV)BM̆b6̍E;a&`"&e]3RU]ݱew,c#T5BU#TѱQZ뉲qĹ \^\ʪʪ*C1PLb: Ц46]+4n5:getރҿZi~QLW\_>մtM/a ڍN*4BhNץ;ӬL+{kf|2FC}<dCIOǒ[}k}k!VhWb'_CbxHe:;Ƭd͈&eW! dnk$F&T9<ᅤTEZei%zY?7+<20ZXRG| do${G4gt笌Z犡|s{7~[h2uFL~ Wi8FC2 !nX0KAw/#:<뎛zbFN!Mqm91?j 7۾|/{3hM.f>3ϝ~"k@$mo m?$V"=]'lP~ƹ>Vr`V/g[W8UXkw}V v_#GTY ڴfv_ϵE [[B<ިjbէ<ٴn x /㕬(*J/j_=zsk7eso 7ŭdVv#ލsW㰫sM zFH{j۰}Ƀ >ds;a2<)Y2z$Uvq?sZMVMV[F6toFb+NnGG:{ѫLu2ipӺT1ShdU6m_ayLJ_C&_CuilqKlֺl8dVni< As35\kq}2(".".iيdGڐjvVB׃BG o$b A~N=Fֱܻm]+ hA+#]iq&~i}@6Jx oC=8A|хujuq>\l%5Fִ ~kom6u>c@| 1 6RWYXGV[GRWRGZ SR#s3]PSUQe-U2i06[ŔN9bSvh+S ʙ"(OJԝbr^ھs7TS%Gsۧyݜ}$HV-[[1{ѣ pCMmN_{!:h+|,*ĭ Gh Λlws繠VVWj3==I#cۗB-g39J_HVφk37Z]CvJ#LWxu$UގIZeklNZw؞ʶٷ06{:B~H4e'\qYbD%D9g:+a. ޗHK0~sH{~/eq.~Li2_OH"2RFfT-r>흟IjFFn⬚jc/VlһAnn݆m݆mنmՆ\mņ\lņllȽkȵ\kȵkȭ\j zͅ\Ʌ\Ʌ[Ƚ[ȹ[ȹ[ȹ[ȡZȝ# E5zkMۭ:׸5+e u|8ŎO+Gñ 6I'q2(_޴F6FWy<<ʷz 4̧ uVR[<"$"7|۠ ۠ 26(j6(j6]VwYxcކƹ4:q >{#)wd547?YgW^tw:Iw 6ʣd d+gE=IAGu_˺n5nܱA2ަ͟ XC֐5dy:K=t2e7-e\VRUDq$Vif%;MJjn v`u%]5U]5U] &KIqG(g:8>1V UjUV ٚ 6.qհ5lt]7; nt,) yg;Cΐw|}\2}^˼߲,Vx4;;q'`:ˮueWv}wz]Gov{,"oEdT䕠ɿ/d^ζglJ^ɝ;Mv'/[ɝl̝, xv]aOlϩzǮw}09fGUٙmyl-w8 [z.j(YKWɣU3;sdIBrqPlk/tɏ=>o..h/o,VV|w/_mJ0%G󢃃Gqhw4-5rQBHG~{4Aiv}Pu@G{c_n,;nt_8ϥ꽶 o`ApsvgA1 `AaRSkaߦ )=)N+liG{Y]{`M`AZh:N[0`JMw.#~7`+,?!:`s+8vՏ_Ӄ_xb6^Sp*>78ӸZ\4y?Px/B[\XK~ `n"Wͣɶ{k|aw˃\|Gpcwމ8@24WLuLGD=;3~tf9{;;fwvhw35|&$qK"R^Wٸx4egL56sc3 vo#/ч|;}'cb^MsOOX='F98Soƾ-mߕɽr/X=f=9˻ۍ;9|;+͛ʳtxljqi>F{ўgyF{ўgyFhDd &iDfLL#2ӈDHW;O<Ӵm2iOa/}^L¾q/%s-r4+2^V!dNs; 'j߃BcvRUFaߏ^tS2[vӊnZѝCn wF!QESV?:q,q'>vq%Qg`* ! W$6@DGE, bP5뮨Ѐ *,"hTD xDE% "DDTN20\TW{WݩsJUo8;.ֻE6!pS $SWeT& !hɠ)? ʢXZZ e4#]Z}\l FO@k@yuM n-/@~ǘwwwwKJ= }Sh (Z~!X L@oSSSSa)t ;a?!~7PQi@u8h꜉:@|Il|2|`?%A^;4)P6>ж(Z.?? zu0hh<޵䩮%O]\>9- B\a/ >J TRަ݆'B;׫p]ėSCV9b ͺt#b\c\c\Cs1\ytiWa+ DK2R*Z0hEij*c z/_h9cz.O #NR6K˭q.F z_&/BYdFd@NMO{ZH{C{C{dA{dA{QV{ڣZE뱨15&tԐ(gggg `縤3 !~S]~So7^-AE=rk 0..Aйtm6n @@@Ƽ9U CЧi4Dr4xܲ2u(g fz3 @o3ЙJԾW d d d d2=,WO'Гtd:2 @?@?Џc1}bz1^ԞRpuW/Bӡ Ѕta0j끃fL i4B>ǹQvV@ !T(ƥgFJ +b+XHMXrk΄bY55HXVkFIPtڅaz̈́v@О/Mfh#!wR5dk; ldipI絙I/'YBx>irJ瓎ݭ^fZKگʄiWF1WPF5 kQ߹Hj}=Vf֍5pO8@7 A tC!B ?h:xo%v1 (m;v\ ;B ;B d;B d;B :B z!AdVg Zz}>?r PP*"H h (ά!eBJ̈́dBZ2!-e4mV- *ReQH($CnQHMH$CHhThThThTNu]tU$cT1*dJ2M$ct1:dN2F' ͛L1Rdw!2z$ld12@:D#Cp(;,ŝ԰"\íq*ekE少,P~MBj%#ΖKÿzP;+JZXw2p'}R*dVӫifaslVV c֕&,0`YΗBp^n {LpR] KgGQpvpvq = } R]Jؚq KQ:.w9 dw8\`x0sC8/3a:Qp*8~xǩ.Ji8 (+(+(+EYi8xn(VHkB+ 5kE@^!|̌/3S\3(,Ľ2pz49'Z_ #p< 5ipk<hwp mG(Hb-pGidqSrQH0[:Y8@$6`*z6f]Z$Ωt*YltŎQQgfBv @ CZZ%W04y׈^NE_#õ yN_Ejy"ER]|MO]qݗ.幂FQFiCUt?0؛)4MJD!#,?FAA^/ajrVզO+d>bQ_kE,d֍`΂Rɮd6LM`Y{=Ǫyl>öoY}f߳15WcZ;uX^e>:rW\$ͣY'ސ7aySޔugޒf=yOdy.; =yO6}ؕ/Rxdj>f#6odyofN>e=|?g {sd4M/l:_e{bl+mXMvՂ[k5n~Zsk ;f1[[3$ߓ=ѾEU_>շZQC(~YNJ[q'Ɗ~1^' 1?(1YL>UL41]L, \<'sDX3b+ŇEJoOZ ooF0_6uR}6 VL_XZC/B6R"\4ӺUI0H[aVD5#9eelT}j#ŝRh-3Hi%dӊ*HھhBDx7'Ιhߗ}ٔRw'g-eK(T.,c ls5Zcӹ}.Y(f03Tt C^b%uou>(kL5(jmn[E+JԈ+(ЛK}gwq3썘:u&?pFҴEY%s\-swA+Oƃ?ᨵ85*sFyו+ïsKMRw\c+s3c_53mk2I:V8L|lhesڝFQǵzZ/;lR&! %'e91&m ;4~ʼЯ[$I ~ _WeFw<뵒3^Rv~4>6+yGz6V3꧱㴟T2sdL¼ki0NL薟u$fosΚB:'9-oI9537һBl*|Ϣ 1mUpdI@kZU1_n'WKVa9S{ #5:}w*qx1_>ˎRꇬac(iY[k)SlX'P)NQ%FnPJmBĖTr$W*ԕPi9LGP4T*vb+")$%JO<,rU*/>[h㴕yY5*d5Xmeg&X<eY7,NwšM%KcX4[6h2h2hav4`v4hv4hr~~?M2q<=;*_ H(1JⶸY6#w&N1Ǚ}5ZIbo#&g9fbX#_+X~cq<[6fWefWd{ٞ/dB&ɾ,|TT~jgVOEn._/rW@XN>+( eurźB,k*5~qQVjZX֪ubbJR]{z[>RL,uzzFMQӭ^kՓj^eLkzV=kmRkZXjE}ړ)6ǃ~δvsov^d/??ګ{O`7ۛzG:wt{{Y?/y?c{"##<#yjgfwE(CUGթ cBIHT~ ¯ ?]v/B]n?p>w 4Fkzpr'7hpr;!qN@h 0܇O#4I- B[hpw2B+КFGQܝ d:uiBG/B͡}^exZLo!e)ޥefKj<|ovj:z+Oirni;WF;h~F#+#Nq^j"X1V }$jb X.fX=d Ab]$SL͢X,bljO,Yk@]YC֐F]bY,5ag)kZа^d.ݥj@CY> @zzмoJk5?GQ&nGw88݃3XN`Pi~x=C-س9j)c/P+"OY[l;]vԓb l?OY!;vDGb (uB(f_H?Ǝ!aԋ[ܢ {r/<j1^J6qacA6iC5,Z(P k׈E6摥m)ؼ[p7[-FSMFյ-a ݻ]TWGA|8Nj䇥̠Fbva/d)I<,:zO*j%">ULE|Fc13]LG'%Dl1OQMxgg9j+;_'!Z(KeԹXרx]%x7śx ,K-Qmx5+G'H_!VG/VxҏG(+rQ* yV(FAy"e׊H_'#5lsr~)D?%S|-voQNB ɨx O|N#cz2p8[>x/ȅ(H.F7(Q.Kr'G+$WG\e.8\%Wr5,?FO'FAẓsZḣ rFInB fL~-8o[kDHR#BFU#B"|z4.$[Bո}pvz4bz4*BդiHWETCSb!T(C>7RD!OSՌb٪9jkZlsG6 U3A%Pu:)*꩎#&!' 5tVqu6rRT7z!B9my.WS55P C0p~SșIE݊FtjTcXuZPn>u?]&Ih a}D=GգdVSj:jfL5+S;qVSRYV-P ܌fjq35nLz4j3@HiϤV֞eBH3~yӔ44ux)8o7 eQgjjTݓ{{!"j}%SG?$Zo_E Hy#9jIAu8` :kx]k]a1bA `v lA ¾ l UEibkr/6XY<`e >ndqc8 3ȸA 2>a<\(PT$cHz !ɠD͠%0(A# JePr(y)F4=< F4!hI͋q_AHWi oI'Igxxߣz=(#pX[﫾H8C)R@ޛ1!$Q>mC $!X| /[-}\ |]@S!a R.z1 &8{Y̢D!Z:\ؽDg# ^ez ^o0x]_bmzaMXZ"ުsֆA簶ڱsOLUgX:!(;X?ugݩ&]pO^gA/c<] Ԃ'p%Pć+W0wSԂo0Oz ٍLQd 4Cx_1A/b< /Q5D6{SOghk|!gh|!gj|0 Í0 Waa4>Ugl|3\i|0 )g p 3 ym#y$%z>C\rxB&#nEV VKl(2aG^pRmmL,8X;,, &66W;d_ 0Ep\[YDV xWy-}o@%xˍ[2\^F{(? ?) ss瘳P.Ļ{X~h<<*? y[$a ӟN6vRGp,<}b J'O2^ً# zӗ0Ȃ2+-rȅ` s-ȋ^k{I^wȑGi#Ȕn$4MĔ&S&4R1Ĕn"t31Ȕk[ލyCAiq~y?^I܈CCdAMrˇ1#F)R>&Cv, ;__bi4%: Ss-.9 w)X|kbȚAK)S{L"E%c9A* <#+ Ȧ"NJ""8U,qT`NաSQ``VĬx+P2vlHe2H%GDN5 'UR`\HW] zx=cqȵ"k"ze'e#%˺XIJFIJ:(5J %ĵx+ґYEƃJg KwCMW&Pqp0{;{; ﲏ==cj3ՙWc&ooCw@}O}j#$f{0}2 ]L> >͋1}_)NĔ ^xk7fq#@hb(0day/7f!c $8oU*op;."l p o䍘 Ó$y+300bq7 YoJq(1DbYS1fcOq`qc|rdNqq=YCzcq0^~Hv|OG('_B7W}񅝧!k)foMK՘<y淸q/l!Dˇ-˿:_9> 5& O5˭eu ^t֏:we\v^T˱ oFnU|vqo6蟗qD?KTd-߂voi{v+.~Z{:~w^ݻx|q2ΗDX0E* W[ϵoWO)+#C (Q+VBut_|+-œNm Uw* =fKWWernJkY\AK9rZ^KKun-_t=0/a3T-j?u7_d_]Fd- mBko͗k=ߟqr۵~:`ֿiYA;gB^2ڝJ&P1jז*m`}C>{e>x|g}u]ٸ@O[%|Ookhƈxj)?ۈ|u-"DZ1DXgqUZύ0Lw e_!}]n5sse]LGq?jpQr|Mߙnݟ7te|k>]k:'Ac_[::e+{'qq*#?kq\oyeE{~^{?-s!\]y[Zγ91bg/atJ~ӹJ>ql*J}{mZߪfb|_fͽ$G)ӯ_bWk !=N,$5XHzzޭ 6l ,eC,(6 l,=P}>dPCl*ĉwY+l& l6 \6BVIl9!] \~~Ymlk5̶m0P.6 'Mb]lf{^c:6*VdžccG_akf'NOOβX!5x:6kDK;K4Lkd$F6Lp ,]-`;<4*0M94#bc!V:JP$V:J0S9m9v#, j]?ڷ_{T .V=aj";T}RiXXzPw,=$;bcHw,Ksz|ޱT*;bcydgwkK+x7[Z%8^kKKՍeKn,K{ź>^ҧ 9=#)K~B2%~N2e~G~GC< xtGcC6zm/굙4~} 껽H{֟gi$6q6ԏ#~<ڲS*5ǞmsRS<{m}=z{6*٢IǖaO#UuW;`_P)hp5ZJK-K#ڃBFЉ!o]jЏmGIѕlF7=Lťh'N13ZKg1lBF6H.(ZNf,o8Z ]RȖbЖB_ւ@e%E#}D]œ.@jPhc2 Z,--+&œC(^duڐյAfd{l/mv >>w55!k@k쯡MfvZ$,,b=rh樷BXzwL*fPB,ZVCGu&Ʒ1[[xtIG=xt̏^DT33L?2Ô HSsTObPS) uWWAG\`sģBIIIb~ 'Ixb|%ϟOy|3B@C;rxTDO0tmNB/LjCJ R"o)}zRf7I{=)}3IEJ R^GJ߾M#o:)}#o_R7IۇIۇIۇTm\m C[qYz p6@`q*݂! !@v'n \GƱq_s*c{]D6 ׊s/FBV؊al{Q6!BYq+w%a3Zn+a[&N؝V8b nGvK.9t2!uw:b0:0'{ v;lRdzl7ƅ9#uuk;P;Dvڇ1xsDm!u;;ƿBe߰o0bXREG[B,; m !x7BXK%",㱄QxŎ88RG% Sǒ: =]!XUQ jC3ڐ-\D 0r C]//0I$_*_pppCЎxMdkЉp?[o!Ѿ;l_o_1.ƃ.4 nohTG:1* mhTШG!vvbl8 N <xVB?x" ƋQ?T?vRY G'J/TzVRɤҋ!ՂXֆPHCCŸPw$(b#֫=yOx'DD]Uu Su.HOXc,z|Xp>Ӆ.0glwb %0蟂? BA?BG؞FߍtQ|<|yHK#A ?q2)dž>Oø!RxB؞FF!c*1rLM614yVYIOx'M^y !ABoz.6VFjhZ~pZ1kfcEh=G/\#2x_/˗!.TF_o!@XH|tOoU0:b7?\l~<<<˯ 3ZO;\My jͮM?0~^&0}^o3zYz|ZK*D)R>Kcꇵ h$ jHR!FçvQF/ۗM-Ƕkd_o d=)\k}|5Z~W;[o_od w7$}}> F???Ϛ;WKלSfnL7ʍbY{FOlf3֛ϿT6̽9u)p.Ӱ7xE^wwwV`5N/3GF!ppc 3߂6]hVv3^3SI:׹qLu1Ng3Bۤ2S s9e~J_ͥ.m9Üe3K5LԵM [Eœln07s<:AcvD;in¨ k u2gh۽k[di("%z YXu+׈r.ui9*A-& Ws;—'ЌNR RO(Ii0nn!4op(&Fpn!#TE&Mi4 nJ2ȕc0Eo>ywǛ, c0<Ѓ} &W~[$2P!b[3[ L>i 3輫gN;mttWwJ-K/x=444  B#B#`GhTh>;C* EFEFA={klokkk lM6#|@s>YIMr>7%|,}|=|F?8F>s\h̟4 P~NȏEpR)φ3\y.__]y'R/1D-H}|)U$sH4%NRC%ALrt2V+(Yҭ[ HJR'V*R+˥ʯoqZw}g҃O6KC~)Ͱ?gNĈIsjwIaai.zPS/IeJnJYn)>R}R`3iI~oLvDz?v'ۂsJ;mwx9\+_WH_y_JK|_ _Z+| BĬww] Op~YX1?e7#6$θP1eMn7=F=(3"6wKyR@(@HViRۡҙS\}U~V?`؍Ŧ1pqQ`5&xlh]2k]FŘ%%4&3qcVm뛪oԷ>DϪ ilxouz;lFoL>#İL̻LO׶70LjFn5tE06`Nf+Af9[jca HsΘ`4;^[άs)M=nl޴8 K<1Ǚ63psY$[[-86tXwHAO=ppOwvܻ(ȇp/]`0P{ ĽC VKgC*B.<-a^x?[zf l} oȪ ޔgax0AQa/r> g{_{_8HCMu |D|>V?P~~"Q"Km/Rz3mFJvD,.4$eM#UڄT8 BmqrnEZ=}4A+)UUc/^mu6VB_IOp9#UcAz({$IBRQ[1 azg>pEf^Aۥ  #>gVג$qnr}8>ULc.FLuz@[FVEm[΀n-lV5R:KëZLrYZaunjEhW~K;ë%Ui 6vuᴒ\ꆒ1v\']%%YU^y\VWRU*׾1Sc;$upQgγ9Un2-OF"Y_>Z3S 6YðQk}U䣽ԟ-7TnEl^\^v ޹3]\2,$tS3ָjӜUtruj砪"Wq^׵g6&Fz䖌q?ߓJ3ٵ5Ż=뚳dkf"w YM]UKO= z{9<+Z5 «9>\Wzu띦sPy~?m%gX0,Km\Ԁ2Hp9359§LۭNML7IN- nZrt2^skkwuCY)OǻKDxak +3<=\9<w*wLƖ^+MA%cJG +[WV~S>zFzFzK+=Y02ыng"Og{JJ'ѳU'Wӳ\ZRE3OIbϢV_4v=ՒU͞#ȕY f\Iv =Zi-NZAL(m*HKC&IoKoC]]H{_RC`ΒjI_bB~Ć YjHC!!))$|r|9$D ȰζΆ'OB)Spuu>dY>  aZ 7XY PPlv' e 08866&&Mmd7&&C GGUyYyrWW6UU++C'O0JySywpcc [[VV:pS:\! v]XaXѿcQllqC5T[WZXduQ+zv5k7W$͍~\>^64S-Um}sj_/\Z]X;hΰesWfKX5_=;z} ͫI~xT-uUux2&K'-ɞ{zNkBWJWɒѮőwA`c1Buńp!&c,!E,34# C,~)`"„11Gdc`,cN„#`<[*U*=3t?/3=!ȣȸlGc~&bP+͇1Z[vO=t?GaM1?g|`^gXێX䟓Oh50Ĺ=B9 ?pFׄ#u t*}K{ x, '/3 =.7"M[d(}dPǼަyׄ|,UuL?f<13XJ~5葊N{oK2IK>qCAV#WyOzp:a'Oc-~E#qp 4(tJXk#l{uTEHa=$O9H.;bmjLV#b5j _z%uGCs!d+Siɷ.Dqm Oߨ6նI?䟆6с`\xLf>Z'dulϐ,?au$1h}뷃،gCس { }?^~23OE:.wzȑQߪ}ʓ?_mŝn8Ӂ@5Slix^ 3ya+ d1'nQ;"F} ?PhpBa %tON#S\:<쉑鮉CpLDXO]~:;KʶuDHT(#W鯊e )ۇ:<'c03M)` v-WmW^?Q_0C3ۥ JB\1 ,Gp++\&2> Z'пhTG"`F~&x) M?O`]#JǨ|0|K5Aʷx@C+3Oi08ط臡P ΆV甽FwF.f$HD.O~$ >U %{`IeWFNJV@,nd_m^Tӂue35k"UY!: ntVhV BkC1Bd *5*B@]F pE^WRC{bp 9 |~PyWpz8$!_}d/ևo;<^L wy5~gװ |I W>A9dqU4 !"3̏1$-,l"G/yya%}yyKC^o#2&`~w E,c'QX16 @ ا~FW2ģEo>o! 6Dwqqqv ֤p P(]*C}P|D56HBL"Lv.|=\ ?O.ۿ'> 4%> \ g W!KC%>}^%*/]'ބ+߹} / ?cmhqqxM:„:„:D t _ʼn;c\UHXq]^i?0aj\IH0W6]N ?ioj!>O щ N-ZE%~_~Q%bz mOoj_&S#ۀ'j/?.:@t]Ѯ?׮iNht~2ïV߈|T:_^| > `];h.R&lVUb5X֌L XB*H5c2^v*# ULTgNREݩS (zETRZWvZb{.V8e  }]Eo3޻ =`5Dzem[U@XE{ڦ}sHg{ަw?p1psٗ}uzK}3ێ;G{}lo>l/Gz}]߼δg u2wpWشU<*[YzUteU- |zB5ӶcxEy)֑a;]-WYeeQYVkA{mꨱNW'7(O's}[u=Qb8Ժoz ϓ=ԝ@Sn>ˈ4;Jҥ' [*іEIԩ!MFYu{0W"$ú#Dw2Lgr|auL2&P1 /¡FE GXO%* Qf,-{\x*</MOB۞X ӶA1ZlWb\âC25Ƽ""y/$E&*[G;`8g]9 vQ\ܒ%ׁE&j@JGTHR(JZʗgAP;zj]n1 32ZBʹanC.f{)*{~i;Nhг j-[m~zv7ݾ # UrTZ #Y5TD{~y{ fF{Hۆ*8ӴN-@tVtWd IwnrG:GMƫ`ֈ,3eYzɌccИ҆=E:0Ӱ OJҴ0o:&+!iŞj7mkMҶb+4ˌ2BIg$elnMJYUV[nK17G)(Yw-ljoqs0f-tykiY:bu!U]am"?0\W=SGuWlbJ ө-ǀzu$HKX)Vꮲy%v+Mz$?TȖI]%˒kj kZ@SiK,-ITSGO[%8i&A޴f7oZTX1;SglR`JRt,Y9 刋ty^~!JRb4Cr5YOJ H-w :aaxX׀rbgF/GF$'إF H{XZD.]9>C'I7$C{=N, \>,UJɿ=*<_CJ:RRuHI@JBJ)@I}kBAʉ44 i(i(i( i(i(i(7PHC#>|E@"}=&=Ͽ\+p1_@45*rO+3/5ht?A=E;.:*tщi4]%h/D*P"jgN\9q''-FP=&wuB+%/#?|_E~ 'uO"?gb {&~\\ rg ңAmU+P[E%@m!E}?***SPUEBUi-jTT>Zc#xo̵_uM=tezp<&B(U5"޽RTݑi#n/ τѴ*[&@jݢVSp%CQ JuEStKs@+M+L3ŭ3wz:ҒU7ٹufX;E.%">fޕnse:ڛ&Vv2$(ɊkNl|ib8,.Խ_ךP/KuBt[T) 4IiDfD&iئx,]LR"U9_2L6ȱ\׵n)dJǵ%7rGXX¿(gP?fSycnwؾ;G :J:.G6}9h8gmF2,5·Qz u'ÙKt#aY`@dm8{I~F?7G{ 882Ir3גkEumèpxͧyӉ(d8?+ ,>W I/d$di " 5v= >  WA,. *WZy. %|#bt/o;Rúfҗu3G7X].ߦHsN^y3>f9s?uR1UϋbX%ֺڵºp$sG.8b]ô]Nʁ*wU]űǭrklK23orӊ2QovW]"W)u;AJ AGiqN|7 V)V|"6J{ KȻ?F? ySȗ _:|uDk^Gk _|IdC$& _yfC.?n1qXԍUL"Fc>>FE릏3QI)S{<}R~ӏAH/[ʊf` ޣZO-z>}'ɬ{{#ca2,5`̊~9#c /YF˔3͌ԋĬ˦0ٖr!!t]im8fZIڪVx;А^ʽa[>0.9/hRZU[,iaNX <},sUdd%>zN($cdlbV}oU~՚lsz m/]|\kWŢOlj9Џ7 }:anޮ6|s0V-~L{m j\kiU2z꡷ d8Wu-2[D`a]2 Nfn&Tn{\ szi9;qoQCym!ǰҚlxZP Jq;4\n>s/6j1֟vۨ?ZA=ph姚Э ~VZۂXpK# :rF4 ~0̸+:-1qG|!U"/u37ř؍fע*T 50muWP0a11l 1!|!8&6|vcm\!2eR2"u)J< CXE,˲(X! B{ߛVJ+9sr!J}C<@jֺl Zف֮gmR[oewu]@Zي.eK6vNQ..tͺTLoR,K9zZuVrU´f1 1 o7՛=oZz ݏ1֎Pu UoAI( R<؆Nϑv hZ .*w׻EXuTTQVb2J;T<?Q1a=immqȭ>V>gS~8z7={zQmJ:jڒ;|'e^Rje0pT~&FnrޭSS vm;jkn]4}Ѻ,tN20ڡVR8ia} wj?k .oUzm;}RjXޫ`T;^8qP;U4Lk+W [ú1aYFؼWFjL:=0JBc!L)QJ[هA6-Z{kPhd&z: ڼ`lLmڂmE,umB?dAE_Ota]sxJO+w]b|"ߘ/ųߺnv=߶f)}[m->DȀ ~E@@N5P`t`"ZUo xW@P?#CoG;2VvzQWϟ4X+琰g*\zrrQp-xhR7ASE: ];I6LD r=  l; ;c{v/z8c8{Z=~F(^ϫ g ^ן缃ޑf}0 ͡4' rc@ǯ@UskVmSo[UhXP/K"T"Re?Q #_x&FUZ5N?0ȈqTWtu>aBhv O*jڍ50F6ߊz6ݲܸ(0]iOՊh'F7J5 Ƌb,7G>SژޚϦd?]Gy-1m';gg KK=W?p\XE}>/ˣb@wjN|ta%,`}_݀rX69DTϻHErG+yNauCڪZ@['qD+㋝х_F3UiU[m#QS|^w[~b=DZ$-EB'/ 2֪V@ź[Gu)HR`)[H A}+Es]Ӯy׎4F]es\q-!ThvDQ&>odrFĶ)'KkWĕLKlk%;mۡڽ^uy-}r<)oKb]V_W\,DbcYՠuKfɄ#<pEJ`}aOʗ-keK5RRܻT*:Zbq= 3wLr!&g"la2L&_c?fr3D[x@&}|E%+z4|Eb&!? ,RϰHY:)E"0HY߽]~qw_wpw' ?"p1LaѴw B#0Lay^By %ap%SK1xL-SK2Pb(14vtEF'|R)#<R~Hh(?"x)?|P~BP(aB;eHSŸSV)N (S~NPn!QXFxXXKN2QEJ|M ͉fh5JODa @#_B/WoAg+wŲh6 (XH Q-W(N˹-~ >޶دi4S'xt20CewG¸Ht*)@_xV[<*ZȪMRD!EyCOj: 祊ls9QD~qot6,"]Rޝv3C+-4FMXGj^戱'V0D7T)ԣBL?,~D.N%)ai@+DCkptۮ4G٢f(2F(M}Y9V#JʓWЫ4Pp,*əTؼ=Ij %."ǪcݱeR$ tTrmiP ϶RlOװօKFE2ۡP[<V`kSڼԇ3mͶQ~*ՍKʥHXrYg@BSM?, )y'mx^.3ɮdW?}M)3sۭ$%Վ"Џ2;ݾ8ľ`gAGԁ:\]7jrew嫪]3ž3QJZR$`Xu)9ܒ`z4VsLVH$ ![="!Kh &!hgL.RR),,/-UTlsuB)!VjbuŒ1Oñ d ݷO@vnhsȱYC{1j\Gd/CQ)^|Nd)cO(W&5tLX"U(A؀E؂; {=(Nlk$' Ő$ :C@$/ GAq)))H B$R'u:!r7Yxn|xqcf-ĉˡxEz,$ooJMH@x$7x#To7ACԿ>SwԿ*O{HF?ǹǹǹ\#?WyMltDYb-j1/Cx e\DšQJd6WzJyyqA)w4oZ1CT3InSLEӱ(? G xLQ,,eesӵtl\šX"VaWq)1Owa#Tf9.aK=j0;,#B5X-seٲIYR͗fiY2dzgfanCh̫a a2Il~Z,MMvp@w4Q:U Ϳl4٤]SvQ,[L Ja`IF>S  ,&Yl +{4$5jF&&,@îyݼp"Y&eвaI52FQEyܢ4nKL~,XIt m2JSqqq9w3!2 A&idP:*el\L*w"2ċlj"T3E^}>N|q.蓓/bn`H #azn~JN~d^. =]&͐3N #r>B¼,UU>^<̒#!i[%d/C'kacfFft{MqѸo<-Oqh*GU( $Sc;p '0p}l͘@frT da5^гQ#<@S[LE <zhTzYYA;n "qkڇE8*efN,dt#k3"m/-2s*ߗNvi@ h:ǖ{dç{`P#/%-l$myǤN 8ZJcJ39u"e8?g77Q7h:=m$M{@*0=2zƕƚƚjHl$:dr܍%zӘ(jT4Q0_\-<&K[e9fAY m,)E2;9ϑs]izwȆ§v.\o e0> E UA=3ҷK]UtH[7#3pYzO3=Nx'YT:;H[~6>}-$CFM@9Wa0=~? 7k_>}_ן!AG)X9LyD)yky< fBw^/`o'9̚0-ov޻*Z7! c? K)tr>RCw)9p'9!H{|Qo{MV1B]0N҆h3uU@f+}vNDrLP.}ʘInV_h׸ E~8iXH˩г_$jsٻڹ*f u-jM6ӧiL~ƅ &jG;h9G9i[,99 wo2 ĜZv@Ok߁K. Q<~[yLyLXCdIFɆ_)8STShcGUӂ5{~'Д\ePkQ5*i.Me` k6AVZZN׿.iZXw4(5IJQ :yL &=gf 鵴8fAּ%> ,yX.|K;R_<˴S.{axv<f9أZ˹!P6˜2PkY Yβ=_?i]nW `d ~3{koyϙr?X3cd _үkRx5k3)@NJ5 3W=֜v"fN4w'iejP {i8tBj|qJRX%O7xbʜmLl͖fMhr5rf9k6foљ[lJR ^k,)B]K\ȜKtC(®zOs_'gtŚ%y!u2TCS.Wz(fUctn6-}5 $ te0o g24E+*.ׄslTGhH=INfp8+j|::"2[e!|<30g~i}k_]p@wvc7Jfs2[wbBHɯ߀;1a PC_?@|1r|UA"n/*_  m-"ݯKm5il}!w.9zh-1rnpJ݁CwtW&o18KPkr@,W/$-^*(ek\Ȗ{(pk!.P(<%~  <*շ@쉈-zt菞 @w~ |oB}~bGT^:W*^&/xumM_w>-`YdHRda<*](A$OdɒEdW=꿫w\2 (ck6pl-ur[ӭtkܺ(Oח.jnv2~n7ſ ͎gG:qKho}7> 8py.,VUw_w7|7qCh!o@n'5M e,?J|Dܯ$>~)$~4a|ͽ΅Kn(i  mj} ܃?~MӸ\S\]CF(D܅Rړry$ϽM)t8 7%ȕJWr8pύ*rLsrFQ$]˽q:y0YiLJ<,Gp7|~"?:[ڱp,Áh^OBM9Rݎ] Mɋ,鰆{'!T'b 5G48SRQ3u F6 4 pW?BͻhVCb e ]Ki±'D:TUJCcsMg#X!Om/j÷ho |&OP\4H32\..MO 5pR,F?jF\| Nkı_X|v}|~m"7,kG/%MscM_$8 m~r_\W#ʧ#?ȊBee,4N+ޒփc 0!+r6-:S"n'³ІsTWɨ8Rd[7HNXm$֣xzf]BDO 0?IomےQN%j C?53vs GRg3N u3o-62ljƫ-jAK aPh6#W-ŦOlkQˇz;F~4|Hu0[A€6>/3{4W  uB/f/6'%It3`! jg>\fFʑ_#cav69LƒF>ˠ#/@qKX"%as&|R:.dz*>hj&c|%7<1|'k&`v}nKjoC6H {mB|2'$|5X#$,M}fAҕ2JO*my n|V=2!R,9-ተ<6ķ"NG5l}qs,}qd#RU)n)c\Vbt!d{. aY1S !˄< ?g!0 :Ӓ~u`Fn? .ĨE{M fRXQJآSڮ+}HXEV+R& +`ӈ ΞfH۳Jx#p_#q( mH`0vMumm]XjWM-!ұ+Z>fOrZ/OJ jקkMiF7҆'XQRZ9LubB{<3KGSM%Rx0QBE_R Hʭ.̛tzw}?W簘м^)tc G<n}3η</7E>GhVgj)fe!v*82ԀE">$C͕Ʒ-} R-rO,W!2gdznȵ^{_~ Fw@œn<퐐۸ f +r5Yc]ލy,Ž}O'.?TqOe4>UiƟ~ޝIhVxRNȗB~c|Z©1O/ ťO۹k3|Ҫ-j<;EJBAn~Plںp&$ְ 'px$%C􂣄nدM*j\ d4ە*%][W?_}#sCX$;`X#LgE! ۱_%٭k+O+?Jk, WHz81>!m rIg_GYYsm ICr촌cםIYn%3$,(siibuOS"-}AFhb@|nSeY+'cWؗ8\8L#yV`Uε2Zٴ pT|:;(q GR-z;u3OJfFf5E|?FD9°&;̈Mu/=$`wv'-U@L 'ke mXbџG)],9h3?}G.FSȣYYI|׉>¼Vg&C%wM'Bؕ\Dm3 _<]M1$G1WRjOoSImG8a3$>^l c{l 'p@d^|e$F~XHbH{Kmm]-V@BԬX vB)3]BzNȮ5bAOI Bۉ*Ugn'ݛ90Y/ 簥M]OUJf[4'ڷp ځ~;1vMȉؚO){ ֻ#Z ]?_D [\'#c<y7~i <Ic297]fJװ9&r4xNJmyn8};8L#qJcZ2e?8\C>J|ߵǒMaLأls@B\yn'gKG?0Tr7.A9و) ̶WH{/D9uьM5F&iUmbqrp]Wǟ'xI74>壹>9@Rr˞XWؙ? ;\оo%WY.+ p1q,SB;P.vGG6KȯrQs Ž|i6nd-'f'Dk /=2SEǫYܴ|ϝndTSJ ׆ɅI\lЊ.s(ے! f/i2!cw4F~>"F&gs=?"'eJfL˘`OY+1X Wj|cO8IkF`m`Ǫ_xVܕd&]$S1y3iSV93XzJ2'X$`=Neݑ^yn%!0 awlWJ|S !ׄմWetMϱѕդv2}8ĎN [ÒAb)Tg<bS\z̝Q-Pf*íR1nlY$O\gIgZgدaFKuJʤv+%FCX2d (0؊%ɣH]że9KIN:&M;#(WBW2432ۦ7 = 􄒫XeY7E,UXJ%/z0zOu{{.W;':Ο4 3=AIHI`̲GK˟͝c4ju$3 0 =F%a |ҫ*ܬ'\ K]8NI |f< b䵧~G>ܝʩ;Uޤdy-'ՖF8K ȣ!mT oe3dQcwO,b{ՔhSZ0#N)Dy؂ؙǹf\Z͘Y`[2cmo@.ao%o)30r9`}J'N{e][ޟMD:nhS]nC Y>΄WJr8;࿽NW)3d lU5ٻ>ru1D $S+-{탔Gk; CxGbJIȯs vyپ< -(cb?Y?F=8H==)hѷ=xʵ<O_7zRVWC.jw]C3in>ٙ+vF5`)JV%.wgnegO-i$w-oAx Yf3|nշ_Bbs`o0b}w;Rd*? 8̱Q.w[|vx{[j{}xJL8=u=j(?C63vWݽ9'\-~lC}JJbFoVN={;7b[jv;Q~םK|wʻ Oaq-ƇMaSְ5rڛ=|ÇQ(1'V]|+^PtT*UaFxo՟15?_E 9m-Rיh9uN\g.zh9q4ZI3i1ZNuh9q6Z j4ZNu4}Uzn-:Rr~')9s<鎖Zuh9MqL]9uAZu i9eq2]wyu87r?x':Γ8Ur*? zLZu6i9q^ɓ{OZuBi9qDJˉ=SZNNi9r:tJ锖)-SZNNi9qF|`ISUZ vZi91qv`Gٶz.EʓfOjO;w(? -ߴ5&5b˒j&T4bhk:P#1fff9eMT7GEi[.9Y1X3L7s"j/gL Shig3'afTo8NIkÌ?qަͨO7ALMST1L{0}psh3L3ϜRS7v`7'f *Bu-ST5Mt3=M_3Œamh37gz)m4ᦅd^9Ŝf 1TsY` [)t>22 67maW Ι'p.\ gUx ߄_ ?cPV>l[vg- ]`8 3bbƆj:mƼ. nO]wiM~/;L/쁯;aji"=Vamlv]a/#"[D8·K9fIW67@z'.Kym_Irc^Il2Q*k|]7j郎xTMD6ӚaVA"e7_Xw`K{jD$?iob?i͑;^sdU`۶f'v]g7ySqΥ0Wߵu07͏#un>5}4įm!ۿ?CP34 B0*L K Ƙ<-oL%(oqHc2qZ)=7|vsjv}}}*~w NNJ)ޥ .}|u[VJ|cJ|S{Z%(>͊ǿOXF>WK|SM݊CF>?W8z畹 c=r\^P<#6S֖~YJ|T[ubS)Q(R W>DO(kƕ^M[/%*~}raǜ q~???_<3:TRez&z{V-QVg2dd2[(RD!ҀP#Eb M܊H( H#"r IH-RJ-ʡ|S:k,fwﻟ}ޙɈ1#yt3,LYgmt:sl]:} L#Q7Rg򎤣9(di&guEm-&aM_%PWxb KXI蟈wtqr? |G_?m8oG(-cH比q<4Ud*o{(9[7ƯJ(َFt`ݺ!MGBCSyM2wxQ~D["NuNG_ΘsGzDu.' .'$I07~ '~ w~gw`6o=w~O+o`ؿ엁;`9 `[@(3i2Sl C扒d o|+n̹E2hYH_?#?/2# OqwƯxnWx n{ᵸ^,zXov;iew;HIgwMJVI>`{Qv?|}kbM}L۳߱|ggZξd_RҙGlԕ>=P#Ay( .}NҙƖΒwtY:G,+oc ji:_hVe[+:jNlUzh= ]l6 eiuZ_{\{Ui'ZvT;~g#M6JGMtƪuP7t__a?_e5gl|Z 6V߬oa??ϲ ZM 57 ?2L㌌?6n3zzec9o0V:cxxO16񆱍?iiɟ6v4c?k7Fq?g1>sӅ}5?F/}n`C; 4*8VpLKW ܴvGi{>^ea'ڧڧgۗW7ٷM6Q iYeUuqs8~;2GgGwG/G11111QwLv/Ҿb_g_w_/_77777WM=[[[[k]]]]?;{+UjLyUMmFn3y%5̀-`xX3@@w) Tp+ L L , , l l  N.nj6ͮyZQh}JmVЪZmX7i3ybmJ[mҶinIkIv^]Ѯi7un׽zPDw{z}~>\c}>G_/WM6}Go9~#ȂAw03````Y"80848,828:XN N . . nnn 6O? ^ ~"x#B!wH d(*  ӔМЂВЊКІОPsPxTL|RjAv7 MFiA}pcQk3&S\cXi56[ }q8g\4>70nY8?ka3 g]=½32r)r%r-r3jڣh0юnў>ѾhUtDtttltbhkHxTL|RJZfǼ`,KNJccb=c}bAXMl\lrlZlflnlQlYlelmlclklGlWl_5v$vv)v%v-v3nx0n>xU|D:^___oƏO/ůįo&l {›&t81-3'7QJHT'S3s+k#S3K+kI[Ҟ&h2,NvLvKLIMV&'#dcrw)ٖ<<<<"v)gʟ2RT&U*KUFFRɩR3RsR RKR+RkRRSSRMCөsKi[ڙt>>>^H : Fa0SXRع{a²ŠAU# k N.V8p^八 n*VXhӅg /^.Zx#2Zd&) ܗɌ͌LL,,ˬ̬ll˴fdgNedg.efnيEZQ(SԡkQEEW4hTQmQ}єEs-/ZShsE{+:YtBEײ$fl<ɖd;gg{e˲ف#cOegfeggWeg7eeMٶɵ9s2\\\\Y"70747,727:WM=[[[[ېۜ۞ۙۓk˝};(v65o6ۀGT t |xJ`{|f`PֲCǎ@5le]tܰA-dd"~ԏ~a~ޑ+|( AA6ˀM 2ˀ/COhZ&jЏ"?(ȏ!'1p, l~(z[ t_> Y: P: `u΂Y:#ysFn{ Z 4[c ZpE0:my.@ PwB.D݅(] ay!ZH?4+v^BK_BRxY Y /Ke),c˨2jZ/C係W W gvRSv`#p/ 0PD6wvضC?<< 3 u! knXs@Y/,P 3 I`_CJ5`_}MrOfH.c ǀÐÐM2iBӄ/L2˔-PzV~qǑG~9 MHNXFp Xf X,PZl3BA~r5Z`Ь,b>,+N:!NNNNz~dHuҟ CCuԉ*Y<|||z Ys(?Y '`- y `PZ,@ NN>lz z_U!佐 e+ '`z(sNN>l>Qi= |,9jW8r/I' @iѮ,놬)|4^@~RJVF@~2X҆P@*g/dW8kANhO{ȽD7UU#V~h*x9vn3f쁜 YC6 l#4D#ljfZE}="!wByyV[{koy{[wZ-SgE]ةk"؋9lrs }.wZnx1}jK?jg,ji~^3 0:ș:\6+S'dohc9[2ˏcls0R_@`Qɒ9/BE1OyVG`z>j,ʶoW['Vڋ-W K[/%=9x?яܗ˲%KRӥhRIJTŲceX!˰2吗W`o+c :/c Y^V;@ h5:R2ߊU/b';]- }2G- ǣ YlB6!`d[feZVlq!2m]=VZvFl։/@\'DqaDHM g\BT l6[;$E=+ݭ=*ݧF6Yz%l6e4IDDIDDIĝDIDDi觡~MVҨ4ꦭhaZ0ZV-LU Ӫi´ja Z-vA ]. 3838383J'p΢m@?%S;%S %P %[PIa'[xN/^J^Jm)N)N)N)-U*~KRoT[ւZ[ ~ko-"ͶY|{~` m;Б'!0rdM+U{*ݫʷJ[TJQ2ZXk,Ce !rCh[9jV9jm[ꊶ_J E-@G1C C?1C C?OsZ`}wP 6x?0>`y,pCPwAlCRX C6 AlC`y,AlCVU_U_U_U_kUVkU*5xRJ*5xRJ*5xRU#jW_5F|ՈU#jWVհ]bVVXU*jk1I{y?PT6Ԡ 5hC A5q ZBhs-jբV-j~-֪e93vڙC;shg!:]wCuqYubryOЖ:AաaaCjP}ԠAġ@[*ݭ=*ݧF6Y| l6أX5״V^kZyM+u>·:^|xo=Z*kZ*jx] u5^WKo!䗀KvP?nA%FAlV)߀:kSRW PGOA xYǬR]A[#^ԁ:,pN7B__+ M{$D~$JJ!Kᤘnd$!6yJǐ1:Nϐ AneU{|el-l uMdovRvS;Q?-- Tc`AGvv9唚(O$4/ 9i>4z??EO@>]|te`Q`]XxXXCXXG <&x+x'm -pN ϴ[2ʵ,Uhw]mkhYJ`Q(YjXii]{F{ݢ=-`=EOX_%mжk:]lѽEݯ|=BԳl^WzJwer~^@vc}Y~]ήׂNEGyJ>:*DePq֖ Յ=gZZe{.&sےЩ)oBgm΅V·.ք..օ.bk诶F̈ٶEFֶ(6mیFGmո;Q(Qֶר3l8[Qo[(Z4ڪnC~iKH"m%| ikHGHO m%|ikH[ާHO#mҖgH[gD*~@,o!m (x_ l97]1sA1{E3#T\V|bb//#_*F)Fbbb?#7#1bwM?kb#b̳1Y#f5VLŌ鰘13bt[̘k1b-F̀ňYň1 3l1b#fD11dl/G铌b$I*FRb$)Rd#9HbD1MHkRtTtRtVtQtUtS|[1]1rbb$F 7H1KEFz*FnURܦC1RS1RPܭT P Tܣ 33C3C3#wH*,7Ӌ:I8c홝,?k^c8c^>O| oK^J/KkTzcilFY;֎0"v`N`%.`o?!D^Ίy3o oC0??5Rg9?+|_o:g;+> ~'hwϴ|keL@s1"~".C|By")_+uyL+~;毩TX D7\>|_%/:6pL&7_'!vLHv~+x>GH>?̫h?wޛ>eL/b~$WJҎI{џ|1~,oy-jZvyl$v.jN.~^+>#h~~^! v\xd"@ᥝ+BGjrY;`7ZWvC*9'8+V4P;uP'uQ7P/Q? P4HCԠajӄ8h -YD:oю, ]ʼn6No=whOz8=F{iz8CI]/G+ݴ?8Q =L=:X){}~ZEp Aʊ"{UկgoLwWW0 ÐAdHsÀHN""""bXW19(""IruƳO׼s_[6x_d>`>p>hdc8>O$>O|*t?%z>6W1P 1T 1R1V.d1E䊩"OLqFyqA|'.K0 \4]34SK$H|Z~-YKy_x۽NKo}yA[w;yǽIw;y whK] LLҐL2IZ-ٍL R@* B,"dQ. Y\f{JҲ 2r{*Ȋ:YIVUdUYMV5d)dmYGEVPfFl"fl![Vl#ʛd;^v7ˎȜ:[dUv2G=e/[ɾ/ȁr,ȡr.Gȑr|k' r$')2WNyr.o3r%g9r\,K]r[. FYO֗s<9_. ~y@߆9%F%EQlN"b~ řřw;Lߝ-E{]m(Y}V j!V7ay#}Y3|9F(Q% Jv}~&c? X_>X fF-w,r,?Z &;9|tV46EF(he l#;6EF0`M!D&On߱M=N~'W+}Mfu~&PV> iK, 9hmzm(ڌ(QQ%hKFqV|?e4F(r5ѽj wK!+W!Ѫљssu jѨ=YΕ`ݢ#X/~4|o>ӼM&+Jr5Ƣr-3Z<<wwXR)Đm2+u͎+t#dhf]hVCYRXXiPҒW+ҽ,/exZk2^ Vku`%N^'V:uc*c*c*cUrjg9< W5>,7̳ڇY`O{~QDH>ƅtQRԄ];n# 3|D,qxA*fEl^qHGșDž *jմZZ=q[HgG LsZ-VhGڳڋ;F8Ovk#)BLbb^,Ke*jĚZ:ĺzFrc3bsccb+ckbŞ {3.),;;;ߝwt^^oгz[Mׇz>S/їgW f}Mߥ's3 FQڨhT3jFKn1Ídc1Xh,5VGƳƋ;FCSco1NLa&LόifY֬d0 ̦fka5#f9Ük.6+5cS:s !؈ꂍ 6z`36` jl5[GVjM lG@P fjv`'jv-t؅]eV7J7ݩ#CIc՛}x %`8z8z8nR_pSp G5i08ci(TN k# =dӄQG4@#4D4BpV.80ƃh8&$pM)LgTp6a4p.M|.; ZD4Kh.x|nZ.=\N{Np-W2\M^p  9>Jp R9SU:&U`-֦|Vp-= >EO|$gX'8))')>]6Z |_Wy5#:a ޠ?oҋ[6kPLЫ^z|7_&z|Zi? _=#~La-l}Bfp+}~F_m} n-I_Vp}~Ei5}7K(.}5x X>Oҷ)::9§cgd}G'K~R4w΀΂΁A))F@ t L!֔hC)ɆVe)1жu0mmL;tl:6#y6ҶA*;?`;֔j`A ,l`[iv v,f64 va],eK`C֥ #= >K 'zt .Zhjt}JueA+UhhYtYKl.tDUcaYP 61rXɦ,|<Þ"vr-nNڭnBӔwVb9m cI˷Xj Y"VUʰZVq+*aJY2V6'\8D̎c13ta64Y9ϒ'̵$,d'\`ɉ3'KbW%JW_eAc,T<)LԙN4 ٻn!w|-6@߲yUm?_ + |o៹ŵ n7-ꦻ [ޭVts+*nU[ݭf5lm6unKmuF;cDg9ӝn-vuousܞnoo_f%W{ͣn!y=k[-u˱k'0UⷮJ,#QC^5Gn^L2KwCngV~/@1\tM 5 {!b+V6%V 5 +?{m1_RCxMYF?i#JK mOڌe׶ʹAζTVC2Nfl-Ř=ֲgًuهpTZaFfW[/''gwsX endstream endobj 2576 0 obj [ 0[ 658] 3[ 220 623 611 563 662 575 537 611 687 324] 14[ 629 537 815 681 653 568] 21[ 621 496 593 648 604 921 571 570 538] 131[ 488 547 441 555 488 303 494 552 278] 141[ 524 271 832 558 531 556 547 414 430 338 552 504 774 483 504 455] 481[ 205 264] 484[ 205] 486[ 332] 498[ 375 375] 512[ 490] 523[ 382 382] 527[ 350 350] 531[ 387 387] 535[ 427] 820[ 371 237] 851[ 619] 882[ 554 554 554 554 554 554 554 554 554 554] 945[ 554] 948[ 554 554] ] endobj 2577 0 obj [ 220 0 0 619 0 0 0 237 382 382 427 0 205 332 205 490 554 554 554 554 554 554 554 554 554 554 0 264 554 554 554 0 0 623 611 563 662 575 537 611 687 324 0 629 537 815 681 653 568 0 621 496 593 648 604 921 571 570 538 350 0 350 0 371 0 488 547 441 555 488 303 494 552 278 0 524 271 832 558 531 556 547 414 430 338 552 504 774 483 504 455 387 0 387] endobj 2578 0 obj <> stream x}?o0w>tM !ԴSՁ%E*2kH0 ~wnr]}1mk]۳)TkGa&|M95~&։c~0#[mwl*0>{?w74Ɲ$aFET4\ʮø_Ȃ) (N핰8W‮\cUT{V͹%%R ;s)!x6Ʉखբc @#ɐ(@  vDR7|lT4-Us K S"Q#FD0D)UDI)oBeG~>ܣjr:Ge|hC-MRH)2[yiXS7 ^stm7t endstream endobj 2579 0 obj <> stream x \\E]z^N–Httd@bv j1qwqu\:Q%3S88:3:~i։N{>>:unթUu/,%¢ʆ?X o8**/ ^xvvVQχQ0ٕUԴ x@81{†/{t+GQ7nWlp b@+ r |7ͭZ~X&@klӻGsdktO$׵tnTuwgwo=`Ή5-m(ދ/vTh4lu&,6m6<@--Wṷ)//X޽eӚgoxBmߺ+n=],kǚ/<0zݫAXxg⛽*Y <$PrrO1`D>g6d^5Hb!*e t \z>{t] n7M7K>&3bp/1KQ'"zo ½PmN'ouN^:5Čz:N=Y>F]3I .m1 GB#~_S)o_hW>^J>nUG^bZ "񏏮WHl.lSep?ψ"\ OHa<0ȩrURL`B# s&owA?]'| K)ZxQVQ(v48xa<0xa<0xa<!!o\SA2Q1 cZ$(b0X+`' ?jbdCd;@-K- [d?K4QIjOk[g~7)_>l!)^=G<9n2!,tlL`>\.A%TA ~)6hNxN8ERnmssp{KrqrG'g縗@}$]D |y zD'# |$  >>鿣,U^O #{s>7B4j ˾gÿU+W,_)nl[pښys̮U13T^6tESr'dLo˞l4jUR!Av7GEwΜe9FUhY2s 1! Yrw)dJ[ZJo;'Kq/%x^rhU͕XAjwUN6T1X4z qRTM;ȃR.|U-mEuJ$`TWT>+rgmG/5栦ֲ<ZPP}qNVF'&XYMg?lњF3|,ʺ8& [xX[`5&{"vjg B(rX,g`Pf UUssz=g;'/}||wT7nmglY$5FJZ}:-؉ uhwk4[Ap1X$EgE5Q*[UnuPdP!L&֎u;Ҷ6jv\8=PYFkNx/瑮(¾4f=Wh]_ފR0pII6A3J‚FՃ 7kXYs&oi3&/QCm|cȚ5hjMTh`gH\K(p|x碎j$E; oPhQZߚoM҈4ډY8*EŔ,AJRz(9gLlw[*&*7Ainbd5quVxqnY}0Z>m:Gv9wKiƵ⠗`ai}Ic$s抦9IZi%,jDŽRw-h+J )ˁS8hIgIt, ŸVn.P⇋r2޲/DU5Q˙rW:I^\pBETXx19kT[4M /CLQ=;VVڄvB4M5ETMG,Ԋc(߃螦hS]4IΆ(Na:e~vܦn@7VP.fH¶AC4NLŚI ՋYn 8i-U9IDѿF3 [OUE&aaq$vK|&j8a6D"W& w0k.k ~.Ʀ2'Y5uP=Wh&fG-Sy5jŃlP'8FZ.{wywxFl/a=V]Vj%uwR{/vIB/3^wΌgNOCl'tIg,}:#^FJKLD66f"N#U cik kmV* )oae, D„FB= ZOZB aa.aa6PE9"fŜPY('ŜRt4B,&LʊSBB'r 9TY6R7 d/ KMp i1D*s,D8);VRZ3FR('H%hjKYPR #d"P'p ~5" |I1{3cF%|JLB}&LH!w~C&&|@ %-FMx+f[x|:)_#U¯䗔^!Lʟ^"Hx,'%R*M? Kb0b"Bdy>r?palY1 ™T ۩-]N^FJBLDH@]9!ƒC%Kލh%rIK!I+c VĒG,%_X3&-MH̬B,!,q13\#P36̸s c&1S5b>5yKC3UI)+ bوݔ3c"36!cƥ2ŒRt4BIDnjو1c 0%fdL*$Č̃920ڒCȦ&I IB5O2 ^*Aj2B N6h!$S;t!H =AGВRaB3D$ J 'R$K<#@(kPNK,9g(ׯv Vק6'(A?(w(oF{(6[(oֹSzuPu"K_`(?G9ʋ(/<3sڍg] i]O)? ŏjOs=]z\z sA9rXիp=t=r=!Lǐ&r?}(܃҃S~Ku'ٮջ\V(܌rʍ(7\r:u-5\?Vyʕ(Q~jw]:CU7.SڇKQ.| b\={»û wq]]5ճ]!\uvxg3g>JçlۓwmUnsdd^E&\,]5PҨ|^,r.k:mp>H5D5D`$"q@A+T4Wvn VήL>]f?ۥ45bU'Ae׷6p 7U+/7 4=s|] p7DIx^;i!a ~"7p'JL7BSf=}Uk`-vXalFY [`+l鷹tw%4>vNؕYp6wN)vFϟ;89.D/}֍Nu^2|(~I,C :njnGٲa&m8{c,oG1S8۞SpO{>~?rA uz^73з==6'ȟI~;-/8oDnibփuѰzH3ѥnF{:I3:wgG|cmpalj0Ùzpz0v/Zp< C0546'GYi8&D#R)xW%8yN8?~Umx71^f + otL8 O LL_#߂7NM\=PtiX`5Ǫ,`.(6] JึI}SBSkZU*F(wVqq. JJrs8(IW(ro$~Ԣ‚2~I7C2Z&)YJZ4fZͯ Y 2ySqn˦pYr] ) *3*WNs <(( judBLrSt@Lw2Wč_])O^W_$FEQ7ړtfF'3[Mr٤Ϙ׿Wis*BcP%VeJ1!~B̒%C#.( M|FZjWͰgf8k 1)U )A{yy$V\l%}B.XAIJnaaaǎBt<߿& $>K:_4)Gs 6*-|L\ߪ08i )*rnV S' M7}g*RV1)AW?X#68!EwC6?Je^8dprX>\LJC!c#v`n þ.قW%}xW iB ddqFz 6}d"&:=3L8wrZjIcߊ=NzQS5P$*cr> ,ꟑݞ\n߱Ik[tW-+Zy+EYE6?:Vm855Pz"Z%2eeVˎʵwlnKY/+p7T/ڵ8 x9l,oʌ3vz)b ;dAعPReIқ s<J9ƒp iqqgLYeMۯ=w }MW;C"?󱝷)v3ډ 3 qwvSk.z6o:[3f 1$YJUrhZB@0+D'.-%IΊ8POhN[}[gv.lX i@']y#͈Qa)4FՀ;RmP ,X *-/HmeW56Of;,ځp6XRf@(S,ifDO|7NqkFB&Or"NPfDUdU‚GlmU)q[ȊpG5j37rjKFJ$?a~%ɓSV^i9Sj2R/e&(իfݖV קMJ 1ͦ)lsXyǰgnsTRcϫ_74rLpW<>Z?T+EAxL2p_2z<<(e 4.+fn 3o2ܼFGE)b-o_qO-޸t[O^wuW}59fלΆu7tN2 ?~呒mwnZ3ky퍹Ͼ񖫧ϩyWzo쬧qʤ,I6z9d9IeN7r?NlWNՖ.(&a kc+x͓bs8x̢%f±W(t٠0(xVdk+2p(HN;>Cd"t4{ vm޴*O 0x'Lµxtu֌Ʃ3˳}h\&f\5,**븵-oIuI)ރ'Ƒ/ fWԴWmiqy)r#ŢuY*IJg.n/5؜&3pwπY($2Y:mocvpӓNҫ'Nvg+?6;?pN%^.Ъ?-vgV&[R:Y6i-ŪVZԞυ^.PHx \:=8A=ñvxWao]=)7s07ejkvVQka^ٻ|ב`G(rA${R:'䡔yq*2lVʢeP[Qr6s!7Zp/౫j+f)=Ѯ8וMV?2՗5/#fF:WGř/XފP);ǮU}>*/ ?ӮڽpƛRCUZyԥ _nvS;CZXA ToǩT4'^nw, ,GnNpjted;5$ &9C,Ws/5-C'OId ~=&xC+IijRꯞˆ\C/þ#n~[4ez/wN3 ^>=d3C4\̝c^!|vpo.O%q:zMOL3~+woi .Kd :cRyr30#)cqWu۷}Qԭmm-˶VےEɖWlˋdC1$yB ;11AX/y6B yD}ߩ,33uk9uTթvcm"&y{Na@V+Ky1'jc|$Aj,fr mnXkHYYgGzb͔` ~X/@7\>4`:~/PX{#WͳK\TOύmXRt]%[j߹4~J`Uk5?IR|,5?IS6Cuul^(l^OMrE"ğA Re- S&s'dܟ奻s^'-([u"WՊmX6zq`Qy.o-ص0Xn[q"E[xϝ7o/U]PܱiQJ].-GM}?Ez+nmI֤ZTJo.nվYϕ[ZL.V|el/fGqIW٪UW*x7od;fyf:AټX]O4\kh~}e'9@,mºX  \MD_ղat],k4N$evE ZV4aPÀs8xp鵝 94ZԅOںow|y+jWV5mQϲ(ww)v\db,iR8ST6A?# ;cTU]鴝cjuFb9KV6hZzW}kW(.W4`e>%J:^ :Qk;-m͏]ko<`.L;M˺w,vܵf1i.q6HNBZ>N%.h} }lDŽXpez}&pVUe.aB,5KO_9܉79.<>_=XMu+wE9~{fm{+r,ƑSuwo!% ~/二'VWfym,.t{?xsNZfen*L5{ }92jepy:}iB%OPd +MsAp{y.w}Z;s#֝*5hԴ}aZMRiJJ٪G)xwz"/w^򕥙Y=Ek@5D}>HccG[A:  xŧNG`&|kKxc-$-%mUSZP=''U\j,01&VhSrWh'Z> 8WBW~R Ȉ[3\QZr&wQ J.%3 k| l鸮8ʟb o-rMN2gSݼomwS=gUS§oO\ GKVhvǞQzҕ=nl?Fю;Q9GtrL6kDPc|SǤ$>'gv tZټdG}9sh}/9z[wzAdxμr~4`Ay \ ڐkPX,e4&˰/SmTHKLag*<*k>Ҍ{KS]KXh2SXiE#/M%EKkTVo7ݔ8ZKn熪U/pU,YbM]͵EiuŪ}‚׬,5=,x{<ŵXa;5oOw$EkzYiVPU|c5%RX+zZ`Zv>Acfzד\A3ߩw*,D&6Ds:ςyqǜs<42V(Jmxn҂\^4>'D|QOC^~x vn)y բiz NTZ[Vu9-ukxZQʴ#\j*/K_3Wf7>UM:<ӎoQcz,4-X3&RZ׷KamP{*׸2 LWd؋99\kݎ{z۲z4TyM$ԗS!>M){qkHi,DzEӫg)ƏǻF&o͞/wr+`x&~;fò#3sCB(JfhcnIGC=o,/dYCt\+杢P"j,%Bͭ%i˪`|0 gJ2S3~6IS?L~C-6)krGިKZJn<9.P5sǡؒ+hr2w !\ɛWy_uz\I7Z~xY"Jy>n|S( Zt!ʕBr䝢 ]OS5W}r6dƶK# #cZ'_'8ŝ8-2oi<_NOjiK><2h%{˗=/Ebkհlp cT'a4g :m9lM`\!j oc5XJZ:kNݰdF-fixV5^{{*ؐy@o=>=y.OX?Ce~Zz}̃C{w,Vd%+'1cǟY?v$;ca~(-bsVBN X?LY3OY2 OX$ߙ~G?s &g&]`,FCk]4C/IV'_Ydi$iEN@s#sk8{=5٬h9fnya.)C:v-פ6=a{T6$hLl$oia4XCsfGR13vlvQC?H\'d0#c`* Zq0S,`ҧ; HX0tFQM"orBϾ'UW~$!U3 Z,8[SOfeO aAcɕu-Ga2i]&||͘(O<Ι^ܙO̜ $`ipX%Yf-E!cDV{:s844f% MiFPvV;nuEf92Mg*MYuލhҿy@ F-KNie,~Rksf ]Xď}gA Ul 1h2tl|Z3Xqr ]dq*Ջ\ܡ ^5*Q"ٌ,Ig4h6Zn;[P9K0l$$}ADl9f#ф+YE[굕ڼ6o)c*~J_K_GZ#YwuGLgLϚ8M# + 1shc%w,6?]2UU4dw1UvIkL^'_cpFC6qPQv9jdyFO&~Co/WmHŚ_x+>;lfdmg8w4 mLbu6&3 ՋW/Nsܴo(e^CP#H5(ś(M dn%@! %){5oȠ P8O҉@N'RĭazKޡ"䯧Cd0h[ x[]lG@^tE.)yxڛWDCrUn^ậ5D&R.iHmPdkMpA٨v-X 4Wڌo9O 0rgbbb(j[b:-xwGx 0˰o1X ux^4KuW .S6)u12|'XxW3DU`'GZr]O*Nr,gvUsd7{$arwݻ`gXpn>rbO|g^ϋҵw.ͽwk>f+n+[6gWW,,iW-MT#}d56A fCǡ%E훻//]|`{91(0DC]ٙ4Sqv +eQ^ɬOV$F:I-MdE^͑WmӪw">''ڦ~/ S1~|=@a,sךV'~eՆGu6}i/}e5W,HM4篳u%]WljSt$-߿7:*ue]WiQЕ(-ۻn $$w1WϾ3Uz$*13&Hs7W-$?^;h="VgҋEzazX%C t鿖/'B/LM>$7Mnyd2YAlT!Llr1K\dYO7ǻտNL9Gs.}^B O=8K4K4K4K4K4K4K4K4K4K4Kߟ6pQԨ!Yp,>ee)'GH,GF$*M}{!iw8TTcO8Y-Q,WU^A2> {,CprvBo) '<أ/^K$BlW^\ 9{)JR&wn*vaA0ᏐNWmAe0d2`4AA@|(Ðs> ?L#魄?s{ԽJ|]Uyl=hT1Qоf^C-P~u9ڡ?<dxmAA̕D+/ #|;IArH(F(أh{%B^^^[s(뷀 .PG1U h-g叀Fk!E_ pT=Z 5}b@m2<2@9hФtާtv~X&~Ia!Oo%Qe; << 8|2@?+/(U؇{h+" 1_Q^E {X{@*܇thIMxr kl@~!Oo%Q?ȏQ?HCdirVUDC Ճ @Kh!I>; ?p?yz+Ꮒ%@;0= 9,Q([M}qs1hcu JP3^4Q4Ŀx14 9Q砭O_Q@k؇j3 xi!8Rأ|:CRZh"&Z`Fx#? v< 9USDQR()}JQ(J> isx4) &_aV{vkӀnvVArG+*

`2Q쀲 `r p>(q?Itާ\ I5 U{~A}P.提8U?ғ=J=Y^!jjߵ!|S @>a 3<M׀/,U^ 3<33B*ϣFo% *Ԭz2&ʸ3<8FZޕ^ 9óH^ ϡ>u<2C^:Q ! : o@U $4|F*YU=gWU^ճʫzVyU*YU=gWU^#(, EhڈA3h3jn/MB F(BE!H?m ~v@  bl#NkA.LM $/^7e8ÐoOXaH=w 9}7Aj8F8HD~oץu3_Kj I-qj=6“"N:Ró|vH BvR$@KLiDRVy,֢JjmDEZ@InQiZy~3gwA־^Ι33C`>e:oQao%e i=&KOvF(5ǂU=S6^|ҩm1H(U[(U[&ؚ$f3 5)9o(NejXuҲl13XqX/=A"jUqstS-oJ-9S-WU_9֞V<թ~=_{"ҜگR#qDR%*UV?ṰN4_Q9ϋ-V5KTl)M%+?>1JF*TsZcrFfTVYWVDk ʫFZ**Y,f֖,)-yeaEyQMU^kZ%5UVmaUE~yUVXY^ZZ^]\TWQjT/*)֪h]i%5JꚪҚڑ:nqMiUSZXaFqFxU*WԕGPYuJA߲h^j-Vye*8U*ڪ.oQJ\t湵Vea2x1w]KZ5aSZ͠ԖFjDZZXS%i.^PXCJkF&4&9 Ǻh%c9;9=f[\KkGN_\-!˻,u%{ھno|܅JsJu% O Vjb|'";IW{bI@~ܽ??tͫehgh!Z?m6PDMfjj󴛴oir^оUkC)vwڝګ]ڻZYD_~=C{Qm^/vW|zؘW7u<6c`kzR՟0V3w0$ڣz6g4>7FǍ/rdyp4:8*j8Z.\h mV 8: Gipt& 1pt9MpT Gh -8ZG>8G[U8 GQ j5\p yp GdVO<R8Jp4k.M"p~GV8z 8|N G#R8 G"pG߇pZڝݥCf_Gh.R8уpK8z^h탣#8҈c==8.a\%fރ`z4[W%ܼp4m$rp=Y]*FMfa~TK31ӧhatC۝LsbQѬk6ĸM7MD%}lMx馏VȤXeYG?RG7yƖʹpS>_ByǭyÁeFH8T-IÔɂ%Ѽ蝊'մ1 V`g8JC&_(5Rz$5E$%MvМwgδQ~]."jBcQy7?Q#Jue h\~C3]Vha!P()RTnA¦ZTnA<3v\+l9s?'_2.i9.D0#3sh~sW(rYʑ>Dp:,UE;(Q.(3/ 4/kfZAKahӋL ,jU w΋<,(ih?ǣy-y4 sKHKq#rb)~}Q#u+3KF{ϭp9JM>]9tz_m8:cn^cg+0OKrV3+w&Blrx#)3twM>M7)ͥ\nwJs%MdiC}8Tܣܺcml((i8y'VI+ɀ,ݕiO$\FGduMM5Cggde|測y8Oc$5pq2?h?WwɒgLEUAp,i>9vg2OM" h,q5՚f5>[ќbIlz=P * _'W/H >|^dq͓8>S'LhhPLV54H)/jXk³E |Py=''~7уK 5GxIYK<>9DNBZfq,+ Zdi/tssqo$z7pC,4F׭+~#de9,SjBrpR4rw[1\җ4^Vv#16鸥 od>xq'Ѩ˰u*UUzg4ktu.Cɲ_\},BSJh4t tN=Je#aLu.= [QKJ! Jq2vw+Kx?ӭ̜3Μ99yjhMhhI?Nxj*ۓ}Y/Q{s&.M7pYڬ7q-ҡ < fChuf~ŧr@8pr+m ʼnDګ̔y'M3V;w ]ڲ͙+2dȑ` @ךsb.J a@ WLLAL7֧yd(Q&tǂ4w7Fl4_D --]Ohp5aV<2]ouI7}-mTXI.D=QkСr2}+`OraC~Ύ=5nq#Dpe@t<"A9DBFGh)@ZZ0 1W xz1U?p^S Z"D M kGpjPWGW2 ;ڜ)+U?Z)9s99e=8Cʋ -;p*Ίk_W2)-RʔlJQ 6>8?4\,JCTJYlU_TD:3a rEn L%0G:iNR"ۓ@Hjl5^yckݷ[7G: : Z䇚[no]4_XU[m[j@|-*W`qmb (+~BO=Z!ߌa9=Ѿgm]ؾ}{Е#DrC;T?9CVɊe;w&*&,˨W)d{*5@J6id={yE$ф+*ˤ''Diu"w;_ΥoܞٚӚ`~Am˭-QO ęV{e%|!8)W9Q@fNdЭ=qhiql--;ҢΖ3nY'-ܚ9Ψ Xr^/-*kkV#/ʈUk?uu.\TH[nuG]TG(WWk^M4ߨNg=] #,7.:xJ$vOԌܠ^oB&?]os&X={o_3}h=ӟ>^3}Y}]JG>w?6=};.Xz>S2Ks=$u ?~#mj`N.CCc/wӯwg\qOh5/zjGO'A H1q1O#シ%En!Rũ4#2XtJ xZ) =^^IYndo)9Ez]>%N'vyϫ}+{Z)ۜnN{q@=")iQp$sYIOKyeomvIqvKç~H$Ξ6hDR&D{EYY[Zyޒ%{Y(sS.8wXpni,).6~X0luCȐ"'urG}{3H˘ǴqY}A^x 9y̋d9&.H۪Rc"kƞg gˆOqJsouJmO0I[&gMިdCJ>"9Ś9OW#%SNNu!ç܎iEӊ\5"%ӢWyd!ǃO8s5Ú~3g4󞜫gNϽqmѬ-a ]XlQ[^ܷ`叔o.?0 ,]8ma% ^aS _cEKݷE]̊*TxXҪ2\yu单Un|+?U5*jVա{WWȐHAȑ[ݭsoq(Rg$Eƈ9DS}/8|ȑ)kvs3:pbiV"N =(f" fZ3J M/m-ݟ`ITZ#'Ij؟fImYq{?Ⱦ;DsW"xW"x؞DVz7Z.d4эS?NqMTUrZ2=0,uW $P'F&ic]UsQob"vĠvL+YOԝo3+Ʀ>$WxgSX\cTMuyF7{̈́LtS_=Y&Vս=]5,R=V)gmNiV'=zgaWO.ϑ93;J:JoG}%$)>8aF! a R6er,%+_)"g]Q+,ENSbKOuIj [V/Os9))~mQהSQ*jא"Ҏ䫚u゙8<]Cm6f9%CrL wN O^xRWj눬GiulڙK+53A "jO,dZBY,! 7_5XR"rG#w3Jv7nFvL8C=6P{ D\jDYM1vn93K{ᔫnR_ʌ9NJxF .y.'L]5}NY97OW6|Xxrrfoaoag1糰XuXj,l6VM¦9ve_ḏs|ʳGb4eύ|e[չC}R<{=@{h/^1]F{3hk<5(uhu3Z7I>h ^1h֡ y_s|x1-nAm辍)X1t3R@ E-/B,_GYO;jں4.8n|dw2F>8-OhZ2V&90 "= oj?wpmwAw`%^; vn6x t?A-q |nA|aw/toω/ p>$lb}HEyvq#7q/vG]ow` ~.  OQ)8>/q@_\'m?>~{ f9{3PJ~(.yJQ`% Hwýys?Fxv cyӷyn Ac<???MQx<Sik OŽmey# ^;Vjd?zjo}ؽga`88{ǀ x\dr0)~Ӳ@9`8D^p> F0DW<?4Lf~»p7Px}7<79;,y{jf1Uc!XH,? 鏅Bc!Դ5Lf:5өNtjS3Ljjk^y;|,F783 A:S~$6Fx <~6V31 8%x< 6_4K.O| lH*x y*5v}<7RYIRpkWo9<x7\/V !V;YE?qn ;7;-PKo[,Xkxz}ecyoa myfX+3W/;fK /T~7iwV~ԫ^5q^3q*?5lzuЫ?;{Ki^[4=q~YCDrwtjBGK%>6$.Ea3nsqBFlB^C;6#-@'Ѝу,t^0AlG;y  f"q?+;2O|`0hf G?Ǔai<^܇~<;JE Ԩ]{k/J\o;UrE"r.r.rk*ÆHL]bS%.1u+:kiõJ\ڄ87G$&tjM+{NptBt=]zD#N9tiN9tiN9tiN9tiN9tiN9tiN9tiN9@z(C P=Q ThB/Zf~?Nw/?ߟLp8ΦB#~̫^W-ԘMԘMԘMhF5@j4P hF5@j4P hF5@j4P hF5@j4Pc65fSc65fSc65fSc65fS!lCvLYKtT~r_+r_+r{;!wC bC:!1tX'WKȩr_CVvヤ&HwC[ԭ+ֆ3W/c5`-^:ǫh؈MhkhfdB7^G؊^>ma*swng̩R?l*Æ{I%^{I%^{I%^{I%^{I%^{I%^{I%^{I%^{njPxShIt1nsc>_%^1}8we$&6ɰIM2la d$&6ɰIM2la d$&6ɰIM2la d$&6ɰIM2la d+F%qu޴~MɢQG_G_W|k[ Z·Y5ʪQVjUe(FY5ʪQVjUe(FY5ʪQVjUe(FY5ʪQVjUe(FY5F5|';eISԕX-)ߕ])וtwR>+R>+R \z|x5NܪwR!LzI[4-qOsI<J<& {g.Ư~b sx/ K{,ËXXfПvo[0x(LD_ISx9qnT7Ж?BF'Л't&})燗g~B|sv;܉ ?X,_)<<<^@X+x^*nbwA u0TmD>12?Mno#9՜g;(MYNGHLfS&?=}\bZhWr3k"5H&Rl"5H\nr3f.7s\nr3f.7s\nr3f.7s\nG<.py#\0.q}\b9.渘b9.渘b9.渘b9.渘b9.渘b9.渘bK1b.\s)R̥K1b.\s)R̥K}\Rǥ>.qK\R:.upK\R:.upcfe"cV/W2S .Lpa (s$u';IINRL2u-SL2u-SL2u-SL2u-SL2u-SL2u-SLILRg:ԙ$u&3U[fL}NeA%bGs&#7?B#J*-*-򪫠 ?,a?/?/?/?/?/?/?# @aw0}; 0󥩻[CqU̫si8qL1c4i8qL1c4i8qL1c4i8c,Xc9r1c,Xc9r1c,Xc9rG}% |2V؝^[>SW8[~oq-evޯg*?\dniϋNJ0:ԛT,XS;NoԣJQң7l=}ԷtѺI.eyLlqm,b,Β7_C|ko͗|7|7}@]:͈5ZWy7ZQaT6gIճMlS9T6MlS5eUSV5e3b&Ṳ٦R&UʤJm-W]Yp:T*~ܗXb/eJ˪|sX w):x52ˁK&5ң>yϺW\[TK e*8v+\=(x/wq54WVgǒpk?ɏ8~ 7ZMW$?y>sIxpZ[jeUQ /58pbXX(,qxDk0ߪۭ櫴*m~jc#6 Q`x-y1J px4]y.J/6a*Nۗk.HnM> ^+D>iVb{赃pՐG;}]8{{~ xX\X\l/?k8tgLsp.ޏ?x1]ǟSpwgyy瘍/xE\/\/2|.;.;syJ|Wmן㵫vkuua~}ktT=y]`]n8fiq z/x>ut:Ω:3h}طWsM`duw%+i+{mj{_[{VJj{**kVXYaeeW筘{?yLd/EQ[׭eIGܩ#wE}nٻsjtuhȢ[vx5'k5Y#+·DXSLMP0!0!0!7OX;&&kuZ]f.VR-=tDuôdZn21:MNtiuʺZY5U{bsv95N6n5NSýimwu|:ݳMܥ>tq+]f٦kmft6Mwl>K~ݯKkZu./eu.2ZFWjZ֪eunZuV],ubN#H}JRө˴2:JҮsm\mM:uvqMhݧkmEnѦ[mENѪSdtN)ZuN6]h!uv NS{":׊VBo7&YaeK{7|1[AUdOY11_Y!UЪXhU,<"*bbUPiVU^MnLn_R-Ru/i)hjUB^R9s2hlnR Ԯ) r2,zFAf2k݄ZE* ѵjBD"ʋ(/h&D3!hiń(tוz+=ڄZ\\jmij+\ו{]\꽮m^rިN3p Wܩ-ם;un=pTwC%?^eYSy'??{rhg<u?%*l.5B7CQ&X_Xߚг&zu𦵟;}ީew92AqjVJfb5*ol~C]R4KO %ebCZ8Uǩ:N]EqqU\&>M\q[Ql5UŰ+(Xb#=bc׏]7v5W k}y;)ŕ&Wtpws_ߴgЛ w5KҀ4/ KЀA2_ f^2 %zɀ{eM$"u\:ltG5͛ZK,*뢋bÙvP1=&Z;W(%l?5V.o%~9˱vv]vv]vq]RY먋\V9W˻x6z;߽'#oLd$ #GD7BnjwrD#Tr7Mn*wSەF(MnvSjz+UUysC.z{15;LIStkv&ʃهܩهP&ߤ}i?fO~̴4&MI11nҤg\Ӿe3iLWfY^WϜE~'_2}pppppppp!w; ;;; ;;;v}Ð}Ð}Ð镗e}ˆ*{ݝXٝXٝXٝXٝXٝXٝXٝXٝX@E)gQb===%Qb?dC7G!sw2s-$C.rˎ?0{?r̵2̱V[wr̝2w*?).s}˘*g8T89'8+1U^O}bJP^O|}bB'&Nops_𯘇b{ۑxx‡a|q|I >ŧq>> p!>9|WGGTVT MU/c5`-օU*Z!(|oZ=߈M?"{~8>Hx' {߃7'p}x܈psGë_+k3١|Y jK0Fc"<^SjBx*S[^{f@qa8rSjT+Z9վ G氲_quC ͠E۝Cq8'dB|s_&7E᧸A /WW_ƯRWx_9|:D?fE6nǿc>X߻2 8GMs44GMG\y\y\WEŪBPUԬf~_BV*XT`կ^[,x=Ѭ)88?M|&ܔ_I\K\H*v$t~hIǯE&7G$ؿuDu7ݞ/3:5YpiqnMy!nƢ0GW̙͚lA:хndTT<}fBH3[-s9jZTw8 g{OTa1Ww;w|WJ︪ь[q_Օ? 'Zmi!!l^ͿFjAMը;>e-}~1njnjVMF}ռeWG=gt􌎞3:zFG=gt􌎞3:zFG=gt􌎞3:zFG{ɗۓ/'_nOܞ|=r{ɗۓ/CTWՊՙA4O|(4t?J)"eZLi2-REʴH)"eZF vтhn`7Z-؍F vтhn0O{Q?KMKMKݻ,wܽr(eLi2RQ4JF)(eLiW+ث7sg'Eyzjz%2lDaԨ1*jn"AQpxTDzDăK&FD[@fg)uayϷz91s:<}} vjyZ'jyZ'jyZQ':P7-Fc.7D Q'HyuoR]#|,D$F@0,n0*G602ڤ;AN|F(4egLt:9eX֏} zu#MJO)=AJO3H{?## 4=CsÌ3e˨;Q7Ψ7ƙ a{0#q8Hg$3?\p 502Ǚ#aƼ;'+yr rg(>ϼw}dF_KΓ?S$8s5eSp% /D/E6RmV(*"<gҊCZqH+i!8VҊCZqH+i!8VҊCZqH+i!8VҊCZqH+i!8bVlҊMZI+6i&ؤbVlҊMZI+6i&ؤbVlҊMZI+6i&ؤbVlҊMZI+6i&8bVl9yW~izLRoQWoUf)+ӕ+)ݥoTL V^-0GhfyV7“}ʉ"/kE,(C9KTV>9 6l398v>glrc9[gMl5rxi*ƛC縊'p^9BpUDKlrmE]8{IF(ڊk\5bǶ|-j{z5cJ J9[jZ'0hz6Av2\ʋMj-|K; ̟(67cYB2)5C9)ϵwW,omhE2,T¨A\zez\nT~@Oh.AϢhweZ6ҏcz :E@Pt: @'Ah0J4 G#H4 =*K?ѯ $z =~#3[;"~/3ڙ\T/?=<rX]l5ߢE[:xO|)#=_=I% ݓdaP;)-R/Iai=9ݖU {@D3Chz=~fGchZ&- Jw٠V>Z>@z!Pܨ@qBQJzD Qn4`ɀ^ x1Nd4ơ޸xs=clF kN>u((#3FuPFP[-lMM"7|k :es!d Y Q9**qҟyJ+9x9nT|l*UgV1b>[|l*Uɪ{U1bU\U*PƯҵ9SwW|d3$p(Y?[B~ Wcͥv#[MQ?"f ?3eFW-~V)#!_.k{<Л(C9S[@SL! +:K}+xKW+Շ P6TnִI3lCNtm7ا /GY)Gq׵,{.mPfE-{~q]-Ɩ<]ԏza>^;$J)bu3k(80ckKv^'[j|Kpfu/krc3ږIk;9zOA|a/ot2]KzW+m[ppw‹!Di#!)[unZܮdS~^ڶOA[g5' R@\X|ĺdp`H֍;]?3!/lvXDk|hp`9Qp8|՗XDZx4@eKc4Oc/WfFyTA \@%t( \cpqP;kqr/' s~Y?βQw!ǣv[?OO`m R6pgOv](Ŋ\G?Km[,r Wqw{۹{懯Zc<+Ӡ$ȜǢs!h:Tq9iuTNdCe952C8_AZa p0FS AMK%Fn0ˇP+neЧghd搌 U 7|u|jFƁ>Üp;s3r0/g4zYLdri쵚V^J{ȷˈ>FQ*TR~LR~+*w)*W2_LY[LeRYqW*TV=Q=Q٤R(W:ZZ^QIIiJJknRg*t tPC'!iZ! m5BFHfFmq1@3q1X)kfZ*Jb`LwϊsoƋb%%qeqX"&ˍcR\kxx_|Xg?46'#cCL1v&#n3FVex>qq@23tă iby9V`> f4oOszY||A|lh5Bb1#bgb\"rQo27͌V̈<$:Mit2 k5C?޺>zzP?zzH?zzDdͱ~^^ЇZ^+?íWWQb)J}ZiE~X?jmϵbV~ک_`YuX6]\گ_Zv~ee-P6Aʲ+M,_YvmٵUeחMү.l~Mٴ[M/0RU7KKe j*}zxMx~Gx]x /'W ˇ^^U~]\hly~`Oﳟ ͵BWثB+۫Ck쵡:{]h9͎ػ]v] v6k 2]!>(̩N_g@s3( qzaCqF9 vmss1Թ8ѹ¹\\m vq~`T:ST 6Lgsq3Ùau68q&gqa\vw`\49MNf'g\sڌT\QCcr䊛;*nI}.2UqS| e}We_R鑗}׿<繾ȯ{ rS/=:}Y:ï{}3+{55bu:x\]:u\5dQe}Olχ|hКpkȢ!^ȫfjK.ط&w\펴h:ӗp5#{!x<dVGymz(`#-*>= K . ^O{OGx~wQJDpMA?龷9O~]WwY^Ѓwr3+{#YA߄h]zW/AG_# X;$/dIu!ڻ >`D#/1^bv̧`` ]>+U/j7ԈR =fyhʣvD_I___.6 ¤/Lr7-X<.J;O'Si4CϠgrT=P*@zz441 ihLCcИ441 ihLCcИ<41UyjVjVj-=Aԅ!#(RPfU2߁h'څv:@(iLC`4!0 iLC`vkvJCWЕzj4tݼG0~fl̛9|%ѯYI_@VY?2*z 9|^U|^獨5jB{YCڇum*/)K_ R𗂿/)MU0)8La Sp0)8La SVluVluVlu[LQn7)F|[~2fR0̤`&3)IL fR0̤`&3030̤`&3)xIK ^:`$)HF 6Rp<`!)H@ R0Aa O)?E}] q>Ni2 R!\*Kp.¥BT R!\]+Qcƽ-B O up-\G ^zýlc #6dZ܎j]f7.nvq]fVh:j&B}D}DD'z8Å..tq\4y̥Epk)}ZWMMMMfLBOOx8ǣo=-tqq{\Ŵ-K#C~Q!J?D(8)NpS<x8)N x8)NpS<x8)FnbQۨmy#}D7My}tb"}^ϋy>s>sSNe!~ᧇ˂'0I00 0( Da Q@0( Dq;=NwzÝp;=NwzpS"q;=NwzpԄC=Q|8ǭKQXZzõl87+ _Q`|\Z7{n`{Q[=+_W{p=zUFUof#l6fl6}aӇM6}l"\F҇(\F2e=Pe=Pe=PG߇   )H@B2 m&3zrnqO+gh wu>q|l?w;:w28-ejKKKKKr)w\]..rKR/-KKү:KKKKKK꥜L$;IN$;IN$gmJQFdg?gaZ~g@gaza< ٓd$=IfOٓd$=IfOBB#$4BB#[Zz~4>߂IrzB^$'Irzď?Fc/Fb/fb/FIr{?Fb/Fb/Fb beb/Fb/Fb/F֋=IfOٓd$P~Y>Px9x2He2Z5z=BOhz=D :1/D :1At cD :1QPP@q cPǠ81(Aq cPu٧.eS}OnKnF @_ D ʃ(< ʣ.nP6CfLIG$y$xzk;uҀmN4 l9%I:S'}O>uҧNI:S'}!b3Dlzߣkz{3"IH!zS|BS|2B|&fjOKmo5V UCo39z&GxGBBm&$I2@ުuǧig>#2n+}Ӕ3xӛU _U _U _U _U _TI*S%}OI(o0w3 Zw;3 [P_(I ڃQ ]]]~}ׇ_~}mm߆/1OGZV6y^[ [ [ [ [ [M,R%T"UH,R%T"UH,R%T"UH, "ü`*X E` > EPЀEj_ +x6xu/UUW: 69Albs 6.ĺB .ĺB .ĺB .B .B .B .B . ͐|iPMPMPy(CiJZVxBe*sPT29Ae*sPTPB .TPB .TPB .Th&lft҅J*]t*]t* *P<{y~ohĈV#12#0F`dFF`dFFtUE1 #UjFFadFFadFFaXcVVZ|;.WqS6O-ڭ2.j3]#>ÿ"8_7Nq2~7Ncg?򈳽GIN1.afVmfU+ZYΪ٬JVͪ*gTuϰn66n3fn6Yκvmffmff%낶ukg].h+ZYuY ʺ̺ͬͬ|c!aMb$Mb,;yđFMbդGa=<=v%OtB-dB= g{du`ͦ~kq'Vhu_aq%g|sǛX-X͂,XW?#~]+Vb kx]])QeTz^jᥖGCF/x `oV oV o89";-~ﴰ`N ﴌH (:bA/"Y [eMOꓹb.k"Dd3<+ݬX"bEĊHKYyE~)2"2U(*bUĪUQ?Xƒn%,fIKX͒mmm*m*m m mwϻLY,SؽKؽSؼKع$x%,}ٷml,ͶlKG)Y}#7q#7q#7*vnUGu#[7u#[VwPpwPu^bON?aK~ZP}=Wk(yZCumԼ}e_X'u7W#ݫװԽA/c/{`Ԟ8o[19%G}g%G};KoI-ɴ%$ӖdڒL[iK2mI-ɴ%NISiK2mI-ɴ%$ӖdڒL[iK2mI-ɴ%  " 6c b^{ x ~-ɾ%ٷ$dߒ[}KoI-ɾ%ٷ$dRVnG6d0$d \Ke \ tYv?p}㯯%Y$+dRxedR8[j[K2tI.3]/OOみd ]K2tI.<_Fta3@=agLJuꨬꨬꨬꨬꨬ@e*+PY TV@e*+PY TV@e*+PY TV@e*MelQYQYQYQYQYQY@e*+PY TV@e*+PYM*Me*+PY TVTY T6FBe*:*+PY TVTYꨬ TVTYaPeuTV0:*+PYaPeuTV@e*+Ph*MelPTV7:**롲*롲*롲*롲*롲 ъIoAux9~bzf.opFFFFG?'+x;P_P_P_P_P_P_;Z]u0:0:.7ﴺ,dUq +8'_y*롲[:-Wn_yכ7_oοޜEsL֛z;כ7K頶J롴J ~EiVKiVKiVKiVKiVY+KiYJRZҲ<=OiyJSZ򔖧<)-OiyJSZOvJ0[x|?oRK-RK-RK-RK-RK-RK-Ԓ<%O-yjSKZԒ<%O-ySG:ԑd7yȻ9-n1X"OߢU{۟;p'qlVEc_"yE^^ {g^PZi*ꨢ*ꨢ*ꨢ*ꨢ*ꨢԱ:PX@ c>u̧1:SGu4QGu4PGu4PGu4PGu4PGu4PGu4PG[?/Wr/Wr/Wr/Wr/Wr/Wr/7r/7r/7r/7r/7r/7r/7r/7r/7|^nd*m< UZū Yś Uě Yś ٰ*ޫ*ޫ2r{_p5k1 ;\9< ~ƒ_=_ᏸ3pL 3x8^?׏Y l܏ !4 *9#g>b yF=ޗ  gdv>k WWAp}05 v< O`Ql`u.8=ScRc*Nvp~~A06Y sq%-kK+^x1XY!6Y \b[p]EoEop}A05Y 1Y iw;8NY9"H3qp<^^<~2pX8,x&w=Xܻ4? O K]Zßmɽ ɽɽAgrz!w=x5w=ޜ [ROɽ={S{%F R{'M]OSGqfXꛙ=2{~;oNϼ/sp2L,shfTG3Kxft72Wܝ7uAL>uQfyfy&'.gSW$ww~%c'WHNHNNNSթKթMթթT_rt銊=lj?Ԋa{#T_9kz{-ټ7vؒg޼r ;^vkx9$َ:[8k\7-v|ۮ>7;_Ʈr\Cؒ#oަ6n\ݴӦ=n=6*fܼ-yquw16_Oiicڱ=4y`y{k#o?ol_Zҍ l.._LMe]]su南7Nz`=SrW]m暓y)mN9tjfjf]JXlͲ]{|;o賙K=mo[D/mdk:v@eI(:6QJ8f.N_yhazPU9z@$>_9Djg|qucW&W{JCO&_OewxߝGʴq믝^zhrᘝ60vX0.y[xz{|[zhrrqudoǧ{܁:03&̸yYG'c0a`kcmɈy36p7~E޶#z ޖĦcnґ9y zMįѥIG&kdGx7p4iގ7$&;4/ݵ#>0{#@DH8$r&<:ycbKrS36\Q~^?Ƀ/QwԠ2  0 =-`_w#q{0 8ǭ o[8wp~rc ~ VCϿ91#q|I| ƿ3,>/hc%8_F5k8_7po,'$|'8+N]a.x\^p9\p5D\I^;{v TK݊p;f܉jgq=Pᯘt9xxs1Q<H=EX'd<Մ"/1ʱ#O;Y}A{_=? 8\q-xMzzܒC(=#N̸42=q~La>l܏!4a?1cxܹzkY<<{n%_^fƚxysZx jװxQ(6C]`_$wŁxc`! Gq8>8'0:^~WQhǎa˿ל+e=ȓ/S O܏=7FX2 ~Lkx%&8܎wbksKPsx.o`ura(ra(r]L*^/=F]`_ZXkc-ceA8e>CA|ơ"Ec8GFqwxMWdsy8X텸q .ek?2GF܀1͹7Acf]Y^`ܚ1f2LF<]ĦxK[p̘g-+óXfG*}Ր}H/  Oن<;#|x`z qᲸ9}9'ʸ W;Oĵ?đё{PНA7|"|t$DrLԿn™qYH~bU8>^_Mj*G۠26 @~iu _x˃kT[HHHHHHHHHHHHHHHHHHH(s7|̽E8ķp"$gÂ3qV?$"4܄7c❬w/b=:elD6z\Ll&Q6(I$fe3DLl&Q6(I$pʭ؆W*^C/!T![ۂaiI1kB\q]P ?;Ÿ3Ys#p1*~c7XoF›W߿[C}e`pB9HV&gəmrf&gəmrf&gəm`/py&yO`,.ECf9YmCn9[C =~z+A _n9Mh69Mh69Mh69Yh b}X,˛fY,˻d&x-ɜ[n8F[=1 IqKE֪nkUZ x O"ay V`%g X5hAy %Xθk q^f,n:| ,hRdS0+nV:eXNq)n8 6چSpjNmémhwmܵ7=7k81k81k883x7.N<ݘ.t:]N%t:]N%t:]NWpZ?P[-7}2Rl T[*-=_ᏸ3pL 3q=_ЀWxbB#b>`!"<%xMXDVfʬY5+fe֬̚Y2kVfʬY5<5/ 5_]\!xhC /`mjj*+e岬\oB& ;v_rYV.s(kQ֚5GY+.5Gi7Gi7Gi7Gi7GieT|7TbP pR{kS#.}/û?.uP\J8ća[=w]|'8jY`,.E1xKq.+q5k1k~}NbFLMq3AChØ c3G֌#~k?:4=?gƭf$e3dޮN\N\N\ʹΚVf+eJy{f-KZf-Ysgk0;Obzi~ peYq3O'ke{(wn$6ݫmF 9}Nt(OcPPP\bfUPP)Q2,3XP!Wru(WeҲfiYl(bQ(bQ(bQo;"֣|mW6+𒿡n||___nw8nL*n+2 ev2^9'.e~V,Ȉ^1R\k e俌27FLsMq{?:6#.ftߙjWFLȈ 0c<+,ZPty c;S:cl >GC~Yk< =A^pS?١?KC@-;T\5M5lxVf[̆ o3f6lxpLd&\2. Tg}>Y뵷X5OէSmRRc ,7ꯣf%3ܒn}d>Lvg68:Ι"" *^WQX]]]E^׸ ,J@XZR $apIhB2 13g2LR$Ea~?59㜙VMv&^lPkѭVmt6UݢnFi۴;{l= c0vB;+v=|=|=|=|y{/z'{=u__Lߴ>/TՒZRUKjIU-%UTՒZRI[NidZ;NidZ;NS;OuQ*+*+*+*+*+=^4{f/eLi2^4{fӌl$*ҽ*٫*i=mZOӦ:mZNV7mM[q{ :aV'Y0fuG' {t]Mlt6]Mlt6]Mlt]pFgt]p&. |_PoᢰƊZcEXQkt^]W{u^]WuY.elev XQ<1(|zGQݪ[tnUЭ UA*Vݪ[tJ_iWZ+3V>dYCV.UԥTQ*RE]Ku.UԥTQХ&t ]jBХ&t ]jBХ&t.R.R.R.R.Rqͱvx'Dwkލx 4A8q>Ƈc8oq|O]>i|yz]UtW*^E׫z]USc~*]oFכft]oFכfjn knmmwKt.܍=]FC#WvL"H,($"iT,&KRiTl%t6]Ml%t6]Ml%t6]Ml9V܆V܎šku͢Y5fQ,E]ku͢Y5c]35c]35c]35c]35+fE׬]kVt͊Y5+fE׬]gTr.K^W?{^W?{^W?{^Â~X aA?,i<$ji<:05P 8CVwmcv̮ㄲcv]tvƫwk`Y13fG8 ©n;&opq4r,@#ְ5zbEO,#T'}^g,9F3V^X:cQg,E3VtƢXsPQg,ꌱc:cQguƊX+:c,sjݱ;uNJ8;NEݱ;NEݱ;uǢXc1c1(ł?8X+ceqFgcmx;ށ>vh)K[E=t3v,czu^]W3 nczu^67Fu˂nY`uC:dY! :dA,ݱWwꎽcثꅽ`A,耽z_׫},q('uwK߫T:UNիSLwerYNݩ;tT`+JmԝѝaCsudC}T58Ł8~3oX7sވ7ՙ7H8:fc8wʞb=VӊzZQO+iE=Ȝ2qGE}Mk]fK=ZjE]أb5ǰcpuV*[E-etK{T%=8zG9@+Gχ:]Q+tE.bRJBc}l >6 /gr6O >3&;p`L w0&; lJ6|% __/s˹URW| q-Ќ> 3a&=̤0fCLzI1!&=Ĥa0<3<3<3<3<3<3flM`6̦1>fӗ>;e8}aOk:op~ǥp9W WJse_Ͼj&ѓNmx;ށB=RG 'RG Hɛyɛy;$yHݼKRw-Iݒmy[%[%[.O-UXs 2p^ pI p>۶,bgI#Ҹ!ze.Dk3N㗘-}Kҷ$}Kҷ$}J%wmې+uL$f"1HDb&3L$f"1HDb&3L$f"z_On_=+\J$P.Iݝ RF `o `_԰1uD b#+“+m|Wͩq Mh}<Sv}Sh5+֚VaO|]MϞ%٧ǥ  Ј+FLhv*5]_k+lM?/x>Fas;?ky v}_-=_>/Wؼ懭Kwd:q]F~sakؽN WL|,T:7TyEP 1"JQ*HO5XIz6iԾN͚}x=p8 [v{`~o0Fo~o0F{h~o1 w}n4v{^kn5 s{C0Ծ;\&/G}.㼳;{ᜳJd#H>9oěfG2~)wʘy3/ce̼{f5LdV/_Χ!k[dmmɘ8j׹T1ϥ}Df^zR>?v׹Q;ύ<jbΗO'^љ̍eeuTJQfndFfQ–%lY–%lY–SׇT nd_2eť~܅/7+,gbKWOlfty;0-}ҷ*}ҷ*}ҷ*}ҷ*}ҷ*R,R,R,R,R,R\"Lяw G?>dytl_趍o`O%̨0fTŒJQ aQ”%JYFY:CYTAUAY T@Y @Y ӫä_6իzTUSjMi^6Ia2zN)8glEħ|b/=oh~q).Cp;c{z~uz:޿Nti}N_~Fg=6mM]'uISO:h˓3az^>iʖIӳjzVS+qb\+qb\+qb\XW+Wp;>88|pq>88pq4Ι9Z4Ηƹ8OHi<ߟ¹{ءou>Nj8U_lX:c^m j &a=" B^٬W6ze^٬W6ze^٬W6ze^٬W6ze^٬W6ze^٬W6ze^٬W6ze^-7G 7zg^vGnh?~ac4SxJOI)i<%4xھ/e_z_ ۤ6M*oۤ6v}>dlO6'M&d}>ٔ9i9iƹ D w`Ncɮ%IIϥq{уȡԃxh:Yf,Ka9AEx +1!sn>sn>љC^߭wz}^߭wz}^߭wݬu.ںX[kbm]uN:Y['kdmuN:k ׮ 81V+ jAM2I5ɠ&$dP jAM2I5ծEX6)lxφ[̱[̱[̱[̱[̱[̱+:ob}bSd،-!NvY.+)8lq5Nv8s2]f\mgS rAN1)9 6AncU~wNgНn po~u{L|9<0>4;ӏyc}vNٙ^Q}%+}$X Ǭu$ֹm}N?|Vm5yہw+2ߢ9 :Yn'dn;oěfpGNqR(3.Dgglq߹!}| >l??]DZs΍]Ņ3F4&vc9vc׹j,;ɈOFͻ<5E׹onpFpnĆH~G?-<3z e19/K8/ti`]seW kγ~q@da9 2A0sbCa(uj3u # bA01 Fa# bA0 b3 63 b?UոB\&4{>~eu죎}Ա:Q>R7?p+nC+nG",Ɲh$g,|2O.t!C/x[RSx}xy1 8C+j`E 5VXQ+j`E !U T\NlWIT&6ƖRcK%TbK%4Ɩ[cKcli-14Ɩ[ʳ[ʱ[ʱ\4Θ8cgLiYZƘ1e13zTϘS=cgL13E5x-A8!8#!5>l|9fjkƚf_=g~̯3zW_=bx櫡ǥ cAcu찎ֱ:vXa;cu찎4y|^p]h ?M,1,1,1,1,1,1,1,1,1,1,1,1,1֚ XgXGЇ!<3<3_2<>Ws\>WUa񬹩f:pAm=.%Kqp9W9:^G{a#u:^G{g쵞ֳzZ^k={g쵞ֳyu{^yu{^>}:[bXlcu,ֱ:[bXlc,ŶVb[Yl+me+X v<_[D 1ʘ@ VITkãX6)lxφvq;n` 츁7vq;n`cx1v<Ǝ;cx;.>$>ax0ȚYkd̓yE}L̴LL6=Ȧ Ǒ~d؃ {aOq }zq?m?uofݛYfֽ%קFmץywŬ>}S̼2Vf[y+3g̼3zf^y]_QW x,czCc 5mmz^:^XzK_z?Z:ץOqflqy6<~o;0/J^ x-A8!84Ա:v_vވ78G뢷8PJ@I(i@&Ъ j M`&ѻÃ{~?3w,|$, VDx޹!xxT;h賮.r\G|cd{_ט0-,i ˢ =v=Kqpy8?Z+۫p_y ]ֶ d's-#_&,1nqyLh<4ͣAxYtR봽'ܢ4DL#p;W0E+_WĿ`ôE<,a0F/gw%W]}zIw%V(5+"⾋3〆Ⱦi}&QFO(bD쮙D@*]ɭ{ӷ[SU =npd|yfx{kIm| wav܋PN`2Xze^vtbŶ{_/?[F[F[F[F[F[ST5lM%[[[[[[6[6[mzG ٞ ;9B(٠nAݛ  ci(Ý<O pxgwygwygw柋8#qhZlf%YfVlf%YfVlf>?3Ӷ55/7/E/ miҮ]i2MkX7pM3]1[~~[܏?/656Md+pu/ӿ-;w6w>A9ömM6mkʢK_KK-qRҦf\~?>A==l]zF}[[[[mEY1~[il"Ȧ-il"Ȧ-il"dža{ldža{Lm1=c[clkm15ƶc[c|؟[/|\£q .eX6Ml,6l+ʶy\#]^܇v~=C؍{i ABix&lP TհA5lP S԰=5lO Söٖ2Rf[lKm)-e̶ٖ2Rf[-MٖlKS)Ҕmiʶ4e[-Mٖ2Rb[JlKm)-%ĶؖRb[Jl#m$d6F2Hfl#m$imuFݦQimuFݦQimuFݦQedzUBJU *W1|L:Ǥ1i8i8i)74ޔƛxSoJMi)74ޔcioOmMl>EeBǦ}1˚i/kR,R>jg+v&YWBu<ノ:>::fSKǷ{j]}q mJhSBڔТ%(a7+P6%(aᷫТ@ %J(!PB@ %J(!PB@ ϮM mJhSBڔЦ6%)M mJhSBڔЦ6%)M mJSBZв!PCP:5ԩB mjhSC5,}~{N uj6E)"ؐZT[v8wwpCv w뺝ex&^g+;x,\ߕ iWc]PXn:'a뤰ןufRʾ}q\ጾ1V_7ˣvpC}(aU>q=߹~j3aml۷MpK_84#X?88an_qGΏkq+v8pPc%︉w_xË񒰥p]FgϳY>owsq ׭v'o75Υ9~6F?g#lm7w؅ 'kuomyj޶:wJך.ט.kuݵZs+Ϲܪ5[~b0x@TۭvfLߌ1=2GnS1n\V:WԹusE+j\QWԸ5񘺎똺X*2"*2D*}R*HVjUe":U"TTJ5UNUuSRꔸ^UP42BOJ#*4:3:3:3:3:*3Dخ*UUvU)JIUs*ǩrTU:UթNIuJS&UPUJ*TRlWQQT%QQH"UTJUURUT\*WU,R*V)rUɣDUQUQUQ+^IWUTzUʬ`U*XUjFT*R!ڮRwtO*U>(unm>ݫ(unNNN{ ޶ݻ򮆼!jw4 y7wP6j(4PJ@I(I%i$ 4p ,$X^qSŒՒ@* @* @* R) R) R) HӢ>-J韚ɟɟۢɟ[L6MaX/ߨo7 6MaN3Ma=^ϯ7Ma??l&?L &0Mh%dL_]C/%&VɦJ69E433ϣ~b'XO.]d&0GLa}d4q7t=Hg&{3هMa{֛ }d8-8->h7LM49N\sɞz|6oLdOMdOMTazjzjzJEZ.I)OMOMMMMƋ4^4w;L^-4_ôNMԴNih:o1S/[=6ϣci>M{~z_Ot&t_"龘;\\\tݜa:2#QՅUQ9S w׽ N E7+p88 q4C8p9"2Wok] {>~Clc܌͸' [0s aE[ įL70mt\=7/uٞv ?G%~u_)a'.Wp? L:Fy˱9³qfZ s_p<\u|ׄ?~È}.Mk_]&zeowa6φ {o[6;.{>i >qćoۄnb&nb&nb& n&fn&fn&fn&fn&fܒx^8/K x^W8 x-Nz&7-x+ކx'ޅw{/{>i >q).W U\9)qNJ9)qNJ:z;׹O܍QDM~XיOsú>4G?b#1G?bI1?&$cL#1G?b#1u"-94dax&g9%<&1qv!L|>^ļ&51yMkb^󚸧71Mob~3o&MohsbI<'|'Hz\ L'?1$?gLrKxP̃bR;'IsR\\_8!{"Nk]>߀7Ss}ܒSpxA8>:>:\B&_b xׅ%|0_ם,XBcnrۏ|o^ʘWƼ2>;Q!1όyf3|1s~Cc/q[/yiFil+[zzo陼.gaN8 K]np%.v Kߔۥ.v)K]Rnrۥw:uli܀ō.=PWp~MPP'mop?a:9̩Ü?ݔä&0)I9LaROfA)%^N#{n\tN;Oݚr?Oٚ_l9FkM#)H9F}RJ/c/kw#p$|c1#1#"%x)V-~7˂+O/~柾3Yt?~/c߁)A%v0w\(?N˔Ӆ\ƒuϢ"miHE.v]"miH[i{+moVJ[i{+mi{h{h{h{h{hHE.v]"miHE.v ]mh@.v ]I I I I hE-o~[ߢhE-o~[ߢhE-o~[ߢhձ%GEZ/z֋^"iHEZ/z֋>DC>DC>DC>DC^h@Z/z ^h@^5~bwpߒ /h"/(Bp_-?m⶟v ?G^("("(!0 s=n+aʮ~T;c&0r-db+("+++bW !^1+xEWxEWxEA$L$LGGz_=/KRx7#>~'-~'-~'-~'-~'-~'-~'-~'-~''=֧B "O)O)"O)"O)bJ u}ׄ< id^xMLϴLLLLp(,}e\,)4")"9C'dZLi}2O J((DL'~qZLSHoMoԯ#wz8OG==EK ч~<Bxz垁q!8b%^IIq>[< 8܊E\py_(QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDE$QDEqNup>.R \/KX/+Wq?k[o[>?~~! ]Ba{|\p1. ccne"$H"$H"$H"$H"$H"$H"$H"$H"$H"$H"$H"$H"$H"$H"$H"$H"&$DRHjIM"I$%NZRs܃in;>fnŒxd>w`Z]E]<姁.z {۞#]> Ǻ8_XqBneωidv]zot|j=깓z_ėr+zοU#l8vT+^7M!EXMIb5I&$H$H$H$HmMgs",","&xsM*H*H*H*zX{GTIeTdIfdIfdIfdIfdIfdIfdIfd. ^>֫^zX/=,a5cf4c8G3ьs4l8[3.Ҍ}qf\i>ا4cfiEO3iٚqfӌ}O3i9qfiƂfӌs4"ا4cfӌ}O3ьs488[3~G3ь5l8[3֌kX34c^3iX3ƚ1֌kX3ƚ1֌f5cckX3ƚ O3ƚ1֌f5c  ck>kX34cA34cA34cckƂf\4c^3ƚ1֌ykX3ƚ1֌f,hƂf,hƂf,hX3ƚ1֌f5cckX34cA34cA3ƚ1֌f5c~ױ\3.׌5r͸\3ƚ1֌f5cck>kX3ƚ~7QЌf5cA3ƚ1֌}O3ƚ1֌f5cckX3ƚ1֌f5cc͘׌8{1֌}O3iƾ юvcckX;1֎}1֎vcA;cA;6bاcA;1֎SckX;1֎vcckڱO;1֎v,hǂvOڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ_{k~ѯ=Gڣ_{kjjjjW`RLjIM0 &5&lEG'n͸ PD X;Ѕwn܃01iGIDJDJDJDJDJDJ~/%zD_&$D}BOH >Ѽsz vշ^WM,R> VjW[&ڄTjRmBUZUUZUUZWJ4J4fvEǽo=v}e缏a=ڍI)VbU)VbU)VbU)VbU)VbR_K~)/Ūv{Ii4)&Ѥ4LC8 4!&ӄtHOxia"({b/}/x͌xA8!8spkM]m_U[U[UUZUUZUMH 6!&XUUXuUn l[Ҫ*z_BUU^򼩫},LH$DE)ITDU3)uR*uR_Kԙ:f4@aC1poQ818')>88/rQV2d%CV2d%CV2d%CV2d%CV2d%CV2d%CV2d%CV2d%CV2d%CV2d%CV2d%CV2d%CV2dVEFkƆQcS%1Ӿf{ztLQclͳ ь/ZԆɦh9l:lzNԘ> GG;-}cEь̻#ލ{^석+>2Gx`6>e"VD֊ZY+"kEd"VD֊ZY+"kEdlft xͥAV;ٱz4msÙQc_yEݍnۨ6껍nۨ6껍nWwnTߍQ}7FݨwkG݈w#nDߍ}7F݈w#ۯXImw&}Imw&=4uݝA ;FШCzhTQ=4FЈC#zhD=4FЈC#zzzz:hdUTo5l|ǕSGtO]uO]uOs53=#gDuOWU=#gD螑w\MuDl;qEՍUGΨMM]6ѷ:wFΈޙ&Il;&=S3u=S3u=S꺡~'4+W"µ!I7ꆩl w}0Fr`6WTشʣSWWWSWSu{v.a@|_ 8-hIo6omp6^8;2Gȼ#~N.Ple#-]PkPD (dz8@֡'i<0?z5Eql6?e[+aYx 6$K5 7"N܄q nů,AnGK w q'ݸkBw(=iOMׄM?!~'?s\84D7"_s_ M7<@^ O6ql6?e[ b2 7:؆>Ϧ;wkw Gº?b,n~v<\=/3^copB*֥2'5Yxk(e ^}muC1puԿDunD|B;pr|txb, g.aQ2\#)HjCN=֤ĜН> q8><>_I89M ҧ:fN yo>`xecOqo@~'n͸zͥeǶ10faނW5\Y:(,43 k2{`O셽~e|fYg98b%X:Sq`s~\X3}n~W}QQm[E"HqD,7KтU*֤bM*֤bM*֤ՀVh@h@ H0$VJRhZ)V6 /7< Aք11&1$Ƙۯ5۩kߗwSI41i0& ƬܕVJ+wŪJk͓aչbUֶ7ܿ~/ܿ~cf [-V+j3bX=ͩrߒY)cVXrc>sͪm8awvs9pv899iy ̝gJgҘ3i̙4Μם9ΜvgN3ݙiw;sڝ9ΜvgN{c8+z7^z}P^ޫ{z^ kqE| 'D'a. \>]+q? wti4]}>MW-v/p#:qn-oNq(v,uta9]b9oxwx`5xkChmCq6!8Dhm-"u1\p9 }\9??0D7D7D7D7D7D7D7Dp/V>܏J<V%uD]"QH% RZZZh 4<'yoyoR]ʶKv).eۥlmR]ʶKvzy\/q<^zy\/q&j ńbBm1P[L-&j ńbBm5P[M&Vj ՄjBm5P[M&Vj ՄjBm5P[M&Vj ӄiB4vP;M&NQQhz2|)؀A 9 0 Ë6^Kxi/mm6^Kxixixixi۰vn;EA>:G{ 䡃ͯhw-?5]kOx9;y ~گA-= 䞃]#Ǻ)=ķЎy8=7В)tnk*sR΃Rǜ)S߉p7A ܇9r:s{#qjCp((%cI#ai8{;|6H C[ n.۸|[+nNf,+ҧ*Nدٞ!sLf8=|gl|y3 Ё pa\",t%~e Ͽո| ?#\g X Kyf6C١ƾӜ ]D {\v`9;NOݧӺ?Ӻ?Ӻ? ?ӏG  OPœx 4ZO7ߴo7m曶LJˤLJˤLJˤCËx f'gə}rs\8W0yNo& ws8>I0a{f̜Z3g~%=c<1?Y"\f K=*֌n֌n3<\uMa^h[w̔k-s@;fdJFdtoai}'[=vC9C.dFPs%l3aIO2WīspTh0ogm_-[# O KΙU9 _uOLS dg2:ï3:ï3:ï31?cr_c5_c5_c5_c5_c5_f<_?{Qw0;`w0Ɵ0N;'d?a OƟ0'?a O;'d?a OƟ0'?a OW3Ռ?a OƟ0'?a O_fe_fe_fe_fe_fe_feƟ0Ɵ0b*ƿb`0?`SzocX6gygygygygygYb/fYb/fYbg9c9c9c9c9cygygygygyg_a_a_a_a%_b%_b%_b%_b%_b%_bg_a_aE_dE_dE_dE_d_a_a_a_a_a^c5^c5^c]lw.~K?YzYzYzYzYzYzXzXzXzXzXzXzXzYzYzYzYzYzYzXzXzXzXzXzXzXzXzXzXzWXzWXzWXzWXzXzid`,w;XzK`,w',=a KOXz',,,,,,,XK`,}>물k물ƋlƋldu6^gu6^gE6^du6^gE6^gu6^gu6^dE6xxxx=5]|\,2KpC(1<303_̻yWyyWyWyyyyyw1<33 33<313/130 3byfg9f^b%f^b%f^cfgyf^bEf3<33<<mo ۦqt1}{x ;6]!1!ϜiK6sWaOx[SnԨ)-jF id0YwaxS|/vb?!Y8>zL =BiǴcZ1-zL =7G6oިmp6^HtNjt.yG'"\˽+p%"|W0h4u :MAĠ b1h4A FGb~C/:T$z܇sbC}1hKbJ8+ڊIzpd&!_‘ @Íȣ7f܂[kKPm(QR,r܉p7aTz&tz;XoGCo4q1:Y?{Y`/ e,zmfbCp$ezCLo 1!70 ׹r,K=6zYbnSz[oV?vǗF`i.u;Cxx lF 1!4Ā[ӓeiYe7 !Ypd1`x ^`_ugYg|֙p0>Cp(`~4# %(ym2e,u{@;d*z߫z\=,S`Ofd0kg;G7Vه l GOP,ʂ,ʂ,ʂ,ʂ,ʂ,ʂ00 Ëx ѬVE0*x=X5=Z<^<'ЇuIVnvͮgֽKn:S jH! #03.aV5̪Y0 ˢq|:::::G߈Npy8#:("\éWaq ~k%m`IX҆(0ΒY8KgI,i%q4ΒY8KgIhtRj},zފIFt`&!_êihB3RH#bĻC  ;cac? {cpND Z2NWp2⌰\1 Ё q\2\+p%"|W{l!~'a:?q=nbt{̽Xp?b+Cak#pTS'l?mqb83y~ƙ8êkªs)MԽX}g٧|){yXwjyN}|Dx m?Br|.^%Ɵoq+܆; ]H$^XMi|g!>#<5E\Fa | —8{4a2|X~{ S<6(Iv(@IBUku_bDs_;9>Y{c~bv/=-ʸz]?W#`n 3O]bmXץL0,,&7˲cG7x TC-S7.ʬ2̺(ofcؒ?gDsN>+xX,sʬ2| ]0$s?Og?'/?[i3 /r7i8->}K ~sV2|A!`ccH֥7Fڏc?0fN=<9xÛ oA G@ \p>+!'glJ#{{|/!!/'8 8 8ix g^IkUby'{3X^`y9X^`y9X^`y'Yȁ6 kڰ6/6 kڰ6 kڰ6 k`C!X^eayYX^ecyX^6ecyX^6e oczQL/E1(Oyl va'<Y {~ {9?Axo^x o dW$ }x:,7< t񚷡9^wM\5 i&ffb*****0SfL}3a>ԇ0Sf`~ԏ1S?fL3c~ԏ*****bzJbvavavavaԃzSvN=ة;`ԃzSva vavav;݈nN7bӍFt#vavavavavav$^0p6bj.ڊJXj3ڌ6cԃ`9if`9if`9ifamifچamifچamifچaYif******1S?fL3c~ԟ"XS^|B+1x+pN&4 UP5 UP5 UP5 UP1l 5CP1l 5CP1l 5CNM\p>+(&dlbQL6F1(&dlb,u^d`CROz>H~ȱ_J;Bvc`9n+Xs6&[X172A_85k#es?P eC!X,yV{b+ְbVM++30c 30c 30c3V0c3V0c3V0cf}pLc?v=رk^0dCV0d?=C`` 7Zx%>OW ;wo B"ǒ,YÒ5,YÒ5,YÒ5,YÒ5,ك%{d5,YÒ5,YÒ5,YÒ7bXF,y#aaa H/`K-G(~9y83gVy)9w $l,:EG(y|-8ugli#c kc[Uz3bQ;qG1(Ɲ)J{9~qJXx&-JoC%P=TbC%Pe`G^G%RTb/Nkp:,7< JR7J(m JZ!VHkZ!VH-p>~OUt&!4LB,%ޖeByB5xh OkPh CkPh O @-C¼&[4ڃF{h A=hڃF{H{hٴlCk<DmBM( 6&ڄBh0(<4 F sOVBYh4 ff,4BPhBYh4 f1 v.څv]( vJh]*ZiZVUxhZVLhU4&iʹ\D.m"6KȥM&ri\D.m"6KȥM&ri\D.m"6KȥM&ri\D.m"6KȥM&< mC&< mC&$ڄDhmBMH 6!&$ڄDhmBMH 6!&$ڄDhmBMH 6!&$ڄDhmBMH\ڄDh/Dx&0 S! _io0f!̂Ga6|7a.| a>|wa!<q?],= h_^x`?p^Ch_X1Np^̃Ã) 8+S?+#0 W-Oj\-]AK\/q4/ŠY`3Q΂!0a| 899Ga | —a~dKdK澐/d B澐/_'$G%1;4 ,I!ExP\\2rir R) !)O-͔foIK?*gʙ9[&>$N5 (q+[rBŕr|M\-""HhO{8aё6+mX mXXc⚴~LH{"I2-?@twJzSzL=ʰddBX@ƸĖG3lьω33g XSǬ?0UeN>k=`5ak#֣ccGǭg[;.k{nkU++|kc_yMfZf2sX/sdHs sThs}//ggdޟy1dIs,fvdiސv͛31$?͚ȼ-kIR3Y˳Vwgd6b#C12oȷ /&X?! aӽmvn Z8 -Am@`  C 0äyLMCǑ]9$kbX+0yP jbdۡ{sI؁#ZAN p.^5/Ē_Zl6y76s@ewG8liH$Nq{_pn;yuC!F>p2L<nڿ<a,%G+\EP~sR l~P .hphp^?pN ꂞ$I/B; dW :bqr9Aqu]I .*-=J5`몑7gn鏆*u L3R9"R*\\~o/J! FUhq#Ϊ j2Y[5-tD*'Uydjvx~)S摛VYSUD*#VBWT)jY顎#UPGʙN=K9 ǫ"䩪x>^QС'orQrAgF^0bՖe}>l3Ҟrijժ] c|[?t0^u^:./̩:v\Q8tngV#'τG+miU=F2v50OMh+OW酳n ;r@r[",s3#t*JSr&#M85'2頻rqDRsO1RoqOLTWnwϼsԱ*7(uӍi2P7-"uKInΦN_w:K7+TPUWN6չ4ѵ6rws͡ yrɴY*ykE\O0'M乺dWnj-cke:{M_^JZ3۰Vuޚuzީ;m#* ˅v=g36]]gP3)u􀨮gֶ'sJy6[-+@ZLJ96Wu 7rri`<"0 <0+>bSyIUƻgdTO}fmm~e)_Xf$ۢj|SPG|mi-U+'{/7PKds F6UMm|mE债fs#vmvԦ=F7Tlnpuyo^^ Q&|r{yv/%W'6NsWvkzuWdWGGûm]{c䚪.dVՂ{iq&0^V mkڵzn%ǹjmkڳzgl{] Ծ3&{>^%"ur>Zn^=#[m\+,dWlͮe| djgxZd3FOJ'hi;*T]-sz$ 37ynSzgԛ<\3Y@,&x͞d0ܻx;'%ϻTΧ%τmݮXXX}SKv3{=jKXx8"z=_rm6>6#w׍-rO)=IBfy=켖ڮv"9I0-מۀk_xtT"re\υu002UCܾU7ƚ[;IT|+nn߫H:p.#_8=ku@E6[k!#[ISm8j?,ݵ+I9,KZk #OyNo2'J\#mw+'^pޫ8QKW8vԿkF޴_WԆ;7cl`~mQ[٩ʞDTKd`ZD WDGTGG]2F9W2^`5P:K&+aTBtJ btz,Y2WtUd˔,풕]R܈/q(؝mK]v=V{SKKMTWJj/GsxX(CXrsvՓym;=ճYKV/dz yկ举S^tTqMpݒE%]ɕ6Z^rZ}.W£9.rD%7\Ցhnu<ޑRE7-xE[ۣ{58[#-ƹF.0CC[[ãSC&#w㎊1)]ICUSsi3G:+fՏ;y[?9XP?G1~vbe<и%q6~Q*p7Txm3]^iP*bd;- Z|Of_Ŷ-;w+7[*g|P,pHőOOU??_H6rΕl:FPly]q K/Fߌ_Z'~FP_ӧ?6,hQUZ㷓=kv+i;qۂI+9ShLɎLԜM  NT9:sY\u)QIWY&uCӂK$3/b(mMp 4uɜ\,u z] /5߲0%A\N\n(/7rK$u]Y5w\xbd WJp. &뺸[ʃ\Hp7S 7\ݩ&{]-jĹ=L2̮`kck2rt[wȣFp6N;鉴u眇g]`7D7b|/]FpW\j8Oո\3{~eFw0#c84to,/u/EqBOƶF%97^Օt>16np\oԸqT_? w;Fz;ki+;ԾRq_ſq _j77,oml1NVdcɞU:Y:BDƋSݍK{)KW5󆑷Kgc)sbRF ̥5r,tEMVlTfxÄR;ѸRw͘R؄`ͤdaњakYjD_';M+ ̍H^ Wfql-Z,6tk5jkҽ5ؒ55jlUikML]Uz̿4VޭfCL昫|ͶR]3(^ikZb[Jom/9U&֜"嚎X`ftʆ\5Y6rlCejnM;Z6nD٬ڔi+ku-Mֲ-͉%ebWV֎ԖN]+sN&b7˼y;eSlgjq2U]V(P|ls*rZkڢ;e{jBej]kU֎(k yeGj#kGo*;3wF$ !J%b3Pb"ܹa֨Bh,X?k)X>k gZkYj5>j-g̷wp޷ַV^}Μ{o}ax)uaCSor]6~L֦ ;ņ)W45t9pin:UG\5Tu7iƆJwBÉ䆾*w+t&ɝ piu{J@ߝ0uOoѴ=s9kjt^.4& M봷~M-)M{iچxԮY`Tb w}ߛtT;B{Qڧ噫٫MSٽ|.!v**d(1%HUp !|?&"l?*lO ;|p@Ip_(\ O YaHnkf3o<ޜo4O6g0O1Oi~\5#|yUyy!Ѽm= d~0|CMs!|oyo 3Ϳ303?L-9sf)OD? f/#G!/,86}A`DC"K3R4CK7<``r l2}&Ph(dY99!C)6We'>a"B3)ElRW`,R*5K)avNY٠llUv(mɥQ:!ңPJrIP*SUAP5QMQL5[Sgj:W-CZ.VER=_JQ]@ik'A{mNҘt.(iqN^V]CMǫgs:a ˁC"8'i bd9fb@ 6d+I`s@Ƴb6f9+{$}-fl)H xv/A& X=k` ρW`_̾ɾ؃ )uG #п\}C4Wd-c 5guW8sf6K8<&Bl=ĞrSsY1D;>q1}bp\5{8w8a"r*q!.g5M8[ {2V~$gϘ̽2' ^@a ,S-AK,K7Xʲ-FeY-߱|-Ȇz̛ f t (a/xyow+z+U%WyޕF:oջͻvyGޓs ޫ!MW,dd)94%_Q]Y,QY(JPiPV)k&e]٥Vn){A01rJ9W.*W+QMPϼc @(u0~O $XL,@,X>X~Il."6?ElKl~Yl~\Bl^½.N,\/;g|uViafy v)\uN08Ř˺GXfأmP178T , RBvp"m`ϱ@x 9ShhLଲo4xu~%•h ^P3${=7۠!s+Ȕ}PP5xAL&S0cSzo?{Si``rS`rNxgڍwf@p»T}(8;?X2&J">V{F&(!F+/gx}A?!VW"W`Zw! 6zF>׻!A_Nmlywwށ`( v܁ྻƁ`P{z{p"x*9o˜kZe(] ^+ zC S&ͻj mQX@׭ORBĐ;jNh/!%4N WCWBw 35 xa%; 8t|4eF( BМQ* t*ź8:Ax?2̓udx.muJ|ȗ0j> 0U 9؂qHdό90Rx^W5U ]W[jC؈E]Nr6U73O[S\t4f໺;<3սp[=s6 "Txz&\ԋaz%1c5z؛osokxo'caΈ@};_WG3u?׽?#S dDq:`|=ÁفEz&0~>Ϫ+4fח/ ߍH1w/=Ho02#'/% *k0FջK}u>pկ́k7ӞLx/b&{jKo\%+\}0!w~'m~ϸ=-~1}xFuna.Gcoءf+ca_^;IeW}w6d/W"k@$+:hs?HXN̥|b.%"".-R>.3YFcu3"Av~0tnde&ȺH˰]-UEIuH;ƞ;騋FQ?VFhzHwݺѺHo]k$mu;##:"1!Ožn_j]Wdq]w&ca(_ԝZiNG'֝{BhS4_7ͯsp?h](Ĩݟ]ϊ.As`Ӣ2]ˏ*Ƭh}N_]_]GF7Drtί_&?{)mG>WEFG7E{pDOGwESs{W}5uab1 cF?^eg?w+8$qs8Z;>GqtCҥpqcqSel'0SNy/ϒŎFJMd B^ ۡdyy\eY/UZyI"owɲï -QMa|\>EaMO'i=W@&ih Kih*Mbt:}D'әt&EgљT:ͦ3чL:ͥ3љh>Jgztvq:ͧ3'L#t&Z~>M'Ot2ZD'O\&ɊdtΧgdNFt2r^f"[dNF?I'әB׹b:}NF?M'/Ȫ޷j(`2X%ǢlmJ3Y4S-IR iT\O K+HH= O: /]A醃9G"Fj6H$;HI{@wJC(Qc:oR`rA30epO;tZ~ˍ \|B ڀOȀ R`oT~X?@A'a/LZ,.!Z)SiE*0#>˅aEQn=4Zhr Y ,ף8yHsj7DPU#E\VGjmgm4%#Dk98ԞcbmhqS }guđU{z`8rjkoDbXWI%qxo9::,a)ıNmsr&%'Fvx9A{tZ8*y{hp>hq S`9[gW$U:pO6 Rr*g@:f_\yT%ϔgEc;Q@WzӽY49՛_{;K\KETvpkzOݪ%) ՚.Y&fhh jD.pA(܉ۭ76V7؎Kk/İޯ4bIlpؗZ5q뇟q\ؚ8L#1PT};a,8\}g,\};Ża)-^C$B !'rad{5{!Έg5_$v/zt?牳k}HaW%f[k>wT7biALa *}1ȖAgNca~ nFx_s{[k.oր{\olˀ+ȣ/7U~ ִD?|{NݗagCA.ʡ=?cO_ҽoԖq@ԯ~x0qj{t;U0-c`^g :r_7Kq;{;_yշ]q{,+ݛ}{NF؟`] X6(h(V&jU|C]t_vgE5ۛ u~Tl:i wimDAuԳukfmbO 8^|y1Nm8lqmNg ܬ&_dg&jA~t@9:O!ڧk v6OZ};{5@c1ԑ䶽Aw;Ak5khߤ_ۢ]v#ahcavWa?e?ͯpg;C_<v ^5X:c# ͒)\ttvj (l(TjY\  htz'/Y@돻~ 0``v3,y\ 9i6 0P߅iwb\,TJݿRG#`Qh!VlOYgفC#e=PvlY٥"1QLL1$O!\DJqX&(}^ (6q^/v.[ڧggۋ@惔`1_,] >}}پپվfcOgK %%D%+C2C D%T%I [%k=`cYc`OZ;?d]7s#7YI{>ɐddI5 mR8}w=:ʧUOk V<x`\ He`ىZyv4`P166@]2-Q/ԱX.^>gKѲ TEi2lWegD UIo]kD7x 5j2dfH~lueM$IzE炞o Lu}_gs5󌩎>B!=OݣTG>MOwa~azc@ f»&Ө?DPXH%%')4嵚\[S>8q\/||??Lnl רtZr]OsDWH# ^MyaI4?CllQ@OPY+@Η$k q,|O>3ϯ:O+T?A:_1-FMטLW7RyT˔Hy7AWOaH%נ B- W?Fm0Pg>[jߣP~/>LTm#p/5d#`z򷰜67t6j^ڐOΠ{kIo$=] ?KOq 6/z?ݤI6oljPqL'IݤIR!ڏ%*K%;u<7SI&Lz4,{|@ϧu+T86ʟ&}E't3Y o٦f 3TiҏGaIC'Oz7fohu BGLk78^mS/'_%#7I_6'_)˺^M:L[B 7)l.C#@lajHD%]牷aKv^x'8r GSd>A%TA=̠1fPD }F9jFү-Ț& A,*Oөtj9ZNwSͳymO>W4:f3>j *i3C9S~ 3Pú@o9*aQ"]- :x'Yh,ɻ~^2 7a~G~cM6dr@QI/[Au nʩ}~ffb yuJЋyU}"PKɎSITfl؁{YN9=4۠?6#a~y5˥67Qfz֗#0t g5D^NN5߫{B͛aa SO~8ғ%ӱ$, )=l|/$dEoeLq/Pl`֠6 w ߣtY `D5b ,br`o}mEDobZK^軺bt*?LQۇuyw2BGYTwp.7<)OwP9w}\(뀩REh2\џy/_șxIVNiz6xV!܄]ᓉ<'(3S\w@%Wot.mý-MS W(7n WuyBS^_oruמ\}V?Ѷn,ú9m9˽znvJnyVއq %DŽ6(y^0:dIWxeG #?JꞀ_e Is Mk;$Gj6Bg9܈lc=~|[g;~')sv~7/,Eówi-uu.,~,7/ˠI'>".p\~L|f3$JTKS| ^ب.wl۶? 3DӐv̎WY,3ޕ=ts<%wyJ,Ux9iVE\Nݮ%uס?w6or/ 6.o]?ē;&aHTe:vyr N3:~"C~(#]g9SƲ,{'qa1oFʠo1+\ qY]DS bWdׅ# m6=~ ^+b9ڞ噏ǼY~u;$&n#ىE6/G%VK<]Oݶ<=9e6MϮn2RUa4T<\˱<#caHlaLXOfȍ\' %#+LfdO# %ɖxOa+՜[J1v\V˭&,y{b g?sٳz["{S<W`\^ \(ϴ"L{-h>e0w]#Kt׃Sp,͓r[<ɢ#&WVT$+Ĺ.ziZEBF"s-\s)ލE_]?8%J{\a48:0d"pO M)a̧` `6 ?ӽAm7bR=EQVJCrNNIx%Z.yb?Q)m!YG$czZp-mx)J+wb{7_ÑU֟Zyo#JWIc]WPὐ?)x_.oAMh߂./ #dUɜHiTXoW筩({[Lȹ4Gd-m~w1wFߕ=^cӺqjļΔ"Ҋj"عyf -4Ҋe&^m.m] aџEA5w er_=YI|1;ʹۮr=Y֥Fr207 ]vu-OGE&̅R:Wu}9[~+;Җ/ 6== 枸hr&D^+'hi݄g>fM~8357Rҳk@_yNxKמ/i;Sʽܱ7gç8c.9h}Xr5Ǜ7|\^';m;A[ɁLz]u?P8J.rWf\]do7VI$;cX6yRjrd$U9/)AΔSyD%sǽ-e5 i8sr9Wx&%x;iOi9˛)̉SbX#wo=Ww黟Jp*?JnJ oBO2$2~e Y짥Sr7OR[~;b%r~h'=ܷ3~[;٧Uvs+Xp'XR|-a:f$+gҶhXi2ixNhv]B/uܥ>[p rX,LGEKKӄ"G|^RU";lȑ-U7 [aF) gX;DJGQ~M]᠂w^w,75pl1BG 4u~ȳkڸ,Dhf;,r Ge4EwBs9ߔ_) ně5X\6,EM&r"?kXC#`ɘ|Bq4VUijhLt&^;wcFcV>]"0 ..жA>p6|-&O=6-!O& e=r:m[M,O6 Ϩ0X׵QRXucuQ: :_o|W\+ Xa~Dn\qfJ19=9#B< xȗEv H<L+6ۉOGvƕdvc}}q~70 i!H Q:DcD%zExTJMUJp8*%-,6=c;#Ѐ Dž0^ΗفDuoIl}D8\ REz!~E@h•7ўA)9`]|^Kaӗi'%6%Gɸ>?a.-} ?4{q9)ס)a='3+2RMƻµyGc9ez;ׂLp/[ZDmj\2`k`n|p݀3zQj>NdfoQ pE _*n GR!|eFLp/N-V-;Y( g $*@~^Lla{haְK좴Z=\e =.E X؏;!qb^ ]\ y9Nȫd[H;̗OP{>Z:(F #%V/鋆o| ]4Mvg+Kpc|{fc>r{،rXEE.O{ p #wm:7ym|ސW$zV9lη|'j3K>9-"2i.|~'gw݉^"ODȩ9i׬<ߝ,tV?3i0-sz s|*a'f-W,f"ߥ]9,gLTN@mBt7XR[)(:PKNǍ|B6^zMc6r Z$Zfew/b[\0wfX.t4GuFuCqm-I֪;@hF %hG]Rf{=9;頧*!t~VzWeOJfjm3y Nl|LO|L|yy?"_z؇ ׁ-es˺nM蒴3Y][ͭ:*[W;aGEh Zᭋ.%k |LXC#8D鬦 T#oezi5W|<߹ ,r7E#sN,ɾ|k=bzTǐba,˼F%; >?drYkٗt0(e=۵~ 7EEs'o_Xv-BszI AS~,vCРw#e+Q> ?<v@3:V7#f\FG w{#ON8>?Dz>22sGҞ/)4/b +uK ^/ #$4Wo pD60o=V$5db G ;J #eѼOja9oØF##bؔ;mDRၬfm/{_!vL[@;`_ h+{`7cm0&)uJNM&SЗוgSqQ<"fV8~[w woj2/+eϧX`!D 3@V shq0&#uw#C]xI./{7a9 ?sf}pa 6 y҇!bJqGи?sQ59膳E 0xJŪžP\>\gh#a"p6=ڈM"ф }'iaspAKn8KǰLtGSCY\V-|Ьn? 8'\A"yd& W3 ǔq7O. sLdod0ؿ<'SboXL#x])9/3nQhNB/ v3h*csߏeU؎rȽba,r%J߇ph&Bf~|̀(Nx/zzdz '‡XG_wV<VC,wy%by8| Vni`s LJ{@⟅( ۩°] R^;(G:7 n~ #k duErc&rs,ñ R+҄`Jg#>loޥ6~jd@ѓ@s cvt7r=jՅ'ogC=݄4A&V.`l;cC"iJqEи?sQՀuyA{Q4 s0o:Gu7R᪂l>C0w' S<œ{D GvN0 fj3lwh?Za㎆3{3]2Alj7\I #h!>HΛ܋"k#W}bG>.4ϻVf"oYMM3y`&>5 =O"R$xEG?qEE]5OC6'~6gpw(oyIޜG\rkޢ|[·h]Q;;؜'kśΞO}I-n)U";䅲x)D,}Br.ΗY yա`xC*'Y[dn@ވ| ȍ)Z 9TǦjޔ~4˔_ErUJ}!?Ad`JGTpF"UJN|PdYM3xed_Bouks f 'Q:6B;()O"~$~i4) }2 $ь <Adq +t~Ka7뚣o!VSlF4'tx.~OltTwgY(z{_v/]pj_^׉N%jb ' `,v?aY-4ӞdN}ݷGjTʝDxLlG 0ӯ_DZ+mѣQX=ޑwa6rѹB|3{oka+ܛZŰߊMȃO'2ӑW?y 69د[O4wLR7vGӊLfFyu{;_}[,Z1p$Ų kݷ"\ k͎lAJ ,9{; SМ,h)lɱd5/GJJ7G~B RV:@? &4>feZFiZ7&l[܃i[(^HŦ?~8ﮰ2/EFJdϞY9ĿkNSx9> ";5>ֲ'~73=yt|yTc9}ev]|>/M(e'[\1) Jї>tb(KL,căR@. U"D+% &~,y*>_o5()m#GgY~(6X3|zx󩒿g9G>Tc-wObWby~塈:m;<IZD"ȿ#`}"`_@Ef_ӨxϔNO#xKR8>r|/"hB|ěDdVыhy!|a|vFFFs/я/>Oo~Vؤȫԭ&mGE<%goW mQ(.KH`"fzy?"FΔ`}ǏL?3/8E9y0r+o ':LOJjMװ< XE>{ mG'"7цMdTS98{"fA= ||[ VD>ɗLU|XvJoLl,@|ɷ7`'_P%z e?^_XA#?e²8R*yv9$Kmȃ YR=Y eɂՍVVuU=NvU05ZMPjZFQQeTyU\R7&6߫쨩ԃaWd,fX+P v5RTmuꯪz@iYSYj$5EM֦uTNw5CܩmZPQPu_T JW^ʨrH5V=V32T%%nCLݡTLJJd[zJSuj꠺޶ݪQjzRMUq*ʩҪ[Tj:UU)fnjp:}ze 5o p+}zl o`{k2 `?8 Np>\9F;2΄sB.$SiNWe$D|&\\2?IcW$I]w4a'qa?beӼt@iuHcwI%ݛn~{Su?Q 9v7LSgwgZj>VIuIpJ:N+:s:csҹtI]W?zޤw55M303,4+&__BfP gTz1Gp%8NruҥG]?K} ].dBGN]zL ]ﺺ./[ S ZUXJß)qjWJϛ?olYW ?Kyu+-ջ^}]οAoJ*t^Vzym?.t7OCYBׅFBׅ7+tQF3[s)g3K2z%NEP%zI^Qpc/: bQLIFE~4j|sd;v~q~Q&x*xJ`ݩ%ôbZA08RU_T48S U͂ <>^n Nm଺=8S-j\ .rpY WT T<&Q2m$;m$fKhͮNb6MY%Zf4UD-kȽ ;GEG˫kݣ ћ7FFgI =&1fRԉNSFc]ts',g_3< UO;S)YsΩEz]͒H־:I'Z5GT.KF}*j;z~TmpYң>Г$U?RYzڦ_/zޯ>kRL U 9h,p;}q@7q{9^{{ܹun{㝆LQ⋉;g?-ĒNzZLz9~貢o럋~Tt[fC N(ғB[P ZBJ^+EQ@&REޫwA{}Üٚ=smqzQ*ު7ϥ/ T"^J-UKyi\-eJU:^NWyyYmj#6G]jR{^::cauWRGQ㼲:N8uZUYuWUy^M]TyuuY]5UuTu^KRxmu[ꮺ{8 xG87t7rL۱yN.'o9A< qBxs'p:yyK'':S)[;aNopJN91N o:<ɉsxSwqE>UcmY7NNijE )$r hw4D_/zMQpZUv#I#Ғ$#Id&K>'Kl'Qr\fOZ{{xW\]rw5޵ @kKP.~rw=ލ ~P.nFԻ2({ ۆr{KQ.@ܻ ro7%=(z\݇rw auK[^ P~d9GG?2#rԏ1?"'#rʏi?"g#rޏ?"\#rŏU?"\#rÏ~8"r"rˏO~DnG{~D~ld A1X62Fв1lD !1وF6"ag#blD '# #Ϯ111B1rg#bFț/#~D )Gl_1)G~d#SҏHi?"e#RΏHlD@#)zQ?D$ϏH(?"~D*#RɏH~DG~DjGx?"uR׏L=?24#ЏL8"RCDj~gսnkGJl:oxwރ@>O|,/+0v9ʏ?O ?/ ʯ=FƄf<DA|!|0'0bg dėoI  1BZaՊiŵZIW38OIh,GQ 9Ao}`okĕJw-G jE=~G Ԃ4]hBW34S4[S0r?@cVMN,V301$gy5_ǿowg,> 8xA%|-óς>KR/+Jk>v)O_]4={8 ~Ybvԏ{ܟ.<8NH2&cX"udݧ [m2}~2Bid:Aޅy"l2Gd'Og %YD"!V,%r$jkd'F#-J#UvdMdĘr"?Dc89ANS499O.L@4F&E~"rL_}phZ,bY֖cY:N,uf]XWºTƺ'KgXoևeXd c;aveqvdiveyn "7%v]aW5v`7-gvCq5s\r/o[DފwxޕH>c>? B_̷6=w||A~#ZemKۭjvHQ;юjǴ vJ;jvI]Ѯj״ vKIj?k_z.=h"f"A4-DK(Z֢h+ډ"ItE',:.HDHES^#~P2 2H CPxJ<-pxN;Ҏ vE;Ʈdڕ8]ծfWk5Zvm;ޮc׵vCnb7 vsN[٭6v[N;NvbwSnvfw{=tc }>m"ݰY}MgAq].;}~I[0oƼu!k8JpޔJWԧ4gF<wUC%Y$bܷX҈5ؒؖ%:4ӛcHcy 0.WIY,Hr͢$,a& |M l"80 6o!sJqS@YɬNҀI|KgMpdKބ_LE6_ y$Y______"Y 9Yy>ބlLvA$' c%W wqDB''G\i>sCKd+Ӎ_H Z5 }{M(w8j%x7ݵ8Ͼ0}~D#?!MhJ1rFSh*1z1MMFSh4iF`!M`4K͸_/ӿѷ k-J(GkF%\c E3`cYt,}{Σӯ 5DB"N@"0PVgeZ0(Gܕhe4egZeZeWZ e 2DFkNLPv rߕڗztj9\m)Ntd1t>.)Sg(Q(BeiWM-ˢ\/ˡ ]4D9NCMG@˽{m>lZ܇hh9=dD< /Cċ#%'x)D@g\Vx Y:ss.xL:Χ @1į2) MI6N2e2E6@M6t% p9M6F]6C.#[̐QN\ XJC^vGAp%`W4d/WrQnr$'XrSt{R'ee׊2εZNVum)]+eM׊UUed ɖnn'۠ۺOsLBw@wDwB';Sh2{ت÷t ?L8};`i凜Y+͍q(ƏP:3Ҽ[=]-,-#Xi0BC`O1W1@.wB6Q2ZVe$cee'Ȫ.kȚud]YO֗ dCH6MdSL&沅l)e+Zme;ٞmi{ڎ=ifdUaٳl,{Osz!^DӋŜNSGPLdGI&β*Sd-M4]=e%{8f7N'Siq05 4-6SM5P U#X5QMU3`5Zfm3ެc5=^s<`4??_@h1[U*jJYerV峢 Vk5Y VsJZYk5l ZOZOYO[Xìֳs+ziF[c֋8%R%VjN RT7[iV`7wn<.H6 "p6TħcpƤ΃ݎ3C!GV,,!<=Ip_ĩ㾈AJ2_=wwg HY,Kzd0pQVa̯ZaVy2 s~ Ȝ@&2緐9y"2w9Ogl>ȓרׁKHҟiӿrmf "c~ı8j^5A[p6{EWz.FkB9{o=4ۛ wG {О =ООh g03̋vDs\ў߻=R\A9 60d.3wW}kߎg9#.BUJ^-"{^7]?r+} >P?P=T _ TPUϫ,5RVc8z_U|@}jZ֩jڪjګ::Ϊꢺꖺ{C1q\Nq:Na')D;1NT쿟ǩ|jԟz9]>KIi9X5c&]@F}M6 _%% WFS+z[0֝If0]BVo`|TȿZ[u¿S?vҝ ͤsaxw.7{襩;lN߄[mhOS=. *~ [6f̻cx<jYжJ,Y0CXnh&c]A(+7 ÖvVeYYhcmg&О¦@{* i`˜70 xPz {C>ڃg=L,UhC{~}[E(w6*7##P .+}p*L•̚T`ܩ 8>aN7ߦqy_E6BoSd#E6BPd#E6BPd#E6Bd_!CNBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBAeZjߌ~|5FPHn2ftT$>c@fƀb0w;ʗs{jZEcGFF"}Q訨I|_rmtAZӄ-`w_-3 E)a\ŏ~y ٻ}q+mZ䑨Ⱥ.>2lO#SqGb=_(s,vtǏg]+2wsi\3㋧&3|B*|6femMbo>y›\[ȕj+sg,[[ReGO~4N;sW1aQɠFeoΰϫR$)>+7sr‡g~Ҿ&Gv졹WiK?OXw$ZiUܵ;o-!ˢ `  Ns_Aw̢U/5η-~/~R \L ~>xsӛ/ݎn;&¾6_S_ g]Aq 2FdNwFdHm028"!x`g_lQᰓ/5S555zcСC'n]ϙ!&&]'u@[."YaѸ{gq^Du}qi˧ϸ)GvU1 W%mo<21٤J-ۿP4V}xW;U1o_ŌmkZ4py˳ zqA}O^}۴Rw>Us[NI%8Y=ϧ/.^YӋz_6qBOCZJ=|q&Dh:oҖyoO,= cNbQ3(=[K6F K@:t_JV>qP׾F(_Q QoĂUW"{P̞iI[nbu+ŖP/rbxFiwKm*3y鏚8nJ?K8]G&b*hޮdEChN1Dϻ|m"K3:Vj\nQo[))^]1ioi}SCOV 'b=7*ٍ?o.27fwF}#i\첵k*[]bȤ"/gͺu_em~'[$}R8Q,LNꕞ^ #n;zKZO7IŐ{μĉ;u%?h^@D*v]{Er=CKd}HLl#Xi\ywe?][qk T Tͨ;:_ Vٛ]++1T PUU\z=.Ek?ՙy8_g-dKgHL]CLS1%I2IK)K,cK1٣W/5[$Ц~<}susߟ=ӏmWYp3@XXn.,t4陛Y SMT\_'=xE9~5s߃ )pz2 3DcDŊ mz0cs,iL)1.F:[讏KX䊚WO#lbH6Q z#b\.͔<{6!iyvooIـB?ךj )8q&1G$ĽFA˻4LdMn EJ8q}Y0i6&-jɧצRΡ(դM< 8mFMb:NI0z'Vݴ?W.%~.Ѕ~9tsH qu)gzF$qkQ6@\ӎIsԼeY* Bd٭,MS*OA YOJ^%4.)!sTf=t<lЄK A75[k9q!)l %-#LLG tU" -n{xj#3*aO1 Gm}Tlȭe @ d Bب.d]bvK UZCMXQN@˸hVC1JONޟovEO F~OaD-5uFX;N#fM6:B߻3X^= &@]рFI 7x7hFQȻ7wc5.$Z|%@ޙy'z37|%ZÓ'uHzW-ӲJYPoIYZ3EUb(ՎO6OJ82f6-`Iv4/>KQ`5鿮4r$\,0/8 }N PuMȂ~̰NK4S%D?}sڻJ;\ʉ{,&{h>8mQd#8B%q#k[W 3;^r.ϔzҫxt瀺w+ -zE|Ě@idsC1'\2E9_K4揯zf#]Yn .l9ljU I\5 B-SJ$;zdZ"2QW978B(Y=6ͬȚ^Ds9H!ostMpuY<-K ,|hxaNE;CY +"'=3?U?n^d|G6h=3O0*I[ t d@؝25$B geClAx"[+k3s rPșǔ|!¤ E5}|~D;ߌ40ڰ\zps:Ad:#хN;1Ͽ=y>>+"kl@Wb=d*<Td&Qdt_o332oNAezxgI@J\MiWcC`9 bǙOK$oaZ+9x}h|>d;HNrzlah;ɓ[aЗb,9u=/ɮO CGQ M!;#C$P]K'P@.`mO8گt?~x3~o.r;Y5 cнlVkMeaU:ӵJT@H$ t Mu#Q>q(D/^Efw2wzۛqY" [-~!S} juUՂUj`Ebp#coo˨;4y^ӨMºA=+y+ķdZ+_pY[ sbu>,~8wl֘q晓}q=]|`&zcQYc)\j͓*S5-Olu]$>YsڭwL'O:| endstream endobj 2580 0 obj [ 0[ 507] 3[ 226 579] 17[ 544 522] 24[ 615] 28[ 488] 38[ 459] 44[ 623] 47[ 252] 62[ 420] 68[ 855 645] 75[ 654] 87[ 517] 90[ 543] 94[ 452] 100[ 487] 104[ 642] 115[ 567 890] 258[ 514] 271[ 514 416] 282[ 514] 286[ 478] 296[ 305] 336[ 514] 346[ 514] 349[ 230] 361[ 239] 364[ 455] 367[ 230] 373[ 791 514] 381[ 513] 393[ 514] 395[ 514 343] 400[ 389] 410[ 335] 437[ 514] 448[ 446 715] 454[ 433 447] 460[ 395] 853[ 250] 855[ 268 252 690 250 250] 882[ 306] 894[ 303 303 307 307] 910[ 498] 1004[ 507 507 507 507 507 507 507] 1012[ 507] ] endobj 2581 0 obj [ 226 0 0 0 0 0 0 0 303 303 498 0 250 306 252 0 507 507 507 507 507 507 507 0 507 0 268 0 0 0 0 0 0 579 544 522 615 488 459 0 623 252 0 0 420 855 645 654 517 0 543 452 487 642 567 890 0 0 0 307 0 307 0 0 0 514 514 416 514 478 305 514 514 230 239 455 230 791 514 513 514 514 343 389 335 514 446 715 433 447 395] endobj 2582 0 obj [ 220 0 0 0 0 0 740 0 408 408 0 0 0 337 232 505 592 592 592 592 592 0 592 0 0 0 280 0 0 0 0 0 0 652 0 573 705 578 551 0 0 350 0 0 551 846 0 695 614 0 662 513 639 676 634 961 0 0 0 368 0 368 0 0 0 535 591 469 597 531 326 520 597 314 0 592 308 890 604 569 597 591 461 459 365 597 531 798 525 531 479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 851] endobj 2583 0 obj <> stream x| xTյ3:dLNf$2yd# d ! hU,Go Z{bEl/U}XV{3{~^k3@@`DۚB᮶9Bs-0+̽\<| ~IxV`4f-sW6A< @U+۰M7wVn^\@y[ካruov]ѷiXpWnjsZWY7s_P/_znUi1_sWx6\zzeZ1pU߶ wqq^w*u/X=޴y.# ׬||&@G Oφ^n4&LOwd}? SEH$+^II3KvrM p+E"}J~<{OXM⌁XL23 [{PnNQ!}ʻ n IwSJii?Hdyg.#Dea^Ԭ̋ceY?DRZ ke'm8 ],apTd-P'_Pž^ (ezYNA-3RcZUfC5_ӱQvZهx'fJpʁe{9T3?οVG (wk4P{}0<ٟ3ó3TJ݉택w$Saޅ<4TJSi*M4TJSi*M4%&+ ($Ǔu6k̚ɒ߲I8&kw`a7-V- ߡ(@ *PKxpM`Fh鐑$ȀK a {a!8/nCp;|U8w]p7*֥&/c,%ƒKjAʡja&4C+̅vXvqs##xߍ8ٿρ)+dߣo2fC[#?#9#+~}TWM*帰xUlKzGz:i29)4Ϩ^[S]UYQ,V().|ǝtf;6l2rNIS ehiZ+7FE-9wvn@@8KE0a#?{ڄLgtP>8Rde,nym%i{*ԃia@~ы{p,c=1O 5-p-cp QtI2p$JvXLіh8$]Eww^<'DqQ[gOS)Q/2=3>r8?r[(8P#gGm @+qQcdiDyIO3jCѡ#Wnj64E'N`DVMuM4wRQ5T;=>9yP 37Et7SSs-S uX),ɝ԰oӚIff&$'xy:p\Xww$nX|-'R-nڲ;2:<ʣm ~!#or$K7&B?UIћ{X',1NhD_Hys/"='u7gDSGO /?"ԎIHlhW%ګqTMCѤ'+ b p\m]jڪG-CWOM;W[&5|tnn0Ou d߂=Or}]=2i"ù P,EҊVl2*I`*R}qNXyIA,$\"hr# zxzL{E#`K( j6_"FU!QÇ(x+?7=CQ?pUa.}|d-iQ] q~h"z{eUS֕Q5:!vi8:9hP/VRx8vGĈ.ڳNvc<׊ _bN. 2ɝ(bw/}qoJ'VqHIJ-|%M+n V.@e'͙B.r3ѥ꫔RYSG$6/&;ڜƱ29Mt/ً[]tN~Aii&%6:okx b`K%'X%\+]Gyƥ"sULpb )@dh2BEéI!RFnZ n)F@Ipcj>NRT*RS`L .UHKԩ*UP TA&/Is ~ w%+ -$_i (I<%|N'$%  Ipo J& ($[$8 `[%Ba`f|1_y[0߇;0k Bsc.̷`w0?Ymgl~`6_~[EpFpzؼbͼb-k8W٘ɶ1sf 7؟&yGewm?3Fұ򅕬{PCE5܃j=g;+o9B8 B͛Ft";SGD'S|ʅ!]Ŀs@޷b#߄YeuTZVSjˬiVE Xzݍ_>?`($?1g?#~}ߐsy+[68V**-+k0Z C]U?G?35a50]a{[͆n'?CrIteu&E=SO<Bss0?CkÛMbQSH0!4?5c&\j-靼a5%3Domb ި0Ze{/ƏM6 F)  =3 b$ s&f;fff#ff4j* r2an\wc{+F؋~;;{.v"Tl8؁Pl؞`؍bcbX{5/'EQ!&M %2}eEՙDy?P(;I8vYG܏=}T,#PBvC?>QxI>&&RO*I1Z&e$8[%`787bˊq I>k1FГؿx ^&l 6wZ?qF\clEpq?OH+~!<쉋)s - +ԒBo"ŝs8k%z<!obVVo1rV֊ Fp J+ ov8[hȭ6yfwwIJIEy=SUV=+*+e.jZV=F*0sfֻKsѺ+3 uEnUi`WlŠ@o䖹ntd |3=Ey<Wv׹ղ?|0S#_.1{nM9gx6/W{Ԇlf«q `juѰF{` ,_4#5(3஌ 9z( nT +Q] -WV"O͋w{x$<@4dUFyGIPHV4glѹԡ0{NOh L*ޫ zk j{;eX5dfY!!Sfh0=kXab8έ@6td~44|wi7dL+u&(5&4cycLʪQsrrSn&u׾rK*Ox)ǝ .5mE$rd#6Tmj&uIdŇ2Lp&kbw4lP d Xx~ppt @HP)sVBQ+ cy WAlJ_;Ƽ;vF|m파 m哔HJNvn^e|dj됀A 펨cjUZBR x n/v~L$)rL⋑vHܩTIZY1⵸X^pR,g_D@УٸQSV\EU(Ԏ]yB4lV>>)2`,CWRVe"z+h"5$AHYd1E(dLkϺ)]AEue'eyi}#-ҤV'* ^^yy4łXs hݨg+lbFip^bilTP:9a&BWv~ع@Jg]W_JsP-(UCI+tCee˃GZc 4GΌʜ*|X[sCTMԛØƂ=h !Ye,1O!BhF\Yţ}'ʟ"V3h5Frjk:O{fS<~o|cb%ErvPHkʚ&t$ %)k}:TG~})7: l~kG}!Qs%yk¨ƬtCRn6dG%)&OD Faa Bx=:ot{߼N?)|mkjص/q,z4+Sd9J_{Q;\P$itn72-JK![xȂQѰac 7(t)$G4P]l7rf!/%ZW'ivb.z} c[kj/l}T9J5;ʙT43y1 oc'yQ(  ʨ#բ"=їe^w4g00GęQ\3`J7܏^C$Jp2cam eU寕:;2<;h)Kȗ'9zXcBf]5Ά򖼦-+f5.mǗUT+׭la=p"w=9V\Z澲s_ooZއmuz=^߷-TYUcXbX6{u@mz!i.rk]ӯ}ffo% ߸CHurd{T+v֢&"*w,ڝaAr)K<8\äA(x"mJCr*Erl[;?jSjocU De wn2١LPnwU]&)TAB~,P_gMi7q)AOJBܯGAue/0N+BHXWM`MUAp2@ujC}O<;kf_>R]Kr4:շ{mH #Qo|s#ADHG>`̺`67/7lٜƦatDH htkK`FFy xCrda>c_b|Y<sfaƬǞԿXU^fjCqAڃO/=//MPUUGV pʰ,8"8nk=/0]ԤnO9PQpd ;vwxY-3 }y37noIpt֜Ygzw,<.6k2z3‚ca:d/W]u,\ D5hΘ,sh S^|ɤRʺ\җGCEE}"Pq2 '%/Ҷ~[qg鲧T )'3ns26+DK.h8r]%Y%ꅳy@GI Jsz^jvTy,*xoQӜXg5,ò+3aFb`a~a81>.sʎĘṲA9ɝ{Y~ZeK7^4^L-B{l}Kp׵Ӽ:u?w&Y_駟+lYN^VkVUjR,JiKAup<ɍʂc(*^*Қʪc*\`ʌ pXkEAOIT/11$Nl^,/{qZF$(O4l:aj*~a/s3ٙZopٮ%"I^ ݂J˘ն97ů\5iAQM)Eۡ=j9Ȕ t* 'XeO)%/#Em \|TD(Π+ \CcTI¬ XK.E [smmsی.U`[@CHR!U0=WKkHzC饹4R3r3VB43j3;zP4j0olYYh՗~yeo\'*:|k2Q*d oU C³4-ƔY2$ י+{j/_[b/ivLgiiғtstҲ$OfS+謩,nxl6dI,.fcUc|UbcM/Nl,͋.;v "@-L쪼x1v=59u Y_O^}ʹ~}@] o,LP+'uN?{1%uJ׾ %W\<$>tft*hH4d Onn]srMJtvl>VʹCG+eZY~jNF:IQO^=}C KS&X4*BzfT胩3WNz"-J~5X+c/FW |I\N%{jqX2>a]V($8ŚZ0d*-h3GG-J#Q~RWRךݵ:Sb"V9gv̒,DOYL|te rd\Ͽמ:za%Wm1sp͝k̙U8ubuՓW5&vM6)ReQ ߥKZk>y`VTe=[wZL&(,fSh$#*!͊DdN%{"03?4v,ǰmy_ oM,W]svc!3vrE^F˦zXvqٞ%!4ZOe\ۑI'X J+k3I{ %m^>g$ eb{^tmܲ_-hNaЬCkض52H:Khz]s&,Iy,9"Hb+mLA|Nbl*1jIʑ2Y*5[:מSĤ0G17`ll%~Xof;C^*J20%#GRa_B'YJꔔ椘F3INg0ʐi*Odf2KG'g-KOT4e3ӃJy'r]}UjR C ةpVY- r/:#ppw-s坲q1yxr/Cs$VZ:=1,j3aU@ު ?V]t@BC7W& _BVbg.ʧ,]zMUC&kV Ր4]̖ecU|cܕ*))?/<'??IJjIfO9f[^ɒ]P1jj13.[rS/bqԮMy|;1u> A.<lų*Ҭg-[lsuN7w\ѳ O6erI=G*V.q«긡te-{yIXTOUnKa kTNKKZRᴝ-+Xr ﹲ+[ٜ{fx',P ~#>>IgޯD}̿}8<¨;CJ(ARD)DR9=¯Ĺ.4?$ 2:6 YĹ|o¯WS+H4QD)x|;g"z,ƅ>W8~_T%/ -^PTGt+U&pxK/+ǵ=Mݏ\#)<)N`02[,С"bw|].`_U%g`*\TJ|9}zק9jsl3FmS<~qhAß]M-Z&떔YKQhx8 `iA x fF;^O8 _9E}}H돇}U1@'BKc`Su}Q4OHWivdaIZT>Z^FZ*GdhL$M0\c+:}ZT:;3Vn}#[:DWCT\nRt.*z@kJ"t5]*H_Py9@ ć`"f4M#f]lo_?3Rz{Zb]z[vQ :c)+ }szov u^]vO֗J  99RQGs04IP*<*i[*%k#)C8d399L3߼sfsKa2>\l\mE^]p$ن|Ud&'+OYLN=wo\=+=uǵ[`5+_[WlIe3gە+~X[7{u¼fNwڢ+OmQe,=Ydٵz3 xHfX /gy#6]O椛 }]JڥVfX2ʊt<#V)O+L^ qEʃ+NR-Fear-Jќ{O1frqq2..tOu\j^TrK83Ϣ{9慍F0[6MqtV(!S( GV,l1]E1 軄S"k NQyɎb!0eS_'!=}-II_sy߆?׼:;~euj\{ڒן&U'Ss3Ǐ:GKWg3]Ԉ)˃j%@ڥ~_.Z틺 ŵĽjd7:_Xc&q&H{UI RnO؅p!|{ g3bp~J…lJ{C3ܓgtp!\…p!\…p!\…p!\…p!\ I\A&tRS1Me`"aJ405h ?~`{S`Gp_ `_$}ہwy\8~IjAo SŸ;Ÿ;  {B d2B灶[^L+ ?Ǵ-CODC] {D:*Pq=-j(H-`Gp;ҳǀ{(^nJGxo!A謧QÔOw]z\Ȭa:L$L&0cZm`~> 8$j"H&Īyf5ł9nC<vvU)C {'Cɐ`"a xKFmd+`G5`'aa7aa/=>hS#׋-o2 3:;  {m5mBNP>L$LA`vvn';Ip}{(R΃hE*+? s< As?lМ0,Y\Ԅ&Ҡ'=-N.4 CvS>0 y|? <fҠc>pFܦAC4h*dx* ҇چ qՓ_x9 wPNy:{2  { PE`?]$tЅΑǬ$w{]49J;?rsw݄7sNl'h'h'h'E"}v>!C`t؍Vp" ٍ>P 9?Lo&7=di4Kt/&λn⼛8&f)>ʳ<(>ʳ GC `;޷];s?䩻 o&_z!S!Os $pxGꣃA q _Cfvv}]n› )#g· ov!|IEu;wLM=w!ȼe̓v0v2$"CQ0=SK~ji?ZO-SK~ji?:@xp0 ?L ? L m12h`?M78E2Ge(q3*q5^%A|ײ̝J\ǒO(q=Ix򕸑%%D%$x<ve^Y'&9zeF0@z;c|)HeJHM>ŷ|ͤZ)3<~ҢSNi&R佲:a\^68V>x@ԒKt"n"Μ4,>,Ǟbŝ1mv;22溨T2Җl=H T"b+ޘyr=77s0> F:H^Q^>ž]| Alw>o}c_nl K]ty79u.^ z{oyKu~~rֻv=>z{Wo؄Dghv{+Pj$\Mvd 8"bZ>UC9ngP uhrP݀us0^7weAgP2>PuVo-y "ٗ.r})lZVqH}u25-M جtͳ{7q3Zh$OAM+jfi *0Nns|@k)XOk]@C:,Gyac݅+B#jDig:ӊHnĐ΀nwlz|JSih`ljTڀiryZ5|/w58a@K[doAvC☁iafbsȄ϶㣒ڌFy?j/o~WM8f3ϯ: ?aY;v@x^a}[!;,XgGT^1[x[,S|=qĵAlDG4H$ߐߥVKiK C9c8|T`98X6k~ n߁5p88:8H LUm`?88 cp:88 hLJpP7pp8x< RPRKd2yP4Wp`c2 ,W/8wqp:8xim$.T%Jpm ߂W)plhe=b/Nbb5; .dŵOCufpp ρ' D&b,͐&I*ɏm}Vpp?88xn(q%߃o+8p Ԁ vp~ W4`8.A-8pp/8x<Ng+)Y`98h-`788~ wrA:8(B\p4  ~ /U'%pPZnpp</Sl(ݢ,=,pm`<O!IKi_*`G9½m#ڄS=?epwpt_'TbUBڠrIm ƀH\}fXPRTa58#mpO!X'lK˶_w lleIYW!; aOz'*MW5Vx[5O8Z.RSa*~= e&tiRf:MY!+j}TO*Jrݺ &X:O68l0z kOֶyiӨnkʊ<\O - jWUA7jW[^## 9kk 9oU(1kּUhL=CRڶgiwۨj \6P@m HT}D'8eP n7xrri>̚$ JZyo >}wճ&VV1vV4c"bDQPtSq@QkDJ3vcQ%ʧj|jF)<|NHȡ[ܺf`}[lݿ᭳r $ A"]Be=sZ^dhI6nkW}ځ3 :'(ܹi upw.u!2 [I zNvځ57O赂^/ +~r( _P v| B +bU{ЇbՏbzUu:[x2`EpKS =x]tFuFK/HP3T{DڗEI i lmeF4HJh#w'4:Rc4vQG u0TUG%\࣪νv2'KHc)4 ը l"&/! $F 4R74ͱ5HG%QhD!Q!A:5d9X<}kg`lc%1Htfo3,i NJw 3OG?\m4Ne4NJ9ZLp*Nr>eW Ga+ai?Ӧ"zSg>NM1D\wt[Tcv_wJ8r)T)ufbLF/۬S9U]kWar&NgVOn2m8U[TEs 9;Ӥ,uV]|t =-~ РG8f)Ñ02"gp&*xp(SW6dECs'N;95lt)A8fy\v3Q)p8fj$M_ꑈk_]px:SY#Q8b*WJ,P5(IwHsM6Vw1dz["抽[4`P-%E5}4Rei rhw_A)qFe&ou:Ya*}7Lo3[9K0 GLcs&zlaeJs7{f9On̺5k\jmiCL{2mC۟6n N3Ιf'ujụ;sS(JռpNo*ԩnڶ֬&s&[kVӉ96I`~nޑCAmo O ۵+ڮjn v7QDmםĒ%:AxS"vJ.e톭0 nlS-.SY#V#v% 3lqm9ceHY9)p|2>oΟf0`f};{tvpzjeJF$ h{Oq?ƾ8ۿ$.bmdseiof]ȟ`-c$:FPFvN"?4mBڪ5֬j͸д l)yj\R 9 #W1zeə>1gilwJ6vW'gÕ5w,2vw(wKH!ỶۼWguI@傊XSr]nX`~Vrҿݿr[D\`GaV~ՙ-'L=gjj;Ý0owg ܉c.sP9rU'ee* oG2]gV.^B4pf7ɉC&Gy];,+(YQw^9!I$tc4v#!U QB'^@8?QhɈI؜PKF4D5Az {ڳ'xDBRژ505(3>c1YT-:.gһRd1j*  {Ytr9Q>G=47m v:Ng{;h.юGζ8wtfbOg m8dT,-5]s_nq<.('ȹ]L#Rh%"U'ѫtPPI>\_ZKhi$WO_/!k=ex)tiKW H.-}*ydB 5O.ڞ%*K23`#KMJlG53SI).ʟѐv`-E F{|#6∳T F3>M.gCIHeW'??)< Ԏ?.9q5|53O4O^w|e@%JVKMxNԔ#īdBkQa*¾OO7"Ed/G[k`mLGb…CC_9gKoR32kEob]>`f6e}ťyg@¸}5iH2"I?>m);FkԭGݜ~O}]"lhD1Ⱦ6|&~63OϕL yOZ+s4`?՟;~8֟3M^?ϳt^Ε3V.,+J$Mnx̠;.\V"[Ub+Im,cqg+Fn5{PrӚT=.x#4YF]"Qtm7>|P}yf <{~QvaNM|5ŦO/M96}v 6736}iI߈M/+M_'6)NkWiO\۹"ш:+uV06nUK ?[=P942i}ҖN㰁Pu-Ñ@͝zyƫ6pR}϶M[¡S7]'W%%LޓxnvSr^S)R֥RjL{JJ{vzC5;{ :޺tG3=jnY$[T3}$á{.ŠdғS{LLT(JצץN?}l[HѵFyǡw+wl *uᐭBzE(4d%xF&]r2?;WUkYoz5M7mcx|ßD1ǔY;v=-[NL1v}GO41obč9rkG9xfPKi0ݽOVEϳ4\ydS!C<<iۢԶjKko=.jE6"ު{o||f;߱_N <{|Uǿ|bۓ?%ڶan*{=fl8-M gS]2S|+ da:AVgmҹQd9WEkszz^1Btk.ygr۸֑³mZR*Nn8ùEK|p< N2MYO7x-6H,N׸=p/K9GVPl\ 0\7m/q"j81R7]@&]^Փ@HUZGGL=s:52nU<}CӔxF]G R'"~bWWn 0>>ȅ)0N s<f0flC< hBXqVz?\+ ~\'ɺb&Fd]\<g•-Y6g@tYM~b$52`ٲ>D p$F6wOq-)03L KaGv.C|J={3 >a?|)?12`^á -0W⧉_g|%]37W\)SzCzs' I :C8KAԛ*ϖլռK+KX 7}"9^K8!8.\F4C C6Ƈ8 ~O8%:CXg a!3ur,]/_ F 0np+dlYm[="hς`5WۙWp`ṋIJj,;e>&slg̱=G3X~a!,?I˃e'l`>&" a1EC{1S 95ro6q~|́9g1,|SxUsE72fj/C?ɛMlf|)ꭢꝢ'{)P&T kBP&( vkB^M<'Sd %;5 Ō`Fz8Z2zlP{`xFֺFhQ/ljLtʥ;fg 0^kp8)@GP ^M_ݦک#NRUoU])Ѫw> 4lgYx`/+T«GU| vjMz| {3+O`1c޺j&QB\;.zΖGl)΁s!΃| ϡ\.KȀ0.K2Ȕ'G1wp B'Y,b zx<{'o"VWA]x:o9NG1vn;>9/  4Bm?G;8Vv$IOό8OogYx`/ h O8i^B+kZ'XZE٫`׆p-e'n"m8m1p'a,^Hy "-~@>LEl`<͹0XH݋COVK17B1VðV1jX2(qc-'IXO{ yqbMIhS4/eUQ3a̅"]x'wv'לˠ%NN,¹M3PkPjx6S/>ױum 뇝_\QKAkż8g]̳k8Ͳ຅p+OķCa]̿wyz'if7za+˽j|/&bKV-z`-?^v ,v]ŮbW`+fWЛ]Aobg`M7&; _n[-X,v  nMgY oRf聏#oCށwep>vn; {3 s}|AOz:@%r=!h+1= 0^-4c?Bf8 1H;p Vx٧mBNhzPTA%zPTA%zPTA%zP3yQOyϳyIb8r|{$82UovT;*ŎbGeQY,vT;*,vU*]ŮbWel`֏g_z/E{h=&c=^NjxОhXhlg63 F{*7&Zc3:c1ehx}حYfx Fgf3Y,vq<|=zj44bwgYԛ}I\Lae;;蒉.y%/EZ7T&h&5?ELtD,tI|y2-tDLtDLtdhk5Z-tD*F_,M}g `>,]|Q6>r,c< +a|4].Y蒅.Y蒅.Y蒅.Y]K^4 M&mT7T&y$ M#=2#=2#=2# -2"-2"-2"-" -" -2"-2"˹^G=2#=2#=2#=*CУ2 =DLD,B,ȋYhRGУ2D*" #萉qZd45xO ާS`Q5XT U԰kXY5J Rì0+5JY 2+5B PhУzTCjh]P$q&K:P~j{{&!|R>ZM"2;mNm|kM&8-HǓA[JI{T==m<݉+#`m{?a'5d G2nFN c:Uƹsx^HMmuxl`qwpn15pF#$Ag], 9#U4Γ/=d5RϨT0*JRT0*JRT0*9o]+Xf ǭ;'9>ERV8lte5‘(?`T8GWq Zݲ֞#?O<_Vä$.#ߣ(Ӝo$> ] :nr|I-7@e`Qx$7Q$-xjǷ6Gқk(sW]{|22EDXPisV- PV "ABJˏ8?,575nܻcwslTk¢idLeڱ4 Pb}tʺ}9Lz?3))^gmW훏泧M34vs϶q{bkm׹<}y1rZo3.O8~I%x0 <D.{t\3ak<} ps/| w;{ǿxg}0k};.qY@;qSxɚ&Ӱ-9STJJsҰ4l* JæҰ4l* JæҰ4l*uJ]qu%:pq#LShJBiS(m M9Sh+} `6 & 1:0wpΞ\|sa.>Ň0\|sa.i.ę;q 'p4'Üxs.N<̉9'iN<̉3x90p pgqu\wq9;Wu\5pIjyzZpuqWs{:G4ZZ_\j[ZWj9j}\p.&ZZ_\je8~Y.9.ew.]ܥ sDVĢS(;(;:.qC}«{km>{z#p}Kl}[_c{lǎ4w;lOrlr?dS.mS*=t7lα]cA|Yuolw-z!.~\,r\-*~94Ư툜BՎ]}'>muv܍νq}los9vwǾ&m?sw9y￀/ke۔X{U틜JEQ}nTuP)(*GQ+(jP ju ZG*jHQ+(rDQ?\UQKE-U(*WUҗ)VPT#ErEGQ+(rE5HQ+(rDQ)VPT#EYE=:R=!cʦ+S SYχ}]}@LWfyZMˌi6-eiYdڔ̘ih2%d)t̘w}]XbT̘ijh2p4L0M Ma46 S0m fL)X4M)63`L)m ߨ62_:_T^wWuꕧݨi62]2ڭ+My*9j9wY9cu4feLL>S.n0kJ^+M6S+SZ}]թUVUi1ґoV9q^s]Y;8;6 j j(h RZ ꓟ:6JjJj(i%OSEQTE5QaHv&;en,;SX+6 ܔz(m3SZ+!7SioB|㾇(Knj(4[MyGPޢg>/}/:K/Qa8(7uMmE]DES4(nڊS>Y99Iy~oQ5S1jQKREP1."_(09,dQ'{tqL:׹\ntSEѝtgAwdt%#lpVۍλ9='Y|/9_M9+}a12X]*|`}vF7[]*ަYYcw3:YtUNs1fKGt4;c}Ycm}wPѥ6;c}YuXݡkvѹ6l}oN]V]\Z{N;tUW3=Ý:m}wr.j}gtϘ]zݡo}:u[[ hXߙˊHSDET`}2:l7SIJzJZϘ=F1i鵾j=FAc4V}6jV j}1J{ZLYIY3=FeTi}wPZ+ZeTKuTJu o]Ƭ1 LS`Em?pM.F+~%W£rnedyJex9{QƵI8N;);)q)q7Qb%AJAJqJMFk)JĎG)q(q%Քx%R8%Sb%n6J\KP %S8%vQ&Jlĵx %Rb%NR8%W(q-%NV7QZJlĵ%R8%W)RJJ^J%RhI}(q5%>SxI}(q-%Q*|w%tP@k(e멣9Mοq 62 M(vw((o-V}"k&)oƫO)F>Kq 7^G)i7-K]+iSf/us4M(k(SV(jz)*GQ(*GIGI[M9JDI4GIsGIMDI9 > jQ QVSmr6US PL/)fb(b(:brE19J*eRzJQ&JJ)s2G)oӔMuB ފB.3$Η0ݴZfRz)R&)eR(Rz)%M)(JQ QVSV 9 A ISȦ79\f2z#fMdy495;,9Ȳ;"߈IpƲʑG#랍,Ep(ވcvx;E7ȒaCԳKHyJQ8}?GlݓaC<8~0<>8oG#<7fg+r%zR7s¡:ׇAc0'7->wV׽O}T,=V։^܄[pwAݸ'C؎'s>w /C؎Qv`'vQC <=x Oųxχ{p*V`%ދXp:piCvԼ<iy<)Y<s%ԹmǕνg:rwo;|V3ᅵFu8R?u?E.Lx2LvB.%.C.G;UbWtZ|zt܈p3q 6ح؈M ~=v'3$Y|w/_F = {ч?sdel rf',67mC^Wfl/7^یo/1oc>WP??`}܇oCL`2lݏ~OSLa+3<6aط7Ka0y<؉"~]xPxObx{,ƏoqwIXhx' /F38k`?::|X|\B|z_O\&8H"p$'H$ZY7z~;o(ub]:,W'ƭ5Xkkkkkzkzkq|џb ^,Pv0e/} x_/} x_/} x_?-4B-4B-4B-4B-4B 衉衉OOOONw|'; Nw|'; Nw|';AjbȲx5A8u!z,bWU8kZ$p^zG8Kpބ7CKq [6v4WWWW8]ek!,H#i $1+mJr[Qn+mEYhJϚҳ)=+e,VŊXQ+bEY(e,VŊXQ+bEY(e,VŊXQ+bEY(e,VŊXQ+bE8g% 0č+T1&rҩY;x6՞2١*r(ZSOUkj~W5q^ȫyU#f%Sx=*RY<+zSچ ׾ھf϶]krۅUKVs[T[Avg~gI~ܟ6 GEU@SWCv^ _mpc8SI7Jzon6opn5Wމ4{=5n K;W?vp -%T6f>`3l|6f>`3l|6f>`3l|6ˀd 2p A7Ȁd!pHd!pHd!pHd!pHd!pHd!pHj\?z ƒ[02kx<5d$/N$/N$/N$/N$/N$/N$/N$/Nf@9!l(`x;E (vc<-sNI8I'i$ 4Ĭ,EbG Z`!8q^WPkax7H,Qxތ,1(շھY>'_m;s`0́s`0́)yuOK85 'U'+?un`\b-Xy^%`u97'VnavXi+J G­VeVeVĽpΊي9zJX^Y GMTBVʹ<~ڑ;[Sq?oqϷ/Y7!^5īxP쌰?x$='9IIzNs$='9IIzNs$='9IIzNs$='9IIzNsRg(xiIoz_xƛj4~[5pp&m&ܸ w5ͲxtqR'&W9iz|4QIq\Ox%h t@uBNH S'Fo810]Kt Lt Lt1QH.p%8lBMS6AO zJp] JU6 8laZ 8la:Y'8guNp :Y'8guNp I4!&$ф$DhBMH I4!&$ф$DhBMH I4!&$ф$DhBMH I4!&$ф$DhBMH I4!&$ф$DhBMXO I4!&$фDWJH I4!&$D(@ 8PphBMDno=W4*Ys~152NJIQR dr~)g9)ߎ)!%;d쐒R\'%;d@)@)!%;d쐒RCJvHq쐒RCS^ߌIEgRqTsSM?SM?SM?SMy2OSiҤ3 / gTͪhVE*UѬfU4YͪhVE*UѬfU4YͪhVE*UѬfU4Y6cb#66܎;p']f| |&QQQQQQQQQQQ GTw![]gEE-9t*8_w)z=T]a$dVJ2[If+l%$dVJ2[If+l%$dVJ2[If+l%$dVJ2[If+N߃S\)^*_p:x%hy[[jx⯳lt4Vv>UM̅&\xGp>hA+.q>I\I\a4Yx鷁Q8WQu;yWyw?g̻y3~ϼ QӢG^ؗS(dXVD߻le5O{\8cu /?Ϻ ڪ[*5[{rdY;qj$Q{nuκY9:g]usuκY99p o@i +PTo(@9)PNr S(@9)PNr S(@9)PNr S(@9)PNr SХRv\mロzvjx;htXBeDiVZjq-];յ]vhQhQhQhQhQhQhQhQhQhQhQhQhQhQhQhz]v=ܮpnԦ?^ $P@urSԸʮ:^GrSuʽNFs#؁(W؅G x %<'$)au֟5Xpv\8x`h* D6Cw}X{\+ m'iW3j? wĜ;/pOp]"F @t$NG7 <; ͅFuݑ+Eb/.^F e{io*NWj\-/reVujzpND{*uE1K?ޟQjϩ\_JoTZUZUH8{H tZG.J+e=LȬ̺W|58Gd{r}?tG᤻t7nJn&MIwtgS eW\r%W\r%O~GN\Q*wG.w~M%Xv<>ͦ+ʿsrOw/u4 |ӟ5dl~Ol},^BA$Kz z+Jʚ~"cDg[ܬV=*G~ ?vl >[r}H8U_W'n&GhI-=vhgvfA]أ {tab-bGK @K pH)V6OWG߲Ed;B5W] VA =2]B}o4cy-{NRv7|WAl4k65͚fFZ(_0M ~97+RVĀ1g+j>qB8Z[뚏 i.+d@J|:z=yFϧ|ZϧyZ3>߭w>^_.twWەbA *ޣYy_ ȽWG|=7[~՟GYw\v+03}Oz !ۏ:o$zd3›lWeuac1pXfX5ݏsthN+{7bi:kB;B_Vh5$,1VjƄlگv㊎ε^m&쎥n?yC?k87pWAZ#H΍I[e y8%Y8.y73Z]Oݣ 0C>̐3gm옟6V1f3 c`1}#mlLVMi#в]ѰhX I/}zqzrZo -+XZk,5^(^(Vjhz|l)N+Ŗx.+\Vv[ǀ%N9^^^S3qj&NR^H]҇i}C_З:._>:곎>4,^n"\xj:Q=/U5x C\v=|Tl+WH@ l { !`(Y'H7m{^Gmp[=F8:otv%0p;Q hp, 4SA>8LK`6N (Z& Dv_ߣ[h8m mmme| VfC^6kx?ee]S-j :GTmpC~~[Zx۪hm ,ݎqt;n8^D^D^D^D^D\W-pE \bZfZYmߣ{w]oՌk]{Zyylw4 o&e`~!|G@uVbY#W҃^ڻm6M)#JhfX͡*6880I)uY $a\uBi^S%.> }Y`LfokcKK_X\U.ƫI\ލp\Zgfd6"[n2^Nk_=K}t+5u+\HKՒ.ᲈ@X|d,V<+oޥ@?%c剑=1f>009v7 @+h寣u'S:˾/wܔ;- i8叛`RiuZn[b6v~[M՜]՜]mn%s >s-}̅mV/üV՝HlH؏IU,FnI5 .{ErUp5V\`scX))g_Rx^*JR0C?d!KRj.-SfߌSG3̃Z\K>kc-vYKki^=!u~gR,DB,٫Y IY Y }F*DB #I*Ѝiާyh4 B ~'XL[g{Zs|oUo ωCB7.!opt.zZEhFωW}5aWz ^d-H[PrZ3, -_+!+ WCSo(O yf"lR,'lj tNQuyZWb~DgXLy"|.e"l$1" ﯮ3_S%2k[M܉7fKbM"&72v( ʰ2bn`DI v>뷖~?;ᣑ@+ 1|xIPBͲ|)bNP9 g_0D,vr<؟6O8'!\<#O %dafyuF"Jܻ^Y*L~HT3)oqxSi,\(S/FYxT%!rl0}<LF+ؖ\QaLaBK~jڡ/QDu wV#gA+ >* ^Tdٛ< 1yB nj^1ϽTx/^mx*-ĊvTҳ? )!#/ϙ8G) N&~[Wx"N'I#-T Rtw7E]͢DJ!r/ QDgo!X6ehcXeHPaqo_0kC к!AT"Ae6|jeȽ+ɽ2Yb1UfVY%b0#y|1#y0/5eR ŊTǓsJ-M+Ѷb) r :8HO~LDp'S$0L)f20+Ujp nsODD>uH׎tY,E5R#elhjlZ.жY  =p9V9 S OywDLˑCaAP`0.eRQ2J]F(i { ƐL(Ɛ6eHY%HRFeVFne m; HǛ%A`p8p88/Gx'yydp Np8,m>;Ml7ϛ$`_0fџy뇍ѬFTXbq^Rl%vs'GI^a6[)SvW*q+m_p`y!aX &l;W=cؼ6/͋abؼX@xabV*xEgl٦jN%SIT&X#Dq!0W&hf*0l Cc8a9te맹1l_@-sz>8)  =T3"p% \ J8S╂rùE0]ޝsU_S/FSpMd.Y?mN~b2;JNuXaes&9}r D2HTI@yNC[%br-XM jS[uD]2Ղ&>H=F1R#Ղ52__vzysrZyߊ>EqLO&t *CEQ(Б""k%OShd<ǦΗ9_rqrL){yLF`Y#0kf5X5F`U#jV́M#i64#zPfji4F` AsDV'%B PB-hN\#V褶 ]toC-B+*}ϴsTon71ϴHwMZ}7յg׃}` еĺ*ګ02".&(QNF9r TV@͈O#FFF<xO#F>| 0)`S7vpogl3ݓm| hjڡ:XE[ _$-1^Lf‹6iHIÖcr [a15ư3=lx[ޓwbd (MưowtbR[a10ưvca ;a1l0 |&Dg.41QWQ{]i:E}o4 F()h4R%ݼQ)R^NO*1Fi(Mr8I$x2jxr•Q2 WFӸ2>Q'+^ht|MBSy3fg}x=h(mMΨZB8-,~u NLCSٲq|;+{fhq8n?<'Jŷ̜Nky*;qBJyR?x1N!zuYB=ƨg*8SAVPw%9[DVTSevZ5PΌ12_|'<7ɇzV9F1 :(e âof~77Œdtjh͸mƛY2J]79=QhX mA"CQJup%\GDаt(*8}T0`woC0Mbߌ7=VQU#};5zL{EЎԕ1 @ۑhT?hsA&:!Uӌ $4K/:(/E/P{Tb__hWID;uNݷݼ9$4.R93}WKc;4^^QJ`JRN?INC(U)Q4BV$ϔdso|0fdTu]azBUȭe񽝜og_c~Ϳci\~I,̨L!1_Cb^t=3i! I5|/Y5]3MSbhum[դ>+'e 0"[A$Bbq,Gl1:1N k".&%d9@|(}ZT&O'4*ϔ{s9Cy!oq7a9^Fyu&kMzrR*(/Pa~2RS~OAjW`uRW#VG#5jʕתoF5^#oRǪ fu:^ޢNP'T'Ij:CޮTu:_.PeB]!TWEw*uZ]-kՏC&guE>~d|JݫOߨejZ$??ԟcZ=+RTVk9|CU%U+ Y^Sw zKUU֫5^6ZjTQU\WMI~ZTDmV[䧪CyR-c9rʖk[n[k5LY*`f W5Vu Y3= kb^UC-jjl ;pL<0+p'070W>>F-'ǫSdttTYy BP=iOKj}}zƾ¾Z=k_k_^oW[իv]޴˾[ecZ}dk/Qe~5`d-֡vub=GZ>huF[1η qEw㬘39s3ٚLu.f;;[78:'?:sq**oΓVYfpuj筕΋NSZ8;kZZ49VsiwڭOϊe0dmakso0"?epP#xXpx +xT<#W`a '8=xY 7xy5cqpN)Sӂ _8;""pNsyw ~(6 9ON>cy=}iI{PIЌá}\#GCC'-' UٓCա3B/޶ Zo_j5WZCg>}nuWUuw,7`vCCw;¾==ʾ玳wc=Ɲh/pOr{I܍gY9oE"w{FRw;~ʽս~-uo_Ϻw_pBw]d.v️ڵcv~}}ήw/+u;z==pnxi3ᩎ8vNVt';뽬YYkYZm^6JL7md{=46]p_P[LK)3#g[Ms!ݳx&]-edi~7tӊK}hakUԻ+])t1؀q+׶d ]Z^CR'MےW 6jh\Gx]ԿVI ejLjO$y{Xn1h'oWpxs4'ysz#ݦۻtg@obY f}:ԊCqއ19j&} #/4r,iKʬ~}?UiX7_S")ՐbIOxMZklZs۹Ť*XCWQ Stt`8)4Q(/&yv8ާۼ6}bZxkwz 6x/~a)E$ Lˬlfw,q iݎRo&z Ōع,L%\I6z='޽Foe{eH̡IyX[ qk^7s)u7[L7M{4Aor/9/M.FyE>i<'w(o2x+au_ҶJ;^i=Dkj~w>>Ьۿ(Fv0~2ČBrNn;Ipٝi,e'?]o_{z_ w3k3ljgvQ7*Ny'EeH#s#ݫj/t$kNI;Eϒ3X?fv/&wz{{y5f ڝԜvM GFv3ݟR~7^{f6g7N7uYKhgC>y{xǕSNEj^c\b)τ_ڽC9It^Y#GH2;x?^nH_=' 3]Sed3.ӬZ3/H 33ퟩj#z~O9hh?j-=VoU=gvhhS/2m Swѣ'/͐BsVݘ*_߇mk m{ט]]Jf3ި/ n0ea[hv啸sK3o3Յ.Z< ;g&Ӗ]osRZ}5k]0jc ,˓~6X&Vt4D~YI 73oA >{hF5 ~Ekǹד1EϣZD@~tq$7@XxܼݼF<"^ E$X#m%)+r<]2s6Z78N5׼E-lkAp@p̼?nk~(`g-ku(x&xM!x]:CۭFBk~?~?G>G;_X;2k{+s-ps''/ݧܧ-mWrw!~B@!>6 >>?|rxR`@xr3gJ~1fj ޢkP̪fb˚mf^m :=vO}^ݛ c`>%־x _$` Gq82!Dh!GJXL$q*Lf-N!m{`6>"֠..!2$)fZ$N#ÏڃkOXb7s-[YGd=Lu(e.ng=Bgy~:R:JBaѰ.V2XGYNj_~Gz5xQzW,$ߋE#u3(ɁqB2b]Hxx I!^FWXGa_om8iXÚ#Ň5pQC4ωY|l['WJ bt#hЩ>Ȑ +]Ȱ >2 s~/9/rH|V[7r$`qG#}bO'&8y<@LC1LC@y8!GH9I%WGc"d9N!tds=K$ĿX^LKd .#,9Cy(\y3Eµ~q|@*B{1B.r|zY/&8Q~$ײ$Anf,NFql-ooS6lx,7 1IvqR~)N[¿_!;'NP$e)K䩀 } xEշfB$%H!lM@DEDDDDdvUCFDD7DǟqWUETT ~~R[}Y 6dxj j2 dx*ޅ>}A|_w|Ei4n&m&5 iT߬e֧Ff)|jn67 ,2;P+ 9fWef9703jc˨9μͫ O2TbN1P;s9ՕP,sގ|Q]WeV7Jʭrݭd[=h/H]+p cKzM&!՟hOI%SRCx FRGk5*M̺Ⱥk 䋭5..AiZ)ۺš++q'(`M&k3ٚXSPTk*N~nf&k5Puu Jպ~unݎ;kEΟ?;;PŸ?y]v[w[w#{{xRpm NĊڸGYڅBo4[QC(ak4E;/)]IE-Y#gw+/Q9 uQQ^K\^DU?]ބf?96j+owM,y7GKdPt$| 3*(!&cЏ8tB\$Q DʿȿCX>{xD>t\FBBq!'HWd':kHk^ :@T[#E"5+!*_Dz2h.ߦz.rv${}Rr܉2w+X~ZO _/sH2aJZ~;V~65jayAg#FέVjnSQ#u207һ=йWMm4ySFQ#oJnn h dlw ."#~XX3QjR2 进 rrqFHC0@|3r# 7H7c`bƥeTP͸lqq%3Lij_eL<!Co1Ø\Mh?Qd00p97q :1sa3.d0HfÙ9\a31s83s|f0sa31sa3@EH"E@.CNDZ"'!H[TKtChX\tKL\ttNq'+"L~b/Qx S)}F{fM`G5g4/ ^Tt`G g##5S*SjKm@nk)  rgrYFf7`SzSTQf7C)fCps8%#ŐǚB +k}}]y9U`b`b|bc5LYYV P`)̾VOȚbƕ9e..kfƕlyT ̣ʙGGU1fM)(SrfJ)̑j2d.T,(YPmfÂR`SO(-fpV3|ʙ0Ia¼;[j2ożyK-d23' KKaNҖ9I5ZXP;f&VUIESl'Ғ2K)cBR\.sVUڂP\%gk@uUZ2W)d\5s*-U`,u3ciŌ-3VX:3c)d+\yK,FW3{i쥫$;AXY'"BLtpmw9d/1)e<'yN>9r YvZ2)۹\bris 5)6̧3[Άn]"oN60̈D/̼yQE2/*c^TȼyQE]e-jF%=a 1#*KRɣQ r8qr %5r R͂z2 s Ԑl)Phn[nېV1W`G)E'"^|;J;څH i/ʩH!k8>[ |) QfMYSTy:5ecMd;)N'qdfM5NbJ;NAfJ'13%L)TRnd7YSkʳ@nj7rK%03(N՘;`ܩ's̝a)eUA`՛T1uRR}}%Dʶ'׀eM")9R^CGHoPr.v.&Lp& ]>PP3fف@0<`13lf9*,dX ]?䁁TYP{*?֞zfgR~B0+5N|ǣ+߳TNr~BrUemxYvJnU<'ǡT^oyە#*GЀ}r>~OMI~)ZϭW~Jڟh>O*,{?|myݹfïT7+#!~T?ߠcuzM=Nz3gbc+U3؛~mÿ>7ЗOVqBzgwVysn)'@?>1*TF?:oOu:yE׺`ۢg/Na*RO͋8;BygGz~qɠcz՛XjE+_-yY$=挑^O9?FeON{冣giss5 #w^~|ӚWfV3GzyhoSﯙ#~לY,˿__O)4Ĝc ?f~ῳc~rx_9its~翫G'<~}q{}ܖQOYF5XiVpVխȿ.!c /4:SOWO^, ?6m k t&׏U;AeD\M?켣}<_+VgPwC*^2d|,j_tHrQNKIGbH)TM é%R qGڔNzGmd+Q=1]Ll6ݵBb5{(OMMNT,X,AGxTw4F:q)C re ˲qJUuze&XqY٘wV6<;+qP QÍjejfNx?a\㙄 G/_~)8NlN{gUl)w:;zg۠p㉞Z=ԶSqOm==uΎccp1z\gps97Џܛ[poN\{s ͵Лb,鈿bzv++gE}d()[q=>}Pl@oʽFzy:~xEQ!c [1*]葾.!xdsa}!I#=JD|J g3A<9y$a| KqT(QTGQFQU&*%atѻ#qcHkbHK⑖wG 1RyexoO ]Qx5Q׌Gţ¨{ {<=c_B3ơqXq5?Nm+/P;@i|mr9tpS$<M`kּ\|msWlӓ٦(c}ς-{φeOf˞–:[Tylٓ}8'}j'`ߓak#ՑTOCḵr{'`-W+V٫B`o&{aߴ<;j{Rs(8Pp̡N7gS6{Ŀ?y![4`oQޢ䄷Ey {Ng (8QHӰ7`Є#!4rLr6;=Dc i oZWPp ds9:GB&9 CH'ȇx:ђYh !D$DUJ\ UfWY.ue&Xf'rU.4dhQY@Vuf*Tj|!7$#Rj+tc5  +qf@ਾ/tHfQS P xD5Hy0|>#W HfQS]@ў)3Rg8D&)j rth GV(DZބHu$dGBfq$d GB$'SFbIb %ahn  u'MaLwWp5aow޸АXwWh[vgzIY82mDH<*9r8Z?"#:6:;:/>"lt{XXXAؠذȞ\mf@t|tF4]4Fވ~Z4<-ýD3ssanA6 cbF&D{Vy;t{ %V{-m 3G"H釹xⱡ8FfywDn ԉ@tF˹xnd}}<>57 7ބ}}* u{'gŗCk]t{|=(;+pB;琷.㽼Vݭn LoJkRo--wwAs;Ns7GBE,M<y##'jcQctjtRj~b7[ vnWRvZ43vM`tit Șě1pdAd]~m4mtGhXB,=`Nlnl~,kږD[GCpݠK/K{Pich2 / / D ?k?׆^?5<:-}Mt/$yc"Hgboq8++$7^0]['? F##"c`xx<OG#=ĽUhё=+ވ//Wǡ ķEWD<4{fNdOd})[GKӣ-⫢*>{Y>.ڻ Dh Z}0f{oX6cn FLS\ Ћ ^оPf({м=ВRnz?t E0o7ћn CS t pw 7W.x>7Tyqio?wC۽\ ݁N,SO7ߝ wm< v0"A[k ^F[IQ2i VGMUk+8y:G}#>ƑEQg3Q&FSyfDyfqYj3Qq1QԝW]a3QOc1zSۘm̡ H\Q*JED8d<<  F|~;{]@q pZX|)QDk_m_&=֗ˡ灠ri/׌nE, s m4Ǜi9ŜJ4esym\x&+7וx GoHK:Ͻz_fL)[ʖgKyR{dL{eNʞ>}e_B"o/b-tX1rc43qzHϾ1r~hW"0yhӌv3m6c+R**¾֞lc_g_g3YFm p%ƅ{ոfo3ٯo+1&?fLsҜ4zg3̘qsD9 wU7M3B`FXeL#mD55b͌ji\`:ؠFF5Z66jO</j񡚧6>R{ϔAu81RoRԨTcj0BsVW_U&j:((6Y JE@Yw@y{``Q!FFс eC Ҙ>YD6g N "s+sT7^<usrwn5s+/vn"}{P`{z(9!f.K FQӘ&7yEfWLOy^ z3/CB7V]ĵ[pO> $g>[+ֆZwr9GEp>tpQ0{\\\s ~v8kDwC/Q6kJWV##Kc|RPk(qUp&$w{-xvsq-6. }]bg.gm0 xC$/JIbXMW?C׈:bJSfDy 4dDuu5=hMCuW^ iu'zW=ZamG[+g}FFoo$_?>6ˏGOvfo(\s3әI9}}XY2 ss,DĈ f#01KÐK:՝`Ĉs#7FD3&2#FnFˍY}Oggr98{IEУkI*i%i&]ON֒==INӏ=M셈"kՈ @4\wercnyHt,ʏm3(Jb. H)@4mɀٕ3Jfjrᒏ1SdAɓXL*oW!FiV$+,%9 %Ķ\0˩XQPgEfAP`GEo(eSi< @u9ϟ/Ú0حx2K 螖L1+f'*c"; CMeћ RvjB \T$bK^%=?]bu( ųX/n |1)aWwB,!*t([ISWO bԟQ֠5kɨPMAЦjSAm6 }PMGEڽڽC m*fj3S,m*fkч!~~6GJ\'PIi߇ʵ׾}LPk?ԖhK3zޏA}=èZG'1}z7鿠տ '_Du/Gѧco_I~W_Eɯ%ɯ':dz{{:u_ـS'eB:[4gf0V{uଐ\ n||$U/pe[R<|"JRF(3|3TjEEJ9 H#Fd;(JE'ByPCH, e {3*gb!)Tk#01? ՟*rWD|fǼo(nFW%cJaKA*;2Xs>ṙBN[ ̱歃5Bxbsh58 mBkwNs!*t7,%ЮȆ$_eD;s; D٨ǵ"ºh8ij2s9"IP=Xcw1o2}]E8 !.97!96rB+|Ea[')z,Bzpv -,JMψgf H93,1K!< GkmvVtW"e ѻKxEˡz.3 +YOy෿?G{" B Z2Hd/őqgβ #ΘcMj</:|[ υʃulˮQalV Ug[2` N{?`kФ\p@+8et Fpcq(7;7luh/ˇ"}%!j )Qu |eb}2zA4HLʐy9jγCRq( .zB͠B2|߷OJ DΔ`]JJ ??_/F\yRmaOwJ ~4E@E9&f+8_گsCE, `bq_RQVKl,cs(T ߁dd9Ix _ 6.9CkaU:JnDφvsWho8-j gk|3~#]R~K\~O+‘[#*[q Rnqp5X4X {n9B-#Ag$1G|8 Qߤsҹ;őС ^a}Ht*z)|!*\%x#h}KPo.7T2zFEϪZEPu|TC|١L/|٩U|٥K/Udi!){)*k*kO$Ouh9"o2~H&3|U4rQM2~K.y HxC!(D*Cx|^5$(((( ͓DfYL|D9IaIT`I|#N#N5*,,\D5~* gg5gsFm+ъUyUDڸ,qR;qDvS{h#x$D@HB ]2F0FėBbuuQnO+}ĘR 5Ou5O}Fۺttm60%u/F^}M7C|OwQ}Ǻ~D{Eq]Ÿo'6n*-~>1ww x7M$=zw'izM>b]OW+OWdSho )ǜ2Y9et*tg1%1%?f0ObIfҷOSd]t,']&IEH|9|lNz5UXkI-&?Yi &ے~tlOJGT/E$i|Ixn(>H: { 5%H>b cd 9`xPM~ $_2jA|01.'G0.'_6thr`3s!a 9 =@~24K|pȿK=@7UDn?~dX&7 Do4D^y~۾&_Qw=G #P%OD]UVjP=:Z 6#oR@q>K?L%q'IIҌ&mt_8ߠ゚KO'9+@# }MI']v G8.s"cZbP\QLJO6<}UӋNɇ|B8;%Tg(bk*Fs J͎F6giR,]b{ad^0˸ $L`)X Ƥ[M׿$}@} L¾YD< ~E#B#Eh ׄ{ChƩyfBlb hfXhPLhᦐ40SBvaԲ WjHvo5 + -1i7(-6w]_/R8[󗩚$}GPKeXs4}tzeH0 pu#Z@jӡuWPoZ|]#ɾZ%I|ysn/gVA1xD\V9dzj l2g-S(\.+0%<ڛcE,9'2ʓG~Qq\,8aD2ׅ;b|fDF8 V x:wxakX(dJagW"%i"zi111}{fekU~`XMylWuKӛm7ӕbCsaw툗3YS{yz<-M厽]/Yfo]uys,MF:3cQ`]79Y`ǔ_O\G*:ml'CGDoK݋pU(_ϳ\fGS v*j`x #[7}ASn+lvk^=Kj{`LmG{cS@*7Ew=qH,14]ZG+h=-=Kaq~2.3xV:okooG,E텦 [6-Zl>NXf'C<'Lk="/wĬs^ :>|[MSeN|w^:sz9Z8@ݴI1 fqz^ꄅ]v1۞- ~cn"MbӒcx.ib7H =iA^G,>U#FOMM3!]! ") M7EMq\X0!~KjGw4wjGы8 D?՞ȯjWLa)Î}Zo:v-M\wqlu#anҍBT(5 Y{V&g8p5\gju~`)r<a,1[J] Xf8TaARs7MziQQyRoϴp.~,s7STnlP9[)É6. ]G ܀h -![`8n1~Z&;dg1LH`iZ8# p4rj^UО#z{fwq8hFGc*%6Q[|$zsĩt5XY#liⶸ%L׬=9sUeta/vlݳ hQwJw -`/7eΟ|ȥxtz:wL-q_.xwtzԔ B2=m!mo4{r[UC{Tz6=_3M3,͛K4q;< 3)|a]3BA`Jnρu?wۣLMnǔ#ֽb]錭Vh>[K5cʄaasU~8cx0 p8Dg &n{iN詵eqkB/_"BD$ jioSAz"ש.꟨_Pwߢ}?S~OC8yZ( SڧPzR?B`CtQ%= 977ΒjTSh-Z5W׫ gԼjԨMϩyS/7=MGռ?C^ԬfL5crK͘N[͘ԌɫfL1 j$fL>5cS@e*KUYd)dCj6cT6~ xBOz{?&ކx"*"l|D<#ѢѦ&?*w< 7S6膌M3P9fbTۿ_Uq|:>LLs7U}VK&Qo\p&EV_qGo1N?'5?')]⬊^ֽAqE94fR̖e8{"?'gO38{"pD>' '|^]Ar8"2*MTox[e/?x&gj'*3Ǿ?Wy5|Eү o#oBFs(M2Ρ4Js(qIN=i>'Gq)ٓc8{TIqȞ5i *_AY-gQ4_d&禣>¨h8uE_pR/9@kƑ g56_/'Kf0luK=071[ c6gĸ4;'sΫιkl6}&IY?6wlwZ_sŝxs]0) %(y}k}}aܾk-l;ir l,}܋(.؊Öynj˝&!)#9.*l̤swXG owԴUl⿳=@mdgBF&B&XB!i0!3XXCH-u0B!HHVX,8/G!q,ua q^%,!%,qXBq.8^ںԖՓ^~?}?>}rXNQxɩPo?4ϼ6C@amza!g(nHzW'2Lb#Ǒ#:*BCF?t X?@HS䌾Y{r򜮧K*Ao+X:0c|d1LW~9_:ʀeo׃VXìsd?5zD=,x&́;!Sd:OF'VUJ#}c, tA.F22=2:$Ec,Ht$.8MX3Xi"!wj$p4N=3}j'[խ`Vgk&~G['zeڀddV"Ak17zZfgk7p4~UCZQ W09% 2S~(5%QleHDaKXb,Ka,#j4=t, MP $F I[u͎ǎ!CM~5;PwӤ3(YLu@JTI$P]J#L0'Nt<cR? S>iH@7rI5vxHᜰ*\Ft BŀŰRljAbܦ3a} ~xy[Nb@j`he쳧W _@0{ܿﳧWпl MaQo*z/7E_fQo&z/W^!z/7E_aQozsY+fQjY[Ţ,ձVWϢYkbQEֲy ]Es|Aз }A b?eP,4FW(?`?gl OXdcXs.ɥ_N3~Š,ASX 6ASY zŠ;;2BrMk71ؘ71}1}ؘ٘ec *?f!'$_f#?`#lDlD~9 FFO(( A¿a$]}K _aWa$2 9"Arol܃f^cJ?jPTMoP,ԝ|v3@E L LTӀ. f8>2VE6p qi}bbYR `fQgc>(JEGAO9HG;4L !MN8xA6`N  >#2ډ΂ٷ N-4OMЕڦ,VIhnUo :pyXCOLn[",;<{% {U\cdžlkTmcldj]&k&,rbωjg #&쬛TEws BjUN9OU;MPOs`\ VjT @h)zB=)sQh@)?6 E`8JbUZXmThe.3)[hUjgGص GYV:2kZ'2WGp=S43O'c)̲YD>$DR%> 퀩F<"_UI+UT5=TD]@"[bM#ۦpq8;‹̻mu`כo]'#HmѼku߼K턪-V 4l1 KGr;+zOdϡBv'[D؋.3Qz~A?vlUm" 6yB$#h)-\x=b l3S`ǁh^ FAK3:&yBHH  '|0Oȃ~m8op͚$uKM+  gQeP$԰a?A5B#ڈ60F 8<~JO֨8R49J %;ag@%>.vc bk o=JlcP4Ubb4̵m Ddädl3O"L$'DR"x7r78DY"h,Dr˰:Ļ# <Ba)ͿC'#*tٝmw6GV#Ezk쵟pڦ\EN힏^sb̶m{4!h>5 X OC]`[Ş5[伱qyZ]q5vBSB[aMhr}Jb$S69X3@ -d QtjHK C &CdcŦ|K1Z >U'#^ ; GSȵ6{}x'e(1,`4STXsV᪏k-VLi.":Bs8Ab3l06Et_:a2L]萳%Q{mT>QwL:-{G+Ǫ1 v=+ؠ؊tIn+]X{VM6͕4$щ%c*ɍQl\C[ +"4Gijp/|= bx@8P{mZ(s0Dž`[@ۛX +^yTPT;SyWA˾r@=2jYx*(bCd@]_q䷍o7' ᚅ@=w 퍜FAb4ZzنQ]8[Ԋp ChM刮1vvXgM5>7'~_ X*_G;E߼gYd٫j/9n3M4[{]o7q֛z^ڼq4or%%弯ǿ"Q-:\+)4 +ƫynحYU-m,E m6# WZFKoKː4c={-I38x4}nVrS*sOjV _9\}ͥ _]a}=A|q_V}b_~qw|ZH+6Eߎ6jn/flZ^ fW`XՊouh]|>=_o93gED_Osl`v5_[7`7=h1{ob7?a4"uO{[SoW٢lo)nѸ<2wQ=kic U+-d ҉7 -ί3 4mךg+1ӌ{m%[&-|M-xo˷~KՖ?8o7}3~??Ѯ|n˔'ID[u͋8X^,mQP;(PDP'(P fN]e}z鋐 %4ƧY`ρsat=u%ol"5ιι98R)!>}p4P=C·W95^=ŞfsU!{U98G=6~6ؼgg9 dcm`3\ ff3\}9y3l56(+NoG wooT nq@qƷK*o>]=SlAGL7T"Ś^W<+]#ׅJli晡BՖ(Ƽʮ2ʔ\u9򗭫<ӯY)=P{M&LLy1P@aI=v<{Ę9bz]UpH(1o&33cC:dĤ:KPyTQh;K;x~STjY\}jhb,Ǟ { 9h9`l96()6M*{Mj}똪% yʹ2bb-wR[PQT,w<w]PX6Q6{sRZ8X+ rYaNgAJ|iQCG":.#dLlbbtL,cՀf>MePpO4XW[^2"d+r;eŅ=2'*Ueڜ[ؙЕ8s\iql91ZXЄ띲nWUfmkb]hC; _kB]Y $rgdv!.9(*iwXkqw6k.Ŝr)ZqQ8 ֹ8/Ǘ v֣rTjS9 (.:0|b(K7eMTTT .)^C*{5@.C^ YvjŃbYimy ːX[PQr$:>5:nl}QXsedhaޣ2}a%(z?j@FGzt®Ǣ4̄@ kۙɗD˕$-лRrhpݵRaϭXkG]+U!-Wbً*WhHmRˮ5]psջQGŃkM;RZ(DmB;e`Aһ,Ln]fQ +`kxjBs cǘ6N0:N}5al^qy[A obÌde36g2"-xC78wӽʺl[lK9*!e϶ڦy@mj:9E kmcT @ P6ɮuFwٍ߶j)m2G2 l.#:o@t ټa[B0m!- u/2׋΋fڜy}ŐKߞnϱz=xFaߵ?A' "{|H/ҏ !\d#T{Vj'lo{bE,ٕ.ۢ!K,SB J`I"_cm=Y3""3zq{xƮ= rh9ϐȐrDH2dST% uibȶ.Q+y&ÅK5r[%6Ƙf K@X1"k̤#^iG3sQ_x$:(Hضl3m^W q~x`[%%Y]X aѺn7.FG3}ɾg-1 82)huNiA>D -Q@*)?d (}q" W[!e o؞ܥߵϊ,%̝' A|\oG3+bQE\+v E,dO')sJWdzޘ$w9vIx V w=G"ؑHC*5d'RJc` fK|iƿ=EZ8U yA A<,q  wr32wy]y`mJM$Ŵ+x:X{#M X\c1cHBǎHc1Yqpc^h9dα,v˙P:JnjcN8(I7cOdLI0 |J|rmXTe 䶕zlc^*vg (u@%I!}+O|h BP|+mTtPD)<4uSRoHcC6Osߡ'$e[?ǯɠ( |sf|]SZ6:RJ^'3@=Kq#v_KfV]eAxGX-%;r}vzVQvn;3c2fin,'KE5awaVNBiN5gEYΑA}}z͛Npm=RN0y )վzq _<"~(^xڸj $Z+ܭZH'6HX jɮ~((N<6nYյoϊEd iKߞZ%ʺ%D{51{PTVUA(L'5O.%ץ)uBL:t.{T' 2W%J!#T~^znr= 5cƮYKyYw!+'7sނYiWV[څYk۳zŖ KKci*¿:h~';UdX2<]L;z"^g.Hڊw%~\jU6qy2}cQME飳.YeQIjӳm_PR곪2fJjUg-YW0iKxu+Jumq[1?3x~ը}ENoUQիbPڊayx3Xyy[2e\抮n%Y,w"ߍxŪr7횹Oh76T0kgҖ-Z?63v go8h?:՜)Sڥo]q"%-ӯ*qIl,fk93fgr9jA2RHYX^+eI-r*f\W5^*WXTP56xUAޤVK'WWM0/qղmU+I9s_Ҭ%S:g.te\ZV)c9fs-WVA書kXc;-cuV'Re+߼=nV3.qTajVg76/z|ilqز;n>K;sOg5'ͨZ] {IYq_ry%ccL.O"\;9Oe gOZ;NYW&$Κ۟\&UəKܳ"2ǮialSʓC}0tGvG79g.k*:zSщ4-h}Pӳ,2sNkeoz n[# ,pX ´fER6Ə$Wgu#uzի˪>(*(~jql=P'd7n\4X67JTH7tfU\]U]j~zꦩZooj{.CRg,)r7j֑P܅b9%K32obrǜ-r:Wޜ?ֱrt,%ubN\I$G~~~G{~DTNCgҏ[xZ,r,smoY[;o"ap;ߺ3VlG!򁹟]~=O -ݿJ[m= o~?\|Jeyܷׯq4m ݷY|RO۸IAw#WS%MJP֤ɀ&ݧcr ݧJeM="2}#}ܝo|q{ki\Nq S:(AsꠘS8uБS8uЙS]8uЕS8uP©::ũs8uPʩs9uЛSqA.Aߟ{^3-O F8;K_Jܷ}x?勜UM:ȥO _U/~Rٗ2:ImVw׽1!'[]>9f8.LҬnnNh9K7}vW}`O HϓN8N? ᓨ% K~x{/r\[xq{r\[;㎼o9[㮼o9.-yqrܓ-Rr|.o9[-}x希_[~Br<_[y r<-ǗQ r<_f͈Dr"SZ~l֯?M_y&+24|w?5;߮x}ʏ7|ݧ}Fc3؟Og8]7؟MQgLvwn 5m]?VZ}KWZ4~5چ_iY}\~5\烊y{vp3xiB ]I` W`p7 F$#8S` pu<8n0L 0S)Zr/6ߣ`kuH tcco9c|'8#55s U3w7;ms, ͵Op,OE"0)_'e 1eI Yp32|ԀB}$ A$[p/K4RC'Amցs{OeݼEKE?>ׂ%6^-ioWf% v\YiFp!nk@ƵOJ13wn< *|Oӳ 7sD v$п4VЭ7Q9ЫI,v>6r ;spl$ ~=4"3Xp3\OQ q)y牋| =gF 3p'.h  Akok\ς qdHIFi6HT0!Y1rqZ69`g๊N3%`7UCNב'i8~1a04H\FOPj(FC Mi@ o8O C N?$y əg" ;S9ps\$.CI ~G{z0jY;F\=CJ-DEiIʳ49Cqpj#8(a(W@4ŤY.ƹE׼_ʜ?Fj 7{#eM+ k\Mj Vźp3ܥKrP8i:K&Ȅ!|-}qpԪ!eXFR5ꖖjtZ􋩂OU&V퇖?ɤWj)Hm|r`-dPkݏ#jW%PN#0+X\Qozbp՝ O2ZW+]u\ :U٪3[bA^U[596X8*JN`F oE&6kCd‚~s'% z/ӛR 8P+q%H rjb!ہ?Ί_X 7ܥvtnԖ2Z~r}5ߑ3Q%g.ARA|)VVl]KvmpjgVIlQkւXkN2"ǃ37Ak.e\QF8sΫXDm5؇>XGգK,ںž"=޷pѬt,m^C"K"Ø2j9gfA[ʊ/y@ZgUF>{էMl7/֟8w`T[Bh jWԀغ! Mn~ Q)f;>'D7PwNsN0χX>s-O(MZ=KpG1Z·G}:%+,јL Hz$|l0  ͪcO6bEv-h+l-3$N;!}|zK^w[z×Q݃mhC'yjq^'V:!}{̇`y#ZP~Zp׵R [,,U֦E- h=ֲU5~ MݻFcqm1aM@@bhhXujx kE GnQ쩮֊W賚>d=3r?g0R>/%%m@#*R jS!k$PEiVZRb94TpXQV@5П(VUGm b!KXMxvtwh*D[ntn$(%ĝ.%O֧w|fTiWR(mEBY:о@JY⟖:sw"?;P˱jx@t> qD]lpH˄X{qtR ҆o2j~P/]Vk3UG)jWY*P * BYIC]{AՊZ-?-zbaiUX}^NvEkB5!@\e\([<lRADc$M1p%2ߑ{g'rC>go~ RП"|Ç}w H3s{Gb 2 |lStO΀rޅ#x]^ R~畗z+HDہwX9|Nk!*8X1HC>rv+^ ?i3B9r|m =F{~>B0HAEs{{I:`7j8mA?8 DãcAZف̇7p>O{J-;qf>Q!`A)\}@QҘqXúB_?ʏ媦y4( ?`}1"M"4R 6ޡX?F&)_Lb.檮G(]6>p6x/-rn M?NWH~M]xnu1W3FTtW=/u/{sv :p# ~[CӴhBhl.s˳-9ȟ !s"5A8#q= ^^?n <[y==]\%cpn_Czܜ 6F&hO/!&&_ wj/pT'"v{`zHr6|n{ _E'g<硟׶"h5: BP y[D@ rNZi)0 b/"w*I{WWpe̝!~T.=r{{ fiQ…ڪN)||@?tQx | ?R Ћ 6p=H$9OjM`%OCE ڨ%r|&g<ī9S"!@oȽwʽ=٣|EVKs|G䬔~:z%!$9edHSlf"Ǜ8%/9ރ7sTɾ8}QT_s唔?_F Hl猖SsN[H?AyEv)puO׽:iQ`8.c\b\-""7xI?׀roSZ'?ԌKÒg@Gh;}IiͬHָ"> ɟo*,U=H3A='4>U?#@kY#f"G%E ~="Gh@w!w]!?rU}v NOɊv*} G'b_YWC::-O/mȹ5N#}F՞4j"2ib7(V1_8]AvBPV9{R«I*O)էt>3o:f?knJ:Sg5=QN:4+c-g]^";ʯ>8fz /;SpZS+;춄g3NY@,"xGHv܊">eKj=At&ӔF&ԨQ]blĜ܈6"?J&ʾOTך(` :y'\_0O9{lbuY Gvur>=]uM\_Mp|`xDЇosHMzG @1r\ **oo|܀IpF/ÿo7< {9 ÿKAYAEYW_DZ.|jr8 APKZy'a zktzg!>@wutk{s3SuelXj(絔2;@j=iT4a9 Z{0 nS@G93yʸ)HU@c] AiG܅OiUJ> L诠U+>85".G@k{S9{O|sHkS@r7IThr"S5qdTW/SO;dy;WӶoRyuzs1nAo- O?s|] -oЊsz!@Fh,ZK=JC#a%(S)(g"P""QDy*ʙ ;E䇜B >NNRz4.8vX77wx_~5-Ճ c3O0;g'a DX1qTLҠp4rӳ}C_5+''ȗV2gp9:"-@'ͺRz { Jba5 F'J-9;s{48UY^k2ԳXkՑj !## q9*TizIzFYȜ|sA==Nfd%|fQ_Գaz]= ޱ{jM6|8=)&+w"ff'XE`F&(X<$i\S ѳFAJk>#p'X >v;(-9AwvJou_+7q^02W/&R @@45 Ҫc$S㊤Y ~s5(wBN=Ajj:/*x /[ ZZ/pҳ?BׁDqʜ}H<֍\V:MMnk p*UT?s˳r>V}SDy|<>5U#է9fP>OL4'$r^#> 9ܽo<lUK8!bOp?i ?I3B 0rB{~YVH o=Lj/r>CMEoZ;;S>qwhhUh6(PYsg Xbx<;e8Ӏ9V[ph+,͂@](7;Zbl bbWD+gͷE'mX-JnH9>wop/gM+=IfDXn)b.uh,ko+|huЊ8skglSHm鳺e"_nи? [@N7ʩQIFxì4C>BfhC:бN6t(k ]l2CWva n2t; cQC{z3^2U lhaCKZ iQжvBZQ0t# o4Cg3bXhCun͆0t{ =`aC|(jB'ߣ6JL''q_=@HuTF}~7%L%Ƃˢ5 2MeZhi[ߥ [yʃoRw)ES(%Z L!r!WTzÀE6n8 24J >mC{ :.K gUY*Kgx6-evcUn8Sy:13y]Z$[dzؘ# NV_zyg~64%gV?5[}i)~SFYE/&kBꅳՋfNQF3(S/wN(V"](W!]#|k -Or\|ɔ ojor_Cj|sQs䱛f14c*sd99B^{fa0o̼ߖZ e"w2ZI8Ǝewtn9@x9?44rnx?<yypk83042615370d8#ጜ3r͟O!hH6G> 0QG!(lᏢ?(nᏒ?J(mve 5QGy T4QGe)?j?jiچ?k?hh浑f^yM5̫β" }x&nS,ܦٸM's<-f3#r:o7"1wL<_䉍0=-ܣ!z %,dyRHuR uIi~NnU"=H_RGLF7ƠЄ4%/C C+hEЊB7&}Q  c'0*JJk|\io-LgХt)zg6 EBt' z(W@ _/!~E/Az^\ @n<,/ɬ+X!vgX1(`A!.yye^Z'd| < XaZk52Q5 [,jͶfk|k>Xuk췶X8$E,4((Ђ(GˊJ-'RDuZ^mhh+*"]E_я6=hUi?qT3iO|.q> E⺸N?J ҢdYe*!9GΡzY+N?kY}go͖ٗUrjVSZʗ7՛|:叫{|z_}WGI:ש3 xǟuN?prMN.'[NQS)_qZ;.'_u:;kNW;tz7  P=o-mGcT2@(^Q~aTt1*:}zG{$|79Lѹ<=vG"ʪNfb$Fn~a J1OGIN4ܪ A&Ked5YO6d7JarFt\snv_4w)66e,7㧝b-.Snu_565,`=n-^Snu06M,be-Snu66,aCk-aSnu36%Bn[}HnoF{Gc>2G䄏>"G䴏g>"9#rG䂏ȗ>"}D##8ܓ3/ "\|#r}d\GG>"?e"A&"Dcx<Dēxv&"Ds2\ "jNF /D e"3"xLDx&"^"/)/G&"^LDܙxy2yKD#G&L>")#RGX&"SB>"%}DJGH9>"|D*TI#RGH >"|DjRGL=>2 |dDD*DkNOBt͓tR\p~ IAQIt.l̆lF,b6c6M{8@.E)W~1$?")TPAō8ԥqiI/:DXVDY[֟Ĭq8RCߎa{l{gomvGdF,c1=VUl5{sΛ 1-KEM-*tJ͢ yYק)6( E(PJbRn2PaRcJPR TjPj`R jC 0i 4& M4ǘh-1i m0i =tt3t cB?0aF<`8`4 0&d Ta 3+7ڇh:`:p:tMбtO'ЉtFOw)t*Fn:ΣWN?'4(c3 &s<`AbaaQcq`I,FOXn%XaV8+JRơTޔ7y-y+ޚwo;tޑwyޕwyޓ(|a5p>|,,6gsyI 6-b&gxY]U[&^'[x[CnGPcqR|"NOu<%xJS]_oeWqEM|+WFZ? $iQ$RJ[*HWz2 2$2"唹dnG&˼2/ ȂMEdQYL%dIY ceYVeYQVe"j!kZ#zl Fl"SeS4yl![Vl#me;^v鲣$;.&Ⱦ/ȁr,ȡ2&2!dwCdoyL~(ˏ )<-?g}>ib?O۟g9}Ҿhe_bm_??7Q),%TRQ J* TaUDU%U)u*ʪr*JJQUU-U[QuU=U_5TTcDjjZ6NVSU::)NSͩpj:NSϩ4p:N'i4s;iN 6ΝN[SƧ]0:twz`| t91R s;#N3q:;wͻ~ X@-f LK2 ._ sWK珝K4֚{[ͽ-O@{[sb%ndQ?|h[v~dө2yzѻϽst5m,QTE'5Df~R/+C$$bX\#WHWҿar|(bUUR2&3Rҿܡ+)MѣeiY *Ҋxf@Y|vR=vj+%XZįEA.F`ҙIl&?O@;{&;xO/΋/k&x/KSho{-m-ڴ cޒIaZ-mVWKmٚǠKo W쓞d@\8o渟mީުjjƩj&.u樹jS i%?vһKYLW%, jjf l/Yg[eߵDcl>ً>4 Ҙ%IK%XwZ6BFdmB[Y mK+yv=ɣ7MVq9xC>Y݀[=`Y^ 1:ۺl}vu5GY? 1B8I"D9('*PODCT ZM Eo1hه':X-֋ N#i9Jg896ɉr:lw-_u=W 9+neY=bOP^f_? e2LqЕnC!].[Lf&}#jy O,{|:3=|s\>~?b_K#|^ s`.̃p,a!<AX x# `s\6ŦlfLv7fn6w**a;;̝خ:?黾cΝy&MjsQēVKFѧ=#D bˋk–$l+0;ŮBjvMӮc7 ɨNΐZ# ",jR^RuGRS,MaRLV=VB,tbIc0}^E$g!ݔ-oeLo˛ަVEi9=RynMIsmH Ym2=O1c{=EG*M~݉GINk{n*pS43Ex$ ~yQpv~A YmN9GLhfOPW#<"Q7w$> &G&ENا>x'u4GZgN#v_j\2fUʯsAڢNyE=^򦹨lN].N̞>4W/gd#ϞנWM `TVbխbOا39;Ǘ|%_|_7M(?Ə$??~/aV Y+f%V.+onXŬViUΪ`URj~w;g]'몃zcYÈ?hVJ2(5WSfCR{uXSYuQ]VW ;vdS)TȨ.FAict#Lvf8bgju۝gs9pN;KKP{ns %rn[ӭ了-ܶn'f)Lw].wW܍fwtSY{ٽxa/K yŽ2^%Wkymtzlo[zMvow;F0/  `P?hhL , , ,<x);/p0p$pAe M=CK+k!!/  jRC-BmCB=BBCB)%աu͡]ác3/B_ a; ùEåUõ ­]½£³ËK+k›;{‡'g__ ߈ G"ɑBrHHHjEmSG_dH$#2>2%23270$<:.15Rdwd_`hDt|RJZ I4GsG DFKG+DFFGӢmn>Aѱeѕѵ Mѝѽcѓѳыѫ1sbXXXXXXJf~,5*>%+6 6,6:616-6+6?(4"&>\lk˱qwxR<9^(^<^&^)^=^78oOwOϊ///ooo___H'ɉ‰rDDDDDDDĀİČĢIJĆĦĎĮāđĉę޷唵?y:I9 y*0$1"2MSMIB%JN/CCqr*Ƅc Zg{~uuֽu{k׾ޭ~+8@'phxA N0]*, k*ANpJpV$&)+x,x) BDB?@a0H*+N SaDX&\+(V uFa#ىD"BԾqu:NS v:O]]On.@ ՍE&uu)4"]TJNWۦۭۯ;ם5uutu/|E/.z?@}>HSEb}~~BS_O7wO  2( :dln5 0 6>77L4$ ilCذ°ڰPik8h504.nnK(2*:dln5067GqƩdc1ǘo,17+;Ujcxxz}j`-x! dqp㔶nkXCƚWk@26ذKm6;hc9Z`=4D[nKZAC+ NhZ'w~'wbdk8h/_ZZDARDKDKDf"QV2e/G~嘓L9X <<<H[z?hC";@,g?h*#c 5,]6adW׀Q ,6`/,xH5k ;t. F mknH(r: X,gh*)`,x؄j^^^G=惱arF hjt,b,xH۹1Q(bcC"GA2 Q,gh*`{ |v@' "1[ {#z>h -&QE86o_\M֠@ہv5֠EEml XO5&3]- Y`]XtmVf|+s8[jDZj``Uiँ&6KKx&jXvߙAgw;}dBW&=+u>^ k f]9YBX6BX^9s4$s`/{[BYΉE,yfD0յ5KPC|r#9cs0u9#---X+\N!vB,"ŠY%KP[>2=ARl7S=tE7 p4##OybZy N ώ%4$ay< ZЌU.]ֈP#2hʃub3 i1lM klļ))Zʠ##-gB=(QD #یh]C%N`~/y]Af5`)p!0"]փDc|,d,,f$ڭ^Rk,`1HQzWzVnVb,@^y 54hA+ kVö#԰#԰#԰#԰#԰#԰#԰#ԘGh a5,&XK,b,b,b,ֱ x=n=n nnhX,K XS@ڋzB/^ zAxAxAxa~b׋_/v~b׋_/v~G`~G`~G`~G`~G`~G`~G`~GV%`p)p0\DCYh-e[.`"\ʖ2-sr)\_ [}a/􅕾>?A~ZZal~hǶ%cΦ..Kˀ ?lÆ?lÆ4[+l`:11 C ?26ma[ [[\ \\\\ m-C0C0C0C0C[0C[00̮`v=)]Oz fS0̮pa_8 }/þpa_8FцCw8kk8kk8kk8kk8kk8kk8kk8lZÊw+V={Xq!c"`};vGA> Q˜* * 6mHbŎ3g;(vQ8qFB@ X\,.R;aw4쎆Ѱ;vGh/ }F3`y4D9~Ѹ~q!=ġ8莃8莃8h|[e>[e[e [{MF5&d^k26?e[e![fe1[^skzA95%zQiK۵@J/nxl0#Ôέe?I#`3 ,FMWԌ^B͵oG_xn@[ڲ43p?*c51g7o2ؐ 7H'3ֈ¹͕qU\ p#t1#݃biH99)@A~sJ8edȩTqsz>bzW/; ~3˱eVqV V66+mw6H` ]SJʉ &m f34$lGBdvf1{*BӜ<CB3C0RKLiHs9Ah+ȜD'>9C#o$9Ϝߕg."sML3/sݍfqӹ鄦$yy<`U3N+_D~ӝǿſEhggc5Øq-vNd߃o`ehw.Dz͇YIh  #<- s/\D0o: L\D0E \D0ef0A @=O04 DOXQ4ڇY 047=iC31Q@ VO849 Ҹ pl1B YOh)B _Oh5,C eOhAЌqD kOhM1E qOY(P14=iC14=iC3•S4 14'>i$C3#14?>iTC&14W>iC3›hJ ͞O8/0b/0b/0b/0b/0b/0bcbh^xP Oh񄦑Q Oh|QR ϡ8xe( ' a)Ul-m@{Ɗ"U1a2E[Wb1ikTo.MCM)2`XC 8:D-e|G;Xn6.54 UZ͊T'S*)7hp6[]xh՛rbJG[SKާ|[gMiq_Fī\ڨNz,;~7N/8ՠacq8ml9b=:ҷ{doE}xؖψ9Z᳠c׋{<Ӟ|8`h&a3S5gnvʼowY0WhL|au{l;u|IdM>Pv9ϾۻA=dLӾ$ݞa{ k5qN˓'q'qVU_ fsӬ'&g2r=dciMy,*\?4 q;qڡ._]_o-98whu[zZR5Dޠ_] ؑ5\<&[Zݒ'Q[_lw%rMt!Cٌ>յuO/s7[??*m4*kWOްkv¨]&ؤү -r3-~k+Iۻ,l?2*؞__k쎵y3?:{)^=؆EWlR6;ڎ.84layȮgF/tOT/oi}ߎoTm$rw=aMWF`߸L'{XvciȂ3ƻn8]NٱS'Lԋf ,]aoy!O=q~-[_9:׹GEӋӔIvn5#-l?[֢Acn/x/y:oY8bN⳹l^[}|-4\6~Z淵Um8q gXv&M{7Τ=}B~/WT?Ry߼ڻLiߝ1w~WbCwQi4Xpbʄ V6|_oܸIpGvyj{ϟwdA{^~>IQՙ|'7U /2 R>|Q%uNi^:tvLU$v ?C@ 4 nfMk*LLLqqoiӧ=W'O8Ptf]Ox'-|~拾Z}&A\GUAU%vz_42J:eF?]F=n-f$Z=qz J'9|6D4vgكjB#o01`󳭒O:05ar%F[޲(O4osM,WPSҧ9LCW&q%3Ўchق}hPFscG;:$m|z>a or>zBF}`oFV+X1 bfݙ<|G-,ڿ8W{6-#=bÚ#ۿXG&+=b Me[Kg+*/xXbWC̖>5u݆ n2kWyz^fϿ_!_s lj/b1Ѯn13Rw7XWu`=k1;&T~}U}wų}.]zگޤ5IA%DےY6*_ '_8,t) ?Iwp"fämOXT'\gO/ޤ(1Ozgy/#/\zӳoy0ޢ&!{:g -kQmu?? C:ɇUG-A.8>/2{qWX.>}۶K2-QgU˫t7*|à xuWܢ-OMT6m6[5w/V?ݩ?7%?p}~kuϏ>L^;wO)~rlؘO鍦oUڭ87r*c|m!;qRt#v}ՙWYG&(O.VHkJmή۷L! ?*iMNj ;Ï~O7?9g>:a1U,( Ɋ&]sY\y6>gM?;8]'_zfql7|,J*>kT{fNŸ.)5[^׶[_W .>5;8c#ǻ%\C'6j1邢ۉ"c-2iV?Z1 }:Hz8ޮmMv7{o儉֧|um)&vA+R\9HN's9*p4N,9*3m!E4~Zl̗qcb#uxo_2⨆+=uY)Ǎ#23XT4bJuNUz}CB#˜j]IY:S͓{.1lRpvj{KF"[kG~}(jDUG>X8QSW#E Mmh0^Iչj]?I95Z>5Fg޵iwU}c[=mZ5+SJS*W5H|1|m.LW?2ϿXx$W$5yg'y:hokKIZ/2;% rki=mRy'~Xu}ay;9Gz xr',#+WLdT[aK\]`~}['M+Xun3/7ru'_$k7OlN^sfX_tHXsm߷i>-Gҕzy?y<~o칉}Cv^}ύ7km[zVkGAf40?騘[͍BZ:U}e endstream endobj 2584 0 obj <> stream x]j0 ~ CqK{cClJfXd8d/t0 }i'7'8-B'uyv2QiuN84UנE{r!{ayqBJP x5.ؾus|068ȆFTu%@*($Oߨ~_xX{,yJCT>?!oP endstream endobj 2585 0 obj <> stream x{ \TUsaM°o3 ( *%0(03Ro- .[ˬLU+-+L{f00 r9Y<9 .3ǫqq; 獞 -XЄT^R9gp C%ڒOhaqXapmfba啖9!o2 N{INCv/ \RJ1q6@i&‡Pn֛l~n8vY3λ2ikY viׇσR<1LvNYGZ_H9v Cұfܭ4r@ U]0@*>DGIJ׉1n{Pʸ;b1aTˆ 38\.Ie䍅JEGh&i f/C_i'*߭_M0=RBrk{理"{KX"fYwNg_z*A25D9 vpgDpAtW&u!;x z'x7 7\91!BrC0#r!@b("*A a#!Q ш1 U8xH@LHD$HBLd2HHA(@ b*`8 A3 a`8p?gHt012 Y0q$/(88"fC688r!& NaL ya TĩPX4t0^3ZցJRR(C,r[(f!B<a6bT VBL&9A5b5E3-`AZ,BbA0q.(·oq4 6xCðq1,A\K24,FFX+a%*x&&r"(F\ !>xZĵ5<O"> SOW4 <Ќt3ql俄 q<__͈a Vĭ"/!2 X؆ #n;`'9W_]v#`xuqG~88x@|?7!x -xކw߁w.{p0pE< #??cS>cH##/pDB ?ēp F4A<mi "Q8"-|{x~@.!?K3?Q~A/p2\UkpW :{﹁ xڑA'QXq( vXwNn>'J߳I仱gvwd#^ r{ ݵO>gßzL}>&7jع-lpsD$wa[lzLw1{I^)yv\f1z ;83rՇq)K U }o3}׻^R`-zfw_rz r왭Cls/ O.lꙭ w•޸MpC=ݻxuMwb";HO)gvwxuMw%-{fwگ~0T}LIAhS}Cl% LpI=k}5s/h4gvne14 w^3 뽟>ǔ;H;83z'"{IyI=G&~t5/ypy=k{?1}K*)Hms𨾷(虭{? }{bM8&⏷#C!/oW=nrswtB4 /~DB/Tr.{:x4Æ 2h@D*!>.6&:*2"Rr֣JLTLe!gHEЌ3fBB[YIeY[ޘU83zy|tD4aOdΨ_eSf *X,mu⤂̀8+)auU J2R*3r%@V:(K3 Pr3>s|bKYN66.͓ XX}`[&|dQHǡ4+yEr%U6,S4:(G(g7Z!>df7 gqe6_'4op~KZn6Ƕ '箄VhuνY"hatjRDRЧ@.a*$Z#b:d5* |UPrW#@yBwΑ+@ qr+ְZcbfh~@|\m+4)8|`"V[8X xy1c]88`hTVH(9Y5Y(YYry#y^VYĭ?WGV`+b<;O=iZXdmv~=>](€\X{!!E d)G@lMm,$2d 7j?,[ { Q<>&NS( ʎYi;-iu/Yp AL# xd+'㟆xly!Uqp^ xL /(gɗ0I0ˠq,!xغ?O>xNLj\@Mt0vf8! dVxBӅ72Q'Qy~.3a+Z}BYW G<[_o;R/A{њsX x5:9u>Lv,7*a,h:Xy2ƙYOHsƏ o Aj;fzDYd B1$,DVՄۊ7+8Y8Chkѐd2Iʈ%VE#@&2e0Mia3m/`65[7wُ/0NJ"F*LtItY!Vܾ#c:|^ALLQ oՠU&zhx}'xUh1Jޡ +8-%"!$$QxMq%BC?x _he3+Sns Gg%8(6Nge- IYv=`1jу&+wDCčxY;{g%IIU*:`;-#YJ^"X901 D*5 $3TVGH)ϰ X8""yDRypS&hō67:a3}3_H\ lbLj ZǘTnD3/V&`+6gP<+i?pn2p|)ڵ`aŅLl"l}_OnLFd~ ~E>LUCGg8p7gOypm*eY! T=Hǂ\"ֱ, ɢS|csƷ(W4NT'& D| |a. RV`wѿjE=fW*iÉ{jjCF ?09 RO2Ԟ}(@2BN3 餌1n8o&'$h4עf͸HaFE g+ɉA.:AưN"G<O\B $ He1:LXvhDi?sf^N('׷; S\nx=qxZZZ &^CK|qO.OjC<${C{fsI=["do;:̺ ۩_!ZQZbU WE2 YR UrʠPe+]>|TVbh||=}||Ho$с*/$ۋQEF8NO$s W~#!;qCCF,}Y "-M@TaR'vsM,QM !n>^! ?BBH2T*񺭔a';S¼sua'*ۯ7ޟfk-7Nhf-l}+H4 M؟ pN `CÔ$D$#$c*:ɩHw%/D%q{qWE^ )EEŶM0|/*ܨ|Ri\DDFf NFF(C%^>lSdD%'fXF%fY#ý慩43gz.7}/~{<ӥBٙ ȩ?,T-w]3>!rYm튣'/Y 5HܵkUQtĕӊ3= ^Di 0l40Q-u6%jJ9EU81F.6M @F&.(Rr N<"I!=00ZHl"͢E0&^/ '7pjԒ` A(xd{/^yCۧkW4"n`bC/~~9)xP͵5Qe̢zpÂ׾F/>^}g s}!d7dA ?'C"6MAG#bǜ8cǞX{I=O&U yn.&O=uLo]g@SoyNr̰Ӣ.uNW WOL3rLFz 9܄ܸ1Y9yY\ܬY9rgy*k\ rkhv`qYǥS/ SFg+7ʻŧJWQSMg%.5Uqqn ќXh{_U{TV/FRmqE<6AX̪6c]UQU(*ai<k, Wf)WnOGRȩ*q6FJuTcJ-[ީ ʰ1QMtN6r:Z*6Br0^%Gs*6:w֦S3r T :.vmWd= >첄^(d2w]"EZay«^ cL뢢+Q тuT3!gݴIU!D`!0F❁@O@0sF",! (Yx|p9 mcZ[zk2Xk]) #h=:KLt)A):ڣm, =ɵ tVU`T[tr]Ė p*a+[nPRQ.z:zҫ}K^rkf Ug Uvt` I#osUtRݼj[Ìv}UjkOΕO9jS/cgRg&:ڣӹ;:St7ﶻw?uE$JeF"bm-(xO,].]V̇,}ڄ^ iI9 M"qY$u5M|lrRy]w!Nqܘ*]Bb:&(:eyfAh "L!MGr_⒚K;r~:yuvƒ~_~8yCe Vg]tau/0_k+;77~W^잙T6]۸ywS=RtAon篇䒽3JL`\(Ds'?U[ΞyqE̛C}`fږ%VxCojmm"? sa}{? ;qhu3ZL2Cї־kο?|e!ۗðP/\_"Èμ,:)O0+hz‹dj >t,NQlߜXmoZehN-XE` W%!D>z8c'HmV׿+x#_'cox7,z^qNHX[bkL0%.iyʒϯ& xsdܗwiy{jOv>o-ӳv~2$7 %8yus>K}]z<̌?NGuJ8BUxЈބ e^䶉Q|C5,8Ժ^xz["|xM=g77怘h?:zw~j N͘_:`16d g^^:c4no:6EwnBa3K~38Rt]sNڜIUj"#_JO\7oYxXk,ڬyr[G_L;gd3;%zʹ׽FʏO=Zܭі#.m}pOX0Cdl<^_N$GddSǨ#i2ZxN?o:.dJi} d鋜\M~k{ۗ]>篏?\v{%G42?kģ["WyqtS?񗀉a ?VV^sNuǿxAsӯ,s[7>1om˵GP0:K;cuktv/qxuI2ymxsyhܜԾygyɕG>Wkܰ+qˏop BZ6_{|Ֆ}Ϙwi^R7q ͶAXaWuNjzL+sn3l /TIh*L ХHY( " HSDP#EM+^:"J]{g?g?9s23ya VpH4|+y=m5Y$&z\O  h&dr7Or'^cJs퀩hVI2))pՋ&1/4f }[ I u.kptVdߜ>蜔"إxJV{Ew oB^p(ċd~&8)% !ĹcTpV4a46͏EW+N6,Z J8meRYTc#bZs-o(Oivu҉f.$TBQ($&ੈB%a7X,ιP>Kl0bNg<=g-Y7e7bb;k⃦FM{좑i$UCk3u%|;kRw(szp-kq_+ؤw' 53MqG"k-08_TKpbJgt܋#ڦǤԝȯv uR}MK5Ck}aP2} n\l5>2}<@w)N5FPeQcܬꐍB#o%ל0żxVY:9}QEeXl$ֳ{L"X<$! 7 8/tnQrK|ַm67.w):ʶd :O uu]m}K`ώy1yʒ)VV "R5hSg|!! c-*to눏 Z f-r5Bnmd;}=cIE%[t*2w0iÓ!ɢfXEcF{ɫ^D<ܥ:fYBZgp&x=\̚B@5* |d̆U{3zަyoޛ.]~ gUj'(vjk ?S@ɡin MFaZKYIJB&cvhݫ"rm!ۏދn}XcD&?//x}T_sF윜d#!A)]N_G^Qxrod-Ky"H_CZhgpkK@FiV\k[Mc2v'f==?oS_Rτ}MИz<J\d>{'Gߎupד!L ZSن$"oR6 f޸704gؓy핟/vT J RsbAitt0̷;?/wWQms2 @jˮBNTPԶ(]}﯋>?7Hdn[3!:{2Afd+>ZFf> ]ӬI_06H^ 9:M+WUX|>%`ȢSdrD]R_œ@=݁X <2\ zLt٢b@WXF ;պ>VhgV].5O֭?5Ei`A=t'Oixh/3Wn,3n;beUcXcL:IQD 4v:aZPd;mzfmg+_Z@lD(:o%v|_JWk]{x q  pL`kɮ;Y2XI( j]58BҐ TY5'&4Wc~d!/j:1@$Yg2St3GI% YSNli{,t;/>nqETgd'p"6xn2SB_AO endstream endobj 2586 0 obj [ 0[ 600] 120[ 460] ] endobj 2587 0 obj [ 278] endobj 2588 0 obj [ 226 0 0 0 0 0 0 0 0 0 0 0 258 0 0 0 0 507 0 0 0 0 507 0 0 0 276 0 0 0 0 0 0 0 561 529 630 0 459 0 0 267 0 0 423 874 659 0 532 0 563 0 495 653 0 906 0 0 0 0 0 0 0 0 0 494 0 418 537 503 0 474 0 246 0 0 246 813 537 538 537 0 355 399 347 537 473 0 459 474] endobj 2589 0 obj <> stream x |SU}/K']ӦmҦMI B[ -E)KAPuPFG7p% EQQQԙA]T@$ :3}}/Ƞf⧞/p$ee-M_3M:,TEgMo[g0``&`7=[&ӎ0m-@S9GՏl`b] ;t5.t-_fs%(BN>ummX ;si7w`} V"Y3Ο9r?qgJag>ifG%z|b6[?#OC??p+nYY<~?yh a4 F:|m@x?' 8Oh a40Fh a40Fh a4A H,֌b cb$E@F?7L ȆP50 0 :a A7,ihHj[u5ʤ-R.XgI5зo  (D/n'4C]e #WG T *a.gF"ÖRv9d{@>}yo0-~(O6;} ӸrKW/;e'fl@ióy{=w⿴q_T͞>sVoKsScÔjk'VUVMW2vLqQaAەHN'Z&AQB LdTګ:l>GOWWg#>/uHlǗ`SN(顒h+ [Wa鍭__aox9 XVi_a[ju^F]n/̀^Rݽ,u<"Bj^Bt[\9ZYaIHhtP.SR[2[oƞuaNS;>sfOJu.4{/mA3Ny/^QsڱOl} 8x{k:E[Q>a3a~086!/!>omc+m0:xΞ`N W'-oc@K65s:{E٭30,7Isۻ}2* _Ӛ[*jrttjܕ|\u4@ޖuͳYBq"qQZvXbk$H`B(GrZ*'Jd 5lۺ{]:޸= I+5Yn3ڪu Y]1 o^3w"ue*X]KYf=evvIc]f>> OmW˸KIz%:dh'> F(&m}CC- ,m j3QTNɵXn"TOo+LjC 6Ej|*lAhKTIu;b.\\@ZLֶڜ$w6>ڔ;xGu[A|1 ͭ`;k##)8.;fuu2jFWTm!<ey-L5:O5.~Kʓmm4x)uqmipD T@`V  ]CE4A,Y%tO5+=Bhc/i|Z7t}eˆawL@džu'*|3!'juzݺ+BtD%>{|O?މ?>[75"|I8D*O>%|BCx}JGx8Fs#&ExyR^% e~Ÿ$E 4} ~O>K%Gx4)^“'6w%.N#>Ä^lGE<@[l6>½T݄w No#l"l$Jp35}F~zuk P W~Cpz~92:¥Kń~Epߒ8p.a5لU+ =e%ńn"L>LB N%BGK"!t: 턙6t!00% MFBa a20PG%  UJBPF@J %1bQD($ y\B!%Ad~ SnR NH#RB?j,"`GqNGA$F qXC& QHBN=2`" #h 6CJR*r #6D$ 'W[4#-)!|M% _ >%|B?Ҏp',BK8,G㏬@Mx?? :5« Pc/Sc "{">g ?Cx{YKQ?N!B(.>QC=ʳ(CyiP<҇0C(lGنr_}alp4 |©dSs ]9NBa6a000Fh%L#L%x -7E$dtB!Bpimv #!AѰO(DK(/ށrl^\zۼֻzͫcW׭5-Wo^j9իgo^啭 _%WVyWiWx[z|#Ysu~T(޳G )[!aN論U/.ݼ+[Dv` %K,mIRj/$2ʸ$kgz{"EYqck]H؊1H:z v C`D# E 0B 3!NsꝿT)yz\slWwvLtӽmV4,?nn6MS\Q_N\uU{k6W{DWR, 6PL't;'vX!fM1/]WDo-7HQ6T65 Y&% LL FV80a j`[_ԋSAӢѣweWtVg['u): \9U]RJUvvVܨe# Z1 ՐJR11媍!|X q[$3|miv:CMu>v/_=}K|>_2?8_equVߦ:Zxxd# emYK{.]\ ʬYփ^=xβE?x=R={ @RIS"?ƿ5L';ٳ n yf #8_35tWpoS%`,aBЉ{@KC 7 \?BSQ21PP }/(4`P{Jyzy\qHy @+a \XEp1\-`2ï ~Wk:n&-p+l Z)w}y w=p/456ލZ^?v\3JS};p5w.xv:}BqM0%$셧ix~Ϣg<>x^E9O kx%}m? 5xކw^_cR'XKR9*~{ p0WZin֑_;%;؊iB hq=yo X-ɭB`u޻ 3=11 _a7GP YrY8ey=Ku~d:?s4gJ| ? _ V/q?w9jO øGa`Dj5ƘD<;D B阞QDyBf8IT&p/0 q,YYK=c;KbɁHfp]+Q6exu2sc<|VȊQL,es`,< r܁o)&C.б[p[Þ^Q܍Il9A :Ԟ\l4Ք*/Zt˾b>~~Ӧbw,fJ0IJžS9<=Q/HbnN 5fGIʄrLx]rPWo/HB.nXrU-Iٱt\oU΁bdVXzY.PuX h""4upa41)-;[7vMJ5ؘgsbVQS>iv~Xp=Y'$#0MkY\G5Us)ES y}7r?WʴBY:Wmh z+,j(SUWͼ Nqh{thTRBd~9,i/{{'BN+YiT VXLvz „%F T`L\"?]G8Ѳg ?[d_5us5+/t]Mu?c&h]8A3U W{"uqL5zYcF Fa lC V ؆%]g}lvObc.;sv5=aÖ1&wpjW5r)TkIq2Nfީ6ǧh5FB5)tFg@A$88ⶠ88rv.:Ys)9$QPEt0K8`8P"$W|yîx-yR`@'A=5!S+] i-zuBFP,F)ht.++V>alV!1Z1dСF0)ocQF~5ʝRXSP/447rrrpsLF~1srqk{9nL/X _܀Q,)RX/Zൂ&ލ8MAWYM2%ZRG@ܑ:Zsߋ=8$X hd}P:QѨ޻(mc]N6@+t6Neٮe+Z2Ӻz b ޻dkؿ.wQgSњI ̼g^p |eJSƓPɟVj~2nǡmOԸb>=Ih j?\VFܫ)Ky"VTTd$s8AkՇďIωʖEf{қtJneiϬ԰cs3_TR1LZ=)7f0l؞eDMhO-q 9\Ok\1KvxNo@g6Iytƍp;'K;|vOqW {>?wj/*eǥEkO*LG"Odi4]`Dψ6xjGif&>L D ' j <wz⢉ҹcb׸s*|bZފ]W;g9 &;jΨ5#]ae8ΩN6[,-u6ʬK۵}5PY[ؔޔe׈qM &8hy?%8]\Zl6ÏV>8tD<~i0zK "#J;P^yhJyL(_W ŹX>\df[oEul;#;RT r!,}>*(e%EEMD0N.әÏotry3C?C.xXZ-B'))0OMb:Ei<ǿR<ׄ>fX$2quDؐؑ(V(B^^g6îZ3kwУ|bYv/o_.؍.Y?<ix^ǹCKN@#\\I=9pgzfpԉ+e[}4SʄҮIFIPVZ4k:21njA6UoT*c˒kTO^ZT^qDYaiދfP)BЧb w|7L-, *t=ª!- ߈{TWn1#,Cd<)iՃ(&5:d&Onsذz$Uf-W{OlЉܥg;g󧒷pvK-y {8޻iCiIZƶO([ePiCDA3}Yيmgӻ78cvDw2'$E)C#9T+g,+5AvO0&l&),Xdͭ}Vֲww->⛙5/EE00F"t[Fٮ2XپZ fgGJ^ #Eu^ u6iEs̲=Kn;mJȲ:N{zK1hCMrQrhDGQrm10żœŎ,y\.)2.YgLI'DEMqLϩ|7S!YlbN/%xcN^3 P+Rx _"P'XC+hcs0=[Vi-&NdqޖDB\ *5˚4fb<őwHKkE0v˶`TÃۃ[A6s Svrx]_W;z3v|UfQMI4*ye4?NN'DFQ4Bf%;4&{~rS)QU{39 ! Iy'D B Y$OH$af&@|r׶k[kjֶЄR|TFA7R9d~z_fkZk?Ι A'93b QQp򲲩n)s)سKgL\/; ES2Fm>߀͊2" x G ~iRVb,.͈KYQl!=hXv!7L RLK0EJͫd?^u}gyRPo2 Qi*X#L~z%di qJu4١)1=0l٪껮N |eO_XӮȊnI9 =z/ isӣʷ?yVi֤iw._^7¯K7V%&o5L2Dh`C7]Ub(,MF;D))2c ^?6/bkp ĈlLQ$0t*A,Kɉ7huZ{JQNVQ73%Y~ 8}LJ~JiBpyI1rhl'8 ^`"Pt'Kcl쮒P*l((`L44s}֬uk3m?h?q6lvUpvʟhF|Ϊ߹*y1&Τ7f4cjԔ+NɿK"u*QԚtYeyIN[jˋSiRﲩXGtvhm\b%>->1әUrݼK3LVk IQhG%>9jR3arVɵRtFةMCsvyN:Ifk9;83q/T`\.VD]v>@]>?O%jR>5HJ cX>kʘ^iH-H(k^12Ɖ.2 Ԩ9sqvƨQoʍ'uo%CnĴXC/Z)kMXXdVFZTNQƩM$a]52{T:nI#xXuf(_)r)Ǻnf]aMNw`s[|SV6; n;'0'm'u =[=٩--1%KrĞ;vxøUI7Bû[ldllN|jU }™3Ձ/4ZjL6%=pFsP4'Nɍ7-hJmS R7j_7/>{M""ds k4u U%,1%FBaeNcd}eكx8f,ٰ ce >WZDO-C*E:0;/`U,gdMwP'4~ִY3b0Zԛ tn`Ֆ;}gш!Йt*%.*E@ӰP W>zc%_lIJ<0%~Ғ8CCj9) * 4fu~({AdjT:=i- 6+v9Zx옕`Ѿ!5Y&b6fj,):{1*ޮLcwe&LzcĉS&y󎿪؂*n!.[hƛ&HK>ɬ6O^43'#ӄeh͑毗&YIY,:ct2@e=Χ" vꙖ7R0BB E$DoISlTŖ4}JrdkwfQ'eh1 ~+-t?gHLQܺ{e}6jm,l3'Let^(LZS 32gl)/Θ fedas_Z_ 1ɂt+mW/ o})QL1-G'OH;Lά @>*9~BRRV83!]p;Y tN!br2x)YrRJ3u =mJH0xA^%v^&jMnZT^:UJ ^HJ^Jo bY96=g͜ XU.?FhzіWOX3/|AUD`J$okZ,zǵ@Dڂ܄W\~Ezy]?~{TDm Qc fhK- Q晵;]Ϙ`BW''b־q:?/1ө>RALIIzpS[z##ig>yeFj SsxX%yLW\>Gy H#=X{g_?E#?+<.=rhџlNkDcVIըM5Q,TǤiZ8k>btL` h =2LoI4}#]?LI?};q.$ t1-:y!d2,'ʋ/.>&cr%?ly=>ic҃w)E%hqqqqqqqqqqq~_ߓ7JG b3~.{Ӑ,-A:@āV@zqՁ#$DHT*H!mJq5&Bs*%DOCJ7BKBzކKOBJ$HFͯiށ/\>MLI::h8ei::>EZ<YKH-I FDi9d*N^~'Or|Gzjң֋~O/z|҆{㋐sR/d+lELvJ \i?Ӊ/)_{w =~)s=R?d/jVqH9d1d dm@fWh+𥉉j}6^xy'J <|މ- ByD@um;X$@&#N^K?%zod$dƲ :ߧ Mt7t廡ُ:' ᐈpDŏ~?]qh+d/v 6Oېkd,?>M:1/v{Q^W/B}J k_$Z.E2Xx3HJsDVa+i5JZt֒6ZIHi=q}J e$WJD2T˔YWSҨ~ 4_ۡ)j*i~X]@IIWjJZK賕DkoUzb+ie$z6hϔ.w+i iT_tU;irZ,e;irZ,e;irZ,e;irZ''ydRCܤxV9BeJj&924d%6z\\P 5]#T5x*ptyP̯ B=mFʋXVh9kqhE5>Y 'dxXG c+x 7/i䨽8jp%kn%\cl${iFn1%MWY'7 ";hm;pb&e|96bo^{2nj^sq| Zki0猜|<0]U[Tp qb5-0AsC'gikMZ'Y[z]ss7oޜlvWw=ƻQ*tջiwz9*:9+,nj[elokZ4j /xdC^j}.YZf.nwT>BL$̙KbekXO#Xi#QO`,Jb`Nj!]0Xu0!? D` Wk=] 7,"R'2`X7k;Xt`8NB^;Oq` K贃AyA?^]:-\5{W^:ѩNOt>}f?SzW{6yzgPȯ茇M].#4j 8|}}> 9*>`AF?Q>h e/OQ@)4"Ѩ2~W^V%iUx}hp *uҼJ@u*T$DLNgn<>f!>fih?Yw)%BeJ?k^\Q5WY]rzyb!ݰYNMAF7y*|Qa=_xs2Oyr;Ho!z~~S 65 ]yyZ j};K;j.tAW㒆juBڎ>mX P*n 5;RB?0\ΆUQvp8~9+8b,==rCX#/! ؀ؐYl&U" o`-5==C,+z=ȠPWaP`pp 3АD ~^ocZkyl`|s۠W@]!,jOAG :Ir(/M@j%Kkv?̾"_ϑȓ=5 1>xmCYn1*:5 .)<<@,gOwNb0t~?0 GLby}h z)D$ F 5X1__8+rk:zCXpO?ghg~GVRHkPF+(ڿEÍ|9~ځdQ4Ipe!h+3=`j &Duci>[d*N0!ec}.599 jbFJtp:bH>*#WZ&A0 bK=[&[F`c ŝUQgA@MFHRHdDuUvUvmDXKS7k '@(Cj膳BM"-l}ѻm8STU<\S[&`UW@[dIq}yd*9"W[&خ|Žh{ЬfלmmK/ik~Fփⶬ!HQ RYMTo=0kx*;:h*0} ;|F:vn3̚5LPdGaGcOiJ&dpE*Y ٩YdVf?ps?;|~$^i>B@~*\CĚvw#Hf7VyR\V.pw"I)IDh^.{b1IYIV,sbU6;qJNqGx2q|}\>\Lr*G|~.Oqy=L%g.rWqycƦt+۹ˇzm^"ls"2~0wrJ-nS$yAN7'|:eg{ݓGkx;?"Oޑy#FM#m#G]O{d>ٍa5{zd tx,hs L'TmCŸ'OQW yS}Ds UyFJl+M Zo;ް|iRxЛ+m4GƤCBƠ, !JMj9=̇,Yv);XdWKCt}gd@9Q2+(Ct0P?XcIMN/I~$G#>D+T:&UpJyI]dz8 =@\F\mq0=nX$k;zx$/ 5 &ߐ >%iJa ISM}q!N-զǃo~6̻/=` :о Nenssr8\_'{E<4?Pϕs;xk-IeL/5, VrbԱ4 *@I\e N^W/f)Pr e*+[*|[q݊gW]i[y?er·zUWZ{CnWU/^h y;m"7Unqw-mzyMmtkQ tw3͓qyzvyz<'G[jk[kͫ7?{Оо}W-)[m߲em[޲o7Eݴ{ozGGiGmގ:3:{;&nƭwl}k[Զ=TWBo/j2\wN[Qn \ds#gc?5(F"7O&>ܼ`䕁=`E>Z܇++ݖl̇}} ּr**[ t1_Z c|Ufu뼾bAg~k}hqk;t~>qrP# 1u黃k!/N $p*b d^&>=UQ{8y_"Daklzz=<$v5%^9*f-_w2]++U!e (1сGGV_1+e(a"ḃq~/QT4b4gsSb ׿qp$FFxYq Z\̶r$_228*y*lv퍈 G]r<0wJRJ򮖒w0b=$х5F. ["^2vhK1 !_2%hsI]h?~^ #鲧1P󷣻4+Ε~d>N::XI9vav1©)R}"?;73;7E?hBFYvf,d#pg%tv_b2n/jgS̲9S!/s.f+r Ė v"'4@>Zjn%VPtxeK+f~.Yyx?ã`!9G4/*KkHx n[Nj\O{RnxtI$ɴx!i$ҍ$}+ 5׉ uV5p}gPs7x\uЕ]ih ȾGž#vH/{xd|4},n7QM!4A#V2d2\ u`t qE= oJmo|{qxX"q)UXxx)'&q40қIx+IT= ^ :> ~>w8MSKWRAS{Ф22Y3R nJ5m`Fh`0lyjI $V ^Gⴕj& ?~ig_aC] \n%zB Q$gkO} hD!D!D[2 v :D:D[m1~FxbjQ+?@}H )wǤi:EYq) ӿ=пvZͅ=X´ZZ9QǾ M߇ hs<倎@o#^"i2z *JϠ寡/ځ@mw'ρfLjOkК~6cDyOFyatQ61U:Cn|;&~uoK/~Iҟ_࿁ρJocN<>$y*Τ4 2\EbA)7 "/+n[v1Q!r(*%"K6ФiZg2f2It{l}/~s>Ib*>'CT_1*VHb6olB/ Cb91F1bx=ts"¹іy<s|~>.VT}#V5ϾJ\q g{7{~ Pu_x%n,=o֧Y}:OoGſ˂ ' kgڙv& kgڙv& kgڙv& أ{b^{\s=ָ5.a}KXֵ^鱶%m[B>ߧUv_A>5]Xֿ/aKpjV4\z9my֮G}>?t_빮w[Jnpt6kjvnsK^8vtA#:r#ّwYY\>?>/g\v>J3\5W:||[Zߢ^p.wq9q%σcJ_]W}6 n ΰWl~'=f!;3;˂ScsJlflflflflT{ovo+pf™ g&pf™ g&pf™3y3g: lpf3g68 l<3K{9 }UxYy0Q[˿c1xq>dS |§q>Y|gq98_¯)AO4>Y|gq98_B_ p,F߯z܀F܄f܂vK wn,=<c G B<V)K4~g,x/ҿaU,kXQ1 xx3ʙ"9S$gJ2)}u`u`ī0*L ī0*L ī0*L hY<^KX+XV~wU,kX4TtbM0u`D=>Ry{4\y)tx~_?V,WR\)J1WҕF Jrʗ/{ JVR_uǼjtb u^oxIm&L\b2!ϳcWcWKeC(m}8Y-jqVCp(aTGG#/K wn,=~A<c GKp "-f6\c'GNxk%huu#WLh㴯|+2R\ \[PnBr -[(PnBr -[(PnBr -[(PnBr ~1R{98_—hCmXǨ[ār_"%؅.ni^6"%r_"%r_"v˽]ro{ki1nOVq]\jW.44qIl)4oBTPAod@$o䷙'=FUP] n@t݀8ę&4q3MiLg8ę&4q3MiLg8ę&4q3MiLg8ę&4q3Mi(0@ P`LSp:ȋ5Thǚ}e?[^}zzF^^j̦lj̦lj̦lj4RhF#5HFj4RhF#5HFj4RhF#5HFj4RhF#51111T2'=ex yt!ob"ڪꀭ:`^Zo6GM 7&t܄q:nBMz'h=A ZOz'h=A ZOz'h=AZӺ_YWZuAZT0 _.JlϏ~~G??Ϗ~~G??Ϗ~~G??O,R0K,R iݐ iݐ iݐ iݐ iݐ iݐ iݐ iݐRJq(šRJq(šRJq(šRJq(šRJq(šRJ]&$3Q.E% 1+Ǭr1+Ǭr1[[фB1+Ǭ=nodu|hޖ:hwoǾI߬^ov{;}'=8r9ʻyQ7y9|ӛչ#ʻRxTuUw^uUw^uUw9(|9(|9(|9(|9(|9(|9՗W}y՗W}y՗W}y՗W}yΌrf3(gF93ʙQΌrf3(gF93ʙQΌrf3(gF93Z2Nx{o\G$m/o-M }N.m,S(CAutVZbQI&隤kI&隤kI&隤kI&隤kI&隤kI&隤kRMT^MT^MT^MTt >HA}g螡{g螡{g螡{g螡{g螡{g)k\}v-UmъثrytUXvl{؎x}4?:=?>Szo^y[-xFþƉx]L91`X*yEc݂hs հ6{:~g8O5Fٺ|#5QghZ\w|Swƽ]%*-rg\4T<^ދ^QNu]{ kxMwpn D4X'8yҨUK#_'U£T@^R/TD4U7Pu9jfdYJf8N T,P0O-@ B LS0M-L[(K^ R0M-B^ RpS@+P@ *P*O,R*K,R*K,6L*R*P@iJTAg2닮Tg2B=7FTuGgJOD .0E&[T{U埭Z㟌]8T|i|n]Թ{OIwݶ\=ct:E":kJQLgoAq kWHBr^sq~NF;YNYTTY94Tѐ* UQƽ*ʨȨUDBՐW yՐW c*aL%P1Xcynabo}bW1Uџ ,pMs\?UwG9I!]rXngLu3/;/v`wz)}s8%Sb+lun>)1W\Ʋa5qkjܚnxGh)OBќ)3\;Cϥ( Q}ةQa^ݏ=ͧ|Jw)jovjowyn}yKgX7f[0XDOW {}8.vp`Kqs{=x(ZbEn+W0u5u5u:]W7ϏO>&^{A)y]5%{s忙)b-31e;^~eܿ7~ߣM[͐uѪxЋfتy# nP-/11(Ƣk̤u&vN޹_w=Fz b(ͭ 6YyUxCtw|WݑNSsT:ǚt|~>?!84:G%0#gŏ(}lTY͵\[̵Ū9 ^8%jd4_W̉Ӣu_f(>'@̍֔~#W]tȍ:dUr*Z\]wV{݁ w>:xGh{"z*R%xfYVX./xRRbRWSokS[u\ uMF'\-:opFmMuݾhΝelѽst9u[`] nN֩ú,`]#({Eہ 5WL]G+-^?x2ĔxThl"$xGߪڧum6Աc 5].\Yum:EEܦK:tUi_ i^-B+֪سQJ_Mr+ע58(mV6WH+̩;K+6f^^3wr{,Xd,vQ^^+ תǽ(jYVY#4y}M^a\?ZVQS܆ۣrS}yypƽ^߇]A}ckH/Rtzk=U)kJZMM^"uH-6MmS[)RWնvpmjjncX>Rc[pUbUbzZxyJ%|i^+KյT]&^07Sˤ^G.vByB7כL5Ô1e{&k]&kj5[*sD\I<Λ+M&Jp ySoҤ[i2zLSl)j`LLLLөt1zLVөtj52zLSTj5zLUzt,Lu\Ptll6-֙ɰdXg2ZNZSa Sk9VT_W:~_WVު{t{nG|._u|vƥ=Dp. uTZܢk P.ꂐ-hrUU@/E*Uyi@/PZB%yVKhUNU+鳐> 鳐>9=}{|GYq;̲ߘL fC&nGP_,i]vfGlkGnIQ&[L:eѩ: -Ntʤ(,: : : _oz~Xԩӥo9Ӫ9eoٟNjL$F:ѮD{rF>˚fٹfvf㰹8lnsrݬ/_)^VK} w\k#F&Cǐ{,o,g} pk,*[9~[ xY{ 74s|/8'~ >8ȝJu]/ƒ2Lawvr;.46ͯ4~^{=``x}'^Ը}\>.o}i[JAp鿧Nۋzٞ+oϕsXyl9y}N'Tw˿0<͝ϋܭ-8ԧ['Mb/_~eOT48 ia}4aX7Ѱfha haF̛h8.M40CCܙGQ3AGPJdd]W\kq9"rh85躢KPx4GFepLDVWY]?g ghĨmd62j#wȈb4RFH1)F#HBQH1 )F!%r[ƭ\p4Nvd\8 q/bkkз{𸎭\V< 3bC$n{b(a0F@+6Cz8pֺh+h p\8ï,gCG@g [\ \+\ep9'80ˍw`,w>C\='Y0>+kU5H==/R_ύdHCh d&=1RI[OY_ϳ@[tJ/tR/[Akhp&=\'i06K(Mho]*=1u#D~uɀ!@Nw9igNG׷} l_}4J]zAg5,h1NS+\ep9\J 렏̝̝}L`Pټټټټ@==5Vʇ 0&dx+F7 fڋ")_6  , V\hZ`1̎V{gĶ F |f|f|f|fc̜,zA ;TIS["[/Ÿ%>c`%հJX I( #^0wއ8QB(!N'J%j.U`;J3С }SQNWZomֺ:Yp LOK~σAp a(ٌٌ֛~/] 8،8JYk6dsMB`ݕ 682 q9Q.d2 3g1g1g1gE}hhhh,\Q 庀;Z-qGpGpGpGpGj>w5]x mmlυt]`vnWdޡ6A0mǢdW\-d)%ˮ9\ͼ"Zˊv;DB5}0 0FMMslg35Ęё>RH|9U@3hG[mgĔV^ׅďBG!QH($~"~̲KP`.[R]2VJ+`y׷ 5e5D/ s"VN+g +gSc(?VP~_o}wnw]r]p;X7.eݸun' &Dz$LP`:̀f 0>, 0Gdg< d 0Fƒ< `4< 1`"L'a Lah;UdgFEL2DJVAyOrf Yh %OLB8dB}mȂC+@AR( EkFkH(4J H(4J H(4Q2(GwW{^}Fԡ Ѵ Ѵ Ѵ Ѵ %DShM]K4u.% ny[Aޭ Vw+Ȼ nyیی}Oɿ>'_}Oɿ>zzzHJv]|أ_%/"/"/"/"/"""""B'I4}MD'I4}MD'I4}MD'I4}MD'I4}MD'I4}MD'I4}MD'I4}MD'I4}MD'I4}M4F7)푉<2G&D#yd"L䑉<2G&D#yd"L䑉<2G&D#yd"L䑉:GgL3}tљ>:GgL_ӕ 8k<<̜Gf̓I_%I_%p i\B %Y8N!E&#ES>ѻTZL"AO(R8"Hd"HYQxhƾo Z\F eex;gf !H_PJY/>jeje}o^z5e;.: Pw>G(!|1ʏlz\>~GBf %4 %-|>[(I(I(I(If@WQMF&F\~'I~'I~'I~'I~Duy.塺 "z%kEtUmh@;8]Ё*:z,z,z}WxÛ@-n}#^ u^>Xv{k `.3!hW=:ܭLga~.b_sZRTril`{\ f[Lg x Хcز(9:J~vo;? X.ew' &DdxT(i0fSP3ixFw̆ye\p \ \kpta0FHxaGQca<qxaL$LP`:гcqQ=;Ӆ =[(+D\K.[O*?a0FAb! >?g}>?g}>?g}>?g}>?g}<xOxJTO)“!>!xTڧ}j4IC {h`}ѿ>G_}ѿ>G_}j%zQ'tС>7}fe4KИsјsє)4e*6\FH]; 'C>M<:S3bq,RєH#eDWƺk׈ e+bs[.ڢawٹ^DEaplך}AIa\!\\ WW\[\\ >uUџV93ɇvO2d"eiq\&ͥ!T'O4Q&2y9Y$8^û ~ -T]sR}wkD+=@\Ȁ!guԴV<`0a0FHųsx\ѷzwd̫lq(Z0Z=E&gd<[+Z0l)N ;h (lobG+4r%p8։g >̦ٔd6%}JD9Q %>/lq0[w=BMR^>:EUx*V6ߪ{}sm\Al)-Г[V7*YarZ ]Ƕ߻;H=TNw Lu<3E)y/W4+-㾕\+u5wc?GVIjҷAܗ2,um >ϧ>O|+7.n[a(a0FPs&!Fe=>81 b9 K2zVε!Og[u9ف9AuIhfl6RO\ĶN-ZmBk ;!Sw93^U3PDՕʮ+M}J} %׼ ]x.\Jy>*TWڿfNUsajF>\]#,dM'Ims=y8 AsNT1mמ9&{m"ger?cvA\wI kFoLY"ʨJE#-|>=d͚2j -k9vxiuk-/wPXDRYBO' e~z};_xܙGȏTYQ pUS8syZU'pd^7kɱVTXȶE0*wx՘2Mã~XWOInzn/,qr>Q~E8Z149/AJ̡ 'D'9eZ%[F&kpMM%8;M+fkαڳ#}p9{gxM)ecm.5 Gd7g_ d6WA 9HVkeƅ}^Gdz/2'Dʜe¾P%eZǵȪO#~dҏD8'>UӇ,ܕp"ug^=c^'9W4/X'ϝՌUzQS45d8O8;&o 4 藙/܉9}LxE;ohjf5-GC5Kj5ˈ>g˚jZ=YMllK4RDv*ZvʨYFd:[kjOH&53" UӚ z՜QQr(wNIp2Q9ZP%Z1k8B|вPgrsPQ{'D'иI7f >wZ#j~:^QݰԷ4ȻW388W>_!D;q#{C#nExI)-{@EH ƱƱbcKK{qf0&o Atqxc&'}g%$chfagYfGyyټм8׼jg^j^j\`v32~o^kv7.2{=%fR66r9и¼l\k1=qF?sY`eN7gC9__wuF4ˍ"sxe6{[AXfj))e@&d}c̒YZH65ɓ粹lad+(%etyY^eeG.;֨-\UisQčH,3DEꛥȧȆ&3)eHYfn6+"{"{Ⱦ~sg`䠹;R67VcVYmճIiշJe5rcd)֯_˓V̺ܺFn֣&k5^&Xm$kݚjMwXӬ5˚%ﶞXs^̳^ޔí9zzOVX8Z+'Y뭤b}f}& /roO6m>Qη[{vG\kg'?gwۗɍv7l_m_-vFվ#}n=DP{CJُeOjdϴg3=G58{BW{T{{/AZRi휢nvNsNW:vltVuss۹ʹF\\;7;;0g3Tt;Ճ΃!g3Nv;1gLv&ǜPw^p^T"H=,p)k5SӜ5=J0S3*TaԎjf/t466Tl|qjN4'W= nozQ}_~n?Ww;Pޥ^wPw;c-w*w׺TEuf4U3eLdLΘy<%+3DXȊةG>ueٱ{byV<686Īj5 =beDElrl2Ve={jo:r577b bo޲+Xގou}[c]$#.z>mzžľbb͸i=Wqz(ǭzFָxxkbi8kR<'ܚooiGGZ3?a=z1>5^`ggX/Z Og[/ǟ`iffZ2g6<6xŒ>LF _荢-J?zZ|W!Qߢ논* 4?+[icY?( FdO_>I CA׼lђ#5l=G[7mCn՘:g5JuZ GRıXuG!Ozˑ] Ux5^BΫ?z.NZD0j98Y1[63zfpz\cx߽:r>w*Rw*O^Q7wQ{,|[~#Gk)wqx^z;?Օ=w1f[Ui-=ߩo{5u?Z䎕^+p{ݛSDYv~*'_zKp̮ ?8OF O]aD+bV ĿUsۭ;wivp:d[k>H,gG\eﺣ?}myϕv?zvEsK{r,j: Ω9h\~ԳU8qRq9)%OG=;yKO&ds/,ヷvsx$pbYejZܰxkQebT-zccˍWgV?Gu`}IQ#68k@).D?S:qRq)y\Jˡ#)ytatnDc4ct+%o0RkH#5Gj5)0F]bm1fľvYG;k/յYA[Y:~BGhu -S3~:PJU8 G`#X,p8Bpv=Br)4!M II (bLYG2r}D'(|!] %_xMn__r;%r;)I-WE(OC)EP<2GQl=&SV7b1E0%2%1%30EjZ4Iv ba0q8`ߵZ6VXnFFh/#2ƉtlnM1z?oozz9WXKRJA: Y@xxWM͊bu!q] Lg,3˒Vo(,ӭ`ZףBjbb)@\V>@k Jf{u;B4-"hìaȹ f0Y==h#Q^!DbYw ,F4-oG Qf1Em5t81.M!\à ֳֳ(NgK C:-ͲZZ mp-qZZ"ZZ2Z Zj)tB@1Q,l G!s`GGݥR뾗lF"9)q);I/ ьȟ( qgB) xa""H_!E'ɓ2 #=5=5 0"Q-(efaF<6H qg9[[|Q3-˝{++F‹m;eo 1odžquX|?+u?ޖbqrBжvC_O"e] l `)#Ϸg\TRU + |V~3,߷?a-_>36tOSx}h-rV_K ^ +|?Wj cl S9Ⱥ!.(9{^e+xYyJϿk(n{90>q(ޑ -W8ӛ He΃X̹O8Ü>Ug3Ma7nWa3ε$1 W /93s;WNjk-v0j~0 /uWQ π𨩼M}Nqt*7}s!=9;u?gYNw֝(_('Q?;>`B?~<ڸǙq&8ߊhtxh3^$$s^8/_ Zs> {y5"O*^~euQHzٞٺx P;Qn| G8ǜל,\CVgTs4b3M]ru}|_=W*c]vxt7龰m|8g_~sn+zKs_!g`'_">לk-Ucw w=h 1=f}a|U;P'~cɗiӟ;ߥ 0<,{ỳB~v}lr^9_3\ht[.\ip+gs}9r]GV*~Zh.==.KJU*9*Z~eQq:u菹 G,Bk>3]|8稥Fp ]1zV8y&ס%H{|Zӊ(SŻ=ҟO'[ uآyhΒ٨7;sKBߡNSe-&O7W-yKf+mRg:?x}7PHU9ߝ66R𮆚K-M9s68;mF5ՇYwVH'yƙwO37;ؙ]|~"$xj8ZD+ߌ;6j&s^`gk74y=-Bo!=~ox,wTDTTSw;B;c3UgB)sX|mxy |P9 Y<}a{wdxTW8c_o]6}N,Rug?.3Kxiξ8sz'\>ro!7xyyVPg{k"{)"!|7;]۝[ཀྵ7Ù|VSn9F_=giA0>-w z&LR=eaeOp\z)DS ^KÏ U]ć=/w x_y m'>=AgjM績)Ew_Hw ʚB#XSh,k iD_QVzLKGS4h7-UB)%ZVJd6Zi ZQtϔ}.$XIq})&Gh%fVO߈E5V.^R}/>_bſX+Nt{q DzY dPFoyX (bX (U~Z>@ջZѪ+52>v1Fv`hU*=ZRц+ͧTzңR*=_h?Ǵ2R&+emRўVA+=}ѧ)=}g)=9/\epw?Tz8 Vz8zoPz8kUZ(5}Rw)5{fPj6(e?Fɨ(xT\T(:ueDS2IhDCꚄdMzȯ?P)-5qkGqMtntn_40=ƭ!+~_{F#(_T@D$ͣEQ2 ֐io5ĸg'VdKn` mZQZ9jc@CMd lsF挰aa_?8 8>u>>˴ rF^̈́k2F1 (8M3k_ZbCbxj@:u/"/}\q.r*p_ΗW]1&ct0ZRRcnH]HL=Q6|65j7m7B-`75Q؍ZYzl(#Ggׅ߳uwt~r\'k2]J]өi3TEJrwJ@רkV@m5cP;#ֈJ@-p%tssXg#XO.c2p9Mll&lcՕ"Օev;)e\?%c|}5Xc+ #%Ctq8^1'???j8FYh)(MeiEqӦH3tnj4#I7))܌2P*Ƶ*ujl|uŘfM\ˬu:ifZkEt3 Qوob6!lJlf6G-lZP&@fkr"uyۚY(mfvf'2(Nyy%ۼ߫y=ڿ|e9nlsYHL9 {NͻMy9LCoK.~3vJRPf1y/gއqmumf6?LI$jД+ljNdq$5pg3`1JYqG s͹LLs9u_2P'?Bel]d.Bא\oKQ-ml}|2ԵJs%͏QSYmFO֚kѫu:n7SksP~}e~;hg5E(s<#p<1S|?ʊVVO)VDVJVmjрZ Fjl5ˬVS4ZVK%ZheB +eZ[5D~d[(jV{EC)B-kkkkkkkkdZ(EXX |jX %)ւ`-Z2k`-Pvvܥ<.B0A> J)KeAOfP!!jeO'8 )6F=~ssMP\)C)jSQb<Bxp} xj@-#ET˕ QGԈ?5"Q+(ݗLGq3!=y9 թO|V'??,oT_K-%sd\Kud#]Pvy;!@!roTW)^)zF5F9`f%vM5_,e(ww#3^N@`o$9 (LSr*y\>I$O?%Btl}Z>M 9*G fQc(gϑsPf/ɗ`RP.֗+\Lr rސo LL.ry_~@C\!W`/OZAh\^n@ lR~v6_Q+˯V+I52˨1TsG s,5Z="a$jyuTL9`D1QSLb`LDMve&*gkF1KW02S9esj)S&z`FHEz`ꁛU V=0X`ɪHV=0XtgՃV=UzլzГUq#8=m -(9np`֮|b/iR׻`k#)K+\v,eW\Rp),vu}UU-V_cډkg]_[k43W+~!0?Q5u5Qź qn/qN5qS6/X F[l= c0Wb5b ?sZ5&pٯWJ14CUZ85Y"M|'Wb8_iCqJ!8!:uMZDn|Q5#H=9͘1bܚs/|śu1on7o#nMЗo`͘IہI7;Ѿb͘C_skCay2xpXʉ̕S+q-W\y9ew}B1wS0XBE +Yd}%sjѝt[3f\9fln@՘_Ə'wel1̀i[}-q2xm2sٮb-fb6֓+H3D6fT+ 7ZA`zes՘&2Mfl7ǃ>h>H522'eut2|2e 3ls9:_G┽Mf┙){S.F,SYafmg.G (e 36,Yv6טkЂ_f2f~ٞeM&lU̲S1!G16,2m0OPs,IllUǪGSvfNysN ;0dgf)eeAvahuDJoEފz+V$aQ=Xo`cޕ+UWJ dՕ$V]IbUW V]1XuEJLdUW$$+UW0UW$ê+IbdՕ0UW$dUW0UWܬ"Yu`Օa+HV]1XuE+HV]1XutgՕV]UWzլғUWXu`Օ҃UWzĪ+bX0zԁ}G݀RnBmv3ovϴ3ԅn bvv:ٝ`W^e_zF^v/ d77"_;=ɷQ>M"Έc/.F ww]]ɾ۾9l?ℶU&GY{pe?f8N!~~93ػ:sp=T̐mh2/ `U>hD *~hkQ{zsЁ㇬;¦LF#="b#bQ^E9QDĈDI(X G)#jSGD})#h 7Q"xww tvCCa ^v{R؉b(V؉c8V؉b(@\c9Fd]#ZjykH&Frq,фcF6%*GM9"0r8rTPW9l^ 8NhqB# F-4ɇP^ Mcr2NAqhM 8NB]g33LX!|BKDO-8BhBG!WT.Pu:U\.EL.˰u9"ؠ\)?O*!CkQRF &BMZ-r V'4Hp-+(yJG)ujRgg0CDTJ0AZDY'I C n}H $)*H>7 RuknQHHw _y*ע,I+}y4iR45OY4i"Hʮ!G ](o*tYHs - 3KEReW!Ci TڎiYw=H w!b=?)5N;,08Ԛ?Wno ;RϓkA)l=ְ`$oZm;x嗄);:< &ՏSsZ4!{F;LQ'M ayH ]9Yr7W+ڰۼQ aykSihN9 y7mJ?P[K)gMS0?>kNk{oԛ?^*5sn*?)g@`Լaݼ#SU~̹럞{_i\Yy7xdzv*lt|,;s` `y,^.--(ɻN2e9%c&yWN^0q,ΟlNYҜ͛.nK[섂'+a[*z]=Ri?(mU.тUy[UgE1{U9]r(ߘw\/*gF<#E-/w(삅4 +}wQsؘLĢ,ԢNiE ۰`aiߜy{r,o^ԧ)6~9 ,+X?U4~9 V\݋g+ge{{d{v`Lw}v/v/9VV9 +HїטZ9_/ƿ ւ|v9? W uHU_Yp0h_.loloh/_s͇aFs div qYɰ|`{>j0o}[s)@֐|rBl'0.}[}o5+LM.3dJ}7lMCְP6Ö톝囇(r  ]bpkrDUXS;qa! $T*|_n6{TGᗯ66!JmZ//ɀ]YvuIu%`,䚀W-?ۮK`xn«%CvPi=X?Pc G¾!GKQ@Y~fɰJ+KFr{)*a[VT4v@[\hF`U?hvܾr <_R4XU[K-Z-Z;pREٮ<͟Qvv:yE_.,꟤j-[\8&0;qNeE{a]Yt40;wDlSх ,6Jqo-8voqc_8tt9ZܦtLɁY%8w\pZ鸁qWN,|6p`rq/Z}rJGܚ;isqd_:y`Aӂ~VlS2P[mkz&< ۀgh!o"8 3aisf}Z62ZMyrGEZmsLTxBZ&OHq`m ˶ cgہ1`ۃgNIwWg5#'5=ic=} |Bߓ'7v5vs [@49mv&5bx,I /hqqoq W<"7\bFO'Wf>7qPf 0oYĚYoySvsom2wn2*#~%ƛcTWY-4)"- i%{<{+pDRfW{+KJ1[pU9Tybm*]E}EzJ_x %Ob`Rƍʅ޺x"xjY咷.IKUz2k^.Uƛ+uǕp\lVJrVsg6`ryάlrʽ:Yy*0A{(X% dXEGɺKnW]vz:9 uٺ8¬8靯(.y][p(bu*[ܻEp.}|Vcn;:,vO[#8l1jM{{í3pۚmA5̷IK0Dŭ-` ZL`뎮yK0#Z[9jْh^u y8FAg}k#Ao-- q5`9h޶[[N;w-g3Վ}ű%K-c]kqUk,c2hq;v>^UKjhfR#<-=jt븥Ok[oXԔ֛!5:ޖa5u25^T ZB˄Zz2޵̨%9T="n ^,۶>ֲրʴ>lYgܲw~6M~KmPOW{?mhu/&Du 0E y :],usy_}L]%ЅʁE*S{.ӧ-_2]nҠgv}t;J8Zq&y.%Th#ux ߙphJ燚RpSFm9є᧚&:皊=bSi@Si:jSU@?ך9&97?n MBtӅ`pjnkJ)K+Ut0*FxSx`LHo YM7R2pi!0\gq#M nzv'I(jڀuev=OP twTChY% n+`{*&wT`ښd ;!0+nyAqcQAwgBmQWKB \ U}2.+6]a}:^clؒ׹> /\qZXq['lfr 5CCPsfjckQmLۖb#ܥTKhKgmG۲3954X1UZZ1Ƭe2vF <70v`mEiN42^i h'jZY\NEl\Ҫ/j6m~fkin;mi[73u2׵~6ڮ0 @mc-mm {d66lh+=m l`66< cR:ݶR-#r:PӶ"mmf,kQN[ .MvEl+f1QW?AϣYTjא}U#BD~W&g*/*z"EQT/R/Qg)JXOeRu꥾G}o/o0쇔jTi0~j4c|k}R>q:g343?GC`\4q7TR7 n6j G^_٧LGLiԒuLM5So*P4}Td0MoL* ѦMfCbRL 9ygM]>L7]6 a?a7M ett`Z5M6m~)CwiǴo džh~K6<=3/p{xa+: {.a/RÒ'넥crXnJzر߄Kؗ"#3*07xB/CDh:J‰C88%Έs⢸,E|]8)cR.eI91_(!5qS/{vGGAap#~` ?4~ ?5!;BM_~"ȻL~iXBd/hW_hC~_aTuP,}8,!,%/eeW{Maa(j/TGٳQhKz#b!fbx\,Kr `h9QUF+yxQ$^qxC).] =JHLxKhW  92tV~L,/$MrCG2#Ke@Q"P"˓莴G}3OڑdO=X ^O@P> AA YTD*XΒ7>3 Cv % a 2.+?$.ARO@^C$ о w~ -Bd5H6F>A>MpKE'l_ * dUy55EbXSKSoRT UJtߠxGeDIkR)r~t9wNmBo jRSϑY1?Ps%@|DfD&99S9옳GG#%092*猨x"j#jQ:!FMMM<УZ%$B)pR(N gj" 6PMp >Cz>a@QaBf9aQXk¦p_DH-Ɖb.f91PX!bȈb-qdLYq^\W@-q_#5GXpoFWc -~! _ ,#,<<w*=bڟWR&S滕>W>߯ yj.V~POye+(?L')S2j>?̈g2q~Z-?,WEԦcM-j9W5H~UG{*RǺr薲o+{b_P10;"!G*+.'D:G8 !ɑ.N'd; |GVE}pQqJ(uT)_җrGQ۠pQC5;Di[ңW5s(ПVۈkCPS5}>~^Gpt? 'c%c]z1&\sLKqQqF5  {*\TN\TeRcc=[-QqMmn;cPMqO=/l8I{Rɠ^ RzQV/=QP5>RzYJTHRk3])MjƿKc$1AM}&^'l 8)GA1v'kh\B}T.mz6[rl ~#K̓9-}~}>>Rz[:ޕ* R'ը!>O |$:%4I3J8c%3At&K4l3KLygiЙ']qH#.M}!9Ob)M:pҴ4<+;%EZqҪ&;5#>ᖚ-m;؏IB,N_#r}lzSB F9#'9T80vx 琜srs;>;_c\ bIC)?ʥ?jHr>C}o|W>#C~2 (W9Rb?T¼9,;ȱ\˄`?dpk睛|ѹ|ɹy˚AE״h2/B.b[*kq6~kn=5u`)T Z n!StFǐ|Ⲥ\&X^AC~NÆh5)D|,YRRHe؆to@ܡ$4dlܐCⴃ@Ik8d6bm(¶Nk P)h8QDCrR)kvX9(gDT]K~3 F!uԁ)|^wvbPlP 0ak];F1/pg:97 N|B?H,s!}: h)olc/sc,V]\&'s>A;E>4pA \)y}#2 *݅пoPgeVeY/`ϳ؋%2{;ΖJ:{-?{e7*&{!8S:~+KXYsP(e\P*f*Ƹw+Nsgj87cτJtp]\Va(7Jڇ[Kkp p+*y7`n| y%yHEG KI$ЗI6 Ɇl$ɆlGI6u Џlh&Ɇ~dC`͡l4) !OlgH64}| ɉ~DHNT2HNK$'ZLr_&9ѓ$'-!9ѯh)D52jA_'9rɉ~dC+`} tDMro[wP5[y5qO 7A OCG\eP$2)L:c "9T0D^d0c$32BaQրtb1|xĒc`^`s=+&•p`ʗC8g ,pY(' Ll.|<\>aġHO -·ax_&Drod2)T dtSɸFF4zF%#:2(F4d?Nu(fQߑ9OR?QDEE<<]0^&@W5tgPt%s <-EZ0h֙p)a{CŒCw s#2fgo aE饐H3ʁ>-j=("Eo1p);Fc6z12!31O Nd %&>(ŠH;L$m2IX,]LjH]&#$PclSr = &Oܣ㇂3OЇL)rE󬉍3ڱlSna3p/6?1(XIQ=xڲdFei [ZwEgm 9ú1?Xs O[v=E=>FeT@cPqqD;;EW39{]n~>a8Esq\"¥sYteq\W*Jhj,s 'r sEy8?ԅg-y"Rx"ֹn+A{\Q%7Nr,7-q+d.AVurV#V,Hk5pdMǬx6Z3@|qkӳ3~>O3%(' el9{?W3弅yƻXywAʹ$~Q~g9f-Lw2~6~'*S7c q+r خ*qANu9ORȅ\sy2# t|ɐ+J+a(AJf>B)(?"X*l%!RDoɊKց8^%r mA<"+%Ob (O˳py[^"vuܘL,Zuluܒ]y;خ }[b'"h!,Ԑ($Z+!$F! VP %)Bd5WDAnx BK{~aP"cB0)L ¼$HX]maW\)W=)CJz WȞZr!3?ܛS%U#sxoĮ9OO $>F]:ld_`GUۘayso!11R5`n,v$:vvL6M}WV ɮx@dYC, 7+߬lZze7W- }|6Dґ\MǀUUtH* 1DE CV4h?{gdU{ϩsnxlFD[UPe}Q( "(.(_.ӂ"! nȠ`,_^t&yN_[˙py#b2TRKeμQμr*B*\ǘaPx|xzyxYAU,ͷ?H> 5J>1[/jPGKWϼPޯ)|&zd6z@NBNp,4$ /s *l?H/mJVϕ;kZFKɚ3!#ٮߧdPe:K @'!O^X1q|6j$zt]钓6f\>1Q(1h2Nsu>WyqS}1Zl@C~M=& % Rw3Oo(q'BSNBz>^QoˣuǓ1z\lҧc5|n]Gז r>YpB^|.zUh;_zlr=KG{B2[yv1٫bWɼĤmLĴ j!Xk7&I<[13xJ['cZfqV[ֆ>I-M~jNcI0OjKƘSrv1}LxL]41I}II{أd[˽pr=~h2&?=%beAJŤ燂Oͯfד+_o`]]A]ZԹk$_X ~[W|\wuGhY_;wb/[y<&GVSg`]KN$/1ϗ˗9 Ɂ~dWsS?ۓ7? &e_oh9>3Zt x !w֟9֬x=GIϔq9ůc˹->.rT?.絸rOOHSq9_\$Ŷ 556 $g6[;}9C oπtڜ0'U}$Q)G&dLȹ!1GtNYDOrL~/eK;&5yMȞxK̵sPR;0Yo&Rk^u;[O]}65dQqʫһ2kVoTPPP#B u(9\(.T(tPB $4ZVIBw '4ShУ=)beB zGhCfmB;}) C #TgӅj[}8[PVB}v*'_%4@h0Bc&M*CBs*Z( Bk m"=U~)v='tw/$B 5-LOBgĜ-iW _۩[wb!>oZ71=1+QJO,J,IXx+>)ؑ*mġ̐h23Y+Y7ll15JzJ H J mRcSRSSSJM=*M-^HH֦AS[]2Tj_sPOj"b jY-?ӬM}(t+ɞuҿ Bq"q2q!_\_\_\/._\ZȊ֍6mj- ])zs{t\t|(=N. ]]]5&;4ŞʒйPJ=]du?nl?Jϖ-;[snv@_em󒀺3;f]:7ODDDN,&qADD,QODDqbH(KLn V]KKdN/mcÍhhא,#mT^/pmtp CuΎN-]]j})RPa_A+·o)z$›> sӪ`Z k)W^R>d+z\m{rL@>z7wCSg IL=<뉷m{.:,o-wbti|saO!Nȇß :MJz9^.o۠_, | l$`KmR[o0GGLZB&,υ.eC#' 6[2_-M3ě*,x';#k.{HpjѪRtǣY]p`=w(>YA.|+0_S߼)Xۼ.4c\FP.,,(I.LZe2/%Y;Ao\⩬57y܏f '7~ԜQ5^g/h)xLAՑZ.)N(v{)$t0ڲ̴?JJz>|fC`h5(udzǣS/bEyNQڣ>C2UMjO[*A/#&Cd8M#\5`Gk*_VDNEH7H9Yk"R/^ @gS*77oX: 56Վ3NTEVh)c,g7$okP?"'(g|]Ki; 8GqE~pc.Ey1@)oԐ֬YN٩?F}J$e4[;O>TΦe. f~x?Ȉ2ajlbՙ^BM,i+'t. }yrtzbYHKuF8F0lzch:vFQtghNJ]k7ʛ#s7,gQ~ *ij=K=PG]q}bܼ!Hw-q/mPѝeXmA3ǭ.X;>ښI߁=Y3y՚o<NBcm=|?䫼T6RpVrw[pkjUn ޝ\" &hϺI4[IV< V{STMECA ]0U-W"g"P V{ԙ$JqNc3Mf8v SBbh5j`/<߉W}}aю}|*ɍωNUNzY݊H6Y6O SqnEPmVUGVrA2LWSGk ՈuJE2? ۭ?SG[b8:w&o>qJRQ*"JETQRu釾 _8U葽^feü,A̬H6ڜ%*}9F^4|=Y|h,|hN.O!;ѕ{zwwDakvZ5ʻπ# 8G5/h΢mwE0 Z]۰p1Ux,St,KtλVow+`KESWl~=NKM-t浪| ?𴦢 ] vsUYsNsJorvTgEr27ag8AOO+/Y=8- xGQOn4,~[?`;fpE Zx͇iuH%Nރr"] 7s|JαsAT)'X>fFÏ܀Dxӛra\w`|u PD%>O14>^;#j>75:RN4zrfg .VaQ-.1OATvɷW9Oʝq^ـ{zLO\,ׄ_fֵ1\c5x{ ^S+sޝiXsvS eDӹAO$[Ҙ^Fܡ}lh~SB{ڢg;K2YS7%3bQ#\GƨoWH3^XۡwabHW7]ݥ{UT Ud.o,=y߁^:b O &Qq<}Ք O+(77#Z"oW]w>nޖ5u2Ǯb$>͌f.z(9hWYKSP׳_Kyl fқYWSP>k؆0~mW!z7,T}Pkyk|%!F1ۨϩ_pam4'/9ǰIEu]\dG7/~O-WZbMV֠ޏ^Ljۨy_c6T[d49s#[b1bVd奭E}ژg,`Zj/ʍ\ClPt{ޘFXwt q(3[zO7{t ݹC+?H}ʨ +;;wxOiE2;tG8:"x ;Tgr9h gGNtݻ;Bnpt2$[w>hT&grx3Uw=_yȖ/"R.mw6 NƟ%f_d\w@@ۨY~W=ÏNm-'|Z>MO&~z7K+~>D,8]%IRى')ύc1{_z?n):yZMA>Mz7 k1W{B[yDff߈55@\{|y}yCf 0I#am-?B\y~5fU?% 'aIp,hcuαˉk>>Ww%w%ћjv$bk fϝXJK6> V{T>ݜw9oo`.XT YxHNGR w w̹`/pwyqwL֚rGsޢ'^Smkn`.XTOwrJ"٘1>v\/|MC`.X@yW-/o *;@B,whH=OQD6H/oϦlvn^uEeӧy8-zv烃UuF= ܧ(iݝK;h6bHX >i ik"<:9 }s/F#׳Dx<ѻPOD}FtTrvYJ3N3^Doo'HzvD3fUlƈ8t+8 ?ٿB%~f(`MSyk,ݿ^[t<]l"IHbS߾hyDv{ `#ONo#O ]#-!mZ) O7#rg}]p8I1\U1F )KE`=˧}D2 CLtW#)cH2k$XFREn}?Ngy}Fi * Dzb73 I\Wީn~9|,u-kcA";.,Ft];i}AHdlV>(H2xY&|oHW~<]N؆#(Dp󱿟hDsY?4I^(|[bԧ. }XTI[[{që!X؞o#?#@Y=ʼn2爏\|Ķ习E'cUc(UB=t;c}-QNL/G>* B~*XYx0X:_=YVHp3U#=װ_K۬u2x2y31C~h H4S[~u@+ޞYȫ |sz(ކ 5q9ñJ'wۂXsPO3ќ:~di}Xdx|#؛tv[7Opp k r@yбp]$! d]'SiA^BbQS섷vuО7ڛo^Bĺ {DU;;8u)?c9)v2GY]4>v֬<Ir"t>R+ߕj#<D|*RC{AS8o+T ]AkQ:@m oFy[pDwfҶ98?wMe{9_(|wv4OWsX{WhM@[y{.ZkB-OU+s UYg$ 7fhbx )z+61Vؙ֒ǻ9:~m_Eg3Ï@SnUF<ݬe3,utلGXBWߦ*:z C>Fx(7JBk\9(:TZ^Wڞn-prkwKk2}UDgXmt]8IpUO]Ew<J;9\QGN* Dg=\V`!:_Sl휦3o)^ щ9ӵ7QE7 E;C:Uzj'/GZ֓)#ᯄT 7]Ífx(c 0cӰNqڨyA,wm0'7 FC?`m& ŸCs0 W_^pOV'ⰖͿ˰ 83V_eH g@֬E|5jO-}ŧ} ky#P? .v@w;<{yiw"EytmT'TEs`:Me]x;f§ȉC %/Ct/Y|9QfUǎ/O5vhk p=hV[ ~w|cO1v_#+SૃVK{*f8v #<›sA[_|v( hΟ b9ꚁ޳bElM{9ԼF[j{z i' ^URt "++:g~.<\򥊑)x7D2 _^uCL[H a5m E|&+ | D} \ 6m+ vppq<@ȱo.Ƃ{v0txk#1ֳs~z1Om.}f A;|I_\ ^d7|T1 sh;kDHg$;ׇ+<^d1<_(l& Ъ&4 ms*0yE e=W d9dx_gCp+pby$h.?c1}P|}Vn/SO/>UdxFDB1hD!O9t恶܉֥AڵQRCg|4uХȉC5%/CJq/Y|!QfUǎ/ԧ.;_5_Yd뀭6zߨd{ |uU`m$u\h;\u( 2hS b3ʖ?޳bDlUy9yj^-)~w%۫ﻻFz2Aɛ4G%Ηȧ)oN_W4M0Ro/ajo̙}g&}cQmC_c[iV|+ym:#*% };IҪ3oګ$|wejx:쩘vDв#fp)nߛoBs4rx6W֐lO ѶӪ>g1@=W<|:<;~uu6oV$k߬蛐ԄwhfW)J)???/Fgm{kg}:~M5_~R}<4Rx/^fdOSYn!D>"OI/X!vt>ba{"S<߂o'$:~4,B޴f،Uz~FOGP}''2QYfe/CzԵ:BI"VFI;U\Z6#E.yUzDPb{}xw;@EzHPE@4 =ERDD:ҍHM{I9%_~=s};3s~snE;43(-5ow%+2V6{̓f'4i&c3{Ȍ~eZJ%2cS*QI;>xK2I5?ImN;OI%蹛n!Kx~d(E ߠMIj]STK;IAtDpҷt.4#3-P$Bm^q!iU'[m0K-[!CPd"?s7D4^}@m֤^5$>آ4t9^{(jl hx֨VAtdɺOc54'ӱ'Kd4',4I):#qG/}C{R It;kheY߉ڏ>{4"s5(J%526X=缮1zJ}3)hAoh&i4va䝚ȶq>}y3߆m>%@1%yGP,?WH.G곬"ׂrP&gq}^('p;P^_YBڏE JV0Ś`JYىA^@lDN}ΉPUM~z*K+EZ?j#6>Z`#s͍n7vJ눰$MvFAFZCM%!5ˋ7=֗G]@w*z4ߜOALdÙ)"jMz#8+\+Z{y{Q5Iqw^i?SZEu &Gޕ~Dydt7;Yށ'PSϨERهRz[FG.*Jԇ.MiCH3Nٌ.j]ZnAuS.E( o)Mڤ>KqW׊yLې:q2J^"Ť NuTN}^A}E J$|O%qCnJԘԒ\5h6aBOKQ+訳LOT:T]8@#9AGe?E ^qhnۭ7EL'X#Pd<rBP@Sl>(h v@BDb+o@ hu7 V@, _?F=NnE1PއC=AkBO ATS*T[lв~`z z㦶.* =^,s #|xda̧ǫn0 6)x‚^UpSSQk>9^-kr}Lr+-$71wq: 0ȡNa_$73(a,M/<<ּּ55oSSԦ=u^ܣQwPwQ߳= 4I DVCUTqBר5>C*[EA /?4, ca, <5bM`faa+/06 bn0=``4{ʞm0{q; Ox <q<' y~&L1=yOX޿}x_X򁰁a#& 6 l>g(IɢƸ,&3aәaFQ,lmf̶f[Vlog%fwi0{fO'+e azV vl3:Ncg ׁ OW^UUvFT9Eʭr*+T~_SUA^UUDU TqU\H)2RSeTISDfU^YuUUT+$Ȯf"jZj#rvȭ:":*ȯzX}, ~(>UW 5HVCQD SDQRW"BRD15F85NPxT(&Ij&ʨj(ff\5WW|QAūxZ7"HTT?ś'eY,_/-ZUZVTSzQ]mTE Ym5VUکvj-oOu~_SAQ_VŻ:*S'I@]WECuK;h{z&h-y.ƞ'ŒY2zu3晇a< <<B͖fKpVf+m6vf;Hcv3Ac@Z3֌ Met*ʁs<!*U>2BdTUaSEUQ( *J@UR* ,dS *7'\-VMUSȣTUUkȧڪ_Eh(:NPPuQ]Q1UPX}>" EU@5"`5j(Wp(FV_CI5ZRj 7(& PVMT_OV55UMjԷ[x]R 5ǴjowPI}jZUbRKPM-WˡZV@ J&W }sQ[{vv}WE/J@/@P˜:1:N@c#MMu64Sw]@W龗AqѶL֔5֬50c 'ѓ[[?ﶾ0z{cc&cf\b4P*Bu z{r8a1u 8Wy1Ћdl'${A$cПdl${|H2&` LgPXoɘ/HN26K=B$5H&37p;G؀=#cI\fq23e&ef$.#S]FLw2,.#s\F溌se$e{.#?AL!Ff#&#\F2e'e.#][ef/.3+]fV̬ved:.#\F6lv2edvR5ȦN].#]F2e$ed.#]Fumq.3']fN̜v92re.#;!3.#W\F\s2rem;.#w]F k}{W_JJ5bX'Sll}_ 3p'Э?mO θ^Һ8m xى/` a0 8508aL)0tLa̅yxwOr}/VjZalMV#a]oUApa1GpNi8g p.e?W\pnmFw܇cxO$B$3]oy#ޘ7My3o['O(`9DrR_ɑk9JcX9N~# 2NNd9ENt9C~+gd^.?ȅr\,KOrgB"WUrUk:^n&Yn[6];.[ɽrLyPyT yRyVyQ^yU^ ySޒH>OSL&$/l9GΕ|yWޓe}bX}~VSk5d}nb}~vS{=l/+{gO'ٓ)T{=ݞakϴgٳ9\{=^``/ً%O{^oo7ڛmv{m{}>de}ӾmߵC~b?Ivs#1s9w.8Kesչ\wn87[ms׹w8Gcy$:IN|}gL'}^_>)__//ȗ e2||}Y|Y}rrrr&&&fͥtoS9zPs>]T_h$aL|G)]D8S8)FQpVE.PܺHqŭbXW(B\3JexnZŊf {Ӟ ,*t5ؚȹ5gZxuoIgc 90PF j+)BzloA{ a{+Q{1(zdQqĝIu} -EAHm%R? Fe!nVv=ihO IbO(H{h8v~ϼ,/ WU@j6 5 k u˺qs.)ƦL1eg dN~HG3kR4{# 1F菍_2*xh8?"[4|0.bT|Wz_yuG\y8Кc*8վc'2n:NZ'I;!Nz'dtœLNf'ydwr89\Nn'w iV(K/uwU!n[)(|a}>{bI6si7{T oĥ)k,}Ak<)gq fԹUnn߲) f bͷ[\j`ll[--C 2@?2Ұ@Ȅs4 ,+dc^Z|mn9Y4\LnփBև9= 6 l$ 5l-afg;(F̋5uuԌ:5~/l{/Ud* b߇x%\1VqXcL\x>kxHYdBzu BY\KBv! #t(8A?~{OB$Py(V4PU(>(,o\m.Q)t)Kc]uZ LȃF I//޺Be^>+ X QRD:f#sXːǺjDIp44-o^ ue-KFD2Uܧ5q~"hY]^&g8 a.y=E9^Ќ4&!^$%^p,bǦQw#>(2 ikk"dkZn x%v[G#FB/\?Xa2r1d$ XE,W5oZaFDXp p]NZ\U 7punc+x@_ABE}mA=2c Lj*yaDcD%[uzzaMfX[~N=)ꞝYϊGC ?d2yIC^C,C6!"?P C !?b:U d⯞pf eVE2"bZ ŵ6`cll5=1'=AyޗcE'g*Q%d)Tk5ݚa}kD_Zg6XMfkzP(czf%ZIVnecq7x{^f/"xWC0$IRA =CTA DqD(($bB] * L B}{NꙞw{OҫgwmCczCc0B `0C1dh1$`3t =>ÀaȘ˜ʘ0b33f0L 39c&c '1H 9e}˜¨3: 3:at37sbcc8 )$ \*oh0u^i&0ga} 3;56(vۢmb=(v;b|QvA{ 0R/G:EBF p?ObE3 %v M M!tqEQ&s}hϝ g~TU9N0?a߁kC!O #{Ȟ"ȞȞbȞȞLd1ȞȞȞRȞȞc=eݤ0/[OeT?J*jD㉉:1$ KTˆNfLŠp#< o—"B*""D@$ID2H%v^"&r;€/yyf`D0aOz:o 3/TWzah`|8C8Ǜ/u:o\A96.f%a] 9&º8pU|"> =-h2>5p X5a] gz& YxgS,\1 eɛ1 *{~ՂjQVTwX_NuޓaHFXz<okj ,, @!HzBA‡0 |XfGk`X *  gP M~FTe\doepl_~c ~A  1@  1@  1@ 28"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"H D"Hdd~ȸ1q&2BÕ1]3pXtR:2TtM|kGҞ##.arl%E ;IQ+sv2<q'9+IrrH.%!m܉6ۛ 7' me>?bb /',$%JNgPH'KИ~!a!{ [Naʌ^ תhgnJ*H X,EI6[olꐬM2v_m$䳶sy;Nrc p.X3b?[UH3=ZZmr4f=`fmQݨԪUqݐ5G_l/{x^?nW.qVpdW OU=]4(~t)QK<+ !k|V2yO^KVЗ4Tgiw.6YzR$}3R*'27es_t]Q/ޖb{i_B7wM3B==k;'S}^fHnZL8 @$K| /JPHy^'a{ZlR͵bw/8 (/Fr'MJƌi몿Z.hHJ6ta-iM͙c?7,,t'P+hĊZ!Aڡ~^PN*B\Jj4E# 93&_"""g_aQxSX?&O3$ %2!溚6cyneg'R_Ywm٢ δ7쓚R Ko џ}nͥםMnzV9to~`nFUk#Pu>mk۹ιz ]DEWdu;x'`(&%y.kc_U}\hr>*,w{̝N-..[q UTsRTyrZXΞE{R6=jIQy#Eekr48-w t s P[MYNHc.0%:-ȳw_<>ZegsSʏWL9ٗ(jK݅fY}Ǯ~|&e8lrT"An~wvzLkjՓYɿտIZ uj%2h?zQY־xEMŧsD֞͹[_#XvmiA&0ftxBr|LWth\ԟ1XǜIzqP}]RXFc_/o}Z2iXTPrfś[b5gEdDH*(T(2sR5L^Pmp80ڣΏIS՝5CVTf=۝i]l+Zf 6+Sv+kˇ-bF SZ\ہ8 ў>gV(_ܹ7@FK2mDŽYԯjsvNR5tw>X?}W%1;ٺ\v\k`(N)Bo%oeW,UɏnQ8vq\)^GKg R/֏MhDŽ;4 &)z}jJmlTnp;z.Gg-Tp:j KǷgJrxw^_:nI}54νR?rrZ—*Dg(ٴr1CRq?cvwk;C.|w5idž,M+uQ5 ls)r \mjʹOj.eHn^ucs,fGHe'5%; -\7xD"QS#pQ'dV >,kw=H_6rMMr7 4[3s;q#L'=0q‡IaqMZrsLgyq]JH؜F iA%lZp-2}!& ϗz9ofy1SSMVJZ%EN:gvVWt}_CAWKs }R(G)p_8ץoYfWݝt8Mϕّ* ankn}`E٫ɜ]VeȼqliT*)oǣk7^粃?|ɡ<3'^y7$>A0w9"wKI.S~63ź3E%d%+]N];jD0mת[er_׼w#kEY4p%߇VRS[ccF>AI:^ D=67!-_z+_hM>8ޢZ`2R6/£ntbX:{r?-Ll',Uiu.Ӊ~;w%P:*ٓw4w_:<]'_rꉄ+,w;Wb[6_N"8I5%gv-$_E-w7i@Pt) d:}֞WxD3)~ޢ՛z26}X|cSؤo~=QŒsr \FFc-XJiyqĝQV؊A g$Wi]oQdڤåd^ :oKӋiL2z1ɪQ$߈yǯGy}r#h t@ʝyxud2F֜pdPq4fy*6[_Лhٚn:u1!2M'q]YES]:{XzrWy2q{kT_1/{4"sa^ͅ*F[W,0s>1QJ1wle&󧓟VjԸ~3o$+ե9:ж'~j؉abJg35~9o97ܽ<8ya񐏉/nU>%I7,Y\PQEiGy]QjiA䑲ݫdn\. YuٜWZ+}xlG_8,ąŮ7esoigК/P\8d즿;Q4oN| 18FâBC|8Q?>.tQ.}D2Ū+/z$!~I_f{ֺ^ tL~ާ fozW%u|6Β6dbUOz٣-F*/sftZ~ʸ,.N]8/o<ƯK,ީ2ResR}1?qܜ՗a˯V)<Y*C\:,T:/<]<ܵ';_Eg\R]/~~uj6Ю_l!?\}\ֹޢ**oL8+":s %WlLW)'\ָ=Š%eenQZ2oל5ґG_pPfi U֌R=%j? endstream endobj 2590 0 obj [ 250] endobj 2591 0 obj [ 250] endobj 2592 0 obj [ 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 0 0 0 0 0 600 600 0 600 600 0 0 600 600 600 0 0 600 600 0 0 0 0 0 600] endobj 2593 0 obj <> stream x|yxTE{;+ iHwɞؑ&F@ l:(JTTn$""訍 . NwgfV޷rNn$ @Ye#n4=PTP8kxdѣQE%2o[[O4𡢲-7?BvNF$ =`teJRZMis`LQfWfMWߒOT1QhfaDPgT-GфfCqӓ4QJ̚CAL0/{s^k,ډNVu"O9UvZG{*KôSI[h30nF:JvDT*~A()2Qb.b wȳRJ)ZKcNzv\4QzjҨ?4V?N#h6G@>?t:5JE1B?gMn>djVwωddMigඊM7!qً&S>H D% 2,vЭ 13i:)U[e_Ghh)hǍbz(BO~JAx ~.ja"AX'qmDh*}Ԡ=U_+7D\81%2enzFb]y :]h0HG.>l_ e,rfH9h@-0N-i :Xd̒T Tz)$pbK],|q̀~R;ESi$Ћ ڴc:"#a3Dm=%6ͤ09@b]S_.oK?/}a}2>O/+*6A;h7+J QYG H!Gt[4~4}JibZ~؃y: 3`4BEh,FuԁVmf[`%CvJ6@_<(R.j ,C93-B?JA.,_FBo'* %̈́d(Yczeۗ乏-Y(Dq)F*ş֋+hz:joPM+t"R-ĚȠQ"^nvыt;-6̢k`KPq?֎9VFen5H:vm%;e>M!$HJ]EoK'LXF1Bo`}  Z~⯰Eqt!"oU(u bhiWQ?Gٿ|@y nអgеVLk%U/=bxw8ޅ~(nKUz]<(^zʔc'!m P/bH>hCm_l};|JCH-%b<ܗPW=ܖkXe@|ƼjZ<~ X#fbr)quEX0%'iٍY4L/9bvWDb[Bŵs4W5FAaMozAΔuM1^w!JSMQ'&M@k>YLVS<ũWE¥"ՉvSt祢KRq! :|@i `aK1$2R .vZw93dS"E4å\Er&fㅫR_[k]Ş WrE{B?|uVET ](涎 &5Ia7G} 7tp%N)buHGhJu저ooiYCbs8n'8ڽ w\mHpR(?(-Rqz9w|Hj)=zhʓ; +J]~*v3u ɕ+Sj؀" 'M#POڞ mLT8n5n"Wv?&%O)pPE88BvmW@= rZ3r[pKPp/3PYY.|\SfAx/,FbRQv4f38`dʅO"7aDWFtR:nذ%X CPZɪ p8AX 8zv b֖\ywۛEP0|+\ԡ&,)![i.-a^{Hw y wyf[;o|#X]?"~'rn k..W\rC s#K\7XHIGcߐSO6㩲U.*ꅛ[x7&8xLIbXqD N!~,n)Fd=tZ0/o?/Dj#`A 7羋yBo m!l -х|wC{[y#GO-SH{B[Ǵwz~!-{[bhuzCi9-zd=QӖOqoڅW$AHo__b,ח&5Vߡ/jy%;ӷ骮 twKCvƓ-K vM,y4ݿ_i%>/@ap(:3rᰧf)> '}y={ºjSf3}z*14OW.M1 ;& } .sˆ)>=8Wq;+g 9?c@a'ǩz;XMpOoU釹:z0h;P 0rDC[`U'9ɕB==: Ar[c}A"%;\ l6<=H*F-;`dEDTrsH*v: :-p/\+.85: ;#uGQP3_ZPO *@nTDzルJͰeSz%ba{؅";E@}SE}{Iۆ&l:B?͆MLKa"0^W_' + 㔦OaEhN%r<wnxΊx><0wRqq=4Xq/,4R)WZ\ 93vZ6 '<˯s8MZfYiA|=R}.N{ع8Q+.jB7e]ܵ,tN?^ռ)T}EX;B#xWXG'Ňp Nv&NME'HU}a7[~'00`nhO;2GD [Y # Lэ9:ԝccqomQwpO^hXg& avIH?MD$2)A?^JVpֿHΠDp&%`KQ28 gopJORJ4p?X;d0LAqғl'x] JCx8;h8b1 p d}o$ _AiG9d۟$\Jʘ˩\AE!eO.'O4O&'x \EӨLrp tz‡8{KEW\z 4<&^ Gp?c*T"^̼q׽jKt8/g^A`WUU̫j4[4W?Jko"fIEo|- >LkZp-߅|-A>Z ^O`Eg@``~~~no0~&[ݦ vtx3SGOZV槨{.6t:,=FXi5g?K&Lpz =I3驪W`EڤL/c_Ky/NZ/kE^g~_ooi- 8Gmd>DෙП(=~]3ԤYF ՟#/1 CzN߉hc ^B?%2KzEoU״/ >NMt^dL2} pg?a:>K?stBou:7mzwc6=?Mmmmz%AlM666}ls٦Mg6mzo67Moͦl#٦G6uNt6=mz Tl~lo6lM?ߓKedj%Xg#ba]þfۚvkMlGkܴ/t4e@ SR9dˢ>} D4$|>"}~~cT帱ecJW^12g!׷Y23RS{[,fS|q=bcGwڥs'cTȈa!AUQh6kIn͐d1"S[Q&­5}l99_NGkNa4gSvfjXMbJ(aCDbA sa&Bm♵koͯ ̠v@Hn P DւB-Z UZɘ‚8ŕi֩YtBF BXylfn]{{#U+5%utJcοBxʛۦƩ1fV?mE($we/PY}_j2}Y Yg^ƀըtGG3JEˉ z6tҥ;b) NlDD ԴqPqikw Y#HL<͌TZѐAjQAȆ%PJ0ݵF嵠D\{0֯jS N4&u!=ӵ49/B10~Igg4CQI%6"G&MŋzLLSaKwi[t))VLߧy]wBZ] g5HYnj4ֺ}[\͗>5ҺWq?ĩ85| \1<\3Gn\b&,bjjCڽ^D ~e%bVhZGwIlXn:a@ZY0VT̕f< %;DVuH|IJ#YhD{b0f=x- -ā;}vUOmuQ`8v jN5EpS}reNQ6W/cJLA)T4"YmF1M;k>W.D}??c~l_~7}'妪'qnshF%1u@=@ $`K^ rO8 R>Xgbz@v:sꍘ=7KJm@)\ځ: mwn@ Of#H91 Ay38vo"&u2d4h4h4hDݏ :YPJBC,oTMM_K)*r51Ѡ|^yc<C<49"5P2[KQٷГfAJf j2ޒooQ,poL~o*1.<͍D>}S-J ,E}ܹԞgO>Y#ĸpEGn'2uuSNc"ԮSwD1O  2L QrTT xs9ٜa. 2-c1X<%wr5q)PBV+GYyv 8\ǡzơݜ[Yr2~rh)7F-rdX e2trI 6=,M9i%TcI3U|=cjjdb*u k͎!uԹCBCBBzԙBzt j jUB)k~̑!5(`ddAP P6(.jR\'ӨxY$njׂyB\Ly bزb &e،G-.-M;ë.ߥ L/n KAZXɄ!tMSn&˨5qp3 aZsG5w\8'&N~9K:"LBL!!&k/.Cdݶ: /2voqYBbZybe -,hVIU[z45gamQGKP|K| 5Y ,@"S>O}<ޟG屴eY8ˠI<ɿ'bOME>Jabm-mgh4DxS͔~UMZk !sC⟧kerW6,v4:J U9۩5!g/!H]ٿ<[&;RlpYrT6R+ߡtǬwY\yyx Ĭ{W!ݥEXH@&ef$,|QƟr%YٟdDt'ka ),ﻅ,RrR }aLᬂ?/OVAx`ZX ǎw;]e|*y+80]R|H@y,B\bEȱ|/</@`Q:S?^?ZVrzs0G`{>w'.fY$b9n^F7=J^E%=Ei,C?3}IʣTSw_bVϐHnRtVbVAB.5@hAsh9E(ߡ`B1}U! }#J\==-.3 {};ݣEϠ4}ACu_ِzNoy_otʅUzɿ8) ACRݤK!4 e21\lUogp"H54<4{ <.@)P&)(ջ + +12/A (eb8 +Z1THho;tN`^*///\;,LC!㻍vP3J{_ݠRu\SSk}{|93沗edl Iv"$EjWЪP`"h KZ BJ孭Mm%s&}?939ss;svvC7f?(fF߃^BuF~Ň81OU#~s"{%c<|AkAڞD;@Bo|υSeWcnaA* pwpW4g&`kzQ@6.ch~7^S<=W ?_b^&aķ0 2?d^`^f2-f}@Zh5~v43mKdJIMzr GgR?gW(hıi>~ǢH:Hk'G71 Iã :|mGO7{7Ac/cf1ᵌ!H1З3>c1ADޭ6)Doh_ڙ2C}'RV v&&f蘿 =ǜ⪸@J-tFWl>p)]gS@+6n=iQ^4_yA&Vu0x'L|G?>^Ab-zcrbᜊY&3^~gO]؍\˶gS Dza_GLExD?SmWT*˕XqE1]1I1N1JQ(Sx6Q>^  9={.v Nfl dr?12`N0G]'0wnNeGe33fl˼h5_NdȻ2 z@?onT@SADlSp̰OnȊ%Ed`gB<ż̓LOЇ^w`+)N;3^a L'~0{sfօG/#[ eѥTa0RpgXU*ΰ,cר3ԓj ONŸԢt@-9&)1yq *ЗHXPS$`=pDF12 C\/KyRĻ89gx߇$X{B>ǐ5̟ko>͟F遏 ӍY TUE- FBk 0fL7~ۉ$n2gn7"uup]>>acEAqi5 QvܴS:ɔwƁ qD?D}8Q#v5cWqSPd ј1Ee3c,dM\s1۫BO*cnV9x5' x7x4lgp=#{`OaQkJ;?0ĸUb/[9e,$Z~\  ??*ѕq G#kڜ Zw2ɲ!TAR>"92N䠣BS:0}*ك;v4WMZؙZE cձXǭH<6ʸ W:UWVWuGv[˽ Q5Qn)i)[2xeao;uq/ yN/d/LqIX٢Q7 S s Jl)U={jˋpV4Od7Sny'{FwJ&oQ|ybOVHG㌲0PG!T-^BEC%B0jUT 2I J%T .S2eC=Z]-²Gnٺ=Sc)o)]oر 7~[k7=۔X!Kj;\)ׇBkK&bvqˈtF|_5蹩dm;YD9ŚS!Ի]K(b,j?BGx-rU1I%k.iLL|В~" xTSgtS%Fi6 LTaw/\!$!#l@ͣLA*ՊdnzK |oO7IZnٖiyQ@KOhh7Uwz+]}kI6!:ځU!1tOUf Fdϑ0(:E)5t hˣ/X!jc2,J$b $PUͭRe? - v3|L5cmtI`z,aتD1](2=d`L+̇’M% nƘ &|1-wiKĉy,2@E"!2"jA"UV*Q~B$-&CK\*R@ nH$L!O!O!O!O @$sJ2Yx"^1HW!銃yn+>(̍P}Q'h))'R!JPv0d xO/'Tr$C%aeLsPAj7e{Q%Rh&H?'2$Hձ GT_!jϼ% QSZk@򠳢E#D'C"z8 ʜ|!ܠ?/g5j{j:dsnW#1Ċ&4"X՚ ̣3y`NE4JW75 b'dWY u>n7>KaL UJB+IQvKL;@k}mVJ4Je?_SYnpXrboJ2y"*,:[-%` &H Kv Ȍ[ *XEqj=Zx6-|KYlg{3V|I^@x|k%,;wmJ*mHe \m!X:hJJB-$ߍW#9+澍rW-Q>@4*'LHe(wEV`,(91%EI$I,D҂ E='FdU[RE){ƔCEKKJ{n%-niRqTbq)RFW8kźѺzz֪*3_GT r/dZjRLjqUq;2?8}c>ذo5Yfɫml/|+j9jv(tk+)%> a+dt#Zh#+:_/c}3"\)]XpNuPAPlN*]ͶGkWj|͊Y|PGRmuc\h+i1ɬB< j*pPJ׉BeMGFD;룧xG_ 2vvav7FWk*F 4IdŖ˒(Rd<ҲFԖC8 ^_HUq%7hh f Byb&]G3[yb>sq1zR&+Y OEԂŇد3"V;  N78m2[%w bڡBZJGSH#+ 2u7{@-Eb5^] ΍]UWi9*-%>AGQ{] /붇0`N7~)ͻE:8hw}t֦Ŵ(Z4:8Pݥ|{ٍv >RXLvQJ5t .Q+l~d=~lW;H`K;Dփ 0IRdg=,nL#s~#o>?Jmm"5gϿ97W0kј,6;oy𚆲1MrrM{L2b_/g\fݟЧO\E?6G'oNUo1lU 7D;J,Fĵq]\LY B0m/1,F /_9Ehw'u %BP&'d"W%DY"'"D/J s9Q Ny XFφv@+bݯ~D` :d8l|#P"?4z45%&B5_!HKkJE:hn(fA"+"rQER'Wj8{AP7E!cTjir$&~d`RMjLxuMc,xFPt M邼yCMfIfAWd0#5xPu}d598 ټ`IܰüõS}uBյD|k.l2OtMG ?rE.p :a[6oGs@L*ZluQ{KFua)^\^Ww}{˽rMtSnTǹ nTzCI\t/2u4\fnBfWWr\@\pќ Yw9t=a"d668mp\6[KZS]bC.nY8a/zFQgcsŏۄؠv3 Lndb+n̼ucޚ*)8\-ʐWGj$tf6ӍbǦwFN!O|ىof4iiA8զjW†GR^2HUǭ{ws?Jt;qيٹ^䣚2'I K1x$sL z"3Kv$Ibk>^1d>9-bx ]@p]2Y,W1K2ط(93r"n$Wt{hdt˜6r=]3c0ÕO({v=od~| lJ_ҋ`gO9?'5Qj{3`)g)'E0!bu# }|׏ȮicO>ǞEpr+ 1]?tInIv곧O&PZڠ(d0s>$qA|7_BLQT|HϬ"Sb4ϧ%6jާ.w!'_֖ztN5}MuBEH)T~w,>L6b]&BKe7UmnӒEEh`nTboqX}5kPU"_CRWwNZ๫P(ZX4xH^3&bN|$ G)D"Jy]VkMg2Oqm#<^zo==Cɲ8gɇð궉} *`I(Zg31nK+>|P_sǼĭCBܧF<$D)02O e2i Hh r- >=*SmZ[B=M=WݥVnPc=E"'&/$=DK|c"Ā'(SFaySY&p'1l<&dSD24wB򠌥H*zLM -u OO=wd*Rw]{{׃sIJ!+7 :!@Cd<)2 QWQ Խ2̡ Q2LRF_a, O՟0TM2Lx*|gT)a~SM O5. }4_aFWs C?Vz6/0|0|0s|ى H@Q+Q'ꀣB]f}XA}ňI@ӡnEY+$=,6Z+)PσKAA]'Z0.c( gmpFF"GϤ;w@m о#\@GAFc s @΍)$R Wѹ2tU/ti0&&ҏu`BjmfJUP.<$a!g/ 9R7v| 뚙fdԚkf*=3ems=uwo7461t2u[Y8ϝT/xsʛpn&`o?^׵ςK ~H"ݸ۟T ?`pX>C_L_/FKP^/?mΣ~232#ʞ w̋yXj dA(7fQf((b1jٓ(cBx6e_4v 34RjbR{ڙ!@bhlF9rr!C"- -QnedC : t ] ]Pj5f ;!siDGڤ4MiH4Si>#Gb6̉4ssyyyՖ<1fHXGl#m3K٪1Uy?HH (n)bya"A!>!LD E6"8q̈#+qyz;F)HSFa:iS^ i-F-H8Lw#U }Tt8@|LO!E}H@MBE @B$bL(O4ә;:7G\7zTL5ToL{@i{J9{=6=]}.b6~TQLBlb:ƶIcbc`d;吢$/[|W1_1'zSbbr\{xb{ 0>R(CJm'P9g#" &"`爱1cc'#}Vr p K0=>97>LKcb]=[eNnGyw3ֺ|S18zLj0 Sɶ${+_U#Z6b$JEJg֓/@_TtsV&WTḠDqN\ ?%zj~qEw5Ni$XH2*S\WZ"ҊkJ+) וHҊkJ+)ҊI+'V&8jps i?s'?HTGeL=י`.altkuՄ}ҭ|k%?k5Њlꏣ[V_kJ 3֖kd[ tY#-P:i *kJ²5N -VZ[-~(XX,@<8Ptqdpi>⧍CM))#RW$s$`$3}ƌ>cF1Ol)}ƌ>cF1Ϙg/f3ŌbF1;6W?0WOϚ/-` G̵DYDKK%ݒiɶX,"˨?}߃{ pF 4#fĈ34#^4#uiF|iFt@`g$HH HbMe0r3Kr4HY}l1 dsj8"z.1` 㲾7NS: }ֺ@_\ћk+:xx@O haæ Vg=Žx)<Ά%]axEw-%̱ 3EVC=o8!TG?b ;&ӳ@$?瓶WyGmh+c PC:1z6%oK9nMA&6ez!ϥCDDYDy"vD써6,D۞KK؆Wt h : lǾUzE-ͦjt˄zX`hb# R;S-N]y6L5/ݮ]'' P' BPI(BoBXsЗq 247oݖ@iFHЏxx8GP Ԑ?yqt )t]vK2֭{q{rgpo׽9~mC cƞEx2g|}sq?AAͣx/%ԧ̐Pv] ~SFTH!򭂙x )(#7ipUbW>_@*Q?J @4aЃ0I" Jh0aKj\g? Uw4 o4'-MJinytY4K -_S^x۹d ȒFtȒlx޶[6[6ۧQqL8¨o- aa2ͧ9h}5:~ i>9f:u~W_wU>%wi^pmDϻ2$1r>_z/-um` TZ\4?~я@=~m~h&2H4\Eg}^tG}s{w^D)A!jk1Kto8ZKUdE-mԷJktgu䶮 vκ3pm]Н_R-EuK"8@!:CCj8FWeċԺzm +ykU~ͦrjo)ƙGէ(;VHd[|UDCmN&kgs׈-Tj ]MVA=ʦQ}W\Fܢ8\6G4TKXB<,PΎmT{٩Z;ǧH(gc4yZGUQTHTPk' %t*Ue ֒M45XB|#?յcCW~J97.,(@m7]X1$'+g"'-%>,#yQğ%*_'~⋉'>jGrɣD?BP{"ĕ@<|@菉>ȇ)@HJr?Ue!>\o} *,SYTӇ,J64Ad MCޛQ ~;HVlB\}GhG^"x q# Y%?*&㡱D%DHq=z9y&Gを=UZyW9=["`T^m'Mo/&WŻJLH~܃x8٤|4)0uj5&+OB>Vd^CxLx2E#ӽj%h//!oMvx񱊣%(g>x*y_Br_Wqi>y΍]gAqQ|C}Dz?oVy=\;v~u_P:O\Hஷtڗ~o/= WێX$>ļ!`!}a&C K<6V_&[ /7l@Oe(qgnNgt{qKJ&r:8,rEt8}8xC6il3HWwǴ9zqj:w`Q>Vfvc@>:B``~[$=\R%u"I`&Y,\%**qYzY b$U~5RAT*7R YOe'pc<xзwbNh"R+~FӖ5t\DZS  Gœ毅jQZ׺5/"KjV#\\~!Im/:w.;_<|]*wF>C+yc<ew8 s,}⒎O]QK:>wIIHsp-ޥZз2X'Y(3HlXKV&)l*f6g2VVl[6Ml vl/>`!vc')veyvНXϛCaޗC0>? $',|/+K|_ۼ?'3ÿB\x QO4MDfaME"^V9,e }d̓e,#9NN9MΔs|X.er\+Mr&wrTo \okp-"Xʬ8,O Y<ւX0M#{=i4xg3 ٳY"3 a,Þ٬yEP-eK`+>{l [ e`W!6@ { ubaM&]leB>{LC! O'>ca}f , X!}˾;4c߳!l,Cpsy.$<\`H典mNjxGGp?GA{>w|,q|tx'ЉbHdŞЅOӠ+;n|& ||>d|1t2xjzxo⛠·@oo>|;Nnx{ J^ ~*^y0? Q~8 'IO0g!P~_~_aB- 0@0 #<*7ԻA0 "FH cEX %`h&†q.''`H0A-ah#$$X$dxJ)9ʧS0O>-Y,,3 X(gٰHΓ`\$ r\ K 勰Lk`|EU*סLEV7困JEWWX-ߖoK03 kX"Ħ9l![J*V6l; V*veIvYv'x' {ޟCl>/K _o ?OK5;_?촐,\D#rE 9(e!Gɱr*9W.Kd\%:Qn[vSH4d:0F1@1S<(>)>yR|$)>yS8TP]CQ8T?š(58Hqš C)S J ŕ0+W"(DR\1S\P\R\ҔJ3+WlBK# 뉄Vքmwʓʓ m ){ S  ;;; AXLXBXJF$=H"u' $e""&!=Lh!=Bh%%#'چs cf֔Ų"{f l9[^b?7[}>e/+ !Ѓ=dގy&{^<y>/sBb.fo213~ ~~_kFx0'EoRoaWC0|\>!$Yy@ ˕% _oȷ$?!P]apB_/g&Y}VB_)/g#섾XB_/З@kND` `K`+`k]tmCHDHLHlKHL!$KHlGHJH؞!1؁ؑ؉N cgccWc7c&3{fa;aa'' B{B{BB&B!BBBB  CСB0Bh!!t8!(!t}wƹ>cp.59 ?bGƽ'"|4.ؑA+k7g>t#1dq }j*z5IOh<-*݇Ez/X`殢Sw_8j19qg0?rz^?W/-3%VB٬܄{ܺQf%Sg-<𵷇q($X]m{ފx`ˢmloymkmk*?v_N}[3:E^58|׳Oݳn6 MD%qּ{zde9{wͺc1^c,{뭬lo5PS[*|.Qw6z7mrfv]Ŵ8\KuSnQjgzc|b^N4{Wԃxƍ[ѻǾD& ;/ 8W'6* *[6[:\V^\(y0.NX;bOPh}Kg|GZ㻄ڥS8Ԓ:DЮ+2){)C*al!S|!o_]/M7ڨKEtP}~{vӸ.\,#]xFbisF9#)w΢qZO kJ_| y=f慑.(|*saf0L=xGWgRZ\m17PŒ+ _^5%M 1;:-ظŕL6gAOGS7z1+#p,@")܄fp*~hY{6NŧP~]YP#yvK4,%2CyL/ۨdu\~v0f-]on9KXY$n=lJ詰$2Nntq8  ߏCvhI)>o8&JP)ߨ*:?}XAE1Jűd H[%'@%@6˱ `ѱK0ѝjC0W\ hL+~#ܯܬ.v$<+x5o y?5Cg%w5M4 |T"4 *gnUH+gu3YKoN GW蠷Uw7D^(07bZy ڠ玱 ĐBW j4"kw ڣH<Ü3^-^3E%KTOi7R/]IN.66pSBȣ$]yDџ@+Y i$h"&TO#Af%n(nB˪Iɩ4PH~9}{NFē2v#n@xKw_^D7i et^ۺE^7iAuÞ.yש9n. {3rj7XL^h$Ǖ Eu/mpa|*Wza`/APܡX338,eMz_W}*6i&[$Xb:18_ |=6?G"%⻚6ږsQ4ZȵPSUsG)d% ur}$N#h2+ߌT~WN}zd#DaYRe3v(?QJXE)}ǰF6V635=`F6tuw9 FlvUzq}7YQf%}-ySMYAǕ{NQL^KQ aQkէg<_49bX xde/ik1iY| Dѫj!QOCFEfTT *ʕVEc  *7 ]0S WkN<ɦaߕkuGzc̑ohGX+SuAt/8bA` ('^}s!xvP?eud$?׬OIA{ϝWI=H`ɗP$!nvlW-y,=3wLtB:<\\@ _F{;JA s[snW$Z_ۦw!}ؙk^`!|_yT]lBqN.7z汻ɔ29%A ,_e0?vgjN!!@MD^~b/-4XH;~"ҭDɭS{F Dc6C'AF1UI"o|1R_Qwu:fNc.ľRd>%HvϏr#_7U"%Ur!@0ܐ"!T"<4_.Y>f7)>OXlQgę?`qAÜvLhS4c1D؞+>㔧Mu{bY;e8/5jI&$| >clڮ"TR?c_{tBy+!;^]5PΟO3FӺ?ܻy$8)qwev*-Of@9F\Yҷ9O8$_fxg-(48j@04c ůS◭$Ik|&:oj#Q|Zh&:q(OǢ"uafbL9nKku_ endstream endobj 2594 0 obj [ 226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 276] endobj 2595 0 obj <> stream x@W*2G`E#M젌SdALf%&ٔM/&M3RdcL111}(sٗ7rsmcp bPlټ7 J`yIY~@*(/YXzG`~ Yvܲ򊨤A_ [dGJ[~s%k\M Y,a}\os%@$owڠ~vI-ڎ_z%L;>f 8޶ڷi[>~@;ie8?4Em/on O*ked| g\O Vz7cC[^izޜ?`o>qxnڈd3/}Kէݱ:kɦ'8uǛ9ϐdЃp6l=ORtaIX}p@,Z(R:1.g {'M?LI-ì{g!C$ER$ER$E$]W1a^$ C$ER$ER$ER$ER$ER$ER$ER$ER$ER$ER$ER$$2؈-IM 6o38(E:0 ͠бqo82rEy|hاyhb>pTVà 0E}HAUHR/̔.le"Kא%)3af^RPBO9>9Q_$ 0c#- G( eJ+塊e8_P(r`Īk,eb"eH3eCrz1TU][^fOK:(s4!Ki{s][l>hX=8[.>;v7GreN`,N978H'Ѥ۾^Gr;UuUR[U^pԅz޳k'{{;Uׇ6'V)y}_دU ͜oVSra =xPu*~-jŐPli£Be|_Jyw}m娮E{&);`}KR2ʻkBF&֞rա:~K[({?.&Vlɵ:VuPT`(6.7Z2Sev4U6bl饕KCK+iuiɖ=CasP1'ZF|CJlGLo0<۱)q_:~]r:>pⷘJuxu!WU-? WԊGI͈OVҰ{!b VUPrTn[XOO >AxhM<ϹӢ'Yo7GǡؔnO@ת_^\pkv,i{]Zپ/ ؂\|89=.vβ;l95JKzc_%r%o(gZ pt^PvC 4I $ԩH:-WlkU 1,IY=LҘB$dtplMz k10X]j5aN&BzA-*8/PF.Tml ATg뺣G~6jIc&.VGNҚp jW*hXNR4^|%2B p'cF!wF'$ں:ڼh6m!#(c+;5ƭr4}Ա,|b&-v)O7q2|BwTĩ?ބ+13iJH!$c vBaLo|Ej{& >^!%Lxp6#!B݄:B-xrB7ap a1Ba aal|B")FXJ% QJH0jz ]uSԥP,%vXBAE&S}@a>=»)BJMQᏄ (§{&ĮxD!C&DlF0m[7 o^'FxNa~_%p+̈́ Hx;% .п[ZB'!H c%dIaJ0P@'%|BC &Kx6gE].!0M"d 8B!`t-AC!9EAg>%|L!iȧ!C(oCy5WQ^ۋrʽ(;Qv܀t ^D}9LXMh"x *POLDn*"& '!K45ywFPR"BevnQc썉A8n!L.#\JNj VND8paPK8& U%b6!I q4rBH%2A"0(@G9r;C@;ʧ(|ʇ(ʻ(<ʓ(O<ʣ(<O܍ǶӍAp jW~M87ʉyL_N#l&l"I:©?Fh%s.لY3 3ńitS6`! &Hs#ʋ(/<ʳ(-]/ g 9W,9=W3LL=m]+7O۶ma w}ogoqk{SJKk/;~%\ n c<| Pg| _wLkYKb_?S fyh` o@m[cTG5F/JckGAv`4t6onvV۠q* zp]p&zp6-pp\ R .+J y \K}ѳn n?p=7fފmؾYXl \PwkxvAOp'܅}TO;0wŸ^ pI=?< xv_a< +Ix XAx|^`/k oc, }a~Ծ Xz >|۰1d:Z}:ȒwlY<bzLǜ,Mb 6*S` }+1au.ͥLvrӊu`WT1fjVrfc3f' ^@AmT\ -Ȕ /}LL WlJ.L,HJIG6Ϟ3].=/'fd$qYcn̝ڬffMs8aj,T߽;6jL*teXgQ{X>Rg\ +yGjH˛=;Iq TABJ_jvY }}잞_Tl܍8`P ǩ0dU7f-W*{USKLJvkɊ E[ϫ͜; jdI7;Ӳ˧f-SrO:ΒCe²ՙs~w9ͳQ1 GN˜s|}}E6cdf MPF0&+**9: TSI6˦>es͏NJԌ7o +O>`OVqWG^;<θ1I3YcĨq*$kj|N,x0{tk=No׎/(gT;}v o6Xjj8?rrJWk0\M q3\qxRs؍w,Ud +g#OE³sQ+YrRxt5nJfVQN~[g5pϷ4XK||2x4h肉9c|j-0eI|)vL(`X;vӮr10z1_8pt{yDҍ,.JX5)Q:W76KNIce9~´6i&qdބ1=gB1WCQHNs#IJqR!uc"ޘ;~mp_:O|Wx$5+,NeN?J2hTʬyJIZ>: ~t:.hVz˿GϿ?%?K"9#goP'HHHHHHHHHHHH߶q0E ,`͔U 2p] +\x6\ZyS op mZU &utp>턡W4\g>K` >H'*;u5Su DKu-ׄ:^ \7.\7AprS9a?SLu3T'?SLu3T'?SLu3T'?SLu@!D,X-h&k҃{KQCH/ZŲ-KqmV-Zjm@]-Ńv-8lZ68c^l=wFoYóѢ5&PbMJ8K#G >a[5C76c=OȚ9G{E-D76bbl?ُ>ǼNdxG Ϟ "^W]q m^q=rA=kg bC0(C<4ZgOWwX+h;rp(|r Z'jOر֥6m>lFϟy:`IqHsyEɟf(~S<V t]}oC[0(0m{Fk0Y<]%0~oo6IϞ>C{SQSD^(4ޡyO<5Ug"_?})oU &*ZMA=ox-mNeϧ,mYPz;Fgײ*Тt(hS:%k4t*AǏu>lmZvxbh}m>_:7= AM spkiõڛU-ĴPл>[xJJmЉ}q}:%Z8Ӫt28jtlD`;h-?GY Z ͞npxpM׈NX3)S yzGE0izk&^j?W7?Z΅ Ylѫ Aq~u뜭ho_77ۂaS^ok]]{'zjqC[x-QYAlܽpD.h]sKCȖ_g#EG6t}w?Ђ hm :~Zo*>Tmܑ0 4P ΣgpbY- F2T<׵=={hx\1tAtږ/icBD~Ƀτ_/~z ~}FsR , Y0бS|ІX{Y؟cVacm6aᏵRA2u?j_[gǶ8y>C1ZcߢQգhDh5:~ g}!AEط|7Ǣ}6OFrkiϪ~ڗrj>({'L')q3k4޽5*ШvLǴ vȠ,[nxꮎ]]kw fljQUL/f O4Noyڴi}[C{wt`ɲ&=ï.es:^C0<QCa:\`R1fp%wZ,%֒Lb-iYg})))MMM{<-zf6^zFN׋*f ]Q/3}xEl5YǗ+7HAnAw <6lli[63Ć[ `8'jx򼪪Jt" j.P`V؆lAf hn1E76QDy(k<"ʧD(_~Q/OweL#Q%Q6i]6W"KDy(oCod?ԡ'e+9տZ'-2-k΀9x`9u~ _d+D ƊN!6C#gl?z #o5U?֯vdՈ$,Xp Nn^55*^T\dÓƹrӹRzӻmtݖJb9qWz5+L9fދ ,Q=d?0|ό8UaMٖt̜a4u|pr.MU^MJJcEzA\gDZB)¨ ""bDΈV$  -Bm&Mh uXݻuq~^^kVx*m}nvhW\He;hG_;4W&rh}_۶L!^8u1xca;1㺎\븮Σӏgx9rΘdks8Ǟo̼1z%8d.<=ގ>5gnwY|?(4`^'>P*pcހ3_7m o[8izsaSCi q;?sЫ.Տ#<4>aÆsd ;3]BicW/+̦j ڼd뫎>fN::R䦕NM+T!fM0Yӵd-ۜI-e|uM/#*nzlRgWkϱNDJv}vVUB_g?}m'Ѽr]8~B_C_?~v\X͡W?xZ}~CqS=ߣcGE) A?hwk;S1w.MiG3}hjqܶPߡh{>Cۋb |Z~cD H gg43wF^9#7яRmo*#q|qm;m}j{_v5C #.biQ]4a7ŵU&c˸O")a8Z.0TӲؘ/EV&\W҄`, a8VDƅ}"U1Q cK۽ 60QtLxTI$z&<&%<.$L/MDZ>ȇVߓ"gSy#ϦlTa_?Hxx>{wwzZM|W_m|YN! X)zDGcP\cAc mێ㼭U hsPd3~R<*a7 ./,+:yuxބmߊLΈvܥH|ZBL% D:xh/R GKCu0~D9z̧ꮔnZWw>},OL剩/aGK?0OL𞾼g.y׍DgQ n٨WʛTTϛySkޒ[&LҏoC^4Ɲf+>swvxހ7-x޽OP #?pʠP!ݢ"0 /"3\) AQ8Nsy &j!8 8G Ǡ|j@$Bԃ (0s Kil4p?<$} ')r)[MSa仗jzfs*̅y|:g7=_c˸w?)|F+5N7q|pN@@l P!P Q8DNLtȉ1 )f!}l X̫A,u*h Xn֑r=>ǸmIt ܍!8Ӈ3}8Ӈ3}8Ӈ3}8Ӈ3}8Ӈ3}<i85FֈqQpL pL:i|uQĚ5>\5>\5>\5>\5>\5>\#12#1#>2#k>#[12#S>#>ToDFToDFToD0Q41cCE*= LhO߇$:}|Մ"O7>=YCVP+k5je ZYCVޒ:ڞu=ZBP%k%ZEVQUkZb굘z-^bFz?l&5FCh ' G<κۓun'Z+kZkeZYkVZ+kZkb갘:,ꭄz+f^ZY+VH+uR:ielOVZ~ /%xWJ_9t^ߋYOVR+kUBh'ftmigFfI!1Jϗ̧\>͢n|ھhۓ&xr#OOjO]{|sɷ驛>C} h^YDrB)a434< o]J[5a5Vn_Z{ ~C]e{u3 KɄa>)| ȅ/a|+aa 8!:X`2=p|[%2\eY>IʓI'$yeYO4up\d)zS}fAp+wdZy:B' ]+dLf5p7A/M_s`5l.(^ &O|H y Q!Kg_E11`+`55<*ԟB)ԟb>Ľj=ɳ\zye&jCMZ2*\p^7j;\C 7pL }f ? [` [Og p ;a( p0 FxYIa\^7`'}X } ,O3|_@.| ++X `5| k1!:X5+a'|\ G{HR)TJ-RK/Wkf抁ig-maa@HM?V jDIrhT\mϼ'PiI?r30gॽve\8Xk"N1ÕptqSg]!dSw J`?7Cp,` |ZLB W/Vhϻsywa<<Ma\ޟsy{x{x{n;ݰW2&c0&c0&c0&cdN쌭Y5q0jFRxoe"ݐy&;_ۋQU3jFW]5i;i;i;i;i;i;i;i;i;i;i;i;i;i;i; T@5 T@5 T@5 T@5N;P 6rFp7egx~|vᯏ<^܈ PA!Wnr&WnrF,B,B,B jPÆ6԰ 5laC jPÆ6԰ 5laC jPÆ6԰ 5laC jPÆ6԰ 5P# 5P# 5P# 5P# 5l"hC]YDDh]JХ 4h3*b_O}='b/!b/!b/a %10PJC c(NW_\EE4#kXo6Tȁd9#3x[<ɻdjm=p G{ko+ViJ`?7V/Rq8!k/ ƫcRew]nѭ^-n˨2권G{G{G{G{G{G{G{G{G{G{G{G{G{G{G{G{Gà Jn݋|_FlFgL.⬹$G~Hvd'LN"tD$B':IN"tD$B':IN"tD$B':IN"tD$B':INq3Q8ȋ S4fr BW7͵QMMMTrD *Q9ATrD *Q9ATrD *Q9ATrD *Q9ATa׵r6Q QbԹzhEۈwn#k-ijx6F8س|$][#`$p7=p/c~x`Ȃ 0V1xl< 1b̭s0^;o XJXkXNȃ`3| 6ȇCD"N(G2T4,ѽ1O֐Ӻ7d(F†YoD'Ziq br)o9LBE,*dQ!!"!"!"!"!"!"!"!"!"!"!"!"!@RYj K d,5@RYj K d,5%,)dI!K YRȒB'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~7Y8O\CB#Yh$12QuQuQucCP71ԍn ucCP71ԍn ucCP71ԍn ucӈ:ӈ:ӈ:ӈ:"5&63R10w9sx45i~i~]w_O~'~?O~'~?O~'~? _p_p_p_p_p_p_p_p_Ziw a;m3KTrkT돤*h*h*h*h*h*h*1ĨJ*1ĨJ*1ĨJ*1ĨJ*1ĨJ*1Ĩ*.e;80~TX1Փ8888w>k&33q5Z\2׳x*] Ϣ^G8Q/zqԋ^G8Q/zqԋ^G8Q/zqԋ^\f|{+-FUr%ڟ}1CfNTom]q9ٯa*ُRy*Ry*&o] q+@\ W q+@\ W q+@\ W /1#/1#/1#/1L*R9*R9*R9**"*"*"*"*"*"*"*"*"*"*"*OȾu=k.a!^\l84Z1c1AOý3/ҍk/wa29}SH< e> q> #&XcNCyh3d1zͲ8POɕj*NY d:e#gٔ@]KL)Ƚ2Ↄpr >>?})u b24Y>Kybe-\WuG*[zÖp+xxlds?O-I ːMcpG G0Q0jPӇgQ 5Ps?jFQs?jGjT `5 V`5գ^=գ\(\\U\P.ra \|(C9U\(C9GPQ,R(UR(TB(@jFj P(D U~ P|(TB(TBAٰRf68yʬE(3/ K\!N񬜀|FO8v2Ҹn/fȗpdFw[_n]q*Xw2jڍ#MpYm1ަo'>+ROi$cIE/1z9XcrH\BݴezEK-ӲNôs޳Z-`uA!ۋAjà -qO9)98's&kb&kb8&c"8&c8%S"8̖Y(3%٭a-(Z@cJlWRNR6ЏBd6jђx;n O_JDLMKyr.=7ߦUN)Z0Q!FgQ! 1=.]nCX!Eϭrh W@{Nr3ts7=M2E|G:-:%R t:@X&:e3||vNwɥUR( OC|{^8*9׉3`Nq}VYK2eb+ep硲2RYFhx9Gw˥o>e)y2yɌ{٧(b(ݡ,FI#vDَHډZA*Q^WDJt$Jbdnbnb^b^b^b^b^jvd%LLLU• e^{އ,qҎE?pkm8#vC6Es G1(Npf-2T@%TAP_/u 5\t7\ uW* 3ϯO114rg'觜ϕ䊔 TCܐXM7YȉTDV؍؉K6nLsnyN TtA!r" K& ?{"=H58'ഐC4l'R'[:o½r#3@63tKw]C 7pL7C_'Z $Z q} ;aoy8#8( w/=\ X/iq. ᤜ+0Lc&w.P_jf1< GuG5Tv^Irպj}jMRߣVQe 全館b*YEż@bR1'(s:FjoyFX\n+2#obF.`F.`_wgc 2ZV^DXsk,Q Oߨ{حYY de55-Vmav-n ZfŒZQ 3aF5̦ٴ0fSl0fAfcja yy**y[01l|E cc^U^Jɓo{d\ocd¤7-%o`/9H!}ŹRϕ}ڱO_NBG!]B ]^} l}][`穾wZu :"GW d#}Ӣk&fXYVl`|}wh#m X6`FʘCs(êX5UX5Eh#M`sǪ 3yaFmQZ5 2V2ZV{gP^j<[^ZC+sheZƯeZƭeZ?qczr={=u ˠZ~ϻ[_.rS= g\Fe\R=yTO^'/Փ<'ճzfK.'ԓK%k߰~Bazf_nlØex1ΎeXkZXz by0VjyKGzÒyx65xV\zY< Yc5re\TauX|ϑx=au q>e ~pJet]@$Ih*RA]XQ*`ʗ%G~uhh(.IKRT$.fIP- N$ >a|>'Dh̥I;hg?J|O;$ C`)tCݐ@7$^Xe7?oy_X @-" , ,{Hh %RX"EOP| j~& jn_7$+ZZYW̹9msmx-Rx-ZjXřc s[)ͯN J G HH}%}/*鿙DE~LXJ ݠ/dAxqYOF 'tڄ6 k=FkEC"Eç>ǟqzar88~8c8c}>>RFIEG)HIFJ2Rd$#U\2j YѓT+~YEUİV53J2$Vj.VsZ51rLI2$M2$t5]=IfIJ.uYEV$uˊ(ɊgeUIY;lՄXOYO[VlgASM|;~gq!1{83B$O!&exD*P3L9$q}qB(NBE "%0Pa\ a$\`4\cJ kZ \ p#?a,g0^Z*>b(R_Rml-ULc (ljR/"jY tL='jf V8fjc8<^5g4RKLk(a0\X#` \Y̚^B.490S[IWRlMhEts3"p.td&5٬fM6k{AoxJO2ޯ渑!UIKiwRKYm? ]+ ` \X`<n` j"w5}ALc0f<3a*x^m7^0 /K2̇WUx ^ܷUx}u`hB#pl[5-600Pi%ǫ9^ϑ5oa <3j"g5YM@`{fó*l#^FχWUx ^+`%l aN]P PoI )hC!s|:q>8NO'ΧgD< 9`.c|SK<. B<.ģ q3L:ī35-E55aM kjKo? @Ԉ@Ԉ@m}!|?` >T ҩ:UAI?UcVOQ\w5]A9='qƾjڻ\DdV%Γu蝎(8"[6rl1Mt7 x NNnFJP _ 1$g339sU2=[r-9&d/&b` aD>n^*ܑC!w;#w#1"Ep-)[Sl5jĔELY`)Wr\-$ʹА<5Kxj,YSfOBe⋧g OBNuÓ 󴙧Uv .57Df0 a> > > > > > ` 샯`?B.(2?YP6 6 ۠ v@9 P%쁽8>zHdfY?'vu`λޟL2C&so.Oɐ!CtV1Ǩ1Ǩ1#eP.*E\T pQ.*EdddX; x-X1L N N N N :dRLI2C&uȤ!:dRƨ1jnƨ1jnƨ1n^R{]jKu.ץ^R{]jKGG'\>_4B$f8-p $mJV_FF!s9d2z%GQ2z%GQ2z%GQ2z%GQ2z%GQ2z%GQ2za M^&/D hB4y!M^&/ԶVQ .C5T&500O)j!Cu.5 b@WE@jDQ-E'KݪQMp= ACp¡Z8T jP-CpAQ5F]ԨuQ.jEQ5F]Ԩk,P-& a b5 4 4K!{B.79T#jPC5rFȡ9T#jPVsj.ZEh5\Vsj.ZEF_쯍pNBb CˡͦEpP1u EcT êUCUǨ||9wN T@3mbA!*c;FtLӳx i;qn0PcGq}41" N:*=Jc*=FMMMm>3a矆n5AqTY+T(8J%R ?,dXHeG,dXh@9K.ZE+h{ZE+TyTy-LQ9hfz .UAOzEO{R*vծEZ4v.EArPzEom]rrrrggg%%eeTrع> OG Y3́%y+*Շpܪ+~(PY+X4A!^R2^,[<ѾKl_)ګ|yZvΫ&#^l*bXqne4Fz{RFa< ̄YOS3@?g&1F-@dUyj$)8 љ젻C čEXčEXč5K-rXUkժZ:CԒi5t{hkevPg~^ `!| k`-`z;a'T.* %쁽8> C-A=| 8TE0^W_C _& [`+l2v*`TBT×B PT^!vxsC++䷔*?b*WJ_*eUJvm6{e]W^e {-_ȶj[Urv6 @' tw)]^~^]]\L'I{be%А 4a)zV*EK{Z'aW1LHK++'['[HK{7wD~ >VՖSЗ2_ ůd'DֿM+Q1[k;E6{%b&*P65V\MmFK'i~^1j?f5מqOBӦx~;{J1H,}wE> ›w#7= 9Yv}{7 2o;\s[41O;T<`6A!absnd^a< ̄YOSb8;쨆j8;옆;h8jyFrq/w_˻Er"6$S)3*rh\..4FDok?׀Ե uG];i<{"J`Oe5mR<)xoS}_ݥv4}x{?"wCӟ>os+Ļ_iNDq,!22'Iym|jS-6j}cnq9/By>yʳ3=mwδy \WɍTG3,ՌZV)yvMѪ NӪ6#iQ뷭]5mO24VIm;=vݱ;R~&GLi3BH^;!Elrqno^ޜLZ[*]ڽcFslef9`lulW_ oh34QMa5=7v7qrҿY}0"2Υn]xߋk~|>ky?3.у}8\˿zM?-F_a&Y(IљydtLW&z3?Mٛ/s,A/ ̵c]3xw70fs:N!݇vA,|Az8[ 8w>sU([+_d8׋69ׇ6}=Ɵ mfO'Ƿk796am?1s[wog}ryQ#̡ J߃(Ide?P@dvg?PBt]~ĎuX;Vz˰Bw{f4KcNF/|]܏vӮ?N"*PuGYdHo/ٛ,2ܱz)tBW 561TL7 [1Wv|*"|Qk_%47-LZB [qZ{^m{mצks\ qZ{WP[+]{WH["mCaZo}c-KWWii8}6DUMOFڏI$m>Yv~~6Z?]?Юh7i__&FAWisjN[Л=ުOmZ>itm ˰^:>egퟲȾ2K+9@ԾA9XֶɡrV&G˴rc.yNxmOyV#T{|X>5YrO'|].Z\#h''MSDS2*w٤һ#CgD K1'4c~~xCd,63>0ƧF>(3;4RiC2NN@$E#  F}iP^H~h}E 8 ? (S?6)<3`e:'9f7nv7=f3˼@/3/2̫̫t׼ƼU?`iNOs0j$ɁbsH25Js5sef'l~j~*G"H^an071fsʬ0+OJsΌfެ?7Q3)o3,!a[aK+ӺHk FG++euu|k~f|ֺݺS>om-_&YK}}er5͚&߲fXȅֳ_ kzٚ/?^^[oYke2Y`g' JYdZZkm%V%wY1kk5Y~Ky̶lS4{!GGaOO=ߞoٯگAM{ۋ ^adٟEv.KL {.=r{ۮ+v]md1{mŸ>f3.Nv1(mthcpڕiWCnN6.m1,m|xcxiiwM4.Kvqy7K1 ƍ? #Ƹ96ָ%Y3c\(Xd,X`=ҳ/2O*^c~*cMzuJ?2BFFƅ L =z!PBko> ,TX* VC[+CЮPU*>T,  C Pc9vN#^*ipp@<|^W>'78h  _H/_8:|)ׅo0eM9|i '6; cv /[xry4fp4\a i a}}~p]5/  2Ggܔwdq_Ưۜ1] m2G^;^^W~9C!u#~e'sgǫ_wzwS=x֠ywE.{)K6z>#y`~ݲN^H^U}NS={ק_+=~ngm/uz݀kTE6u;zp3$ɳ՞]qoǫc,^&E=ǻu^r[gk̝ާy~fy:g燼{Sx痎 µfHgyG6}gCVn[__^ͳ׿L ]m̞E+ޫH 3ާ>#zz/4kW^eyFY~[/¾8z]_L>fg&Q+bժJ[ Xb])*l $I""lL";1BHdyd4Yn @s}g {xy31G\p-!p'B_p^~Z a]k:.R|J1Au~~=ntf܂[эλ#S]oOڂ |#RFP(hE؉ǣ%' Es&OGaM\\oc!J\YWĕn,pc X7n,pc rcȍ!7rcB!WUUUrUU8^<=D-Zǧj99}Qd6br0,p` X8,p` XqqW U¤U7%΍Oq}s0q1.qMn*$WEUBot{%-ݸke=/w5r،-c؆2*Ϳc'*T.sObo87Ui,i&7=uv87:<|Gߓٲ6*wPs?^,e/Y_,e/kU<Īxf0ˇY>a|,f0ˇY>tUQQ? z⏟r,dy&3YLg<,dy&3Y(ό(dy&3YL_QF7,_d!Y^@<,Za,?K,?K,4.ҸHQB9+D B9+D B/jhPT?fNzC 7PzC3|0fx *[wn呂G jæ)t)I[9'9iIsNsҜ49'9iΙ<`Ѡ}HVI*[0'9*q9IV)*e93: UQÌHUZBL48i>N +4м"en^K :3xy]D&.~~~~~~βt,e,KgY:Yβt,e,8ߌ͸t,e,KgF$,e> U"e^~-KmYjR[歊%,e>Hq*/ei.KsY˼7{Z7R]T,e.[GVQU}tU}7G[y›ެ_e?_V/?x;s8s8sY=V"N'8 5NqB N(pB P>ԬzbkZ֊YZ\ RWU❍ygcY;ygwzgIQ;*=T,d&K5YRMjTw]y}ew]R,R,R3Sՙ)K+K+K+K+K+K+KTz[@%*6QA#aulv/ߚ..fmf{6Y͎#&ّrv'_5WMjU|&_5WMj+_+_+_+_+_+_իg/ًzg/ًz 8a'l^땿^땿>(_Ӌ"l^}zQ^ԧE}zQkX^y^y^YbM{eW^ԷWk++\MkLYmX^Y^Y^Yź,e.uYًzg/ً\\ .np6.s6cMkX ~\|W`>ķWX>^_pG"˛ooxC_G*FP(؎1qB.^ x!/p?pv.VcX>VcX>VcXUV5 w^;ECNUS}BѺT.UE}AZT*kOER;U")RH2`m*wUZSQ֛boiH4nݠ#AT^q7nU}G; X!7:at8 cذ:6aoa긓yE~÷{v=|6vo^˷{v/>ʷ;v'۝|NTSm?8Uީ̿ǿ}ǿ}ǿ}ǿ}ǿ}ǿ}/wN}iN9ػw7!;uL6}2K:=}rҷoSdwQ.=G#_ jWC5._Wף||q_CN<듯> n:ؑyW*V9ʩUNrjSkZԭSwpN;t#nҍ\K7riK\Z:ZW[]K/|1Gur#WnFrGvFse+Gx:od#޾r^}>U>oc88Q]#Y*GV9Ƒ5qd#rV;8q#'9ΉuNqN*Eguo>Y_֗ӟ%es\?yj=i=7z4VwQRPJJC)u(ԡ:RRPJJC)u(ԡ:RRPJJC)u(ԡ:RRPJJC)u(ԡ:RR2 z}_5<||:ᩓ_?97o5&Y#4&I#6xy#VGzhEꮛD7Nidtc88릟wc8NCWbl3=G6W~Qt[ⶊğ Q2]F359{j늲l:yvݮ&7qqZj9]yO5>gt9ռ.^yeœ2]FvGf=ͫ^6eF"#[ddW8+/բ+^.25Ffk> /2#[fdk2[fds',0mF_o02 6k Ffی` 4A#WobЫN\;'kWnfQ o0W{wSxCL?'F7Oۓ*#^:sb|c|m{s;`7jFS0'kZsh FS0'kZ4(_a(E( FQx4Oٷ w\Ĩ FU0BpQ*g$ۍ$g$ۍdl7dl999;3U{ؕ9 9 {˽˵˵˵ƽܸr֘r\Ao؆if/ˌm؆iNv:n8l8l8L9L9LۍuXuXO/ջy Vnۻ]l4Oycm)Us7Ƴ\9j\5Ublm77Wo6fbh&6rvƼیl4#{npw,m4ƿwF^˺zYW/e]u^˪zYU/eUU^V˪zYU/eRL5^˚zYS/keM5^˚zY#7l o o auuX]VWamuuںEmݢnQ['8;8qZW[jk]muֺZW[jk]m5֚ZS[kjkMm5֚ZS[[-:MkM}5VaƟooRg5uٚ:[UgklMuuٚ:[SglM5unQglR[ٺ:[SgklM5uolnnnt%5yXMvUwUWt79rs]}_nNnNnNnNnN#V9秎ԗ(iyNsZ<9-iyNsZ:]1Sy}Xo=f't7pK7tsK7tsK7tsK7tsK7tsK7tsK[ܒ<%-ynsK[ܒ<#ysG'ܞ 17nnO~<7乡! ynsC77! ynsBNQNsA7 y.sA \7)Tr=\z(CPr=H9\Hr!B(Wx1Wšܡ^E)w(>@/QN5r=\z(CPr=\z^UPpՍ+nWטPgJᳯay{J+hx+heK+gPr=\OoKS.M4ҔKS.M4ҔKS.Mr!Bʅ )ʕ(W\r%ʕ(W\r%ʕ(W\r%ş7&{d>7's9N۩^ziꥩ^ziꥩ^ziꥩW^z%ꕨW^z%ꕨW^z%dt&+QDKS4^z%ꕨ^z%ꕨW^z%ꕨW^zIJKSDJ+QDҾ E4TLS1JYIYIYIYAYAeN:dN:dN:dNFQ{Gޑ >rK&V`6^2wxƌgxƌgxƌgxƌgxƌgxƌgxƌgxƌgxƌ03131+tLgt gp gnfnf&&cV3f5cV3f5cV3f5i#jڈ6WEJ.Rr\"%)HEJ.Rf>c3f>c3f>c3f>c3f>c3f>#%(!3?d2Cf~!3?d2cf~̏13?f㿵kQh NqQ>"o@vNJvRd'%;)INJvR%(9D!JQrC%(9D!JQrC%(%y8z<7JQCPwConͷ,(=D &K[p+q}w=/ua3 Ǩ?F1WH<ͬӚ$-%oK]]]]]111ܱ;pXkcw4w#iHsG;ܑ4w#g[^b*wQ]TrE.*wQ]Tri*ri*ri*r|U4TNS9M5TNS9M4e(E4eP6M4UTjUTMS4M.jfijvQs5fijf}K.uQz]8:AuPz^:|7ZES)x*O<7&,p3nm>nhgQ}gQ}Vp?O3/у^,ů }y\r^_7ioq2Xa pYYYYYYzf?v#6![q 8n-wޚԚԚԚ ; ; ; ; ; ;mK-(!EɭɭɭɭɭɭڙPc;9c;hV8 l-N-N-M|/q͍:8;9{gwrv5ki Ϲo]WޑXb\ FoxDtJDDtJDg? ݑۻ$3HLg}Xn?$x&3 ILg7 Iw3; IN~ a#x|D|HkvJkv&蛠o &蛠/R@HO^6/6/6/MxOX0<֏|%>6 >6Z`nnkoV+sg][[ǃE5S^? SPsmF%yA_|^ibaS ϛ yA|d07ܟ8'`0>o2x0>o2x8>o2x4>o2X7!>o2('N\T7&cϛ My$~<7ML{[ODɃZ&yg-'&Lm`C-'g.̊&lP|6a?-K>Zg\r}|^Yz-wg,gg,kY,L|^x-g൬kyxƇg|%;c3[6r!kԏϽr=>Ж8)q̕]v[nQ޷9k+x{Q'OlX֛h[Yж}駜sھK7Ol_Ylnל8gלxñvSv˼moYlct͉#m_}i;Ml3k~ǯ9ǯT=p]:%/[o^<ޮ<5ޮ{KoK,=>lьEߍv7/jUnX4c_t/?7v>x_ǿnn^Ypm{/ޣbeM/_Q<{♏Ό=37̸x8mkN|}.pw Wp;NwuоY'{wN\r<9C{<޾w7|"Ic<[}gFYHk=q&^"[%^hyA'| ԙ+'V+O4Thmso׵q{ֶKoߊoZžo}kqg}sM6W=jx+50~no&2oq[į5sclqůw- hGILA8/tˢx9^JET›x Nr,|)| h$9$>KFp).7őGf[mqdőGY9zQcs؋<7U@U[?`V؅6{0'7Z Sюp0Qe&^Cr8«=ux= xxGEx o;Ncp,ޅw=8;>=ޏ?D|''YOD OD˩(x8 <٨r.Wqk<\KqM\~BQ&,͸?q~;q~q~g9~_^k)~er܋4VEZ~Џ ~=вmmB|ac..<\\9h[EX໸ kqm>nC܁N܅n܃~_A/E+k"X>#5VwX܏A<Z Ŝ.mO!6O}ElS*kqau}SOFOEvkk{"n m[G_9#q}o8־ߺ=wn?_yF_oķ{ QoVoD ll:HPC5>TC5>TC5>ZM}"]QU}UWZ^U˫jxU -SvUݮw{vqu'%3iUnTP ]eWV^@v\@I@׊Fhc)¥4@i;2fH22Ms+<?^3z眉V8G [wEz%WrHFb!^=# *Ƞ *ț)3HdLaZ /a1̉΅?/6ן_r~<ázĔi`_0 f/`_0 f/`_0 f/`_0 f/`_0 xL.$n> aNi.xY07 el,}Kϝ96# Wr=GQ#p6/ǗW5bb?wa\Єq Zƛx3oFK!?C+Ax! "׌ހ؈'P3spb$ʚDY(keMI5&Q$ʚDY(keMs~Q[M^fef^fef^fef^fck>zgv>^24 ]+C2,C2,C2t MД MД M-2t "CВ -В -В -В -В -%yǢje yyyyyy))sd_2K~/%sd_2Cgo1y~^Y3_顙kfzL/fzLbo1ӷ[DNsY2KEWR0o咙\ ڢgա6C9>'RJlZ)6{Qeax<۪͊_Rr~նN݌hG'nCr^zUEiiJBY b5c: c=5̚ffM3:zl3]ۙ~kaI4>] A,C a,V:]++ L|zl|#`C<`ӵakUh_A=d7[qul7[qul7[qu<:30aD7Z7JԩHԩHԩHԩHԩHJh4v c6~ }]b%W lWJl[)VJyB?]ь܀q|Ro[)VJ6/-X[юt h(v= w {Hw1{Gw+r;b^!1{_9÷wT.KT.Ǫ(VߥxOa <RGQt1eLG3WǫU)|'b*@a;jvFjvn30{yޏ`C+^; _u|'D|QFnȭU#jA=\< "\2s\jK sa.5W*4j\y5$q'zp=L猨Y5˸f,e\kq2Y5˸f̦*l¦*l¦*l¦*l¦*l¦*l¦*z[NPrZVojZVo巵z[",ƭhG:хq= w܋%Kы}A,C a,GE?r(Vcy<]uz<'0yo 2e&Yfe&Yfe&Yfe&Y}Ǥ1qLG ST.+SG'ޙ2qx?<AGmn1/쎛ݜiN)/؁䶔O0}sG?cǸy[3}o4|~88ڿ9|q,cyMs!/!/'4ĕ^s_jlo5]j%a&$̄,Lex"~?0dž|5w<'Qq%a>'PwL4R[x[P5o5wq2N}ݶb?bϱqmx+ݳ=+ѳR,ӺhZM)\4QW;^zWV\qK' t.K' 넋u:bp.ت ꂭ`.ت ꂭ`.ت ꂭ`E] VtJGV;?8M}iԊFQ+jTt.]K.KbIzVըn5[VVoM[i*[un֭ҺUZJVi*[uJ_f/җYˬeU-}V{gY}TFR]*Ket.ѥ2TFR]_ץu~]_ץu~]_ץ2Ԁ.5K RԀ.5K RԀ.Uњ#(>qq>Cq>O =Q81 8q_2{k:p"r^Nz9]/tr^NMy1?zW*^E׫z]Uj:\f܈?hşpn,DEq+сNcJeDY(QJd4Y MHd.٪K꒭d.٪K꒭d.٪K꒭dkn3et#3:cFg13tƜΘ3etƌ83911B13913tY0yP3cNwcFwcFw1;ftq@wtǁ ꏙ8sc NJX+c%8 >C X- 뎴=cG>cvkM;?l.[u4뛼~sZLi2C'm~zi}0=q_/h5y澿rQiTw՝FuQffiffi);u֝ls\6eSEw^uY2ٗx{4xv.awL7a&߄~obo>}/>a?DŽc1q!vQn=-e2zZFOi=-Ü0qG}-k㎮go;h֪etGR_W/^c=n9-tv-` u=q =eꎍ&?q}.Nړ:]Ftn@2cj.;2 vRl8ņSl8ņSl8ņlx)^ʆ;E^Vˊ{Yq/+eŽꌳu:l&Ʉ;p'dL w2N&Ʉ;p~}6< es\63ZY8kgA+vЊ-XѽpR\ו~F?O J4/Wf]ef_&E[|mj1ʼnŜs&_vn^)o~L98Z?0VN9.Z鷺^ӮVNkF_~Z+Ax!ģXAkXFP@۩F:jF:jF:jγγ"("hܚ M&kf5ɚd5SfL5d4Y3ML5d4Y3ML5d?ͨ0>c8A88>p8HY7Msd>7Msd>7ԙSKLv/ {^l6ߡߑ.En4h~7Ed~7Ed~7ߑߑۡ.EshnDk'⿍͈7}/qK;3wކn܎;i4~Kc cxQo=!ϯZ=lq{v+x{EkXlF`G.YuX>s1'jUMrIN5ɧ&$OMAk؈')،;3v c#=`IG}$aIG{}x?>}/>a?S=%|O 3/a%̼0O5SqZDtgsp.^t*4y0;dmmM "a_Hwa`y UM^hMufml뎷5+ʺlc]S{m|sGeb{~(^넙%jzGsG_K~ W'k:{ч4V`%V!,B sac9<bQKa;,}wXK7}6hC}X^܏ )< oȼ~/Q%İbXB Ka 1,!}4V ՎbJ(c#SCOc69Ͻ%DFuGm_9n[\?q$k~{vWnVq~>qj Z¬0%j #/g9WlYG`3qgo8yϽhugm>CqQ8ECW o{{x|G39'C?<\K\W9!H7N^ uH篾͐?C?sO^}җic;ml8khxL \lGԍ1|9lzǾW^+RzEJH)"W^+B"|圖 `D?F`D?F`dN]=$S|0S|0S|0S|0S|0瘌p5¹F8\#ksp5¹F8S38S3|)ŗR\zH#&9&Jy^}y^}y>27Go}Fd݈/SVShΔ_Eso{Omb|\ps4gb!^+z^+z^+z^+z^+z^+z^+z^hJ\&\k0/wOYmh?Z-Gbh?Z?.%i\%i\%i\ei\ei\eR}MwrU*o[VU*okF5' d}>`lO6'&ύHJ4NJ4NJ[<7")<)<΍HZ'ɷxnD%$YB%$YB%$YB%$YB%$YB%$;7"s#FbCXXa!YccbUW3% 8$PichQͮ cf{b/kL;ig0 3v`L~ޭwy~ޭwy~ޭw0g,sP987`BL u0&:P`BL u\c.yl߸W*4j\yЍq= w<UYUYM]M]|n1[|n1[|n1[ҙ7Dz}^߭wz}^߭wz}^߭wvY[;kkgm:X[k`mu:X[k먽?> )<}QY]^5Ƞ dP jA 2A5Ƞ yIdIdIdIdIdId7uĺKgڎ-Z0-EV^KlKlz.}la%X=9c9cI KrAdAdAdAne[VAn_kDyQw(;7Dx_hG:Ѝq0͎n/}^ԶG쳝}vώxX~<Q y~ zl]<~[݊g,> x/!-n30{bvc{}x?>}o< >?>qqHgyfǺE%'ϑH2$SNN#dc۝#XZSG bUq[0e>ãcu_ꎷ u_sN^sR羋qJԮvCLawYݬn|7k5ɚdw;Yl-Ö{r[a=l-7;|XohIl}tOq.'kk =3v {4IIz?~///////r/r/r/r/6o񷗇XKbiC,m !6Ҷ-,m~F;( [`klm Af6 3ddl A66 d_k} A5g$-ʲqeQ Bp0^Cb}iYdV+JfYdV+JfYl=>Jrq Ni88Yxƫsq^:o›qނmb˥x'.ûn\+E=>UnMda;b]찋v.va;j%O./+-Uu܆oQQeQeQeQeQeQeQeQeQeQeQeQeQeOOp~& gflyyXx_dkkyS̼0f{y3O03O03O03b]탞~_0Jw1.{KOK_һXzKb],}S{&>{Cm!\_t[D Q2%{",8`D]쾋wan{)^qQ-q q8>JR6M e zl=6&?lzcg\j#d#H7G 6.cGnA;v`J8l[-dm m m c1Ǭ'p#7E>Oӎŭs ?b,Ϯ VXuyyY_M׷>~fyt Bwθ;zg\/sQ8Xb3KR6,e3KR6,e3Kzlf]qwJYvuD|Ut{I܌OElili=[Z-'i&W=v ]cs;[>~]>'_^C=賍6D7E6M/eKRkmz_|<}#.'sc=u-pWo {le\t[l bjaKL,6IJ|. ]mZveԻv[dE&l+m+meMl@YEVmU[dYEVmU[dYEVmcX=lcX=mEcX5gmY[㬭q8kk5gm-7D ->U1o{܄OfLҶ.mKll93A63 mP *AmPETUAmPETUAmPETqAؠflP36ӌi4c{=ؖ*mb[ؖ*mb[ؖ*mb[-ٖlKs9Ҝmiζ4g[-ٖ*m`[*ؖ m`[*ؖ m`F*mbF*mbF*6M#o46M#o46M#o4 C2,C2,CϲIv>'$;dㇳxWxWxWxWxWxW,el|ϲY6>g,el|.3_ڃocmTaf^af^af^af^af^af^`f^`f^`f^`FgyFgyFgyFgyFgyFgyFgܓ{qOϊXdEf\dEf\dEf\dEf<Ìg +o,-Wp{2gU[`U[e[`[`U[e[`U[`[`3<ϙ{ςXeKq-u%Zh >qEyf[ayF;b+ `lV+lV+lV+l5VLT+,R+,R ,5R̴L+̴L4L4L'iVi1 7 <=B+,32,32pN,+li N2 ɽg|߃,2^;`]]qߙ8s`uV64̳z[{]oͯy?=o9Bzk)"k) ka+3$d'3dϛbWL_1+&}ŤbO&y$s&y޴4gM\1+p7oMܼ7i'Mڬ 7Q+&ir҄bBLȂ Yiz|To='8 'p:^3p&^*W58<ux= x#ބ7op!.x;.7jp; wZ|};~X^?ݸb=~ P]:zEGҺ5ڦu^˺zu4 ZD cQve4~u]jO=nOvۺ}jgh` TjX/j/˪j+jll**lj%̇|·|·|·|·|·|·|·|·|·|ʇ|ʇ|ʇ|ʇ|ʇ|ʇ|ʇ|ʇ|u/sԺ,/sҀ43mUYUY盁 / d\2q%)2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2!2hu55&k2&k2&k2&k2&k2&k2&k2&k2&k2&k2&k2&k2&k2~Q/E(=!d_ 2~Ad|Ad|A?( 2~A/oooo/_]Qbhcq\f5PS 5PS *aA%,_TO PS *aA%T‚JhJhJhJhJhJhJhJhJhj*j*j*j*j*j*j*j*j* *T‚߸aA5TCA5TCA5LjjhjXP Ϳ.jhؠUDME4lH*&TE%?*K~=dK>$n{#0xK{ζmKb[eE"pztW+pΖD7+]*[>vutkX}聎{p'r u~i<Qc}9L1L>{R<\_-pz`R<'*u8(`en;GH͝ǹ<#r竢bxѝ㭸ѽWx|m]v:qOd@ϠNCϡй bיZ&:&|y:mv6fwl Ӳ!+aV6eôlHˆl(Ɇl&Ɇ ِ %ِ )P UP {dِ ِ %0&!%R2 -e H~ZgEVgE~ZE}ZԧE}ZԳϊhOvV=-i=GD;#hD${D{h=hgD${D{hgD;#{D{LhD;%)ў ўhD$%.6&D{BKMvISiΊHOHOHgD:#{DzHHHoHD$ҥs|7zXO-;ڳ"QF3>/}"~ߒlk\4=vtw>ѺON}"6/bucP\HWn`w WSvJ3"37ݷFw:~xs4ya"\k}W'wXkkkk>|uDO[AzHs~'%FK1&1~$rEE7-岌*ujIzXS\RwwhD,(ok,V9Mmryx>Aruvy!^PGH/bq8>ZI8=ڠ.7 mgU8;o{h\|y+[o{ftk6ͽfsk~=fNL봺N˒zOZq\;\]'C!ש:O˔ZOZOw;˶;D=mX ;;臝b)zrb^\ؠWl+6yK2#~$ģh\Xw ;Opۉx9N8F]utۇW'_Dשк~YZ?KgilC> 9$Ôw<;nUz*m޶e}O7]zM^}~}~~=Os>9= d} #3jyJ-O]jtJqu8*ꭢ&لP_kB-jh\לQ5=gtΙ?̺hn߼˨Ȩqsr?;9 =!=!'v +wBN :!_'|rtBN 9Z3"צڔ<%vɥ]fJLɑ)92%G.)xF38g9#q 1 1 1)q)qשQE ""RHt՜̰茳 +ɈҴ(MҴD'':)INJˉPRE B"4*B*"<.:3*:3*:茊ΨȌLAT$E%%*)QI89'D'':9ɉNNtRnD(%B)ɉNRtGFtEgydGFfDiFfDi\<.J4s8s"6#b*6bs"7<2WQQQD/'z9ˉ^Jr׬̜x*sPeZZ'RDjL6FQS^S^S^RUJU*u;nN7zcw:]yW뼫1hwλ٨u-96b)6b)6b)6b)6]:]:97)&R6n`E&PdE&PdE&PdY@Y@Y@" (>y,9/Ehm_4{L?`&\C.!0MQ0Lzzj;N0@0œ?`;L?eL2S@R&~OIu3i/5hיKM0?~&ϤT?g҄_~&Ϥvٮ3L}d6G՜>`jl[N5dVgs,&>^oj/V&>`jqZ\wŝjqZ̛&\&Wɝjry^TڼCd/EhMT/EShM^T}j$/EShEShMLLLS}v{]4eS}vӺhZM뢚3{L碚3{5?'Tj~uߧZU8'd݂[u 2l VEu\͉RU4DcA4D*UXy ^Wv,8Bˡ^^Ø05{v^=c)˜?!Sʎ9Ɇ0599w^Χ)GwyGΛG-:jQs읗}7\Χ块)`+ [C{nGP9;}UٿC;dYCVp'$ÎhGK{xa6üהz2-?}8/ q xS? [_qQ8Xj§q >V|E|)~.^Ǐ}ikFc3 b3~-v߆~}m~9v,?G ۷W{9b3Qgǟ!>g~ Q؋q(^}?+u+wQ?7vŧ5ǧFp5hl%G|4o[6\p1ގK\w2  \^ո&z MnBuP݄&T7 MnE݄&P7 Mnu@&P7A-rq Ni88Yxƫsq^:o›qނmb˥x'.ûn\+'q3>O|ŭ>/Yb%Yb%Yb%Ybu؂a$ qFܖ#ۮjF<קׄzMׄzMׄzMׄzMׄzM߄M߄MM߄{ψCx폸 G1LGtP P P P @ ڛg?Um_ P P YnYnYn=&cr=vFKGL_U6މb<x^q0|qugY}quxZ(B/B/?Fo|ߧU~2z{nşWP [?R 8|YꙡwyLzhLziԨ~ V~Uzkzk˚k^ t@ t@ t@ t@ t@ tnWJ]I+v%ݮەtnWݮەunWʺ]Y+veݮەu@7 t@7 t@7 t@7 t@7 tnRMJII7)&%ݤtnRMJII7 Z-~ p'zmw]|ǿ u#܍{p/؀ѓ:LL9[0g0000000eÔuSa:LY)0%ÔtSaJ:LI)0%ÔtS0) Q=Js:Ht@ t@ t@ tR=#=#=ʺGY(%#9stQ9J퓎y]ߢ'$ؿQ1:FY(nQ-JEI(Ŏb'Ds]?㗫ãM%nSq qqq? '`{JBYWt@W( nn.3TzқSj[<0O*K*g+@e.TwI@E**:u;Gxj{Dm=GQ#j{DmTITITITITI=j{ުj{ުj{Dm=GQ#j{DmNNNNNN)f n)f n_TjQ/E_TjQ/E_TjQ/E[p^>GZQ#j}D>GVUoU[VUoU[zR'zR'zR'zR'zR'zR'zri؊_F7=I`D/HI`Q/hĈ^0$zWyDFd|d44((],ʺ A.PR_JUa2PCAMh{(-rh; c۴{)+{qΜ$߯O:ȇD>$K>tɇD>$!|K>t|DN$r[Ntɉ.9%'ĘHD"'FY%+YȊ.YȊDV$"ݲ[VtˊnYȊ.Y%+dE,62b#(?ǘcC9>P?$dLɓ1y2&Oɘ<'cdLɓ1y2&Oɘ<'cdLMYtɔnȔDtɔD$2%)LIdJM:]||];5I̘3cr&3IL3]r+GMl9S"s6Q$2'992'\ё ['=]'=l\Xφ~>GH9~W#t$}a$>82l_Ւ~u|ǜFH~+}:p?9Hum[l2HaFI֤QkҨ5iԚ4Lu&:FIN)qO{*cu5ױ:Z^kk-{eu5ֱ:vX]-cn0q08 Kcp,8'$|_)S78oi|mVpvCuHI!:$]tCuHI!:$]tCuȚlMm6[SkTfMeTfMeTfMU5U*;vb2k+2)8Tj^s!3b}f.x/ î cs{y19?#laLžc(АBCRhH I!)4$/sw l͖Ιs✩8g^&CdH =nk5gΡΡs,l82kΧJT[53^5+?/2C=^^e-)kIYKZR֒%e-)kIYKZVe%kYZVe%kYZV%e-)kIYKZR֒%e-)kIYKZR֒%e-)kIYKZwI)kZ6MekZ6Me&J}YE*RVU"e)HYE*RVU"e)HYE*RV]~&(ebUQV1*g;>现IL"Q&1$F(e)HD$R&2mӓ2IL"e)H9=LbIL"e|N:|,lb+YD"RE,"e)HYD"RE,"e|VϾa"6M,bke a5QƐ21jщφI5}ӉφI5}SMjTӧ~TӏjQM?SMj;>f^ؤ?E.O{SힾN|˨vO&jT}fO5{S͞jT}4H[Qm1whǝ ~Pݸ p/CxapNP j8A 'Y|' 8A '55G}\s+wɭ );Q 78߼W_MG>}4+y=8!8p[ {^oo^wl}uoΊjvtA 2]Ld .tA 2]>]Ч tA.}O>]Ч 2]0 u.ú`X a]0 uA 2]Ld .tA 2]Я uA._~]Я uA.A_m/+h/]Ld .tA 2]Ld ú`X a]0 u._~]Я uA._~]Я * * * * uA uA.tA uAETtAETt3]Ld . .tA u. * ._~]LOtA.tA tA 2]Ld`X a]0 uA uA. * * * .肊.ú ..tA 2]LTtAETtAEd } * .tA 2]~]Я uA.~]0l 2]l 2]L a]ʤUѮ cQ| hXEoi|;|g,|9z4% .*.hpIhCkt)cfpJt9f _wǢ>b9 x"VDѫǟvB)ma+ 7&~߆ Lb%X$V2Lb%X$V2Lb%X$V2Lb%X$V2Lb%X$V2Lb%X$V2Lb%Xa0qu:L\&3w:'`:ss 7eMwp3[T?DnE?mN= h sr30pqZ0'4U5u\Y#ޒIä[2L%nɄ[2vp;L%lI#> gLϵ%.W ;]5{bSlbo\Ul{0x>=Dadwc Ư˄c&xxW-[\k,|O K&d.K&d.K&d.K&d.K&Iäa?K꒩d0=Lѷ%A1Z){pLT'i,7H qD 7D}+{bT않*VJ%* JT(@i- HERhZ$IE Oz Oc1LX/1Kcg6-՗b:f`&f2\ٸ-yWJ^i^띹Y[eޜ35yr{8G(cq|T,}t?31 sBSvlpl]?rXLYLY^8qy<]d.:S3:S3WYJLcy^s+2"S+rJZo%r7׭U۬&+ir&+ir&+ivћk}zO>ާ{z^z7:&,ũO >wYrWtq'7⛸ zCW7&]ݤtunZ܊~0c>ю;p~H_/E A<E'B83%,/F `)!Z8D h-Cp!Z8DKIce5XGP/gtN3:yF',y4Lg Yt`:k05Lg FYth:k45MgFYtVo:7՛MgzYtVo:75Lg Yt`:k05&Շ.tLe+ _ո:\o_M&oWgqǫ!/m-^K[xi /m-^K;yi'/䥝vN6FHn^|^>Cxh_͘F{i&٧4]SN>;xgk~Mi&=gӈM)w|X=4b}ܳ{q>ٗL-1r]֜u[5p~A<E'B<k g J/~OyӶsX1˰}9{/b_r_e5eұ>/ܫ`1ۭ؆xoo;PxrXb7=~|. A>#SNq!8},eKǒ/BW8 9} 2SCKl.-\˷?v?/xmu:y}'k,/0fxLef,[xEL\cgoa{̔1@l͔fAKl͒fN3B5v?Dߺ)170;Z-f5s.qc p9;u\Ǻ?^ݧcXǺ?GZbsːY<XVEXoZ7-MK,bˤX&2)I@Xbai4t}:g8ӷ ƹq5vMH*k,_6BC4;6vf[pٸ-٥|uЭyݚ׭yݚn\.{~?rl-zN`us:p? y)yݛ"tnC^j}q|S\gw5glK=Wo[0N>DŽTl|i[2sgLYK'&nysC/sU 16~ocm 161ÿ~~~c:c3$bUt.{D3of͌73f3o|?g|?]^s>3#wy"/2"/2"/2"/2"/2"/ wf7f݌w3n_fe_fe_fhnF l kY|WX|WX|X|X|X|X|X|esY\?esY\?esY|ŷV[Y|+oe,ŷV_`_`_`_`_`',>a OX|EY|;og,ŷvY|;og /',>a,`,w;X|OX|',>a OX|> [dlwNc6XzKocm,6XzۻK/K/K/K/K/K/V[Yz+Koe,vYz;Kog,vYz;Kog KOXz',=a,}fқYz3Kof,7fқYzp"K/"K/"K/"K/"K/"K/"K/2K/2K/2K/2+/򄕗Yyx/66/fe6^fe6^fmlx2/2/66ge6lllk } bN49w%n ̼ 2Nf^`-0vf0'yef^`f^`f[y+3oe̼f0'YxX.Yx‹W," /N\rۮrL\ ¾+{W,2.2.2nfȾ"..wf+\wmW,2 E]aW,".]ݲyꖏ0⎫[>eOe-Ⱥe7fݬuw2.2.2^˲2 î0ʎXV]2qʄY3Y2.0vf]`fɬǯbY`f]`f=Ȭu¬f0Y':a NuY\fάff̬u3d̺֝Yw2 .0qUXuU':a՝:aB.vVΪYu;NXuªu'd:a Nu¨ Qu¨ F0QcQN6]`6]`ӭlMtYfÛ;ߍ{>t~<#xx 8soFiϰm}ïw;#ql2MhcavCV7)v>릅mW a{9Qut@Tb1SP`x_L i!3-d̴2BfZL i!FcZ1-zL =BiǴcZ1-D_gGaMt> p!?p15\ΈMѥYўerh՞5z|7F|7f.?](n,ǻ{Oѫ``}0>s`} um Dc؊mpZopڤjҭ(6혏;cN?](n܃<0 wNz Oc1 _XFLZ"ڥhjQ8&ThWӫNсUUU_W™UB|)UQmcU 8,B ᒝi?99Zust@Y c6@ ò{Xva=,eò{Xva=խaMCV#܆y1YsXի"V%A/^+Xxw`,v;bX@S;pZnê=6caYp8fCXr3lvaMn2j3@dNN0g8cYno?4?;vۇp#?MeY$?_? h s30pqZ0'Wr_ўkp9rwEJkknc} c8hǵ[Y`k|d3> 9v }OUdYᖷ a &W1`zhj|zE_!bY (88-8-~?Q e h 04o3-e,eY,|nO 嫢U}0b?i8^:{80.YâD߃nЁH? ߯q5Wl|NKCOװ鵷v.YnRO#,bNӢT艺qBDsy|l9-5ZĮս3с,{kVT.jC<&;c Ώދw1SCUUXUUUXUUUXUUUXUUUXU%rtrtqItd]阁,:(qZpu8:\o܈o&V,i5KZ͒V,i-KZ˒ֲ,im0=e, r<XVEFGE6yޛc؊Ѵ ѴIUaP#ɨΨ{ÒIaWݱޏ`O‡샩aL,Ns{3GmҥY qǴ`U:5z|7od-|I7c.xcE'B<'3%, ۪ UG0Vu_ٞM: cJw_uư9\X})cfb.嘍+Ђ91TWyUWyUWyUWyUWyUWyUEUߎ1q'~.q7܋ЁCx1,x?Q"O)< ۪ `)!x!\\ /b5^Be5X0 d|o 2A7 d|΋!DjvN#:Ujjފ7r2+'rr)'r{~He{,In ,̉]]s_ǵwKXkż-waIk[=5o<0G }k9{zXwB7b93p&1ϊvs΋q~49ƳcJոr?,q%_g0.}<܎l^;~wc bG:6`stH=\Ct\>vO öWEM_%hte <:ż\ż\7c| K߷c\l~?SaplN93p&c>E/១OccEjoe]Lg9U]ۅg塡9J< /b|?3 ,h(1H)!#B-=ZJͲ,XveYeYvuGKpZkG Ɛ%PC%P_k5Z*Ybs<Ώ`/U.>~ f` ̃5OطFB/%9$sH+ 0 ^cg"x \q7es97sn̹ s0&`M|6mۄEa]'=bIXd)ayJX)ayJX)ayJXX5xGA^^_E`_E`_E`aaay)X^ ,/+ayŰbX^1,W +?$~l@SC`6 0_Q=?/~NS4x/'+a)L &F x`!p%k^u0& ~&[ xL1H&:@۫]Yxoeb_Y]G DL004 3 L004 3 L004 3 L0 43 L0 43 L00̴f 3텙L{a0^i/̴f 3 L004 3 L004 3 L䷈5Sv*Nة;`T SvNy);a<씇SvNy);`aة;`TN`C!tv:; Sv*Nة;`T Sv*+ \`*jF`ٰaX0tf3탙*aJf*aJf*aJfF`ifF`ifF`ifF`)0i 4 3 L004 3 L004 3 L00̴f 3텙L{a0^iobMK Ca< 0TPy*Ca< 0T*PC` U 0bj1 Z C-Pa0bj1 Z>+|59+0> +0Lv&;d`0Lv&;MɦdS`a?YfY*œ Upbc'XxxreowK{YzXzXzXzXq ac+00Xa/ +؎WWzaǽcvÎر@CÐ0^2Ca< ! 00 9 CaC,3c>cpϷ ^Xr,XK`,Y% dÒyX2Ka,Y% d,X,y<K%XK`,Y%aaQS?#ly< d(vcVzs܌`^)EâVW}= Lz@Ķ$.U k-z@.GCc}?/lX5=q`)rc8؞X9 ‹XCXC?ø kkkkkk&(:*:*J> Z*Z*Z*`qo`Q9Q:*:*Wjhhhrrrrrrkp_7&g[~]!֣))3r<qE@k^0ZCGk5(\A'[hڃ =hC!D{![?'+0DmB@M&hڄMb.<?4 B@~#,hEb"f!Y,hf!YhCq\E].hhha "vAUD*********&&&Th* ڄ mB6BPM&Th* ڄ mB6BPM&Th* ڄ mB6BPM&Th* ڄ mB6BCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFPMdMdMdKa%|GAx l- l < Qȧ6%e|A* Yp|_Q=0 @?')cpa%^D_Xyb/<o`=HsD,<8V*OG /q翰V_!D"IkZH)<p q088 y 6/, rbp]0.\ ☺?sW18qxOA3"x B)"_%x"hEDABKf m"w I~ CI#%I3Ev!'!\=/vG|># O=NLm!~LR))%*!ROS_%)BrRRo/SGīԿQ1F^""Osy(*qzzޠ";e/wIj%dkeČl, ļ,KE,=BZ!{BqSLIVMHV"+!nɪqN2}=&@!&LdJwcu1B̋bΓ_y#Mؤ$2/vmZؔM#cߋ;{|27!..űbG~{L] ~N%Eid=N荤~~OO>Knsd ^z m1yy5;t?yq8}H|~~gwJN#.*=FNӯ 9KM_%?ߣg_s[z5Hߢ?&o/AE&Id*yyz,Nmd2L*bGGGǘǘM&i3cgL+icڨ-qQx.j+`T!O=`*bgC)2ߥĜ`~@mg^d^Jaf 3ŒP++ϘT&&`&gIb f%57MGG7=UDTM2NI}+,L3sq=K1F7j)]6NK㟏?B([񷨖:!z> G O%S O]IJxKXVP7(XaU)lG3gòeňo6+"+2bR1)bJqUC1=WTłU*>R|$V|#Oĸ$Y]brb̘&$'fȬ_-s$>=Weğ%.H$%J|'2⻉ӲߗI*M*TIo'J%&ɞ_'ekv.BF(d!}Pۀx[%>1 `10&s:XKş ? .D-Zi W`f`. 08 L{OOK_Ynnt?N壁$T@.ȏ׷E?Q{EWV[7-pgJ1Gւu }rP o؈'GlA!v@v@ LSw^p`C')pЌy+w˟ڊ5,X|jlo{ۻQ巎D$ 2>u@--<ۢRS]:f۵~VJd@5u,\!9i|:\sGXKGǫyyUF+Sȫ4f=Gް"oY/ Q_M4jyMcgdS51i6UυՊ)6CoE.p3lf&2]3-6r.r@n҈nBy;aKS\NMUg4_g5QuV"E˖m@j_+:y-R7/5[!ۖns'
VWG%djKkSkuɟT1Zmcjed86zԍ.6"emm%jpGD2dBk[dG=RS{,el_cێ,wǕ.OǭY*j͏W3dbbsD6#mH8/>S԰>=qDg!9'Xq}gzbfO7#R^*r} y=7ݷ;iQ=GgԋpXg ;,vvD̞C;8\ˎ{zD氥WXDT9әN{<٩ƹ Rn?޹ عY\N5Q;LΞSMIq~v)s;#=Ꞵݟgzrޔ٩d,9/#M9g,GŦNN3TvEt@uBVta,%uIvs~H<.ܞ^&C));s `s~:/X\䘺q)'Ҹ6 msH:Rg[Qu%zj).f[F:Hk[*V˴0bPKWd&kI2/}-dKrM]Msi\N]iV%Rh)An)rj3-a)GZ*;9;\AXKrFJ WPbxŌj#gZ\~^\K\o1y{ֺŖ0re?)떭1|j9)kZ-rrbjӐ1Yi]˕ԖXqy̖3$ ڼ3i̚Εi ZIy~nmTD%-We-W-אU-&mM ~3gWմ*0ވn±ZHyG%W[eUi~Pk۴.Z~Gmvq5Y[cOXc&~G Rn?αoB훑a{!r]AG!N|x,5XwյfNN=lW!Jy\ʓ]nUqZu=c-~p tYwsf~^;ߥ,Wp x=*lV oAޢc?ĖjُJ;cCd?-~_g?OlrF%&5[>ɕՖ٧y8P_hω}?T~˩a+NϥX}ęrso wN#wήϓ,3ts3Λ46-9wIz{'=4Gl֫w]~w+k[zSk2Қ ,[s\k>>غKZďhΦj-e돴Z+'ZSj~l?Ȗ֏KN~rV~5G϶ }ڏSZo"oCm| zڗ[}:E/C:ҥru|]贺)6K/d)-3-QoLαVXxmt[Ke_ҁ.v0vΑ+5:R09*NG&a:#ru9"JT(A:r1GRpTxN;jR0Ws8>n^>nхrYn5}6u0u>nq?>nqWܧǣ듲_A)I"DS8N$6U8fӚ| a)GDCsZW}7.轾)}oJH9/pD"V0w]t\:oQ%)%kl1SnJJF_5$}[8 cv܋ZkwiRf),bF˒ٽU~KNRn[:! pK/%R鏶m䇴6̊m+' L5 mnb.N6说io믶Y]km쭟oswwoq\V[ wvt7Ĵ>ho;}ذVr!UFka] v5aC)tkKv7ll;}Ұmasۥ3=mpQ+&]U8 "C*pk?Wa$3cU4*WeLvFb19]<$qIyB nS,Vj\8g0;'[S6.8g8tK9*K"WciED 5;MgyuyoAjIQoSx.y5}^ +'Pykf34zQW 3/x]x.2C7:̈́wh kVxc]CK9ќ=ˡ))g*R.5T/ps +7ܜ=dD_ړz&^H&՞\=8Gʼ|Evy7{%XlR)eIS*;Ӽ{;2)+K^{\齅~މvL5RG#AJs{ެAODjngGm]kήup<{W: ޗ=]R֨67{66͡ռ +NqyvY1ϨnOu)4^egrwvt4z ȭR*1^_0ãrRgk4o5k)&^X!@m{I J\l̵M %f@jx˵!pZ4nɵ10brm j\-BԤqm L Yٵ30eT˵+0gr\7])2۳wYHG2t鰋 &q`@0tu(c::3]p 'L]'Tp+lPi:,1]uL\y`k2Xe֬lPZL\ ACCf7u uaC"7H6v7llܑVVp/z=7ug{vEOğ-Fӳ;FڝT ?~bT[hOG)[{,7AGA~L.y#CP$ASMQ HRԃ:b F}x@} zxzzxHV*{H$c_}H&i'钾Md&% IKzf;kb nMҚGk6)"&q4*"PD!J""4ijCD%|>-OMD|@ 2X!א$Fn$$"I=NI?K@Gq\V +dY$c`,c,dBd1`LVLh4 KXBxc=h !YYBQtQxY !Ř{oHcrv9|ޯp?qr?h\H \XhrQau.!,̵ }EmnC}M-ɭ?~½L_ =/W>F]G?q[w[^F&qm.>kVal.sw$4[ϳd[?d{Ŷ̶?am'?!Eݶ^[/N[.. l%+kWlnv>Xe<[|$G3J{?`ooo[Y>emr_o[Ȓcےk?jwK?,Sgf-3Q wG?5)!qLf+@\w68ـ2VT~B[*6hZ]Rf-ڧ]upVvY3ݦϺTXXSQQi]1vJ;[1|KO O?qb^c2r@VD3q X)H+Y0_q@FY-` AԱX#H&kbAie1v7{ d{l`=U{7ArwX x$ rH!;)<`Wl5D ߀LbWG r[|/seua')Sf^_ X@a\#4Ga:~IĚVt,s,c= 9:^aaG5u|]cW1 a@LS~rU jf9jZNRAf*JUTkԅjS55&ԥ uڦnPuکQ. zV=^T/4ٴtMrm6AMJlJh"DZDkYh봍fm+.mv&X ˃O 3$/y}E?A&?H>|}!_,>7n)r( PyHhZe VVk9CYjӊ<(ϤSYڠM mPօ CtH&l2lmW:5qwMHڣ-E&RB {C.gmp蘦 VC'P^ =SZⓁYt輶f(B ڊ i\ AzئA47&3<Uf%ѡ'6(<01)uD:#ہn A=ه"uwwcd $h'"کrS7Hg8v>S{V^,=[p&|A ܂Th"~\8E&9HE֧Ƞkr^1#mDdU?65yW[ߛv&ܼ}ld٩Dv"ɑS#G0k^9k>3r\9WEH^E.!cU]@~QADh2r:,ܩ`h.ZoN7G[h/A& _D+qn'*bt7Z.u'Φ`sMI.\s:BԧDy0hHMҀ#NX0@fh)ZWmWD ;cr]M"ڏ\#q4Ե5\':k!}&."oq0(F Lʢ.D;g?h'[C!ۀx~@kE2L^D. ,E n2c$6zy '9WbցX9m,![ۢ;c,;f 싥c1#1cm$18jx?;Rm 'q> 7'ý8Γ\TN1z0ރ1Ě%7L~6Ij>8|;|&qhK\=rZy{KKlW|c亐0$1XRZ2!d2p(PRPФ%3%L1(TY M_R՜v%u{!&$0:f,4aF1*s`ߘDrxng/mKRu\u={POܛ+u{+umŲ'9&flbt.&P'WWc7bSMB)-6)#6)+VՔcMűE4)VO1M3bXKSelHMbleSMlMغd5bm-@`5%buE@2V7ź6z⪩=K鈝Fj;kOl]h>]i:܅qMIo:w4;N3Ƴ.Ƌ.'6]Y| xփL?86  pq⋃q%X"wgcv5X_W0X_o ->w;EpY|_pe`pMHp](cpc8?uwpWKI{ӽӉ,99 @~%1)x=1缙OLov$f`DesvB$NHr.dsQb!u% _F|WH4I,EBٕXJgSooc}t29:}NFt2>rNFgh>C'dt2:NF@'%V} QNFt2:DCdt2E:}NF_V _gf=›0 eW`,9a-CJ|g󥃌 ||}S}$_oo%_[K27WjIɠgPoo2f ==9}E/A_Sf(Z!;?S/ < !|e'1O &"-9x=49t~/Kseͧyf{[ iFX1@gr`',>D8NɌsLuTN[-ʆ>;{*_[B0-e{5vyA:W5$ŷrS ˼+MYDŻm*ލЇlmH` Իû{Y5pю@_v{]% rES{K{"3<NCK[KӮzxJo٤$s[doB ASڭ9|A\ЯE8/$䌙].rw7qx7JDJMHc)Kʑq֥b[{K|9HS 3w }Agi!SG͓|R I5 =E]>-H~܃#-TZ!ڼGj;0p[/oK.tB:%K;5X~lr` οQZG>~ f9??O= -I>qIa^C7w* Y;}?o % 9 f.@!0i&={X 9|o^ |Cި< |8E_/Bg?\!(5Py kBi[zhiFawTG_j,/:g6^N7^d_'w4xLc ~I̅={a%Fd2E Bh\T(Iޙ̀9( NΗ˖ۢTYwV+mJAiW:0b~+S@CJϡt)ǔ~E9啕lrQ\7**SmjwrVSǨcNZBթj:S >TZ.RaUYՀQ[eJu hQݬnUw^zXV{^zηIS`z}_C>W@ޕPs *`5Mw|@+7 o}%"U]P0eomz:hvS==iChְq ,d;HgC{ō 3@`!.H[XX1sė~léS za^vX]F;_;8]fA/uw4|3Nzgqu Alȅ>̈́k\g wVh(T-a@Ǡ@f6qpn\0P6^1qƵj;ly+5Qe֑m"P4 G@0L P(s0G1P x6xZ?p]~{w]eb'+̏ ؛[n~ON82 GX؟0|oUz pc2wP%7fXȓv{ [AI׬$ ` =+sתOR̛Wä[1w6 );un8TM ތR;oMLA~+7I?I$(24)~a3ɺ٧i>[+kJ]7eF#kZ~0w``/?-w/UsaB~ eB%&8|9ww.' W.X?\).uM4ctkqM4p:|Fƨ'H<Nn0f0gZ0ģPx^nk8=L5#Ue1w9طf(#vtkuؔ7;pLо+u-k5˞L3++]M'Wu&a̫aa^}W`W5s5S5upcTt [S0Λ׋C1X}|'>6=bYcI"\"?ƚ/~M}0qᏢ)8b/e?$bc2+1DZ:%w[a!5!nq?aK"'}D0 000P”k!@ht:{]cS󀋀ˀk `@ 5.?j`2`*0{6 2 0t\V\֥\76vv; Lt 8 87B=5>tMX&sD8_\ .4cb\\%׋-6q['GA'3b/^7܂;͝"I) w%q/t׹} HȔR m vw{;H' @'ܧgݗ}hOEJBdY%T~ y`X_%R.~vTg 4ʟ'^`;(k LN-*KGoQ{RD3d?Cg2&g;_tS'H?=6Oz~ B(@1"%6^Gv6%EQQDŽG@/J炙~k3h=>Ųju3d%{ٝ4zO~FRFy%9=WU˨h?N Vr>NvMu52 _BkwB嘓*UBD97[zc wmC@ɞB:-OǠE8>mB¿œB*œjK21?wjx|MgQ>%^iŜWl8-v~OCJ!aZ߂'ЖBETV&xtK8J>A=#7 ?f8~B*o~6&yOj{j{j{_g)RP?pw=gj5=@J!uTjPB)lf=KSI.ScwGR}j.IJ4Wݔ?hjֵ联!SGy5*B[hekRZďh ^` m=GEx׊ -+bN$鋤Z{Ӯ`)bptyt 9OQK&~؇Th, :`!3|mI9߷5h}] =ԯԆ"J)"jg> 4ݥ^ /aqAO\OeaNGz-Dy~uz.6~YƜ{T{dJ4J]xi+)" >\6==EYΤLLLӌiPCQ{f?qN~8ߎJЫ)9q|Rz) XSdQ=%-17[QQTvI4X bw(n^dۊch mU4 Nr(j)eqѶ 86 E]Fڄ7۫pvSh^&G0q8ℇYh'MFR?P^shLd>B)s%܇hsJ^f[B~E#PrjAK.޵DmvIz# RƑ~|L5+.?G^?Lz,jR(CG3(.`'!0bhLOhiuG1ŰC#wف{9DN ?9 ,39h˦X&{14=5Cz(.R"Z7n6@|姞ƻI;'@N%!(ǐ-MԻL'^oh+۰mA05n;=J K|]C]pDdiR{Ps[/s@/Q|"{m3JyF(i o羽)*1,tCT fH+&f~֎KVػ5T|&㡿݅Y>-5{=k؏?{'%SIӸqK%'wP ؽ/kS>{?Ә1!!9$ə4! W &ScBNz;HC)$(oG&IJR0{u^W}}~s{kk{njfw}e%]ȧ%v<43.^_~55NGm,rôYŃi'.}0 >^փ NB_$V3iEmVVɰ;ohػ`Yv I40vub,4%K'Q7InX&P` ai{VA?~oNnHMp;RF~ozfُezZ{pȮ+m ͞%u Sk;Oɔ73%$bA3iS=#?!r0p#z3ؔQ36U)f>eVTmVem=cywzDd{z=|j t7O ^|7v"}w; Q9aZEpfcߛ$qQ2>ze<=2_g+WR,,)AV0h ^J&+Mn%{L ;\wɉ+km m9VS*FJJ9ԃXdc?]X-ru+/97`M]fMK3*DCZh"/+gmJ0.5sIdcY`ׄ%P>H8Bxu J^Fv ǑC*iFNޫB<<52XA#d J #?T6.;h̨صWk-g Le_:lnp)/]P=IBL.OM?y`<Ǟb=^q :0DK|JypiEtWcO^ӣm(؄=SdSRJSZeq5,(#4+evsr>#}?4Jv爁s{QRN iڇ|&{~D]A9w"3GetZk`kX NC[M 1 awJƟ˳I,#0+0X,hEs3lN+aw unoˬ5S}s!yVs!K1 W9m/uXϪ7|Kζ^eJ1 )Mļs4|xxZ(6 NDL8}/-o L/?$]D w omk"g=szu!IJ<$ggĶ <'4ٝWcRz.z=eI,oaJp$U$qΕg=ҹDaw [J3Uy" p*gp=61yY΁7 tF<\_?xcrckL`ޖh /dXG;Ia8/<ѿ[4A!s)<<gdyHF?hAv4MNZ>%j|5eyfP}Kyk _k@'ڎ~ \|Z/"B^M^ۉ\)-B;,w0y祌JKhLGSM9EФ!mОב`I[bs ZT.F?+r_zs?a_ VD%;4Qw#5r?mdUpC$c;j,SlC.*l_EVu 'orH>ghn&>I0ME<ԉ4frÙPb MMprokiYX;Bf^,X^קn<8G&& އ'$GdwHx{hx.rR#{k{/~ SZ #28Cӻ@ 0 З&؟{E 1 s[İT0=AwĿAغqXܐhl$vTw?E IBC#: =y~]"Y&!갳8_I2G ;_]Ѩ01zƴ>ˢ?E/L!'8 ;n ],G_K|J-RSiY"ACֳDPZ{ evG+dC&4Bs!dv%Ɩ,9k@#uX^D?Or&[̇6bZ+  uy?']d,O4EC >1gGp&Iqnvs9O/ֵ{t)6b)dWv46lJx=  ٣}Fh(8Czz JJx ~JjMVEOVsQBm4tO,ɚ[Bȳ}y{= gXuå"x=BətXBg ڠJ@sdلO647 aYOjd- @_I4Z /ZB6Ma=WڏB|Gݴ$-& xȆ6MK\Β=hUo_EjsnUsheCZBo[&Wz{pnpBy<|"K#g|,,>sȻVmLuZ{׮#KEv]vvP*xԑWd%k3ͮ|r\d+39$NMw6B rY] gI.ESAj@+I)g{DO9ۈ9ݎn2,*`(.;--5&[5gIu۱Lò$u[:P焬q'# rZd[ ٣{y$gVleZnxZȇaE44׫O³h#wGqBwd0;@_yāhpA/bه:;:%` ݎvD}p4&ّvۑ=x}Ca+GbO_62A6&qGОRܖ^=Ll ڏҰe}9`[9+#hvcҶ`K Ʀ'r(L:,>A6ђ*vzTǨ[o$r+ivFMO6ѯp+`y?6!3Cݮǣwr#$q.ҐGڹ_qe,2zCmFy,D;`YS~dn^69!.k{ [򡻒Z?1Oa,\⭇Y6,7:UG >4\{ sꝃ32=Ǡ!zXj"2Ȭ2#6iLdtHVC^UdiօE-;FObd mY^ k{aǗ! zvfYd3̈́v?zxv_cV諑@VJ`3skfۂۃqxJ8)%{7B_Ӟ z<7@<']hXq1֠gtJwKnäUJ5Zq"q"l" 0M "tM_aa>@is䇐=x}C[fael!7|a74hOAh#_Um|VD3 N@CԝQ!<=rw)t~GSw!O^ ԭGuv`Lz8Zuߛ @}GRxuw gbS, qGbZߎm𞀶%_RjүȴۂЎ{?fm aɽmlzhN $F3Ta}һhR{ }ydȭ!'#q\G q ;Ïsr#_q.ҐGb"rE&.}+*: Cf_y`jݍ &t0 +e{/ bCpWR's 1ti2ý۰?V7lАVn^B^]w2la<"ج6BoYmTCrxj%3D3{5-Ro8X#~гR-L3 3ģ#UŽ/4 /yv~fYd66{?Fj"U`m$uލ1v>sU/^c;2z<7@|&ْhX51U֠';%;Q {PZ>y{.})˷O&#,{R3}SWDLJsAW.>O[K ΖS余;}|I='ٮDsix'>hR:O.xTnʻr++[uʓ8$t{?T~lL[ʠt9o ̼F9OŴ-OXvODv!vXNىPwHްOC-ؗsw.@ X>\}Vqx8BX.B텒^YǹK9LO'D6ЅIBNA^(4%4Di 4RZ_`3:N᫴䎴a']FʛHI_jMusDxk F/]& dL.zhfN`F#JEu袰WJo-lI-w/k´_fJI~+Cڬ`5\qWSďH]rRqߟ(=Ff|rr^0ZA TF^N]p%1f fHy;id#*:K0&LbbOf7Iyɖy0&u-Y}Ŭ-Ǵe[&1]ħ#MD]dEGY~'>o/&DPWJ߆z;+VqiDVyNfJb֍oRݤ)M!֮kY5tm,#W2s4l6|r!Uh&Zr^i;dh:L&~í-0ӎ'[&1a\t8h|I5#:&2h&5rDv%O YwD콓Rלdu{l,ĸ7nh&~ңu,kvw`MUF{*vRI+~|r_L~oYSMyR2z=U桾ls8lW!qx*8Ue]e. Yg[b#$j5w3&l&!I7ۜ!اSy7˺}LݩXExV&\zRv^]V0"GiTƺ%Cւn&7^4+B9{0^P 9L^ˑ6t)yxK6Mc,̓MOf=Mj1mkʈaCiO;yrp&9<*V>H2K{ZdEO)yˑI֫90ŬF6DW?[ƴ }OC%c Q|֗VO yu7QK3,6}pėo{.~ߔ\:N7 У!)!# EC_dtdzyB:/j<2V~K|$v>@~_be/c7ΉюHBg5V ^o~ #,6G/6o~{)okG݆ ѻaN4u  {&VZYPJ8,,mcl,`ܠ-6^2e709$/3{z4%ḋX, ƹb<=#w,). Hc["o &^wg>Aގ<,QIb"߂<zND܋w8,n4̢aAAXᒘ(Kboy%Sc|h>aLv|NKƋDrG{:5;~tonQ_`^=z~hy A5}ðNGX; JPzܰ dgUN7J]n75DPjzLͧV*n0^먛RuR7PMmUgS5@Gjn'( rZUT3ZSwTy{j&G 5W-THדL8.+>#+p ?}F'xFBσC2460 ߼L8N7to B\ 0O 77q #e 5OaQX aa~=6m`Gc2 {p̀am gyp1\W o2E w^xaF? g `C)0,K !A-a7wĈZ 8NSаN >  4|sW(<  . c.L!L% JoMG;"a 9"6#x8Nip9|r.tM)_fu2F2V\/CsqeeG "n)&I*5$};\U,Y_'JGjc3;'GrTYJfG?gV qsTɿu?<,Uͳ{:.8INqs t:3jgs9\pn.w׹;܏P5tSQC$uzȬ__zh)ޑ?]uu`RF st< W֏w+W^IA'_|^y]VIwѕ/u҅83?]u[qN\&=!IgrhQ9*Ymj7%~6K𿳾1L,Y.ƕ1^VvuWYvurW^ߔ:w&uv]w}S4hj|hu[]owQeah",Re2}?,t ~_-똺cq,Ux<%%+IF8Scw9\77 关Yfꖺ- *kt}e}}6{. *GTSk;N ӣT5\-SuI5=I2}KMYܔA{]E,sI -,L SiKRR*fptMmN2Wyu2chF1f8|.m [cMǹ\4#h< sK%U[-r+Un۪~RPug7'UA?I'Up@8@] pP8H 3 U4U0SUpd8R GTpB8A]>>J2##lh>NS嘓噓¹\U1GU)|1|Q*kõJjn74)ܤ[-z-ܦj;f3ܩj]v'ܣǪ^7ܫ9aI0K0<R¯ïU$.N~~??[UDxB OW"<U-y*^PËE&^Vm(T<&V;f$Nf̖;/lf]T3ƋYuwUifV/eHxiF˚5#^!^A77P Ƽb3N\=tS+SNO5p΃H3ۙ7Oyίίjs9p.9BIDjZ즸)j[-EݢIZZ[-v/̪"i}O 9G%ϝ, 9 00`HCAI+A1dA$,9HNA[u釮>qNU]vpy1l*%|0̖!|[·|žcX_fk5;IeD.j;OST@-0fo6419ea05á9qPzzYy?KJw FBntNtOSdԽuoI4~",z$zȦ!")ȩO\z)rQzȣ1"lj|z/ g}(9"3xDyz(ꅢ^z^*Jz(Wբ^׋z$"fYVUDzֻ.=ޫz/b}@Ӈ!#> >!*S3>ϊ*>/xL_֗E5}M_u}]oۢZ j{g:ٞ-{ ^Fȋ"D"{ټl!z\"ͼ|^>+-"^ҋbD+/֋8/N*xD[WYq*C=)gc\*P(=E㿢&}9|!5p/C>f /#jXnVUgXSG=A>0&S}ֱ-l;N .a"8? 2I.@[ߐ\\IrapE$ע\# I.~rw$\Jrqp;Ÿ ;I. "(׌5X/ nzQp֋ D'Ff#s0ȡ0"È #r,0"'ˆ #r:ș0"?9F\ aD.Fr+aDGSkaD~ #r=ȍ0"7È#sW#ctd,HGX"HG2d:"JG #bYXv:"tD XÈ\%Dnb|D,CĊHGʜ%+k:"VtDX9rF$O|aD)+V02#S$#ad #R,H0"%ˆ #R*+{UD$2H(HT0"1aDʆ #R.H\aD*Fr*aDFz0"5¾R3L02 #S7LiB !Ry9VlD n)AbxB ijbxN@犹!qg^bX$%bX&Ŋ٘x>K#?ٿA,C=Cawq7qf9{b6cb~=O?>Md^t{&ױOaoM6Mgoax`3ٻ=6x>dsGc F %Ǿb1V,db-er+7l%[V5l-Ƒl6ofFlvlۍ1{c;0;Žc8;Nb9ΰYvg0]bv]c?ngvxޔ'f9o[V5ov=OxGމw]x2O]y7ޝ'{>Wb$wb*b)vb^~8 J/یcm17q8l1nj q8m1~4qɸl\1׌ q˸ml13YeP6 l"DL6-dKJmd[NI(;βL)&TCdoK_, r|BOʡr|JOr|Fr|N>/._D|I,_$,7T&˷9CΔ,9[/?srH~)ɯ|@.bD.rw7r\%W5r\' r$wr*r)wr^~< C<"cdGcq}>e?gsy}ɾl_ c:G: :c;D8,NV'tr9ΣN1SʉtN9STr*;UcN5Sérj;uN=-wK%Rni7 Qnq˺n97-Vp+n[ͭƻ5ܚn-[ǭs ܆n#7m6qn3mr[mܶn;vp;n7Mqnr{=pOG,343:OAi-QvNFeEO}~x#E";,&IeQ:Ny孓K1 q(oTFԦ Q4388'dEY,%kusmlgW4WڙfIld%Y#d@1,^ϸQ"{4XVqq9YxXp2AϘd³EP<_:SYH?nQH犧\uc]-iK -ImH[8 Bh8SWWd y]^<'0mfuI;֎qsOʱf'9?3gfi `3gc̙-):.#옞8fɀgDz/N > G:yG[FCu$#M}S-S;~y7wMiv8mvN{'tt:9.Ntu9ݝTv8iN߇fϷ:A7MPֽۼohǣY8|NSn>t{1u;K_ ! esBQC3V$Ha%tc1 ެ,CV&T_3aq>=͇legD>^{W9F{)M'0YEq()""%jeQNƷ씙, G8 rAK OT(x %CdX 5[{y@$BI8-H.<)-d#e5Y ud=XT_XAB Va5\ ]4Xƨ1^S`z^=56Ջ𭚬&f5UMt5j6lU`W^fYa5Z[ Z13mۄ+mv-.wes-ʇ[|E08&K]C/[˜@AfSs$/-/-ƥ}XqJ@ b9kCmL1>3`LqְNfaY,f7K%Rfi3 Qfc1˚f93,oV0+ʰv;a==}~pa8GpNi8cW5.n▸-~wubpo0ٌtO+;rc1yL+$Ģ +aX,6j2ǢYK,k KL’%c`ݱdf@=ll8|TN ˅=5'y!/KO6'cm н݂_ A/ ӳE`<a0 {,+8L$ɬ/XiXY$, 6CNeGsOI4ԑfr7#I]UPYţ?_5x RCؔ7Eؒd&@ӓIk)kG:g]dvgd"v17u'X1Y ?HYB,",#z1Vz #Rmk]BK]u.yyk$xcIaR e^.镉l]O-tO:Kّ;.z&MHX4iV sEVIZ,U{ &FQ~IZ7zo->.e`P#nA5 ! ExgbƵYӘ71. mFT [?&j!UrvLb#덜a" &{3~>6l|>GB"bR2erט &d:Ilnl?2r&,rf8H~HVݟk`MgnXymcx?t{-UM>>M8|u:Ř5 UofX?z Е~g]MGTx/<2KiS?ESAԠhjR4 P4ME ESMԡh)zM3P4D4ifY(fh.?Fb\enf;K,ȄZC4TP5vG66 2.́O+X:،E4NY 703g7l# ƩJїB Л@#hhtDzaxEa$dK#|D3|L |B|J2>#쪊um2jYjU{dԵ4ɠ$i/Q(M4t[drff%˽GEC'  BxaB!!(!^/r#%C0`s.z0 #*[0u UÄibIQIW$T TMU-TmU]T]_L-$F$SUcTsi5ɪ/d_"Z)$W$רnD̺ TKD'UK~j^#$U޷[QU-*T}[*UUߊ1ߊUU=UT~S~SZ[OjCoKoGoOO"w w$w"w&3TVUn˫Eo?A@l<Bxp+*轔;+ݝwQ_Fqq^8B?2`cG@Sl=bbTUVŪr*NWTEUIUVUTUU USRUUWSUP5R jDL5W-TKJZC+hݭ7MO8,fOͼf>3Y,h{^ ^MFUT{:ꬪ.*YRUau:fNX'S,mٶخʺn!x̮fWvM]iw{>{}˾mlqB;1NAS)tJ;!'):qNC4v8MDw8A`oIg3yde0>ciƤ̓ݎ `fY10?U ,,g"\|ڟ)`v ӟ/`MȜڗ3v!g~)`9O$b/s~Ĝ_!*1׈9O":1N SȓgO^JbjW]ź:{/_{!##dS==ggFg&g333 3+33;33'ڭ=ztksy.r\>6qّ߱Mߋ%1«I̟d&y$ϪJPtE2Eו>* <+ bL3apsSuO[~z!z~J?GQz z^z^Mzު]zޫ>>xe",^6/ xE/֋*xz:cce@VUC>5}z򟥻$4ݽ2Oo&_S< /px\5oǓ1ؼ¿Y,q-7%Ww.S0k=PPKrDD_nXzNWïJKX?35;cS3ԯ*uf\.`*na=:_:K`:ކqx.+r{S6W*I M_9l LE+p:e̛ؾ?cs=lK/;vGoLgv&3 ϊl2pN ۹yl䅰]?+b%x l%]viGq 7U|*oQb^ Ǩ>ȃ^ol6QzS'{=|CyϜ`NDsכ뱽A9 QYql *vtO2Ey& Z2JLh5dd« p\qדA4~4~6F9b#@l 6Fb#@l_!'NI8 '$@q NI8 '$@q NI8 '$@q NI8 '$@q NI8 '$@q NI8 '$@q NI8 '$@q NI8 '$@q NI8 '$@q NI8 '$@}(U̴li X|L1\|Ȝ*CYB dND Y1=1$T5tn[%lKpfpPNfd^)??euUkGf)iL [rlx.kȽw`ߴB""ۓS'vg8Z(o67***DGm1{)la4Lhwvc&#qGm Xw|m1?}al'G^Ky3`tT͹;U`g/F=u;l7aS9vv{u]Ϸ/U;s_8ֱ&8-cXŜIm_:yGvrҬ^W-;o1oVLce[^jfo,CgyF<#zdKn+i ; W>}zN^u{Mط˾S߿л!1f +&~Z-vrW?znZvwFBD$G(SpBV@S"_vgT_X|޲gWdQy۫濓؇ l CYμ>u[> ֖+5|PPuS}+DFv߫tV,%wdߞȾӒu8 n!W*&T4`i)5B B.*?1x sfa)SRܿݕk.mE##k̼O: c{{*p{&iwo/q ϴ?gYZlemW|aՠb [6M([Wڍӱ/__}`+~[e S3W)_o{nX xlsmv:WZ/ fL+/j ;pˤ"?YUK|AJ_[! wQMZ$ϙakmSScwcU~)q9vlo;TNBFDG#T4Ƨ7"ԣ"yħ?Ěk&6PfRqe ŔU$T(](1]RiDۺbj3䃆-%~*?$ξ'W9rW'$+Ҙ>V|b-Øo8w;-&ӵXوsN,RBx*nљ{Z}oQe~YmVX[5ޑr[7x=3vCLDKL-LhS/a$# 3QfٲHvDBr=<59z>ښ}"ӊp;hjtGQ\DKMIJq̿dw^[k-lC GF][+ I كx]rǿ  xQGi+{)8Q{nײ+iZu k5y/XT UF /fq}\@ Ti5~8r^&5a~Rv2#L"*^fH=Gh,,qq1 .-ͿO I1g,ash VPwk ;4#'_zoRTl{'G~ɖ6Nbr7͗^Ӗ"z 'ȺUֿ#:U\\7ׇljb嗵{j╬,I˚׹b|h[|Y]uKpϖݫO gtnkOk:NR+Iٵ/tA/LW^Y_RY GYqɞPv #@ ur~*4 Pe~_$8wnΎzH\RHH'l!489 5+ \T5Cmje>V)\v鎄ܬGyLv%?Մʶϵ:f}%c{V#EA>敼GHN6`f<9'a -d1{և1w=U s} P T~qZint0F!u6\^,&C s M-%PYJ{9vaF8 iiѲ[{m;JNb7_"h?t`JakKXfc=?A\i-5A#>6",o}Lkt]EnjWo?gb !7wQlC|Rg/&QA^_a2Xk*f6S0߁mm|rpYIn=IU\IQ\QLSPCyU\~e%) {&B=Kpu'{;+Fs7љ .2{vuv!e/E:.~5!`t^"'(|HŞУ+R t'LFstS|?e% '=G+W5(y\cӗd9]-$]"6j"Ţ5 Eg"CI9g"x S {MeٞblЖ >Rl!#iSƨ#]\臿t#ww SXJ/rË1q=-ԟNR`>h!77&|URT5dPgK 1}w6Dzs{BĮ3'? ek5Ax酜q2h=X&Cy)`ZL6υqb*;ۯ~#=4~; [SXK`\kk͟Ltws8SGU+^'[I[239I6 f[$gc'+γ.𰀯-2Q7sʟNfIb8oz_ua/l#o"o50ˀo3=cg>v"s}K.BmSpMb K_<ل~vzgh#K_Jסl OJsd'B]h"kmWow$`z= , aKsr'NGfd[;0ǎPqQ/EY^/ xJp#nVTGq*ejJ pCRDŠyAS3CU` 1Cx}Gc>gF0_Q[i8(Ye_FQ9;ފg‰L(3.؂(&00@ 1vLp{1^Spfdi.x TJ y:'k?p;PR]l"iR}K(I-=UA턈S#f8uryAũ^ghad + -WC)iۘ>a4)vq9>P YES ۛ/o4"Um N>_9O t,!nV2#\Py!ZѭX UpRٰ{M%A6z*׎8.a:&ɞɭSf^-@]IN7x6N$Vy}[h}Ki:*G+h*K"@eaQ?1/Q6oFXZJl9B e'A gaXY,pp 7d(C,!gBZ߆v@$ 6 l7&*hŏNvHYBBJ{w+',/kbS7wIyJW~Wx#4a?:njI W-GVh$Of[(*aS~ ȿ^ endstream endobj 2596 0 obj <> stream xSMk0+r5Ѻ " AmO7B!}(J[l@9$3v2^u~ ͡CeřJ [E̛݈օl%:ec!Td61kpcm^\*;XQ*]!mdیx[b<66C((Ȃ_ "Ԋ,lU璾Ұb;v {?vI^zd/'A*O^?Y%3KhkUi93KWy^k |oMZBn0IiVtb:߷boV}AYLM@R!0g_}aM', endstream endobj 2597 0 obj <> stream x} |T;L2Kr~L6aH&˄@X I*"DWD*mE^qZ>WU(hՊݙ }}=o;;߽YH M]}(XFR-{w3鞍JfEM@] LRpF]X;kN}W˼"@`NWM]a7pi@zpSWY| սKW-W,t]׬џM_쒫lM|8"B+CХWm= T,]iJ7?૒b\{_d`9c??uqzHAg8)NqS8)NqSՈ퀇9~)NqS8)NqS8_Q՟nҁVZ vmoVL9ZL Z!oX WalAŸ?0zC'8V_x`wk V> X" Vpse,jk*pjpn<༝4pnM.su5/Wӹ(6rMP燂皡࿸Ppk9*9߂o/+AXq}{wl%\c՘Ӛ}<ٹLMvKtĉ.\բ:I,D5c*VAHc7f_E '8oݘW6-=Ax?K= FxEbv{UYk5VN%fˊ> C_1<.>譝L爴#&лYL8*1kM']R~l$] =&z˴ MqОkE_6c_gG 8tZQ'5.(s%0QSmz֮sJgM&UO ]bW=3VuZaa'G}dSRf=g4 kO2J`h%8s|Zd$*f#00DlƘA,bI[6!qڞ`_ 6X" ׂ𵣄QD ? jj]AJ`/nHMa.L}<to^^ V-1ga}h!~4e]>sGTM MfjA[4K}S; `f<{Nڽ`P _#*r"csD/'lQ 5F/Ba'ICxce0Љ(ˡ.bħ,gPVBiQ]LUJI8/6FFQhVͤFt6}>UxHJ3‰עuƱTtĪ+I/]Վǧs7ML=ąxq>oK`P?HT)IvrU3èșٿT^t$Ffg1dL49|SNĔ11XL9Sޏ))Ĕc[11HL9S^)/ǔb 12SŔ1昲-cʦ1l) cʂScJWLi)cJkLS*cJILqŔRS1ES侰}$%OHďIߓ;[oIߐMH|R$ğA?#%'$cH%>*}#%[$U[$YAK#I7"βJ$M_'%ox[$  zDuyň7#CCBѱnAF ċÈQ8GunՍqT7QݠAʱu9.غ[crP<8`<QXOxif>qZDlUFnO qqB?q FbDvпxtckвL01C='SJeuUj 2.Dbb1Bo"?3|웇-ִWk-5צ2W~٥]rWZW[:|E9m dK#JF.OMYcYۘR_w#HC^H5nf's蘭6fAf3t1wf. }"~1{^3a܅}}]fX29Nԧ270 ̵ GMf->溨\\(ٿ,21`gVqvϏXOۭD/_! ֏KmcuEMQY_qMT^\ _,_bDIWD嚨\m7${D^\0۰L`L/sCt0(26 h PAJXˏJ {\QHKP./3C"sMWZ#%X\eL"FތvȟA04Wb%]]U+icIOqE+%0Z;ʅ X& GGriVDKô-QґPRkꨬʊGey_iTDQq X&SK26&7E=Jf4Z Uhqs9Vn7Gtr!&is6Dn:nCI7 u:y*_FǐD)*Z3|ELDy9~/U")>kJE8<**0lZix9hRF\sn-8dñvMý|Q5ĶV1*f-SV *:^aqQ(0] e d vgOF|88#(} F-0ˈ/ GL"!v#nFlC  =nD 1ъD \"D!BP"偏>  x'v^ L <8x&tDǁF{v6oF7n  |3p]`I=h 4͘z9Ӏ|+>|>#o[4xDOMy8cQгAOGaa0w͢B}\m00%WI5<7kOóCQP<#8wz&؍ - `&̇_Þh%#Zw?)lwgY 8=0 ǫ[qw>h _H0+` _-}k(]+qA8t'@ ӝ Iّ;mzk^xS~9޽/A]`v:MߣG1^OJ?n!ٰ6uD߆I?W6-88qۃ #w%yDy Va.\wγW K1@9bʗJR p׿hooJDlwcۮI/Y}`@%9~F{ I<> x<;-lKş/c|P/[ϹǓ uCYnDKxsi=zfFr) 05_ OJNzM?kTaX7b+ȜL15S97^p<.r:[HE՝hЎE&&g0VH,7Uxӹb&AC/̵jbOQH ݒ(WKk kN1$ C8kͲJKɺs~h1eSnvX>!;X+N|h4m2.u,|6/ӨTmRhFLN_TPctxF%uuR &Dpmj|R^VT#WU ̩(ab$Xީ0'[e Vꭹ)ʣ^w^p'QZaš.AV7"ä.eƼm~Yccg{0yrbQSR[J 5r? Cy ަs,/ *7Y.FF&iь`iQи##꽼Xdh p񼳑14B@֍/uX2[iܡMO=1<벪*ԧ+.hΡ2{poz1ݹ"_ yY0{R9ܽMyBv+GT‚xE꼓~՘Hf;#e]<'{EGld};k/#kSgS+q$.$7+GZflM&Z[^9JqŶyٳJB՗Z}|JK:C8A4:l\2,)M6svަ |WUL2׍OLFK\FJKL#ѨdЄ.K&@H'_ԛv׽CXʷSSeq:ݪb;Hˈ3Fbq/mۻ3Kb<˭p[0'xL]ն8mpeuK6uۺ[ћ寴uX.o9{˅YK]ҔҢN-r*rZ4v\'8Y1~>U8Of O}%p KLl;6%JM*qmR +J%lɓe RɔTPDuUI3K&Fu9ՙEfv΄[w&&eUE/B63[=f(KKdCTSnIy%2L,OaH2M2kqFrhL(\֖hiyGQPQiWjVɴ>YsnkڰT{J| T04`FCBPZ">U$j<줤`k*.˙rл#'p c\5܂kw?oV0̬5;RܐkL ~P9fПLk 5'._Aa ̨٘YZ&0z}ZƐIa5r&Mc\h ='21wdzz5z `I2ŬGt܂1z^\4:63x{<aItTOtF<bBՔ.d>9,/J!lMV b,;3#? %RS W } Z/x#RO?s[(/ > Qi@(dO0:Λq[2\LÏ]h3TO_f׶]}G>N_֌,,1!h" Νu!\tdJGM]w>T'i52R5 -fVV3h ӭdc"+Ӗ;_?Ӆo >Y_Lihx0ًw?%CLٵfIi{ bce.<_IVVY ͱ*7Jg _&Ҭ]w%5-ֳ`ݬYV}C}+xԊy_ilX1`]#ݠ;]##Go1mkKzWeXZ\dէd7 ?cOK5sw|ޗU*VjZZ֒%yA6^âԖKj%/!0x1!s<8C<<(gB N (b/V,u%^&5}O>Ͽ9H3>Fd1uNNqI狓d0gK5RUkYWbZ1(ϋliX(}깩rg۴g%w.JmW7(9fg$e̤Sڪp@eJ_i xsά [qiN^9_HǒAw`vx6 uՊ[0i`)5#;`eӧWu\**g^[auGMV+M6WI]wm7iI\ۭ(5h- 97pC,;㟁TRlK.). _LT*\ Miq鑋 lLN7:?9z[opao{}AEJ?ҕqפz޵=^vo3*F*9qk]7.kgn;tmԛB5##==lǒ yZޫMcp"viJ uhQ;@~%2%Zӧ;**SoP؝ch6KRM+8}P[Աah3w5\rW\j)p-*Y,wd-q&e[gl)/o3TRk+N;65@|د[E:e+em˕T}CcfAAaj&9%{NzJx/bFO EuTDLPh|q$-:fYrQfVZF$7{Y_Zn35//I2%Թ}?uROEJr`TкE:yw%U.;?,SuUژc-~=Ao&q:.ULI1x໦sOf|7nsjkMJ={d84~4<ݽHǶ֞ikԖ_dۚeH]Ҋk>|c櫚}}]w{*ľfԛ}<0v:[>Kb8@A?dS߂z6udձmk[I6c~nN=Ӷn dƍj2gUEEUΞv7m\Q7nTA^^wrz(OXsմָKiz ^鍚WKSn˥'-Md5xwOl?߲ĚSQ{YbjE}cp8q=C7muJu}C[\1~AHLOh%B#i8>.Tbt/6,<]Rpnk(LMs_i j5{4ROTzҏN='|äy<%[?gGBM{@wu5sό{TzVc| g,,NKupIs|;0I^d=<L9>VL$)bZ:R]W]hE 뷝3ϼ(H%9Z#3W.KwHA)oGsP485eM:S_֘*oseřםoVz"f0rOE|2^EQ[ºsz$/QhyYǔ((({(_W)yDIDIDID+G̱HDIDASn+&J$J$J$J$U1%Q%Q%Q%Q%Q%Q%Q%Q%Q,?'77/:7ђrr/Rgd/>OI963f~ro |}@ .Kߓ0|>;Gi|bNUhv́DوV'qjD_C%n}SN $SɟDDuEL}Ѣ}+`k}q³6γ?5ڎDlD_CE_K#:)o V{ɧ.7 {IˢocQdijѷoV$Ҙzr,\ϼ\ϼSp=>3s=>3s=>3s=>3ۅ7>'H?فvDHmD_&[1 :0?l-]C.#*kê;cb3retaTFyXH܀|asaWW`vb<0@6 _^HvNJTpY`fA D!p8 ;0HArA3NZh7iAo4d$UXѮ :FGaHOU ~fq*Q3QA˕[u8dȤZ0?wBk>楊]ng%G,fdkgS_cM(<ਈ# ](:` 4k7޸>gy*2h܆Ʒ_QvTR(D~p#a&%xVL2&wFXDQ,ܳy(u,>(T$I^3y,lGFqУzW8VͬWd,v-~Rجe QRt%s|>qGhB?fgmҪ{{Yʏs)oE8A=`DD:k>*N?,suBܭ݀ ז܏Y*q0&j?{Q՞sTEH|Әȡx㧰 lRw$kce:Y4):"<)ߡ,Bd~Xg lɵnw:EB[rw(< hym O#AZ[eqmGGnji7*C0"ѡ@X`0 r4[nYO98*~4h "G G` R:4 ׍N^ u o( #@`TD@"t8P0DCp(U mC;RvQ92"#/_e'r`1f,TT(@Q0h!0<0Jp :&;H4#< wFXLQO.B`d Oak@ OP Thb0De(;oSJAP% :3# A`qsj˂aA FpRx,8Pm)S!T6F1%3P!(N+ SL2TRe%2L 䌭p 2>e eQq:WGA#@Iʖyxʬ?> @*`Ok194,8Ynwa|ȡP` qdq QQyh?Bo.>s( ;fv4c*KEP4:Z]m۶%C# cC;[(SOơ%LOP_#( ;_cVHCcH-{x|K6 Z94Z%+Cp Wp j3]4jT^#2 Yj: $1 Jы#mD_$O1D@`aJacS0Wa*dlxOJbwcY蒈Hr,FoB{x{ˑf_&ng>9k p0= ^+|ZUhM{IKH "d?Q!r;N;nm#/#V5`Xyx»xKx} x7f~}xe_+}]7 x]ˁw-wQ}x__asju%+w0n?#U6~W{@7x+xW&(=ޯޓ+=|.s.^*o~cw= oed_%妶JKxӸ1~:ͤ@Fɴ}Ϟ=hZr9^{` )6oݱ)M&$H65;iJٳ}kkף׳Vd5Cb"jdc* 3j2Sg:o1i1Ӟ TfGʬgeQpQm m4z:Y/YθTjgXӐ/>mJ$E칂یmVpH&f%9oJV}\tYQ2 {ΛI;tn!rY jͤPQH141$ng%a3R}XtD)} T:aJqM{dw55ߌkՁUV8W8PγY[86҉ x$m,r9-zqҮ>BWt>!vt}/}70'$ %I7y{n!f~l$7rFP<>۽LtzZӧOO1Jm1Iad7>ԱI6~91Oa$KT=:7#dF!?/4R/VHHrIڣ8%հ_#ҔTُ9=LGwLZEtuwѾV'1%2M5>b9CZۋҵk|"DvIhmLT5<"R=3c[M=,"zW3?n*\O2B6$5ޔr $Ws!bJW_V؀z.wr ױ5S)Zq\Xq'jXW,OUXeQ_.p0P+xQ., _'i+~>`ìmb2 \\MV2Պ{B🯢JY{>^^{Uz7o*k*v~wQBI{jCT%֨V/c5.E終*]gYv2Je:׿CJN&^7:WWҟ#~(d8Լ 2Pm g.~(d$~47Yb|?5t ]5_}*9u\TLݛL}jX L> mR?i'takn1/k+Ogm3M|րEe2JSL]uL?~waJl7~cT%Bޣ"y0ظ,o)Z[ vX3l q8}Gr_Y!Qss+yAtpLi9ʻkEPu6Wyt'C:hkW{G污Ej 9I[t.N)c7\n =cӽr!INy:!8d>"]q)5IЁ̟$Ȉ'ZƢ㒨oDj2h"=]^_5 h1l$%n ڭ< s"׸>Dž\f?{xb! XR/䤹c/ooP$hv:.'tHB?Z[ҷN?^=b~(K?&&OYzMz Oι|bȚ:}^<)MR{K. ȄZ_MudQDv[tKwȝ]4Bc)D*ڬF36mtHF& M ĦmӆҚe Xع7ڿ@/&r'dmR^LVRN!Rԥ˩O'ǥRq@$-&JZvTEhӢED&dhSE ɍv2h%#ړ;QGޓ| M6Nx[Hr`cRs1T*R8bCĤt:ށ]shTD`sbhEEHTȝZcA'uhzhA' /$.ZaTa4a4+ (ưWf1P_AEfL{Y9퇼MDE6LoE]!}@̇E;%ڃaSbh/6C&ÁZE{hY-.TA't2@#1 !gY 22'BWt˙gȜ+O]$bQhKD ]E. W\M^wâ}vE'̟]^mh;{G8:a7W)+?>5 > :?Y' ʂY,e62z6 \6t ?ˆoe_ $'5ǕA,?sL"rs\Z.|-OݹP܋ya * @/][ v܏Pg,*-{eOdK2bAMdĘ| CBT.PT -7LEMtWXԇ<[ Sd*/],=ŀ++x_#NJ.bW*Al JVl'+A.,*9RYK%REi-*[(U@Rط]SŐw1dX yc^Y [\6.3Uz&TY)2o|lƕ.5Y]_qM7\%.,1,%o [,^@oK`%e.r.G|v9!{9x-OcM'e9ci6*l)rRo,N-}z)~TÊ$TFx]oVPjk| t\9_sʨzjG>^l-`k[ 4u_9haGNԱ;SG'w}I}mogz~GWO#_ ՀmҰa/jx'~4|hk̦FqU!6hx#9FV&M)7<%^&ZMSM6=4-_/ȣb,Zfy܌hF.kO7o3v-R"lmЂlnaqhݲ_-GZعɖbe2jy卖[fZᗭr+VV[komugV~'[!+pBw[?lmmEmUmڠmȷmڎAmϴ؆\v6M}<6OqMhz<<Þ===Ƚ9~=Xz%EUM?l~ZC폷#×avX;t>}aH(hXAߟю]|mގG:w|NucG$,aN :;]N:;:G;ν:ȷM'NؽU6f'z7 {˽&;Z^ k{y>}+ ^Ƨ8ܫ}CxtTsV3_h/}arm&|xvACaOB^$], RZ׵kؙk\N:6o+z ٽ ٠ ruSn[mzEnv޲_X;5gpG=vf~5>˼ғԓ+&5$ Ha:RއbW7It=~ _,'Bk5]j[%}.--Զ6E'.s\x3$x0O0YO<qjL*X(Ip9:/AYϸϨ}pU{땜_ \)q͟sk;m֦0+mzlpa{_=xÇ n>>ƙ_,M%G=gDq*kNy1,bır;l+BKNJeWb'{bT$jzJX0K~[σC{K':F{aVў F<3ՐWhCM|0Eh*_nb_hv+-_eIZp1]< {5> +0#, s`pry}tQ DdZ~{f35 UT1=dv@J^k')2^ю; mB{d]%l' k5V7-^+8W3yNK|F/ſιG'Jfuhj<ߥ{^0^H\ kd&@dvNg}$Nٸ\h k(k~U=b'3,tղubՑxxsfQ=w(qiQј9:qn6OX,fȵţ8}7bjhrz[C;>#LF_}tUf%$Νru9o-|w<(靣cqȹFJK°Ohfύ {Ft%*]Kk[9d9g.xw~2oջo ({|Ug[$K8 )ED4H+)""rQ EDn"*BD#""r bHPCH~g圓oxy3sYk53kgGZecU*@Mu~r?9q5ܕEK5GmEi:=]^kI\7풣6](LgLGkYb{NcdE X#]vTi ٳFRbE- .uԒEٞ5>2לAE_Yw5oשsyo7۝ջE]nͮ-wW}g&{߮ ,Vg&Z.7~e]0ba^/Q{ҧayEmO ye{QհeO{-"&~&?uS]'RǮ-8a]`53(AX+ECxU-jv^QUzRT۲4dKCl}z'ھ^z<E{ϝg>o̲Ҁ|~,04謗w<nFEsL9MO/Ѵ;=z9[}\ZCUWClwu2GI)VGGJM˜6T8d:'ξhbm`nQJʹ9RjV{#x U}mAW\}S{z[->Gr#ye]cs}jşƦb"OG- 7q(s.R:ܶ4C8nl|J.K7w|M823kejY?{%d@W4R}:DS,'֊'VJ-mcۧB-eYgYVats;E6D]鮞]K\\!ww_w{{'SY)|99xC^ _o7׷طWww6!5aXByBeBu¹Ɖ %E %{'O<$ybɧRL0egʙ=S'.I(J+{'wuiGY˲\Kor/F˽ٽEͼ̈́{vC$xxDES"{{Hx{T77Md66,qL4oSS>O'~h}_Wi/$\U%kkwuz&mhhyHI}}ԣ'tooiޑޑ"ݛ "/Bo{zRDCw;Fuu~~D?M_MAP4GLdDˤfi_Ko־Y{R^ni75lk6[4>UI'W|/eZܾH*O~[$»Mo"f݌=!wo'Uw%%_AfOVxъ6vZqJ+ҊiN+pZӊD1bޕy7 *_R̤`T Q*ޝJNK6Q ~-4)!,@ jy1mpNfU''է?i*;kߔ9mJKz r+魤Y}M;2;$%4cޫ%AUr&/Io6iN*yMkF^sОTB>mOӶږG۞bԞ=}a=yyJBdGv#{#%G_{ёM[%ΟyvT$Ryniz4J&CC_鴗{ImXoռ\ kiB5|9oX֜=:0k3Z ! ~tAN>rnBrF9rv9rw쌓ޞB~?Cw4,^>]N}Ht 99rJ,"Nd߈Ⱦw!drdVzd' C CƂ[ssA⹨\{sr!wȹ9?׻n+Ϡ/,MgCyL?LLQEwoC&&q_z@?AIO!:gG#ElʑӔ0bDŽu+ ukC*z'WB++A}-C}C}C-Wǒ"ՕpR>I{ڙclt}JklжLBhvabȍ]xjww _wɥu:R Vjo_E|zW;j_ܰuk2rֶhķjۈm'CI}mq#vk=?>"W'>j?>'*k.4 vwb⏺*v,w=K=KYE-[W{_YO|o<?Eo^vhjTQ/ +jSYfm!Y;ZFW7^=v]bzǭ&]֛nB.[M{Moմֹ&ѤKWӶIzD.6\M@.N\MMԛq5mtjhep7>CS{ޤƨ*RCoUǞ*O/=$aQz#.ȫ9604.0x$>!0CO L$0D|r`2))ħF# ħ!ċd?҃-+&x- >HN^t ?;؛[ !KmG#x I|`p wD|pp0!!ć;x7 Cΰ0r.NFݻaZx}Q0$%ϭaI{|36»r|nscF*bfmD|sf[/bfmJ|[6eG|{37k#ܥƶf"uZx?8jȺg㈻ F?9ku}S$a5%tH1E}P9O}.T?&g곳> w%πl>[϶ZU'?糡?m^!gQ"IVOt ?pFg*Hb(f\DTZk#,Us k[M!ko-+JUK0,%>8>iZ|1in_6Ɨ?:|Bk__DgƗϯ՞E_,/_4|يENHIZLzId+y)צ K2>eFJi*VS.MS>P Ü0JIJd?ҫ]0> UXjj`>2j<#$#;UFNCnؗOפ؆UHzUkdvhEȶCdJDž͠.*I=U*f7>|@j P e#/;$Uv^}d ={FًWd#o3uk7f0 U؅l3 f_>_#'-Z#\5E,L˙f_eiN~۹ %6 6MM^ aV н-z굦׾^'v{}wwf t;,󙻺A\:x+W >5Cu谡(9%ACG}w#6t{޹yw3|JY6==}~2OId1Vr君_0ۄm&&MILh'O\:yS{݄)Ӧ,r~j|js7yԖS+vTBƔުd#mY)lSع[a~C GN)Q8paM - oTam{3Pvp,pn(j\ԼuQEw/Q4h~⢕EeEۊ+N.N/nRܺ]qN5o{džy[`z=bC*S0MsN0gW`#!(>:+{4׾, y&FY0\%)l'=Uתe=Hln.`%,eiܒgR3Sr5?UǶ=vleT)Wge`! ,K{LڹY3"ʾZ}Q%;kVqJ)qwմqV5 v~mS2"˻?YށUOScדGag޲rdZUI's:#L1mHh5qдsg;ϴR,_{ ߃;[+`B] ,y\F!61maNiقp??S`jP劒_0S~ rͱ̳+.(|3:$8c$g.Lޯ FH[Pd敘\W2LIRrԧZTޔ kE"pbݬk 7}/G-x: iu>-dg=̛\s> \ 4}j139 F2,Ĵ H0ʦ估#/j,QRKOx9mK &2m\^hj8>1r4qF3hJQ7DJEt̗Oh=D#xޟDžΓVIiF9Zr&Cn!>xqP!JcF5kGN9ek#Ci %KY%5&6JU rjr+ڊ8i.ygJ#=]=<$Ƈ6UoBrU[RuIΡbHx'"9{#HH UZR\TJ*UMV+Aݎ>j[iCk Y`µ.\qgl7JT/'O-0NFE&}{E+~ Z+Ap- ~ n}@_pn` >CPp7 <0~hPP`C`"Lj|Y78 z:ɢ :>FA>xAƂq !0Ys~<NJxAh<~r׌`x7J7 2Fy08LI T?`Ӎ`4*acNpq2860I cKğςy9< ""x7*oA؄-\";廈W#8 TH x[^ J ݨ ,5Fyh628 .Q$TM1'w#ƒ8FatFat(` _AC`"xI`2FiFIPhb OK"gc9sc"FH T6Aai3 fȘl_..1v&ȼ4@sp (W!׀W5:@g\n] t7'^7`0 w{0z/p:FA>xAƂq`s`>e @Q|b^( ,'WV7*&.B&궙V xe!!| >|>_*%A58p| ߃j p?_78 +ZƊVcEXJh%V+z+z+z+z+z+Z 50 h,ݡ0YkJ{_{Fy8.+Ft3(+oX>σ-vc\IQL^,sib-hܹp?x5}VQ!|OKxZJ7g(DhmbU)K²vn-iNVS;7!=j-, MG3@xڙ\X%xsy+"ggͣMϱ˙ER|&6Xޅ#o{`; кw |>/~O%K"$'Ip N3Gp 灁,ט嚛}8[[[[[VV[`{7P >3>_*%2JsKsK!%P3\Fr >&%%tx+J(kB#@g\HBf^Ov7!7!<`Ð}/W!VP>Q\lfQIh u Bg!Yq*)40B,`ƆC/|x/%ר `qb܅CIXB]F\6|r3v P]bE !8J>3N9L9L]5XmdYa~EAGhdq$/B#1j-BE3LaEs(+w#q*jFXA3o0dv5gވ# Kn&{Lu3 L<̻+ώG94"qsZT#zY,{#ˏmgkgKcyر)r+~>_*%y5C֕[t}Uc'Ip N3Gp͋Y`kbkXRmx X ^k@>K]a#މhg١ØocepyXm\x ]FP6FN`Q([C۽U?BE.d7["[b "P AirI  )p n˥\R/Q7ݝ]]v%ݵ,:b4sS̢=|? ~`\ -:MNrDQ?gմ! ;Ϲ%~<~a&"3}O:2ϊrE4̇ՎE+jǢ4̓=EwUD/W-E2ꩺèg)HMi┥\-wF}&A^] 1TzגݥJGVv{(=a`;Ll˛g>y|ѦыUGhk.Y8 Gݘ98a{PGߩi`^hd3Ѧi, ؎1<1B6_^&oߛ}y{SMhdv/C7F/L^}/;?AAC|C;U3,eJƬdJƬdJƬdJƬdJƬ1+kNq N8\qB,XҺ\;/U݄q[щ1vta `5ƫ򜻱b6рUXUXUXUXUXUX̴^O+zi>hqPyw~dã_aHx^;Yl;OD[x }Q SLQ7|Nϡ %d(aMM8kUs"C2hq\SIf8>ZQص;3gXF5֦ ֦"XKp)VhX\ kXӆ*\kp=V|7ֳz| oYwhw8oX~7}Q0. k 2}b1Eۃ=cͱ/E'\lCA, b˂/{D(Bu!CEY蟉#PwHQ8DGpgB>pg_$nq nEϹ ʃx660)bS"vwFf Ol@ Q609b|)6Q*#c󢹱㣏Np|^L.r|1z4v=_}k'MS;d ϝ>Ŵ{p/؀ #8@T)'Mv|7E өnϚ>z{}_=[jh  1Lj=1{я4LWŹG Cv@(cNn].1!vX]\m"rD_JD wE@i7m*W?5T*5oDm5;%5Q:DDUIĢM /tmjԗ+J%87jK-ITk|1qcjIDqHԝ84Z8,Z8<ژxg21CL}G6J&ȇ2ƽ۸9{=5n^Ԑ86Z8θx XD'yNWOw*$ާsӈƜcR5<כv4qѬKw)V/3Ƶ_+Wf܇ʸ3>z΍+ JBP$^"^=^ī^x;EU}'c^)ʇ7G}-Q*5;G.cָ֘;p1w96nc>n̺hC(uG hA@thۃGB'ѢpOG3Hhc9wE_r}k p&'MSq1VD6ҲQ_zhX6JFi(-elҲQZ6JFi٨G6)MjϺIy7>#zg^Y/ >òp臭?Ӝ9Or4WOs>};ͽ;ͽ;ͽ;ͽ;ͽ;ͽ{=^Ͻs%9p90Ns4Nsi<́x=Ns>맗,{p۾IIn0veY*n$7fܬf,,Ͳ,,͞fܬp47r7+TInͺY 7 ܬ6pn͆Y7 ܬnͺn6:7s<7fY77fsnVfn6pnp-ܬ ܬmf=ܬfܬ s7+pǹY7fyn6pnnͺ8iKw)V/3Ƶrˍ[++=;*7fܬuTl 7+p7fܬusE%Q%Q%Q(p4GrG)TIQ9J G(y(eG(eGQ Q9Q92Q%Qz9J/G(GQ Q9J/G(q$GIa*6,V.S.ucyU EbNM9:X5xf"QjpRz0 Nmd DUpHb`FbjpRb/MO[mp~ 6]׊Dqkjwz 3];rH,Q=Zncsu<㌙opk'iwSX{t} 3紟~A}W_ =*[HauC KeVg6²²oQI Rf²²6mo$_*,;IaFaٿ@aY 6  ˾Ea'),?(,KaFaAaY gVEI X-GG_p'AH[L:)C7 {aoL|;M əMʸ;qd2nA-ȸ}2nǤ{iӕݙvLaӕvf%öɰY{RfY* 3JfmY2jZF힔QgV2juZQ 2j=)ΔQ2iZ&힔Igʠ Oʞyly3)cn1 2fA1;&ee̬L޻3LrLY) 2eL=)SΔ)2dZޝ!kyRi&vsU%lV*WuԒ^j9RO-SKq領$ŤpTSO5sjo$zPꩧ[ܑ8 Ncfhg;͸wqWGU66ߒ[MumT7j)򒔗RR_=͡zWuےT^*9TXOKp .yT޿sGa9*lQ5ۚq56(6:1c>?2?Gq*5nP%m-T*ۨr&UP+9H=DF(/OyWtٟ){eT6Bay 뤪<_SSEy^I9ij,=Y޳B9yIY<餄R՞yޒ+ySV8kV7ou;lj[ͬY f`^g+:~1bŲ5 ;kFR*uZa+#!V[<_4f?kG~6Y37f;9hךMfqq/'}TIY~q;)[J?.}OZJܗv}j=RCejie_[VMir VnjejieWZɕVJ.BMB~ڪ&MVNB~**MVJOB-_[Nqd}%Q@D >'7Pq/}?UtSEo,OmW^J馔NJiJ9P~qO5T)[(gi9~q;)[hi%R')^qK]+TvVv}?6Ym⾗)(_Sa7vJ\|*m)SS]{7Sggyd}t4XWtet t56M*-L/B~ivqkt t56#aW-{I*8i{tVEɷ앶UvQ<*E'vTvv΢ҍJ;* JgUT|^JL]W^̷n.,앖v.L+X](.Eo+X]X^+]DI{[P٫lβ׭UڧB*]MMem]ET:JgQI]޲OPڧ\D޲OOYR͔e_e+^+UJl{WF(qsyRuVٵ>J*\8N+sSxekc^C ޲5B#fkAek+\+J\P>JLS8%Sⓕj|Me7RJ5F֬TIJqJsW56RJJ>WIÔ8N}Ju%Tv7O*;8^\Pb[ekGւ8%W6V5P%Pb[JJqJoW5UKΦwSbƃSm 4rk(;XjҾG{vEӵ˰qM{zro Vk~\{#ڍڔ گh;ر||4f-NqܸUί蔃oj~Mm}yf޷%.rm9ƣ1?f3c1?f3c1?f3c1?f3co3۪ U~4WWDUkcapj cGϒ*38yI8_d=Nw!z8hζfKٹg XB㛵Rp}f+.wRpt*6ձk|kXz7nqVcZ7M9%Q&u5ۢu5cQ94ט?r|Hd%Kt&܌[p+:q|wS+z܃{qNlxaXg&VwH\.H#wx6×·<{>~l{b3؂A'OO390~_WxV`$E1<ƣjT-EShMբZ4UjT-EShMբZ4UjT-EShMբZ4UjT-EShMբ:.@B4",ѺPLb"\\b#\ pa\q #q>Aϻ]:TT {b0EW YBxiq,Nfilflflflflflfl`r8=3;s\ño7sU[F ߠzLRUE[yPNQ5GSb{hN G `W^y+|lT^Rn-MJ~vFY>667؅6sN?e=OҘ \iL[0'v5ֽi?ո7֮Mk9)r[r}-Z9֢Z,omw^Ǝ`_kQ5ʿF(_kQ5ʿF(_kQ5ʿF(MɿTd[4|*˧|*˧|*˧|*ecl O'YO9O9O9O9O9O9O9O9O9O9O9 x8a#$`Cq;13qj.Y8 Gݘ98uxbq8'`!NI{q2NXa1N s|n A>76sV0'Xتتتتتȩ"rU[jTCd,^ nNɺ9Y7 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0 sA,/ؗ{mRJZRԧ9T%-U j.4UDUx6<-jT`u*:ty:-zblie`s9X`6eTh]oVhGr](ﮭTg*9TiY*vo~}K8JhE<\[B4;z mkBB[Rָ1_Zĵ:Gp뫵7F۵w*nWK.i]:]WM e4F+ _NuW/cG4^{!9d;lCsv!9d;lCsv!9d;lCsvٮKR* /KTx)^* L|b#>O1|)|_u5Mw˝Jgr3+Ϋ*\"Wpyw^Wpw^W"SȔ*2TEP"CUd U*2TEP"CUd U!NqNqNqNqNqNqNqNqNqNqNqNF_K#i/4F_K#i/4F_K#i/4F_K#i/1܏cV@i8j@qa8 Żp$f(wc6=y81 pT񞤭׾';>bi㴨O!d>O!dјpvP"SשTu*:qNE\"SשTu`NxᲓgsʮu6:XgujtPؤMؤI}iѷED*FD?8>ώwEr|7J˧+S彅j^_y{5oӃ|zP[ʃ>g.v_rc;YWoޗ7>U,Uj0qk핎3t g8C:q3t g8C:q3t g8C:q3t g8C29?uIyw6>֪KmPf[>/eVvnke6v8矉#bGkіrfKNp\^z{(\h6/Ʈ*+JC;Vu UګI\kuڏzWkok;>y1]3R{edd!gH}qw\OĂw`]+'nU'^+rVkVNZqVlVlCxq!Nqut\WGqut\WGqut\WGqut\WGqut\WGqut\WGqut\WGqut\WGqut\WGqut\qut\WGy@\q>WGqut'qutKq!.9%C\rHWGÎ6 jF;h<] *נF]n{ӵͺf)R{uc y"<[E{^x;ET*0{`OL^`_(K1[<=8(sj,|X6\\ފ;q/A _f_~=Q'wro,SXwexVG4TZ*:X眲kˏ/tތ^c(ciU"uH]E*RWU"uH]E*RWU"uH]E*RWiwv.Em];(xg좼.E}]W"H}E+R_|7|7|7|7|7|7|7|7["HE-Roz["HE-Roz=W|T bg rn%vɹ]rnWճx;ˢ:v: TZ1VKpK{7[OPMVt6| kwN܅n܍㯰q}I|K90~_Wx[H;Ϡ;E1|PY7μ~8YbBUW&|8_{kM^*4W5W UhBs\*4W UhBs\*4W UhBs\*4W5W\՚ZsUkj͕x69g1PMitTXVƔ=t.vk=- ԕ WF8]o&Ei7Bsݻe")}W'dL ~2O&?'dL ~2O&?ܝ tT'hIT@Ucx+FBQ#hX[ U# X2B)p3 H-֟3<ٓdv>iOv>iOvrܣ'=+Xb!h%`)He`9XV2/ZM#Ɗ {L [?SK'Ыx*GQ;x'Kl`;܃3=rGș9#gzL3=rGș9#gzL3=rGug[:>?TUPqRűN|TIYE:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:Ϊ:ougrW+809Cs ku`L7M &[`%Zūg n:z$TR}~(I?JR'Ij$5q8IM&NR\7)XvƩ~0"& vJE3$8g3Y`4/gQ4>g2?. 901G_!'.qW w7)$֎a֎a֎a֎a֎a֎a֎a֎a֎a֎a֎a֎a֎a֎a֎a_Sk M)5Կ74RkmԊ{5FWwf(S;^ (g~d{`+hџDz3^;z(':,`,|{:4!kl4AmV;1ŻjZbSHoS'ZjI1P#Ԉ'5ITmx1WOy6 [{cA r@@ NFi{Fiw, ΟF+vF$D#E_2iW2I']3tN_%F < __!_Ꮧ/Wk<"q;\H ^.˙ >g &s,jrfơ%TgW!s ,+%Nq%>;έ_0ofLq1~+t{ =oq懂̋c<0\scս̟8*CO/ WOA [ Ya3@߀~kᷠ |[r:Ux x `| PE C_<b[As0*` 6UKLw QT\| g/ B{ݹ<ꯗ&?3~yi6^&E[|5նJFs$fVl. 3ϯ5áorVtۊWֿ MdJJ^iy(x< 5@^ Z ^ೃ~.VP0y_mrO)\gp. aq;:p3 >Moۄ6Mzz'FMJI-iOK|ZP<+ͨ~ku!sYf8n+=:귖j\OOױ<1Xg5X6m߁vNzxXե[xUwks@1 pk'| EdK Y?ܤj(ȸ lp N)ͳgW-inK4n&̷l;vK'Mpl~?|b 3^>'Sc &0$L$a"O0)|4>*;y_Odk^s9pҟ&XI]Dwc5c?2w>;p'ɝ2.%rvw25&G~WnG05(jQxFQ}|R9Yqd|N߈ur>ZVw Iӄus^:2"1Pau__(#BJY?73n&im|ǵޜ'⚏{`u4'ZI8GgCS/{sS機ԓH+B*RW!4bT3Dn&=Av!D=YݻETK_Yr]%xL,8){< c15̟9gO/rO%<`&8?ʹx u`z9|U'}i {G` X2s+WSC)kb{}Ƹ|r $`oF?M`3{`+rp%>t<ĄBF W89ݜT<26t~p[I g*_ofs+(d *V^޻G ݕ{<ǻ\ }@_p=I7}|=|=P?8 p̏1?97c'jr4p9sg15L<;]2 ;<ȹL6$2bXAF #Vߓ,Ķ`#t%NjKu4SGzzI,Q(V +Mޛ5`W2UhS@t<}ɴ~;ҞMtJ0'S?TR?TRiQ3fgmU0%4jk0Lb$UU*AU@Iܞ2TL@L]4\wr>n2ZwuA7٩YQUs] uj+/]QiMdX7TNW:̔$3%LI8Xi씄-=0 %fU_`$6o֫jlM1_$k&4wV_hMI59OmEt&Y3vZVcfj WI<<'$鎢oFjFjRm`6$ K$@='HfAXpAP}@CP#ҕ RR/Q+Q+uY婼> {8\. ݧ6 \?7[d8%H[m[m[m[m[mAG=QjW=T,n1]$P"MHU=wTCU6QwXYjifY*3bjX̃90sxFzj܏-2wUkF \z(nΙN 8ZkNbeX|Oq8㑫UkQ%Z]P3W\JjS[JY [A;)U NSV<^/Ć+odyTA""clе`q<}$OWO#GOˑ9?C^*&-MO`EHߤm '+wrXį0G{޾ʲMd&x"p ?EtH*B=dQ.+qߌD-6rt7Ee:zJwAվa%k 8Dt-Q\Kq":yH%jZ"P}jTESMZS*s~ʓר!,MDKf.cNЖ JPJ*\I+n%խTVRJZIU+b%UT VRJWI*Z%UjTjURJG=TsjNRI*9I%'$՛zTnMRI*7I&$BTg@x׭U۵“d+klaS[mDoFO׫̵\,Op=-O1ZiDS=]?$ 40N%LWJ72&JbGa(:QHǶ l jjj$c(cN`N`%zG`Gc]t:}ԓU*\UOOxzrX/ [9jt $C<]'o\nSBq<Cw޷Gȹ׾Rޤ֝žX$y!H5VjW*X_Ef}B!===Ԡt(O+/$ol>s9l^6/#z33"89qR;n_st0W-;77o`ZS}zUg[L x=wo0oYngm̶ޛf6jnon;a'\f /VkM+.Z@݋3߹Xenbw,VgKY79^'vFrg8'Sa(ms8Wv1݃PMDUČV"f\-9 YpƘ~o87SyVsyޱWaqϷׁymBz*kZÌ!֑Bl#p(1xZe|kg whCʞilc=!Ǒ%Q6\wx] XUp\% 1FȊoQVVXx,E K' zqzg9c/ﷄ*]cSe)߬:yBB7Dt3 d|5x$d8Fc<o!E.R"E=$E\$Er$F F&K ;@:"Ğ4IsIkFKhn6s*ޮڬɊg:%EB2 i,X!IKbi)>V8'uߢ_ "QZ3ڝ0%6i ǃ__-!XA, [.[ˈ2.Ck`\̀iHpq*8S408qO@\7~}nq L;A y7`s|'m̷̿1LQE"bn6EwoAP.0AA`XzD|ȵ%`)XVfy+ld܌;|!hg-YvvFE ! Eqp j0Ѱ걌D?5DhQob99Ӻg*n@9-d| u P=O1<t@pu ȟZLN @ڝZ?B Fë+8]󔉀Ldy1W',j@ 0f!UzGNwMAR Z&rżKT0s? u[A+.  mm  ʌ>ZK><)̓b<'xR2;u@Q;ZA#u:n_Q?r"2ܓYoΪՠWueQ޵S{+{擩Jo>#&Q{3aWt<} w,ܡ;2Q̕RZXK:"]q~rWiEHFR1_Hҩ.tYZAjg\ 0\kpkn íQx5 Fyza4 0'1jXMþ18›ax3 o03p껢꽢d“Qx2LÓIDd Óa82 G0#c~ Ïa1 ?0U/b^ ËaxQuJa?^l!0\ pa.Nh6-E h-H&, W_^]=cߌC%;`wL~^ř̕͜ŝ̹5aM?t/k桹{O{'anT=ʦ'0j{U Է[wSydzR:2:2:2gȃeЋ:˶q;,**)â9F]uОX}t;q1Ū .X/dU;wpSձz`fw!7D"pC?BGt~_ؑ$bu0T?$@F\Gt-pοw;B|G!#v؎b;BlG!#u:?/!#zD\R<70 B@'A /rG` X =.U!,tZC-5DK>L;3 ƨR-Tk+B-X!ưDv`ucn 2TG3JJJԂycX'uBX'uBX'uBX'Ʋ* aPR*}x$2!, 9DUHޏ;L%2s'gg]n&:6o{k$ԮV1}b$*{5/JUŁ0zs3<7Pb{宐Nn, izkz_iw^\ss;,VE x%"~hy8b,Xk L.(v"NrrrB)9.7F>) \c Vy xgYٙ,HS*bއL&L4Gg!>L@zI|$-Hނ-pڕU]Z$A:*f3Q"]Hv"N$"YɢH6d}& !]Y{Qfksm(o܀<' ]PÄ3;5$~]$/EX*ER$.CՇ*O*EN>++ U2gtU)]uR\D啮Gg+}4qCt^s;p*+Ԉ{%ߐ=ԇJR$vGH QE7(Dh?WeYUO]TeU a}vgi8C^])vYV}De2v/YiފBx@Y:՟5z>2t'E@>/N ZU3"B7DїYpDOQ NB2%b){>OyD\-%'ēbQ#SY6%EJ^=ƁƁ}'z2,g73#duFĸH$ˌzj&ոøOøxaxi0^2zf`c\c2 Rcd/8AʾQ"#dP-mctc$a0tyj!ˣѲ|9Rb\(O?3,yq<[c\&ϕQyWȋXRyqR^o\+o7MԸMN)r1U%>yq|TV˧SƯt9ݘ&(_4/˗+F#0o7Y' P.2$r\b̒rR4fUɘ#ύ Lf-L'[dl5v4a0=͞F5̃|ciզk4֘:0sYb0ͱ8c9n``6K=f\f(i!t__,(SyFg[;=5)8IƃwB2eE`yp"|$8-|4?Y >& >|\>|:|"|E9=83 _/??o? &_+_y:@&V:([A b&wXGXduu::VFHӴNN5βƚ=ˬYhƛYW5bhdn&GZS2Ȋ[qX~8W4yyUce޵ejZc1on36X;fn˳<kyn}o[=i/0+^v7->|ln>nGO?O0Kf}}}=|m6gl5gWWM$.-~~Į4W59yK{=۞c~mϵ07؟_M`o0ڛMfln-fo~'/Ҝ#MwkΈ~/;F(Sgsi 6箜םsvu~λB1oR'pV|49kr:k/s9Igc*'| lrs9߸=ݞ9[\o`[;{;$g{[=0ܑ>@_<ǁ{{Yuq^CCݛIm}GG#GG'OONvNu_p_ ٝ8۝8[[;ϝ]. \~~.q+ܕ+OOݿ~6׸)7ଂ ?/ .L)\`|UW\ڂwTPx`R-Da"U/xpGw pw%QYUuH@骙! 3 XTtuUUPp=V]WqEW+z ((g8">~_կk_5^*3 4.=P=nD|p >CX589?]lk0<άs8cO9vfT#nzwvJ-(15/*J xyRN-³ ʞnW\Y%Nv#]Nܕ5jI|v)kkw|W]bPAKiSr/\nG84NkK>^\V\ݧ9{`=/oP[Uir cz'biiJ^ =yِgֹ߹:UJSP3y8rRP{:~K\Skw%oe $lAI'Ir[. 甮 ٲ\; %6Ɣ 12xR;s1DݬBr]<753c\cFQ԰ Zy-BG_ϫ=WRb|Y>[vRͶTZ.5ae +flpƪrSCZH+Qg!]^ bt4rep_@,.tf!xԐ$r ݦFUYcIQtJ'=f ײPпi栄@N> 2#ͷ\KpL+W/WY87SؕoJR]ͭ7ܭV\t)Kv_pAly/]~ ns|<ά3-G(}/rھ9Hns]B +(13ųz5 ]b9D[|҄嵇/l>hWk)gչW JڲTm\a_⳴WW6R%Uݕңֺ3{ΩYyF%wD{ݫܞ&ŮkpTwc5u* 38>l<78} ; X晳zF.˔AYDYx<\`@H_j ʛfC; w-zw̽rw@1^Srp}8k8^.usܕ rː𭤙I8 ,[J(Uwỷ5lX?bX{YFSqo'mL᳽<ے։Sv|)v\~4 ngq唷*F>KΟ)1zc+Znc<_en'x:Fl'}=.'k^Z3k~Q/6zEo۬ ͹ϹnxtqvSBkyYd}l}||htV9oOOCfE;g:bVtcfEGO븿u??,BGGGX +WE#)@E6|$ՁMuG޿JBS|4~&ƯM~ Z ߅NUtzʦƔo,ZU)mhEihU[jS'P:SW ^\%ߊO?Ӄ$H[HAgң/9W,zެ( ;ѓijF7(o[h^k#?h*Z6|+55Z)7g'|sE{Ъh,ڰDH8ҟѪ_ȥsAuEmE$! $D]QjhMQ$`HX'DňxH8@^J -49+%S5 D*Du"I"ECѐF% +DqTHہ}ݬ4;m0M)q 'w}O7[mv15w;ŝ;KBާB܇B<#NiY</X$KbC=^C ߉h8 >(#4XGA^|1q (# qz$?YL/~J.("Ed@xDAXY -\B|裞W/!j z2R2yGZSS@-7kt|>F W(aZjD}OA_PVFeZpڀ6lTQ& 7hV6I!4B2!u5!@#Q'!}n4MtS f9Jk[ aNEֺ5ҧH)Yw@ԙ;ꎔM4 ;N(]4F7Мt7 zꞠ}H3\(}-ǡ (*;v)QTJзiw5ީgQW=[Ez깨}/)AP?<硖(yՏ c1 ]]!te]EJՋ"JӋbС7LЛTB53BhϠ<M>M> :gzPU#/jVZ5V݃{{"ߛZR((??2mo/_L;?Z/_8H3?i+WWAr}Y;eM<6m;Xְݟ5l@ְ}k~ְXv,kձmИcYWǺr֕5ʃYWq"Ǎ.hYfܖ5 ֌۳fz>z2ςv1b-9䮬%wc-;k٬%`-yk=YK -I'S9ИE,ZD59 zϢWi)C΂& (MmY΀>ӻW !|{h÷mU_{5@Π3m:Zm~|&4Mx(#,hpu|&th?P]+i n|w:L? #4 _^,j[H%,d Q >Z%ׁͺ{/bƎ1Gz4۬+>!;7ވ"DHFE - 4x)Z(H~h+!tT[d Ԙ):!Z~0;ʼnLj;A{/ >H\pB1G D \rFQ(bq b &W^%&B/NŵZ-LNLE& a4܁@wK4`,X-f#~t3ep!c.ap)cq3f1å1fϘa,c3\̘acь.bp1cQF3fa$cF2fa'Q#c\'HJ*ĽҋOL )ʆʶ2. (#/#B^AD9949 qjjɥr\i4g4L(__M[4ˏY! Bn(U\.ɯYR-8jbåfVºV]jaշPcy( X j]fuPCk5XD877cH/t:ZJׁ?y>Rj=/}@M6 ѳ\ , -ݳ8ʬ/<;E==zSddms'O+KRmٵ x]1<KT`T֟QY7Fel֞Y=Ş X`7Hl= > P om T0ǞT`pWcbMiFS}MY8*S4ة/XFJQ#b  e,(?^>?U2eH&K?F/hF/ fr?' @&s&Е 2$K-UK$ t4,F)tSTX7c,`NH##$F,X:4 | ޸G# F,YX:0bb9%qK-[:1nIgr> uy z%Q].`Nazߩ!d5ju55j \~yoP7r A;vz2IdHRyQ7'O;F>@>R{PP:PS/Tπw@AB+\\ \*/?@#ue -۷gH# z2RH)R7FJ=)bm6)QSf=0Rcތ-ٮP;vTGU{? 4ichuP::ݠ#[WA9N/HWtKP ^N51jREPj ة.S<( 8 (r > ]qTtJ: h*Z7ԍPTq2R:E RD0UY9!d3PAVv4ꮠ4ASѺ \da|*N"E"gX=Kkk݈AYlFYQFYe a0j!Z6cA֚dȪ~\? jOQYwASY2N|#([[HP6z1ރT77"}}ߧOoo-|hoo=5mmCzw_}\jn 8ґԉw<:^Xs!lj8s.tuPg(%;#̬M-hqƀ~s5q:7L珠g(sH'O<ܘ<e=>Р@O!\< w, 3#Ʈο:!\`Dz9;ynp6Pgǜc(sIDIvg$ߋ7ve؍c7F1f1bLA|,c#LF/C ͸q䟌\SS({{`S` 5l lC/G_Fx,pNNR3\~wkZj9ʻ֘AK"<݇o_!eR=ÝsJqQ?)B'~jVߪ*ZV)W]oSs+YirjuU44) 8Ϳa٣ּso:+"sg寂VU0kgW`Stкxnʭcɟ_F~I.Xy*[O]-P8Q \%CjM JQąmM ;M槴ŜqKs'WH-.Cx| } opeR+w߆\8OIR% KuڲpBoCOazE[zv f:/|%nٺ}ܯNc쮮jqWM#| cNcN',Cio4C;懆-:UVM71o4ollvqr d;/-wg14bkpNKp!< >"vcM¼ ^:E Jb0Gy}cE.͊w]ŝ)eN5A9Mo-6K;uRR뢘u"<kͼ'"{ww0E{xGR=EH6̍)x#Ndz3L~Guͮwo2[VL#ix"P߻wI8pr}+|+(o%|fo5 F[zF\ۂpo+҃K}=ϗ2(})|? GčG[IIj`C.DPS˩E͜H'=ѩSǩCN}j81‰ubqGs{N'}ӑ2fNs[8)tZT'W[;Qr;(&$' %wr:!Wg3J$tD}(ur9Of $g3<0gRw㪱$qؒ$\ee'8 ޹%Lun!6Jpnwni43ݙ g$͹ùwfAC| Gu QBqQlll{[vdK,dKsҷ#[fo[eKlێ-}ҷ-[gKvlΖҷ [fK6lۚ-}۰ob2H"9rm˵Brf)Tfl#dRH,;r8ua܁rS9ZFz#X9/ wn, HouR^ [TjOC;R^#E<(#nxrb9ބ%xD1 >S1$#Y7a9!@1ȱ,=,=,,Hl\=lvɊ%u 2:2:et+9 5ȵ3čN:čsDI,[ȭr+Ɔm~%v@@jEh,Xv7BjXR'_bVP[EXV-č쎷 B:%\o<Ίb9reCY^8q?BcK]m$!(FDZ]u =fNlc]Gc/ (o}kAF7G?!<Ŗp-$[^潌jy'{!Y7}O..FޗQww){!nƃ<tn.<*t`:3*t <*X<*4p#Ed{;36KϨ{u/..iyM-'_е#pO=!s 䃠a7-&]瓅Iu}88,]kGt_l+W Rk~dY!sktYYi<ýA ڿ5?uoҵCa*Yl8ڛ ]"am  )d3 "l%¢!R q kot4&ix&ޯ&t4'Ϩul'/[ɻ_ɻSզ*a00ڦ#ĐxQ.UHRlwY{JB*RR$FAqbI*xZ EHd,r%͏DHT(&U[.VO=jEf4B%Hs0ꈆyլn$fzdYPpY"\ ׇɆpK- giSj)Ϋk[P)uM+=fP~[/zF,fYzyh[ܠ,Ƚ.*FqF ։p#;jKpzY G*P ((1u-bdD"ِS$5FDvHCxbx[$%|9R%BÛHe8-<Il1&nWkc=ؑ;ǦcK2~{]xU&[DxlfϾxXyPrŎbq'dlD<8%ޖV$SPiV"ҢtIZS.*3J|D>*¼=*O+940R)!iT9+_g%^}~QVŮ8mҀrJ9 *qeJnr=lm` ur/$KYJ9e.\3fE,݂TMM˓JT/RK}Z]ִh\]뜆k֥W]%-SK"䅀SU}h Ȁzk@0a}eҊއ@)&Y#!d!< !G Nv"\v{ J}OwEO)=>͸cgSgs:Vyxu*o9KTϢTK@@ :*گD2E. %W@kVuBEF'&d&d ;]LLgρфGۉIdĔ4M?ф.%f$Z{I+I+ޓ.m5z;Ь 0nhd6YoMYIw%-̏>4?`q~ } sZ1 ??7=?27_Ḟͭhf@.s0n~y#bBmo ~LO $s\dɴdk6#G x ':K.,6Eq8c_Z^u[}O-oO&`?#?!ևN֗q=ULLi+^, }˰}`|V݅OO?8ȗɗ$y<IBv9%XmWG"Og-rk 3MM7-r@6avI49MEΒdr 1m=jW2N<@ 222d"*22g~7 d5T{aݦQsU&I)R[jl"HW%iEUr+\|OqyJ -HҜ&YUFenȧr>|.VJ[^^oh9s(Ju|RSJrH!ʶ@BU Q.HQi2\s$Ӧ)p<%O{甾2. oanhQ6)a[x\ʔR")*OSe~Y. |[ʐҥ-N)O#*A2n1iIek/sUA: ߔ Q";rY:'^\nYA iI΋7@K2%h]*eNK7CvʤK) K) ^)Q*deҢ)Jg+J2ZTn)75aLΐRyLxo@xwfpz8]Qe^R@zVxXjk.e |$ O*viY:)UfGL4QhB٨rD=a zUϢo@xH? l+:a!Ax~܏#Q!Eb'ɕDgAfbBGabk7Q+1Pg]wĻF&ޓx:xoX}!G%тO&>\1 61An}d5e"dOL'M'рM=_Mu|!Ӱ<7Q%CӇhl5?1o7Ќv-Dn^@|`YBWϣ}{}=h Z}=d}[wEa!6X`N?qc.͢I߽rS%M5ACBk2q! ⌯P(,H%t@S4[ネ:Ev5I C¥`BTZ8]-5F5l#^\̢mb"v1bxA/75 h> Pʠ!N ?.P2w5\ʠGIg \SGpfJdK;XM3QoJ@MX*  Bs#rqa trFd7J-N .$A$%b8}%0poPQzV kRR.%T*Gc4y\*r9S <(J[4yyo*C烫I>MW%-qѻ fsM5wۑ@k*޺,L r BFFl0/hڄk­`\h {[YaCH75[}bXoi-g}b.B:{C!iX5X&P}m5Uc2Eӽ}T ] B*%i/H&O٤PEuimBKp-0NaNWDžр#4||);pMǂ:.59(3rMhJ?] y ?PRCh"H+b4="rQ4΋0t.1`@:.#kQ+x.I}0+*`Du;uPy(7tA!xE^ NBF] ha1X`68L =VaWpwvJ&w#<H\!kFYUh'?a9jeC!=ߍB5r(\ $]@ }"5 Dj'PRQ>\¥n$5| DaD J??G6~%w;( Ew{(Gwߢ=M(`ݛPP ^C~l J7 p0HaѰ6g >F[ }nlGۍNc'a|*zxx F'؍v=Fk]'LO/^0JL_3} =a3աݦ}}+zS=*55ГhjDO=3TnyzMTayzsQ-myUY~az]Tme}-k$k}3bEԘ5555dgogMdM>}SݧvOv풚ZZo/ЮG2g{Yζ}q!{=XGOvWmUs8!e}bfeNM.<q97k@F`;{^ڙvEUr[*wE@\@guHܘ},w;mnḳ].ى99c_VٸVJ n/v ׅx ;TgGQlw=ԪR?eNwx]Gm\sR}ݟp4uW7#Bwy【-SV &:z:ք\A!*iw6w 3lpJjofŎvƾsG%l8:]'gv==}{#O^M9)mE*_֞gKuz^)S]pp޴ /`ypFyov pV<lYh8߾Ks110f+yh 1k W<5<i/ l"ڇiw;eH#Դ}̶,T(}~˾9ѕՑyn-w4َw+6gGe {{ʱJzG{aַ gK^RY.kXmd뺜]J'${KR2{({Z綰|GN/oqGr oOvwuNjs"Ojw;y<{V=Y\n`t4eγ87ry|5DŽtƽ0AhsB L U#e-DQu-vpmqe;AzŶsh0fsY0AJUr{TؽV;g: گB{{Ytn/p&^2%4[oiSZسE]BCOx{v9`N_m 9S$~ڛsw6;!)?/؛Mk|2~ݹ.j'VA^`{p/jU^zm6[-ٗ7/jf Bo᫝.gN"X G)7!{G'PNc_4G;냍tvP _WSEʎGScg^~ћ rW:=0KQn%wu:z?5F InZs t #C~:nϙs [c}5p_!~#B `fW:FiW. S *%t&i5. =Cp{t2#}^%7KwU& yqǴf3ao1jWҀFy2u^nۄmy9-onnۂ}P(0@/'@ :3_(CB)Gy\gv+Ju;~I'Ηul։E'y{2_@ӭUQ$ve@>GTS^`^)ABBo E6wuㇺ#ڸL\$ [KF8U#N|/qN'V`7qދL/ոo׸kĉH£xWt4~"'&݉w%&I?hJ4DK?.^; hL5>qF}:>?wf}lS6'O\oj2olW!1&kOlأ:WubF5]%,iNL6o2gc՜c~ǁh )sffގ;;h9hɕxP#ZS~~<5M;__17L4w-o)3͢YĿOw/ͳ?wo0W_yix H7W$xtRbyK[^[H-~j9N,',?&H?"rrx򯖟[5. 9"4=xRe=xJ^bFhv^Bjv^z:Jy uѺH,750ѨYoiauֿx ;hѼ Vk/NtvLZN͓x$7G\2pjM4&5&rA_!"m' "_ $ǏP:G|"q\#~1:qRctG4F't,q2q 1bx8y!&y|x1O >DC ]I7N 9K|@ΑoW&ܟY|&'<ЦMUÈG~WHw6+Ch/ڇCg?J,OM.9IcT|@§!`BDT9^\NR]3YOg> w †iâ^t<;S! .wJyFqX<ר[];:S]t}z>O7}/gm}.|Re߼owҔCYow f_n$v$^Զ˽=Q䅒mm{λk3yL!||P~2S+9\Y@};NOѷ5m>wKow z4}ڷF|Z"G_F@fFkE&Ig2lހo+ U+~LQ%/6㠤|l7ÛN8Gڸ&E {R0T2G݌9mla3Meo:.*48Щd @Hs<;'idGɺgJvPұfj+a|9]Q͎TZmxs3bq1I1l l) كɌ08FP9p0g6XgN2We6͡O1<3lK]1z9mپFպW)b_sT{m/söó]MKDE۰֞ksFhnmsjS?i3l j tTڲd 9њFЮtw {i_n[7~muMpoϙ~@;ɵirϕ~ 5v z rMS=-k){7ކ9p{;~LlkvOyh_=Ly~yX^J+]u.ܽG)aN}y{"br^x(Eۊ(-J9blò=NM#"oN'زlof[#"֞W4Z޵NDHq=N(z[T1KM3D ۳I9wC~숧fYY<"GAr!jpYpTSKD -1js P=5L9 $ = t&؜͉'t0yR$Jl]lSkRن&_jkdHB>x{Qr\"mhXV%WV&t ۔M:[ɥWe~wa wZRxFE+]i 9*=p9A?BPʹs!*1Sw j~ǚ$IS5/!xbzb5vbtCH+k4țn pʛʡ& YFV ȞnCM5*Ȥ̐IY Lʊ0Ȥ 'zȡ8ȡȡDȡ$ȡdȡȡC KCuCGC@On}P~4wC}@QLpuM0OT=c>o+4*YvlazEeL&j *cBmP %2＀^ x*ʏPA]P/^x +~ϫ+U/B c ct~B>TFeR9o Z;U>af*:vYUѱxUE~[ۯTV% KT9v[PQ̱*U3*{¬*{jTթ '9ӷ0UUf}SPçM?zC=|߂z,{{ƾ UUmru?qK^nvAVaQ* ʭ¢Un* [* CU]SYUAeUaUVVwt尰"} XO{JCr_W*(ϘMx)Q5t.cr-ǃs298癸'q.IGn#KDBs릙&ſ`NkQk/#2!G' h-rhfH2zl""kU&AdZ#Y^O| APay9aw6]dq)UBЋ/Y㲛9|̇Up  F65aV{n0'Z7 TXa@MA]P#_Q/}=ʥ5呲*G(ϕ=,H@T 1Ȕw~[ZVT*-Pr)ONaFP0"fr3w6cBFG-3RnN?RZ{'cgbIl66c>X>hbY>ӟ|а, *d|xȻC84gn|d>vxj.gi`LL?x!'9⿇Or.v/ b%ZW-{Уc5BO.)$ Irj?H`OGq9]O=RxJZx/E,mO :kU|}VŗX/_bj?eoof0,&`d&nb^$83f`zڃ`3(3FY% J/K1 HuG$ca3\|vμdvaVư-kY;b˴dp{363l;<{gᚚ3Zlc5貧;צs1Vqf1E Z¸y[:*}l]5z.Sh:7WފǡƔgEbX"՗~m쮡Ei>X.x"B͛rv,91R-5KlcyN7r-Kێ)Pi6.B>Z )Xāע1NmЋ5O7 jbTcwcLuro,-!DG2 8g,|!!j?ej:P!"DŽA/ B\0?9nueXcX~;BkXGmc0.[R鼞 G/]n]uX|#Kk,HE|acHW+iVm_ 5J}ޖ*6zFq)Li7U[gJ}IV "W_W'<5g<&.2\unuI\.<اb-@.W"gD:kh1M<“榛38XXxn~#[]^r8d/s 8Ib>qKu H𺢺ۋAҦ9FN-V=Y6rm.>(y.iy#Dt˓̺>ߕ#eBbJX.ߊ9ƶ$_HȾU%ҘyҰ$8kDrYf C䒹4ar u.UQ7NtcU^ݸ5W-Ө8ħ4jkۉy|y@~0qb~n[NxܜeH+y GOyh.?K-Ӗɿw13~$/̴g*YC3349K(<WUyV!dª!nV=/y)gQ;.%IRVM^ < r0JW8zSD%Ԛj Xe&"homiz3Dq ?f6tKÊNI.(i66( /WDc\SQ&!k. #RG'e:Wr(Zj=%C.:Gqĵ τ뻋61 c`MFפZ4.mg잫tL9lMloN >nwFV&.M}>c_՟>z'{\pw 410ᏫaOXO돈M"ID2tN$jSzp}85OV, ěF}n֌׎[#n7] jr}e I#v̭#\WŶqB Vĕ(t ^._D-s[@aC!h~9^~:\kp#} ~~JQ"a#F;ed#a/`&Pug+v7ۅ./!Źt:lխ6!Xy  kpeq6\;cڲךL7unuwgogM=]גMƐqU9pβk42nu^Vtw&̬7n|_RGdwǷ zdqXܵ&:עZ{%()dH2,Q22QyXGo[ꨯީnw;|czLnVz=׆f,Mq } c%z24Fӕ~,Uvt<%x(/ﰺgk/:/*@ohߘcGލ ׆74گnwGgoEMƕ~nYQKVl>"#Hig\y ]'^g]w;RsCiv7ӛ֚nѮ5ck[qHzƯ5}Sֶfsm+v*vi}9}߰w;;_/w=HPLG*%nw=:)px_=߂Uh:Zd*jҨ(_t7)d&}okZjj$:޾cN'3nײ{-ӗGd\=OmX"sZKЖGo_c>˷0hߦoC=zwٻ]M/|ފz3-{6i_wxt4U^TY lH7> ކ30/#`v_ߦypf<{*A/ `Fp-3l=(e k]G;;}+FRy+'fH3VU#-p.ns 3P1'f #O CT +v#_>>@U0jj [5~b_^K_US0c7`ƪi}] [-0o G0oyv`ުU{0oOaު0d4LѦip紟CCB#`^kC޹[ZօjӾ^ rZ^\w.ˎ/7#$/.ӗitf30 #΅{|`Mfwo"u(hY' M  "D@e!02ZRP.uZzR2cֱZZRju)Rk{qs۽>;=;IȫݙU*)iF2.N.((_]Кt9y2V$MM^6yƩW4&ForsCMM{w5v4M6M b].0b}>nCl 6džbC/̕ QUWR[Mƕ:̞rO}ܟ/';Mlmɨ~z pB(&2P1:P'CERru'8GntTr5&WEru)x\]ES'O%dMʕ얌㾠7#seu ڃ޵u G'7) a):2ͭ z"vNB7XWО%8P'CMPi?·!jN̓.i.¸/fܔJs:5\4/d-ԦnR]+x#\z2\n nՀ?Ma.|4qz<)CuHXzѤD1Mʠ*8|ϨНՓ~9̛K[}Ed|w~4'Ԡ_ ECpgp$1nSjº!3xθ/s s ں3fYZI+MiKC\*\ ] DŽae85,3ùڒ~m [y@Up{г,vNlS4SPؽ#<.) [- S9SUve5o<-T-+ ϤܐξԦ6._ DDd4u59T=Ԯ!Բt wCg] s޲P~eI`pd t7Wd뇼]92\] RW%Z:uUpXt$w{=<}7_z} wC|QeS4>=Rz%_&)J}"HXwWDb|J6}/ڽwҷqEܔ<#8=1ͥI>I2f-ZSjKk$2Nh+,!:墯dx3%}!i7ͥt'ޑ(5j+H-^0hYʼn6=i\֜'h.nf|oW~rN9?M&]G_kH<NF}1 [KuiVu㱄N\ݧV9j.JN7NfGtٗhK$i?o&4GS94\La$'նv0Ը%FUvBj2 VVSGgpXjgN7zRKYH.R#z)A9<[ 4k@N)MHRcJ8͒ RuE ZSтjoN،n4WMlKl lw-+YS&jgfNfi߸/#匕f\uVSX %VXSxQkS:.mF'Y&ӝA+itƉ|2AJe9r>{+,5ߖuok➄z׃D6%XNҼjKU$FJ3s RnR㽙sIaa]yٌ3-!:Zk 7Q+#HfRטS#ݑq~9ⷞ'{J5wՎ:NPR_ޚor&L+`[C$^:A֭GYmbG*%7pоW=߇Ȉ'ފv?W%&ܵ6:qMV崣R/wt89Wr%E{˩sIm6wD8 G4T9=&\qIXG^yp@׍H'\qUh˂i5c9ϧM[ɽOvtRT2WkJtzxvpM弹7w\876*[ }IV!yCij„jH7Զf^5yl<|ӣ {}s314IhU'&|g[rii`M>u5N2^\[5LTu:v]qnڭ7Σ M{}nx御r]1dswt/:2;a6A5eNm4XHtt#!ݬ֤'T;[|M-Nmo5^KҮ6WY+ԽjTM'\ IW wJV6RfEƩ Gk+ڕ74;t#jH:SJU,~|Tޢ-_T}Oٝ~*,MиjIOhp Jr(]Vnါ=ִ;Rg:e1?psC'yox`x`٬mэ$Ӵ'Iۯ{{I#Zsq:4J.M4=7 M* Tv I1y}Ǣk̬6]\xޝpL; )jU쩍p5l`ɤ3^i@hӛj8^Uwl=jH5iw]w*\g!JY iﰘUYsRQwQz{ZJ;< m#r{U[>7jLV0 ԫn8ծ[g̔}V&;5Ǹt>i8nm7[P) )ӮK#>glPOe3|<ږ:M\ޱӖX5N75#AVm9m0hR9r~^[I0.qu*)ܧ1 ';)\GNmeTڴ]u=ogruLg]wA@wYdןqx?ag9g,G8ٲA(0O_BtY7JvV[AԑM/Frv+E}rEnMBvsM$_w?uCq\԰/=oxG؟pDܦmv[ՒM֓Zrokık[ 9_Nrطu#ܿ) Cێ{(9ku79@I-9HI9 >r;Iۦ} 763iűUXk}<|` }B|؀%>F|?}e>QD>AtnI[Ԓz'U$'ѿ˟x[^YO鏦mxG=Ҿy\ݕ rp%jeAe9DWYK4 TU܊{ufhqt )+TT>~:=zLWHl{ǭƚGZĮ!=5om]㭭om-[[7୭xkxkk ںom-[[7᭭exkk9j[[7㭭xkk%ZzV[[xkk=[[COQd.xytR,|"SIu:=,xw9D^7q!h'G'9}h)*?R>JN>XR>xj=Eγ8w(C,}ۿ(':c~1~Q_gLį3&wS𻌩]F~1 h:mõ`&x;ZqGӻ}7U<& ]*Sp 1 |$~[ Bs@  up8\8bD2W8'P q.Cj?@C< *T[l*p=v{n9iW[c`=E@|D<? _)D(oAE>2:>3`?CP"!#W&)~?$#PQĽ4?{Q^/#N+/AДC!du2 "Ep# Y- r+8X `ANAւI#Ih&MC5m|;_KC40! h4EV.(&lCvh⮿asEK=vGk>qVAXe UxKf+_'|rzJK(29]B~wr(.+O|/%-p\d\2Q)x(2} +evoo?^ ~qPc(ȸK8~| lA~XM5,z؏{Z%p @+b!AV5 Dz79`/h?]ڑg5`-_;J`?8?DIEfc툉YLZ9)sqtAIoBN<.^oJJEZd5O >ܕ=f@f=mL3ԒRj_˸i?z1ә=jKtњ򯩟wբW.652fpCZ^ķg!W fb `94ſ24cCJ;NP vl]Wusc&t"< ]? du+ճ`3B\ &Z蟁 yD Կa&D[(Q&y6`N\uX&XXmd'OïoFgvxدccS.$Gߔc?MPV7iuT,9Nlg O㏈=1"xCb')E쭉"x yxx-i"WS.'>PGG:y C}l."g'lȣH"gk !> fv:VFG ܅!WYHGfhڧdes~/g@ h0Q"iv2I?)Ƙ,2._13fc^9q-Ӂ%lަQEUiF)tlL*&PEi>arZgu56˰JJXP"Eh.vS$l$ǮV(6úDi٧?lD=mdo_O)|JjM)"_wU5s0։F8ZorԘu.gəai~Z͘lf(B@_1r0l݇Փ(X`E(`"gOgIFY3EQ`S@cT>Cc1g XQc EW ˯Ej5J9l~Zm-|2=44w B$e}d"KԔD5wG!:Ess<~+2_FY~ -T%x/= zB#{ǩFq^v>p3# r!~}*/A*|=fW@71y,4ᅿ]i&dx |@׼3"o@)l }%f#!U ˳ ,| 5i"VC2]( \hboA5XڑC0d$%B )4Eh.h#aH} [.s+аOǡ?MhPe 4< >j:BPV*p3&"@Ρ=lDv f.^ y;a6f-^?y <a{gA*W?ڋb>B5gum#wb T!y]42QiXCb3 v0fYy<ԲSQpU]oX2OҘkY_,\qа&媗[K|nc1O(lk8٪m16Ñ_3*fg|:YVXuM46>ѸokͼC6֪1~_};Ǒ۸Mjl _}L43q$^& 8eĦ !k/ZfXxR!q^cMm Y|f6ʚkۘ':ia9k-@1*v(9TVcsqB҅P g-f|[gGc@|nA(7v}?[ˮؗ8Ԛeذ_Gz`gK]p:g?l#^d6M9SdyzҰ-d }>$)koia#Ե 'kO?XTil5 my\ թZzY!'ʶXY9`>D;D6Φ 29}ZXXm^`kf!|&暰# }[8q:(ۛ\{/® 4\ŭM_e9/_bӎROiiZ*.o7`"1 ,l hco8ܚY5qH32:Y&Zqp8qq?9_X5ρ^\w#lYYJ:bGBߍ0;dXllķ61Yl.W5vq0_vsFK nT Ⱥ aSX&o7\NO}؞/)Ѱ"3 %v‰a KKU 2orG nZ|4vTcJe# K|¾lӊs.C(6OsC &v_"#lk!Q QxzԨs=?":-sdƴyks%7fk@-wm`Ū_xQV\2U.|S1y9fdEvO!3#vG;McWgICy1blq鍸2{YM:*~97nnBo1bN-RN(xGBjC7p%̒"n#!zoC3sgUs 8ᬙy_j9J= o3!<4-,ظ\g_%>(`[wk4NU(0QvGY1:cKdKJcss+V=]R&N;(Wn?U/(c@uۈ[|} ͑XEo&,E,٧rYs={w/)sg_CENÆus}=AI_LVC̲Mzl16N \u]3 ?(4*4! ퟇'r3\l|NkMɑ}6"Oך箌ܪ|ќݎ38[<@oX|;_<FyH@+-v=bx)SO }fBy }|$ lxBJ v-b=mlm}I/QJgQ~m0hrG_@!yb[J;>\BKbߌ>bs+ږ{xkw6u6vOO 7Uy'(u}jWl&RZ[<WP#g 삋*!>ȕ~gw;aK+poStݘv}Dg]YZ9`%kQX<%1emv%~);"!meFKVtKZf.4}n9—-Mk_V`{3o\%:*\ipO،\[M# `gl"GS[ݰ]l3D}?"i.O` n& füt7uxplK荆H"6sy:zv=5k+\ߊz76 kmR 5ee{E1(Gy.k?Aܶ }.lw{Yʀފʀvrm h[ó|I·m3e^]1#O5(fkJA-9|R Y#E+pH)}`w螺:U NS uMG+Mz] %$Vf>hUa3H#Y!t~rARz 3V}ٜR])ٓsOXR4-9"!Y.-@lCSg}EKl(!dX&ϴc tk3H܎ҏhgY 3aC>>Dad/dF 7>FzIUHܘsbEc-⾇b]x#MЏ!Rȳ2~EmR._\]iǔM` X^o);$܈ ҵ]HnK•=jHՠ8!]0OB%/ :߅Z70Jz1DSG}}=xh}ֈ#Y..Ӷos =F>m#ng1f!®# h7wDرqy6Nδ* iﱧf҅dYH[s筄$vy/>len"c3徿fFyy<О(v +幝CSR$ A5M'ݩ4ƍ5#7̆ Xb-}tn Ѹrhļ:mH3Zh 4mLY=jM!of\j4z ~-1~ KӫZ6uH!_ns#X֥Ӱ+ina137^czL˯5[[1xQ[Ěupd@_ ?K H礄K"H<5:gS-y>\6R.] ^5f,ژ̚k"N։e3!ߵ7~ {!_7af1]o2o}9m}Fdp0%Sd2DWVfgu</MBof:y9+2>΂Wr+F:\kC4n,Wbsq{=$ػ>"x۹,-9cTo<žj%"$? #sI΂hY%C7mT3j"{;P27:mvAvO_$_oȖ=Hv@7ܐH;Z;龶>CE;ys G&cgTMoOp| ?4]hup0 7Ֆf~f vK| *p < ߅â90e4$QM;)]bn02yV\X *$̇i@\ 'WQR.Z. g Ι)1v9Ɇ}Π.DkBEDE 3}q+VtŹ~1Pš2"*215gv#Lgb% 㾬E-#&3;K ,aE"[ WMXW QI L]DW  -sD1]\`Kp]BTuoMvD(oR]EIZE7ScL\bB, (%2-E.zb+|H  Q R-bX>Ex]f*l[7G^p'c &Ep5k&G,='̜5ëV0v=` s AƎMm8Nr ͛:y >_/͜; x?睲, ˛lX ր` 23Ap '̚=a? yB^ W-p]^0[ං3'/7)oWe:t(v?czn۪;Xz /)b&o-k$?Y2syHd<b"|$lo3/ʺ&u/{_H76mVS[yEF 3amjmbLfM10q2o'J>|f &͸i1 -w'Nl/nˆ&^-Q# &4׍~/gۡwB.&# EB<Γ~H%ƿ?ē?q([V#u_Wz&WɇLqc [[\VZؕO^i77 mO''~1y!QSW#c9b[29D@~#GLNXǍ駑~WFՐ~u7E͐~sDH5o"vH?G~G;!HL vEݐ`w$ D`o#զEZKRq[&4*d(Y:&KQ(Kq]i_,GKȘ_/%~ )KSdƞ$+Sd%{ʒlOYU)K=eIV,%Y#ve Yqyv<OA*9Ğ$gdAK|cO\%y=qI^iO\W {Ⓖڞ$W5%*>-! jTNPWYAӠZA G 's1jp05 <54( ԰`AP K u~VNq 3U*ԄOML)5)qkV59q{5%qWn5VjFjfbCbx? q(qH-LȞ%$PǓϧn**g2OJ:rͩ[mz^j}j^/u^ڐڨKmH=IY/KmImїKS;R{eR땩7SUS?SR n &=,=Bߜ>Oߖצ;33t~:_ߙy4˞l'[V!{~؞l'[ W3V쫷VJ9Tj$Ϳ+NQ m;}kǼUtuZR׾o۲,ޱeYk˲xϔ2b_/'bKoKxߖMe$e)GUeYrmas[-wٜ48MCJHWԫL,ӶIۢh[4mKmKIږR-i[жm)Om h[Ҵ i&TMNP6mBmڄ:5umk @Էh`[жm Dcߞ}|O4~yhal2l-ml-mm-9\[D'[D[DW[Dw[D[DO[D/[D[D[Lh M=l=C H H 5HEEgm8111111g님aȷE\`님mXhXlXf닸q/r[_Um}+m}BKQWsK;^w(:2̖n2#6mMYfY4i#9:J_K1FL4L6s1]bw{z~aQY/wϋ"O/{\'o]X,>62+kG?>TFYM3}nCT< bl)sFAve[Y69P;9r%1m9NNȩrx_ΐsGrX|ڪ;p5^WK͠xZcٍjgWORj,˨3ڢj#+g2/e\} :"w;RK)]YWu5]MV5tMYEuM?{e{X6cq!/x)^2^A.~\_C>3~__/?7#fRrkr[)%A0htQnA zUଠ Fj`j Ʃ`j, 3KT`j\\7TuoDuq\Z%jU";V'2:zzjmQ#$BKtK UsӉē'ljOԱķoLVdzf7%[dOՍg%9uzi^d^Bo\rIrW\\]+wcrrw{O޺!=#ɿy%'{**{RSuzzcFަTT3TTTT;oKj\j|jjjB*/罔fx;RRݩRvA? 3rʌ=3~Ό_4,3~aFͨ&ʚ^CcF13~oz{VȌ̧2̧*ߨĈ?nfOh4#ٱ+ĜxT"G1';^gZ0Ӻ.pljibXdڴ:qK<(6gKž>_|jzI)dDN:-=2WL+n7׹nOuGM;{Jm;wnOuG=;J7ם\?#!ם鏸Jbrݞg\wpݕ~U(-LlߐAR-E(Cd %s8Wd%M(#D9JP" %}(BJD(B %r*/DN)tɈP"oKD#=dHF;d<'$8dD2%\YɔtɔrɔvɔqɔuɔsɔwĜD2q'L$I8dD2)'LI$qT %RI$#D2Q[R2D2S"UBT %R-HP"5B %R;HP"uC % HP"\Y4%$LP2B4%"HP"giJM(D*#H-)DrB%!HP"D:93HP"]Ct %#HP"B%'HP"B%2 ,+CɜJfP(sB %tB"ݑYؑ7#aBȓgyZ*|U%UUVUP13V+t[=EOtgzٺ@s<=_/ "د[AM_RH8'E'SR%%U)UZRTyQFU ʩUnۈ'_կ*+^M;NK/W~MN-&-V}]wuN}?cԯg33T,CVZSǮ4L٫\s^Ze}}i Lw2_N7J}^իuz}QߤhxX&1c+3Ʈ;3uW]}t?=@1z z'V۴\{;Tw]ݴ))<[D)Ys][=`=DazGQ*ɞ.aboPꪻл&^ cB&Ѧ4e!ɄՄ˄7C yؕ3MLĽ %bbeƍuaۧN.Bz _E4VTf,%K2,' 2&2 -2%2#+J"KuYC֔dmYG֕d}fƲl*9M 3i%ϐeV9t,4s.{Ȟ-ȳ̌/9r Cr&r%ϓf4̂ r$')f64MNyf>4SΒ9[9rgfG BH.ʋT.y|D򸚠&IjijS3L5K lU樹jjZlV%jZ.V%Ru:~R'EVf Z{f"QK蒺.貺.+蘎@'tNUZgtE]ίtU3ngWV=]_7 G%~HK-q/$"!c#m~w%_ښ?DHZ {^2Q|'KBLXXS䋐ˋ׋C.qx#x v~[;DCE || ?DxIx 2`Z9Y?=^Ep);S'ڱ86RjWa"c`1?Xyʊa'xb[b7`4N1=D޷Q}Q8[Y17\4h-[yeZs6FB|c8>O$>OSyɫ,^ß^2SoFKD\ w17#l R~;{U-?FIx}Ğ1yMv ei>rC4|"8OEdYF*boR%IW<'> &K2K?O|aw8{Gyv!vSm}xsuzDjM RQ@u:OP AŴki--VڵBHNk+ĴvMBJY"Һj=Z6PE ʴQ(q 6N 9@0P cŐ Lk ^gK2a[-l{Yx :dv g>XX8?W WDs} Q,0s偻w/GSby<#%օOӶmgg*aP-jgV+ syaHX, , ‹2,[mI4S ӶJ36V%v<]?=zy )}1:n1s՛/Ulo-M!oHJ+5a"\7O70Qz R1z9 |)ldo0_k`RȵC9;YM0C{{ =׋.hOq Cib6ۦ`4=ǡUI=C3>@Dֶހ-̪N0ɭn0'7e? c;Yf;%q;HNa'wgHGO~oHߏ2}hcu[uF~ށ#kflm[&)lm6`k[a;f,Y73ŵ X ߅$|a9XT >ueEπsgjX| ;M~zg9?͈jĦ5iMΖeXEkZ2kI5vh2ȵٳF5Xӝ}) 0SiT&A<S=1H\V' ցNZ'zKE2Z_JW>' |RT?p۸;xn55x~=Q1>?'|Wt>Wg\^9?E%/[',`Cf2d03Zr4D!0]T`夤%_Pjȫg5U&~P芡S *!%DRtGGic|^L ._9,wDA=B'D4)1;SpUn'0/$Vb4!-{BOXSx3]kqR\#7[ŝb_<$OsENX3+>ZV M2:B[ʶֶٶͶ˶2Ð]]ǮM{̞ ER{o{_p(Xd{>>߾ؾ̾¾ھ:aacoۏO//ۯBZw G+GG{GGGgGcccccccQXXXXXXhtwrupvs\t4;Ni8#ΔY,s;;99G:8':9+5:Bgʹֹٹ͹˹yyyyyyyy%r\2]1Wڕj*tJ]]}]\C\]\c]]*l|b2 j:FW8n`1-vKhg`c`)I{n2Z vIw>xXN{尿})D z OwPx)N#OGc)8(p<@NH[1L!/Pz"YIDNcSt,I:8>E!*Dtp: A+T3I`IV ,4|#=KggJ Vҙ: +iOkg ltp!.si:.y2S.D_6%K+h=e"p%5 )pl@} ؞o hz`!m @ov?7;[Mt-p5m+kJ: *=x VTRoߘoͽjZ/#MަvUohQQ[תu?9eߟ2wMM[sw6={4DsstS6w].q݃#cܕw{^^>>>>>>"Rk:άd}X?6 e#h6UjVzVul#vFva)v]`UkOCtSi=_oEzWTCh}^Wub}B_7[I?я~۹C_̗|5_7-|o!~gy~_!a1(4:FOd 3Fctڨ5KJcb0MAq8e5.{@( t t FF%偕5MUiRS1 3bf[dv1Kf?s9a6ǛSfYk.0s`n}d4SY4`*:.X, v G'%5M`s!RBF(JZچ BB]B%Pyh@hhhdhlhj24; $<2&>)53:::::j3LJG©pppA(\.   O OWk K+kÛ[;ÍCs8#4DH$D:EDJ"eHȠȰȘȴHe&RYYYYi\4GIQ%jD#Tum )%Z-GGDGDD'GGkK MѭѝhsĜ1SbF,KZ bb]b%XylPlXldlLlblZ2V-bbkcbcbbbbcb'cgbcbWb<'kq3vxQk4;7> >$><>*>6>9^ώϏ//o7ďO/ěb"'Ih 3KvDQk4;7101,1*1>1-QM,L'k'gWb2'IjI3KvdQ8YL$ ɆՔ=NRz*JZڤڧ::S=S}RRSCS#RSSSSSթԂԒԚԦTcjPhDLB9Os)yf^"U^y:/oPy*-[:o]Ƽ-y;5;w*\ޥigړf:N҅tttyz@zhzdzlzj2]K/Lקҫkқһ҇'gӗW2b&'h3ˤ3vLQk4;73 3$3<3*3639S,,ˬȬάll4efd['א#܁܅lD6!aMNZ3_!@ reKA9h69Y.d# ir5VDB=EoѬfrلhA^,Eُ[G~+_ UE8-Yo -?:jt^G=Gl`]Zhi`]e`]e`oXL,eb)C>è ca:&v[Ƚw#6h ,7! S3L:ī3L:DYh3 5k `wm7Z6FonDZ|(a:lCC<<ò<<=V̓5H, -?ϣy%prr;-^;HѶ52'M-Hk.nF7ڸ{ Rxg [47zz7OVr/U֋6>R **DE*5U jxUCпfZ, ?Ӭ[>re2DK2.2.Ӻ@ a }GPA}5Q7jpzbddWdZ@B]-D]ȑ-D1(Oh!ji|X3jF"ԼWm[.{ |[|5CٱQg"UdY299999 5pY td% 7,-_98CscN#E[xDdTUNi)l5V wl0hjVe&xVgf299 9$VO!F@>3sv' '! -3w(rrrr *7{YJeǢ,-hZ~lGٲY89q>4q I)'qnܔz 4r!r;SGw֣m=(kYCN@NBNAZ崖r1,hPeɖ3KKhlGٲd91?HimV.yHo3r.|ҍ<Fw6,SM SӃre2Cll,g@ΖZ-m 7[!Lȁa~dl%sE ..N|][ςnx[0Sf2KЗd8 6+cEkl<uC[U?-R^Ͼז+ٖYZY V /xdhr-2Vþ̎j&zL(Y%1' 01syE֮_Amyݐ}V簽1Z^f9HJ- {@nd5|՚Pnw<y(/@yʋP^r 8۵l٢}%Q[=P=* 5U‘Z} 6_3r'3=ygճؿU^#Y{qz9sv[6;rj[tX\,1{w6qUQimL8 fb\Ûq3f 7I)B)Rh|4?jn *qR'Mrϼ{Ͻ7o0oZ6/kN}IMQzHTMFXhG*#ri'8h`NZ&Tkup}NwbO7uHe:x wyH%ݥ o]Ļmc׋oӞgl0uP$~-sJh]yދ0I$v;ݏݏ m]&iײUmО?d-'dWϝ66ں쉃]\b%s# kׅQK={4P&v7\졻;9]Ȋ,ur?8heggRkكҤ]Eԗtd.-SiDM'^jGK]r ô6އ/+&ZZNarcL>3qc趑43aEo;̙KzVH]%p x;v: ^zE״ڰv ΀k(j2Ϡ> 3Π; ====ˣG_%CO34CO34CO34CO34<0Oy2̓a dGPQ|::oFoFoFoF(8yQPmp\4*n>r?!rEr0N>W^zSY]Z h-* +"Er+ҫH"VoQz Cya0.s}{\7YpJh(Jh( }+b[aPA[mUVsmU0@S)z t=]O@S)D_}!B /D_}!نdP5Tj UkZCiW4]dp\4**9TɡJUWQ_E}UtGGGG+WDH4H4H4H4,yf3KY̒g4O;.,kW~esuƝI点_t.;W%g?sOwv㓞d6J~:z357^fu{w endstream endobj 2598 0 obj [ 0[ 658] 3[ 220] 138[ 552 278] 144[ 558] 149[ 430] 154[ 483 504 455] 942[ 247] 958[ 657] 1827[ 633] 1853[ 557 539] 1858[ 550] 1868[ 558] 1873[ 574 544] 1876[ 532] 2868[ 579 579 579] 2879[ 728] 3397[ 747] 3404[ 747] 3493[ 743] 4666[ 415 415] ] endobj 2599 0 obj [ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 556 0 0 0 0 0 0 0 889 611 0 0 0 389 556 333 611] endobj 2600 0 obj [ 600] endobj 2601 0 obj <> stream x{ tTuN;$2u;MIM $H 3 " \8tW ADpVH2뽷[ˮߩSkڵ]Yb" )+`'Z(j]~ECKM_;v@J?"cͽ!*"'uD\ ⫳ܘ5Q=/)?emDYਗ਼0gs٥;R^ ;2t_MB]¯DSJJCωlSyɛzaNT2wCF_O y6N~Vp9Q'{/[߲ 9IYI-Y6.F`|7L*SWF3E_YdH>z"oaWsjkXT!}Ɯ~SEfj$@vAlDPoOd"S2Ű]=,BL&a01 047~\!N䜴N?Y@DL8 z+%MGS$7o|۰?s-*_@^:C vI^9|oi'=ϟhgTFg]ZI1R @%;s+r2~Xf00戾TCQ:Dl:a#p7t:˵"'q12FBۚ_}ݐ[cj"'}|+-0vhD;.Wt7@7@G6roMh M}p{߀9E`ͷR  ΋53o@z;ܼšqO1.FBbEŐ^}:(GDE)R) Hh7sΊtj=Ƿp.4nT.}9 FRn蹑J 7I!HJ~f)AIj;)tИáJj:o$Ъut?=>zָ .v]>)4J>Y%M%(F)Irm2$)?h/AJ$T(S%O:(& {zTp,o$Y:^F|n|?(vl5x=/4CR9 _*s+BmE6^xi2yX+#`O¾M;+]OSwcvcx(w'E '`3D,SGApD`\M|!X ڪ$Hğ՜@ї/by5#|JQ_\# 䭈 ډ zi=GDVX]8vȳt{ 4"wjN?h۵!tð~5 {",RGDi bvw!.bpƌ@ܷ>SJŖg0N Z#[Uޣ`&́?#RHZ"GdЋSa_KRU o zM<k&ʄվN_!=̳EqZs83J b;#+Rs!qA逸ŋ,"]|-Yj>dt$#+Ͼ~941$)FjQǪIY{%5ŵI SC|Ce<8 _K5JENlֺ㊔Ր2@J?E4p5#z]qEZ E4v"dRm]b xOtyYђ?l͸xY!B"64nZ, >h<^BD2<~^/UŇnXC"I7#dFJk3>%7,͖IKXsvV;c<#gy`Wp>HTwy7!{ٓU&`aQn)qvøeOtDc -j/< p=n}A8/[YVxb .^{&߀."D[@y,q v-W|^ g7{2}_'y Ήn.j}ߙQg ? yAY`-ü G#Ҟ{q qM 8Mu ?R J ܈}#=x:kȷnsܪ!%[1k.3R}4,,8o=-7+4*+~j;v{&Y#n΍(=Ԑf5愙w 7Su4O[S03y@[ӅtbWvF݋an[ݱ;烈2ǑP4H&9t=V)FȄϫoT1B7+Z(݀tDgB^^A\ ּBjx'G\073}rqxQjxYVX~LSn:~Q;@ w `0[(/ؒdQKw! l0Œ'F*6hЗ` E tA$ tVa\(x-z(%;lDW;+B)YaWQ` RG`%+A1؋;sS}fP0&fSO`?)8CpAC}F82 (8 %q8e)XFP48Ra!'!1 Pk}pb,ÌW8NKLW(J#Ө8x"u4 x4bR 1mXlx94xM0-fs+MW43ot-p S.Ux.O`re| kx'Ϲ # ? Dsk& a|} ƇT->K:/D|xegi99S>n+/(|OhGw+VQp#èw/Z|n=ʹn}87p;=ܡp'=d{ _G{QmMc7Io[mГwiM,ߣg5 ӳ9( U?~N2^ /h8p7bj¯O<zx;qJ}S.&SO qX &N: [HkDX:P4jnhJ~+a?TBSM2peۿtfǤRT8ÇпO^={tOK5KNI;$z_.!>;tأ"#۴nfmo1tM0%f;}>==`@.AAIbE.9rN/8'_6q͙Nno_Yͣ"*]U!*ǫ`\hq3o,WΜ!* D]Zmzʈ6=*Y1+_;+ΒSiq%}y \>Μ#wQ,ej4ZLY~g{&')i%Erk3?^yHfQZyv4|-/_Vؼ%}W\C)˥/j;[OwӋ!>~*2һedrdEWQ7FxtHfe kC&(yfRS)v$N3rI I0)' "F+Dl4fq,}8Yag\^RPgdV*G1x|K0gb#1[9aw͉GyhV# 2w䮮x +w*&y|Xli5B,jij^ ZfOE|wΰQ\V_TאfjQ!'4U M,_ |z~J'V-PEU~>[z, pFyJ=h0M_=/{lzA&NjQO]s,qP2(A8YlP'޽WRz1űP4;(H?O>eEϪ08E[R}+q JȯRꪅ¦||a^E՛Yz6gD7rrx7(,ĕE]EՆQ,aq\(sbdݾ6;./B3MHSɩb)2Ұ9'( U|Ҁ*k KqbqU%|=kz/oF Q8_+%4VO񟆫V^W^\^Rm,v囵1ژFQmlYw'U<{ ʨta^^?p g*"8- 7;qRT*ߜr;[%,*jhUzPͤ,eLE}MӁB}cNj2A dpـ}@A-&oo[Me6N,nk':j5ؚ5I55cj~ԴqԴ]S)ޖ}y5jL3[vFb1Hr♄"(h*MF`R#P3* $Ю:Z0>qՠ $PP$B +P5nUMRXiX)^HUsQULc3qoRRǠRGgw#01?#6mpHx5"D"T09!7&jBp '\ͣ#O 62x>#Fwedp}[rR0V8Hag \XLռݎm<(M[8:V4W̎Oqڑrx\Ѯᖅ#wO* M1WAyfrɇ_|vQ G=],2ϕUr)VDy')Ռ|\e>'/yܤ ɞ&5/BEԳҢDmCi D4H; 9/"3Hrt/ڢ?PPաo Z{MCU-lC -1ڐ=-[6Ʋe6Ql6>)CY8Ey= ZCQxh)8@2Z@t7j&Q/f# u%+6.SܕF܎˼QGq7w&k|@Uն. tP%uXV$ 8In,?\A-QhaǽEzޣ Ǻ =:Q:Z7/;IGFՋMdDLt -.z|as zчiܝo},qBIۧ4r)#QZYKTˁWq{~^t5ku>P'ߚ'^54P_^Hi-j6q;V2 XLs1V< }*ht]ﭿn7s2Bݨ tGҳ>귇lģ.5D?1J< *}^W#H3D_=﹇cg_C2FJ/ǡ~I~Ᏼ|BIڊu1jϭu4K4J y4VSǺ :v5|#LJ"St~T{cQKNy! QpS418 >iZ/tv@X{z>OOID&?S֖wk7 W0fgL!7haGȤ] ɮ<â>cI~<y}䩼^t ^c"fn-EW&z i) $1bHu-#1xJKl)K!5JӒZ-YiHymF۬_O'w==~6Y چ`'Y$BҎ$tw8>Wl>0c?R _܋+u?S >L4 ?C( :P; S&#Cnh h4#i6][L\C[9[yV\іns_Dy?zqyv!,l0 5KZoo-`-K[wCew9OVdY7'/W][#~g_bkk-IS'x1OmӺR>=j~-%t 6OmwgEp pQͳ6x( {Ó]Zd<։u*g]]=b8|1׊Ev@WqB/q>G}MawehQ_LH6i)b6%tstMSykwD8m5Tj-$"2|[np~)3㐳ݓxצݧs'ܱݺ$wi*Ui{?:E6 =n{ }M(WDR<ݧ;v$wvLj}? 0:@@Ce8R/nNs<ӍX.o& %"p کq)j/ W2xŚ*?xQvKg2=x!MuX8Å?f<8^$JB«`kX=G% oxFYա[*uz;klp=ƞ$cJo _.%9׹sn1[[[=Dp;;<῅R-{#VkHH@#(4 w%|cq MtKIEeGlb[,&S5 g9[g5mIGx ?7VsFhJFEcX'$SRR@v] u--.]+O%옂}^k{5o:<yLOcRR``%&E@b7 ۩sWڝV~ޮ=KOHUƅFIuw8RR4k-ř)śr,|%ý =ih_qV/+t?+}j۶p7 ClK̳;OBm?Gq\D*v֗4p!ݓF"{)t 1X]{E=Xd*LaШ S!͂0d_d09īq2["07+6j!m" 01o馔)݆ =爦n 06Ta|dC~X;-q]Y6m4m$lAn R/ܞx\H`!sh m1\"39 y98ʅB p `vGHXrjX$8(owDI09Nr&1&&T_p&koʒk/PAbO{bp'eTݐ<<.pYLފbv7,. ktf:ᔩ2pip0͗S"n0W `.ryUYd-F f22Q^urN\uԵeRR-& \̂#~>.׍fOϦ%gbA=KcC͍MKhO#){Ӡj/;vZ?laEzY9XysaX.+2kklf4< _c)j,v4C`BQffݩX~/jH ~#]*,KFF2[;GgW&"`=EP4q N8FR)Ę+ y72W[4Xi.*j\@gmmk'tvwuEKxThWWY[(qqE[RE_!F<^QB%רN'  K@뫽5bֽx0dE `0Z\V^ﳻMtPlb*Iv2Ȱ͈1\lz, #jj"7JMC@ N'|O >'|O >'B6@M Yi$zR(+՚9Ȋ\I38#ZdGfp#zƦ {SH4r38 p? 1'Ȝ<#+ cP78৮,(˘٨9γ`pL!8/Oxzcz$>1]Kp:\:\:\:\:\:\:\:\:\:\]hveL[D@f"o38tu0:wHJp g y n|:KpA МapMp BOepLBpk,?A  noPADirܕȩap,:=1]@ 38co|o.؀_l0.qY4U%Gq( B B,q&pJ.@(T;dr &T9qjŸNz:Yh4ߨA$uR&r˼PŔFDNaj$5 Rnՠ{Վt%p咳5Y~r21O&"=Kӕ-W^X$p~mZ4s"ENy9dt~\-$I/c[Aty d%C)J"Q76y,%.WƼJuыd«0τ3FQWddHuUc4C>%zW2~'{d" 4N˔z~wuzn-ZR^umM&[!3-tb^U1{U |9$'m.iJ/sB$KQɣ4L<\JԪ5Vii.)lyU*+WRTyru<br*em`-gUֱ~Ue W zyo.Yj~Y["ۆnnbIy2:ԀJA*ت? רm+Llp"޿>Fš7/X0c "VV$i#d'vNEO ]L> 6???BF+l;/&:!-ѝwO!#N4]l2BKzNiiiSXRӵՄjdUgb EEEEE,Z[&^9k9V'r.J6um~3"6k hL٠b[FWZ}P\Id\>W̹"YrMȊ+#k ͳ+A+~^xQ1!1xBrv}&u0@¹"H4eo$`΅p95}ލMZZyyQ~ X<˭2sT BFġ7,9{=d?oe2AA~Ffv ZpCgv5lB{ C^uXIiӕt%pԊm;x*!j޷ŽtP|e9_F@Hf!""&Kf!B"2 d,&_g0-,o!bX3mކ(㨣pie=P` >^CaS<- oq\&M)vܳ~\/OA{{?!L87!%%pK`p5bV932#+ ȒODVd5K+C8b k# }Cz!%|;WO$~^χ׆`ҕOJs k|blb:u $ADhY DzCz#K}/8FЌn}74'΀@F hMuDu4őQTF#?5eV.$H$'2͆MMQf\R9X$z 'cWx&a-3uݜ` g4+Ӎ&bh޼kxM׵ɜD h=6#-yCZ*ԠtTFhYtͧGQh-&|7S9BBep#:)6%ג|UU 2ʡUs n 2p `(H%aGrf-I}zрFK2`Ä{H \є+.${5eT1 YTOHԣf)3Hգx͐j ղU򄴧f#$ ga6)-^ Vw l zWѫ-ߎ.h>Bx>IdBO# }>Ley6161_SH©9i9:c;D]+$4OYzPL gl(EGRbHGRni=^Aj! :KƯchUNGLzdO^v2= [rlqC(ab ް^Xp]hyeuݨO4 y3 dpzڃNk -z|-{|>]o-$G v gP{JoB8s0@v<L4Ip_c}y z#H`~p1<=QU5XΈbN}#GXbEƟ}N] ^5_XuAYױ=Au_+!?kYSHc$d8K^o$y"&$JDίq b]A !<;? Ւ#cj%Z Bٌh3 }|& %1XJez&iiȎ`ȵzsj` ^~sSB@x.̝ C_nn#e=ǽA9Rr|WU v+1J@c`m*R2ʁr/9jKŐ99kZa!vXcGOw#} /co_}Bɷ‰Ng x,]X[p΂=B3z; z.`ȅ(o?)K~T) R^UѰ]A,]fKa$r㬢+`^ *z#5IF%sg8==\ ,z X0|%guz.̝J%#r$.X8,_X96} $ kohKlᐘ>@:s% =vk Xydl #QQeKƻ}V3ʚeC:)?HA;QvK U08}yj;+*Ji0p3-5=E %B Ei] !E1v~|WYɒ7%J~4zO[FT|=bK;q:xhpJw'}R:pC)/[mڐ>yO61lCm|_ନ[!3yf/_N_iO3GHzμΚylUԄW':c8hG3ܭ\O>O/'߂3yĽͮ;=|}$u:$璦qKs߼DFmpӞI_\j+gjtr8N{O?<#ܟٵiFlM7v(^c{DuE^8=U]֮fKk'x8jeW_]w%N hӱ[I7IM=1;==eD%U t<. 3HSh)XE*}kMX}?c&u` kFw3SL=1;E_ HƘ3uQ%k2*&|_\NOVc31*TzwED~5ii{ظ:vIz<u]Z#-]*EsElZ:8fF.GZH}:⻩gh伽!%6y<C4\&]r*#'?P˜ Gw:x?yQwӂPi6(Cl̗V ke=j=s*F^q(־_Ϊw yD7YlM4mAf):nW%*6vC]| gn J?:f Nl6Үdo}2]<&dWd`ޗP 0,벞ؑs<Y58NMO4jR-0:h}%'<؝7v?;ww׵uswf^6x|ɘf LX+xOˤ[#Ug_q c3.ՆM͜d ͗^G'*0:8*e`2:ysX>F\od3)%̟*y2\|UVfJ,h>sYIhvVLc޶AikSb ɏĩUuf\uV{Fblit=_mv~SNNS~[#9lf+ԙh#[6wMzrz3~=#. HNm<~757еnz)kG wjTw^!5s2_byzF[%%;U'/o7*Ĭzf|=9fKN4~\te ;Q+MUتiޑ՚770@go (wwY oG0)XC)l満eFMX|{yH] 2-vXP8jU5-oې '(qgm p|j:ǎxnK[< w+w4=b%|HQm<1Vƍ{\MվȽAqXf/"7fI=+n ͜%Pr3፾l;f}-yYک qܳC",6u F/_u曖|}fgWunv"*'`wHܣ)i#6.釓{PK:d3mb# i'mE&mōǪjަ 孭:y9ώ>xܚe3=~vqI75}mڰglO{Y>ב!SN;OKp(nv +N}xCJ0y✛ۥl.|u⛃曨ܘg'lz׳z6t!1yӊn2!|ށnPzG^Ik1\y<3YU,sܼ{5iEųKu,4syk~:/NCwAp>f i뇶5y񰹵GyJSfg*ONƺ.k-u~<\w tNM󓧗^׊ >2pFƋUj++r.y .}aVim9u 89gaǵ[Y~>fhkSmkSjpX6,qvǿ:$FVR$=<`_?'Nx)kT#Uvll7-VݮmOA)ZFt`=fol.;0b+ҳGZDS"GܲH^B!ӯN!?I5LOlxj&%3V5[ 0RԁOHorn Y~]1 F~]{5W;(S?+13e-K.zb3B7 gnUrcJXd8lXV7,Rzk]2vY}>yZxVa:2͍U~Zr<3>}R?ځK.:o8qv,kF$`ugW:Ϊxbé#5s=Jq-[q燮Xr2 .9Em SږQ(:ƲCYޜb6^;נgX'JLCT{EO]-?5vTжoƇW@KfǨgiohה_e>iՍҚ{K8u&+\GM#|}M>_6GatI;{> stream x]J0yY^pU R&0M}{'\&|)do݀@q;@bnIi}͸4E4E\3pq_# [J߸ e0m$mz عs| 0.z\uȖfTjyj8/y4}|m̒)uM)B2oV endstream endobj 2603 0 obj <> stream x| |E3}@84z$iZrU(G(MM-@@,+®``UE]X<׺mM) ?/ygyfy  f֌o5@]{š2@>Fgxd3y/Srb?2]NЬE6[`FWSsO}.o2z\*-|/8wߋבQe=DHZ-F1—; iC|Bx?]1~!ovɨ+yI4ϷW4io@al,[*@q=]N? W/]0j+9ţ<ܻZ>;++@ϼJF2zTzDl~'ORPA9od/(gW^|r3/DRIsjN >Rd{4ߪ^QH)0;, XR} Rn+IPw`BpɞC?=THʏ{߃ 1XGA$b4Bh8 q ɐR 10HF)jH #`H8 Ԉa'`$aBh1 À4ıĒ1 3̂ l0#hl< '@.b AXP y%8& NR( &3ES Jr8 &!V@)b%LF)`:0q&!΂r0 "D20f · `b  q\ .]P#.y|eRB#6fCRF542D+\h/͈_[D']` W hB2l hb;\;īx58a\ZqWq xVIX mC;:a 7pFq\nkoUV?ě:-p=- ou6X{؀6?&;FnB6#n-=;p/܌xlAnA|nE|n;1|"?"F<>qlG ;>Q 1q  3<! > ߅`'!x< 33<; WX~twete`[ ]]C20)''Dg^0Ȁ %CgW"j35q)vvN ;;BsOuu>~3վMuVF%TjNqj."at%>NU6Su CbX< bqXlYb1S,f4()bQ*%b XbA.}180?y1?~1߁v̛0_لy9zX^G,J(bQ,J'PV1oc>c> ̏bއy7yf^bXbXlr7+7ߨTn+77*7[)7/UnSnUQ(pU*YWŪUpJPT @F}ϘAXO/ɵӈ/NKg l7O{jBߨʺ:HRUxF"P"S~NI[ku3kL[7TwU7֏0K$do?*Uw^LX&pԧ^”I]>(_ (̴+r{͍FˎڋR^m^Nr_s__͔){_}RDťxmR)kUޮ|<<RPlk65k{z(|M/iBRIExՑxh!W{}(6^cw-Ns .oW-ᚹ[0"qOrr'P>OGUt+]a8߅~MM-]?/;)=yy@>/!_)(#KޥdVW$(&)++))Ide^JFiW)w*O*P=Vf sgN|y.wBq+"0J!4ղa  |xxdCtxU'zW$ړTv(_7˭\R.Hv#.Ùxxn 8[T(\kGd.~l_%_IơPIn ir|w/>7 W?mY-"{܍R~3]OWlLѠϏĥk4x^Aȏ\Jv~)|{yr@A LB:\&%) |\Ȃ5+؛'חe4H6*#IK"ǤO(A-xu7M[X(;@DUUr\| f;>)cIa~^`%9!۔‚ 4eb6-_MϷ-/qq5|y[ŗFFSB*G(MJN152*'?"K/_ɚ_2¹EwG蹕VsY¯\V:22B[V8."b,a >!& Xல)nQaD~Eh'j6rn?WO[7 Oeu+օkW%FN(|X2&/} %VD(bM+W  RJФ.O5R ?vQ:Π'ʱcfL@kRSOJIIV*iHUD//"xHc!{֦QLJ}7V'W]LF8wb #wܶmbCdTl߼ʕ3gaڸy[ 搹L A7-)Ϳ]55.%9bܳJ fذj%ϗOPuAhׂ~iWg] W.qV\-r'@zo2^7>[/CdzlV!/BDzJAaqɤRDM,֤O2J1RtE%# rƍϚT:YGDx+{StloNNtn0wM\(C׎NK%6 b DQouH3ݒLyB)rLOPN{^|xϋ1o:u 79,&e-UK4?%VGjS{~Ww̺w=ybG&5ݸ=^A>~}"Mϓ8IBv=Ȉk∗x`$Fⓒepr.$5bZ֣8yY$ \]I "c#J&A 9ED q,.jD4 MIh0!?05x[]_to$Vaa+w~ݳ[lwnj$ۧ^C>´E+& &不.R*MM0d:=vǕTVk֠O$(4qJ_9$}~s)\*XWP֣Th;H UxOP@8^T)o=p8w<7"hZhvq'IJrnnuW}R̀#ʿ<#(C>!Ow\\׮:_)+T6cB΁RTA-P˂h)I+ N!JXH*HT*lb=;zx~.qSzRUUR@jT :1IPH,FER]iKu%+ 2ZՃR=I[z-éz3^V jIǧ>A4j6V>#yBavz^v9Fva ,b]hKl&3ft`gma1 Bf:-`t m4[llPRg}X1 QQuCdscNpQf6 LN'[(wXR5^#x[Z,Eneq-6"n 䢒llmqەN-F J'=AFG6c뵺-M\ngl9[=(@<llT'F;;ȋqBup P~HBYh굸OkiMMYD0&e=F9ڈYUd TTӝ-4[:F6!m457[Jf춵aixBɍxr9+הMn²oFZnFʔ6 lh9&%IGuo7T\aC06Aksh~iv*48P/MEY=ekD:LdemNhy+Ǝ$4٩ $!]cyTU.*g[܊D1Acmۇ"ny.Q:P\n>B`rwL8@Gr*#g>L=%^6n-aw'eGڐ^;[3fP:C#pg`b3A8ǫks&lws# PFņ5F PX.&bY u)b{ )RI7qd;E)͌`<hj1ڙ8Ύ:Y؝K ;%xƉ-U-g$ibT>Zo$Zі6fifa@6Y]!zbFF+/`iJd푤=t\ɓ}Q9T&& hfֶGCgHAҒr?'.ƥY R0*H)Z``dQ9̣LڀD]\ =Ed#+'O⥏$el~QǻLRQE/@cĴnvblFqXiK3rJ{JJA݌Tjy6x3󋷗P`z$z]l|@l)W3ٽ,i?lb-E󄨱 S`fژGֽ il(}:5h\8*'gU3V;8`F^dg]qM٘L$yv)kjr2ǼUyzcN4Qߒ^=l< y>[ҶQMO =bZOKKX 4Ih {Zϰ^v""qohaك$󲽏>ݚ~n RXDsJ^7'vf6=-gշ< =Xyz/!>Ezҳ:`ǚ~qfni% l镠Y'm`}O=N*Ʒwܙk27J+,=yknWwg)ѯNogƠsG@bdj {栳^ߓ*p볺F)"Z"rm#hvH4Үd}_ij`mHq|ي8Kzc&`ųY#yO'&v6jamn5BuFT-yM·)n}3J'Z膉@OZ5 K9ўrvgmAQÚXW snia1gmy/ Du`,*t LlqH D٤Xs7_tD5C\v ?:WzMkd6rwxt'qPM=OYbNsN|OjcXzXSuͅO,AwFv A<(>~ad.`~2+@THMEߕ0+(Pרa\w:(k)#SȳynFExȚ"v볃ZF5j(e [K b&K\nJ|B7]uLcM 99;xp\Cn9q̌2ܣQ""[ZnH'UB x!T]C>6+"*[ FGnb'(Z^a^M"OVOHZpc @\?*%JoOг4%@o J Jk]TcH'G/m5&G0a5dlj:TFq~塓!iV!rאpn !K{+#Sij1Omޟ~z)jWn:A1f?[,=t#Q۷ԂfN/]ku黷7(-4+D}8GOjr!jD-yeń[Ъ;7FƧ]l=T3c/&n_gemiW2Q+nxӆnߌm×e?|{w<@naNć-~Wvohsl/'[8OP0br%!L}~L^O֥J:MWnN?e32LW`ЗӶѲb} ;&h+RQT,RG")x>6йo{(!02O 78ǐSƪW?}]{rᆎYZ0ygE:k'TK7'|![cuP;s֐tzjbaw۠Eνr]xG;N֓juSgp_H8ꫬSo;nCj`/L9d(մoH.Mb=VpxJ}Y WhzAPR Q@5gqA&80ыsfyGӜ8-iقpyרiD?8ezxɗ3KyS$E@W5ztu՛.QQAڭ=y;}mmsDrKA OK0R#vtzϺfs֏_/b| q+ `WAl rYLUhZ̿Hnq!k~S534g]Q^nSsZ`1E.![ıJ:|0XiZ0.Ԕ8r4rݜ񣺱F0!Zg A*\;6eX uVޡd_>!:.3:4u}ΞZmd8_b-/Xňza!``Tr@vs, tK34 p.n.$zAWP)P<rG*`۴~d)OSl#xy:2Ɵgݔ#wD6s{3rC|PԈ)$,oauÙˁOD;̏]BV 5ӿpj",OH=eq)xOhwM 3Mk ?9cHhWZU'7)^(Y'$XOȨ8+OՇ6U`y᢮sIkMj't.J@jN=4X>? 2lp.2_A * )QZDi2V{bIabv]0m ߡ~X45c[^n`iMI&&ghJ d^OJGԟV5dn_}tb^yaeP WO_z7βFӅ&8ikxzP-W~ƈiِ'NH .6tY5-YkalƷ7I׏仛A#mZZFλ岋PEQ}kMRNCrO%.Pjqed.>LJ>}\b;Zy2;)6VM#OF&tS7 B~BOA7PWOqKp6")Eҏz$@(I+=.?<2ߥ¢h20^(ʒ؍EٙG V~\GCq37y"q)1y'PZ.#ͳ>@#=0l/,s Z=&ۜ3鳍벱;i'K/#כk\ˉ {JutZtrVP%ɱoF}X9`iLw8;gEf3pM凛 N"7zL: f \/|zOG\p*+;X4~ZU""n3~JPr`կN*R'6?JL4nT-c]7e铫>ʲ*3Hzk;x!y.,sK|miZcNBLC0p#Gd^"N~G"./wuq^}gND%KݹXԮZH ;zɨ^KxfHhR5EViz i׆L̙E֛(:Ah= ׏dNjZG.fXj9ostD.dFRlM5KCHSg!041`Um8N`5RuL&-'6mb7ݚIRa[/XK{ՎG&͢ HkFh4imtyȂD4/qkH0>zpd'*[_}ؔCemhah8%OO5LK*2eVc&+e'Orrr0dn =vȎb(Ao~>Οy>-Psk= 'XO:n-O juY!,(^/{=f9>K*&$B_ Eu-,av|qzXhZwߺ3̠S|ԶZ[ҞXlL\*APԟ endstream endobj 2604 0 obj [ 0[ 500] 198[ 979] ] endobj 2605 0 obj [ 550] endobj 2606 0 obj <> stream x| |T{-IHH `n@0$EL`Ldf:3! */]*V U$sι'kkk/s={޳L )Dc"}V>fRRe=׽JtD vg3)KZ][WoÇDdAmAᜣj#RnFvwG}hD꫞Q'yȜjiW.Ozh|(. (rbWҶ9}ȯVސ&GSZQWe}y/cZۣ+f^}t-LV^Jq7c~G9Ѳ_"hwtƿ}$5beVr-!}Cq?e4-~{/1/#k#DB;{T559ڼ4 YY6*: GqYLd&JsD*xK4մ>C8p~b8J`]m7gީI?f?j0'k?ڗ4Lg|֣.va0 'aLi0 $ܵ?i0 4`Li0 &ۇIXk`Li0 _4#:9(5@&bJJ4kMxD(U!{GyLm/5zv8ҨVEs_[Kȫ8RH?ɏ|~#;5{ܱ,=zIC}ݢښ ?osfWV*/+u>N6uJqA~^qc8Gge&;$lV٤ V8+ظƘi*n4tU_'7j5]|@Mꯩ8谼\©Ǟ{%r6\4gF "uSX֮YocYF{"oP[Vf3jV z%0p`xhazIF1j0_?hc˫+5-nG\4|2@AOb隨Wf ppN͆Fo?ba 6U6'e*El3->g{ȵ͍ŚZ%|]hx?bj96`eN\S٪^ϑ.snmitH:fl7}8ڜn+=}k6\]CY9.gmaܵ2O`C\e\\[ ,7=f34xvlz:v{Vv*sbq!5*yȃki5A |/;bT<.4c4t8 9=Q|zQ,kA&s<:m"O-H홢ć4a4^66>Gt|>;ֆ<ϝiT؎X<<7 FD0_Lʪ>̺ \+iޓccq(qNm삈7*Jl 6vQOMΕR^}2I[9yKyqW-xȠ-]qzJHAPb%wR|+_)7R|-_J/BϥLRlS)>c)>R|(R/şxOmR+;RQwR%śR!R&ūR"R$ŋR R<'ųR<#R<%œR))H#o,R%&)(EL R!R&ŭR"R$ōRF^뤸VRJJ+B˥LKDH @8Os8G.)ΒbgJqk8]Ӥ8ER,IR(*)VJBN)K""EX)ڥhbKᗢU)I#En)8Nc8FR-ER%b)X$ER,bGJ1_##EeRJᒢDR̐bӤ*),ERLbRobtzyյTG!w:r/*T6j/- bV]֫z!@% zRG=/kJ=ۛ54W=J == Z o6ȭYu9X]tua4+f,^k]K^s/[ks644[%jhɻKyuu%uʢںZZe=WW]0oA]hR@Y_`R**fוֹz@wܐ-j0 e<ڼ).{\v4ij%^{dveu4: _5RG'OP=2KwWA;}#_}%KA_\gv.SAXG,CAz_П=bhw#菂A;Ao zS^W=|eA/ zQ g=#iAO zR􈠇=$AA_}t-z3JAY݂IPb6Snt["fA7 Qo ׂtkt_ ZUt]&RAXE.t'\Auu%h3!h&TAZ#h$DA h:-!(*("(,B Z&xA~AZ5 j(8A :FRAG Z"AP}:Q HPAՂ Z HA4W4[P A *T*%Df :L A .hZwZh)MTԝT(h((@PT\JcAН4NXAc9-HN.e :HШn,HAF.(CPa *(EP !% J2/.(NMUEYI&H"W vo;o___;'G?ۀww?o~x xxxx-&Ue%Ey9Yi)I q1`+(0!{{-@[`3p7p 6&6eŀ m n 5p=pp-p5pУsELf]\\\ \\ \\\ߕuK1B X3B _3\-(Xek7̬PSM5\PzȝX v9Y+CC(%OڐmHz0I}0酤w4We (Ӣ=־1£cʺZf]Kbu1[rtFE9a/%sΡQescj뻵kU07i> Ur"юHGNN$Qr"H$J9I$>bH,HvDA "F\gYHFb?/S5|s @U^`/||  ||   l>>>> || x x{w[k+K s3ScVQa!A~>^`  l@   X   8888g&XY [``5p2ppb) Ja v XVh|MhG @=p5@5X @P `&0LSb`2P@OޟTv_KW.mޥF 5SR^SlJ?BkZ ŢRRbΤzW`ޥ>Tmxg^K };{W7h>4MBuM`ZE)(l^k5­qC(^J崒NUt|2JJt JϤl%Cy(9<56J>֢֢k@ "t]IW_^_~5ܿ ^G XV(WrNh#ʯ%wkxQ/=9}}bWR-35|ʣQ Pc5 N1Xc#$N45bOINL(1ᢢP>}KE)EE[ g0ĤNMjN`Ms->uh3^3Ӕ~[ ~|t=3{SoJ}is"iƄxJ[fZɕLm]j{m7T1]qխۦO8-*\eMeU^ٶ扳f'$*7ZUڼiyTy95E)D֦P*ܨ܋UMr MUm6Z~- Uq^O׬)p$I&;Zon,1vsEc-~Sܻz, fR]{0dRF}DȌW˰%gO,"~Gי; ֭أӱQIXx>de#T8?c.Μ?1W\;\%gom>8eWPԣ۔TC,+Ճ#7~ b+3<̉δ4̑Ǥh^{ɲic&eWƤaLUi^>G&|i%Me'ř1+yEw6Py( Ƽ7Gyi)Mp-v'{㓵Q \ɊlC,%G]˯\>8BEE B0ӓp)FE`fҧN-[Ig8DS<kMiʵkEjw]n7I}TLwNrmZ36SBH<4^]GI)N,">])[ uK9\NF˫VL?}j3 >'g|g|CDyh- 9xi̛IUBVC1Sy-ʭǒdhb9q[톶kb!NCk ^nIf/0; U&% O<Цu̔x-ʭtr݆QZ+4qH*2]~<$:ҒNT%f$2WtLqFqZYhgM8 mP.,"B8 -,"B8B:D<`LQC)ĭ%~M)ѩe-Ԋw}֋ =:~nv^GX:x[V#⾴ˑ y>jo^AKXRNQB3~1}O7ك6wֆ-X/n;>Xy.rm-,b^b%}QW}dhA o˼ u sͽkkzdX0χx o ټa)Vlx?^t#;b%Ŏ-ݼ{B']k;RGg_9QheGh?#[)/? ?"|m2&r˙EĿψnQfj/<>U7䜂|>~}d_<{'XSqX:xc8ܷ\$FWUWKCaNr0B2~{qFOOͲb1vKq;(/7]o:yj㵾kjɁ7}1-6{}[78{X~cXk6")sG~2)W-z"r" F3b:%=}tͽmٞ !x:?<8ƭ-?Ba%Jg¾[d^ey3~5pōr'ew{GFHD o>#Fܱ^h;X~ иMbgL9}Otv67{/nh5Nqzӫzh_bqo3s߷_k]f"]s~CLET*U:cc cž3Qag ъ[‰p0lp(vG@^֦[Z@$zs0wD|?h}p0 ;ՃV_XÞH"z'|[oû DY瑐ocHv{pDou/L}zm|zͫGW|a?1_Q zMqC ۸sM`8싄/0__q&x W`'^u/o h+ >ۂ `#F}+;GnBA9;~_yBpۃ'u7>u x)#χ%]!BzLlQ a`* "3սhM3r;g/q!,O ?ݬ&~H=n6_-p[0z&,pGܷNQw$ӛVA։ɯt[P]nC٦/^nw8p>u#-~ f^`|2g@; ̻ū6s8@+ɟLgx-(oc ,D12n z lPF٦C$|D^EݼRF,D띭~O뀶mW#ء<˱l U@VAxu78A}]7ޏQvڂgmhط] k 0Z(m|w$o/)a3}}4H@T u)Le&i%J KqA*eJt2 BT*g+*9##*s)+T^,VkJ-"z(u~ԹV7Զݣ"Mۭޣޫ5I3śI1%Zj2wлhkmE[+ZZkb#"jSl j}]%ŮI's3c*\y[WcOO>> ss// kk|ާCChnqq''a֞}Q{CC؏`?>ݮmL kk؝Nooaw!"֋i&3& k5Yy<`LIvil)vi$l) 6۔ ;4viSl)T;4 T[l*j ;4viLLS lT[a41!¦&4|iilT شXwb*L6fE 6ږdìmfmKRa3lmvb7уbGhH|L5vj ;S ͳ2F-a2*lsGLT"RS(β%r*0,\XEz͂:fN exCyB>Nh1mܞVn׾}}.fIfp;\3X7M',&,J4rhZDK. Dܷ N)8U# ά73M ?si̍<쪞1~29nu掣@Y ?6̝8PGx. %}͊4' d5 Hy+7ݴŬE>kܠ+5:I7:);\iseee/\ByUf؞%r̫ɕf2MA=\&cfm5l^ao :ʻL=j0ǭ}rϜ݁f=L_ց@q [iv{P7L_v4Q1@ p08hΤvWd'>9Y}p]i @O pԗmٗLȑ A5>'}G=+1hLug4bhyW>iD`*GlRtu6V"8qT{TϻhЗL~o1$OK]s1H1{qxu ;3~td{)Һz]ġ^NB2i+E,ga0@{<#{2U`ȽKҽѻ:k )(GG۽M%hfwz;vK{]eFoOp7̽?f䫴a_vϏ"HO'en5]#c{|<..@ _AEb 7d_dν$9ɧ㾐"}1"ˈ&95]pm=o0N)zOk?jN.?D{=C\vM fK e2ԢhV:o \ZG* yLۂ;b;B8?E~D9e=OJ, 6? [Gd@[F᪶yY{{h1ҬtJ{CfrOWNu|cx -BmqSٶB;{p&Y0 炞\\ \ y^^ )Nfhf/\ҍ5(Xj[7po?z 1PzH'Ʌǩ“9AxȧB>78- D}Y1gi% 0kY`zhc֊WJ`lVE -4ڈ1^/e/ .g>q^:-1v6g鬞 `oֺ@K~-ӹ_ing b Q6<xe<']K-ϵ"D+ϲ)V_ œhi-S:eiYI-WJi~/j!mԡ}NtF[-.hZ_׵RV.jOiKzmԧ}Gֶh[dMۦPֵ9J{V{VkrmOF6vH^j-;Ms7<~QnZV@E[c(""e]Kɵ¸qUX'rr1fZW~CbQӢ 9AsD!n&\}[zYBޗާzIDsO""d]E<\.1r ϱXq'D9Q#)1J&[T9UrGFXIq '2EIFc#3NR:q*tƹ 3.dWk8WB)D$tʲJs\p]ZZ*sV*)U]\[]5:.>s55QM# AjV]-6WJHc$\])VOb1V3"U<'U#^&q8Hi8L)C..ZnZo E衔+)"$M҄QK%Q]Ѯ "k}>TՇgX=VwAݦCSwR,hHVFrʫ(WR\My"(T,X̨ʨ6?o2s@ ~MF]. 22ehhhrgFpLCyţL/(#_oPQktRrHRpzOѧT=MO1ymDӨ RF1J9U)+NtM+O(.dX2fM7|HW`z?ku9}Sk_+_ڽ7NkFz?l]o|ܵaqzQar[n$a1[濆뭧浟?i5켙o%2Tߡ}R#~`(2mm[lm۞'kۙƔ2ζ)ͶFOiN)DN'm'S)=sv.N#aTzҚn>k5dhDԯD9{ aRĎ_:ϦSfn{q{"fe1K].3w٤=$y"+lLQA),ӊ >ʦR<V G*~MA_Gn J.41Z 1bȠt W{bxHMJķ(*5ƻnb,b0^O}HtU?kc-..Y˭*kuuZgem6YYZ-6vUEu>lm٤#]ed vJb_C| S]]$[*d[DV\}d!XFVjm&l5ɶ_# e!챆meaJKt-іdlMc l9dKEm#| gmM5jD} m6[FFϥq&oMTLQvSKϵ6)LF+1rTïc'Qze;F) ^-|z6ӧvkz vaiS֭h̡*(f£`OOh>uYLKitylRJf koKmdf}[`_l__B31[v̾l$ךsLFJSh_Os}%ya1HQt(oOmk:QE]H4&ZNaky^N{ yƂGhؒ흘-[G(acax `8v]O?~~~~yJkCvDFlw #:jG 1ΜX# &9&b9uF"dI c4W<#^y4#+(U E5X:e] \1;I:##fc/;=cV;:;3 }FQ=cԌ13,3&83gDϘk؋Ro.g ߼&M[)i{E̴rJ={RŤi*V5S()jJ(mTCH'uO7u;ʫIjHF3J.tQ-+j <$:D"iO:SS$ħ(L'PL/J7ŧ)JX"lF E^5VMdqxqz:[Q3UPb)E;E&"퓤Q?{'I+q$V39}͙Vl [iŌ3r =+J)/3?0Y|r:24ȳqMp\sѸ.3R\H5duƵC(#GT"+!JQ^r\9!tP@ũChWG8vq:G#R Bh=W+ɏp0/oFf\pP=Ν *0 7蕠~tPG_&Cyii3 (ȷB0@+p` 43*o֗;h>Q"| jn@? F9|ͺyN,zc;ٔHjN [ngȠ7gP B`JyLlEHp.Ub ,Z QFJ hK`ƒcL; &J1:2 *D)] ?/śUd 'A?yD#mӆ3=n~N!*PJa29PsSz!9hWg"$y 2 "6d3n'^_7dxz=%˥&؟UB6k{ob~xwhwrdDcx j~ uFgX_ZI/8 :y\rTyDXA⒲A[BxQ wv`t k28=_p-KIN[Nx yjl,8wVCƁ~+_Wn9_ko뀯38,h ǃ eb붳bbg!szY5.: I45Խc:t<M| Xv=QN]cD]6@#Vi[:ٶ^x:ud$y)b~MN7U`-)MSgA-7ҋ-ipX} ^jFVrPC-'5枡s<, =gMU ۹2:ՇYwmS=AȩᘠfN>X"j /“s5!0D7=` {̅^F,vau~Q]IzJ' x{΋Y tmD O\:ǨFcESa7Aw7O`0緐{im+BZ!KXN|Gu&j5*mŠxd3y3|IX zDZ쐜qH.W_(0=U^1%_{ku@'4u"Jz0Gـ8#kbwam40Q|rw dЩX㯀eYfDb)E#?!Y(zX bǾóz"ƴտ$0GuNMkXߦk=/ܥ Y,G NbMD7: y` pƿ,|R:g)7d>ũw`>2};6T| p AwUAtΣ{Sj%,R=!]GN3e,63FgWu+h:8\Y|c  Wp_p''+o8 > L G݇AOǁ|>7e kq]=ec4>eTj PV3M"`40QJ=:PTs(} x4f.(B *c <nGL*RN~LPZ\lnu@gK9 )d *f;!V.u.O!Kwj{i:<HBS!,}K͕8lh?ODt"wJBdJhI`8|@aXL4̣@` ۡWD#(3yd_n7Z7uLoK1ѠWxɵLx8z&r%gKPѠ7אL2,|:8`98A77(]@ L;zj, au:L}6lf!ՈTvs,(~mF c۸T3z!x\iD4{*kZzWo$}oqnL012aQ_J:uV1 7gU)r ?:[c4C0'1h{Z*̫ux )̖c#4L u F-HH)sjXu EC2SOBދAy5dye|u7Ùp 7ȜGipa^;4WCݩ&;g;IF%D6.] 10Á,[%J!{ضմ-4|z~ k\`b]'X1̢|`$43[ N;@c 0@<}8gOm"yvc;l7!SO#3FCN:#ځ.@gvÈi@<#} 8I!b0 x^G3F ~OfB Supp&ϕ""? 9Z#_0K؇'D}vaOI dۇ'n}xnw |@}߾=@Dž|@^aH*>96aNq*E-<_,bXaJS/n,rG9@< // )qX pwe-<X XxJRt\3`##oHRܑU-):q.^]):sLL̢\pMsŀV؁;x &=']MJX@`+n@S@k@{@@1C$4&!I2 00p,`*`& |btr"mk,5nE/D"%Z 1Dְʾվ5p~,nuܦ/ЧRr5|~}nU3?}'I P*DD4j@?'&X566 {.8 Gq Np&4"0m^s|<\%t2J7[ b<<і5[L6@:jXZZ Zkj>y6VL#UhKh^7&ZMhsY%5mhĹibyuML}`f% (Uqq {, +%Sybf!MqBa"}z+ڪ -4z=zv^#" zVg64gi/AG>qe5!ĕՆ lk+qeu!ĕՇWA\6Wʚ@\YS+kqe!ĕVWʶ6WĕvW:@\Y9ĕuNWʺ@\WĕunWz@\YO+qe;B\Yo+ v>P~]|!lW+qeA\ٯ ?ĕqe l ĕ = l0ĕ qeC` f/+ qe l8ĕ #mPo?BK(.Q6]4dPMA2MAP1*P%s.3)tD72=D<K/Ĺ0x%^ cX0x%΃a, <x.A. UR\*L øW#W*| CG56Ր7ĚX通H#~ď ?ǘLH &՘%sa 9AN`)''i@ΐ3XFΑsXJL9ST2X9jVg2GS`Ms k1SX­;ܚ:}>e2++g~c~K%6"Sc#!&5nücacaVJ)u ʬ26gUYUlؒmͶV.YCeYclÚkZ`[֊v kY[;=t넝X;؅ucp{փX/ ެ7vc;;ۅ=خlWvca/6  6{l0Ć!3ʆb6 ]ؾl_+D]O W<3؟xw祼 yE+ʸʫ`^W=yM^ڼ68pq8\&IqoL)q_*hs!TC1zp˸eY5_l=H<E_?i'ʢM ӍG{j m~I'}%XIڃݥ`=JCICN ]6@l i?jhv 6P:lt4ݷ`K ( 6H: .lwip`h/7#1pґ"3DfbEfDfEfDFF$$+2"22NddDTI"#i"#"#"#"#SDFDFKHH4"#3DFf}e\y"3Ef,Y,2Ddd2<"#+EFV䋌LFf,FMF EFDFֈY'2Add&"#[DFl)};"3%"3;Efv^dd^}"#e"#Vҿ~"#"#"#EF9*2R-2R+2rLdNd zS"#EF~}Ys"3Ef.̔#`)<uÛ5[Cq$ 8 'qxN8Ox:/0z <>̇!;#< v8q8 )#O“ӑ OYH i4"R#$+T8wHF&42 I,2d oNH$9onh蝛 B~8}Lab YNBD8r$H>) I!)"kp^Bś)`V3LYˬc3&f3lc3wbv3IHBFVFQj 5lla<%$;m$%R\ښ 3?!ts}g~)I.wKk-Cmrd4I2IENd3قA,AR>(>3HCZB~ 9ZBE4Ge&q+bڃf!_!_eW"M>OBpC~9|euD?p&+8wxXӳOCs>l#h޷j}HGhـ7Ix{ޞoZ1Z~ F` ޚ@*ri/ ~OyS *#!eB{(΁N%Bit[.=m@NU:j_C7=/aXrn4$\ 7-Ѷ[Eq znMf[9ʹ}NrAG*>;FS!"QSԔhѫˑMeޞ!Zhϡ 3e|zM=:-tictpͺxގh@xރ MKP@cx?a"L9]Nq-2:q#Ka&dŅp!ZhFpc0W\=ȁ+⊐\9 s 'a̕qeEsQa5r ޑ Y,y6g3b1)q xӯޘ`Y{ӒOˮW |o\B `+"&ww)TTG6XF))JКFk Zͩ[ROw{RoNԎzfSJ= Z.MY 2aK¯1cm觝0~PT}{塚`V`%* ¨o !8MTA0U,8 b`*f8B`ᗈ:@BAC@77om mux9x%5G[vvrG'g$ITF[~RREI-#'H=9Mΐs>9T2#Q9Ɯbn1w}!+yͼeޱ,+ayVUe֬.kkڰ=+g7X7փbl+ۍ ``6 eپҷw<㥼+:k󺼕Ie 2Ew>}0쏃q/{}L,[!Yo~yOc<Yk? Q$m,y;مӅ Beɲ ?G |DlE#% 6ٿ)c))G7  C8$"`g{m[l1(4J7 za鉆$FHL?"7i5nk{~:S 2[3Y y&yUL*D3~qjg+ŴJެo|##;HOJ6OLw44'tO|8Gya?qh||ϘF]厎ro$wtrvW+Ħ-ib2*e$cW&|od yc߾hZTTڴ;W¹F2l-ck]m07?+ Cz]Q n/>|.*/ozJYVv%v[l}ýSRݗ7-ۥYsg^#ov:7;.܏7t m\RÁ~%x v:uMPy]jHzM_w:O߇=HaߖszՖ=L%5%)S:~QyZyF!ey%jF'2땦ǜwV'__8#ۊ.i{l~!ENysͭiQ߅ :O;G7vtK8cZB̾&:o}o78tM\-G֘aQ[KsOC:If~Qʽ?=Z~4Emz5$k_cvx" ߽x7#~nKlvyRn-@1*OwqGcC1`Vwvan مM/Laah!> '}džTn臧>3ȠСϖC=.t`yY17U 9bI-e6|_ ]vRo€6ˎ8 KQsϢ<ӻ&+uFr`AF9O-:.djk㳪3gNIC珋Z4I9{OԘqG'?{霈5~֜>!WN4/,]s\WSI\6ZSs5LTW䚂(XJr42 PQw,'g ThUX0`yux$Wv,F-h,( N.gl3$qǝڻ:>%U9u/ucW`quYus7mm;uI[^qqiL[i^s.ZahR_isw.^eRפ5ߌ8^32jþ}s\j0j~=}ՉMׯoiz~rI¹7zv+L;PWc66H~cutNeOOo>%q ՘1 QZHLzQk{q˩8S˝UgaU?ri~O^>y<\}=&ՍT<>i6WVQuV|]i?fn]"uoT~\|,7NcJޝ8[\;H~RM7cUl;WdIn,2x)4/٦[G_=OUϔC}ns1&#/8hu6=?g8W2;ӓQ$[58X^^1!A)c3Dy!7Tj,I9^.).KfUyW!AS^Z>yDrrCD(eh02Zꐐ?lLDrou4{I%_l[1Ôe"U P}Æ2UnzBSz.J)ҎN8t^WlU˚B R(ٳ~ӥF_ufޭZo9B`#noG?kXixۣ5sqQ@Zk}muXy]c=z/wҍ/+;y'[Wtl._??Y=q5+"¶o{xɂ՛Nhc[q7n[ZujyfWy7[Sݳfѹ^TmVR^m jsj<$6t;v;wNraUڬJ8]‚=vk>!i'786:"/jy^<]=[8`.:WE {u:iWCS"+4'ˌ'dlJu&ҔqyUSWu.s9Sr[7Y+9wWáj&?{kцnjnؾeWѳ0%\plN*+Kb(fIRcb+ff_X^ʹ2i˵:^Ҹކ[U\ҶHV o)PkѸ{_+M=\i~퉿ísV4n[ړ1E{9Ÿ(W+_gu<{ye7N9k 6 vv0^:9k!8>ӼUm/Du*oZosfPN}̤/AR>bHpSr DEge/߲f-]GtMգ9J"dNFӃֻmWOtz?y4.iN_$FIo*k{\Wb;i܃y+^}{Ioc#9Cj^8R:xɧgج~ѯM /SLKT'Nt|A8Jo.ƽ^%`N ﰊW:Z=德X?ZOM^< gE'D=lzFkӶ';؇+vXl@ˏȟr4 k*шX1vä>b "ޥz=8ZpOI~splW15*F cVp%F|kSg`U38o,/wbcj秪<ԡjфº{\qsY>Y_{-d9#&[SF?_COt$ Pm,P 8~8@JF2Ơ|5C3C`j>9Hʬ;)pv6Ң>Wf?zzi#BnGM5YOgPy7N7~ Nם<j9s,pS:&^+OZe2Ν᳞8gmb Uϣ:ţg~Wwޘ=㥦ɬav<0۴ȏ/40 K8?nBčlY/:o~vgW8usLv;cyF?+wAF\Cy[cG)h! T`ZVWqMQErぬ#'LMթ-w-ˇ8Dɱ<&@(%xx31 GQ]N@W[5y|B! #NLg";~"5r%nhsyU-Oj9|k[a?W=24R9q"N2e3kiѳE,|;ՙ<,#c&QuTtтo:-=Q@Q>jsѩrkRjNWƗ=Эw%Hp~umy7X<4460C18AC3D2E441870614156DAF8F03>] /Filter/FlateDecode/Length 5214>> stream x5wsJJ ICޢ=*{dEFА̐="$"eg_}^_3q|[ϿfΊ׫ 5 ThpvYW.4j%(4%{B ͮ(4SHs '? '0I~~ |\8oᴛ w. U8Q]baSKa5m?9߆]VTa7mI# .)ߢ0]wA,(\Tp1%.k[7,\ma9US WZ¸kg^~pߍ[Mns ~] Wn_6ܹFax&ऻ w]샓' S9WxhÇ}긧ؼ]pGaFk+tUxjDiωg7]ag/(<;<pk /Q .<[~×z}PGצ(_%=˧וޣ }[: ',|fa u*=0/3 ˽= Q}k/eM!VG3|/%Bo-U3~ 7(^yE"|_/JE"|_/JE"|_/JE"|_/JE"|_/JE"|_/JE"|_/JE"|_/JE"|_/JY޲-Dѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_G"Ũa/2QF"Ũa/2QF"Ũa/2QF"Ũa/2QF"Ũa/2QFѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/E[_/Eѿ_&-Eջ^m ˛>-obhK1`I4E34G RXˠZ bYrh `E VjXk`MX`]6F`SlͱaKl聭 v;`G석 vn{`O셞`_qA8a8}qQ8p XqN1T1gL Y8\ pHQ8q.Ecp .eWJU`u7F܄q nmq&NL]q&^L}ALCxQ< ,<1`Y<^KxU[x]{xC| >g_K| w?GT ?; [Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/YE Q_0r(F#bd0Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/E-[I-ԠuX 8a 4F,hhX KcBkA[,vX<:#:3V@2VX c kc>6clͰ9@7l=5c숝3v c쉽{c?88 /8 GAp>|1> |5*Y?g_~o ѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/^qbd05E#b0(F#Qh\d0(F qbd05E#b0(F#Qh\d0(F qbd05E#b0(F#Qh\d0(F qbd05E#b0Eѿ_/q FQ`/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/lw,oNyàCu:>Ձ`uD:i`uZ:W꫎U|NUGz!t^u,:WīNUG3wa]u:WWNUG誳sա\uL:WNUG3p[uܭ:VpNUG[lͱaKl聭 v;`G석 vn{`O셞`_qA8a8}qQ8p XqN1T1gL Y8\ pHQ8q.Ecp .eWJU`u7F܄q nmq&NL]q&^L}ALCxQ< ,<1`Y<^KxU[x]{xÅјX.P(쨿VBI &k4R7oطoxdRLã~.+WhԡFXu.Wdhԥ";~FCC+M*Dh2{¯.M~+h FJ2 Mg 4rO,rAj ;\er5W)[V}?7%X endstream endobj xref 0 2608 0000000269 65535 f 0000000017 00000 n 0000000143 00000 n 0000000620 00000 n 0000000925 00000 n 0000001744 00000 n 0000001921 00000 n 0000002174 00000 n 0000002344 00000 n 0000002585 00000 n 0000002762 00000 n 0000003008 00000 n 0000003142 00000 n 0000003172 00000 n 0000003334 00000 n 0000003408 00000 n 0000003651 00000 n 0000003823 00000 n 0000004066 00000 n 0000004245 00000 n 0000004496 00000 n 0000025020 00000 n 0000025475 00000 n 0000028746 00000 n 0000028923 00000 n 0000029171 00000 n 0000029300 00000 n 0000029648 00000 n 0000029992 00000 n 0000030121 00000 n 0000030436 00000 n 0000030565 00000 n 0000030882 00000 n 0000031011 00000 n 0000031369 00000 n 0000031498 00000 n 0000031822 00000 n 0000031951 00000 n 0000032080 00000 n 0000032374 00000 n 0000032502 00000 n 0000032630 00000 n 0000032897 00000 n 0000033210 00000 n 0000033339 00000 n 0000033654 00000 n 0000033939 00000 n 0000034068 00000 n 0000034371 00000 n 0000034660 00000 n 0000034789 00000 n 0000034918 00000 n 0000035217 00000 n 0000035346 00000 n 0000035609 00000 n 0000035937 00000 n 0000036065 00000 n 0000036352 00000 n 0000036639 00000 n 0000036952 00000 n 0000037080 00000 n 0000037369 00000 n 0000037658 00000 n 0000037974 00000 n 0000038103 00000 n 0000038382 00000 n 0000038681 00000 n 0000038810 00000 n 0000039090 00000 n 0000039379 00000 n 0000039668 00000 n 0000039797 00000 n 0000040132 00000 n 0000040258 00000 n 0000040573 00000 n 0000040896 00000 n 0000041022 00000 n 0000041151 00000 n 0000041464 00000 n 0000041800 00000 n 0000041929 00000 n 0000042220 00000 n 0000042519 00000 n 0000042648 00000 n 0000042975 00000 n 0000043264 00000 n 0000043565 00000 n 0000043890 00000 n 0000044019 00000 n 0000044333 00000 n 0000044462 00000 n 0000044797 00000 n 0000045101 00000 n 0000045229 00000 n 0000045357 00000 n 0000045671 00000 n 0000045800 00000 n 0000046128 00000 n 0000047485 00000 n 0000047539 00000 n 0000047669 00000 n 0000047970 00000 n 0000048101 00000 n 0000048428 00000 n 0000048559 00000 n 0000048860 00000 n 0000049189 00000 n 0000049320 00000 n 0000049688 00000 n 0000049819 00000 n 0000050131 00000 n 0000050261 00000 n 0000050566 00000 n 0000050895 00000 n 0000051221 00000 n 0000051352 00000 n 0000051484 00000 n 0000051803 00000 n 0000052108 00000 n 0000052444 00000 n 0000052575 00000 n 0000052892 00000 n 0000053242 00000 n 0000056344 00000 n 0000056399 00000 n 0000056527 00000 n 0000056559 00000 n 0000056716 00000 n 0000056791 00000 n 0000057024 00000 n 0000057188 00000 n 0000057414 00000 n 0000057550 00000 n 0000057582 00000 n 0000057747 00000 n 0000057822 00000 n 0000058065 00000 n 0000074963 00000 n 0000079167 00000 n 0000082374 00000 n 0000082554 00000 n 0000082802 00000 n 0000086843 00000 n 0000087022 00000 n 0000087262 00000 n 0000087446 00000 n 0000087691 00000 n 0000091415 00000 n 0000091600 00000 n 0000091852 00000 n 0000095171 00000 n 0000095356 00000 n 0000095612 00000 n 0000099362 00000 n 0000104291 00000 n 0000108247 00000 n 0000108389 00000 n 0000108421 00000 n 0000108592 00000 n 0000108667 00000 n 0000108914 00000 n 0000112981 00000 n 0000116564 00000 n 0000119510 00000 n 0000122782 00000 n 0000126864 00000 n 0000130570 00000 n 0000133247 00000 n 0000137065 00000 n 0000137208 00000 n 0000137240 00000 n 0000137412 00000 n 0000137487 00000 n 0000137738 00000 n 0000141219 00000 n 0000145540 00000 n 0000148934 00000 n 0000152889 00000 n 0000153032 00000 n 0000153064 00000 n 0000153236 00000 n 0000153311 00000 n 0000153563 00000 n 0000155004 00000 n 0000158450 00000 n 0000162545 00000 n 0000166238 00000 n 0000170252 00000 n 0000173342 00000 n 0000173519 00000 n 0000173758 00000 n 0000177878 00000 n 0000182611 00000 n 0000184839 00000 n 0000185026 00000 n 0000185281 00000 n 0000185419 00000 n 0000185451 00000 n 0000185618 00000 n 0000185693 00000 n 0000185933 00000 n 0000188823 00000 n 0000192249 00000 n 0000196578 00000 n 0000200696 00000 n 0000202587 00000 n 0000205914 00000 n 0000209038 00000 n 0000209213 00000 n 0000209456 00000 n 0000212913 00000 n 0000216526 00000 n 0000220031 00000 n 0000224315 00000 n 0000226584 00000 n 0000229527 00000 n 0000232244 00000 n 0000233668 00000 n 0000236330 00000 n 0000240897 00000 n 0000241031 00000 n 0000243561 00000 n 0000246815 00000 n 0000248503 00000 n 0000252027 00000 n 0000255115 00000 n 0000256695 00000 n 0000259644 00000 n 0000263040 00000 n 0000266230 00000 n 0000266456 00000 n 0000266522 00000 n 0000266624 00000 n 0000266798 00000 n 0000266904 00000 n 0000267015 00000 n 0000267157 00000 n 0000267351 00000 n 0000267466 00000 n 0000267585 00000 n 0000267712 00000 n 0000267872 00000 n 0000267984 00000 n 0000268116 00000 n 0000268230 00000 n 0000268358 00000 n 0000268479 00000 n 0000268593 00000 n 0000268720 00000 n 0000268873 00000 n 0000268987 00000 n 0000269132 00000 n 0000269246 00000 n 0000269351 00000 n 0000269511 00000 n 0000269632 00000 n 0000269739 00000 n 0000269897 00000 n 0000269999 00000 n 0000270122 00000 n 0000270252 00000 n 0000270384 00000 n 0000270516 00000 n 0000270646 00000 n 0000270767 00000 n 0000270892 00000 n 0000271038 00000 n 0000271141 00000 n 0000271245 00000 n 0000000270 65535 f 0000000271 65535 f 0000000272 65535 f 0000000273 65535 f 0000000274 65535 f 0000000275 65535 f 0000000276 65535 f 0000000277 65535 f 0000000278 65535 f 0000000279 65535 f 0000000280 65535 f 0000000281 65535 f 0000000282 65535 f 0000000283 65535 f 0000000284 65535 f 0000000285 65535 f 0000000286 65535 f 0000000287 65535 f 0000000288 65535 f 0000000289 65535 f 0000000290 65535 f 0000000291 65535 f 0000000292 65535 f 0000000293 65535 f 0000000294 65535 f 0000000295 65535 f 0000000296 65535 f 0000000297 65535 f 0000000298 65535 f 0000000299 65535 f 0000000300 65535 f 0000000301 65535 f 0000000302 65535 f 0000000303 65535 f 0000000304 65535 f 0000000305 65535 f 0000000306 65535 f 0000000307 65535 f 0000000308 65535 f 0000000309 65535 f 0000000310 65535 f 0000000311 65535 f 0000000312 65535 f 0000000313 65535 f 0000000314 65535 f 0000000315 65535 f 0000000316 65535 f 0000000317 65535 f 0000000318 65535 f 0000000319 65535 f 0000000320 65535 f 0000000321 65535 f 0000000322 65535 f 0000000323 65535 f 0000000324 65535 f 0000000325 65535 f 0000000326 65535 f 0000000327 65535 f 0000000328 65535 f 0000000329 65535 f 0000000330 65535 f 0000000331 65535 f 0000000332 65535 f 0000000333 65535 f 0000000334 65535 f 0000000335 65535 f 0000000336 65535 f 0000000337 65535 f 0000000338 65535 f 0000000339 65535 f 0000000340 65535 f 0000000341 65535 f 0000000342 65535 f 0000000343 65535 f 0000000344 65535 f 0000000345 65535 f 0000000346 65535 f 0000000347 65535 f 0000000348 65535 f 0000000349 65535 f 0000000350 65535 f 0000000351 65535 f 0000000352 65535 f 0000000353 65535 f 0000000354 65535 f 0000000355 65535 f 0000000356 65535 f 0000000357 65535 f 0000000358 65535 f 0000000359 65535 f 0000000360 65535 f 0000000361 65535 f 0000000362 65535 f 0000000363 65535 f 0000000364 65535 f 0000000365 65535 f 0000000366 65535 f 0000000367 65535 f 0000000368 65535 f 0000000369 65535 f 0000000370 65535 f 0000000371 65535 f 0000000372 65535 f 0000000373 65535 f 0000000374 65535 f 0000000375 65535 f 0000000376 65535 f 0000000377 65535 f 0000000378 65535 f 0000000379 65535 f 0000000380 65535 f 0000000381 65535 f 0000000382 65535 f 0000000383 65535 f 0000000384 65535 f 0000000385 65535 f 0000000386 65535 f 0000000387 65535 f 0000000388 65535 f 0000000389 65535 f 0000000390 65535 f 0000000391 65535 f 0000000392 65535 f 0000000393 65535 f 0000000394 65535 f 0000000395 65535 f 0000000396 65535 f 0000000397 65535 f 0000000398 65535 f 0000000399 65535 f 0000000400 65535 f 0000000401 65535 f 0000000402 65535 f 0000000403 65535 f 0000000404 65535 f 0000000405 65535 f 0000000406 65535 f 0000000407 65535 f 0000000408 65535 f 0000000409 65535 f 0000000410 65535 f 0000000411 65535 f 0000000412 65535 f 0000000413 65535 f 0000000414 65535 f 0000000415 65535 f 0000000416 65535 f 0000000417 65535 f 0000000418 65535 f 0000000419 65535 f 0000000420 65535 f 0000000421 65535 f 0000000422 65535 f 0000000423 65535 f 0000000424 65535 f 0000000425 65535 f 0000000426 65535 f 0000000427 65535 f 0000000428 65535 f 0000000429 65535 f 0000000430 65535 f 0000000431 65535 f 0000000432 65535 f 0000000433 65535 f 0000000434 65535 f 0000000435 65535 f 0000000436 65535 f 0000000437 65535 f 0000000438 65535 f 0000000439 65535 f 0000000440 65535 f 0000000441 65535 f 0000000442 65535 f 0000000443 65535 f 0000000444 65535 f 0000000445 65535 f 0000000446 65535 f 0000000447 65535 f 0000000448 65535 f 0000000449 65535 f 0000000450 65535 f 0000000451 65535 f 0000000452 65535 f 0000000453 65535 f 0000000454 65535 f 0000000455 65535 f 0000000456 65535 f 0000000457 65535 f 0000000458 65535 f 0000000459 65535 f 0000000460 65535 f 0000000461 65535 f 0000000462 65535 f 0000000463 65535 f 0000000464 65535 f 0000000465 65535 f 0000000466 65535 f 0000000467 65535 f 0000000468 65535 f 0000000469 65535 f 0000000470 65535 f 0000000471 65535 f 0000000472 65535 f 0000000473 65535 f 0000000474 65535 f 0000000475 65535 f 0000000476 65535 f 0000000477 65535 f 0000000478 65535 f 0000000479 65535 f 0000000480 65535 f 0000000481 65535 f 0000000482 65535 f 0000000483 65535 f 0000000484 65535 f 0000000485 65535 f 0000000486 65535 f 0000000487 65535 f 0000000488 65535 f 0000000489 65535 f 0000000490 65535 f 0000000491 65535 f 0000000492 65535 f 0000000493 65535 f 0000000494 65535 f 0000000495 65535 f 0000000496 65535 f 0000000497 65535 f 0000000498 65535 f 0000000499 65535 f 0000000500 65535 f 0000000501 65535 f 0000000502 65535 f 0000000503 65535 f 0000000504 65535 f 0000000505 65535 f 0000000506 65535 f 0000000507 65535 f 0000000508 65535 f 0000000509 65535 f 0000000510 65535 f 0000000511 65535 f 0000000512 65535 f 0000000513 65535 f 0000000514 65535 f 0000000515 65535 f 0000000516 65535 f 0000000517 65535 f 0000000518 65535 f 0000000519 65535 f 0000000520 65535 f 0000000521 65535 f 0000000522 65535 f 0000000523 65535 f 0000000524 65535 f 0000000525 65535 f 0000000526 65535 f 0000000527 65535 f 0000000528 65535 f 0000000529 65535 f 0000000530 65535 f 0000000531 65535 f 0000000532 65535 f 0000000533 65535 f 0000000534 65535 f 0000000535 65535 f 0000000536 65535 f 0000000537 65535 f 0000000538 65535 f 0000000539 65535 f 0000000540 65535 f 0000000541 65535 f 0000000542 65535 f 0000000543 65535 f 0000000544 65535 f 0000000545 65535 f 0000000546 65535 f 0000000547 65535 f 0000000548 65535 f 0000000549 65535 f 0000000550 65535 f 0000000551 65535 f 0000000552 65535 f 0000000553 65535 f 0000000554 65535 f 0000000555 65535 f 0000000556 65535 f 0000000557 65535 f 0000000558 65535 f 0000000559 65535 f 0000000560 65535 f 0000000561 65535 f 0000000562 65535 f 0000000563 65535 f 0000000564 65535 f 0000000565 65535 f 0000000566 65535 f 0000000567 65535 f 0000000568 65535 f 0000000569 65535 f 0000000570 65535 f 0000000571 65535 f 0000000572 65535 f 0000000573 65535 f 0000000574 65535 f 0000000575 65535 f 0000000576 65535 f 0000000577 65535 f 0000000578 65535 f 0000000579 65535 f 0000000580 65535 f 0000000581 65535 f 0000000582 65535 f 0000000583 65535 f 0000000584 65535 f 0000000585 65535 f 0000000586 65535 f 0000000587 65535 f 0000000588 65535 f 0000000589 65535 f 0000000590 65535 f 0000000591 65535 f 0000000592 65535 f 0000000593 65535 f 0000000594 65535 f 0000000595 65535 f 0000000596 65535 f 0000000597 65535 f 0000000598 65535 f 0000000599 65535 f 0000000600 65535 f 0000000601 65535 f 0000000602 65535 f 0000000603 65535 f 0000000604 65535 f 0000000605 65535 f 0000000606 65535 f 0000000607 65535 f 0000000608 65535 f 0000000609 65535 f 0000000610 65535 f 0000000611 65535 f 0000000612 65535 f 0000000613 65535 f 0000000614 65535 f 0000000615 65535 f 0000000616 65535 f 0000000617 65535 f 0000000618 65535 f 0000000619 65535 f 0000000620 65535 f 0000000621 65535 f 0000000622 65535 f 0000000623 65535 f 0000000624 65535 f 0000000625 65535 f 0000000626 65535 f 0000000627 65535 f 0000000628 65535 f 0000000629 65535 f 0000000630 65535 f 0000000631 65535 f 0000000632 65535 f 0000000633 65535 f 0000000634 65535 f 0000000635 65535 f 0000000636 65535 f 0000000637 65535 f 0000000638 65535 f 0000000639 65535 f 0000000640 65535 f 0000000641 65535 f 0000000642 65535 f 0000000643 65535 f 0000000644 65535 f 0000000645 65535 f 0000000646 65535 f 0000000647 65535 f 0000000648 65535 f 0000000649 65535 f 0000000650 65535 f 0000000651 65535 f 0000000652 65535 f 0000000653 65535 f 0000000654 65535 f 0000000655 65535 f 0000000656 65535 f 0000000657 65535 f 0000000658 65535 f 0000000659 65535 f 0000000660 65535 f 0000000661 65535 f 0000000662 65535 f 0000000663 65535 f 0000000664 65535 f 0000000665 65535 f 0000000666 65535 f 0000000667 65535 f 0000000668 65535 f 0000000669 65535 f 0000000670 65535 f 0000000671 65535 f 0000000672 65535 f 0000000673 65535 f 0000000674 65535 f 0000000675 65535 f 0000000676 65535 f 0000000677 65535 f 0000000678 65535 f 0000000679 65535 f 0000000680 65535 f 0000000681 65535 f 0000000682 65535 f 0000000683 65535 f 0000000684 65535 f 0000000685 65535 f 0000000686 65535 f 0000000687 65535 f 0000000688 65535 f 0000000689 65535 f 0000000690 65535 f 0000000691 65535 f 0000000692 65535 f 0000000693 65535 f 0000000694 65535 f 0000000695 65535 f 0000000696 65535 f 0000000697 65535 f 0000000698 65535 f 0000000699 65535 f 0000000700 65535 f 0000000701 65535 f 0000000702 65535 f 0000000703 65535 f 0000000704 65535 f 0000000705 65535 f 0000000706 65535 f 0000000707 65535 f 0000000708 65535 f 0000000709 65535 f 0000000710 65535 f 0000000711 65535 f 0000000712 65535 f 0000000713 65535 f 0000000714 65535 f 0000000715 65535 f 0000000716 65535 f 0000000717 65535 f 0000000718 65535 f 0000000719 65535 f 0000000720 65535 f 0000000721 65535 f 0000000722 65535 f 0000000723 65535 f 0000000724 65535 f 0000000725 65535 f 0000000726 65535 f 0000000727 65535 f 0000000728 65535 f 0000000729 65535 f 0000000730 65535 f 0000000731 65535 f 0000000732 65535 f 0000000733 65535 f 0000000734 65535 f 0000000735 65535 f 0000000736 65535 f 0000000737 65535 f 0000000738 65535 f 0000000739 65535 f 0000000740 65535 f 0000000741 65535 f 0000000742 65535 f 0000000743 65535 f 0000000744 65535 f 0000000745 65535 f 0000000746 65535 f 0000000747 65535 f 0000000748 65535 f 0000000749 65535 f 0000000750 65535 f 0000000751 65535 f 0000000752 65535 f 0000000753 65535 f 0000000754 65535 f 0000000755 65535 f 0000000756 65535 f 0000000757 65535 f 0000000758 65535 f 0000000759 65535 f 0000000760 65535 f 0000000761 65535 f 0000000762 65535 f 0000000763 65535 f 0000000764 65535 f 0000000765 65535 f 0000000766 65535 f 0000000767 65535 f 0000000768 65535 f 0000000769 65535 f 0000000770 65535 f 0000000771 65535 f 0000000772 65535 f 0000000773 65535 f 0000000774 65535 f 0000000775 65535 f 0000000776 65535 f 0000000777 65535 f 0000000778 65535 f 0000000779 65535 f 0000000780 65535 f 0000000781 65535 f 0000000782 65535 f 0000000783 65535 f 0000000784 65535 f 0000000785 65535 f 0000000786 65535 f 0000000787 65535 f 0000000788 65535 f 0000000789 65535 f 0000000790 65535 f 0000000791 65535 f 0000000792 65535 f 0000000793 65535 f 0000000794 65535 f 0000000795 65535 f 0000000796 65535 f 0000000797 65535 f 0000000798 65535 f 0000000799 65535 f 0000000800 65535 f 0000000801 65535 f 0000000802 65535 f 0000000803 65535 f 0000000804 65535 f 0000000805 65535 f 0000000806 65535 f 0000000807 65535 f 0000000808 65535 f 0000000809 65535 f 0000000810 65535 f 0000000811 65535 f 0000000812 65535 f 0000000813 65535 f 0000000814 65535 f 0000000815 65535 f 0000000816 65535 f 0000000817 65535 f 0000000818 65535 f 0000000819 65535 f 0000000820 65535 f 0000000821 65535 f 0000000822 65535 f 0000000823 65535 f 0000000824 65535 f 0000000825 65535 f 0000000826 65535 f 0000000827 65535 f 0000000828 65535 f 0000000829 65535 f 0000000830 65535 f 0000000831 65535 f 0000000832 65535 f 0000000833 65535 f 0000000834 65535 f 0000000835 65535 f 0000000836 65535 f 0000000837 65535 f 0000000838 65535 f 0000000839 65535 f 0000000840 65535 f 0000000841 65535 f 0000000842 65535 f 0000000843 65535 f 0000000844 65535 f 0000000845 65535 f 0000000846 65535 f 0000000847 65535 f 0000000848 65535 f 0000000849 65535 f 0000000850 65535 f 0000000851 65535 f 0000000852 65535 f 0000000853 65535 f 0000000854 65535 f 0000000855 65535 f 0000000856 65535 f 0000000857 65535 f 0000000858 65535 f 0000000859 65535 f 0000000860 65535 f 0000000861 65535 f 0000000862 65535 f 0000000863 65535 f 0000000864 65535 f 0000000865 65535 f 0000000866 65535 f 0000000867 65535 f 0000000868 65535 f 0000000869 65535 f 0000000870 65535 f 0000000871 65535 f 0000000872 65535 f 0000000873 65535 f 0000000874 65535 f 0000000875 65535 f 0000000876 65535 f 0000000877 65535 f 0000000878 65535 f 0000000879 65535 f 0000000880 65535 f 0000000881 65535 f 0000000882 65535 f 0000000883 65535 f 0000000884 65535 f 0000000885 65535 f 0000000886 65535 f 0000000887 65535 f 0000000888 65535 f 0000000889 65535 f 0000000890 65535 f 0000000891 65535 f 0000000892 65535 f 0000000893 65535 f 0000000894 65535 f 0000000895 65535 f 0000000896 65535 f 0000000897 65535 f 0000000898 65535 f 0000000899 65535 f 0000000900 65535 f 0000000901 65535 f 0000000902 65535 f 0000000903 65535 f 0000000904 65535 f 0000000905 65535 f 0000000906 65535 f 0000000907 65535 f 0000000908 65535 f 0000000909 65535 f 0000000910 65535 f 0000000911 65535 f 0000000912 65535 f 0000000913 65535 f 0000000914 65535 f 0000000915 65535 f 0000000916 65535 f 0000000917 65535 f 0000000918 65535 f 0000000919 65535 f 0000000920 65535 f 0000000921 65535 f 0000000922 65535 f 0000000923 65535 f 0000000924 65535 f 0000000925 65535 f 0000000926 65535 f 0000000927 65535 f 0000000928 65535 f 0000000929 65535 f 0000000930 65535 f 0000000931 65535 f 0000000932 65535 f 0000000933 65535 f 0000000934 65535 f 0000000935 65535 f 0000000936 65535 f 0000000937 65535 f 0000000938 65535 f 0000000939 65535 f 0000000940 65535 f 0000000941 65535 f 0000000942 65535 f 0000000943 65535 f 0000000944 65535 f 0000000945 65535 f 0000000946 65535 f 0000000947 65535 f 0000000948 65535 f 0000000949 65535 f 0000000950 65535 f 0000000951 65535 f 0000000952 65535 f 0000000953 65535 f 0000000954 65535 f 0000000955 65535 f 0000000956 65535 f 0000000957 65535 f 0000000958 65535 f 0000000959 65535 f 0000000960 65535 f 0000000961 65535 f 0000000962 65535 f 0000000963 65535 f 0000000964 65535 f 0000000965 65535 f 0000000966 65535 f 0000000967 65535 f 0000000968 65535 f 0000000969 65535 f 0000000970 65535 f 0000000971 65535 f 0000000972 65535 f 0000000973 65535 f 0000000974 65535 f 0000000975 65535 f 0000000976 65535 f 0000000977 65535 f 0000000978 65535 f 0000000979 65535 f 0000000980 65535 f 0000000981 65535 f 0000000982 65535 f 0000000983 65535 f 0000000984 65535 f 0000000985 65535 f 0000000986 65535 f 0000000987 65535 f 0000000988 65535 f 0000000989 65535 f 0000000990 65535 f 0000000991 65535 f 0000000992 65535 f 0000000993 65535 f 0000000994 65535 f 0000000995 65535 f 0000000996 65535 f 0000000997 65535 f 0000000998 65535 f 0000000999 65535 f 0000001000 65535 f 0000001001 65535 f 0000001002 65535 f 0000001003 65535 f 0000001004 65535 f 0000001005 65535 f 0000001006 65535 f 0000001007 65535 f 0000001008 65535 f 0000001009 65535 f 0000001010 65535 f 0000001011 65535 f 0000001012 65535 f 0000001013 65535 f 0000001014 65535 f 0000001015 65535 f 0000001016 65535 f 0000001017 65535 f 0000001018 65535 f 0000001019 65535 f 0000001020 65535 f 0000001021 65535 f 0000001022 65535 f 0000001023 65535 f 0000001024 65535 f 0000001025 65535 f 0000001026 65535 f 0000001027 65535 f 0000001028 65535 f 0000001029 65535 f 0000001030 65535 f 0000001031 65535 f 0000001032 65535 f 0000001033 65535 f 0000001034 65535 f 0000001035 65535 f 0000001036 65535 f 0000001037 65535 f 0000001038 65535 f 0000001039 65535 f 0000001040 65535 f 0000001041 65535 f 0000001042 65535 f 0000001043 65535 f 0000001044 65535 f 0000001045 65535 f 0000001046 65535 f 0000001047 65535 f 0000001048 65535 f 0000001049 65535 f 0000001050 65535 f 0000001051 65535 f 0000001052 65535 f 0000001053 65535 f 0000001054 65535 f 0000001055 65535 f 0000001056 65535 f 0000001057 65535 f 0000001058 65535 f 0000001059 65535 f 0000001060 65535 f 0000001061 65535 f 0000001062 65535 f 0000001063 65535 f 0000001064 65535 f 0000001065 65535 f 0000001066 65535 f 0000001067 65535 f 0000001068 65535 f 0000001069 65535 f 0000001070 65535 f 0000001071 65535 f 0000001072 65535 f 0000001073 65535 f 0000001074 65535 f 0000001075 65535 f 0000001076 65535 f 0000001077 65535 f 0000001078 65535 f 0000001079 65535 f 0000001080 65535 f 0000001081 65535 f 0000001082 65535 f 0000001083 65535 f 0000001084 65535 f 0000001085 65535 f 0000001086 65535 f 0000001087 65535 f 0000001088 65535 f 0000001089 65535 f 0000001090 65535 f 0000001091 65535 f 0000001092 65535 f 0000001093 65535 f 0000001094 65535 f 0000001095 65535 f 0000001096 65535 f 0000001097 65535 f 0000001098 65535 f 0000001099 65535 f 0000001100 65535 f 0000001101 65535 f 0000001102 65535 f 0000001103 65535 f 0000001104 65535 f 0000001105 65535 f 0000001106 65535 f 0000001107 65535 f 0000001108 65535 f 0000001109 65535 f 0000001110 65535 f 0000001111 65535 f 0000001112 65535 f 0000001113 65535 f 0000001114 65535 f 0000001115 65535 f 0000001116 65535 f 0000001117 65535 f 0000001118 65535 f 0000001119 65535 f 0000001120 65535 f 0000001121 65535 f 0000001122 65535 f 0000001123 65535 f 0000001124 65535 f 0000001125 65535 f 0000001126 65535 f 0000001127 65535 f 0000001128 65535 f 0000001129 65535 f 0000001130 65535 f 0000001131 65535 f 0000001132 65535 f 0000001133 65535 f 0000001134 65535 f 0000001135 65535 f 0000001136 65535 f 0000001137 65535 f 0000001138 65535 f 0000001139 65535 f 0000001140 65535 f 0000001141 65535 f 0000001142 65535 f 0000001143 65535 f 0000001144 65535 f 0000001145 65535 f 0000001146 65535 f 0000001147 65535 f 0000001148 65535 f 0000001149 65535 f 0000001150 65535 f 0000001151 65535 f 0000001152 65535 f 0000001153 65535 f 0000001154 65535 f 0000001155 65535 f 0000001156 65535 f 0000001157 65535 f 0000001158 65535 f 0000001159 65535 f 0000001160 65535 f 0000001161 65535 f 0000001162 65535 f 0000001163 65535 f 0000001164 65535 f 0000001165 65535 f 0000001166 65535 f 0000001167 65535 f 0000001168 65535 f 0000001169 65535 f 0000001170 65535 f 0000001171 65535 f 0000001172 65535 f 0000001173 65535 f 0000001174 65535 f 0000001175 65535 f 0000001176 65535 f 0000001177 65535 f 0000001178 65535 f 0000001179 65535 f 0000001180 65535 f 0000001181 65535 f 0000001182 65535 f 0000001183 65535 f 0000001184 65535 f 0000001185 65535 f 0000001186 65535 f 0000001187 65535 f 0000001188 65535 f 0000001189 65535 f 0000001190 65535 f 0000001191 65535 f 0000001192 65535 f 0000001193 65535 f 0000001194 65535 f 0000001195 65535 f 0000001196 65535 f 0000001197 65535 f 0000001198 65535 f 0000001199 65535 f 0000001200 65535 f 0000001201 65535 f 0000001202 65535 f 0000001203 65535 f 0000001204 65535 f 0000001205 65535 f 0000001206 65535 f 0000001207 65535 f 0000001208 65535 f 0000001209 65535 f 0000001210 65535 f 0000001211 65535 f 0000001212 65535 f 0000001213 65535 f 0000001214 65535 f 0000001215 65535 f 0000001216 65535 f 0000001217 65535 f 0000001218 65535 f 0000001219 65535 f 0000001220 65535 f 0000001221 65535 f 0000001222 65535 f 0000001223 65535 f 0000001224 65535 f 0000001225 65535 f 0000001226 65535 f 0000001227 65535 f 0000001228 65535 f 0000001229 65535 f 0000001230 65535 f 0000001231 65535 f 0000001232 65535 f 0000001233 65535 f 0000001234 65535 f 0000001235 65535 f 0000001236 65535 f 0000001237 65535 f 0000001238 65535 f 0000001239 65535 f 0000001240 65535 f 0000001241 65535 f 0000001242 65535 f 0000001243 65535 f 0000001244 65535 f 0000001245 65535 f 0000001246 65535 f 0000001247 65535 f 0000001248 65535 f 0000001249 65535 f 0000001250 65535 f 0000001251 65535 f 0000001252 65535 f 0000001253 65535 f 0000001254 65535 f 0000001255 65535 f 0000001256 65535 f 0000001257 65535 f 0000001258 65535 f 0000001259 65535 f 0000001260 65535 f 0000001261 65535 f 0000001262 65535 f 0000001263 65535 f 0000001264 65535 f 0000001265 65535 f 0000001266 65535 f 0000001267 65535 f 0000001268 65535 f 0000001269 65535 f 0000001270 65535 f 0000001271 65535 f 0000001272 65535 f 0000001273 65535 f 0000001274 65535 f 0000001275 65535 f 0000001276 65535 f 0000001277 65535 f 0000001278 65535 f 0000001279 65535 f 0000001280 65535 f 0000001281 65535 f 0000001282 65535 f 0000001283 65535 f 0000001284 65535 f 0000001285 65535 f 0000001286 65535 f 0000001287 65535 f 0000001288 65535 f 0000001289 65535 f 0000001290 65535 f 0000001291 65535 f 0000001292 65535 f 0000001293 65535 f 0000001294 65535 f 0000001295 65535 f 0000001296 65535 f 0000001297 65535 f 0000001298 65535 f 0000001299 65535 f 0000001300 65535 f 0000001301 65535 f 0000001302 65535 f 0000001303 65535 f 0000001304 65535 f 0000001305 65535 f 0000001306 65535 f 0000001307 65535 f 0000001308 65535 f 0000001309 65535 f 0000001310 65535 f 0000001311 65535 f 0000001312 65535 f 0000001313 65535 f 0000001314 65535 f 0000001315 65535 f 0000001316 65535 f 0000001317 65535 f 0000001318 65535 f 0000001319 65535 f 0000001320 65535 f 0000001321 65535 f 0000001322 65535 f 0000001323 65535 f 0000001324 65535 f 0000001325 65535 f 0000001326 65535 f 0000001327 65535 f 0000001328 65535 f 0000001329 65535 f 0000001330 65535 f 0000001331 65535 f 0000001332 65535 f 0000001333 65535 f 0000001334 65535 f 0000001335 65535 f 0000001336 65535 f 0000001337 65535 f 0000001338 65535 f 0000001339 65535 f 0000001340 65535 f 0000001341 65535 f 0000001342 65535 f 0000001343 65535 f 0000001344 65535 f 0000001345 65535 f 0000001346 65535 f 0000001347 65535 f 0000001348 65535 f 0000001349 65535 f 0000001350 65535 f 0000001351 65535 f 0000001352 65535 f 0000001353 65535 f 0000001354 65535 f 0000001355 65535 f 0000001356 65535 f 0000001357 65535 f 0000001358 65535 f 0000001359 65535 f 0000001360 65535 f 0000001361 65535 f 0000001362 65535 f 0000001363 65535 f 0000001364 65535 f 0000001365 65535 f 0000001366 65535 f 0000001367 65535 f 0000001368 65535 f 0000001369 65535 f 0000001370 65535 f 0000001371 65535 f 0000001372 65535 f 0000001373 65535 f 0000001374 65535 f 0000001375 65535 f 0000001376 65535 f 0000001377 65535 f 0000001378 65535 f 0000001379 65535 f 0000001380 65535 f 0000001381 65535 f 0000001382 65535 f 0000001383 65535 f 0000001384 65535 f 0000001385 65535 f 0000001386 65535 f 0000001387 65535 f 0000001388 65535 f 0000001389 65535 f 0000001390 65535 f 0000001391 65535 f 0000001392 65535 f 0000001393 65535 f 0000001394 65535 f 0000001395 65535 f 0000001396 65535 f 0000001397 65535 f 0000001398 65535 f 0000001399 65535 f 0000001400 65535 f 0000001401 65535 f 0000001402 65535 f 0000001403 65535 f 0000001404 65535 f 0000001405 65535 f 0000001406 65535 f 0000001407 65535 f 0000001408 65535 f 0000001409 65535 f 0000001410 65535 f 0000001411 65535 f 0000001412 65535 f 0000001413 65535 f 0000001414 65535 f 0000001415 65535 f 0000001416 65535 f 0000001417 65535 f 0000001418 65535 f 0000001419 65535 f 0000001420 65535 f 0000001421 65535 f 0000001422 65535 f 0000001423 65535 f 0000001424 65535 f 0000001425 65535 f 0000001426 65535 f 0000001427 65535 f 0000001428 65535 f 0000001429 65535 f 0000001430 65535 f 0000001431 65535 f 0000001432 65535 f 0000001433 65535 f 0000001434 65535 f 0000001435 65535 f 0000001436 65535 f 0000001437 65535 f 0000001438 65535 f 0000001439 65535 f 0000001440 65535 f 0000001441 65535 f 0000001442 65535 f 0000001443 65535 f 0000001444 65535 f 0000001445 65535 f 0000001446 65535 f 0000001447 65535 f 0000001448 65535 f 0000001449 65535 f 0000001450 65535 f 0000001451 65535 f 0000001452 65535 f 0000001453 65535 f 0000001454 65535 f 0000001455 65535 f 0000001456 65535 f 0000001457 65535 f 0000001458 65535 f 0000001459 65535 f 0000001460 65535 f 0000001461 65535 f 0000001462 65535 f 0000001463 65535 f 0000001464 65535 f 0000001465 65535 f 0000001466 65535 f 0000001467 65535 f 0000001468 65535 f 0000001469 65535 f 0000001470 65535 f 0000001471 65535 f 0000001472 65535 f 0000001473 65535 f 0000001474 65535 f 0000001475 65535 f 0000001476 65535 f 0000001477 65535 f 0000001478 65535 f 0000001479 65535 f 0000001480 65535 f 0000001481 65535 f 0000001482 65535 f 0000001483 65535 f 0000001484 65535 f 0000001485 65535 f 0000001486 65535 f 0000001487 65535 f 0000001488 65535 f 0000001489 65535 f 0000001490 65535 f 0000001491 65535 f 0000001492 65535 f 0000001493 65535 f 0000001494 65535 f 0000001495 65535 f 0000001496 65535 f 0000001497 65535 f 0000001498 65535 f 0000001499 65535 f 0000001500 65535 f 0000001501 65535 f 0000001502 65535 f 0000001503 65535 f 0000001504 65535 f 0000001505 65535 f 0000001506 65535 f 0000001507 65535 f 0000001508 65535 f 0000001509 65535 f 0000001510 65535 f 0000001511 65535 f 0000001512 65535 f 0000001513 65535 f 0000001514 65535 f 0000001515 65535 f 0000001516 65535 f 0000001517 65535 f 0000001518 65535 f 0000001519 65535 f 0000001520 65535 f 0000001521 65535 f 0000001522 65535 f 0000001523 65535 f 0000001524 65535 f 0000001525 65535 f 0000001526 65535 f 0000001527 65535 f 0000001528 65535 f 0000001529 65535 f 0000001530 65535 f 0000001531 65535 f 0000001532 65535 f 0000001533 65535 f 0000001534 65535 f 0000001535 65535 f 0000001536 65535 f 0000001537 65535 f 0000001538 65535 f 0000001539 65535 f 0000001540 65535 f 0000001541 65535 f 0000001542 65535 f 0000001543 65535 f 0000001544 65535 f 0000001545 65535 f 0000001546 65535 f 0000001547 65535 f 0000001548 65535 f 0000001549 65535 f 0000001550 65535 f 0000001551 65535 f 0000001552 65535 f 0000001553 65535 f 0000001554 65535 f 0000001555 65535 f 0000001556 65535 f 0000001557 65535 f 0000001558 65535 f 0000001559 65535 f 0000001560 65535 f 0000001561 65535 f 0000001562 65535 f 0000001563 65535 f 0000001564 65535 f 0000001565 65535 f 0000001566 65535 f 0000001567 65535 f 0000001568 65535 f 0000001569 65535 f 0000001570 65535 f 0000001571 65535 f 0000001572 65535 f 0000001573 65535 f 0000001574 65535 f 0000001575 65535 f 0000001576 65535 f 0000001577 65535 f 0000001578 65535 f 0000001579 65535 f 0000001580 65535 f 0000001581 65535 f 0000001582 65535 f 0000001583 65535 f 0000001584 65535 f 0000001585 65535 f 0000001586 65535 f 0000001587 65535 f 0000001588 65535 f 0000001589 65535 f 0000001590 65535 f 0000001591 65535 f 0000001592 65535 f 0000001593 65535 f 0000001594 65535 f 0000001595 65535 f 0000001596 65535 f 0000001597 65535 f 0000001598 65535 f 0000001599 65535 f 0000001600 65535 f 0000001601 65535 f 0000001602 65535 f 0000001603 65535 f 0000001604 65535 f 0000001605 65535 f 0000001606 65535 f 0000001607 65535 f 0000001608 65535 f 0000001609 65535 f 0000001610 65535 f 0000001611 65535 f 0000001612 65535 f 0000001613 65535 f 0000001614 65535 f 0000001615 65535 f 0000001616 65535 f 0000001617 65535 f 0000001618 65535 f 0000001619 65535 f 0000001620 65535 f 0000001621 65535 f 0000001622 65535 f 0000001623 65535 f 0000001624 65535 f 0000001625 65535 f 0000001626 65535 f 0000001627 65535 f 0000001628 65535 f 0000001629 65535 f 0000001630 65535 f 0000001631 65535 f 0000001632 65535 f 0000001633 65535 f 0000001634 65535 f 0000001635 65535 f 0000001636 65535 f 0000001637 65535 f 0000001638 65535 f 0000001639 65535 f 0000001640 65535 f 0000001641 65535 f 0000001642 65535 f 0000001643 65535 f 0000001644 65535 f 0000001645 65535 f 0000001646 65535 f 0000001647 65535 f 0000001648 65535 f 0000001649 65535 f 0000001650 65535 f 0000001651 65535 f 0000001652 65535 f 0000001653 65535 f 0000001654 65535 f 0000001655 65535 f 0000001656 65535 f 0000001657 65535 f 0000001658 65535 f 0000001659 65535 f 0000001660 65535 f 0000001661 65535 f 0000001662 65535 f 0000001663 65535 f 0000001664 65535 f 0000001665 65535 f 0000001666 65535 f 0000001667 65535 f 0000001668 65535 f 0000001669 65535 f 0000001670 65535 f 0000001671 65535 f 0000001672 65535 f 0000001673 65535 f 0000001674 65535 f 0000001675 65535 f 0000001676 65535 f 0000001677 65535 f 0000001678 65535 f 0000001679 65535 f 0000001680 65535 f 0000001681 65535 f 0000001682 65535 f 0000001683 65535 f 0000001684 65535 f 0000001685 65535 f 0000001686 65535 f 0000001687 65535 f 0000001688 65535 f 0000001689 65535 f 0000001690 65535 f 0000001691 65535 f 0000001692 65535 f 0000001693 65535 f 0000001694 65535 f 0000001695 65535 f 0000001696 65535 f 0000001697 65535 f 0000001698 65535 f 0000001699 65535 f 0000001700 65535 f 0000001701 65535 f 0000001702 65535 f 0000001703 65535 f 0000001704 65535 f 0000001705 65535 f 0000001706 65535 f 0000001707 65535 f 0000001708 65535 f 0000001709 65535 f 0000001710 65535 f 0000001711 65535 f 0000001712 65535 f 0000001713 65535 f 0000001714 65535 f 0000001715 65535 f 0000001716 65535 f 0000001717 65535 f 0000001718 65535 f 0000001719 65535 f 0000001720 65535 f 0000001721 65535 f 0000001722 65535 f 0000001723 65535 f 0000001724 65535 f 0000001725 65535 f 0000001726 65535 f 0000001727 65535 f 0000001728 65535 f 0000001729 65535 f 0000001730 65535 f 0000001731 65535 f 0000001732 65535 f 0000001733 65535 f 0000001734 65535 f 0000001735 65535 f 0000001736 65535 f 0000001737 65535 f 0000001738 65535 f 0000001739 65535 f 0000001740 65535 f 0000001741 65535 f 0000001742 65535 f 0000001743 65535 f 0000001744 65535 f 0000001745 65535 f 0000001746 65535 f 0000001747 65535 f 0000001748 65535 f 0000001749 65535 f 0000001750 65535 f 0000001751 65535 f 0000001752 65535 f 0000001753 65535 f 0000001754 65535 f 0000001755 65535 f 0000001756 65535 f 0000001757 65535 f 0000001758 65535 f 0000001759 65535 f 0000001760 65535 f 0000001761 65535 f 0000001762 65535 f 0000001763 65535 f 0000001764 65535 f 0000001765 65535 f 0000001766 65535 f 0000001767 65535 f 0000001768 65535 f 0000001769 65535 f 0000001770 65535 f 0000001771 65535 f 0000001772 65535 f 0000001773 65535 f 0000001774 65535 f 0000001775 65535 f 0000001776 65535 f 0000001777 65535 f 0000001778 65535 f 0000001779 65535 f 0000001780 65535 f 0000001781 65535 f 0000001782 65535 f 0000001783 65535 f 0000001784 65535 f 0000001785 65535 f 0000001786 65535 f 0000001787 65535 f 0000001788 65535 f 0000001789 65535 f 0000001790 65535 f 0000001791 65535 f 0000001792 65535 f 0000001793 65535 f 0000001794 65535 f 0000001795 65535 f 0000001796 65535 f 0000001797 65535 f 0000001798 65535 f 0000001799 65535 f 0000001800 65535 f 0000001801 65535 f 0000001802 65535 f 0000001803 65535 f 0000001804 65535 f 0000001805 65535 f 0000001806 65535 f 0000001807 65535 f 0000001808 65535 f 0000001809 65535 f 0000001810 65535 f 0000001811 65535 f 0000001812 65535 f 0000001813 65535 f 0000001814 65535 f 0000001815 65535 f 0000001816 65535 f 0000001817 65535 f 0000001818 65535 f 0000001819 65535 f 0000001820 65535 f 0000001821 65535 f 0000001822 65535 f 0000001823 65535 f 0000001824 65535 f 0000001825 65535 f 0000001826 65535 f 0000001827 65535 f 0000001828 65535 f 0000001829 65535 f 0000001830 65535 f 0000001831 65535 f 0000001832 65535 f 0000001833 65535 f 0000001834 65535 f 0000001835 65535 f 0000001836 65535 f 0000001837 65535 f 0000001838 65535 f 0000001839 65535 f 0000001840 65535 f 0000001841 65535 f 0000001842 65535 f 0000001843 65535 f 0000001844 65535 f 0000001845 65535 f 0000001846 65535 f 0000001847 65535 f 0000001848 65535 f 0000001849 65535 f 0000001850 65535 f 0000001851 65535 f 0000001852 65535 f 0000001853 65535 f 0000001854 65535 f 0000001855 65535 f 0000001856 65535 f 0000001857 65535 f 0000001858 65535 f 0000001859 65535 f 0000001860 65535 f 0000001861 65535 f 0000001862 65535 f 0000001863 65535 f 0000001864 65535 f 0000001865 65535 f 0000001866 65535 f 0000001867 65535 f 0000001868 65535 f 0000001869 65535 f 0000001870 65535 f 0000001871 65535 f 0000001872 65535 f 0000001873 65535 f 0000001874 65535 f 0000001875 65535 f 0000001876 65535 f 0000001877 65535 f 0000001878 65535 f 0000001879 65535 f 0000001880 65535 f 0000001881 65535 f 0000001882 65535 f 0000001883 65535 f 0000001884 65535 f 0000001885 65535 f 0000001886 65535 f 0000001887 65535 f 0000001888 65535 f 0000001889 65535 f 0000001890 65535 f 0000001891 65535 f 0000001892 65535 f 0000001893 65535 f 0000001894 65535 f 0000001895 65535 f 0000001896 65535 f 0000001897 65535 f 0000001898 65535 f 0000001899 65535 f 0000001900 65535 f 0000001901 65535 f 0000001902 65535 f 0000001903 65535 f 0000001904 65535 f 0000001905 65535 f 0000001906 65535 f 0000001907 65535 f 0000001908 65535 f 0000001909 65535 f 0000001910 65535 f 0000001911 65535 f 0000001912 65535 f 0000001913 65535 f 0000001914 65535 f 0000001915 65535 f 0000001916 65535 f 0000001917 65535 f 0000001918 65535 f 0000001919 65535 f 0000001920 65535 f 0000001921 65535 f 0000001922 65535 f 0000001923 65535 f 0000001924 65535 f 0000001925 65535 f 0000001926 65535 f 0000001927 65535 f 0000001928 65535 f 0000001929 65535 f 0000001930 65535 f 0000001931 65535 f 0000001932 65535 f 0000001933 65535 f 0000001934 65535 f 0000001935 65535 f 0000001936 65535 f 0000001937 65535 f 0000001938 65535 f 0000001939 65535 f 0000001940 65535 f 0000001941 65535 f 0000001942 65535 f 0000001943 65535 f 0000001944 65535 f 0000001945 65535 f 0000001946 65535 f 0000001947 65535 f 0000001948 65535 f 0000001949 65535 f 0000001950 65535 f 0000001951 65535 f 0000001952 65535 f 0000001953 65535 f 0000001954 65535 f 0000001955 65535 f 0000001956 65535 f 0000001957 65535 f 0000001958 65535 f 0000001959 65535 f 0000001960 65535 f 0000001961 65535 f 0000001962 65535 f 0000001963 65535 f 0000001964 65535 f 0000001965 65535 f 0000001966 65535 f 0000001967 65535 f 0000001968 65535 f 0000001969 65535 f 0000001970 65535 f 0000001971 65535 f 0000001972 65535 f 0000001973 65535 f 0000001974 65535 f 0000001975 65535 f 0000001976 65535 f 0000001977 65535 f 0000001978 65535 f 0000001979 65535 f 0000001980 65535 f 0000001981 65535 f 0000001982 65535 f 0000001983 65535 f 0000001984 65535 f 0000001985 65535 f 0000001986 65535 f 0000001987 65535 f 0000001988 65535 f 0000001989 65535 f 0000001990 65535 f 0000001991 65535 f 0000001992 65535 f 0000001993 65535 f 0000001994 65535 f 0000001995 65535 f 0000001996 65535 f 0000001997 65535 f 0000001998 65535 f 0000001999 65535 f 0000002000 65535 f 0000002001 65535 f 0000002002 65535 f 0000002003 65535 f 0000002004 65535 f 0000002005 65535 f 0000002006 65535 f 0000002007 65535 f 0000002008 65535 f 0000002009 65535 f 0000002010 65535 f 0000002011 65535 f 0000002012 65535 f 0000002013 65535 f 0000002014 65535 f 0000002015 65535 f 0000002016 65535 f 0000002017 65535 f 0000002018 65535 f 0000002019 65535 f 0000002020 65535 f 0000002021 65535 f 0000002022 65535 f 0000002023 65535 f 0000002024 65535 f 0000002025 65535 f 0000002026 65535 f 0000002027 65535 f 0000002028 65535 f 0000002029 65535 f 0000002030 65535 f 0000002031 65535 f 0000002032 65535 f 0000002033 65535 f 0000002034 65535 f 0000002035 65535 f 0000002036 65535 f 0000002037 65535 f 0000002038 65535 f 0000002039 65535 f 0000002040 65535 f 0000002041 65535 f 0000002042 65535 f 0000002043 65535 f 0000002044 65535 f 0000002045 65535 f 0000002046 65535 f 0000002047 65535 f 0000002048 65535 f 0000002049 65535 f 0000002050 65535 f 0000002051 65535 f 0000002052 65535 f 0000002053 65535 f 0000002054 65535 f 0000002055 65535 f 0000002056 65535 f 0000002057 65535 f 0000002058 65535 f 0000002059 65535 f 0000002060 65535 f 0000002061 65535 f 0000002062 65535 f 0000002063 65535 f 0000002064 65535 f 0000002065 65535 f 0000002066 65535 f 0000002067 65535 f 0000002068 65535 f 0000002069 65535 f 0000002070 65535 f 0000002071 65535 f 0000002072 65535 f 0000002073 65535 f 0000002074 65535 f 0000002075 65535 f 0000002076 65535 f 0000002077 65535 f 0000002078 65535 f 0000002079 65535 f 0000002080 65535 f 0000002081 65535 f 0000002082 65535 f 0000002083 65535 f 0000002084 65535 f 0000002085 65535 f 0000002086 65535 f 0000002087 65535 f 0000002088 65535 f 0000002089 65535 f 0000002090 65535 f 0000002091 65535 f 0000002092 65535 f 0000002093 65535 f 0000002094 65535 f 0000002095 65535 f 0000002096 65535 f 0000002097 65535 f 0000002098 65535 f 0000002099 65535 f 0000002100 65535 f 0000002101 65535 f 0000002102 65535 f 0000002103 65535 f 0000002104 65535 f 0000002105 65535 f 0000002106 65535 f 0000002107 65535 f 0000002108 65535 f 0000002109 65535 f 0000002110 65535 f 0000002111 65535 f 0000002112 65535 f 0000002113 65535 f 0000002114 65535 f 0000002115 65535 f 0000002116 65535 f 0000002117 65535 f 0000002118 65535 f 0000002119 65535 f 0000002120 65535 f 0000002121 65535 f 0000002122 65535 f 0000002123 65535 f 0000002124 65535 f 0000002125 65535 f 0000002126 65535 f 0000002127 65535 f 0000002128 65535 f 0000002129 65535 f 0000002130 65535 f 0000002131 65535 f 0000002132 65535 f 0000002133 65535 f 0000002134 65535 f 0000002135 65535 f 0000002136 65535 f 0000002137 65535 f 0000002138 65535 f 0000002139 65535 f 0000002140 65535 f 0000002141 65535 f 0000002142 65535 f 0000002143 65535 f 0000002144 65535 f 0000002145 65535 f 0000002146 65535 f 0000002147 65535 f 0000002148 65535 f 0000002149 65535 f 0000002150 65535 f 0000002151 65535 f 0000002152 65535 f 0000002153 65535 f 0000002154 65535 f 0000002155 65535 f 0000002156 65535 f 0000002157 65535 f 0000002158 65535 f 0000002159 65535 f 0000002160 65535 f 0000002161 65535 f 0000002162 65535 f 0000002163 65535 f 0000002164 65535 f 0000002165 65535 f 0000002166 65535 f 0000002167 65535 f 0000002168 65535 f 0000002169 65535 f 0000002170 65535 f 0000002171 65535 f 0000002172 65535 f 0000002173 65535 f 0000002174 65535 f 0000002175 65535 f 0000002176 65535 f 0000002177 65535 f 0000002178 65535 f 0000002179 65535 f 0000002180 65535 f 0000002181 65535 f 0000002182 65535 f 0000002183 65535 f 0000002184 65535 f 0000002185 65535 f 0000002186 65535 f 0000002187 65535 f 0000002188 65535 f 0000002189 65535 f 0000002190 65535 f 0000002191 65535 f 0000002192 65535 f 0000002193 65535 f 0000002194 65535 f 0000002195 65535 f 0000002196 65535 f 0000002197 65535 f 0000002198 65535 f 0000002199 65535 f 0000002200 65535 f 0000002201 65535 f 0000002202 65535 f 0000002203 65535 f 0000002204 65535 f 0000002205 65535 f 0000002206 65535 f 0000002207 65535 f 0000002208 65535 f 0000002209 65535 f 0000002210 65535 f 0000002211 65535 f 0000002212 65535 f 0000002213 65535 f 0000002214 65535 f 0000002215 65535 f 0000002216 65535 f 0000002217 65535 f 0000002218 65535 f 0000002219 65535 f 0000002220 65535 f 0000002221 65535 f 0000002222 65535 f 0000002223 65535 f 0000002224 65535 f 0000002225 65535 f 0000002226 65535 f 0000002227 65535 f 0000002228 65535 f 0000002229 65535 f 0000002230 65535 f 0000002231 65535 f 0000002232 65535 f 0000002233 65535 f 0000002234 65535 f 0000002235 65535 f 0000002236 65535 f 0000002237 65535 f 0000002238 65535 f 0000002239 65535 f 0000002240 65535 f 0000002241 65535 f 0000002242 65535 f 0000002243 65535 f 0000002244 65535 f 0000002245 65535 f 0000002246 65535 f 0000002247 65535 f 0000002248 65535 f 0000002249 65535 f 0000002250 65535 f 0000002251 65535 f 0000002252 65535 f 0000002253 65535 f 0000002254 65535 f 0000002255 65535 f 0000002256 65535 f 0000002257 65535 f 0000002258 65535 f 0000002259 65535 f 0000002260 65535 f 0000002261 65535 f 0000002262 65535 f 0000002263 65535 f 0000002264 65535 f 0000002265 65535 f 0000002266 65535 f 0000002267 65535 f 0000002268 65535 f 0000002269 65535 f 0000002270 65535 f 0000002271 65535 f 0000002272 65535 f 0000002273 65535 f 0000002274 65535 f 0000002275 65535 f 0000002276 65535 f 0000002277 65535 f 0000002278 65535 f 0000002279 65535 f 0000002280 65535 f 0000002281 65535 f 0000002282 65535 f 0000002283 65535 f 0000002284 65535 f 0000002285 65535 f 0000002286 65535 f 0000002287 65535 f 0000002288 65535 f 0000002289 65535 f 0000002290 65535 f 0000002291 65535 f 0000002292 65535 f 0000002293 65535 f 0000002294 65535 f 0000002295 65535 f 0000002296 65535 f 0000002297 65535 f 0000002298 65535 f 0000002299 65535 f 0000002300 65535 f 0000002301 65535 f 0000002302 65535 f 0000002303 65535 f 0000002304 65535 f 0000002305 65535 f 0000002306 65535 f 0000002307 65535 f 0000002308 65535 f 0000002309 65535 f 0000002310 65535 f 0000002311 65535 f 0000002312 65535 f 0000002313 65535 f 0000002314 65535 f 0000002315 65535 f 0000002316 65535 f 0000002317 65535 f 0000002318 65535 f 0000002319 65535 f 0000002320 65535 f 0000002321 65535 f 0000002322 65535 f 0000002323 65535 f 0000002324 65535 f 0000002325 65535 f 0000002326 65535 f 0000002327 65535 f 0000002328 65535 f 0000002329 65535 f 0000002330 65535 f 0000002331 65535 f 0000002332 65535 f 0000002333 65535 f 0000002334 65535 f 0000002335 65535 f 0000002336 65535 f 0000002337 65535 f 0000002338 65535 f 0000002339 65535 f 0000002340 65535 f 0000002341 65535 f 0000002342 65535 f 0000002343 65535 f 0000002344 65535 f 0000002345 65535 f 0000002346 65535 f 0000002347 65535 f 0000002348 65535 f 0000002349 65535 f 0000002350 65535 f 0000002351 65535 f 0000002352 65535 f 0000002353 65535 f 0000002354 65535 f 0000002355 65535 f 0000002356 65535 f 0000002357 65535 f 0000002358 65535 f 0000002359 65535 f 0000002360 65535 f 0000002361 65535 f 0000002362 65535 f 0000002363 65535 f 0000002364 65535 f 0000002365 65535 f 0000002366 65535 f 0000002367 65535 f 0000002368 65535 f 0000002369 65535 f 0000002370 65535 f 0000002371 65535 f 0000002372 65535 f 0000002373 65535 f 0000002374 65535 f 0000002375 65535 f 0000002376 65535 f 0000002377 65535 f 0000002378 65535 f 0000002379 65535 f 0000002380 65535 f 0000002381 65535 f 0000002382 65535 f 0000002383 65535 f 0000002384 65535 f 0000002385 65535 f 0000002386 65535 f 0000002387 65535 f 0000002388 65535 f 0000002389 65535 f 0000002390 65535 f 0000002391 65535 f 0000002392 65535 f 0000002393 65535 f 0000002394 65535 f 0000002395 65535 f 0000002396 65535 f 0000002397 65535 f 0000002398 65535 f 0000002399 65535 f 0000002400 65535 f 0000002401 65535 f 0000002402 65535 f 0000002403 65535 f 0000002404 65535 f 0000002405 65535 f 0000002406 65535 f 0000002407 65535 f 0000002408 65535 f 0000002409 65535 f 0000002410 65535 f 0000002411 65535 f 0000002412 65535 f 0000002413 65535 f 0000002414 65535 f 0000002415 65535 f 0000002416 65535 f 0000002417 65535 f 0000002418 65535 f 0000002419 65535 f 0000002420 65535 f 0000002421 65535 f 0000002422 65535 f 0000002423 65535 f 0000002424 65535 f 0000002425 65535 f 0000002426 65535 f 0000002427 65535 f 0000002428 65535 f 0000002429 65535 f 0000002430 65535 f 0000002431 65535 f 0000002432 65535 f 0000002433 65535 f 0000002434 65535 f 0000002435 65535 f 0000002436 65535 f 0000002437 65535 f 0000002438 65535 f 0000002439 65535 f 0000002440 65535 f 0000002441 65535 f 0000002442 65535 f 0000002443 65535 f 0000002444 65535 f 0000002445 65535 f 0000002446 65535 f 0000002447 65535 f 0000002448 65535 f 0000002449 65535 f 0000002450 65535 f 0000002451 65535 f 0000002452 65535 f 0000002453 65535 f 0000002454 65535 f 0000002455 65535 f 0000002456 65535 f 0000002457 65535 f 0000002458 65535 f 0000002459 65535 f 0000002460 65535 f 0000002461 65535 f 0000002462 65535 f 0000002463 65535 f 0000002464 65535 f 0000002465 65535 f 0000002466 65535 f 0000002467 65535 f 0000002468 65535 f 0000002469 65535 f 0000002470 65535 f 0000002471 65535 f 0000002472 65535 f 0000002473 65535 f 0000002474 65535 f 0000002475 65535 f 0000002476 65535 f 0000002477 65535 f 0000002478 65535 f 0000002479 65535 f 0000002480 65535 f 0000002481 65535 f 0000002482 65535 f 0000002483 65535 f 0000002484 65535 f 0000002485 65535 f 0000002486 65535 f 0000002487 65535 f 0000002488 65535 f 0000002489 65535 f 0000002490 65535 f 0000002491 65535 f 0000002492 65535 f 0000002493 65535 f 0000002494 65535 f 0000002495 65535 f 0000002496 65535 f 0000002497 65535 f 0000002498 65535 f 0000002499 65535 f 0000002500 65535 f 0000002501 65535 f 0000002502 65535 f 0000002503 65535 f 0000002504 65535 f 0000002505 65535 f 0000002506 65535 f 0000002507 65535 f 0000002508 65535 f 0000002509 65535 f 0000002510 65535 f 0000002511 65535 f 0000002512 65535 f 0000002513 65535 f 0000002514 65535 f 0000002515 65535 f 0000002516 65535 f 0000002517 65535 f 0000002518 65535 f 0000002519 65535 f 0000002520 65535 f 0000002521 65535 f 0000002522 65535 f 0000002523 65535 f 0000002524 65535 f 0000002525 65535 f 0000002526 65535 f 0000002527 65535 f 0000002528 65535 f 0000002529 65535 f 0000002530 65535 f 0000002531 65535 f 0000002532 65535 f 0000002533 65535 f 0000002534 65535 f 0000002535 65535 f 0000002536 65535 f 0000002537 65535 f 0000002538 65535 f 0000002539 65535 f 0000002540 65535 f 0000002541 65535 f 0000002542 65535 f 0000002543 65535 f 0000002544 65535 f 0000002545 65535 f 0000002546 65535 f 0000002547 65535 f 0000002548 65535 f 0000002549 65535 f 0000002550 65535 f 0000002551 65535 f 0000002552 65535 f 0000002553 65535 f 0000002554 65535 f 0000002555 65535 f 0000002556 65535 f 0000002557 65535 f 0000002558 65535 f 0000002559 65535 f 0000002560 65535 f 0000002561 65535 f 0000002562 65535 f 0000002563 65535 f 0000000000 65535 f 0000305932 00000 n 0000306163 00000 n 0000404910 00000 n 0000405480 00000 n 0000503190 00000 n 0000503915 00000 n 0000504384 00000 n 0000504784 00000 n 0000550334 00000 n 0000550782 00000 n 0000551157 00000 n 0000551580 00000 n 0000663616 00000 n 0000664099 00000 n 0000664468 00000 n 0000664938 00000 n 0000793712 00000 n 0000794306 00000 n 0000794639 00000 n 0000795066 00000 n 0000902648 00000 n 0000902950 00000 n 0000915263 00000 n 0000915308 00000 n 0000915337 00000 n 0000915614 00000 n 0001000032 00000 n 0001000061 00000 n 0001000090 00000 n 0001000275 00000 n 0001032896 00000 n 0001032979 00000 n 0001143095 00000 n 0001143535 00000 n 0001253379 00000 n 0001253664 00000 n 0001253885 00000 n 0001253914 00000 n 0001272873 00000 n 0001273174 00000 n 0001286423 00000 n 0001286468 00000 n 0001286497 00000 n 0001315398 00000 n trailer <<4460C18AC3D2E441870614156DAF8F03>] >> startxref 1320819 %%EOF xref 0 0 trailer <<4460C18AC3D2E441870614156DAF8F03>] /Prev 1320819/XRefStm 1315398>> startxref 1373143 %%EOFlcms2-2.5/doc/LittleCMS2.5 tutorial.pdf0000755002406300000240000575556412163060730017072 0ustar mariamausers%PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xUN@}G_*Z)m! &D"ԿM H왋gdge͗fgU/XdmUm7Ȯ!ۇ&Ṡ0P1ea("j\dPz_> njTͪ\gǕ&¯&:+U%~lZ(72oSprlft O&m[-1.90J픅mAq"꺀i\WwTgNE)H$9~'o u_Ϣ|9B/$feT^!RB)[ԘZEa=p1dWfӏ@;"|UhY"ahDB0A [D'- \~lI5Ѡ%B֏:L*8>eǿτ!D)t2N Sw7N QBX5/Qզޢ\qt:k,'FMشv27n>BQАulc(n/Zăګ@1:-,ޑ/^(aovM#te\AͰ4-dYVx -vKVxS^R솭p''ژp#S ϠQ: yH=,6p΃M OQxɷHec@:fER 'vQn Hur U:{(ץ> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj [ 15 0 R] endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> stream JFIFxExifMM*b.33`h(=d #` %*/4]8^<CLU9[Ra,gMm[t{*$ZekZW8 15 !P""B}  n!'T- 6 ) S cC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222.b" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( +&}7]!k%k $gx*4 V"|y)tbvIr0;8gYT H{i$`>%I5~>Ul=qc?|@uQiW-o`\E<,p$)E|_^x)T/Z:*8Kޤ((+̾'|Wolw\De}3=6Z ?M[hGTm,"e v=\)((((((((((((((((((((((((((((P]'ú kk$֍yW7ᆠ''>HFgYسsLPfxSĚyZ;88^[u,{WxF;?u/dBk|Us<KbK˶Է7=Gy?9~,xF ;PղAn;_?0?u৆\Kqz}lۓiBJ{~u >#x~>S̳;D(2s7]xnglHHswQ@q'ďĚM/u/k>3> յJ/< [j?hdMރgH68?A^c}e%s\Kq#1`ZFltW[[iPٳ Hb X2R|E jY?/R̶pщV9lp}\ii7=#iF3&jiPElgv <ƽᇏn<|u+;e{?Z_[WnP}?Jή֖5OPqܹ=)#pU-gx,ŴmsZV+/uMMSR-m2J+O%[;@p.]ҿ诇o|iFB~ '\T6]anZGQF$7=U~nZҬ;Dq"oPu ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( OSUmi(}}0{]6(b9B D6aQ\6>+o:ʷsa@krE 85{ͧNnu$EZ){Uصҵ((((((((((((((((((((((((()f8P2O|3L>.s$_e,p?,W8}kPI6F" $^"Gumf@<3N@O)rUg}N-㪯_ >JnO'}*{B3 /]Dx!y!tn-fq2u@Ş"EbK=F&8BH(᝭^9(C@>W^:_O ķl v'~UE>-U|`pMI{uocnl kqh@-ZV?.GZ((((((((((((((((((((((((()5_:l5GU_!_+WZhJ@ruWҺ%o<$M{(sWCfF׋-;]'d(#L1 T΋~oW[~*cEO`ƽW-sŚ>kkirg$|vsy&w+Jc^;N[߉V2KthX~Um~Okda4ۮ?1@59w+'R??Ӽ+/;Vq+H7zk=9Up3]ĉ2Fp,3_]a\dR@ @!AOiZJ7ad2=O^A]-Lech+ᦗB+fq|W]6k[,=_ח,+<uv q^n|%]{\]۩&>e{9iFPE{7o|A=BZ IA--WԚvCL7lH1Bk|' };(@zgIn =۴Fν.7M\ʑ@7 ݸ1@4]_ x_I' uGߕxw|CkoʲĶ:ۜk^/Dg#Θcn;8>~kකt^t˂}#HH|{mmзZP uQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE5j|TKf[e 5WZo BXVV~Ē3\x?rfx G" ?ƀ'п/O6,㠟Ƽo ֙GYr7s\cӵx} -1&y%%_|.g-Ͷ>kZoi INXS OmoD66RVbA~FnѾF^ '\Ҽ^bn<3Z-(z#y=7úq/c?ſJ|3?tVŢh>fhw]i>:֭o#)'$pHJ kMfX/pj%?,?߆{ɓC ?ݎ}j_HULnO=!A<#dR4d?ƺO[x7Ʋ[\:vkC ?^ :4idXB;^'>ptj[ 3Jךh$YPX9D`c?]d$Q:(3=MyW>9DcBu!C~t7m;E]^1{RXjz͔.cɯּSOjgjfv.=?5oXAϓ79JPj}q؅%ȼz Bt-FBSZ?w6:w?Er"bD)pm4yUEo:>6E~L?iNj<,t-vs -nz:\/sD|Sa ?ivtP)hfR9I#`Zi BN3Vk?c,WoGEW]ª}* dj5@#QEYb+{Rkb>BU~Ue6 i:uno 6o.?/G?Zɿ| rI&ϭu?e?Uqq*O.?/G;ֿMct96O*>1ոtˏQN;?HόfKh(}W]s_8r\C貛MfHֽĸUiڒj1qnF7/`Pt}Qeٕ,u>hh4RdRaQ@y6yw,'lk2Xdj>#|G5 <wJ-"O?Z-@yV3ZvcO ek˱fy, QkO/4GWt?<>T<\_ʼw<ϯ#:tDx;}5O.yqq*<Z_74GWtwj]PTyqq*??ֵ>oy࿈4tkȗ8l;o<{y )CWN\R}])Jqtf(4 * m>[%HU7?%V\|N>Utά D sniW<Gk>3xGfFվ*fO&k!F\I_? EE2V/1u=#MóM OfTR"2վKEzWלUZ\W?_A^qVγQ_~bQEQEs]\E]jԇT;w?]5 58;4oUUi;4o|5 m;QQk \[7JC Ğ-gFkV[RS排[5~#k:tڂ#O?Z2PCkЪYi<[[.<)4cf1ǖ:Wg>oXk7@,=`-<+ϩ բU$'v*՝Yݰ*H ( (8o>!B5v|%Fѿ~Q__T]RD5-Bu \:xMc [)H!_C'ҺQzM]dnݕxR`ZK]&Ũ?{ާW0T:RVSG/h87&QEzQ@Q@Q@Q@%5+ʼZ%&#*CO_38cKy|_3Z1}%[מE=vcO–>MvXQEQEQEQEQEQEQEQEQER3R@P2IK^w ԛ찐y??jxc{պq5YߧC- ׼~AEW9Q@Q@Q@Q@2xn;t&{@늺pu$T0%^{E/hͯx&z_W^ фq#+< PD;~S׻hKol⾆P~=|4ZxCX>h*C_sgT3:Mn˺9MeԞ]^E0+/{q^[klun }7W_:kh+|FPmchS"]O5 ( ( ( ( ( ( ( ( ( >u:Zm}콼*6HojD5Ƈba%)30aJk$+?\ ( ( (wc@I][ӣ87H54?&5?o1gV?z4q}۸J(Ը;zU$fTFf8U$ YI6A֠n$C5eK/(W@qקeS81Hz/A~!](TU.[ۨ8 OƳ%}ھx",~7袊s(((((((((o?q;FUW> ?#_GhJ(/c z/4^#oH#tW~8ε[NU:ld~WMGupETeWZ( ( (#p#?5 լHٿ5^>eqե~˅G ZDcv}>?vmЊKxϨ]u 2/VKeks#+1TW:#Z/scP߻#"q%loF?Լ1HY-+Ao,lb*ed99#\ƻ#UP(((_"i3~C5ހL]L--ñ>q_׼ 9 ]Z_3xQ'__kE⟦Q@Q@ﮖK8fۭAC'+*ιnLȀ`|W3[ӡ&Vx$+S8oo W-Wò m֏+ؙy;= _UA+>4ᥣ=ԑc|70@"m"TnK8ifhFY܀&Ƥ]ɍĘ u-BWBz:Fmy-a>Ȯ`@PA)9;ݓP-P _tm.%O̎z6»xJOuXI5f|EOڇ͖Nq{UpC {vgCOת꿮(D((( è#޴4kF~)9{wة+ex\lmZ:}/7$REucrX?zWÓ@xaчQ^ԗq_&#WNy|oV7 G%|7jklف5)D#!/Riec7OyMO.Y|3<,0q\q \^ҭuXˋb;`zc֍y?O\Kִ jv˴,Gnx>jꚜg{{ r61U$h,k$n2 uQEq?> C=;#Ϻ dc^{ײf 7 m}j(r0UϵpZ>-6qq 6<p OJ~ k%NZݥX-ـ ?^P[mk pڑơUG5QEQEQEQEUԣ3i1/;Ō&`k>ᯑ:OEǓz+EC35_,EQ@Q@gō{Q1օtNYˋPÒn?TiAЀOj|l.GҕHc/Eu,}_# `[r_5FWSɁs ϻ^o/s;.\Xc ԝ\_15qi7=ڃ+ Ի]2#|hR>S{W|[eB)'#CYԅ%VSV~QMFܠӫ_MlcY#|i&5oE_lzw8;~ |/4G7We^ҟ2?xM9~.%#}}jTj+M9>_dG1&I$rvZt_ՐѬUuEӱz2Z~xkǫZ1W7GHnQWH: ⿊(>D((%Fѿ~7zҿ@ >?X49YP*J)xg{.$OAq?jt|W mVHe O:tY],L.~av|/ 0۬%lcǷֽD6!Eoռ[ɋF~ӲC42WN# Wx:dBG#k˵ ϧL|z~ux. Geh#P]b]iy:84` W66<%.a(-Q]Q@Q@E3I )< $GAaHˍGu_ËwL6ŒԱ ħڿjyzkZNn؏߭t~+k&#vrG<֟ \xmڰug>Z50+]`g=)>YǣIc:}Kq) J9ְ_;xv[1/­$9@H1^5#}ρ=gH}+z,#QExoVcer]MPG8Ը >W\zu5cFw *{ d"[4%~rGP _s\SG d1wwƽhW`"Li9Qig |}ᏮsG9|QZ=kv/n @Ҁ:( ( ( (TtoHi+>.xQK+3yl|lu,:3qSo,=h֎i'EQo~dJ$Њ_;8I?dׅzQM5p*M((((f𗍬PJܷu8?MUuEԌ=|=_eQ>; *kZU{Vi7ksl0 ;֍xryR!½[r+?$if/jY@_C)m¿s͖^ _j_EbV _E[+?RңR kܜ#8]3SHM]3xRMs}o;s3ڽX#Vd;_ Ew`1M$I$C *ATQs?C㸯+珑 ( (8oCwo_|(~ B5v00:>ѪiS_7_A_[ZưtRLc/zFXt׻Zilƚ6}+|bC\*-''גd%]2+󜊞`=ڋ'g5:'ȶ$Ie 5}'Sk xľpmȺZ,u+4o×1wtαy~'.ZkϧtJ[5Aw $ "7Uam'GnrV9+ȯ.8?3.q;ii '~4SxIjmlO.&9lzrtd,u?ajoaT+EWQEQEQE5f)('q՗KuK֔yv:G㯊t6I ynNK qU~[6fo?w_~\Et"[:'3`{Rwgn|4e=E[/-, {h|euZ|Wm$c(>3:đbmwn*pUr}y+N@ZEPEPU!BGX|+OoD*5Fǡd*OFWҞ$,&%) |_xR|,ҿL^\87\_WvMEG \DѺRWZ3xI)E0((((((B^8Է"A98?4R9E|Y!?x=~ x_%˟X"PO$ +UG+7qoE!EPEP_?W_| C4$_UII{@/ ?Ÿ+RVR׼}PQ@7A@U*_ @GA_7TWREȅQ@Q@77zҾqo?q;FUWG~G_C~F7TW<w}O_%Zۨy5ߴFCHo7s=Usn? wS¿7yl(9nI0"QS袔a|*QEPQ@Q@Wc刐e;@قf8N~n'F:3|14:ZQz/4 iPP OֻFu)Q AP1\C|5-/mn-tjÜӯsDaHISq_dq]MfW+pPEPEPEPEP||G/WECmC)FHQ̌vW~ ƹ۹NZ : {q_Mi0s閏}+t+vsհ[pP ֤gѮdm`h8vAp@8P8P: x9QEQEQEP\9m$rB#Yr`_/]uxIZ7ukA#7JַN9M+os^c⏇6c5vp0zhU{nw{wg˱2A( Mf-R4@1y05#}UU_z#bʋZ{4gդ,*5#Y0WV/tT?lHom[G74αR+TzF1I"|Ʉ/ix㖹w,2[FU3R3pj1ДӌUGfSRWm}FY^}C>~{R?ex{z\ߣG,Kh'}?_q\,Khq~PϷ^7}K6I"^&,__Y^ְ9kw3%H|hy}JTFڟ]Øj)MU_C-/ҥ/ҥd0(h/hʢIB/$Xzf gmq=ׁapqn|a+ו?e+_o\,Khq~xPϷ1R?ex{z\ߣG,Kh'}?_q\,Khq~PϷ^7}K*7J?Ѝ}Ǣ+毇Q5֯ a@H})ǘWMR}^.4`/#ƚ$?I3 3ǟ=mK.׋j_doݱQ%_?¾'*x*Jz.Ng9EI>i|*n2:ZEV~i%гE@p7R =$SץOTOѢZ>Mё+u(LQAuXƇ8 EDYd5w>+eyV+',$"\OOo(N+<E5ğ~-\ϻ cE97IVuh_^pĶk|\ز3GQ4h"_q_ uk;t$3u/#ңZ#@qy>zρ ҦK}iG hLgq{ 6{}w-d+6c[4sHT,p3}t55?^]S5̥],T\q\TN8UutQEQEQ]%w@YwbW?r/M̓p"Q,v-CX~i^ys>? Ϭ>>? O?Wuv@>-tK0)Q@Q@Ŝw$0y^ZB95Y%ExG #}ctQEx_ #}ctQEx_ #}ctQEyo$lfR z ҥKHA=N0°<3]%7 ~_x 8 Ĭ=s^TTmmQ@=]7rKXDOL*ǟᝯ8uu},l"n('i<-\jq=nTGV4W)Rի/F/ op>{wl-d헁J`Gn?LW&n*z\ "WacY?J C AW^E tJl( c{}4ooZ* ,+LJP-RZRI=1zqW(iV]_\$1F%':+Um{irƄI˞l.0ClVo&` t=? 8/Gzm^;!$#yQ.1a|Eӡ v AWwY,QoǞӼ;k__Hsp<cÞ~6k{tj~ܜk[s$CHKCeo%E~&ՠS[(Tamr *3־wmtInR,|R;ܚ5EH3˷'P ZcP7S[Tuy@VH3—]xGGI$&` ؜VEsn\F"tuʰ"i kh0QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQER8sG^fn&(fsb=3{wu=VSIn-ks0XϨPpI@}}k[*/hQd%9`eDUyE*s0vAV%"P2]N?J kR1?,W5(#em,w yin隇똬ѢM>}?>qGnn%.yaI5}vш1h\K Ei@[]E5ģ|gWPYͅgnCLFF9==J((((((((((((((((((((((((((((((((((+'ѴoMu݆KXMrfJmN}iu ~ŎUy7@;;tuDgvc-$ZTQ@ 6.cv9ǦiQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 23 0 R 26 0 R 28 0 R 30 0 R 32 0 R 33 0 R 35 0 R 36 0 R 37 0 R 39 0 R 41 0 R 43 0 R 44 0 R 47 0 R 48 0 R 51 0 R 52 0 R 53 0 R 54 0 R 56 0 R 58 0 R 59 0 R 60 0 R 63 0 R 66 0 R 68 0 R 73 0 R 76 0 R 79 0 R] /MediaBox[ 0 0 612 792] /Contents 20 0 R/Group<>/Tabs/S/StructParents 1>> endobj 20 0 obj <> stream x[o;)EJ{ANO}ൕQx %ØsU@ ?OÙ!W~:jyqwsqsnO?-b7ˋe!m QT(SVMQkS[ܮ./~ݤ;^ ֢A;#mޖM]4Ԧu]^~~S5}Ƶlk]߿+=7?-pߓ8ÜҥFv8)OJIzy1J5pk-h-u6jܜ6{7im柯ddAu0# Y :G!jq0Uf8R Z!u,7bX [Uq&(D5 jl50M0*UZ[0V 6f l 'u1Jiё,X0{!D><A/{tŪsn_ii׸ëcYss)Oofw4e&-3fO "6Mq0#S)SLŽ,)<|Nsg+^6߱i¤0*-7V<҅Xz%E[ p{eZ,Ikj]B4й c|9ĝrGyoFtgcY%HБJvHƎIx ܅KCe6]/>Z|r ۨq0OLYLM1r( E)6Xiɴ1IoAP0&umDduq9 1Cu9sAf<, eCj8I$%퐌%>LǏDPq^<>wﺘ6쮱F`) ^SђLGѦy*B֟Xd*EFXȺ$qFK:d]o~vxj1]o۸W$=mLW#bA4fJV0־>Cj%JKcv 4_'Ԩ/ɻGsw:9 [6ܙ͸z&95I玬VwC2wL[.` ^O_k1{qAuB _ I5[%hڗR6cL ؞ c ,JZYY'KPKvHcx P;Ǜ ř;;΋\nuvz[`xgDHۜg" cIDrH g"xFZ1J;F+5Ijx BxR#ZKnU^,Q?}n[~Sڋ`״]1}$N欉{&/ߠrL,cÑc,&k-r?v GGɋt]RPw=h3GT?/7_>ҤF(R=3~d}τMsH ~pr}"Ix K/c ma*>g/^ƱiII KWUae$D[240J<DžNc'h0A2㩠P<_@?0xQBvjۭv j5=ilwN< V,RnCsFSua5ނ wlmNh&|br1nׂ+7$#0XZm[9zl PV0PO)mRW%+(pDT FJ(Ym_g?u7Tv$ǂ?_:XCQPjҞ PNb'Hye.v|[:: endstream endobj 21 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <>/F 4/Dest[ 25 0 R/XYZ 82 698 0] /StructParent 59>> endobj 24 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 83 0 R 85 0 R 88 0 R 89 0 R 91 0 R 93 0 R 94 0 R 96 0 R 98 0 R 99 0 R 100 0 R 102 0 R 105 0 R 107 0 R 109 0 R 110 0 R 111 0 R 113 0 R 114 0 R 115 0 R 117 0 R 119 0 R 120 0 R 123 0 R 126 0 R 130 0 R 131 0 R 132 0 R 133 0 R 135 0 R 137 0 R] /MediaBox[ 0 0 612 792] /Contents 81 0 R/Group<>/Tabs/S/StructParents 2>> endobj 25 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 139 0 R/Group<>/Tabs/S/StructParents 3>> endobj 26 0 obj <>/F 4/Dest[ 27 0 R/XYZ 82 721 0] /StructParent 60>> endobj 27 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 152 0 R/Group<>/Tabs/S/StructParents 4>> endobj 28 0 obj <>/F 4/Dest[ 29 0 R/XYZ 82 721 0] /StructParent 61>> endobj 29 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 160 0 R/Group<>/Tabs/S/StructParents 5>> endobj 30 0 obj <>/F 4/Dest[ 31 0 R/XYZ 82 664 0] /StructParent 62>> endobj 31 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 166 0 R/Group<>/Tabs/S/StructParents 6>> endobj 32 0 obj <>/F 4/Dest[ 31 0 R/XYZ 82 563 0] /StructParent 63>> endobj 33 0 obj <>/F 4/Dest[ 34 0 R/XYZ 82 721 0] /StructParent 64>> endobj 34 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 174 0 R/Group<>/Tabs/S/StructParents 7>> endobj 35 0 obj <>/F 4/Dest[ 34 0 R/XYZ 82 490 0] /StructParent 65>> endobj 36 0 obj <>/F 4/Dest[ 34 0 R/XYZ 82 336 0] /StructParent 66>> endobj 37 0 obj <>/F 4/Dest[ 38 0 R/XYZ 82 721 0] /StructParent 67>> endobj 38 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 175 0 R/Group<>/Tabs/S/StructParents 8>> endobj 39 0 obj <>/F 4/Dest[ 40 0 R/XYZ 82 721 0] /StructParent 68>> endobj 40 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 176 0 R/Group<>/Tabs/S/StructParents 9>> endobj 41 0 obj <>/F 4/Dest[ 42 0 R/XYZ 82 721 0] /StructParent 69>> endobj 42 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 179 0 R/Group<>/Tabs/S/StructParents 10>> endobj 43 0 obj <>/F 4/Dest[ 42 0 R/XYZ 82 288 0] /StructParent 70>> endobj 44 0 obj <>/F 4/Dest[ 46 0 R/XYZ 82 721 0] /StructParent 71>> endobj 45 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 180 0 R/Group<>/Tabs/S/StructParents 11>> endobj 46 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 181 0 R/Group<>/Tabs/S/StructParents 12>> endobj 47 0 obj <>/F 4/Dest[ 46 0 R/XYZ 82 483 0] /StructParent 72>> endobj 48 0 obj <>/F 4/Dest[ 50 0 R/XYZ 82 721 0] /StructParent 73>> endobj 49 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 182 0 R/Group<>/Tabs/S/StructParents 13>> endobj 50 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 183 0 R/Group<>/Tabs/S/StructParents 14>> endobj 51 0 obj <>/F 4/Dest[ 50 0 R/XYZ 82 576 0] /StructParent 74>> endobj 52 0 obj <>/F 4/Dest[ 50 0 R/XYZ 82 365 0] /StructParent 75>> endobj 53 0 obj <>/F 4/Dest[ 50 0 R/XYZ 82 195 0] /StructParent 76>> endobj 54 0 obj <>/F 4/Dest[ 55 0 R/XYZ 82 721 0] /StructParent 77>> endobj 55 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 184 0 R/Group<>/Tabs/S/StructParents 15>> endobj 56 0 obj <>/F 4/Dest[ 57 0 R/XYZ 82 721 0] /StructParent 78>> endobj 57 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 185 0 R/Group<>/Tabs/S/StructParents 16>> endobj 58 0 obj <>/F 4/Dest[ 57 0 R/XYZ 82 649 0] /StructParent 79>> endobj 59 0 obj <>/F 4/Dest[ 57 0 R/XYZ 82 276 0] /StructParent 80>> endobj 60 0 obj <>/F 4/Dest[ 62 0 R/XYZ 82 721 0] /StructParent 81>> endobj 61 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 186 0 R/Group<>/Tabs/S/StructParents 17>> endobj 62 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 187 0 R/Group<>/Tabs/S/StructParents 18>> endobj 63 0 obj <>/F 4/Dest[ 65 0 R/XYZ 82 721 0] /StructParent 82>> endobj 64 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 189 0 R/Group<>/Tabs/S/StructParents 19>> endobj 65 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 190 0 R/Group<>/Tabs/S/StructParents 20>> endobj 66 0 obj <>/F 4/Dest[ 67 0 R/XYZ 82 595 0] /StructParent 83>> endobj 67 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 191 0 R/Group<>/Tabs/S/StructParents 21>> endobj 68 0 obj <>/F 4/Dest[ 72 0 R/XYZ 82 721 0] /StructParent 84>> endobj 69 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 192 0 R/Group<>/Tabs/S/StructParents 22>> endobj 70 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 195 0 R/Group<>/Tabs/S/StructParents 23>> endobj 71 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 196 0 R/Group<>/Tabs/S/StructParents 24>> endobj 72 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 197 0 R/Group<>/Tabs/S/StructParents 25>> endobj 73 0 obj <>/F 4/Dest[ 75 0 R/XYZ 82 721 0] /StructParent 85>> endobj 74 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 199 0 R/Group<>/Tabs/S/StructParents 26>> endobj 75 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 200 0 R/Group<>/Tabs/S/StructParents 27>> endobj 76 0 obj <>/F 4/Dest[ 78 0 R/XYZ 82 721 0] /StructParent 86>> endobj 77 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 212 0 R/Group<>/Tabs/S/StructParents 28>> endobj 78 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 216 0 R 218 0 R] /MediaBox[ 0 0 612 792] /Contents 213 0 R/Group<>/Tabs/S/StructParents 29>> endobj 79 0 obj <>/F 4/Dest[ 80 0 R/XYZ 82 721 0] /StructParent 87>> endobj 80 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 220 0 R/Group<>/Tabs/S/StructParents 30>> endobj 81 0 obj <> stream xQo8;^ (,H\o { >hm9α}~Pr<1rh៣OC9M׷zѳzY׏׏v} {{GxT%{\]^p9+e2=>keƞ^./R|;DoT !O}*7t|gnn|_٢$ ;2sL~՛Gjt ,xun~ Ms!ۮؖ*ɑ%J4U:vϳ?L2kJyfbAIpdeJԩZ98\&yi')׹5tx]rGn3ӻ^&U&C3g=kYYmW٬bφZeUn^~|YCQ\1HNHph EG;O9*W)kݿkwt7Y*Kqc'уLT$Ћ]IѬ`VX+j'H[Ҥ-Eg^6+1تmK_*:kj,)?p4oa2ۃɼ Ј!%fI!R4o(Xa7IVxL|pC:Ӱm,zv|+D<4JSERJxD3yV("9'w@F"Rp1zWâg ip-dEo,ʄ[r~42Ü*hLeN*q%@h GTN\,$@v=1(4jɋG ^Ȥ"8 Tr{RB/REi!GR$8AtZ'Q~8R w{2M懒9e T*"(R$L%R4(aTʒ(ThT+A|_6v6KiS3VHԑJSoP%LƒdWNmuL刈"%Tj3R4(Paxxu U gYdc,n;X5^97_'u[@yJ㯢3F*Sɱ<ʚ,p!%SRaR4p(ZaeDB{q"Sglc>ntBԙl}#&EK4),8eUm" bH *^1? 8Q 'Q8ߠ8YHKݿ^ :dM7ͺ1*)6EUfMLQ`.EL%HpXÔH#!D NE%N5P2Wcמ5k8U9\a34bP/GPJcl+TF%GTQ;$pUoLiR{ xԶ@6uz SԈge)%60[NF.rMiPo4=!^ЄΜS#ۘՖ SNcH GaJ4t(\aDA{?"R"r\ at+5yKf_y iؕNgCg++Z^l`d b5HdUiy<4MJ+qe=Tt;-))@y+Q{8yyi6|C٬wM WC )kFF:-–+qcH4q؂ Ɏ(Uhk\p1Ҧ]o͉`z]`Ջ-a^ڭITϠ.]-}`a"u3(ra*F\U )fСr"ESBFLQ8"/l6_e4m_^ظ2aY/litg v{f7:]nnVS"{S8=f⧋ơOH9c"&?K @ /h/2Դ8KlWk6 H`lֿRjL^zĦmf,}e*P CZ) ><Gb X=pJ;!u_60W̬{nHzCvkܙCAdPra*á` P;Hq̂#LN]Ɛ?cl3K]?.R6MGńC3 6bTLVRcBM(Vx"lUDiB{$U׻ۛ4ɓ+π7H )-xXY"(U Y!a8"2%i$r~2Xw~2{sWw/;7ku᠄}ax2ҙ̸sJk}=:kuR<|ktsZ!5CM'sx@0A큓N&Er C5wÐmY.LsnX a1Kd 2{(E08,j:sH?~P?@?cR}cegr3QҺr:g:hsOSvD- )OMReQPy9Zw},a> endobj 83 0 obj <>/F 4/Dest[ 84 0 R/XYZ 82 721 0] /StructParent 90>> endobj 84 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 221 0 R/Group<>/Tabs/S/StructParents 31>> endobj 85 0 obj <>/F 4/Dest[ 87 0 R/XYZ 82 721 0] /StructParent 91>> endobj 86 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 222 0 R/Group<>/Tabs/S/StructParents 32>> endobj 87 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 223 0 R/Group<>/Tabs/S/StructParents 33>> endobj 88 0 obj <>/F 4/Dest[ 87 0 R/XYZ 82 702 0] /StructParent 92>> endobj 89 0 obj <>/F 4/Dest[ 90 0 R/XYZ 82 436 0] /StructParent 93>> endobj 90 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 224 0 R/Group<>/Tabs/S/StructParents 34>> endobj 91 0 obj <>/F 4/Dest[ 92 0 R/XYZ 82 721 0] /StructParent 94>> endobj 92 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 230 0 R/Group<>/Tabs/S/StructParents 35>> endobj 93 0 obj <>/F 4/Dest[ 92 0 R/XYZ 82 560 0] /StructParent 95>> endobj 94 0 obj <>/F 4/Dest[ 95 0 R/XYZ 82 721 0] /StructParent 96>> endobj 95 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 231 0 R/Group<>/Tabs/S/StructParents 36>> endobj 96 0 obj <>/F 4/Dest[ 97 0 R/XYZ 82 721 0] /StructParent 97>> endobj 97 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 237 0 R/Group<>/Tabs/S/StructParents 37>> endobj 98 0 obj <>/F 4/Dest[ 97 0 R/XYZ 82 432 0] /StructParent 98>> endobj 99 0 obj <>/F 4/Dest[ 97 0 R/XYZ 82 249 0] /StructParent 99>> endobj 100 0 obj <>/F 4/Dest[ 101 0 R/XYZ 82 695 0] /StructParent 100>> endobj 101 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 238 0 R/Group<>/Tabs/S/StructParents 38>> endobj 102 0 obj <>/F 4/Dest[ 104 0 R/XYZ 82 721 0] /StructParent 101>> endobj 103 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 246 0 R/Group<>/Tabs/S/StructParents 39>> endobj 104 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 247 0 R/Group<>/Tabs/S/StructParents 40>> endobj 105 0 obj <>/F 4/Dest[ 106 0 R/XYZ 82 229 0] /StructParent 102>> endobj 106 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 248 0 R/Group<>/Tabs/S/StructParents 41>> endobj 107 0 obj <>/F 4/Dest[ 108 0 R/XYZ 82 721 0] /StructParent 103>> endobj 108 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 249 0 R/Group<>/Tabs/S/StructParents 42>> endobj 109 0 obj <>/F 4/Dest[ 108 0 R/XYZ 82 607 0] /StructParent 104>> endobj 110 0 obj <>/F 4/Dest[ 108 0 R/XYZ 82 450 0] /StructParent 105>> endobj 111 0 obj <>/F 4/Dest[ 112 0 R/XYZ 82 721 0] /StructParent 106>> endobj 112 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 250 0 R/Group<>/Tabs/S/StructParents 43>> endobj 113 0 obj <>/F 4/Dest[ 112 0 R/XYZ 88 604 0] /StructParent 107>> endobj 114 0 obj <>/F 4/Dest[ 112 0 R/XYZ 82 426 0] /StructParent 108>> endobj 115 0 obj <>/F 4/Dest[ 116 0 R/XYZ 82 721 0] /StructParent 109>> endobj 116 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 251 0 R/Group<>/Tabs/S/StructParents 44>> endobj 117 0 obj <>/F 4/Dest[ 118 0 R/XYZ 82 721 0] /StructParent 110>> endobj 118 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 253 0 R/Group<>/Tabs/S/StructParents 45>> endobj 119 0 obj <>/F 4/Dest[ 118 0 R/XYZ 82 380 0] /StructParent 111>> endobj 120 0 obj <>/F 4/Dest[ 122 0 R/XYZ 82 721 0] /StructParent 112>> endobj 121 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 254 0 R/Group<>/Tabs/S/StructParents 46>> endobj 122 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 260 0 R/Group<>/Tabs/S/StructParents 47>> endobj 123 0 obj <>/F 4/Dest[ 125 0 R/XYZ 82 721 0] /StructParent 113>> endobj 124 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 261 0 R/Group<>/Tabs/S/StructParents 48>> endobj 125 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 263 0 R 264 0 R 265 0 R] /MediaBox[ 0 0 612 792] /Contents 262 0 R/Group<>/Tabs/S/StructParents 49>> endobj 126 0 obj <>/F 4/Dest[ 129 0 R/XYZ 82 721 0] /StructParent 114>> endobj 127 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 267 0 R/Group<>/Tabs/S/StructParents 50>> endobj 128 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 268 0 R/Group<>/Tabs/S/StructParents 51>> endobj 129 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 269 0 R/Group<>/Tabs/S/StructParents 52>> endobj 130 0 obj <>/F 4/Dest[ 129 0 R/XYZ 82 652 0] /StructParent 115>> endobj 131 0 obj <>/F 4/Dest[ 129 0 R/XYZ 82 566 0] /StructParent 116>> endobj 132 0 obj <>/F 4/Dest[ 129 0 R/XYZ 82 419 0] /StructParent 117>> endobj 133 0 obj <>/F 4/Dest[ 134 0 R/XYZ 82 558 0] /StructParent 118>> endobj 134 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 272 0 R/Group<>/Tabs/S/StructParents 53>> endobj 135 0 obj <>/F 4/Dest[ 136 0 R/XYZ 82 721 0] /StructParent 119>> endobj 136 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 273 0 R/Group<>/Tabs/S/StructParents 54>> endobj 137 0 obj <>/F 4/Dest[ 138 0 R/XYZ 82 721 0] /StructParent 120>> endobj 138 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 283 0 R/Group<>/Tabs/S/StructParents 55>> endobj 139 0 obj <> stream xZ[o~7b{8s"IbAs(CQ*I3ĥ4yٝ7!I͛Il|o_͟dIoʷowgλ0ߋ#gp~3'R9T wV@=pU/g]wg{=JTx $^:&<*;?{xu~͜2D*+ϨZ=bEe;zŽX~ cZ)S%?wL_k@κqdgl a -cQt:̑{[6fTn\HhA~v0ŀ̲}a秬q/6Gb!6t u3-BdO[GX"nja^轁^V=i<o-+: Rm61ëw? 5E`A*6%2Yel5n2]{4p<$y+Jv w&e2+EY%GXv]4vS 5 `z(j*Ʊ`l}{CMF@S# dNGe6n}!W3|:B?V4jϦB}`Zd^`ؤKp\ݽXh\x\KP6t3IfC2G/ޫ8dԲ,Z'ecnz4mc017iQ-z(o0lҗHzOӁŭ`o;ӊ= J8#C48v9]UȖV&md!6B.02i靈z6QtuC0>ť7VJ"fp'K懴{Ki}Ƴ{L)f/ڑY4~tȈuԯu>:u 2S9>eEiQs9(;;=&$EYה(v <^Z:EALFa@( p6r1Wo„PY#?ma 1m87i ="Kg@l /3k 8|\#C q.4+<~b? Zt2dq|_ge>]SfVvn* =RɆڧͦPQkzL- vcZ]t#ewqɶi`|PRJXZ .lFG($4Bݼ*$pÓ5*Usiil+$)O5GGZ!w5gD]kIwuH DVFV #wlv۷&!e[rxʺ? )=C(S fodqEX['"fŘRkЧݛh皠p~XP3p?,2EBA k)C kzqk `+%xj,XQ8ώc{N{bpCE`MS3F+ ]F L֬5Y'S>\Yr@7{U.+{Bʶ 3uBfS͚f =2z 4ĥ¹#~|&L'Wq@E 6gsE(+ѲF'αWG'oyF4;MIu1{NREAUk"5Qv '#ڛH`Í L"`n̩TH[[ɥ}aģ-c/ [E &QHje[?`7O[KbrOl“4U6‚Sӯ/g1/> L qtoM8^}xsq|md~~iَbU_8]X[C.6TޣŠ3O]x̱b0vy [%Y;P_G:ad~#4兔XOSž'qoׯ\x5|W6gؠF&qlkSe9gx5v.k_=W./_RzFa[dBAsU]Eɏ}(5=?8躳Ȗb/Gt]2햇6[; !P\6WUBkU ~Kj7h }%+JXֶ:1Tr@??՚t)Ʈ}7>/;a,^HM:Kڎ?'$žфلqOa,u7([¾°sѢfWcl?Yg3@Fŵ>:&SxtC]|#.v ](ҘRg9u¸x߶E<%=C`D@tP&FlHPyؕ)vB[5zrts5@X &bi Qq._Ōsǎ0"vMϡ1 f­8Dzl0@k5hs/$ Yݜ4M8L{SP +Xw&A\Jwfϧi.A·SdL,l Z ghVg-que/c)wh?H:l4A} 8(İ'?w=z8H qR  {0'z_VؕiC/R\IafWd1;7Ω/*Yt<">1uDGD] endstream endobj 140 0 obj <> endobj 141 0 obj <> endobj 142 0 obj [ 143 0 R] endobj 143 0 obj <> endobj 144 0 obj <> endobj 145 0 obj <> endobj 146 0 obj <> endobj 147 0 obj <> endobj 148 0 obj <> endobj 149 0 obj <> endobj 150 0 obj <> stream x\ |MRҖ*j멶Ox*55|ku>UU57UEUbE-VU_7B?nJ34C6nz07SYp(H,яFFLdtz)FPo s3i7b`0̼Lƍa0T5OBWjTTm)1>-ȏ~a^1{6| O nùK/غpA_LS'bMZqmt.Y!3?o6fsMb!dBf%޲cܧO:xˀm@4NW ,Bmаb~:9qtX"6 !7ZX˞Y(Y^? 36oۍ'0 mA4AT'BNـX{q@C!FcQ9؜x|m.AoMQ 4Ll1,U46b* þz]/  $;!52Q7 3|Y x&b!y"2y`wvbO M8h@dat2ס];J4RBH6XoV6L7틎Ć|D_>1MI2&.hP+ HA%dHCtOI@,ѯv0v[WEdvag.v3 7{rx^~#_e?m!t]-{#lMMV,m*ozEO8wJF@sۨl2^NAS)$xNHb 9@!c%.tV"IuحN Xb]FTb|4hԵKU')ba?wծnks]KS2jv"K]xLA4TO"~"ĒQ:dy:Q xbcg/"*Ů]ByIHs|DjWvgXU݄,QC܈Moda#H2`T-흢O>' OV:5+ixj\db UdgbQ;f8JEcKg0ڸQ5e0` jbd,I.Tx7bqgB +O;-d57P&-Sb*}UlRiqPnc^ ZZBmɺxDu3P?dZ,F3EB6ku s+۹ a:깵jMwnF<Laؑ@}bDmAՉDd G1"tѯG-b> |+vW+A [UR @qcc-3=u<_Y+_sv | ,pbmF wrj:L Z}&ʶF%j&~~GlŁmaϘVbR ƐEp^pxۍa j81Z41{J´sf=NN39^PO^v34l2_РAfk6}ZhZWѡ= k=P\z}'ktzvkNQvևb_>1cUMd8DbU {, MecUSEb.]TrTmƑ2x|RN[hgHu~6+IK y|Kqq#^{W/X)4ZNoB5nO/wf fnT컃|d,FS%si[8"xj|9uVzͥ@U|V= H^+Wtwd"=rX GK :D~ϤastFS%^!xZ]o9 ?%cxɋ=c^bڝIa^}b3 jvvrOf[/fӛ9218zՠ EzIvz™GbБZL[l kcEplQv.^¦,{#HA {)IEZV1TˌlɎ;7-ٺj$u52mPQ_X8B_/eoбøApۭ>Ж詳(6cܢbآſL"*ѳٴe[EAyZ*ꮐc!f,;9bwvŶ\DkkѧjF,~L{4ka-w8D]Ԩ8W|Z~~lb^c箽ÊX8ybF5Avع+J>uݻcB\_[T._rRg􍈱`Qٜ^A "q\Pk4t`_>eE~`o٨~ unvE`|BS^8yjo[mY2N4l0j`F4qLK͂kuׄoIčZ==,\c?HQIx?qԊgOJJ*d#,t.}-Qw7; }|}jh4h9P*lUOrL 8hp/>ŭeݫb>BjbxDjzZjzʜ9V٘>cssr kEkW\hk7j:jnA_~vF3Ku[!lr~eySȫ EY4?|sٓ&g)%W8}""">U9ŤDoa$Wc Kzc;z#|6{-UN^rhkV7xZ֨w-4оOn;wť/;{O%KVU8bT!/O+[ jVSRl'bOV Z+֔0Cγ5Ga]?vEp_lzGs_uܛ I`RIˏbllaɅw.T, k/VѴqTW߉O'RM1Z`ExU)X@qn?! "n5@G_'ur^_ِވ5wqźxiUs׭n6I٣ǀJ{6nMۦM*y֭[lTg: Ǽx꽎,/Fh7w{ hͤ$!{&I'D(0Ц!ރ# [/in=W_ ܯʫIB}݈W{Al8+;+og0L2cM1lai>|XѼԩ:Eo0A"WY4oc 'm%H<\S<D& u3^xRta΂EvFG~+`Za]T-kO|P>:!ѳRwE-ҳxEh[c;q<c0#UyںjDNѶmr}ڴFa.uU?XKA3vl2j6PAh,us<sƌc_/ajVVH#'x!t4`lYTd[!zQd&V\4i}ɃYJPVоL6 w~&v"a%{jQ~AŚDiİ{!=ldfϙ&%ᗃb,J-V`3A@ZQlX!Ø7U"b6jå>h_,XX3u<ԴJ6'ݍ\OI޽+FUk n<>%X<0 oǏVR$NSIڲ   jG#6C[ ,(D@&)1ou@#- ֋-8PEfx5EZsq%x#S$դ?? koV8Zd8#t<*K=|{* sbHoOa ؔ כJK`7AxDDEoSgb٢TyM"6uEd)Μ>q_K$*B LqۅaN<1  LzE #Dz> bQ!h$1s\xAx\y(k\fܹ ڏ q%~ˍ YeOnKbSO˂%Qoiu;ٳD\s@XOz$URiۈ*(]EP&8~O>zL$=: B;c$upt{㑑0/MdEsO11O=,ո{1jH1^c>0aG{M3Q1f1t7ȵO{wЫs羽z psL;c[~9̖ruE/>-"E#! |=ӶmO?|-[w>ԩg]~6Eٙi iWFEEo?w'u+`]ǂlfz^&1Ma(1ڸ >B~Hpp 5㒽"5UMAIzjvRBzZJ1F^Pb/شeQc2YdٜZ~G8_V.Fj9mAD7gWnp޻5aOYwr-ԦcLHL#fŗ{}6NNmc- ?t%`3VJwxZg̅_-|50J #&0ĥGAx z!tȋzpjRUZ=jlV_N> cjnenEe>h` ټy#99_}xOѥSabQV#Sy(x/8/Fϛ.y۴q;6{,wz[=\56x«ݣ_c{WgbO״qpϦ9}N3XOmh㊚6k2 _]y=c۝ߎ Qei0_2ք+r.r:?övm߱RܸRtvQJ^f*z~Z7[vȏ,-T@47lhmt=QZ˖ڹhPlBȐ  Wg&H)꒐ƲSbz<~|͈-n]AAMv~aiAO!XHJQglRO<_TiUq[ WT%jopJ\ "ܗ->x @ 33ӮL"^1j=10 dɢJ}#'ST ryË;9%BЅ޺~yXcАQw2ead KY=(ĝ7H6r^ 5%faHFqӦn߾ǽޚ5ysYt^Ld->fBP>5\Zb>H撪UDB ۠K_7e=a / `Km>8w)ЖX nRky}>|u"ҽTj9}:u\y_- 2tV m3j˿!N<( Fy VaBò3'cJ DM-I[N:L/P$@q\y^S+j_2QTbc&d 4-j*ԃ <_Mvn"T' Əgx.G tA@t"sz}QhѾh}IU?2ڣNYѣcMwؽ^UZhĔVT1lޠhb]8?sC-bA EjZN>sx^ߢulמh.!] Õn!x߽&|Mk5Di-Ş6?,l^c>19CgVlcO@GysQ>b\zujoF/G×iK+Qp0:CZtXΫҊ2K ԛEV1,~|toHŝ11 zYm Rnj9D.W,22eҢx z0xUK@P Y:4L#ҡSNg;m:Kzk0PSPiuDo+]4c+Vu0V\M'ʵ;LXoq['?vQ^$K֙6ANՈ:mNZJL^ȯj僞;ɏѣ?F2]n#,v/)Vظ'Vkm"(PN>R$-z}4,mܸe5{g=v$kZ*ISg;H\8q3d CG K#FBό3\R\B?gI-.]s;F'R cu #[[/El}F~jWDq9?TpՒIKkFKI~["z=zj9B4Xْ[jiծšM1ׯ]vuBzUaU-+Aw | ?Hj->o4=aG[r*tkcs8=W:Jt [iEb7lJig~80 ɳmۖ)3ryJ4-ߐwc'^o +Ӗ~>Z[ itu񃇓o&u/3mO>,+M$YǤQjbilROOgR '~ⷄXB9 G[P/"wv(6lg,V($o#knfGw%Ǖ7&&qN.بL1|٨WݵUUeEMfɡb,0WjeS_ec4)RSSC05`biL) D}sݳ{@@{κk65zߓWsوH6QRA=/ldNuo^}$Ox @5lI} VKe=7s%]]Z5FjqwSuFwtӡOm6x竨"ޡz a쾝'N*ؽB #7L`# ,5aʸ"#XcMHN]"7}?!r!_ ,ݾlƜd5^,3T0EH1o^6;tb.BYZ.6σ5F_/4&LB 6('z򢞊3r8wfܥg9ЁRT ͐VW ߴF;]okY04‘/ӕrM;y(QRe@x -m0l 薨ᣞN4ѧf_mЕ+O])i$\-fHϮ*cbZUMybg֊?}p $'IeJ,JfG% Nz*]A0u9S1L@kcT!K"`%Ɔ{%߱H|J+Vg1$v"U82#S\pn#Hಲ [#p-[sX.{ rhPV>sػӨX 0PG~l1bh֋ejZ]ېb=OfwJxTp i&#|"W߀S 8ɃFyci(=< AcV.灝mܱJ8ɨ[A>^l-(K#X>t%2X_CbT#L74'e*O.O<+XKZсHFn&_ UcXRTG2omA~mU eJXX;3{Htu%Pnh/!܆|4&]TOFaAsYRTm%is+*TҔwP;@hlRq2-&t6T7JJ9 /38dEy|RF]# 'J<Vߜ8Q{[ ,NC2ڡ]sqv[z-Ojo2U5O>J ]-8~?j132&H[ !nkTVTZǍK7_8+PS8i22q~M03ٍXG|^dG[d 2j?v:tjV]<MF6-n^t+Z[ ;0"#PTl8d3Ι0XqgOpqܲd4ffaZmheZ0; pxh<xhŻw;|T]/pk9BPT 'cb#zYz=YuZj NGBE_()4$wִSLD3 Y^+@d1)CE }FTu:V{ Ley։Sw_&r_}ȯMV˱iٗqR[ĠČnj4Bz奤 R >B+}7-b0ѲGN<ӝFb0غOb@B?l} OlB>>Gmˎ8W`82pl.4;]KR1=,|ԟOKeK 1 &3,jZHhBrQgܾkV؈,8 %'':0U{$H:[S;|xaC WrxX{&}{=t}CD~:z 5Z^#v Fΐ)04"ly$QE';M=qqqx׏fecbpX" l-^-1%(köEAiLJ"eT{];p{~Xu _jU R]sh0wm?D>H 5aœ&3[$O-6G(7>kh^!`ג(1/M=t%.=}ɥzsH> stream x\XW>D~D  F,Q`A{K5j"B)E vAP4$h-11+H/K]vw?e(ܙ)9̈+ZQWkbT R߉N_+<NjIo}8OF[7mݻF؍up9E}kD):(*ؾ"?\P_K'T*wE3`3GԔ gȧS/jDL&;{-ǹ{ =t[t>=WkO'G | #=`=[bir2DYHP!jj%U*do֞BjLLBWkeL쯨%T.>tb9&zFwZ{-@oe[Ju:gAz.$@Z92؟?=0kظ@߶upӶ~MJGT%J$2R^.rVleL!AH#SfMk7۷X:Cb٢}ĭ[K!N28YiZ@ RJ!6l>S?3+N#v{PKVׯ]d* A*kp)Drc!S;g6lݯ5BPm&?V* Y}h;w"-$ҋd"8^p#tEaj BZVBot;뷋]\:L]DV$SdϮ5oӦܵ|n&۴((ѿo,ļ=ѿtq8a@5CtӞwڗӁ-Zf(hVsELŽO/#+3n5^pA!NeQŃ8rc\E& cR ag`sb碢4"1BRʿZ?jLGU" PfWT:M tZtyL^NgE?`ڵ}]wf EOP!}O= ~O~XBZ/ FnskyJҴ|HCm[ 椤b rMPX?%Bm(JXp7},Funjҫzp9f{\T~dWoܙ8oڐ2v"h㎤0[l$M,u1~;p>݆7`?x܅?p6,SŤ)90g={ᚒXAyB%yXkKfV*#YzZcP =?!"9Ϲ]{rQF}zn8`kFi{՘j/\o~|jٔ ME] ^7h/~eX!|D1.F.N9<Z#@zICnXԫ/Sʋ#=&c'NV) dQǠ_} pN֭a6jA 7 mǚ2r#-Zcf1z20XkiK LrS)t]Ϛi AE:5zŬfb'ΓktYjOsڟ7nԜf 1iv`&adUPWId昄pܹY1P]OUp@FcKy}[^ +́70 ;g֯_׵O0/#_@0xǒ*|_QQaG<:xE+ ?_1e&+`)b 1|Ͼ*ũ3ks.A' |駟/ser򸤃g9䣘ʱؑs ~LI A3-*:8'-cnfSF_M}hRnx[ަ&: qv_rk3q]`e_4 qFZ;?U-wrB))QvNͻ^$8pz40pK!Er"8vGNjA3<9m tSa߸\ xԮ lܿsF@ MwYsBT9|A;y_Wu0Ywn׬ݨ2>Cj{r8zeCMD" "8G~kl~`_xÇTfKR.@3DM(WvH3QK;~uc~_k|bS\xM,4_-okPߺMc7iצL߹m r;C *R霼s {ǹrL{MMPV dlL/e 8hCU)ևN^PZ yT@w8$A'D@+MW[ .wث9$:&]~R/SZ!g`_ RUS9$ҼO@#Z9 Zi7#lv 媤XEL C@;CM Q!a’<oRd;g̞M3gϒ3Μtҷ̭ eg#2AЮYyEv-b\;`{>JhU8W8vX9SjeBZ?S?q FC+Dz{=}>(nr5q)i:XfO F?fG1.\ju( =)-"fE^+?K vTAxlσ yDZ)H95I5[$L/z#mab?E(2;qXG k<9&:2 傌ReVV~гe'\5Vzzf[Lq.0o \2S52R[9l`q >*]`DU>쨄WnRPUUrDGiwa$BcO0FOv>5=ל&5fǂ ~H4,Y=@4q\p}44R{ 衼?#>΃Rˇ\ > >dX ,.W)evbEA ӆB؃b H1bB l&t(.l4\=""0) 2Y,0DA/׼!R?oޅO,m\yC 5_*RQ! `~{>xj/x {S bq.&"1V95:.|ߘ޵7ӣ`.1t0qnO4=| [K!#o.lYF]y\*aT_9`;DMWNw(w'VmĸCd oz(?]gO|ٟE+Fe{c:zN2a6{EK/Zi5s~t隤GUZAnTɘ}q_fux]3am . Ϣk )*xҮ&`w'e q,e x?G'}+@H ?3JEwg[#Y8$"w?yO񷼄4gߙlBˁr@@C] DUML=9资`7w"q^dqA? BΈ-X%h_~Wo[k;gS+Z)+ժ(ڹq>)je ^͙Clˆp90+ &3TU>91 1xj.E;Ayqro5+H^>?Zqf .XIo?fNO|\RŦ#ʅ΁xCdqQKWT^^R\mz‡9H3 bFo$z歠$K:JGZkwLm8m571j._V4\xEu5 _ʹ\-C0vl+ %y`1Df?Qi_A6G(ѐ$G#av }gɛ]ߖܲPC8ǩəpoypC20:xN3s)OYٳWLwY.>9PDCc΄ q3L]Ԝ.|TE K9C>-}]M)MtpgE7~W QO@3zriQ$~275!pSV!ոؽՖ-݃B/-U4] ѣG e2b4xRZܘYþz^4B!ee2 %=|&+h˓trnK2()b΀ 1ˆ]aDw%~Bo=!l1~҈++cMٞ8wTywX740z` wTR*RƖS-~/%3h¼!։DC"]a^ܸy[Py$mXҺ?U0SLxԴ?&l+尽BRؾ|-' {AqBi0j˖YVS*^NDS~a6rS'}(X#Ogo߄6ےOGB0\ Y{Ixg8Pz̖H=%OJ[>Z*5P{wnef'4*[,23s,?oAT*G9A1XgJU?^.(-,E}/*TdH&R:=>=($8dWp蝻bã#b!|N1(-{0p@P&lv졣ŕ5f}`-$N |$!czf?tݐt:z2EZٌsYlƍcc=xtϞCb0ox>v"El/u2 ΁OFtp[Н>r%ge=~(ċ^^Vm75)t+^`b; | Ҭ˿s4Н{LrIfL!asϼU3Fٺha 6&;O`jT/|W\6lP; 1q^#s,:s/&JGBr!o^.^30 ;]Y1 XwBgw2ҲeO~UU]CfgwoǤF*iJuzLVzșzuJ9~: nZ\DE͑}ۘ0V)d&om7m ~\ [%SڍeַhF.p"gI"Z$B o({-VIvO\wpgPb_RZ[XCw{Gk;yڼϿVxʃ0k-4 Ybg8=IЫozDZ9}>WF/Wibfn^m2bmrnvȹj+;Ow [X@9DZ0#bs$02ID8z.?^MMҪ_6kв>$,?W«5K fpÈ! Kߣ-w8#vSiG/4⥧j*"ֱ}xmm-@kZe9h%?XRJJ[>&Stۋ(l氉nO}N9c=Zr2b1̷4LP_(̝l6sE#*2y┴o1#C,:?j#%_iT{A 0--7tm#&=w!ċZ/Ye*Kr!a L{q={qEE%hQ|Bȿ8s{IN>.)@^( 》_๫4CٛxZwp ;:hS%h;3E-盹s[|&SjEN8g3{p0ǡSyo->W\wG88tW=k1ξ>y{͖*?Ҕ}]_y.@<6qgAwXD6)'r}˝~܆٨ҡfH?O{F7`t$AV+7k6|jPDSLLGBS֝NYp܏23c&N>*ۦlؚG6O sVHvx{< ҍ5:Rcc&xdejQK_=1˪ࢤ/tR…wg/i8f⢟\߻d՚|1=X^AB(7f*"؊In68x<+qc8v=*|fS͊ ˷FJk0 Q(r5w*B7!6nUl\N$}|}F)d9pswnijx+**.*).)-//.oݙ\lK` (bݤ2A-勯@b,Bڬ Qej_ {׿],XIf< bQVIi-ƝMg]a,B. {TqΜ%y:FSINiU﷨Vx6S[!W~uW9:Yj*O~4\jp}d.FP?&{0݇fڂN&d|ƠRͨ\K**DSw֬EG'DMPu)5lWS^Y2?eH6@D1ģ]lPMe alUSwX__ ,rT , y=ź۞={ uPsd5u+6 A~zbOcjR}*tU(Ju'ϷKP7uhB[{Z WoSRx0]Mՠ, B0g9IJwA:yDC`t(X!t06¡{Ͽ4jxQU VP "X 9ZNo;Qg#`tDNV;2ŀNwuYTgb|/SnxRt2=~O?mY ]| Uf\ʁ"h吘ޔTtCMy67|XbרN.|[O6d* #a,b lbal8k8/ /RuT-Nk4R+ߧ:CuMzE\vOllNgnw}.^^8%f^")ĔSKU qC=igd6]ko譇nd,XkT &dcбJӔ"=U TTH]-Boj4֚O޽bYjfÂ/76rf܅+-}#Ateâ9hI*KHNhqjC9 /]Gn$Lg ƆM$X|șEQk{/a eޢU~TeUr%Q|]n3  s+|M{'o|21<{.Rh CO>m N;ٖ1*r=\Ot{Jv6.n c)Zbp ioGs]KcP:3Ky@-8f!xՆ5DAд}wyU$%kuOU4A,Tݯnڳ/caN*Y\QULʀp&=c|vAs""(N,M =06,5irq-R=:A]y֠`!rm6ZoɻŒ u%VP=a~qy[l!6 XxY]qG|A@+=TQAv |Am R{ {vmKA}輔@Sh!`r 6o.BT<"S7[b(A {4rtv;~̂RcadW{ Betc2O;jIë+Ef#vZR3Ө,MŗI(*Eg"(*)e#K" ATDB"*iۼvRP%00ü̹{A|78gu_koVƦPAAV6aQ Թ]~Kr 8GG[8B/ǮA>-TLb↻MN1ܒSpQ9yhW;95ѽxK=W)ə}Wι=mtF~Fx9nO$П:l͛kORWx{׋hFh=v$@W%I՚WXΥs+Dli. T\u=YS/ RNwO.2O9g9W"ndo =8ܵ|V'PӢ$ǭ=h0_:[FWEE 3/9c;A{\nѸ]iA%\׀$ʾGקgZ;5I"u3?磜3ё;7@l2寫SMA4T;s=9kw͊;_m=9}; $ZZپc̚Ohô)!y˶_Ϟ*"+牖GzY*g5PpĒC<[PGX $pI@L7 ƑPcӾNN~E4r|듙*IX% Mtty>4hMKAVYU]N{ז=󵏟t䞻5/[]tMLv2uh J 9Q3hlyUDAH؛ٓ0{HҴYIKr{F31ٞ1 zg E*_@a܅L_A,y{.`oԘK!vT}y[sׇͧ|{޹ѵAr06&j`m`ƞzbW7 {$)(^v68Ә7nFPƶ.bմOPCPF V7((p;ؕoGߍ|Sg.[V=JT_32,^9!_qx+ 1Wf䕫ѫC8uIb"G-tA߅p :zzuesZ ~K$xƣLDd:wx'|%h H[T/Y233je3W\2u䊿UJ EٷlTV+XhT)1 fmAz~4л ]13|R3t# m۾Ih$s/_yO1xw*k x \ Zi%\K.=D d/9aT/FQMAH4܆-vG ]6iV;?լ'ܚXC_+bxhDΞ /e0/#+o˫}K5[Z?ϷiөTn@BT'[v@^rse* 3.b, vhTPRTܠ}T\A_9ػY#9 G G/:A A/$uYFCWh/mj }=s#kZ02*AauVʛik_)i334(sg[M$5eUM1^-<=c~0SiAOoeTRag.{PEra#*ye,@+\ \}CS( hU;=x֚@g" #:pD`f5X HvHWןI[vꩋ ?@˪E[3; Ik>%ƓcUVװm{9` qϏ25pMb& yoR<(zL <)$SǜKSQI9Ub{qw`1@g$l"A wD!V}hKi)y2XE6R\'^~~_dmMjc}4!+|W}졣; h0.h< :]048-8<((dӦg]UhFN_ۨRk+/ϜצEL.PP[ ҭiN i.j\f鴰&)>|jPhc^ᘓqLDJ\2Sn {/ˋ~w 8+pϿ&|IEJtD;oHz+WLTvSL 78xɝyJ=QVaMܼy{8Lp pMCKX y"3S4—yڮ-Xl޴}aӐf!7sD%AA+ %uȱy}zB2_c `Ig\dm|Jk"f@7]ɍ?C.K@~[Ȟo3pU ]oߖzT%ZB+M@ofH$QtۈXWz٪ W1\)ۗ.&sAMP6R?rh9$c8iJ 8VU4ՙ_IpJpNPԫS6zyZ9_xVJoаLP]3i3hѓ /`z#ȫ*j\Ns`JCfӭOE_}#F8⋑AOkFY"f/X> stream xY[o۸~Gy+$%RҤYd[>mT|$9i i[M7 4<ÙN_޴}9]]]}/u/gϕ-:˦fndif38,Q>OX*_EldM$[tg-Q>~~?l'8+q(X ,JF~Ob ?TgاϷ22 Qh$ ?/o=`E7 +!Y*>aR:?{) :k9@l䄡?0; 6;:1i#{)֓~z9U@)s`1Q6B9\[qb?/&o5Iד)K -qGr(d+-J/&6,~xvc_hACZ@8fѻp?|H4rTLC(4jy2 0d*Wv /%Q-j͊r>7uN_iJ)y|6[NF%ךtF;xFn&dZ +zP*K$uߴeT.m Eʏ#+EI8&Ƅ{&C!O|[Y}zh×Յ5 Xc6d拒t߲B%G~ gGj.$ЛE;4i Ȳy!Ϻo62O©/7 RxZsV!f*goot(QJI̪w C#zDC B5Kiaݮ\vaZdi H"K Ϻ`2Z=G0usiW/K[֍{:̃_xZ}zNicv +3pE 7c!Ow}VJEhEޯm6q ΩDl O?Ѫ>~4&ujuR0bSh#\J:*N5;Er]pĶ5MMDtFmD0Tb<MA7|\|~p B:~(&0r Z/ >$/8 lAwTdk>KR!qo4-&x6-XlZG{=zE w8HiG6 ch'̙ELOq*0hY컊z$L\ʲ'M}n- =**k-jWM<.R۬OU#p@IZbVE~UBMeBBm(47!P[{7.~(I=ۆZg{iKJᐰ4}8LÃ]&e]XIA֨U@ E5\Ap)adݶ0!X[ڌuL_%3:uܪ$vBPkhԠxlH4Ge=CǴ}miw`b_4̀ڴ6x P bC{u(?Fߛ,췭5\Jf@l81lfw݌O%bՒE=ufK:w.yV;\#5U73g=m16 nq¶QN>v{ uEt9W>]]q(\wP ^ ?vu!`lo }7ȉPk6JM׶]АynέhboLsE.;фtT2qĬI茡e=4Tɣl[%PrxUe0sz`iv`y/frG*^WáM r5Vaȩ/B|pOqSivK5Xp 7 ۄ8MH8Rb8+.aK~!iGigClu憫ټk&S%^K G?Lix'C7?bc͎yN?L^ M8 84~=qڬ"}R\ˢOBS*{+TV[aMϺYccYn:VGmzXrHȹg$wJS;1~;S ØpV&рBeOTC8uՋJB?9TAODɾF'yno !#~KF+s[ӽvUnxK3˛ƒJc.qEw,|*CzM#Ür6Q> endobj 154 0 obj [ 155 0 R] endobj 155 0 obj <> endobj 156 0 obj <> endobj 157 0 obj <> endobj 158 0 obj <> endobj 159 0 obj <> endobj 160 0 obj <> stream xko8{7">R뢹^XtlӱPYIrܯmvE!͙!jE6kػwoo&-}{F=e憽0a޼$4a7y$tA{XO`=+767{Gs} *@ E!̙I̒_!՛_ްw2R Ae%M>`^qTdc4|(4 N9SԯWo^5 d@ :AqJ|AS:AOo粩h:f8`9t8E:°17NL`🤍ߗY򚕣đ;+VU͸s$54y97% "hn❂!݌ww3[^=|)~Cj]ooL+{}s֣p|4m7U6ht >/9~n 'w}!\~4&F$;$J.!`d';ʅތw8n` }R"Yb I ޑ9jAǷ'q~;A4wpL_rSE<0ʞ\}M]agl- +?\]njl2Gk9lfHwVl6lI0Td֋ [SHL8wogfƱ4> rgJM9N\fK,ٟVs.ać|@^e%J H6HU5jО ]?1ȶ9w& n@.r^%R FtZyd<6̛ ,6BF,+MF "jm\~~dȦUHvM~acڄ;A 65īc̀|Y>7 }5 e=I}CZDm9UMʙ֬ LZkiV#[ec sEg;Wæֻt@T9s0EF^0)|duBIk` ͒^p#d/-kDیw%^6ڬ \Ld9+%%RmQ7MVXъJ@EgTa%zmI J JUMPacq8T%mqyA@"mTH*%tʵ5Nr96)U![n4BSg;.i~`N AkpF; MQqSF87mDDmD{<`MKkDj}·X-}Vn\Ov >?/z' 绵m"vsl( _r&]90 Ifjt϶,LO7,lZ@SeusE`Z/v sRR3״c"G06A)RDRYp+i=|,f@KO7Wpv`d& ;'indbTF@iB S6V4{ҹ,8Ъ_!P2ͥnX5]a~E兔Xk.Eu VKmdId#1DoF TA jE3$5Hlw;b[' ʴ2wӖiN+sюZe1wjꨬ5ضmq{Tm<88|oLlmIghJ6-c楢ݸ=󔦃=E=Rh/!=-=>S*h/3~LDH?BUf!5YblPV)(uk'08~qenAْNO "}b,"g&+,'LA*Tmݩ=`Nka5?5jmTrU!ou"LsԖ^UX&هIOnM  ,y9?RyࡪeU2@xmE#%1p<5p MPs)㘱Yg>9ՓG ..EDL>2ӽej$f*لAJ҇+:J:E0?VպjxO`lgX[W?9{<B}a[<.o, 蹪}Ԍ n%8m"z,o4l<zN &' endstream endobj 161 0 obj <> endobj 162 0 obj [ 163 0 R] endobj 163 0 obj <> endobj 164 0 obj <> endobj 165 0 obj <> endobj 166 0 obj <> stream xZoHAʢQ4_8]utyh+K^K$YQܽáh,Hz,oˋ'=/կw+}9{,-ʻy?nNO.>rAxwy ċ T-/ ӓ{??ٯOO>00dT4Hb/@*oOO?x>ͼ-ed(T* }ݾBka=VN 0W;OJ bJ6%N8r@ꝇA~[آLBbpNk&p4 aE\kݬj\j+|ktq$򽺜/ ?T?ㇷ٦yGRlʳدh_]&RĊ˳CK](_i@7O 0p3-6[TQ@ Me:!afʺFoqH3>ny#%),X>SlK:Mi{@UR jt6pmΐQ4݋]1*a成(a$M(*P{PEbyf"q0Z# o%6r{K˕q:k.Bq=p9O5E,CaޘQ/ "<빶rJRP7SѶg^> _h8kGHa2 X2ݖ f{2bG7$=R2k%*M52eaafώIە1KӣW<ƈI!:}A=WPҐEC;\Mz:up 5r} \ˎ" T׆2 7ե ٍ!~#Ԃ񥑉zչBч裱g帾{~PY|Cg'EncĢD/]Qm:\VN"K3/0[1&LP0a@Qo'pY*%xe?sٜPˊJZ^CQ)vj57%L W bݑNMYi<.y1&hPJJ' z%T j$+!Kp #_ʊ2{(Ae ۱Z=#~?eA3-Q,tj4eN 8q"p7jfMoO:xu-Ihd0Wꒀ7֢kμ&3o;cYG!CIqٺQԑJa͕ߍnnDWU< ͣ#ѕ=[W/[A䘤 i ”zgx6GF+L%mLJ iu=:L9Gʾa~lD`` P $"7b;a Xxx'40-?=᚛,G(j6 C)g ,Uax#8W0>yՄґ };#Gߐ]9]ҟ8M{Ed)*(CoH;b}m,pҹf$5NNyJt׮-U [ߛm8qlޣ$4%i$S,<2ɄC눱/9{_QM8wO]!N؟1ca>v5S|^2X깭1,2_6[[l&Won{aU{>Өvc-2?]Rav]medwQSDžM z[ yj|ʡfԻid- a2m48>î':yg }fRsT:jsDvUnҚFΑ״Vjڬ,XP/M Kj6rt@C1lX1q >Kdu: 73|^a92kf.,iSmP;6Da@Ê`ܛkM^TiJDUZxG'VWؤ4MߎVus*K P0¬B8ׅ ZPWKgp`fڥa[`^e]IƍVG,wUgRZ`S_ڣc>c%65ȎAc`+^2c|B}E lBmQT4|c3k}l5N.΀8jH7oy pp4]C<&œGgYj ۢ^Sd\)Ol$q.rb+{DL%o#Hy:]wX{Bu O'ȧ^~Yմht^Ow+ i{¬K}I!GV|Fg^CygzSg`d,]lf~,8Ae\bҐ}?_ e֣RE8[]:h)_{&~yA)i &љSth׽%W"w4*1Π6i]o(Zvt{9M0J/kc*ݒUuW`}Z X: Hި2I&ϥB鲍Ws2lV\+-F<׍i\Z)GǓv9f%Li*+Q %l W5/t?Ë(t.Ŧ6PLO~&xnˇ O) ĸA[Ԡtl07ߜ`W)o4t#6UuhϮjӫ=z@* ATm؎t-N|dKPz:$NA n2'Js԰uKΓpA[S]J-j~ݑ>7zQTEH0|E 8q`$. lMLA =h#hw2? DGSV!$_BoL"nua<@.\4|,c-刱nFߝ#@؋|cZ4t)׺0"ܩssF? B"usʄ:ML|sjM endstream endobj 167 0 obj <> endobj 168 0 obj <> endobj 169 0 obj <> endobj 170 0 obj [ 171 0 R] endobj 171 0 obj <> endobj 172 0 obj <> endobj 173 0 obj <> endobj 174 0 obj <> stream x]OHo1n"$&f8cgm~UUۉ;IgH8}~U'V'nzyqwPQ^@.@OqkP4`Lnt@Z:rH|bP<$6!a v;fT:NB&Т*ꑻ24agj~:+UcE #Q/:-=z-/g N'1w4mBrZ5gk)"x'j_3K<ʝ )R}/r>fn$ {ǎD-rPW "u^FN D[CVHYesH+!n-PYBpILfm v:qK^ƵZWqJ/J"HMj%.[;B-H#(7m*%[EԔBiwdۿe2)ja 2`r6L\𥲙#U&~Dzn`Rrm.YI- >y΄MHɎ6A %mUvB5jsK=~UD2L)+FAr$V+*l%]!L[+nI;vk?J8IxuT/"We;x\y I'`ji3-TwBGD :d C֋us(4)P @fg($h.0^O 2ɨ#F1y+ՠWCG ($w=#Rg:1B8i UP><K>Df9Ϸ,Y QV \3ӶGnXM'*n*-Nrf湪!1vת/UB,@ky/7ՙ!>XX#ah.lq#c#d "ŃPa bgA^W'tJ?Ј{;ӱ5 qRа- <,pYrdI V4NX|ǾIo3VB1 Pfd˴nV馥P(O,$^UQ@ѬqRJ|1*P eӉ !K;`QRQ\E)7 2-?)(S;mnt2. (Q_6T$MaOȁtyW<\x^_;vo`x 736_?A[o pKj.1a?-ˌ;U)RT+6!vڽIalmGxe˨kDzk̛?>ߡnQ!eKZ Q)NW'_:Xbyh;m{?=D~G5:4Ŷַ.JYϟ(C̬*5֩@SlxD[x6$ف=hdOPX8*jqȍbW{Vv_P5 XVuW&p1X \(@3Rd`vi!ϵVd!UQ0LsRj#z°bnJEKVjfEU| "QZ^`*]d͉.-X0)W6Ђ +1j+}W !QZ=#/V{Ac%VeɆS:2&+ym$}L]Lލ?>zz Ĩ_NO.>(׷&"Ok~đA|<_1`Zw%jNsǯ$'rZʩ(,mQ&Q/xX7. 2-l%)fsachиeݣu,۩'JX>ٓD֌<8Vu c3[hn[S`H.`5Aq0;MYQQ'0l6a#IN>rT‹)Z'O>P}iXc O^և$c!;sHAкs>oMb=k//'<'X'^$2B"to (`@M5RYAC\#GJֿZsQ]+YxkN1 ?A`7P?.m-g~"rI2o!5qh^`n,e<(tc騬Q 6JXy_W1{O'wސ|䤳T{N_Њy\:9\XBN+Uۄ ,e^~}ۅ'}ht؟N%7BMez* tje-|YnT|lj>R /|Uy}DR>x;3}ϻ/HQ j"K54ajH㊛ xu!=YdM!!(%.R2p^C*븎.6RtCnEZM=nvփ3:}n2ipEyrܨdQ;9<=Ӯs+Ʉ`=\{L endstream endobj 175 0 obj <> stream x\n8}7c{0-. u7`f`Ci'ŋZ"E[6FOE:<~ެ7ջwǛs_?]}}XmnrU][]ъjeMڪ#O{ڜ\Ԓ(z$Su'yWM Ziw^ui_WSٚ2SUT=ʇB~9}Vmd =}\TחNQ۩nЩfH_m;f·8L> M>~Z<=~~9X@,$dW0IuM6ah*!ljnZTҫ@.wS)kc#yR-ijIjB5#Tk5l@WAËf33z`ђ)X?!-NvǶQ%O$k5cR% Ѻ\ߕA; RPݎ\Wlx*n[eR@wwpݻxJHn7 n;=҃`Ge)v> 7;Nh>2ɲpgv=MW+G$ld-*7_j"j~cdڠel[3I3Vl`h;ӘvA݂v.cjӼNO(nFXMAdkk*Sӑ5i-sazl;ӝAFbEL ZR39J|^ܨ'3n5]n&\([^L͉ 2/ןɝ a EG}ћZ$t(膭0-H6[ҦGuqu`;;5C c7Õ@r.k9/!e՝ #-՜l=ʬkqdtD{α^02e!dQ8&d]?Q|i k'$oTuz ľg*R:jͳ}yoGtH|،e\-%K$*d dz8=n4-m)gَRvbCGa>˾4*vtX+n̦۱=~DB"ˀf#R?-><"!m\ri•s6T.vq7*{JqLS"$,=:@,t>E4D$\?(,W}xR¤eJ b>*alKDo=3yB nM|PD -=k6 z!4ָ">Cl|p'>V4̀Ժi{0w0].$$݋n@`T1Wkl"[xDټ.Oj0OdMYỀ6:5 ~11Nr XT +1[ p1~c.TSpy[CmvrDxv(lzf(r2Cȉd@-ҝ)<)Ϛ$==-aiO)mT}r׾g]+F]fsAd a#X$l Lex$):B*ٛB;DUrSV[/ YȘrDWBg[2zYH<&՛xd[IY|lN^LMe-}مlǚ͚-Bg9L4uaI"oh ykb̒n q7pW|L֬h2u3[(E>rUm:L:1d&pb 2*6y0jD j9Nƀ]EgU9K4IFoBWWk$džL$G[LOPʚ$&>`Q HvR7M|"53n" RSt"R7~Ս&<2VꦉxOP8gX\ラ9>+`ԍ/M1u3nx,eMK%1q> afy…%fO<kpx;u`ڤ8ά=mp(cJ8e2(C$p88Et,CH%pn r2*6yQ$pBa]mh3 @06[WG~# H ;tƼ'hbwAySؖO4f(Wp?/VO_o7\>JbEaLE~ƭ,MiUS󪩆jY^⓿ &ʫTd5Iw,ϼ6\+JE'.)mA^ZSqLIHB;`0G;%Xo/ns0'TMc_v1cxP+b dJ$* p(N!8=^fuv ؀FY4m't)YNB`6a̙I4~cڂ$i%ɾFQ&dk$E"IBޟC&>nKFV ftN8%fޚoeew_iCvo8Pn qv7 ؽ8;PQvo&m6yFǐ.:2 D++g);q3S2>o-0WЩj`W8h_Y5JFLYK(m$S3q2m53.5oݲe$$n1Q Rޔ5;ntsl^"/T["%]SRχ X41!3}luY)cLdЗ=Ej3uc9~Q Q)< ДR.2x.S2zW y%3Ot3gW# ({[@H -I- R,2Dw"zgO.|Rf^syfu|~+1G0ͲFs詞#kQ5_̻:Q_؛\E*z\}=obsmbv O1}sfy-TtS?HV*Hw endstream endobj 176 0 obj <> stream x\ko۸ A즊]M6>"]4:vj+}܋/D"iQnwp8sf8)<^5tD Pݝ˟vw'$ (7?E >8><o[: G̈́36DGS1owoeI~?ȸ\kC G_7έ1đ6?;hh EEBxDry!+EF~{Lqm!M# ۿ͓Xy1$D6Bow8!EB6tZј.>qA LjAMqτӾ@7ZUagqox7py r7K}W/pmz.彇nx=ވXƖwGP8p17|,< *z0]}4-,[lDewTlCcr'6%j6g$ez~i)]@1-D/292( rRC4mj<bCߵp1u/0^4^?/ofli?G0v?ꟐtJ۝ ݤ[?^7R_6čMwghLh!Bm)Y9 H#[T @ \??={}|(:Yʊq?z}ۨx۱HBP5/=﮻]B=Cr# 9 Q^ =~u~et5iruwf #[o p;Äz<8Pң8+a.VZVk{Ld/iDJzܫnv@JP) ,vRd|zDZT]g!1 Jē 0H!ï̓jnWȿdȵVx vp:Wc9Їܻp'ptWG11q ;qaBC?c?yv?q5OˢH61&'u^e4(yu/ٚzNÿ>zON$1Ls=\ 6zx7℅okar PqrW8g)<}J](*BPH[z_dN @}xQ73;|yaՕ|)/kC7qxmRagVw&e7+!q@xzT+x3 ͕8>0 z:G3XRC}gSRO%ZPF^PǠfʍL%G=3m1 ʒvqrĩe4w 7k>1qO^Uuj#pNL`1rːZͦ6{`8*o4rxD endstream endobj 177 0 obj <> endobj 178 0 obj <> endobj 179 0 obj <> stream xks6g|)Չiyv'vmN|h8H~.@ Niǒž/ UaqӤI6r>ޕ=ϳ1/&/#ͩsrwx{I܍̉N$'Cn; V{]g_3{,H0%^"Ső OH?9gN4d c9 S5k)X¶@x %A1P@G1C0Iuߪ,Z:B0إRGk]KM^M&oh؂;d5C><;z?#@n ѭQ p>4fj6;[t/މ!^+WL2ٹ[|o0,=֡וcCg cѡra>)}n624H? 4ܼ*Q Bҝ0VپVY(q, ܦJzyEaQPΩ4]t@l&y!xZ?[eD>r 7ӊ-uE!\[kKf]Z685PÆF{|рN>8bN4j | y"2`τL(:6d5vWǺ݁h?6ܣPe_ 4q9Ҧy")bϋ-RBH{1(B`E ă(drAT@,!r/%PvBOgk D">I0JRZc\[qv$`$a$j!%0I%J-A @ bߢ&Vd 8\.$~)@Ytm0rT0D -gF}|!\ZFj<̙\*v&WF.wJ|"Ik{ZQl3{XK&p\<1|]{}i[x]uO+VyV>ʋ#: ʓ _LX GwO? ,R󪜝_>x; maC1wԅyyUm%X~;Z߾ ^qB/}r[$~ D-}cg.ϬoޞӲlmJʵL_pQηlObH֙NZH.; ZYPR+&;-FlnHtcwXzN$pv0?vEMKBw-[7~TM01ٰ,FQ$yZ!Ń2˚pJ7)o56KT na5S(cwȑ u-E3jT.r(fQg#h#wMin3!/4"T҆eR"B"Asg,EF.UZ9ŀP5ғ/l.Vɼ*!( ,p 9^؝25R9xt~+ANj-/QB9E'PK,$kr]Av@aKmFp$j" q*$U,*wPhKb#d|t ~}?8!|> cɱ ۷; }s"8YxN4doN>9:&={q@E !G~OCБŧj-BH{%a)Do/s& CHd6AfAT ZuhN Y|K\*)M1pnO[󒈩Pc c=E;*Z&GLR uarAccZfP.)Ҧ)HqsIɶF /;qA+T@~hzb0ǰ]Wː*ݼx5A[BA(~t>\\^ұ |;s~_\C,ޔc~l#hDz8>#a6W-z^|)Lb99u/UӁH0v8aG߈;tbzC/(zkFS*0]:{(3ó.v" vEܓX'#S%XB񉼤ұu1QtLd;`Z3 Ҫ;q[ryNi…>왊#k˓m^ Iް \v`U FFsHǙR><}eDUwzO$6gcZ/07 7"%xYi0({q$lw( ( E*^ wtȵ5!EoSTgI^8Bu#ڙQAran@yjA ˘(6A ԏ ,v$l* cOE`U{çIv MS=waܧ8hRͅhQB_3?}M(#/Xw&]tASlH7 ƹmi8vG2gdT>*uD"|:Եw}FC0QΕ)̻QOH?aRLw6vژQT ͑1lSYx@w;{CD{ ͷ[z{zuyuc,W1*l`'xaO$`6M^ܠ՜Θ6t ƾ@a2uyZY:rR71,Emz \͜@ga:u@zͪyg}Ao2;U7yr^rcbM>~v;v30ݠ٠hXn]Ͱڃ/c:?*0 vܻbAxNzjܙhO*>LaB'؛{"Pa}V_fc]MO:gܠ6eГ[T{:9;>MMmG-c̪_ncm.̊Qڮ \dvt[Sr8U.p`x3Z̛V{[Ae?V0V d1G]-8rT^ 9k࿈23e2dgUMSJ<.GP)> stream x[ms۸})iAdvb7='%ir%*UTQ}DE :=[oxq^<=lƓt|9-WW,oes9^ '$vFÃCϏH^Į>V7: oѯoo@IP䅾HB{I:/XA =:`y,$FQE| |'k7=3]N4 @>^h/I~3MhÃ4m/ "((?}p5e6}TBxZ4}pq?mU߭] /T;C ƖjbCa oo&^O9j>Z8[Ұ^[|D5].NFwG'ڝ,{:uGҝ-qOnc<+dQy< 2m)+!weTNJGDj/qkJ/nIfMiwqn,]ӣѦ`ֱƞP&eNY5/1 B+7J'-t]Dcx/OUVTBRuF%V+I .+8O(G 9uxo¶r Q< ¡- D DiՖȐv8LS1\'|ENF;]Ľus2䘞 (Mn% $HY2x-K'˼ؐŜ96 "<3ԖQf;}jɎש #$ZHsΤ],YX=A+]هMiu擔KQ/eQp@Ҳbw.0U+PdXG 5?d96 pXT x*-X+DȰ͔ŒeI&*śWtK"|vO$nbw6'_az-4bm4l|8reӎ y΢ l)Ȇ_VP7l#UrM`Yk8ӹGWqH.)*(JX&m˕?[euG9ΖTnh%&,dGIZG#죃PzGH>hVKշZ Tƞa4lu77ǫ=yyl@ oEE.M'ghQ)хg1o9~vqz2 0uIB'R{EI( s\w1"J7@cLamryfF)=P#(݅_;ws}$XK,avD.%0,&|(G`#l x8%a#nl3h{=9sazEyfpP Yo xq!v8I{Sn!Y|ةc'$uh0~s DcBg V}!lS>DxvevPr6ÖJ*]GbDE²+(g`inN0א)1lg{g ;x>ޙf͏M3V}bwj k ;x`ࢗgwhʌ AC}CIv7ȭIJ7~6&}q"|7N--&E=DJxoQVagQrA+ڇSd{(ShOdBVCK)4T8b0io>r=v=Icq4;x&wV n߃>܃ ==1caz \חp`nC>iby&[%'_Z?;(Rhr vv1ls(I#Vw9w0*dטϴ}q=׈0\*.I^68^Btثo0{u\<BK6#|qo<A=ͺ B=rB[`%(NP=:J.' +A((g` vB1t*S_BU宆4pi+;}Fjan*kSX(Zj lN z;(9HՋg!c7V;z|lNe3nMqB~rK٣nBq㐐Snm3.VFp4ӡUς-hkvv){ej>~D/i?dstvV۩ƝKl:0f@컷nF}/K(9$,{[s劵ل͖,5fNZ#nYÆ]o&3<*4MuSF۳Pi T}R&+||N @`Tk%վDZ,_JHC6wT"JS9+yصf*,{ٚ[PVŻ?XHbcJ žxx&X{dZ*HUx Q*iK*@A9!eA}{?q`Zpڃ7 6Z%kIlC_^v7˱+nC[ 8S4< څ4@xsJM%D;15a/\ڒyh:CVʹZP^K8Kc|3y-k$  Q}l `o&(<ۓ/]5MYkIFKZ(<Їy:lib&SFm盍1@47TUs䋼o /R Dݰݿ!Gx_XlgPuCЍN##~7m>9ԓrp6(xw:YIl/Nh (;>;)s c- ћ L2ǰ^'KZNxK$˗}U+ @ -C7Q|Hsk'ڞEa7jK?9U"4[?~yrl-fMb* G>JÑ(@pBw݆#3c]e?R- 67MLwu#1CyKEs@`} ᮪nF"5V;UǷL*K ?W)Yӄ<O֟;97!YJ!K)ƍ^٪:/wÉm̚z0yw&0ANUJy:7Zpei;`d+5){Z[\g>洃w/ݧTn*mx^4W?h^;V~R9d-NLT ST$ʪtj6[3vIGrSa?esr 3e'57!~E/#Ǝ24\Ls-EXgW\OG>;\k%Nk>m[ǥ C yg׳gmz[ endstream endobj 181 0 obj <> stream xks6gC ǥuZ:e:N'CKĩL)$v J6NEp yYtZ;?xv^t͜۳za]H|] %w%31LJ̉N$'Cgr|; _n]gK{lH0-^"Ső |`'SfGg *Ș cN@?|v콾5{" {2xɽD c3d2uY`?9 d5 !ۉVFrFR6 PKRjC=|12@2pV(g Y^~M7O l1CӼx'fxb{Fo.,= :spWA/12rB02qѡuYs@m |䱫iMaAs_l)t2׿4XB^;6F :tݺ`t$.^lqn;* VDbX1'{J% B丳'Cxb*MAzƕm&mpwyBZa R Ok )Mndak ^`f yaR@!p/04(ܣ)1)e H XKJ'!, &T8`hI*> 8nݡ8(M/Q.bk@^Z: ӗQ1gy[I0U]S)i7v`Z6=@+0@z c1pEv3_2~ 38@?oח^r)60 M@ k,|L3#VqTF+iۭ`w:zd0}MYZ%Œ1p006(-!F!GGښhТ{BPr0Z&1cO66vSco՛ɧ˛Wd v",b`fEJ 468)dߣ̖$C0(/&QI O$L@M T>?8΀Jk]g>{3zmxq0vu9r*æ }P滋Kڱ[,lIK|FVX)88<[f+Vz;"vBfWLp> ߜTh8ʼX؆fI:ʧuV-QD{1#S5wyA#==k["qNqLO^z 2Fй`2ܖu(IC} [a/_h5>Ay[9Г* 8 *5N{h蛭}׼u"],Jv, nN7h66?R/JDza[#h ڕÃ3w"3^v*gin=I^#=kD͗J& j7BQ >V|0F\Fo}g#%ny~i?]RY ~ .0Y}I2eVBXGn6TRՀJ(VޅoPpWδq?dfj\v1r5#%)tJx[agIÑ!DJ~Q&5ؠsp=frli ;{`|Ģ+*BuُPn`K:4=v#?S bl̯[Jx{[Ł &ꨅ<#X~^k>SM?2}<3>E!`$bX ɉuQF`3*pԁ2YRw۲vڴ9Vfx_k sJV/\}${eT!*)ݍYjRU*Bj8=%:Ӂ 6뼭fLU#>҂EP&QӍ#eVmWHʴDEz҉?v$WYmk[2C= LЋ5m.#TduIk=obup?USb.QdVғ'9, c1 `XTh1.P}+gnܡvNi8p,p2?Ǣ% M /9, Z&coJzWGMVT*뗐o'f_x/5؏y~7Q` MYJߓ+I$,Naj+OCJX{Ng +&씂Lw,V |B:uJLTQǔ ʈ٩gY,.Ǔǒ|U26(e>0?4vžU@׎"oW=L]ja'V%g^޶| @>K=\R.tcF0lσ ̔˱ $Ż(Ph  k c4cl#|7i )HɊ|P=mRoPfAB,\[?RͬZ$e-Rbc-wq}Gl_f%VuU7z]ffgT6*mh KM&W`mRSզd3Db1|oH`ׁMj|˂ͫa]AԲiSSI3$mӞBzעq(~Y>62PZW>'\/m)PT M~:)[z-9SS0j9y#<H(ܕm_Q]b";u&߾N)O*֋N YųA5 endstream endobj 182 0 obj <> stream x\YoH~71'(:vVf0"Q6Ht2[ͣ)mGd$U]_]}('gXLgepzzrV}>nO&뇿O&ӻb5-o- (4,h@?2"i8|oRmHpn apw0xH>A 4,2 <(MT 呐&?m{MQZQED^(JSQT :O(h2݆TqxQ&âp([Z\pڎfcQ>*s߆7eC~Rcup 6$chO\(CO ܆[DXp2ai吝-nhdكA/YrϤgYuR *{aEwe!So .vxV,K;zwS1}Zpyqt,CL=]<,Ve*q\s t{- Wn aSԜԃ8,KU̒|42p>H9{UGǔ8ywnO ?7K M~k ᯏ)IwGcvZ6oVc|G^S.߈Ӧ\>'%Rao5S7ʧ Ejm5E|u%fuZR5(LFjbZCQ 4W'].3i[%O}.H8C]GѼzaD,嶬)/^ kUӯhZ,y!t+qIy.#gF53(0 ˈz"BbTtidYEezTV y\0̏IQg&u4iϕ[6!,JȈHRY0WYk1}5 i=C]cPvů|#;%ICMԐS'I^ S::U26CM@d ns4Zjt_;6|B\^?_ɇ QU \ MαeԎkw,r(у5ƥŨ r z,Є}/X8aƦCS祠Eb|l|7ʓa@P\jÕ`y#9hL`͖/Ve=։C8S~}3gi%MS)4*Za2Uri! 4-UR2Y3\媈;SSNsN[Y f;O og<{|]"hUXT8^|ژlS|RWԤ?oګyb"CLpRl^G6;$Y n`HH{^q&8˥*FBX*@ЈYb"|xh6r^{նW94,MTY jB\u% k:ZAC-5]XluUү'&k#՗A6e>8Qt}qJC1OQeklI#ra]%cT-wl?="Nj `ZTjq&4S;X|oeUjIL~ZK *-dMh(6*0]͗+-o"Y^{+4A8w0G 5S)/Ε{B]ױ`J Q*|v/sj`/0j2(*1҂ö̧sFkg){V cRxۂeW-bEjD` &R<Z { KEi_a)WhۺKzaD9T0@B-ra %ξ`ciT$ 1 W׽]/qIeR(Őbz2jRԆ pΒz>r9Qkbz=WWF2\ 5V>\SaLܼWFkmczl,FfK#dANNk jDO> S<:ohp?qzCSr ^tyyPꝜmUXrpʉpLʺ ,\FF{EmڣX󨖠(O MQ͠G>`%|q(3VYUŇreQ\WDGzұϕe4:^n`48ʁLVRqpmc> E2#en}Z{kh<>nJ(R>*/eW ~Ơ:耮yoG&.&wCBdo3kU v}>rX|(91PSE#0yK`yCitA<2~FCiQeiDv˄WA`Xb(GWx\p?*؊񫰞*PV¨^ڨ񬍄Od |SNzc0G'rJ#Ul uofC8]: %U\Coh掼м3+HS ґRcQ3ȡ:rVm9Y %2Ŧjvx: -ڧd"32d 9^C Wiw #i =@tgGٲn͛ _]:KL9XbRo =ƈaṉW:dbG6䤿jTUE^T$5EU]R[%Md_H(/[9/cW} ciQأ"dI: dIϞQarVaƮ GР;%CCOV$=,k{ي*1{rڟ+0v6vni|Sa"|{b0i* Uv_|&MHǞGbO4ON˝(1 My+}ELjڋ&Z54eSe9"&udƘ'}1i xFLSsR!%O5'OJj/9[1&_NkbVy졥Cɳ3n14/h ^zW1 yN&Éa ]wrJ+{𸚯GE0߬?w`R3}(G?DږDmMdoj xzSs2a3{e?  )87R#=ͤ%鰩Moǘ3RMZ5>ITk/x A`=xC r7ُ7a&gbD &M0?p{?bd\ endstream endobj 183 0 obj <> stream x[o6 /D)R/nwŖc]mɵMӿf%ʦmX13yzke>ozҶ|U,W7竛mq6+-oϟyOoϮ^rAz73Rػ٫)лG&B~n}~ & dD0oC$LœY&^*Eޮ8?[~u~xUSƊ2%JXIW[d^9=h(mKd8eC`!Nn|&{p~giFR~8H̬#_c`8dž(8b#-Gó Hqb0$e .A!` uxחq= İc> JR@.#of.j)=;`؇G"QsG_#;xmM 2ޞL0_ƣn/N#A*}W,-[ @h{?--R2_wBش٣舶ݕ(͢ sp׳KbfW3pDN*G% z)j.`,6`gI #Wy[|*v)"F?ij@XS:ىX(CC8WYYBp*]1?W"q'|2v_[B`K'iԢ%Thar%Ni@zM\.%@d&~zٽ"Hpx2=qJ"X-1 Tlgh4'RWΔ@jbmBjLY=hQ3 1:9vj 23=c2ß< D{"г L &vSꮆnPCQl>haȸ=fXb{IFʄ)g}? 1{Dj FFE7 sTjGZ#[8K Bc 6ͩ>%cST5 Ԩsn}2ħ`HVceѣMP[RMV9Nﮫ}_B]TaA?*J,Et#DɁFĢ99%IB>$# q6;'bߨҒGX|›}; )$ F$t~F( z6H8@  A$&XI<(D @VW@Phޗg 3"AI|  `0(ζLLa;O|,Ux"V9Q Yl&2za,ˎ4e8 z=K#TFđޝy wWMBD]XxmIy7Z0AwPf1Vs,mJW "-T-Iet/} W:U)R bNtݮ,BFu<,dzQ_x|gW2;,{չUk*/js\]9LWUeU\YСȿr_o/zݯhl š\AO#M'-7ZrS=\xɵ1VDxR%ɳ"!щn{.ﱥӂ]ɳ!Tzk>v "hK3=L6}UV@ > Vt;:<"vCoі:ߩ1daY~^ Zhk ;jh:vsP4+*>t&kuѠ̷>f!Zglv]BjAgm0RlX:!TMM{8=Un|!HAj8֮cS7uklۢ;3K[Ǵi 0&6ͷj-8R\2RoӤsCg1%}`#$xϩآH,NyWcqI\_pczq*u0dzȝXvZcs: L`B*5D:`כ[O8Ey֝[DD3ʺlM5Dp/iu0@E@u=Vkw!jWRz,,w+Xd^}ZbNjrGum( oL_Qv W! M=0֜] vEdQ.C]uUCpZ% w6^ - .*GB2?Q;ECk4لiǩ,(0"d.J* 'QV])IIl.04s#ndA2PCY5mA*j~AB/mQ:R0]M+8?O@UB*7YxH|Z#Le\ |#GAt]cX+Xu_/Hdj^MR0ΘSL)So*'F `5&~@W5,m*-FḮ[H«V"C҄ڢ-0 /6~d+,c.j3jo}~>2`Ƿ)G 3ZXR ucبǰ [bR ߨ(bCÆZ?)D#Q4c)V!0T۽qd,W3t:j8l5Dދz(ߡMd% (Z]Wr}qL'x_ky+[:Pd@D{fD.Ә"u@%-K i[ԓs;NBsL,+K;Ȋ^=SVua?C =ёB5y 2ڑoFlq_cc"uфᏙ%)Ki s [ endstream endobj 184 0 obj <> stream xX[oH~0ZQIwK8㘭mR 9`Y5~ʒC s 9~u3JOrD~,awo[_Hv3 Ӌ v(3hakCkhdds;R%< j$4(Wś|f[.qW4]jh)pc RGg5j9p!(oF-d4V @-+)XOQvq|i/Gc횬')d"HQ GSڽR4HVikc^.s{9/z䴆ċd 6pd{s!` N8/>Cqg6A:6yӢ/y erʦTlSإA_R.?=!NJiT\vߺц px5F ӦL8~ :ڬlGT@)cj(wCٙȺ~*a%K$TQhc!tW>Nvbj0ЛPh*@x3KSWe]cn"/`[kiٶb#֌+:'7).jQ*q}5$FU'3zMq=Y =cc t;%&7sebT5{V$d-nɕ/+e9dېkCGAg;Wdͷ=>r*}V{hpK`8څCPE L| "LT FNO:_vT *] %ǟ )pڞ6̆22lX3m*;0<=]* }-w~bZ2ڡ.b;d :0+SY}菃X9-sZz-9oZq^ XdLyKsƇH,j҅'~=uzn*, (/O޵;枏ڊ뵀c}GYT7d:YkCJw7HI&}1CZu ҷW")trλ6Hǹ]]7?x(t}>ݳF(:M%G$RJ!Mtvxt):,UVIgP [yAzx9 CwqM 㮨, Wf39Ґ (10'ixȩs{oߡĬѓhpL[}o ]) (X01}U{GNm[Oe<T(߶2}|EWB{XcI|IG{[dOh'zL2lݖuf,">u%ėޙk^$RialQsjCl!YjՍ8(%ICTרR԰-ar%"x[#wyۺ_$'Z;{$ endstream endobj 185 0 obj <> stream xn݀]4NQ u4mH@IcRIʪן%ŕ [-,e{jy:mo~4t͜׏׏uv>eq?'zdo>Og ?dNKzI8/X *;?s~8jPA [#$߾qJ~߼yN=Zn1H:)1<38ˢ~9?'[7<ɿ_迖$ #%Ï!v=;Z9-(`iM/U:j5kfNs!_g.H~ Zi#${q*leq#.\.4`aYq"kPCnuVBqwbp`}7!|gzAcO:u[ntbCb}/ ,V0HAaBI>1QB {"4>Dz0ĭ|6 Aߎ#ß?|t6dLgpF2cē1  B&Å{4Qc)R&LV#z`'`pv2aN5t` ,$=58q)x+$'YLJ޾u0wjy-SleϜoxTjH(a}ۿzYJZ1HG0(Fр9%Fj|pȸ]<%NlU$ےlO3~} fyJ MШE5PP=] :jQ(#b>ҫЮ О9侇!蔼ZbvA$Gj~TK`s Cb`p([+ Qe6lȲO1@K,V9u?iSWYp*{V٪[⎅Hi3;/ 5b݅ԗPԛ%T4BǎA6dh c&hznj|#7U{sVdmvP%}HZgf;HPĘ-IH_T5ӷ~U?Jə"O m-!to6L02"k gG{ݜZOo@o$./:):J/\#qX͖*BcR0&*pg4"־*WMɠR\@iUj Pe"q$:$hOzާjwMB0h 4{!Aʇ83!v'3&pMJZ6wD@ކrsODI2ɭ>s7>I|HctG1 )TGFz( ds"Jw@uVŮ 2rano5f}IC!8M94eLn2 B,t;C;MQz\-"3}9ְaf ֬ hd|DQ-rLZ e;B( ޶88䠒SlTT9=˹ҍe,xʣAt/VJ(])d8OڋU1ljKsUe!" q۴mAU 4[S/uf\T-!5 X`j#TGN7 E:@^ҖH?&(NH?܀l$`5ʀA8'!]jj ju+Kil4) spjgߑ+h tHf'MD}Fcpb7k|!SDӇp:KD?昌lx$9 ˼O4Gi]NIE 9;_u Bwԭ|nn w*:gSQN1ڴ u8  nO;*rpN^W(fPEa]QX, ]T$9gqw|N=x3i9%lfe b{6kwU@Pw_^OGQOk[4Rk{&vG*0I6`SMz+婑*-yTKzawyU.^{`$e9FJ*51ƊSwD-5%C57aI]5PxOl@0tkv-, X6g}%:>*,h@'Tf!lcᙯJ=]Šl6T.ciWԧi+bt*"VHh::j}:LR K(B.[{Ph+bEr};]TJuA* ӄ7g[h9fQhPtpn7ɜydwӺSYnI+dtky<1"[ʸshcչs jIPR۞qV}Cq Gg'L'c[_VN G,qIuӫˍ=`!Ƒzs(B+F!B#M F_dPzOV'hWJvDsih%{sVNZc;uT?UiF{'DmOjRO(unɧBw`Ͻ.%i7p_uOS ]R>=2z8XM4Ϧe6gQ/ߜIdMIJ(ùf`qva%1H";c$I"_al" endstream endobj 186 0 obj <> stream x\o6nwraK\DZs:lz("PֲWȾ7CR]˴6wWtzVV}6OϪ*O;tXv:zZ7C1Ϫb1{{9:<8 4F sB><߼.y0h01'^ tFA*y$pAXW?xoϽ2RL$?xs >1= m1 )"8(C#o}t pW},!N~8'aSiQOiWF`=u9/lzt"|oY. WqiՖWA`Owܴ . KVAgߊq˘$T?1$G:- ~t/7We6_e%Xk3C'4+ЊI@hl vϥ|ԯPI*D`G0-H.pt0IiФG Dye\ GzΐfZ+x6@i`@r oWÒ0ED}%4ʍ p,6^䫩S"Cj $hT *B]PŤkA7X$єoj?S6[k j-54]yEy~Yyb[r_3X$fTxP|W0Y_ \ju6"q(uYf%0dC:ND2 Mxh&:y5R&W+eeGHMt{IjtHB"25GQ(CNʐ%4H3] 5}~Oݐt !@'l:F8Z&bDu4&$mB5Mb:bhL|Ύ)6d4:\0=?d8 Z3GL1O<]fvDn,fs=}xw~q3pveà>}ZHfH44\ ɜ#$b3$ ¦&]V[?(5`G(e[pq8 .8سK|ȜjlzAѝȘDܕ ;{ 2pbzb@{"MӭRpT`&ԘPc%m85SU-cw]_[P0Pi 26s^C:$I㣓40 M[_ei~Mmcq5 H{t(]^l~,N&nR_fe>)Mziܫ&?M ,vM(h0'h`*aygTþͲlJ`0yq:G1^z׋*W0QUhel8fB{$ IH?_0g/s59qÐD[!~W<ԽU۟^ h .}ݞDkBm7oO;/IQְ/܃ט8 YKپn| u> U/Ǡi$Z&Dbs'42CsbdBֹWTZ-*Wyb V+u1WW:k@(!XW˵TKҀҾƒ_J`mGv)lˢ /6 ^bWWiFw̕1:KǤ[^ e@Tjm;Vɇyv{%^v\$`QDrrI'M2beӕ<}/3Ew1W$tx$w-1&̰ܯJ?>Lf=O罙?&-?a3ڗܘ&̪mD M+F5/jG &TG<([ LK`1 I]RLX ]#ԜbGQ?%)C_점d4bWu"#lLUCp2ZmZr;H苴4HjuhQ RAИtO 8:!\lա}dsIsT06Xr,iJUt0Dx{R2c#Kڊ|mݲy2$} /|(3#6c`u=F*kgU"33^@]PD=!8H"u]u4ƙ*W̾.(6pդC-,{R_8 㥌1Y>$FRNT;ΚP$i+!ZfhHC!(!UUhXJS"ĥ1V-$:W2+ x1[h*>BOBKŦKuͪi$MIμ4Fᄤ\3mmtb~|͌&5'd3)MՃ&ͫs.QF;M[7Q 7mW ^l}<@]מE%0ާ}̞dz7gjUSRòxPomÔ -X 4bTeZS+ ]NCa4FtIq6-/oE%t֑HyXt;GfaU6m'ʒ]+Xww'LCQY.:圯{ZyM4-iUr3UX]f9-NDz^{$x BG? x;Ӡ41nUBoNCL^C!ۺ> stream x[mo8 藓D)R/w{ i$ͦ>CJ,ԑ6j jۅ-< :Oi~dtdi\GI2g){39<8E0a&9@N|l#8ntwM}xp<Fr<%gkg xv@ wm:><}x.Oٟ)ToY 'ר[tj*W蕰CIrԏR AaC_3XӕS+_|yg^cЦ[ wZVtZI+.=+fHZO+|g;F^J!>ME .X;yRwސTѱp\,`c0"yVZpm"QK;ڹ-.d^l^c}6 .<=hro(ٲ`x[S0ZqoMx3xV\xH?VlJt>')EHlo) Ј$!,Sa<Es.M:#;G07Ck2ԬoP50#s I#[id?#KAK nR(/-]XXnو(zFk#CTbhyODZ# q_"4}yS.7Dq`k{aoI~jWt Fْ\{U2b2,PsXCPyl` eYfqs(@tYo6V+Axi`-V͒UOfeu+Qy`TmϽ.m9{#7fTe[0u@/ob^py%fT\+0Wn AZTQ6GT Y>`)I4yɖptXC˲q94@GTCw0?7>ԣN?L2hMXcFz&v7WQj>#5^ߝpF@Oc\+b=4:=%;`?Kw` CJˑE[)8!SQQm2F` ޘ=ibWE ݰ 2ͅ&@ ;-j]ߵU15f'5p .($إ nQ|\[>2`P >u'Bm Y1p Bmhmfd+A@ܥ*M0 @# {f yA,&|B+g +lҪaͩw5p^kH;^}_tͧgB%dy .{pQqQ Šz'EeƅK~<.\2@,yW|H]QO<_%n xrbt-~/'RKE30xiOAZ:Zp4Q`MᎫJs3_EUOU[ͷ_w^w~E!G[}cо#ThÓuǫSi{TbWjVzr6r5b5-/%me+:,3M"tpOYi Uyrl/m󷶥^u3:4Sq+j'z:ynk͗YBx%vi%,K3˝袁Y3:@;1-6z15š47E4E4)&;)>^Gxh_WiMƯ=fsec2m mI;w\o3)5h>L h&fncFs\&ٻ8b,@MnW~ysɾQ﬿@]/VpєjhA`Qk51=pa;>/؁/vuY=%j@S+ԝWexU>-hQ n}9ippG31)mu̢Μdu`elG[Es3t/+}X!x0fXax܄6ߒE*!HHi> stream JFIF``6ExifMM*&C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( )3M2*a@m}V <3t#SZ'@dMpF0SbErxZ5mNAk6/ŋNb3Ib*);J]Vgw3iu陣h6@dHFq#9!=&kĖV-Ehq~Sr-$Y۹fFt Fzj\ z*6, Qfj@Z( ( ( ( ( ( (5V{ȠW%RwqU4!,7ק?x]vBQ$KXr cxu2k-pBܪCs8sv쑨M;d;W;>̜Ĩeu]mKQ nqǸTNMHMhO3{ۑi7r46S6L?{ ,.c/-p}Ӽ]?VE)a* 9}q=Jw469HUjFC9qq=+u:J-^=[GZWA A#xk'J+HjjvQ@pݱX+BQ3Ҳ 7NOk^urH=é%Gb1pѶm#K"I\#+JV<#;qs:u ݴ`0}}1Jwc`0 9R=H?Gz5.=DKT,o_ܙJCʯlŠ((4Q@Q@{i$vBb{,c $gSүKv4i"I# 0=Ӿx i7oit9%r?ǞZ.ZMln qC]PIQmRJCg'5hFotڒ2sAW [cM[wPHӐsq˭?Cw5Nh5AoHgfv^ew 2MC?ѯ[Y7Nc;ʖ[Y2I.X䑀Ox B)"<60FO%$c=NsӒiSH#Ak0yp#vN8]E]hYCDHqrJ2b wyj̸:5*O Jp5ɩ =]AfocV@8# })4EjfQRsQ@Q@Q@r#,&!u Py+cs]McxG]w÷~y#&2{8P?:x>#jzҺXLq1g0^9kY&A$V;۔ȳF 4> u,F='^%߆~A M|FALg^j4 9%v8Ko>!.f;HtOls"Fd}U*(z O#\S\HlV->1& @@Gn5[R ԮPr 8tjv:=>?m703fXص xkԿ^\&ea8txLۍBIS\yp3SE]3:G4){i, Lh zyj慬wIqg3")'*ޤӧoZ :lL-Mr1p3qzVo<i^5,;9.N['5w鄹Y[7﴿aY8'Ǯx+hi1ccM}Kg{cN>[+Z: 1(ލ.szsטe==c惪at&=>Q[] & jo3Q[mU) =@=+k}6s `A=j%q0qF[c6/aԴƼ)'' zsx=6̍K9jþ$!˙/7φżM%՛PK26'+O~h _?U*ھIq]zjڳ9E~.UCıyc+gbp3[mtx([',Ts!{+5l;~ܞynmX+H"PY$tҸ}3/si maHWyTt&X,Aʌp+tj`ĮLL~e<_LS)st xYŶkMSNS+0Ҕ%q7g}1`UCO9+0#p:r\Hӷ I15-UWgjߦ{4ښZ(Tc))l-7ķi+,Cdsӥ_ԴHvȹ(8oJ*ݧ^͈u+xOR0HA<}+[o|<[/lR09Li4'w.Va Qn!A݌SM/cЬ{fy4Zvk{i*H A!RFyO{W{7Mk+VgL`C CYMepjv"*FӃGӃ^eAD .x4R$mRua4q~ U^@ 02{ oEK5;iXxʰi pkcċ=0y}zGk#^*]2A Q )RhެP^)mJxE%VBˌ @3Wi~g]F:VfkRܾjx#p3ںO[Wh5jiReM8c"ӽѝo~^,*18~5/k=7VT0m$3׎~S²y^$eX=1>*tYu[xA1'F1|/{tOjP"2qTҬ m#p{W-uaea8<\fBV81GӓZ-/cQ7dkN♃TA'ibޡ܊zdW/Gӵ9cgh7)bA^LKa]/Ȯy! AQE!((*9cFT횒&@ejq %h@T3xsF}IR i>5QK(*;Tp8ʷ8QA'~+猤MsזRY>Fz6?RarŲMWFVhrQkT|n?N \0 rb0ރYjWQ^# |VϮA׭nOco)T@81T[9fɂ3 r3qǥ;\-ZĶ *rQGj%EISByGne7Pp8 R^sK]FȈ I'##>+sZ$+S((((NԴQ@5]JHS~Lh A\7,OuՏn&kqPwPp:Nz~5^D2GWVՏct:UIlN!{U5&*io8l*?ieF"$d9<Ԛ&jO?uET>5_.[ ־Rc[t{xw8|S'3^+r, pEſٖ݋30sx`JFd^~&ԡFK^Aѓ(67W7 CrX9N=2x>2c B p:Wi=okl"#,W9~O>sC$FFC ˖)RҼ3Ӯ.UO) `sԜUZ=BL%ؐ,?uVtMRh^Ea G؏zRI {X{:prueQ -\CKSPhԱ${ 0+NX2}F1@f$>gY^6b:&-Q[E!(((((( 5.(پ$,Kc?Һڧ{axau"`sΡ=q$=k Z`#.@:_jݚ)_u'y&RT*aZZ~K7YV +rTvϨ=1VD`pGQֱ}Zn 3U2oQ\]xYiN^Lb|{UsP[}M9$3p~Lc }HR,WRFIJl`#$`V4]B)WTל$۸QE1&)h((((((-PGUϡr[9>a3р} uT#IPXrBvUm+Wd #V=#D{_R:>qNM&6U%mK\i0qltoB:bD׬|Go KčC `0y9Xbx'dR20x=EaufreUXFO z ~"htWX}=iZiy)Xl g* O@+9'0#T3=]%$+e'5ap~NOsZ9+(((((LEQEQEQEQE!G^ɚqH?V&(@r/"݌H:js]NV]<[#"1j@MX4> stream x[[oܶ~7#,R.=EMIpjBVfDyEY-ܶXJ\ҳ)V٢a?pv4b/uq}n2k|񂽹>>:I0i®WG/gR*bw@*vw|[e`~;>?GogWA䬆!JD~g'1K$/wGPF2!JI%;VgT,0=jPSIrԏR |Aō'K_T`PO5/_ko瑒)s2t}]mITyl[WF^Κ=nq;0_@q#8c-,X?2 <]='l6WelS??9ޖU%;9 f3[M{2!Ld7޶j^ qT5ٱed_р,+ k5>-ɸk|E VkV5s%`gIu"MƦIWY%H4}ާyͲ /OAb )#@BDR?֯ 34$F m]z3-7Ai4cyFR;t=r&H%+&?rAuiq G ~ĠЫ/ ʚ ]Co/xç/_];d\؂c%090YΞy@h;4cLSv'nwnwJН/c:)8rkRO`γ$#gHw4;`f·`2*I5yK#wmzC2'l#u&tԛ9%ڎr_1+,+-ٰ.Y6-%UH$Qa tQ{"W /]\l LVPgĞJRٖ!Πx_OЎ;H&HƼj8khO39͓_ %pBHpn#ǞӳȾv pnuKGw,4'+hEYEjRNރasyG?u?9IF.[|z_+jMnBo1Bg孁VA 맣G!ީ"j@ {(6-ޕG^g, fnv_ݛ##p.Ull9²SCn:\e ؟7tY:+\b fsY(`1:oBUQSOl  ԅHNpC!Ѯ{Y?x&snhQT. "-eH'f;hL:c 9 ew.o\f[i0ml`){uNd>}H5Ph0}ޝ_$]t;,iYet`W@vR,sı&tr};&;ҿtAud%#0v9˘ZOF"D5jy53PvWeD%O[֨49򾱌 * L,gQbu Z_!)L=,kΖ6denav:9m*>Nɚó;"=q`]̃H $%-"'E .3|0Qoy+Iú(q1^{ʍڀJ;G.Ā;!_7 $ňkhbO2T--6#S!5NQK| Y +fߪߴE+S׈L7Lk*j[%ƻ(mvE lS^WTּ}0[\)zawmn) ;F[ɠQ7h-h7qf %:Y0ƃk׵r!;5KJ7[6CC ~xʣ*idz^:Yg֦)].:t'UzMm:׿@&=hF.Q~.^|@f nGoChv "@Td4Shz._7Ҥ1Q dXY M} L*Īv WQ4Cw8K =-D=C42xaDbkh endstream endobj 190 0 obj <> stream x[oFnâ *ikZ N 'Hw=%hx)֥MlQ3yhud7tC??{$E:#.={̳?.$O咑{7r7%؍B xA+|RG7ώۗ䯒2PRJ@*_H.F߾|x~v¶\T̍(lJ*Qt0Ljhr/ڂVrcQqhr-8]:q'KS!w&NJ6#t TR f-@ڋܨd穝WhmhZjS*\38F6m 5ڴ6 hՁ@[p^HwiwOLwX $DQvlX칂IirIu Hz 9h#hHCi|t*b5:fM6dC(ϋ6-?vYv#@JT&f߻!I~Of+J.1hYbS"@JFr;Kat22hc}8Rm(,`bڻ8phvv1V9i, auѻ>lgɳkunΔ` #qo<}0h-A !!bGӯ؝s4*U-_ev(6 G R\b(v<@@il#$-6}7P 疬0WV䲣o~@o1\f_͍3 j\562vQ#C#0e|ICX8e.ڳ2y8߮:C`yX1Ȧ E#4S9Ie"r;"$Zo@ ʝ P1 NJHiSQ&2H5O]i4(M;}l\ _{y5F5FGR) ,c=).8 J뗐/:>9F J=Rd(ŔUA2~>ھCH[$6Jcg& O}`}_fA}I{a[ ߍ|7k{*X5Evm7b}Hj4>#aC3ÏdxKk4 L7__\x?b7t&x÷toUo~*xarVVx+X/KJ#S@T%xǵ3nF 5`ť2Џc*,Z NskƲFm1vS<`ܫR-U쥥70-e ZZihƑLCc9 i]L}4m.-5&5eV p腮(ȇ5{u>>_^/zS/p2B:`(b6h%f.X@hAid>Csn8}zE{gI` MքKK!,.Bsք+⩟洩/ԗ%"KFn}]n*'?I6E@r#p$e6sƲ mԏ\û*2ϼ]: v~Fͭon2hD8|gk5j5{*U߫Vzl{wHPNIRuIsE a}rȐiL4w0 w9bϹ+`VbH7"_E+7hy/,,b1s%r*\| SEV+Olp dYK/ٖ7LS: hkoN+Mqc[ݘ14 ޜp> stream xr]3?A bI\qȜt<,%Y'  4I"r~gncW]򥞱WZ_=EQX77=]=~, e(f >~ICh#=銯0Â7N7x/rU/VzDmwpyc>6e?z&,F1QkMg">?"<7c^/ߐrW?;s@RzKTYBXb Aޅs~uy형7|}q!GUu׍?!"4KOшDA ꈭjn(ɨvZ.xgA "tWtK؉7L1$894.F(GM9:@]?b[R7pCO)O-5+)ڢ`K!HQ?F+lڠ/O1HcjC#0s(öd';jEfd^UE=*i *nS/Jkhv+th9$ szUjjpLH͛N/vfTr9 .݃1&E7brUhŞhz Fu=8uEx --rUZ&֨ ( qem'+jvAAR͞码** ߚ*:&nN1 Rw kfjAFiȸLjmeHa ٗbUT5慪g6.$@' %jUoa8QZ._ SE}·EڐC ghķ;%I\U,@W#QBc6=54;뙻'CAGY-Fވ\Xvl̓Mip/De:Mѕbfۍ={m$=3cv0DZȤ-@QVIdш/#Px~/OcCz!x낦 Io mW %cJΠ1.FeKgre6 S*1[2Z-J:%h@E%'La[QCl%ZrDVAgSkQ}-ogS֗L=qkV?!?> stream x]s۸=384 v:;N^rum];7=eqNTJ(Aӱ.9{Sy`<ӄM/_p%$,)6YD[.s;M%!LGcYDBis~D }*b v@* $FPI}J>BF?]|xOG" Q(}SIr#S@|'~GP4Cُʖ߿O#oH2$ފЫ]e<[ un6$ly:ئZ 'һ|{$q=8[Xf Zu5 z>K=zxM~%K5{Sջu-oJ([|"^LibǑp‘>u|{-;skMdQl9;y-UFSl+Pblش!N;RZT8V]d ޒJ_ %Sٔ rn?R@S_ [J03*Xw>eI>DO` 2d p$(MW\]݇=Q wt(zEr[3pW쿋ίEYLzpJ}\tcdK`1"V`.m Up/QC/aQN ayGi4=i̇'5xBctUCެ9.WNЏK/{!ɨ[wr+vU*sgű3Z6 KIdG0h{mLQpUėXb`)E6/Eɺ/v&2r;ϫwf䯃THd-gqN) 1C(6&x0C5:o:c@T ;N<6 RosE oʱއA]S {e$)v typ>y- qrvHp0tE\~$l2 <ڕRO]*Ñ+',+ M@ RaR(\f5 PP:5)+[~~(]d)Rk|ܕ䧡/ftV҆n4ٿJ rke Yd $,L\y9|t׻ ɼ)Qz`H&'zVIU2,(U|Awt{F_TSUҿ-Ao5"2VX] ˜K| w/F(BAЂOx~y4}Y"/s9B0 K<|T.ㄚ?_;Ac_(v ;&‰m,ha <2ޞ NWKYTkH8H+u(ɠ(n_|D_&Xn θB-z2za߱[8829Zb*لb¯)1ˑ~ fev ~-k$>pv9x/󪘲{[T8-^%[1X_sᾅ'a;\2DmՆ6 .hMѓWB!zux mSy ^9- kf\`ЏqwH,D2l-6\lN/U,(-]+ u@kG`:q5@A F="#51r|^b n֫I|wf} n|uLܗ[@=hὙvj(Cֻ8fdA!T!.#M2tߟ4 "-mq[Zɟwۼb  oWKN2рA|؀!Hk;KqB zNizdxh_x[@ ̓2 ղԐnoÌ5FfO}d.vtBa59΀W&HXI#ʛWj,FzDZ)!_p*|M :_3 oPWf -e`xBQxAriA `(0af1eKr3rްlʉr7ϦsQ5Iays=iI9]fyL'7ȋ24w}0Q gE˥8*J4!ft 7 MPyE‘qu uYP)M+=ePQQ=b#} SW5?M;!{'ɕ?){gQ 㮻 Ug!49Bx8im|롗uaV(p8@tr(( ŏbTEOc ihj;!frUBnd"o.\,67NwLi}`<i4qf[ܖ2ˈg: "ѯl[nkUޝEb I^ ;"JHqFI[`^ .0PiasK 4:znbDә=O0nwԮR726ҒPM:a#-Wzr՛R\$v5m qLRޟiH {hf'[ eQO=Hy;wdRHB-6{*!]b^@x1 QEWz~!r##uo(@Hmrid/՚rڹbeMSxbivJ~Yk-Qͽ*!qqIqOGneAcJ(>ooN#ߨ- F'0d AMfrRRءo__ޜd@٭/߶e˟\ x'&c9F}2s_B)8 F@$ L/5liqqQǹ{p: [^J펚bE+(+"6zgMFpHmݾkϺח$%@~$ #jzd!(-DOC?ɐ[k5\Jt8G v9pk`ϒaH.?x/Va{ѧc &OE 8(9h^/_7n./|rT"z0PXT56hT'G7o'y,#ǟ* n*?PzH.>?.ZG C$xZɐULHZU)CeWXqMҩĪ5i"&(F)!@. BnB^2(c(c;>t3wxhQߴ/Wܞ#N}lm56w3(Pӄ PS!vZZ%jZȂ{2+B+ /+gF]dpGܷφj`J}3 ,P 7vC9ct4׋F4("yv)B˖|Ϋl6VU3[d;ssVwlS9: >3%TØI_rmޝ tW?4 K dVޛ`яkUnGʛnJC;z@# 6|x!*#7H!^tۋ%5V%C7+R/\ N1Z.5f4䕾c7'2"$IxkuƏ+ĻCesޖf=~C9$O9}aJj/gE u4^.k"lC@+Sjcp~Kt8rM endstream endobj 193 0 obj <> endobj 194 0 obj <> endobj 195 0 obj <> stream x[YoF~7/ PþHj7qfl&-6aT(ʉoUu&ţߕUv,*7od.ۛbۛ&}9yʊoٻػ?gY fҾ~ =? rn=6= | |7R0DПk9 ofez~vtFREa9 tu= z e RVq}Vre*ЦTS3Wly3ުЮJš{ sz_6b&,Y.6eqe襬)oHI/@s8]5X"2̇-wP&i` Q ϑ)ha'#j>i᡺ e.~ulFJUH)kfb1A; wCѓǬc⮠^D"m{TxM_wW6(+S/B鶵1SѨo> stream xZ[sH~wC?XI&xbm3X[hemݞshH@KIRqН˷Y?]]]-prn?o)N"Nkvnnglx~ƙ9S.o˝/S~~'Khx erS8+e-\[:&.74moc}|Zbzm}t˵EYD?mm g_AzVsq.=n=S$vt/#/\w㍢MyGndș e$B}hlTЦ}JM]VDf’R){Dg&K:]tG(QѯEuJ}n$Da6 e`].1\1 Z0ksKuI1XElx,fÁJT6-ZegdJm}*`& P5t0|ak,[d[RKޤ/ I\R[*=`ViU۱,x#ZUA Z)cq=Q#'Qkk"Aa-T„/Sm<PCaL+ǙףԺrXg XZqy`^|QD<^wτUf_d,zi~dH _JfTXJwz-C$*.2owžHw]Yy ,m$@m#; e: uG{ .Hs (Cw&l鶛@jM$ O&NW.oS Gg_:뿱s.4N `OݖRsnkGCecv ZCetI;(8=Դ1]M;":7yk ξm';&x>ߡH,`6}>К,[`oy/鐾CN\4.d5.yЊA@<8SwI|8ee??Cy M *iX߻C1T,e-C'E^Ԁ~^1cy1fbОXZ~Zx>?-j :hK4(*;B^Phϊ 2R=jV]EְumA89+3ڂVG !DWT;|BB!#FC qԯԘ L I k8~:%%t0Phd]PA[ yQRԀRnjbT_c bjM"Fm=5ḧ́1@ P| 5 {H.QM`$@ 6z?C=fmAMwQ^9X." 5();(m?SK'=Nk~ /ZȮ >ai9MBǭ@w^bHJc)JS)DSAp 8ҷGUf<5~UG`ӵ8.Ԙ#k-biE+׆K޿B nכz,2ir_)YE{V,5Mi@["wNRRI ?_OŜ7xSvږYF,³0& .u R(zг#þtxUgF}sMiIvFӂ0'iks7˝,ޗWT> stream x[moFn'`.ɻ@&:݇($.).ťm Yfg.y}|}mw^Ϟwdu|77ca&y!c^a2 "@DŽ{Y=ˏg|Wo( Pk,W]UF( K$>0+yxJ)Tmj/4J =6EB #cC@&'~?BOeg195HϘ9Ɔve X2?U 5LJ>0]Z 6Q bp"L&?V۞z>aܚI@5ɑA :T @v[N jHj]\1)l(03dا#?R3MkbfѠ*'ܿy1vbew!z3k iq|XLiFрygu}+`?`l2Th)2WH,F'uPA3m+A4_[PPP_M Gn\ kәaHn|_e$'P 8ew#vQ+J#^jMqep6gKٴnwq<+v 'UN G,sSK,zvʵ rSFO$L$0L2w2ilS; K7('.666C'xUx(@_yxv4-\U. d"rb,`=z/]Cb@>N56٣}*h:DyhԢq@$T$T[τd6ӊܚϗ' !ȸZ5qw >;!☫\ޚF?h>X?'9.B7 iaI/;/%-9YJ+DȂ3i#q$*g?}pV`adq< xvŦK'nÀF>RiQmE2C]ipE ۪ X;%68 B24Zآ%ϒH(ϕ1$ :-҇_QͲ֏<5=J ȣ`PF>M$8=4*#l'KRxL344M3t2)8; WW's5 !qz]0r}6~ݿ;σ^1hCGܾ}n ]$ TG`dڛoțG4͖F{ӢMNމޔnor1Jo~:"&q. /ZK^j<d'PGavā f*$)>[Dd0T? QQ46y/Ge3DÇX \׀TS=TC@C2x'@1^L2\1HDÇ\ǹFcbBC,b7!xo:|so(IڜJyd,JoR(nP4A!T+ݴ`u99)&k, -қ-)no쳟/ǺKech;8<)R1;:_ Uo_}[jF}f7.$)%9:KWfj1&/SWmg( kY·]'S$zCz<1|-M+N n-fOe:b͵U:Oc< :]C ]7^5/{B=ظR?w]Em%:a^O0b]jfɾrO_?I$-Dq5:txj/n>P[w3> oQW@{T(P7-{ xta;˯-Y=cV+Yg;P科Lr ^v= v?lf6 endstream endobj 198 0 obj <> stream JFIFExifMM*>b?rQQQz&u0`:pC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222 " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(kwH}FxTWTژq@R+n@ޣ4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWCD?ʸߊ?#]uOE>tS(LU#>L=cɑ[>1N׋M-*A2~[[6' :NΥXӳ& bM񭥓޺M]QM4`QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ+7x1@|_SOE?(LuɊ3SVo'b8ǁXNMq5Dַ(Z8*YH+bǡ?JʢOfm ҆vZPݏ.Fip^$#?ShxH|%y @xEyVG α>KXFfx-F!)?$O jԲgl? zUWu]!:c  :uYyW_{fVTx fܲ3ky6#S }ji-MV:Q@Q@Ph3K\$:ViP0C#gqw8Blozz_RHb5' Nۃm&t5RVNq[/4sژ>74tW*<^#aeeWӽlíi C+'AjsU_SF5 ]斶Lpv\Tv%G%'@ } _WۤW-b}"V_^Ӭ+I#<ҕڔhMkoprI\z?쩮%;RL8X[8df%'cSTW/hњa1b3ZF[~_g8ޔN{SMؿEV%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@qH쫍"< P_tSOE> L{|:)>Ure%3n'G%y3nN''vRYJZ(hQKROM&uࠓ+BBEόtkn,֥x#:QKA>F&NKi,"Ԣ EC[Es<nUUKi,"b:u^W:-Rۆ{f :ՠr+߉!-s<oOu1LW֦=BR"/u{y<\z Mp)Eydrv^[}0?;2?k[PPlG]8\z1/Z jQ*o&hN l|1m }FЗY328ti/XK/)[8l \W\U$}t9U8];Pm6C2.^'9Zh){ۻvkv#}dWI1W,eGmBTh;;UFG3Ϲgcls5#N?Cֻ QQԍg,z}}9-ckmr3FJmk}cxtHL@K7p:h?k+{4br[yDqqߊtUݻ5AC]&(gJkF|v8ȴ4g"Q3Оwڶc=wn΍q,`kV6|&ԟdcPkڜמPIRFY\i4V' S9ВUsF**eR ˿EbM'qh,((((((((((+"< We\ob:ԧLJ)V^&BtVaf5!91-܎W GQEEAE-8~ _1[H,X9F[ucU)q@T3Ju%K@bjzU]WIq]on5\(NK #hۘmߍ^|1cZW;IKϠ<4?y^_oOu{VPGnsaw:l0B(5O- ϭhpXTWeԍPp)QZEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP\ob*~(ȏ?wC?d_SOJbs aų+c_QEc)hhQEKE J!v<椬_jg-܃*,Z9 3\޹Yܬo>"0V_;J^g$ؔIJ+ @E4}4Ӕ@m%:@bjTj]WIuR`οot^$ͱeV3ky6#ztjK(?ve~5eY~ʫzy;p؞Ov[ eNEq$:ű 4W1z6{Q }bi-M u0 ( ( (QVyv9#c ?2*9(2ݭ['ᶰ;ӧ$~cM͍z^Sujf_ t'5RU7V~էg{Q7~P1ۚ_h7}oFG>)u2[DtLonfڄ]:DhTFx> kqi$vPJ)Jmmx=+7)lu9D-yڮ Xl~2/#p=k׳h%W6h~+e\fJ5&uS\V_D3ZAq$2M ;ۣfVcMtoQZV8EcdfM*PX W So7WOYW>hUꦚ,>Wvʑ̏X%)(0TT9Ǖb [Ely-~5"&fi#js˸ѬY`Y\JjK hwwouqIa#K#19'v3]AN(Es֩)Hc*{J1uM*Rt?vuC]Glp WQz6{"5M"ctN3{W5L5~_v[ ZEq$Zű;L7Q۱o)w WGZ((縆yR(׫`Ƥkq&oO, (TT#ujEMiaI3uEmĜ swY^ivRg2* O8AמG{'\S[7e͗YeĩDghQ^h.2&95f k,4߳{BvO&ZǢE 8s'Z`Ѵ#P.eeD$ʮ+.Y/| o.ne>gVD@ު889-4WTl,5ԎqcsgrcQf \kf] Cq_m.f,_u XwUŋsJ:][tQErQEQEQEQEQEQEQEQEQ+7x1@|_SOE?}fVF?ZʫJ1 KM 1ii)k6R)j4FGF81}qY%K+l` wh_}+CW/dHLQKF+ RKRZ9-G[b7@k~4 ׿ ;8H=č@P)KB*b)VR!e # AZLhfc{~ں)VI 67Rլ@x#ƭOj!Xz ?} [5X67Om' V5)+sCozL pO =[GܮR`̿oxb݈V#{wѷXƋ;ܮTt?vuC5Y~BFgE0a֬qZ`u=ѷ޺ 5 :;!g`:iZ-̫z\ܗLbcㆸb5wo’I8vt_GA9CZ]Z P[ek+c-~֕̽IsVcTjnm̹Rإ!%A#GJuPEPEPEPEPEPEPEPEPEPEP\ob*~(ȏ?wC?d_SO.mY9X٭ǯ}?!iQCG J)-g(!iE%-dѢ9/>AZJ~+VR.}cSfP?lWv0=R (nSRq-!^ka% 'ĺVDSV *G!)s8ٚDB)TqQNMD6s]/,5+[=>풲 lj*osμ๮oG ֱkJIXAn^֔he$ݣ5[Mbε;N6xчPjwi1ԣ1HtܾƱ563\h^c(eJ?խ?ZvwÆJ+{=Ec*F_5ָ:v'yq| ƼP{ڍ-n#5}A(}tm5{Oj%o>>_xm @8uhsQ@Q@Tsy D 8 ( ͏\$a:^ mعPoOw+0HLqBOG^6]Qyv/?B9/ Ρ5O\C.]m$*cMaѲH{ #?yax#DXd),qeoq]B}S<$CyS\;[Pwi ! xʏ9Ԋzנs-FzơhIa"ک ҳ.Ykk+U9GTmgZҦ_R-٦SGiEpPZA2g-tOq_OֺogQ6euy֮ߍJעy}m2VI7R\3x{b:a{ax4ҍrzfjn9S[: LEv3.TQ]6*[G5)o'0;V~ãiq /#¿zW<SXJ i t g[ѭѦ,27>r@~l\\tIᵍYӪۯd_'ޛ|;p6p#/Up9Ofkf: OYMǦi^([8Y\Q%Ƌx 枏hKh2¾{cQjRi{_s =C}uqh66_jjķE4өQIsXzZO\F?ғin\)n4縊&y4Yd NmPVp//_prO 2Yi0FC.&^F:t8kV+Nd(YG"Q*%%&_,m "$ qjv.O)splԌcE:Xp{IQyk/f،1vvEi]x]|.4럲M$$ +2jY[o$Qrñwܛd97klRXN'nUQE@Q@qG쫍"< P_tSOE> bVX#.=zAҊǛaҊ` aܾMg#fIX,759AF+9- iL1nU=0\U$pWbbZQ K 8hc-11ڗĎ8(4UE(q)FTdW3!*~ 1N{{T&K_[;,g}éWP$QUQTz1WNr &V/o^G H+mr°PƱWУU7ZG>UDEGئ0ƨ?SYWa=Y sSM58X@)PHqԉMޣbmWBmuT=}ZѼA#Dm5(NU={f.a#k 5%SGdx.[U &RۥGOQ׃R%m|CjrOm=đ8QVw\0'l:_@oǜU_5**>pG\ǵiSVꎘRTmV&^:S*Y[B? p$SWa-Ɲ2xZ;R`θau>~GD<5i.WWXE@:οo{f;8X u=ѷ ZC)H k=X,c"%޾Ƕ+YQj]cs:=!.Qc.@$K4]ocs? 'mrO_B𽬢 vrXdBէrci''Sz4/cMo|?:Ӵ㷉cH8עE(SV)3)l-EFAEPEPEPEPEPEPEPEPEPEP\ob*~(ȏ?wC?d_SOF.ڶk#QϨūE%y)˜)“9KN魇UNnOEuܠow OǨ5VWT͡8~}TJA<wMhE?4ٽ/o{ ,T?Z3xJW6~cqG'3[1-#Y> #=APz=iyHv[c哶oT+ֺ2ƼI}:iԔ>oxyt4T!f_O[궧jnb;'m_Y:0eaANkN"b^WJUs.hz3jʶk׉`ms==몆`í}bi̵tSCfL((((((((((ߊ?#]vUQ"(J)ȿԧ@fjc}Njk> B6fQIEv`Nu&48W+x~GYWSڹM0:B( 5_"93Z<:EA\ǝ6|zzܢ )'#fVOb1Z͘a3{r֎Sx&~<<ť̓tRȰ$p|>6 ĺp$1SkOD pP\N{Ɨ(ơ*FGm5Z[Eik(("sxL{>1.:LHP)i┊+sSQQ!@)RNDꦄ()H; ڡj5(PD.k [` Ύַ_c=m%($9{hij ͏\vooʪHVu*sg^+lm+Ge ]1]z H,рkxZZ%.*_ #qZ .msjAvPv"0袊<”SiԘн޸]g%&oV1ZɈHF&)ڟ7hO9 J(cx[Qa Eǩ:6i?‰X0>m{S +QR wDq5KhOMlXZoj5@k7z&"/w*BTh(\Ζ\@H' ԂXhSWv$ed>8?hekPk 8cTP=CGBwwS xej2iyg )@\U"tSBb)Pq\sU.'5]LsYf!sU=LsYnt&w 5p[vM][Ktoq^m/%[i rtøict ZݣC[|F+qq-o"(e{֦XuJg!;fnǨ_b[_f 0/[ϵwEh]{{&Ƴ.aMSLqC~ܻ֮c0>sf*9+(,cѷ{YZTWGN̷E5["LAEPEPEPEPEPEPEPEP\ob*~(ȏ?wC?d_SOr0(# G]A;jŠZJQCbxs5 l_8oLU8Ǘ .>VWL湼13e%vr%PQKQp JZ\#MgG猅ѷ޺fkM]8N̷E5[4b ( ( ( ( ( ( ( ~(ȏ?wCWGDy?/)"R}QEc QZ:~]ԝ*FMU`íZVȮ#ž+ 1̟,1o޺f :׸>Ynji((((((+"< We\ob:ԧLJ)QESQ]=o\.$_QX5A<\}/jJJG)j:/5Դw)d_{|Uk ,Gd }oْ ʺbQWmo4F=GOe}'Ն*Oc0㌇0nOpVU+m?ٺ 1ȧ~i`c?CWv7nm8ETjxj"j_3_7̩:>eJ2C&i=&i*&ТJTm%BQ4$=Dd$=DTM%g(F$ HQ3Nb#5Yҥg'MFi#ΕuTAY]ҴETxifuHdGLgmƌ@U$Kk˹ uN|>ͥʫpӟ\{bnu-Pm%A<>K"~%.B7\H?u{VK67ڶ-4Kk'3|\4,§tݣRe{m>%o(YuҫVOWvzaX!捨Ixe'} {[i=K?vUWU <\'XP^U 3du*ٮ^-B&N&m0nӋ-MVȧP ((((7x1]qGR}2/)EPY´ꦠXt殛ѕhޛ1kGޞ1P2O򮪸?m?6v@3^Wi[vM9nwRBǒLEՃ7"tU <,'X/~CeNEqmжɓ?4mC6GZiٖ覃u ( ( ( ~(ȏ?wCWGDy?/)"R}QENA LWc+O.As^oo'YGQ}P.}}j}K;2*FdM.C,;L2Us/&C*<9q,o}VGOfzgJD/QE7UVzi=Q[yXՎ+7E=DXSxLI<{_SW6\z8OӓY;CTO(Q`F\m彰7̊üy^d!g- u9UW:KNϙwGUSB[IpÃ,*/֛!#qv_pMn H^Lqz_u~&Bh38\k-!G*"Q)zCbB=FQq:TE2zQnjZMe((ȱ!y*SN~aP~&t4pdq0\DQ?7S+УV]f?M춑eyaobxOmJ#a%i<+ֽb@j&E ( (1u_qWh/]7sKz ,y>VfH潌s?C/J^)}jxjHk[?m\ZM&qx|$֬n?3zsHQ*$ ݳ߉&n o&;?_?Wdk Eẻm ٲ,`AT(jdno|5/f*3.OjshDdZa2@E2ouҁg&}}8wѾ5{+!Yۗf{Mrv/7 -^?h3[˭e+P9uYJ[-95bGlbncV:7VrEף)[\xAih V`TlUIْtq,JdJwִY/R,ߖY ro³8Vi^_6DQBJ|AifB= noγ̮t3,VhYizl{mU'9zͧ-4<eekAk죭HQiӡljDyz1-Pl=fMG3Te]TgVmb'bR7.,)?޴|#{;!XɣkBuC2MBm4܈nU=#[ BoK𭕊!atJ< V{Z^[wY?S? UplEJ;Jnw1'_O>vv2 ,v(mդ2NJlkRK@Q@Q@Q@qH쫍"< P_tSOE> ( (9OgAT{u_^yƃ]YOكdzZWCܔ3N585zj' N USԸEm"c}ɥoz j ;e(>s, apGʳAry*>XFdoM3xt3ZO'Lwε\ PnZ\ i0*3'nl,귙P\Vi8nM6WgE8CJQԓ\o/2?Dк36RK<{cc_= q\g6B2j&la?_oE B8#HtT&z~ɿZ6d<Z;]j&gNQu:DǯҦI%vu$-~o)?u,V;jzv/S:%h1fܾ?ᯛ+gYuγ?ea;U "MEiK!zd՛BOZ2j'Ds5FZQMTG޳h!KS  NߐmBL l*sLjbѻȽ$sQMR}Z7m=> O 3n=WWxRg }G5:;=_y-zq,?wJnH=^Owv \Cwɭt\Mx8u{ynjهOjt)ȇON;`;UQe-V v(%Ҥ juQEQEQEQEQEWGD?ʸߊ?#]uOE>tS((˾'OxC%mֹSσŭqw?*<|YPn ^)ȑ`56iDpH碩& T5'Fa<ʏǏQ="ٴ#ve482G5[Ź0 2*F =sWlTAJ2ąg֬%Oj3-CmkmIi,Jp1{m%GO5opq0lTJɯ йQMGnow?sϷk,OFAeCz`V4<&,ʼnP'{jzX]|}87ot :8S-oMuM4,qVc+_ClnXpg|K)h ^Y[H V6)cȫҚ0,hT0V6ձ[ڳ8[mݙX\yaH WKp;T.( -PEPEPEPEPEPEPEP\ob*~(ȏ?wC?d_SO(Ҋk#A@ \ kY$}T<{:B9MĒŪl>\<xsV'NUQyH,ozMp=E?@W7F/iRβrΪ1{ycRO+;CF[Kጭ*!8,׭āOZ;(UVWgTW,KM/Fd)TgYk" HsJGWiVv|M2³SC-' }ݏ$5y!$YT?#X6]Lָm׷\ڤj8GNb77ZQH=z~UR:{"';/yP#7ǵO]zP;WpJ[hyq'tF5*8Tvbi%u 8orvv)pS1𢖊((((((((((+"< We\ob:ԧLJ)QEV_?9gLJ>)\oN`!)]&xޚNnjz(ty$).˷wrzM_}Fb@%޲Cy 'bēc,k2+xV??$S#-'u'jbB$̏<՝{JY(UӕnSjqh5<5ev827ݍFYcSf̌=+hrGW~NM fռ&{:Uoj:7K |jgakb ǖ?Rj5O;-o_q--m[ı|O֬n[((# ĠӁWkeLjkXڶ?($=\E*ZIjB qY[Es<l.oQ<_ӓո,vS) [Y95 RK8vDdldN!Ҵj 1Y)OYRw)$8*V$/7w;^c/%\U*z-YL{S>aKRCP 6*֤yZ{;4rs[c#w>]Rk/Mj"_qb!ZM1hN1ڝIu WUQww{ŢyQY?aM-R-MIMHOUQ6}=j[M:_|1$´:WezTbiYdR7ޑcCWR/qHdhiR5#j7_a[dOM%H~̠#_o#1k/gwao!ߙ*( >"]ݗ.Iuo[=ܱjj[֍u} Kx~5%.J[U]6{A Dzyx p_IZt뱲-l oFJPhmNKm{1ih6z)jFyq5*OC ՔeTNRR9РSEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWGDy?ʸߊ?#]uOE>tS(~(}ŽGsWG|yrA0{9 >|l|,{%@14J6<8L&b(O׊kE l*c0U _{6uPRn&{t}w< :j[` ~O֒^UlεM WN ]2?.I/ƴ-!%_毥 o\.2擻5Քjto[_ D2G=`aMsMؤsmZo#+Xz+@s?QWQFQTt`WlҒ^l > xTLtQ \WVJfnMsv=j}E2+g<VE̓:#9{LO:$T$'il1nlysI`u\C)ɯjw9V?0~Df* 槳IE?цba#΅)9dYẏ(?u\>x@6]xvM]{O⸞tox6yŏHH#sQֺ{ 3|^I71U]vdJVkzvZ#=z)DjT`Q,n} s ɐzxvI?v@85Ճg[޽D6Ҙ19.]1Ȯu9:my%mEw>R%)rj4h;].1Oou1LISv"h,:܊s(;I U+ RQd.D;jȖ3"x(. j2V pi QEQ+s%$χ*_";Z+GğKQ? Њ5}Oxw)<?KPT`[p;W)|H*_"?G;R,@v\g>$χ*_"|ITEv+ÿ/G>$χ*_";Z+GğKQ? ֊'|<;R}Oxw(|ITEh>h+ÿ/G>$χ*_";Z+GğKROxw(|ITEh>h+ÿ/G>$χ*_";C\U=E$z횉`*|TOxw)o4z9[Q)[&eGEs,f5vr?Vp֒8đ8Im1MǵjT*zs.9H$qixmSLڳo~'Oi6zEMgk E!62Cp$N{Dwxm7͕gK/I8O8+bSt._F3|Dh<6SLc%vA4G·qJLR$%g<ǞD]/]B%/e!hdJc=@C yxߴIoD<6:(RmO/ LM#vº݇#^[7d7F'c^o|̑~/M$ &㓶ArZ۾[^r~ކhRr?ޮ?fMoֹhHX\ITo`#T{Zk[Ft/Zt:kVo߸,l6zޱ ;p@ ~pg k>!C+Jgۉ\̽~!bcK{'S%>hgjOIiε$ R4BfI#4/#/ͻv?_y*^|ܽo; xF(_{;66+|r8ݎj"xIX^V3a2}k:#Z_p|FJSH+xjѭ-oQƔzGrY؈`#ҹ imJos&ͧw;|DvŦxmn%% 7gM/Jԋ?T1p\c=|rfxoH[ܮo{Lg׊5r4[$?َ1ӥk3|Eh6ᲇqREDgŽ.$Zo.C-XAE+ÿ/Z,{mߐ۽(weQH(((((((((((((((((((((((((((((((( endstream endobj 199 0 obj <> stream xZmo۶ 'ehd")idYnI*˶P[$Y=ԫ-*ꐛ,=<NO!va- WSN0i\<>=Y~szB^+H_!a>rx8ct6`vx(0Pd=Xɿ TMP@\#1{Vmv$,d(F)6wL)G=G)SK,H-blZMZRy~Hv?cJϦwwo~ PQwct3Di1 -OGr*[H3P9CH݉^̷Y'S$I0*d#m9sLLu̙TGV3jv*ác1B,aύ۫o^]13{vx94Fn1kd6HO59=~h֠/n?q3QC"sXk0oCy;y[TS &6++C|,t?@)M 0HxGCiBfHApd4CjTXxjg#031UĮ85g vcۿԆiL5y ꁢ:X9 H - 5sQGv^. U13)wbUVgޭF~6 },wy*,PbSW ԢbP,!jEl7K xkPSLT }E:uT)нRfj۾eU>*uCWN|is7m1P3> stream xn6=@Eˆ] :vݝN"Fm5JrsHRly Tn^,ҴyU{{Y2i#X0ex}Jh./BС_x 7ˋfQD VJ$c>攧 K5.:bwy~x𐱃L X#&/߱oQяwg8*))GO5i*P?JM@=>]^V`MAw!:>Z sboOeԡ/"c0du,?F-;2D 1br19abq.VB䭇00B+T=~>@_/ Jʨ2 4G'RG">3)h//܈P@^&9_wwu0YUu`EC[*.-;@Ⱦmo+\ԴJY>ږَ~H%- ƎpOۍd3` kH-*2CCqdۭ(p OM?D9mp m8WM,o( *DW&o4O] ]yM:˟{' [njdc鮾Ū`ygAh G(4"rJo\O%-uP4zyk&{RpJ(w'm(RxmuX+*["ьe):Tϖ S%~pReghdNJG}+fZ`rB6$ʎHZk%"*Pn]$12>K#*Az{,P"F|F$S^JHgIFGg98XcHAyP޿c4eN因Wkn0CU4),}oP(H-jIrQ#%'9#%`gDlPR@ r媚"ԝ*ȞJRXf~ _ *秅/v9 p fK Ǚ}QlI*HI%= @K =Xe[wh'-WӀXl{ _GJҼP%\jrBN!} c8uB;q׹^%> Hy zb0Dtup:@hQ;( v}Y3D̛3Rr'،Ԯ73;ƕ( 8(,IvEJkzA:C208" *ДX` #HApvcef79bs0?4egs(y_d5cZVQ.0g%WeGoh3~_c] 1&pD9Y>GjH[ cz1P쇼o,2D'h!}࿍HxyRv6j[{8r ؀:b*4nYYQںnqv0ޤ\9U(\gcS%CQ>/Font<>/XObject<>>>/BBox[ 0 0 680.66 410] /Matrix[ 0.10578 0 0 0.17561 0 0] /Filter/FlateDecode/Length 6198>> stream x\ɮ%7rPp T*9gnA* A-ڸZ{3HFdGZ@#'oߘǷo| 7 77M˷o|oyZNm5ehڒRlnCCըؼ6w?oXꒆk7 v AE,̀?t-j !uf͈vVcXwnh%ySoIw@#q#ߞ[rzjӶ{`UYQO=,*kJ:p4X^X15Q=Al^HaQV~n՞ WXjJ0j)iM zy^=xOz ` =pPp2z\q H#6cxD@zacѯ671c >8XWn9p+`%ZEEqax42[-ĄHg31_K;>(?z<O'a|܆.0g;ϛa~ē?0Za\&;2#0Ψea챍8Ba ~sD=Pcw 4 i4xW<[E{b D'o><ooDK2q 692/߾7?Zyw[/iqd[_c :e \`]`]`~Y?C_ s/)g r:e~Y _S/9g p v9g ]`~Y@X`笟 t:c ~-~.~NY X?c_S///9#~9c~X _s/3t9e~X?_ _ s//)g3l t v+ڽL{?].#koPc2G~Yw cu(Fc3?56j@75yպs| nv^P]ㅥ;f4J%](tBx^X;z"CwWsh$So:x!+`c-rپϦȏ QrWS%p sZy,j&xE3Щf .h&\3!йfs̈́ 4k&9LrA3عfBs̈́@ A5 k&9Lt\3!c .h&;Lr`fBs̈́@ .h&;L4fB 5k&:L0p܂fB N5\L0vT3!̈́`4k& A4i&8Lp`fBs̈́@g 5 k&9LrL3fB .h&;LrA3!ةf4]Lj&T<%w X\4䂱sɅ $K."䂱sɅ B3W$J.9\0t.Tr!c AN%J.rEr!ЙBɅ^\0lEr!ةBSɅ %J.9\rAr!ع䂡sɅ AN%K.:\0r*Lr!BS#W$K.:\t*\r!c A%J. 䂱 .H.;\tAr!Ʌ` F.H.:\nAr!عB .H. lJ. B K."`䂡3& H.vErй䂑 .H."h# FN% K.9\0p.hC$ ]\0tArE.H.9\02.H. `䂱 ]\0tArй䂑s#$ J.8"`䂡+ %I.&kB2JSɅd~ I$Y\HcAr!yBR K گH..B+ I..\rqa璋 "*K.%Wӕk{#e ln܄>W]`p>/6H2r^5jbV)AVev&`K:uF"t)$,d+T-̂٠gS hCt\nM R'6M6ˉ͘ L#^Mw :X`B><tlYXA:0 rW0ݲMj3=d "h[ ~8Q 84 RtCRfRh Xf+%`3 XAڡԨ%`x"a59$f`i 6[QIfin z~[V ,C3hWQhjWڡEᰛ>e?y#ua_"igRyN<|#8XKi48΍t>F?qd @2R^tbt0eڟŰ #Tgpl _q{xFmGzqk}G0Ԫ;{m 0IpB?|lΕky#퇷o1yEҝK׃\lؾ!)\$Ǚjh\|Ͻ4}kC}-ޯg*Zzcr5]uZ72]|/G( ~ʓ$$4{gJ顢6WH+|ʮ2/G#6Mbɧ8rHp9R˗#$(3rđXq!E޴v/7L9T*Es$/Ė{F5y͌(ʌ9=%R@Ze5'9s䠋l8bLɖJX|pǃWM4OH\LVzO:zQ>E)ehZW3=29v%r-r`W2Q8 fEvjW9BP+IG"P- ]!Stp y28i+tA:-LSBjd9CY~+'\6+H:KZi_@!-}9sّlΜ{kFI"iJlq{vȲӡ mc|(|-^~ҘAY>┫n.P4]مڜ}$($킋uo ֕W94x4E΃|ƒJ1CFSa4Ց\ctOqt] Mޯrr X77< RY[ x149@ۇ)58J}S ?cۅ󫧯߽O~>7$847;8j{~yJ̍[cR_=gno#7~m.Yy[A˿byr؈-WGy2^tI$L҇kGBjڐ\\qg ڤ\-Lg{jw| [+H?l-%y_%jP6l QJț~ݟsRĜވ^8㍾u㊳b'"KQA[lh2ݶfq\L]:XtZ"T{"#-1:8឴]K 2ĹbSyCN4]+[m[e,uF_W'RͼS&[Pk wJ<{IURsC%$Vʼn(F(fՍ1|w/iʥڨ˻~{( 2,K!g0ay}Mѝ+RErY~^*[nhg>&oTߔ[&g}wcZ:p?>NU*+ERE=]*_ta E-ڹZ'd pl{*|;ehLՈRQbےV./iASޑQ?rn!ݾc.@0}W/`#J"TZRi=XSzB{vt- ;EosTtOEbnZx3S#SjHu{fl=}O#Ȇ׫Wo2}}oCMD_Đ-DbswRMcΘPDQFԟ~/;󸿏_GdcBhll%Pf$cgѹM߼,>&_6/'ֶCjzHsٺuFUx,m>KNV -_~gvZs Y[^/>ۿmY~?m]%;gդbzPB#iT&qh}lY2hr]Se/|׈j-Q٬[@!`59e|tVBY(~G+eVIRH芮ݟ5Jy֢I.+fo/b˵V[Uach jVʑ`wt*kFhdI:]6bA߻h&EyleޣT*Nެ<9ЪUviy(ΪT($ixJ_ J}j+Vk M>(>ž\=䇞{qY5+僟j}uʫfZ4iNҗk{o5;f+Vo6*I~ltłw`}g,gC_rJYe j`4S/Wk&IGzSm[Evٌ-S-`n%* V -Z?ݤRn׮L>HS]ȁ6bE߻]0.a~˗-tN3bg몐cp, endstream endobj 202 0 obj <> endobj 203 0 obj <> endobj 204 0 obj <> endobj 205 0 obj <> endobj 206 0 obj <> stream x1 @A/Xx _== ̶l$I$IJ8s~8s?sy_s7Ry endstream endobj 207 0 obj <> stream xc``yyŋO8@W endstream endobj 208 0 obj <> stream x1 A A.Eps?s9s9|9{v#9i8s?w]( endstream endobj 209 0 obj <> stream xc``YyyŋO8` F endstream endobj 210 0 obj <> stream x1 A A.Eps?s9s9|9{v#9i8s?w]( endstream endobj 211 0 obj <> stream xc``yyŋO8s& Y endstream endobj 212 0 obj <> stream xWko6n~)Q(Mneȴ-TW^JNXJ!^6xdÆ.эϰuӇfcR}=-ߞ^|wͻ˫wO4Sj x'Cs{82"fnP_4=?L< t>0iHVa#vVHSM %7V.)k9r@Ѩ8rB䐵Ѹ*>{E|1n㦋;{"?>;@`sM6D Nq|~#za~~?ʡ+ endstream endobj 213 0 obj <> stream xZo8 )E+ iɡ(X,y%i!Gb9.bR"3Ù<ӗuu??}ٶrTyz}Q"/eWΫgΫÃs0Kz~xcNz~"ȹ^òW w,Ãss {B?`N ByiR/DZ̟8o>9^J8 ZSO(݇׎oؽVJc>^*HjU]g:X{yyC鎿 ytՑpMU<:ܼ\8(?:n٪m2X  E#s8pAF)Yç_ގ`r$% aiyQY)脻# wrPwOy {0=@W|({^h'Dvd3(v>4H dѠ>Qn.p;s_ѧl;-Ϣw'( ~ߡZe3yut9en'y3(-Iv ǙHVM2z:Ǒ+53M|Nc1aT 7Q0T4 ݛBΐ)pyHC*4E'/%YE=kْ .s40lO)z͝ll`pY5zjeHQ"݃FF*~"!ηx`C,>يpݱ!TFW,fP+L '= ) 3SyVD:!+Oe!sګ5S p6j# Xc 5R)="x~$jC2pƛpچMn opRWԺٰ6@,8$L6JXyނ«K?7VBm(ѡ3RsVsep ċIc r5̅ۅmJوÍ>m\Ap3B>V7['KBu%qnY΍**-݁SVL̂{Koռnq9\\Zie$Yƪ8攪ef:vpk c@`[ ͠_44FaJsJihA XĞ/D;''uVܦ5mG$.q"[3%0_Z_'g<gW[1)7%X2ge# VJD[NEZJXхb ;EbQR`@YWa&nNA W_/? Nojbed B"`(q+)gz/xK/#t)r#K`N Pul <3(y^i"cT&*?LsBc"*/ccI\?±H.ƫ_r |Q&s$odchg1 *2} 1Ⰿ*<-:lhv N2e\BTlEq߫ii:iw3vILb*L{#An cy2!B剗X+BYbM6Z軋5E[]/y$yn\mJ_dK zԖDSï5Ur{blΙ9!H06I\Pgt@W`R1JqL]rS{yٴJqm)/l\O׈Tⱁ+ڭZ[YnAnʛZ1 taSܤˎ[1Q鎈^haP͝5נORjW_q1PIPݗe֝idQ1[5ʲd/ĶV^TCh_NADJ-!_^T~,j 7MD*̛]'t5ZJ'5'6x"|ak2g G7LwMb;CDfdaJ=ÕؖR3ܦ cqvKe} q3(M#4@m=SzͰJM-nk\O&JppY~Бu첄$轭jǦ _Kp*D&{+I*-A|{P_uc cDR@d|ׇhS~};>6Y?oМNX$CPa hbu| ( S'@tpNjL$N endstream endobj 214 0 obj <> endobj 215 0 obj <> endobj 216 0 obj <>/F 4/A<>/StructParent 88>> endobj 217 0 obj <> stream JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222@" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?xJl6Q\ȷLo9+BȂ Op@?=~ok#cwqs%';Vi{IX˖7=7.z->=uvg]@2d ߈זxVJ׳F׈qxOӴShWg T)|ECþ`kfnF1X<)>/_<\ws$$9%$zlvhuXNI=N[B*J> i6%-O^lu=2l<זiXK[+Z8a3[ ( cl]ǹavqO&`;|F<+hI(c ISTiH%[+h!cdnlXmRϒ.94Fn"]ZW{\H.mfUH1-`T\kّY 0O1WbsPԼK,ͶBQ2vƠZ^ ֥I,aW8NN]\ݞ~(h_⾛ʟ>\@彎-céM`_I4IB6lx3 G*:38?ZD wr]cԟ«IO \\CZ}`wri|7$Am;B?n%̳fhtӕ#OiPg¶QD>+;>5x_3]p#sa>7xe}t=~JwNSoP܊`٭I<!sI҂z Sm]'ǿE3GjJ۩?<)-qG{p2}_?ǣiW 5ߛha4Z瓊Jz󾇻nE˴d[ ~{I>1xv'6B@It7˴ cZ U-39kEF 7|dĩb>Q|hV\Fp1져do.x'025^e[K trg?QOA+{Fݏ{?|6hjK2s ௱H<1/vę?x̬6P ڣc<%H<'F a_buV]AYP!MK m{39_?CErZ~(#i3O{){]FF(ǚ_*}+K>5gr\}U :n888wÿo^Cmx,fE2`u yU^"ev\oE_ 2ObB:%F<%TwHz)hcc>4rkX\M3y|54+cIw9* gWxUmB6S95wR[uTP[6i{_zW:+}VI"ݶl1n˹b}y ?aҦUjN/eQ58!nצx#YXj럘 rkڝ2ǥu.tf]ΘWk?ɪP{[:̟ae$ u"Z>tk9a<-.m(nmDpp<nZ%Ρ,3.~2r3ҕIW +6sEgf*k Ԗ۶9XG/hӭ8 #I##]mYY߿x<`~?jI+^9ZծYwGn n=?k7s@qֺMMD-X~lpZVݼlb;jKSG=ớTX\:m9/= GÓyb4O::'[v;99;M4j/fB՞^ xds+?t?ZʾT1xy?һXt=/X(a##p#XAe!9fpEBNܯ[Gqyef\=֛p~שI |ʮ6Uxcm~=΁vއqһV]Jb&}otNA3 ͹+ۖedrN0kZe؅cQ^-Yd9T5xw4N̯sgVkm-qgr1TvOo2+6]M.f9#=NjGc]B6'BMkދ]F߻^閱o`̺\}A l叝.W88a+YYcPH: "ޗ&NĖK,]ɘJW'L:֪RYsLUf&}Iptv' om<A 2,-i,LyZL?uOypRq\Sp+y0$~|.6mӁ_{Q\GQ5?Y,׈m} Y,~܀$Pƍem3gܚN.VM8~RY=aq M*RVF`8cYh([Uy+ϗ[d۸3 ںғoc TInCE p.'=k@x;FlXLɹ5~k+5ruv\ ojQA q}JIvGs//BǓQi 2@>E"5rJ7Hq?cUhF>à5sỔ;kVILh5'dbN@;M4ȓMr9x\9W'9|6L݉l}t-cDqUSF/2m+(;wRTXZK5ܢ=%֦Xt(㕤(^I'֥IeXz4 (4i-e#ϽkhR6Sd8P<:/Zժ+LHO=rq^y;}O=IF}נK/Pܴ女Đ䓴(nI\QTQEya\,S=KU.N9~}@$ҩx'Hl~bPY6Gȭ/Oܬ}}i.kk渉Lj* #iz5YEg}o)8I(Xrq >Xz+\[Z*3PħAtz%:^Iu'q<quޕ⠬yU$*XkҋiZĚd9wuoRHo':RFS飯Ə\Kd`2y;G&lKunWMn.&E[S@ kkJT25!_Ҡtk &Z1}EUY7I%6f_qE01*f-Ff]\)id==]+Y^%(DQeEǽU*mqT*abML_*b2g_x]+MF"MSߵ#3?6uym_Aֽ |~JVIˡAm:yQS!v,dEC2kg:_ip^[ādw+ N: 9mk pVN$&^/C>YmUFWOe@X6H9JGYk*mVVr1exiE'b dɂMixCwΛcȍ@-!8>qޏh֢P8cM̭X7XZ5hjsWUK4kh"l7;@%CS)_ [:MԨdNy9<~Igk69 h^Ui=z~uMf70dBI,~qgs,?kU$ZڜFsN.̅r,K~r~jmp3BcRJzyqrmWy wwi)>$UhI>5\ܴ^cXGps{֮#.EnF$ާL4V ?ʚN|f<>+?2UnXǯֳe8=2*К{ySLD@&}3Ygaܱ/R#US,)OEr!Xin=@g_*$|QGҭyKy FrP* u/Ơ{*?C7ȯk۹Z+XZ($" -דTRh* ڴC#qTw3 0Ҳw}^$+9.Ov-" 3}|݆k 6/'k@z}=kT1 ,A~Gh7w)%%dzmQ^iSeco[#y|:x57C5j-/Sںk}\C Q ΁|n kB8a$qºi<;qT-|Yru>J=Js'ѝOHh7$bHUmv+|=oJ47;q []%%Af2A=@5N ?U[Kk!Bq)t(X҃r+$n͕ն[ʌ>d`~e#kMiVwW42*N?j<7l3]Z\i6d{I8I>=Z/T1rFp:t.PN̡k݋OWcIdǧf>ճvjk:r rP~i[\Hd! $/tZ;CMKuqk* %g+}4755ՙsjT&mČ{37uw{r6@7}(ȔB; >>%X vcg)%uYWˊC& ?*/tm?[='q'Linοgx#X6_h˓Pgorlos4s]< =>[Fs';M/xY+Py~1=zUz cݬЏgʑ+f^NdE~5tm+ykdp3ޟtҒ'I}7(k;('yRdx1pdW=l;CTl1Ii~Pʼn?ǽg:-k}+qWzkԚoM%Ϳ.,:S-aAn ckİ|%$g%ƜT-"#!XGϺ[/Z Q[Cyw3q81ϡbjżym̒e*o*Yn`i…Ty捴ctSkfm|v4$kOBp%Ngq4(d<հoOst$sMڸTzzEwK –=p2?ٖ$y |֭[[\v(}w֤vH)-&I1-nepy1\;M:aZZ~}C/H\ ' )]-yF#J\|Ol8.J;U%ҵYX7`gB?QZYN,5=X.e)/-ڎT:n>6#yP 4e wWPo?׭?LJ疥;;=,}4v3*rs w/.gDq\FcvobF+ٞ9ӥޟƹ m-A(n,yhkV6Es$WVu%SݲsΚVH}nj;,dƬ9b~O9xpm=ݲprA5OƤ\R=!:p=km,Rr?N: 9Zϖ#~*nF^S]^2 Y "vs^nn"^53K 1e ssOԑe"vdQ<ӽ5nFoWi'ﶸ9C$֫[xB-! zrՖ,慾u~-LV*x^PXXivv,+u5ׁ5FH*͜f[#k? Ex[O.di$Xw[=@NeU㮜;ļ7U]:i[PBʲUm:M]-n\47̲ 8[Ǻ Vʶۑ4N1KMBYgȺđuh8 @^Zj[Ao4a Q[ouA{5[?xwcmfnX8]ޥATq[A#c~4󸎘Uk+8 l  L5mm[o>F ܥ$Þ㯷N*S5nl;d\BuTn`l}H' 8`{UJZ ?2xADecc_xut}M\ j78$PM I;?:٩G$6m*oԑ/7ֹ5Y Ը: îh"maGt1îW9“[G fT|r0siټ1}zWkMQmJ2W5;;J(9}?3!5gs/|fR;? VM϶VVvu3\OrY%**7ݨD|?;ϻYvO9 >`GM,:'ⶼXq,{Y$Csҥ-K+PF^"Rێ&8$/QYZMǭQPwo` ުj!6Z#- ˏ29D%N8aԏm[ugkR`;}NqW9ж /11&g{9YVU!PjfKb0:dNJ3ȪOVUMHܹ  Y;f}tMJIJF[Eax%-`J u e8Kat^GGװq[wr@'x5IJJUg:1RoT|qc\C A,E@('rOK-btwɝߓ\נj,><.A-ױ.s$zUO8"cU;EoxwI#FI\2OS֧;@Ly> o"`$GQWNўmxcMv7j3Bx+8|bF2bayM%{|쏯5-mxLcsQ+A%k+9lx"-c_$*fKcƢ5}CYldi"bkFUWǽz!ncX.cei\m{4pQH㬄#-:N׻<~-Wem>Yd`0@$R6vuD+WOoǻ2['ufsG@ߟjuJ/u+/_,^.}F&ՊKxZϓ$}Z[y2زc!5RSq;l AkO x jxZu>$ ӁR&%4qA =߈Ճ'@tⰜj8JSRVݝQ^qVpvxT"+pAyrY޺ ڜ~ R~,s>7l7wqr)e^>?_-sOzeseV3L58HndT2C!vyj>T+[o98NxNw s}$^h̒p}kj 4z5ggbצ[o2;~[˜ݟAWI9e.8<b2~%_s2? TcNb*s\Dm^RxVS)mooz-٭BdqhYEV]bKuh}AZNYZFw+_2k2xTmNX4hXc7$"}&" >iFh|ynO}>֜Ne#ޮS15%- ЯX>o@NcϠ=E[M{h,e"pGjjwmVhW?zh1Y"I6;Ԯ_h"B5꽺{VΟzlMs#BO°,UcTe/yCֺT4{Wu%җSR: sܶs\:'YLUxoq{giʓtRiG moj=[)T|$IM7Jo5U$Vzi˩:αo|طO$sս}h>nYcB_P>kEk%vz-R7~P1Њ4VVo?r䎠h՚]tU6vRgujˑ*i;QEpekUd[l<㚕[j8זKbVuG㊞K}GW$o+'[AvWx?[|,+tmU]aE=fU?Kmq[XMx TJcX-c,-y SY+omq$_ddz WUUfEqYxUw(te9OӮbtʾGʒͼ京;o&oQ?SNgKߚ$'\kGq`KN$R)RNϨU["[vtRHɵs Z#[ jm۸oM?c(IHJ|WU'Vth~s:FgJ.ڒ/] ;r/fe؞Zu]"98~`{ҸI_6kH-_iBJY:_"m^Ku/8UM̈TΏ_+?yrˏ7k5MNF|'-ϥpWq]궫}+5S?*知zXt@F>A47I%[)>w'z}gC-I>`=d{TwZ&{2<~r}lՑ18)s|V>HRۣMmv&OϔEsr4;[_ۖfM#g<t6>^{kxV5j%'xĊ@JY>5( *hX"y=JZ66k$F?2 aZ7֝: z)hZx~O.! xƠUP̶_wW]UZ6$VWm}Ҡ1`?t.^[̽۾w7k.->{nUGԵ`kC3v^G?h{+O6D^r8,·~PoVڽ}^[yZ}۹?e8%B]3Vp͊yeb\vmYxRI#.[wS\o߻QY+|̭۫E [yjE,'E©/vA]3Cg: @N2A#n@W5ѭmow|5Ww+-5䕮I aZ۩>҈m"x"M b#%&ުzrG+.`WcIs}-)6MԁUbA E?OZo.bgD Sl3Qfa^Kix,,x[jFiqj˓GӹkƘo8 q/g`ԚlmPh!u71=[{HJ>QMV&U`KF#F c86>_Ze)7Fe?LVm?b!kI \%R]NYQVfjeDKΘJ[S<q] >'aݹ}k-Y˱in\[[}׋gc.g&뎣U[xWJY-I.ڃyqMqVԴ4 Z_Klwޫ3/W@~+Y$3kV,o]#fjWf:I|kChQԾgk=I4?O8%+MBAsI3}m^dw x2>i!)襖N>~/WS4MM6,M } e(.-osXO26VL?eH[gj6V_l9w)X'rNK'98k'Kr5U=j79Vuk++39IZ?6Hc8`A YdNܒ 8\ίSBӲȾks5ЇQР;K/822IrwwwsO 油HA1]\y۰bolw W3 ս,, n? UCWfLtVLۛV[heY刹|WA./&]*F'Upi mwm=֡ۗ ZA %@Egm}i$}3Z]֛ijR[mQY@pjb+Wkc.&Yo؉P>~nI犂Iͪ,/|/̲liZğkil9HHJ?w92:E崺os=W ym͞q\t+ajm$ Υy&1ȒH*ͼ}2A1OpO/0;`;>XZkly//U(uY"dmB +r`}*J۔Bq:uKMIr/1]e(IU6{gPTXūFVl=펟aFi ݄jZn4ey.߯oZaWUH \SNԤظ-eխтm)$q*qZ_D*SܜoL{Z9 '"v[Zlih=!CBՈI;}Cb-M$ND# ܞN*YkhL^dX_b)Q l2/fgʵQ[f'ePeNoV]gf6Mcw7>TFݹ +;JF Sմpحa {~fSݮܛ[nO+ޟ_κ߆?2 Ư˧h +[hmǙl~u>@OWh غWlؚWl?¯Eج='V_Nҿg~.ȡ6(ҿg~.ȡ6)ZO?´h,ؚWlM+W,ؚWl?›.+FwadfG d 6@?W,ؚ_lؚWl¯EYؚWl?M+_ZQvF&@?_ҿg~*]2)t:^Yt߅ ?4:_(b -'V_ZQvF@Oci ~wadPg~)6Y'MǦ@R !(-JP#yݯ lcAhmibJ(r@g#".TnKk)go2EfDD.(8{_[&Ļs02@궑%ow[|̛]A7plfSj3o}(~57g3LzykH/FuϖFs[ڀ/U%-i3'wdQ- -S8hLj7Wj-9ڥoerrF=OEgjڄ>t Yȅ/b2G\:,UNFG@}̨yۑ{θִO3ϝSb3B+VM'64=D嬈͌ ǭ0^QZESQ;7@At7l[O5:4n̽pA#>%fia~ݓ6q`q\ nEgoHIan?炠־̰gS nJ;r+ckGtqd͐G11ǥr{&EmwnK}򭦎K`xMŰPFst_D^G$v[`nmwz4!eԴT܆@2&0~6 uyIU|xXwN"KƷB4J)ġp30moDntbfU|-$(%H$beKvɠ7/g6t Rhv|J %lWю%s }6,pGƱ(R!81^xe7U ByKd*:Wj#!Ϙ]뜄{z$h_ߺR8F 逝yxGwޞElSm\7ʟ7LJy~QslUj+E,ֲ/|o H6Gb*s͞jx/o[!23a r-{_Z^Gv 1̎? Rtzڛ_2rgѰ*8V+2F!1P]ޢW<+tKy,HÄ1@{P4ُfue]xBW)m>\l AqqӥF[I{i o6p?x6KA$1As瞴t +ς-77ۥ2o{pdl\p:UkV0B2a~\ AbUNV7 ̛r ی5"L,#- pANܟ4y |Y-ܧý pЈ׌5tEŅIJdLۆDn}"{-GK-RM?)9ӵKK06*!b@5,>'˦q笳 mf IǿNv#HАc7um$;[ C{PqcM<lдI"dpɷw}Ӱ|F~֟9rc'ﶭMGsno1-B-vkhVv+$JA| T<7sEo4ŕ;fLD68 Tfv`~#'}qݎV;⏛Se$H뵜 1޵t4#jw2"A%ۋ?tuǵAQEbڣiϷt~i%DnQYov슲!>xe XS5]FL[AaR~claXɬ9u-<,q@>Wc+P/iz|1ʱ%]rtMoVݭ̀m#!`qn5K+尞G ]yNN6Aɤf~ioWGʫy,:u&tgOoqt0#F2GGlhȤ>fˏuy̞bv IO9| |="&-K· 4u4v~zeض|; n6 *\yMCВ^}X0v6d/0玢|Ms$?fYY`ip%,ғX W`9w ih7|e؇]2F? yu+[5Eqp9q^1S3 iQʻC`8sv%i戍lKuB8ƶO1)[C;n[+\{mElMC >ea`}ƞvEU1/Ur}VM[MҬP!!6mgzTWSU~np3ITDGUxA<+Z}l&gGef H q7j]#Ʊok2Fn;58k^ռ0X±ljo=*H"%KmʽI'Y<4%uJi^"*w7͌asUQlfc7*4V?iYNL$~RI7=jy'RgFG\'ɣrd<ŧ#= b3>$-+#m) Xm \3 ZX6yrΛ= ,zdZVdekxl r_kq9ڎxwK6m%[2sr0Ƞg928#i {hicf`TH*8q׌MލV~ʡTX)8~Dte,N(ܱ Ne V[ȁ}sT/cġO0GiErT;kWPtد!t dR[RO74iaVhn6љYo03KaZ|6r5@1}pz=e''{hnFxȍ쏔Nqd+bbۗ}/ .ӐI O{yVI$fW6) ~lcv:L,Q>.ŶVf1 bɌchi:}U幐1uVINONj _Bm%ܐE 2H8f.: sӃVRT h>e/hb\ q9> cj(fvic{ q ʒ"#.ry;Oc#ď7|ߟ[(mlLβ5K<h\CE Aq*O?4yV7w1< ̀B:PpIK~ <̤19Ǧ+Ě 3\[Km$a6bG%X~U/=#! DmgM_ iig5',fw*F #?{֑-./uWAG dp7uaMm{/1dvE\+;MJN`FR 1r'hҭ>ƶdA/ݿvųޫbksh)3aA9s]A+V[fTCINx =Qº{+VwݱxeD TPT ە<ͱu&1\nk1 |~(.YYɻ|&wU:IX̲VgO=P$g?* c_a lCѩiK=)"]b6~ss3ryѷY$h;$]'qRkqy7ټ5:[9R>aQGՙVkll# oF.y!IzoZʕ~r3XgstMKGc)79l1=:VJ=X ާcJz'vPp?żn1CM}ٖ3R~OÚmI$8Uy< ʽ`sVf(!IfxcT(`K{P5Բ}Xow8 sI i48vyP[n~XrIcSF.9 !T| rze%ԴEB2c!Nx_~TR|d : zIh U[GF T zN:[G]w~ #5ZH;kh1-tSY ]SϒPFC׼ڵCgs4N+J +)d~ S{h [44FofXO}:c2Mm8̌s'zW=7]5F$:BI*A8ǡAZFMv'L32Lߢ([\Cj-—N +Awso$Q1hK=ֺ-jGI,=ςI8Xaqss6 g/[ݜ*,%MAjݿncCp ;@WlAvdᜩ+u5X~<nʡNs"׮{ώIc ؖKc?\Cx+y8IyǙ +m8W,e/'FQ /ԊqD?;+9PA rIl>lڏ4{˻Y~#"-v A  rfmOXH+ }֓.far m8\HC TsMg +M8*vQ0#=(,"[j"u#>'?/mÍ.'OB#7* ܞۃ֟qoZKuFf||e?^(l+wgxVUU͠?wϵi7pC+G*%Qműj RٙeLg'ǥZˢIesmjp|xϯmOr# ۆ-e8! R.ko=?(*@^T]ixc'<`H1ߵihگ-H% \J!LsހgAEP2ܶV_Ikliw8{ã[ܯS2U:q0>Cg3Y#n}sIh1SB;Ʃ(ԌOqڀ+|>I%فll#J_#k6̍>`V:/ =ZFH|Վ$NUG7OOgsʪ/)zF/lY౒Fd1.}֬KexN}ԠL&r}<t6Rw8iڭ"W- Iݕ3Ѳ2x~+ >9!GE Y㜎O'<;d˦#Ȯ=8ڭϹ<3̲*H !4_,Wz? im&۩co2)ByGxKcwMkuO.IBF>R1'KExU_2F3!Ag;U7Y7uecw.%D|34 [2I֒Gfw$`XoT`n;gb;hW2(x_-@l1.|6b߳)&3{T-8o3Q8Ox5O*Ep *:I7[G Kgl蒼+F;@G^s峎kֵmI$Q% 듓YxI"FS28t,j2px=*v')2H#t)1zlT,s!xcup;}g:"$kWڱg( q|mq,c\*Opw3Trj]yk2I-ڛvOG>Qݢ=7g23 rګjXnnlbrr.H>xV.|=ŝ6ﲱ `F*F;uDŽFx{,I-FJw BF"I- ??H=n|?,,׍Ē$!Y= ~O ZLFvS"n`DDb8TR/Io6m-#@'1U'v>.}[#l0$9?TO Gy#5!(F[?Sx7$a:7t:22RA ZA'5fVaʀBt0>4heUWIƧxcR,uie)Rysӭ m;Emƾ`kw{PIKNHndpg Toʚ̉|ą]iڗKm^=26GΪ8 q5 n>i|:̲рYJsq:[jRZZyj ʆnABO5|%\<ČO=敡.w$r+!DG@6ŏ8=Q@[LKUWɜKNFsWTXcV#>L+a}㵸kq0xOR %7>/F 4/A<>/StructParent 89>> endobj 219 0 obj <> stream JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222@" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?) sjvV52r)6JJƛŞkt{nA֧^nv:Wlr)A:'ކU냚vdܖJ(RQ@ E%RQ@ E%QE1r?廸f51/8SgR)Pn/C_~ O|'1޻ tl#m=WެA_eGOzE襦[I joAx_B#axC׸КÖ6$/1\JikcKkt[^ӼOa꺥 X`\+][-^}8ǧֶTS-vy&kfnf5bOfOOejdn7RJ+r*S="ːo'}{Vr29b{/oݿ1ҼN'VGL.#;wq֭N֛/iLq޳<3xVt6yg8jN^EbNz>V1lXZkjڟj 1y~Fd>vZD:dk橨NlY w/5);Uq{oaY/Uis|w\5e_Č$ppʹ*8뎵HϝQ}{wWtWQ_<&\Ri0j~4~Ha/;V~#\?Ƥt?s}VRJ2Q{Ѩ}_ny\v|i :D\sV4Vѧ|N%Ӟ!f s'zbT#$>? Ykim^_7UJ);\+gWq[:5? 562\ϱ .vzQn6䩫ijn>>όY}ʃZ {܅a۵gx6w7_T(Es*TS&!wIqawô{(ySqڟ&xq^`|H !ٜOpkHC\գhr(C4ow(l暟%ch``H#*Ol_/u5FwM5(y-u}I}oK[%rsךQ$D_5oeh|ϤSi5]JTY6g9NMzi[ $&/qnC obg \׉W~)m*#l_21Zw{? moF|ܙ3IQE4%i>]Z=4VFv:7eGrIzlLd$Rwn?OUZ -z?X/W|W&mZ 4AKG˻]w -5yfh OvV!'r?W.HW5&7y䲯~[%'A?%gxK:Zu۽{f||G]tj0Hk(?N^{tw J*tYu8sz/4WOJQG=+ܦ䶼^vʿUR5#˒Sfα#Ou-`jKC Bm?ZoGL,i`S1n_kϾu^-zk\Ƽ_ф#e|{Ŗf}LѠ%⼃ĿYWm׶:ͻ*VkȚG?yUh?]\I"21+uF;2ѻy73¨O'e:hlxյEmm'׆,?\4Ӫ>c _j{yUy*UPI.e1\uWzYb>yZ4/$uێ.j6mR? &O$gcןUo[33.EoKfnmZk4HcE*YF 7JWRӕ(\pۃ3Z\N4)T].$v-[Y a#n|ΟOh7wq+rN1W;x*跰=Ÿmqy> ?xo[H+om:+|vkμ_;O}Οg33c>"e;oQ.⌗, 4Kk ܴ.a^ukKUAW#?L]+]w iV6U"`y8:\kt͙zκHv@7A8|M{&^n<#\;fEJf$(H'i%ؠOQqO SuM9+ZOscn޶Pr/ûz Kc= >sc V𞏮y?6; g}iZCek @f\`zW,vc8KkY>!qeg֑7~boUfSmC׆&M779~X=i7M7'h6О̮pm|9m]i/8+ Ec/Mt'W19kK(mĒD[#nec>;Ӭ I95ID}ۨުUvk/vٜsE&V`dmYL̮ټ^bMm WA FD1neb\ z nWCsKUflT5gfe)+ L@ E%RQZ)3Fhh4PIE-Pbњ)) _JK{w hcdR[9Zku՚mYI\Z)(a\5hmt}J7WbNџᮆEڃK265ɡ;s+94t7_6?ƻGĶ[x]⌂c3JΏ"MZ7wZYx/΂ F'Ԯey3Ӽ?/nwp$%R1c=+3ke<U:r5@v=8 hךMb-*IjJRd*)sԴzTWT%XY'=[>G_ݳE=1=kW1$k[\08Anka}[{61G7u~QajS=F;x/8,u^n@9|4 r"IY"ݏֽ[k?i;ygnkFTiT;mʭOke;,'^E6NJH]\EN<o:ou/3Ulms=kV֗:|79Y 5oc]ֻ/Ù.,?q51ʂ9* w)PߩgYwksmz5##JM;⎋40_*P1b_O;]J!"ٛ9ŷF+Nt5fu9ڿZVmyBJ^3cJK-25+IRH%rҡV qӥK\o?ݢvnڿK/C)7x8ni\M Ap8UAiի\A08Sqc4m60T"{@Hĭ!lqךpTSкhΥC۬ӫ-ӭr74=:KY5tJFtsP> y8E/˛y.Kd['d#8V1mIlhMnٿ|Du?׉w:V GT)$FlZE\㩭=tjweeXbDx#*[ӜtRv3W:+_zM"Zj vz[Ztzm3!2؟ZoJu-mQnnLLWg<פ:/릛IXSR.~HƜ$ޯ4$25ߊ/KLHNFG%V/ZO*vq`hf|RۣJ"[uf ^gmzqG[QH_9&gֳzW/y1(1*H,=+̠)~qgb*IΚ3N}ŚnHy۽ {^ޫ+F.7"F[8\ev݊4]r3G#T7dF[wA9}+753o8T=:x|AoָcԖ._d^(Z?71^ajx&Zm0|?-%ש&=.t_Gm>ԗ *23K Nż]J+%?Gul&>˻8$zym~Kfmfs^:U#ψ$6onoԦj8F&63\rkwWwݎvZdS^}c|I={O$ቃ"%,ԗ[cC S_VTr0Ɠc%|%~&}GϕvOzw"k;&1~z{לi^xdբOiȳ],F޵,H7H[ П-7y~#㵍LRXPvѶE7miPmPQn\R@ (s"ܱ1y_}{ݳg g9WbQM4Z5W@鮦oOwmKdQtV)-\ɌlhKE"KE7䩩 D?m-{cˏv[bK/k ]#vm-ݴmQ@ Kn\R@ ޡ+hdi#E,@ȭל Tc/Zn}f7R۞h ?={,GKV.ZKE&hd!h!wsCzճ^oFQ\֍5RV=+ilS U\%'r?W^ tԂrѨRfE&heZ\vw}ݜgRjeF.NŵdnᚘWh#_MU7>DZLaR3&kɻ+ K-i۽T_/?D\ŝW8?wŌceT>Zcy^Fv\9iGS[ຂ7A2J`@57j[7w_;q;#5vE&hHhF36PI'=OA?/oS'dһ45"̋$l9zבjc_^UAsP^RUIt43Icڙ;+EƺedW'zTW^1'5~u)sW6璴j7}GU:n),sK`xE]c oU?oU7/ilc> QnWڍ)H'hU`8f??=fm|]6lM]Z־SY{ZD/ĉ"fkA~? ⅿ&]J{Kr\ܼ]nʻxǀ-drAܵj$9MUv)4]:_H/BF'RmU]bfoѫc6v/eIiVN2e<ž#KԮ";0ܪrchUZoB5vNefշ(mP?RcJJW2Xy#MAe}>a4l8S[W Exhś-v?=e=uan'KlnA\l>6oM^V~Q/՜|Asjuad`:x{41+5Τ8Ծ>nuvmc5{i7QS5rW95:ˤO>߈ӢFQd,r;HijeFA}Eo33 n:W'rչkC<ϗoqtjW!MS)˧xկnu "a}~Ejh줵.t)9DӕtW|HO'Ėʿwyy/bӕh\[- -e.FyͿ5m*PӮx ݠ0t9IЭo_)v9xqimf9L9z[.kl+8l̔8,Z^^~9ׯ{N i:vlR<籭jͺp.UH~*hnk#'ՅA%̍$LlÂ)q+VƟ3KidٝxNM8v֬?g 6/$&t(c8dYd H·%o[wID~d@ C>og:j }pC*;ton5 iՋ5Wp/}^6F\S^kxNod1%Rs'ڽL̞-퍹G?_'YRGy$!>)_ZG:E5(*C_@_#I沭~6IqHWXm!a5ӊqISD.v=Vm|FIFzײhjʈP}}4<_|oCϓ=N7V֟Yi6pHϼU*pJ[MAMk}p"2SU"y?|Em F-&#R2;zև"v5&{+o*(189sRzn|z5I?eN 3`xv 6kk֚$QJPҰ o\.m ~Rmf'' 4vgG͖USaSڿU"K٭q_OQ?jҼwhmx/ ITX?=u=N-6$pn#xY>xRDeKݸ`N<ꗲ&A?y6jwc>`qڽ6ie׌#rJ8bׅ3fqӫT>gw'5{R(!$Np V?V4 ;]id{r+sz'g+VỊ7?mKG [[I8ZW8Kм_k_h47 c>bj S͸q:N𮏤boSR9*t6O8G~ ?5]cZ_|Au( U/('x~i7yOZΛWfmϣn(٫*ѕxTz:߼U#V;ZJZ+SLQKE!vji+I=&k^W]*Ks7Abk~,Ѽ9j^~|ݳgzOu?5u/?dY6Ct8j8|MΛ3? WW{P G,M$c&Ԓ,*YwZNn2PE=2WWME LQZ((+Fid(^Cpri6.R6}'^n'gqZ2n%bLQ)UuP-?CV#uh\/Z(1ISHM VL"-Ykk|y͆iZI"pG8nr0~[nZۗo$=H?vSqi.7v:`u4E7μo{s7)Ɨwa1ֵ-eJ:%7-9UϢ/U%Wn "i#Y~lt{ Iܿg?ZS"DeǦ\;"MwtI*J#.ˌ\ƕmJq~"[7\0_oVU)6+/y$ftM$F] kK/KY:Ozt?ʱ"z** ʳ+Ծ?zn"b~'k>$Yw239IÝj@՚$pG݆#:_[. 2e?hgỤk|{owݮ ҨFt xYՖ['}%EGU-?1?(uon]7cl@\vσǖNwjtTEIGTp` +XͨdU! ;Ke{r:޳/γdܻ|P0Sn.ǰ_/I+7ûyvնsg5۵<EH63ID+W}Ov#} ]Rv]&aFq^)>mKT'T6[3n' lcm{wͲ)%$0 JϴD^!<\cֻ w@˸ھuӼm߷Soꗲ+oo,sqN ,2o̙<[z55'󯚼G,ԉ")ݒII_tW>kNsE{NTl߻R>?L2Gӵk2s6uzןiZwu(m"wOU54 E߱i&x6~6Ζi3ڰot&!g2X=Gnjo_f] c.xKo?nl8۟a&[-OF8=+^Eky.՞B\A#yWm-l $-yW|P#7q|_CV3:z!8 (V6RƷ?Z%t/ET:&ie^v-d?ҵXŴ;䵓VIҩ M ^}۽ QYM^-Ct׭m.~Vۻb=3]P/-1+??}glcƩG6?j?7σ KevsfE_%~a1ALvjxB *k9h9h771Tgrcykc{CG/?;FNz5k~>Ǚl8}k4:|OW<ߴ9=5H~}oݜں$ܡ39eQ4UVܻ9䬛FjDŽ|,犮|Gzפx+o SǤ^qb?mK?<`'vsϥG|K[[?OFc#ZV޻_XX'곎h-xQg2/A݆z;o폛n'e|Q}27vWJꜣKS+#1u'9OMτ̓Lc>tf'GvqùZ_ki?|mځJKS~N&\iIQ*ZQr'F}[2aŒNMY/W;|PCl;WӭkiU;vgOQۛeۏ#߭0Oګj;E=N]$lB7^+[Rľ۷o+Vџٷo]\%>KeM74qOgcy躎q&vTnڸqIl^W?OW t'r 489Zl'}_//n] Ξb/sY6Yheiq8y<_(_o-s+ԟcw6S9 _ x}{?Ms}k,0!%ݑOl:0sV] GtSϴ:/ "6: SJve^#QG[&)1O. mٝlah?u آI;mfRl"h- Fmb('xOES,Wh MoEl7f\*mYYn5-]ݬ&1Nt=*vͦں8#>\Oÿӿ?¶褒[s:G3Ɉ&t):&z:u.$HcE7D>Mp}zUaG #c*ǥYY.4 1lm.?[_37cqZTPo]s<),gVPA*oC&d۩E$,d{G̶lv- N*?+Ñc{˸4hۜoN=jX6VP&с00=*-%2.9ʳ^i6W Xӓ<_5>ШJ)6r[VX"*c6zU3 aE+ Nŏ¾_:=NIG[dߵi[AiĤ Պ;U]²Ţ) ((((((((((((((((((( endstream endobj 220 0 obj <> stream x;ks8S$m.S~rflM$qBQZ@)v'&Fh[/N۾Z{iߗ{_^\ozq}U/>˪)jӼz]{gϟ<E]/?^^.0D2{V78=:I|Ղjt U58_j}X G'y[k^7S^΀'VsH']p ,*$o4S &Z#rp@8H H&FoRF~/O{zH>8xO&AT%#$£_,U؅?g|3v3Ϫ o Vt_F`^$ӣ\Ϭ-lgJH#DSTسӑd׏ /dyFwHRFįnUX;SͦU3we](j3$H`X5"\CUȤF/΁?:|Pș;zy˝yb|QH\3̕Q@ 5@nQi~/MH[Ѷl.)3w_pBA6FpR@sۢ!*X/DoMLMl:\ژ6=/z,FߑFFd$<жePժ;6$L=JTPoha|RgRf&"Gu&XI, PZӁ>MGtSR*ViFD9ɀ7 HK! p1SƐQL 3Yv]>M3a2d14/>Xx}@Jw訥֛X(4gYn/ 3 <_ 814 +&J@0}KV|8v64.bjJE" ޣBf vvPJ%xʚA\㷵ZWOFZ,{\;CZ9b[ej䏱;hOXv9҄Ҡ:9)qz,ص }|6ƂcK`]--A4#Ûձ>.G7<6p\I I!8iw2I',hMF)/or58#*6CUojYQg9TkVk(ʹ߶; ZoNvTqЄq$dMOvyѵ$m;N+u_pڼHR=[al#YKTI3DM$߰>Z3y8C8Ι=%B [|4Y`؝1@Sg J:tyKxĉF6Ӵh0 &k|`3>%Eh3VbN6QK0$"e׎Kǫ)$ *vA5eQ, N+倫JJA͌AhZCGSՠq;#G٦m?ے,Y٩Ͷ~(0*mC-y]{CҮwgV'\W}0EpLO!&Ì$q'ȧq|@Fqh'S%fd(ig~zNϧrEލ2M[.|Bl^Կ[ S0y6 CXL0Cڥn3* oĬ(Rz(:ap#_=GLq TL'5 ,|]7W+C @T&<qm5:H©Ol6sVk|M[J,; P@ub1h-ʞNޮ{QͤIBGa\Oʘ{̣stIu!Bg)_$#Yn*0v dVL]O'Z`xNBEFcO3GQ*47i<Ą}p3>#%ͧe*q i"ÿ= *g(S2?cFtsjNf 2b v u-njy-4f]R  ix@MFѮp1±AU:%y;.NU[{:oo%5`Fg *kem.(6ՠ qo+h+unM|xam;8 هYiU0m)/crz{?A眍\?߾yHƧ7#o>g|N^]:5`sD~E.qak| vS;hiؘƅXs._)?|x?{S%x\tT.qsƝ% hy7'VU!27ZwذEHTKOEr*V5k.A^I#xl@u vh1G+{ +nfբyX ]0AEb'rBp[J6kM06km-wjm֨;x`MŽUu9jҾ)ؽ6+a)bVʹ2ᾥ V_-f֜cTTLQ$X+ӟPiW<1wGm~eoN %r Ħ\J7Wp t* DEAU]r0?z,3G:7i]I1Jfɣ}!QTb _"~ endstream endobj 221 0 obj <> stream xr]U+8؉t3}:=ɝLyz9^7©.0=ȉ5>ӓNO'2dȘ cI@Y({77%2J{%(@y_$ٝdGNO )P҇IgAj!ZuXMCӲ#PUe?>V8+Q*.'?N ׵쭰^a~lrO ~" *Lh)6ZUB*/!%ibhR׻dU=YF_5Lţd>2R1(GnفA1م]yNqӐM`Lj]Hwn`ig(^ErH2<0XOE5xeuN>2E)PUhVN~*Hܧĩ {Otfd40TBJ 6q$3KeZ[yrEzRCg[cF҂!6P`"ˬCiS!ܐЮ1:D׬AD“6R <)h$s A5UZU"fP+|Zd nV5;C|86Θ \hxmMt LdeH"{mǝvݠ5өz[!GE`BU,7(?!rr.PG6Rʢ;ժD# }*Klk XC,X"m%豢Z7'T''Q@ҹSl'u"ǐ8NeޠiO}FcgЉ;1jGr}%C<[B.# m5xGSr 6.ûnzz]OfK~o1 Mo7V =I @6dAȞgix GЂ !> jzOۂV/Qh9xbK>[=筘l޹lVY!mUݧLVSJ!58MhM3%`eR#`#4ZXƗ=50l@bރ33il%Rs /{DQ$}lhD^eT2$07փ^E1F=!h5rUdx>`ofE>1D.!EWUt(gaMk%JqHV;ѮpסGKO>Ƨ@T63DQஷTKlsn );E\, Du/H!.U2h~{BY|A2EMsJd %6>h,_YmZjuZ`0Ϫ#c !R2t|Ѝ0^\eC,aѰCP 'e&8 u 0^Tr :JF| "bUDt~%X: +y(~_+l(I!P/`CX#`NH[lm7Y57{>APɭ;rl:mYײ5b%\o(%sƵ)WY +c&FdEQ]7D'~S%s`}hlPɽ41dImm6fcdiM-Py|M2bۛtRVܫZǸOgfb5m+GUdۜ6kyOX%5zu0EQ RuR6X%s!MUIU ^ I!:^L ۝]=_r.o)m\6b%? |O ;cy߲r>}T@*6G=F.g(p-$ru@5H=((4CcJM$2a7l8"?A3yK Ã'E4:j$ɞ\* }_J߰mߣ6TXˣ@a %! }CX*)5~Nّ[s9_ek Xc4 8T甘^Kr!eQQP6IwLEZkؘ-l(Jj8Ԧ]AU# jTw:"𪘚6J`zTzr0~Цޱ(1qdlɎnXb{z5+@+v 50b{0Wlp#I]}x"%VM.-|_츏)>I;:}~=' j1߷*0KWJjaoy^Ja ~ֵs1;Iy!wV}V9r;3ؼlVwSp/gաϷ:c{X{4CPÍwns3jC+;辍H7oA1[+bm4#[+y(k9mYHzE(mRl]~&-wAAx=vY_xY_#duܪ%zAiJcI}Z|Q]]a/&rj`:!=jضz;" ==g!GBO 0{# ѿxqB`ByxH5Lހ ).l,ZD5UPC4Q4o@Y G2-V9r+#WL+B*v}"-ާԇG{Uv`/:R||j9;_07Yfʅ[#_k3[/lfj?Yun^𹝙O~j_kn_=Yc6 egY٪ /DU7xh{F^dd&Rv,}g`LtOaU{|[bJWZsp7ls2c W=i%rW[I̞Lm|HEL7*ExLd7S]5_iͽ'4mVԆ.2:YNR{Hs -/(P2c»>sW$-BH|,6V\jne2c+s|lseH-(3s".1ok4(ATa(-F8)['qGSdgtOvQ]6C7/rrFo1vBw Ӂڛ:"L6,|Qgkٮ C!RJ)6v 2iގ Wڽ D;͔{ gOq^^- *x߭2x4^pPMu0E^+_}!>s}c2Өx7 &D40I XF`k#+닐MݙCOēv vptxr}>,ψ/kt5WAR=<4w|d: +/%)YI-[e1b1k!G#'}>CS6Z#WG Ya~9(nZ:82(1^u[SRR&;/'\8%n,)05d'J~h_}S>)J |Vu;O3Xظ[Z&}^Qȯ`[FWil(`(+PlPZkM]j.~C|GPVj\c(g'2ѫW!D6;mqCˑ7ݽ /au|v?:]15?KN endstream endobj 222 0 obj <> stream xmo6wл:E(@6qnaQZGN&vNvo3- բ3(,u:x?|qy8dtܽu_6m{s}Y\=2RD|)'>((?==4>=B!/& p߷ۑ9j"wS%$%yŐ$]D B!0:e/2I "AI ADKirߩ$, ǟ%L,$(e~Ry;#xw#cti^E4 [/m 6`r|'[Hޔ2ߠUhhYeOOȩ}7PlB|yyx5*E)4|vpzh-?_}fvv.'*EeIR1ɶv|@ LJ<;zAuUR(^L_XݞɷM~^ai*Q;^ Gk,m*ȗ >m a6كoRp/#gbh9RVw+`sa_7!zuj>o68`)8P1_erU'GsWu}-}^'BuuM<]~s୳קM︚ڣԏB_1$:77W:J8LB\R-.zؾЪE ;7Xxs.Zu<2hĩ?/n u۱!o'R}ɴ-[-.Bk㑍VibJפZ$NpWz}YŅ_g#S`Bu(VU{~VVe$-Bkȭ1< V72 ()ty 4bM +bBYN緳9|Lǁ7-j-FYyN4x%$i!ޢo8 e3M\O!WZ 3ג52@W51%_6#уk.~tcyw}y5mzE$ǦC<0sZԲ=H?+sÉJQBra.2ѰX6I\#O1kd`6kbXqwAwj%Ot|;"3/>3oJӆ[x fV3F4# N܉wIfw?ɝ k)T U4uu+t.1Z:oraA>ɍ̅3um0괨ee)z'Eh?+w1(M 7~Lj> stream x\[s㸱~wBo4qe3U%Ne{OF,&qIP"hYwFwC t}[Vb:۪Ζ{~l~xfןOy1M{p~v{, {X1/ LX@E>'{ڝx~{?{>?{@@@%JS< R DT^-9??~1L!$ҿ}@| {N=j}{ +ǰS ;ʇ z0{&_T~ksX-GJZsjj(bp[GG1~uqˋŕ$oQnyk["_e#5S (yfG(aj3@$G)a_?@G+cL#4xICt\nQ/q/C(Nk@=OWؿ_%u/9CDҖJp D 0/YC;4:ލ-~,s[ϡ1W'q,6 KEVKi&34m@?yۦSe K@jaQ/gPc>[ƻ $n o'ww$vo~*f9(.e(\:nD ie$ͣ?+i\m|,d}LA1ui{.}JwvBI0cﶫ鋁l-Ot9.&2ߙ NgվP+~,Պ0LM_fa7b?t?Wt?\$6AA_M Ti?}ZzMzwDL#>TrGHwg$ql.Gi@rD&t8Iq#m y2Ll.8SIyC65!/Y1׺ $SD)Z^I2;i񢡇5!$>ڙؕa4 nq.HZ9M@7"0E`lJ-̲M>u=AeVn Xh)lN,qWYNc'%t?dHyc93MjRH>i{V2#c0ֆ~9iVG!8hh{襑Y`-Gz*wtܟ43DəI$?&iW6CZ]g}.iM++ _xSeEG] *= LBkd 23FV#Fަ̦xj75>3͍^Rir&dmB2xs$!cCb0 xE\I ~ k"q%Nxz2"A'JX(A [Ӊ[ $k.1 ťm'<{أZO@kc@1N4Vф,#?PZ"~wpMSɘ}8aږ鹲0՟Dq'" "O4эXut G7rn-[]X 3| -˛č'k}7Wbhojq'"@$\{(Dakpn3B*A""q;saD]ZHk!]b$;Q۝ Hu$|k"OzC M]ޮE0D2ZCYLgؔ^TByğfmPc'F[`@P߻iLn^E)ͿimqS"U=c lzZgP_L!c(ʬ/ٷ9 aG>Gπ$o#!tP˂,is;ݻ"M+ T+\_TV/l-د u%qҀLQm\؁ɍ:F^ҟvݍT*LҢ q 3-)qi$HдeCOh$u~Di<鲇ehb%[[L@+Mb D TF* #Bc0Vȣ?[`,k/ ^=Ewyںo G4FCw&8XKž}88iǍ}x6 ;f1t|_L7"8̀O~odṅ!lUkG"# 3 f$p88p*y{|rx_X2i4Йl/e `$Be}Bk%pQ'1w_x _A F ¢ 1 |5jd( Eh>5K*M#TiHEJh6Rږ64#[7ct8rgk:si'[Ndϴ-p/@39@x-8;ag5H81 9-x2B`iF_?#Q}>+(]I5 Z'Dv ~[xVjhj X4@#BH+|u&}ei8fU_̫V 1 7uFsX߽NADId?*=ϵhm hmhF5uqx^BR7A.:3,,#`?(/NBwUI{][bYǣ+aq|<^q~WPǽ[ 'zo|Sc+%0\:q@ӌ^)iն8LZ -gIҌz6vY'%/K#<æÓiW˩9ҿYZc;(vy}@[ %pb w~#[RDC-뜢$= vy'1v4xIu @?`YWCEb5Cf?[w1 endstream endobj 224 0 obj <> stream x]s6379d.GSw6M|wN8EW˿?E}jH"]dNζUL{䬪*a'W'W?OmI؜wsB0{I̮gq1d腊]؇/`n~>>/ϙ_/bzh*Y]H|(D8.㢀yJ׳ ÃrP~8H#%/8x'Fy}6t|=>-7X̶G -Ï-,uV\Bb3#a # 67ڬG d̷e6)E2vm,6-УKf򛁎H8Ԁα42 5})8! 䀿1D~2h; _-O<}.xpxs/40*k_ iZ.rR8R+F Ιi`@b#i^k89=VoQB>EtC*:)ѹf'8SDSŕz8S B_`e1"f^H^PcD' VRr0֦:E/>tswXTgcvFmqWZͲO=/ !U:bQB_]Cm`㒅q=(U=\u/;QLZI)&;ۀU@ Qw&I2ZH@kmY5ҭ7CKnmƑ1HM$li AzU+PI0նWa.t[1#kt zSsl;O.\"B B"BOF(seuȩF:j{2Ư֛î!PQ}[4?t)g;C;DoXօ=,6X P V١: DmY{v3^GNԏ=ɨF (9 ` :pX:O erIHV<6%: ځcf.ۆJMh]b+6} u*Ji}? ׽GCVwr0n!?&6K3V,tKrD. V(]jSGCJot8\?9XAi6FA*(;U =T#,$ܫ A{4&ؓCXmo[ Ka6Z D'm]o}ZfKm - ?pX7tSy:;Rڑq7%PξeUE-ֶ[Z)FT@Y w5`{TdakB"Fv$ym5D S*kwmOtׁt[Hb> Uac.f*I}l5X1&zAZ&HɗJ9õwB#i-{J{\ 3/̠bH߇ TMVqRH G7?S;c wgY2,T}zO-!v,D% jǝ8fĩ#<"X`b4CSr0J4Ni:w8!>,f`C457ⅺuv@;PؔmXfRHwPeR69sLFRZi/r@hdƊZ!/z8h5#2X c:VCt[zCTĽd[0 EcRtQbwY-aDw`JƭmFGH$!/٧:Sl%mX]r9$ץ1{K-|S4ܡѮ3PF[c IK@ںH;.}oفjnduK7k F7u c}cGsHjwug_*> 37>dO0?}/٪_i5g=M-/ɁM*zLQ'T0)22+R&L+{߰"'' o#4%ռbd)G-/";&[iUZh K O(%Lh="{t%- : ZGo \RHiuS EE td܇lT F'=Zb4*gwc SNHyq nADO:Ǽ)+"E :xWi?yZeW]uVVۇEŪ;<+x^EY -> G>LؔzDZtf08BrTB*8'Ғ:j3J |[ mr*ɘJBb,ZG.͓'in!xYX3ܶ#DH!ؾ  nYqsҀLW,5F. b 1\ks8F}HNshqJ-+9EXOݜZ"q 7">|a©h,v=:EY-JCv̄&R,n9덥=jQʢU.=Oj$!0 qKJq=U9%X/b>]d_M1Ԟ.{gjCMn.핟_^j2joٟC֊3=c8%cR*>b?)kSjrDTGI`kc62Ӛ,_uQۣiiYU`W-cRNJğ2-KRAjiYv5z}ze*lt*mYۣF,ma5.I'4MEZ!7[sh^`^ *3ߏ S/:< A oUMUWPOuc*-u汙@uh*lٖóHMwx62%+|R;͏ FQ<Q?,< endstream endobj 225 0 obj <> endobj 226 0 obj [ 227 0 R] endobj 227 0 obj <> endobj 228 0 obj <> endobj 229 0 obj <> endobj 230 0 obj <> stream x[mo6 }"R^KnnQhm9Α^ Bɤy[88<3eežeUˇl>]/߯Oczio~`?a?../}/b}yq+ϏY$Bx` ˋO36-yy^o{3@D% %^XxR2Xwy^a_kPSD T鿾c_}y$smfqWK$M8N 9d4 Bc~^^|(0a oA)938oUS t$_G^ܳXoWbVί쑀Ǯ$uG{fh0iyr|a{Q |7rrsdy4+e- YpKSPG3.uT{{`˴_˫L!Ur.{{ |äGĪ-X٠O|-7xJ8=Y( t3KZĤa6}gV,3#}VT U^,p\i!/å" 8'"lMNQW`;]Y\I,z Wz,A:bX /6 R؉DREmKp0G"(Kg*_2 U|F=1P $(tCannH)]clo.$)Z{S1@[!-(j3|qxBz K'{J< 2xPp\$1dsa0^%Y($\'P|J ~,ϮT ,*?쳒?x6PT⧏^>16PC04i,"C%F&5*JG&9*X4;9qGI?@FFPv/-4(!1}[M(lDZsb/8F:bO=X: @{qx${SlߎH }WmbPl,b}?6&ޙ[L[$pPxh|8 1Ac>by NǨy?nÜ<˨[L>P9v1OaCZ*_ ) yQ˧%, IBͥA!@%R!*ֵS] F'aչ׌I-'1 7jMAe6h'n\qߺq]pK䛼ʝ%%O"!T:tGڬaۀErE`AowKSiFRaSKZ ;(3P4㿻jZ0P% UB 1ĪV&t.5*2w_w?[MQIH*1Sq(X`Ӝ\-&|֨55mG3SvHpZ^%x|:_ (lKxV V]*Ǔa쩩B("| b_=mNVXmt,ṉQͨ_U-UWYjN Ug5:wji AϪĤT^e4DܛH)mYLmCئfEu{eQ"91DY 2>A}fg ep,)b$L-5"DV;db\@NmC[GٍؿQxV(z|rt~@혟#eCG.ZeC0RŽEAϋ[" 4ˋի[3# ݇xx''~lޞ9Rëpe<#!CBrJ2Eoj.#O݌ٲd]Kt융ć*>*iˤA+ CŐݸ-T LIA)h'sXNk8bmf)ƋS]/h eutn1Xz;[Wgڼu3gע.V}g TY`~Fk?~7x-IqOʛ j$m*ˑ{[Y3֜<=ەEW'(E>9;`8RIjlc{T nyAؒL mNdQg}fVZClm 2-zlP1=J_y,_k6~cEmUV>EEh4$nbBOcgHV}m@;PSWzh ŖlxWD/`Bu\ʦ~WkV &j뺗 yKk`E˕?\lAZ?5/Wt!Vnj^y{KOyqo >ll՜)5~ABNZEPnumX/ϝđn|ΕlkX/B± "cUaR7 :. endstream endobj 231 0 obj <> stream xks6gpM/>z8NMnN?$@K;R%*owRDL']-X,}awuyY>ٳgWuO)|y\vy[7}Yu?g/^^'QvvzY,aDPvqz{瀝nsz G9b(EfgaTl]~8=a]-dl SL*V ,=;l 9kf6qS7Gvr;ȤOOR8r3a7(c|ώȆvi C#L){VVمg:Xz jM0r^li2 hǸN$D;J$5DG:E>-+=Twwy(-GdG*yP0g|Qˢ .Kb@G<@$eQya7{4Ice)2&\V#,(R=0R C+0}0#٢Ai;*So{/6YlЀ×fDM8gd.sH -.=D0ÚtlG0xl-96ز1~-<O}x WC u=}ueG@eqcDҐj Z=0#-cÊH;Gq*ޖnGI;LJ3O$c9Qa8/A9÷iQNl)/gfbP"X-!(B[0z[\v](xXm$!y@g^fO@ADfݶ/R,kVHX _ɧp!m(c)P .xqU\˼`"tA-*y}+lkpHCao f;|eTJMUNh7%fǘ[fQ˹:GHtY͋#NMkcڠ?_D\)kކ{cC!~9kU1/+6 a`L.V7@/nX$b HnG[sV?X(iߔP$[:N!'֞-+]q UX,;#qeuD*.C3Em5'A6,xHcP63x ~d X6I"Gwy\MX̃7Ut?$ѺrN7P- Smb(u lEVdIN؍]$1!]2”%ވ6/[l7+洤1QE `d犖`ѰzСݍx AIKdQhdo]"ϋ}{#yh8Xnmfhg.1t}(9'ᑕtQKO:غ'<zgQp7$[ 9Άj*&fnF}iiҨL"svR66 dpIiIHc:rb eԑHKSѡ f9R7#.W @0snMiL&Gw&iiz]@?1}JB9#MH#k.)7kMKbz6K |JO0|-e [-k9 3o nGb {;bz W&)-gmIQޱz-9nѕ @٬0񥉏W_UMDŽ 3NЯ[1CVc%Lv&I0v'^;W1Gf͔2)9] t;2LB6'nL3fF>}o / tp`-C;co$uqIi[n1m eͽgi&:"9gYa%H485|W(ϠH.u-5]h/fPL_IFUtMMnIL_XD̖̖VK+l(-= ['td('= d1|':ބflBJE囪vqӃۗF_M?揔>=Fo;wg6 w 22d%&R nÒTW пO4p(Y6 >W.a;\t1G0=_ Zb Ƹn}Jbb<,t|1~1/ nvYN`/k|O?Q}Os2phCZ:V8QdGW81) Fa E04U~7mR.1̾9DOZ ׁT9`M(PhSɇOLx=|n̓(>LR u+lūK4%3/V` ͜۶Nl $H`bJظ0rfm{hP1QG4:AdH=<|7\=ṯH+ 9M@wk6GP+=$ iʺt]&aQ*kBN0@sM(LáO߅ؒխ '0Yt֙-vzEkV6uiHG=7Re!f9*{jJ"k35*4cTn ςOURնLe6ѼX &؁4>]aa#S"͏QMYo[lhȾ o|x{ }5)ħ{т9vA},?5u'MlZ2#9- \ ⽭boѝfn0TwpQcFW6> endobj 233 0 obj [ 234 0 R] endobj 234 0 obj <> endobj 235 0 obj <> endobj 236 0 obj <> endobj 237 0 obj <> stream xio~+i58ݦȶibDleQKRq^,=,|wQUSfƻ8llu7]~!+YSׯ7oޛӓk0Hy!˼DaR*nNOB-~nqzr@@%*S< R D&*?=Ļqn # d T?x[>2| kLJȀA*I(B1 Hrd ߿OO )PӤ7תZ:R2SњlnGeFRͷU YVFH'S~&AhSyt# lCJɇ4Ƽq-w[%Gjq7]M_D gz{?wKk<30׻6ye5%P~5-j;;mמE2A(R0rҕhm"đh7͆a56 2]iq&}o]k/l:lSAS6`ppn~AxP$*ſ?Dxi6[JW h|K tɍɰwIM>e Cƕw*cpF(/N?q pt(CǸ !0Jp\ڣH+8@0H!Jc/rqcn< UzߔƃO<9M&Ȱ$؀g?]{!H'p P,p~ gՆ)5|@?Aw0#)óLB,s /BIO\-Bu$5(u\ )RP#CIUi?C hA OIv؉.Zֆ yҋE-2MFQ!9Ftm^-B"h NxPۧb{g<wvrF|_S'^n4U?xwOjDa5*wz<Fl_6i"q xj=TCN-n-=tђ٦Å^\]U|ͨ6¹16l! Ȟj#f^6{$}gSAǸϬ !>Լ3=g[{MQeÚY IޝڕH8lĄLoHx>a-SaN8$ oa.@k NFͳAyd>j9 4±O-CMO0vȇW_UqD;CvFkty `Ѵ4f-ʫ` ͫ6 j:*E1s5zmmgfO ˶A_!4 FR,=#g%OmΔ#@bؐ\ H^" %BZ"ԞGܭ!쵧i TQ͎!srM{``m0M\ )smGɩ61ۣ{󆚚q, &{7y6vv΁9Sx(5]])Ʋ +U{m@OV7'*t,xۉ9d$eõ[R٧Z?Q)[@IǞyBۃJl`n18/3w=z J/S"{>,+cAU@b2̥:@HTnt:DGLRŭRɨ́.j`^3M:X^&_wo)]k^(2ZEkQ8Eʥ "}los0AP1턃2ABWT,;\cNv҈Ư?#KP]]4ytl^?/H+uNڊ)ТgWFw.y(Ј.p@W5NK¤晫rG4Of ܖ؊P13:?yC]>F ~uO㎵18&fl6fo3/LpU픶u2AtEڜ_} 6<:Ud֒=P xd0x~y#*;{+Ljr|[2s ״+6>,󓇿k궘p^w/tggƴ bW
> stream x[s6H4$yL&47i}Hhsz]c]7o|MۦO"zsqs-n>:ow?./n>Qw, RiH)ܭ./h$|ˋapGpˋ0R XD.(S0RIJ|`"*ˋ\^?ZJm(SL9J"_5|F>~1}]QX'2b@xI| cͿ"kL:r|~:#%Ïc`u8Qj̵x$s 6"|W=@NP&ЖhqD5;Zq/D"uF=l'k) fiiٞû1ޕA##Fƺ}N0<@V-OJ9_!50O:vB*&8汎[ZQxY$C>kl{Պ%Dv˦q[djNBnVd\.;.WmUJ3 db`țbFO"|6$@'._Ynd:E)u^`rڱIsY[v٭TsfģbUn#8bIӰ,fja^["iB}CmUDd,,ݯddxa  GpEM$,=Pv({32Y"k3RPvB*6.~o0xxj6E6h;т#ł؅0xICF{)Yĺj]cBtwB$RGh$Z~FZHa*s|ꃁnhf'?ʾUNhd{U}b$3 ON?PH6,'kO+(Z;yl&rr ! ۈ sa05ǹ)p.{Cn1^&~iO&/VI8m0ԢB>7ym0t }П#27gm8a4\z/l<64'84C1brcA^0筋z$a' Zޣ}A#KrJ.CQa\P+#L )c ,^ߡJO`')xymF:ʪ@,'E Dl}y^Bz6b٥]PD@i]Q@b`Pa 9i͒ڵH,K$mTEB[#`  #q Q\pЇY= .r:}2m6 crve"b]fgvwS$:d l0Eۜ4!,Cd֕&[VOaֽl{|-w[82;'c*=uƚ\YO. XX0Jhf֟xM1EkGZ<c衷b=Z@7Qe6,2FUEQ%SrޛpGMp\xAfnW:dQe_]E."I?bJדShLgIԢh-5"ݿ/Df1M6ֲ*ʺc& .lkwTBY;`{2*x"xU#hw2}LI41ni6 I)nG1|J*%Srz/}xm:aC_BUDf#6',sLJ7S^8zٔ.!~֍Tyѐ+MGh7j*HX 8}*v?d"sQo&#ni+~q*m7E~*yR"M9B(䛺x&NyLK#5,Ha0( 2]l'I5 uhIXÒAIc,Q5vC 嗤!dqQ><UL׍qh?Œ;v9-ˇlT 3׊sWV%9cL7/EgR-Q鲸c#d-%B:&Yln|_݆CqD13m+OL%5gb!;>0` +*%QZF3BC2ߊJ~fp²3IMo#t+iPI~,Z3T<[:K&6Gr"6tT P0h3E)|f3U8ZACZ`vrz:q}OXw1ER#LC]e$f7Z)2 &)TuLR uMe>ad)$b<2=clZ*Th¨7T6`L asOaU ,m8t-Uc*1!;֕xzӔa4jMw Fp3qͨC n.Su[U[Ⱥ0s+ ΧL}pYdhuƕLpYQ*{! Dݶ5dg|n[, ب(gR͜u`6 Ǧk,)jG/H18G8UOCVv3"Fw)5,Nyt%&O&k Aq!&Y|8VAyAΠMi8gvnۍsq~vgMa7yvgMa7uvSgMOҞl y2˛8Άpw ³7Ng7` qoh!\ ){dži@cgx{@`9éb& eb5OROx؟Tj̛TrROz*k)k)kik遵AÎ^~#e1Г3>5s="K_6Hm _1ɼW "JoRxҗy[ Ѥ7Kzz[ 7Ikշ/z`?糚~?o ,>=PFm~^(3K#y"àP VY\E`ɷG/hq`Q{qC:*Uu`.zyf6^/wtD8&[EQׁHĻ {W vtz?5W"l\ӝrG芄-g|E"\Oxj:1y4$Zpu<bm w"C׳-LCέks?;xa]V`Wvt5U{P2XQ77ΘkdjYHåjyƒځ@$zȒYwhrGi>>xx1h<#>H&qCv҇)^YcL_K--@嫹S(i7g.KsiyH:~)jC9mO>J5C7a?=yF/ }7 N м\ [x#5o ͽ$37|m._n_n$ew endstream endobj 239 0 obj <> endobj 240 0 obj <> endobj 241 0 obj <> endobj 242 0 obj [ 243 0 R] endobj 243 0 obj <> endobj 244 0 obj <> endobj 245 0 obj <> endobj 246 0 obj <> stream x\mo6 AFD-n=Cq--'slגwX҈"{=dcyp8|HhŲM^mˇj|}W7vֻ7$}&0IˋW۟$t4(iQ}l{o}x趣0@gđ2AYsfGrl|\^58ԏ 񙃽4:Brg:tLow*x\5#cvDGv8?m8,EXW2 τ?F-ä~M~p }*.P5OHU%m^on<-D=X(Xw 7v:d%8 ԙd3<3'oy>,084謋׹ H]A`B9NۇL)9ʸ@mbpW%ͱju( ϊgd̔Y5ұc0vISݻmOiy)a4,F.rlޓfRjP䰧0YY"cYSUt a,,ZOΘL ,)83ӋL }ՠ/( l;m>n0I,E YdM"wD{jlw-nvq~£y4cYs>?.am+khX?Gђ|wB* ЬMvT!`ٝ+>9B{=wߧIqo6Z#Y0NC2E q>ޓOǸŃ4O/G _@J Do&,(Gk/"ZK}g);64'Ls3` ycH17pCL܃Ӌ(T N잎W^DEMrUJG(^1MōP]s<_kHorFd7sjE9#QH*"9:&Q(D1(y"Q(sġP繎D6wn8jwlH9.gw9䮠y$w]#+(r]ArWDrW$wE$w]]ArWFrWܕܕ$we$w%]]IrWErWUܕ$wHJŘ䮎dbxs=b[hޣBXgf; 5ޥ{]Ëk[ַk+3ƙ͛7T[):#K/ t]c:1Dzw1Cz1Bzw1Az1@zw1?1Vcc58j:xcc8j:tc#8j:pc8j:lc8:hc!k1k1k3̛ q$4A䐐1! \ W!Ad 7Z"Tsvtwd Y95Kكp5!r٩sEֆůdI']P iCdb[<;i d|#YݜΘmV^;Zf/]3 ߇_9Wٞ" qxЛfy>bב夗=.'|"f6Ur=H8JJ0*sv,qOϙ,q>{{4e>{}-y✼P1M.SA;F*Pfp`2W|+Q7Y#b- o~:.pfPCșŜl>@[aJ 6~C!GW CӮ2CDC<E$ BF|:|.}e@Dr2C|$ x0$}m@ Cy, JX6!)lOHԏ!I\7:~r#r6er>Pp/FQ>sDC0?8'ýїƛfRe#[BbrQ%&,<\:8PT`QLp"\ tp 5*|Tl*gL: IylpƓV 35xg@&7m 373FC9{t|!qJaf;JFL%k#aҵq0"aR0SIHm$T6f*u 3JFL%p#aRq0b⁊e1}@Ų|bYL_?P,/ ,! !!)H-CXPuM&$;ǂ&$ˊ(-Crys䮎St*(.#o>@vWGxIX2 MJ^:L}0cʱ'>̲{()=`ە+@u ܄)$zB MXj,jQXf_l*ӡYTgF|ه ;cyWwewjm ]zա?Wt{v}.M}j]Uj fap־iŇPfX)%(5 aͬ10}B Z-TWB)VAUeR juֲѰyʕ)N HXɲG OW؊~8ӧ:s oTG dmp0&#otZ2JG0+SiOݗ[]uh^#.w MmuuAa Wa!$W`{Cpg'K,nLTZl{S )nqnoD[#m:۰NYװ{\^uBٞ1;`RNg`'O<=Hqo7ba]aZMa5.%+l~Bin*q?bl pNp8w-jwxo/ZPq0^᪵Nֲcm>,c;@zL,8w'k9.7 bo~''l#&W)ʹlp%ulgaR(f<wG;f]`4b.e7xǤԖOcS[k\VR59OnzLյg3 pj^=zn-㆙s~C ik 5N9PzfY ]Ub%*P j %?uT3螊EzgR;? endstream endobj 247 0 obj <> stream xZYoF~7G*(v# Hx-D`a50\#~! JãίyvZzjg׳nt_Ǐ+&;pSs~K޿ ݊7?uNp5yʏ8N CTKb' F^6nw͕?C1eB05DNgЛ/߬WCqv*=JziH+>}+[}uC1Y/@Axx~:h/' SaЩlD@meQ坣Sf'˾pNBTyםnQmM^x+|uJWF%RsASșG8ac{RH0 Ц_bNd d3D QUiXWBlL# 6ʊv#݀ዼ%AΙNi_3xc Rhܫ1p(BimzOJ+?8'B.KsUTJX|[ʩ)Fњ Mgn$nVVwy¬q‡8MiWm^j̧C}_6ϼ=oѐjbǮ?8݇ot(ӢE^͹/h 紿mu[1rIZ6Vj:aCql'3[2I-6[efrA$bĞKY%^Ma,_)=3Ziml) {cih/ڞ*r7u8r̓O)}Hr6Lѡv wZ>Ey?Hr#%U8'_v]=$arj+v% e椔g(,Gy$6k7y.(7:Mml(U<;j$hĘr$U`qzpN杷3LV-X n{$oBwKc<0qi>a"e"ߞ&zX8^h(a'0U]u \Gq3û>oE'XΖ4]79%cqRqO-̕HbqJ/0<=TuO/ F_MsYz|zkJEso.(.JN;IN3)Qv7>?\!AѲXuuǡY^Be@Ҙ'Q to)@`[A&>/v'&ĺ5<5v /I}@7\<`='?]$EDsZj isZp Bu6xщ_q)I 蟛ӥhW\m@-P` vT>9 CO"?_u~}?/Ӑ u !%ܜ^8 L|q|}?3!/+_\ N@Dq<ŋ-T y|AǀlKArN\m&;,f_}醬  Fsǡ)nOo 0.`kvmRL:8|4M "]9lcFOEO_ŸolF /h/bJB\}< yϕ1<)ilּ!CB[f3/S+w2ؘyM]v."FIM!o0r%IJqX4Ջ7W1 gAD$Tɫq1B9t ;mj}͜ <"0Mst|>$Nϧ'>:⠽MI,+z&p!/QܧKG^<G t6"^ueHǵzMɹ3Oa KS[T~30 F\O,Cev3G%@-(@ Dڗ8 )|oQ5(ig6Bʖ!72zȁh+"J :3M~YP>#A1*cVQ&yϸf'_|96m>s'tS+ VҜT-9 ǰ(f.wk&ս?h>HF,9'Gzl zL\/".GۘpnJ'fɳK)ImJ We35Jo^}al

)3|lꥎJ1X;i[YTt0zJB`c+-&T B&m"'cAle :{ q4IZz "| ؂[4͢ #7JX| ./6ՈtP`!/0M< (swH4w75`^͔q<1K!Ӷ:I] wobbV=DoO0"u8$y(sbDKODY "@65V Y,q%̏o}%C-(qߵƯK<#>b)<1x&~E덭Z]*)9>H"N: <i&/Vq'`oɘ͙=ۘHg} -6Tn/o!Bc, NЂĘ_2#9U]= āͰygRҙ!sh+h^ (]uJoZ]POn>.q y *U+n2t2CޢQN' PR G{ DN3;|{}Ԩ-f !Nj_7L|ժf46PЧ/~9+K1gw! uNB:#0g8#8!L]ш^,K2Yػ׆ِ{蟚d28jnp{> stream xn݀T%wI A>}$&*Q,IߟKYm"^ffg>eӕ|yߟ_v]x(ޗms]*muq}>ܝ(=YݭNO¿KU^@in`Kwߞ=݊84OO/'7@3 " PI,PAfx# V^S~8=nn fȔ ai  ?Fo{f?q_FU v*p7̇vr/'߳H3/5/BuX1qAVP]#P uYW3/_ɲ >)!ow>7Y/fg/ޛ~.nST_s@7jQTToC}&Ű RH;ƬMG!`xw7;YWeW"?_δO/.n[6 [ oD`t!ꠞK,ѲBz-ߤ֗@7}6 z-]U6Yo!jPȆE ϟn'T2 ByT!c,tj@7yה%˵$qfĺU.P7dK] [욯0 [ PiTUo x( Pf vdH=ގ ?7N@sp9FQB7WoZ͇s~WJI2_FC^'_-;% gW~@#.aH.` -a=CA yF9gM 5z˼'SAIwduazY޼ q#0YdTRR19FFfg :VSPsAj*Oo>VSwt@S`/K"=bIQ2`fX̻\5`fV: { &!~ĄXM^?S< N,$Z)WǖX WLGԗJQѱe 2Z$E^ QJ5GМ#F|<Z i<=j Jo3_tVcIuAɩQtQmV)A(6Y>hVmCEIX\c mAchMf*jEa%z%5F Hǯg?%i Azy nI2:"xԼҷWr׼o3/2*6.6]~ї-#H7ζB.x ͙/ALgCzL#3sN0I`8(o|Dge'%;O E$ۢRqgx>soNș>u|-1tf%/™{UʩMiSV'9WqDf8JBSQ!`j0@GH#' !8Ոj:T=,ܛ.!Nh^l;F~kkbȄD. 6&:٬ +2ͼhe$UJ_6AY/eEris|0yLWƴ8 |%U;9įB2G,UUrCDXh8@g> Ӥ M1 )AkIh#FMhtfkD%E詳;- hA#L֥iz<4D*<N~(0[BSEO~wSY1L"Ã:3͟LySmt\?iSq]_A IkC&t|S{Ї25!MjlZ]%d)W4Zj]21oanx ;uA& JxU.Q%+j'ɴ$s#D uP",7?" `>ĸP\_ DD+&9gODDFd%/̈vq$pe 0VH>m'W$CV ' }kI7*)O1o 9Ҭ@;6bZtrO*L,a*'-vOMzKpaNIJb+ő pL!0kSӰq>63*YKxm?Mu _Zğ?Ю `Gq#ϋv8pأc󡠿' !7>┉_nŷCs5DBĈ>?v>xLp9P#H=`иOIdω 8<,d'F3 {q2~0&rpo#Wi-` HxkoRpT$]=_> stream xX[o6~G0"+PӢ d.!bӶ${.-;Y$EC~zU-ZlR<η_󯝽}u[ OwZXO"q!$i&@kw}5>~z/1g8(v4'J@L)T"Eed^_ߞ2cʂ(&DD ķݯ?+7[Qנ]j>ղLH=J)T h2_܄H:/dv"ҳ?0HWF.kY&1iS- 8Or8dA{wv@oxYA`; d`J oG O_ȼ59\N K!zHHa!VͶ"0jk},$m.emݒmK|=Gk+'K6丳 ľZ"BK[nc?⾉&A1.4˱nR zdƋ<4x%w V<=c UC4=Og7o'r_ $WdQvة#<~)T jF gsXe/8Q{o5! b2iT5 x[rޟG+ȥgҾ̰k8IcAbң&gʩԇ)~'ѩNOHgo2mb!8e([4Fk%&.r"D=-vPKO$q;8_`CiOwS /VZ̆,Ԩ}zJZ~d*$Thj1(J›>0BD־11@/Ddwpg)E06 U_(e 6S$6SUܤ)vz18k¾)Q^t7=P9y Ҫ };rit=e:#نRíR;n˗u [ 7Z~qR\ @C 9k&AMZgޔ1* q4 `w $׺ > _,rZ4%da<]f+yyt#u' ra9R}(5;G xֈYt[S@u:/6 xmjPUQg[Ol .tVbW/>Nl9u"+-H5~qIv,s܊u6_MrY ?GȾf8up759PJYP$S\xGSl ͻ8oTx&Roib#3}[8'Y移.@Ze&kL\:{ؓ}ZRރkjV{:O$? q^ endstream endobj 250 0 obj <> stream x[ms6|<x%8Li:5m||P֌-Ko|( a'-`_T.7Hq>/˛vy_M}~E>?g&3JrCYI!d&7YNn[*Ōߑ^< (dHR2P I U K#Tod hOWV45TrQKXJ>F9KW}=e)&ma:BPshy(@ǂ:﫻՞l=&g31[_l{K HfޮVWag2*N~K4ZBK).7c`1,s1@<+'#DfG~21m(Uf֏䳅t >:)M*L(eaFYN92lS|kp(ZD xPe9`E*ϙ?;Ué!i5uA mjPeZLT|/0w(.a-$ _?pX'z!GhZك첹zvoV䀉;Uݖ~"+t&XXdbJ?W)u^B`Q2oiJ<DN2\@5.2 i__Iߔ.ĕSY.Yi?>.^ :AVCGR f[9Gmڲ4u rŴ4R%7"ScŽJ 1%Ӱ6$pFdZ&$XGs&b4&RȤ:S:L&Qh!{4׻y5 aa":"*nt;寱0T'WQPqaR >Rr.N8M>ߣ6_Uef1k6t ^ ?B 5~]@yg$~㈟.~-p?PZ$W*Knێ^^~?ʢ4V Y]  OÎ<@&Zx@&Nl4^6̀[r =£XBY{+B0D)Dm'k+" Npcz,SZĴ$rFFpʎXpdTIOxr)./> m8 T^|>O˻ ^'nBf-"quiJOB!)& )Xd)hɊ:퍆p0:`0ZLbVT)Aݯ'mlY(O/xv b͡P;Z'Vo0jS2>-,) ۙb6@+UiLR  k9y`ւqohu GPS @p`h1"|,d*#!eUDLa+z#cF!{S0h?\ endstream endobj 251 0 obj <> stream xYmo8 墑E$b$}AW5Kjӱd)+[J2K65%Qyyph/&ۦilrU>\hӇH,~ݼe7ˋx'1[m//8 XA"|jbo{//@\ˋ{-~e^^"_>#YS~@g%>ЗUb~w~k%IL$я/XۻW,h{6U9+'"ǠC$'O1hr)~?H2?qjc\>ReI+vS+m* Ut^uͮ7c, 9`. < R `wG?=޸0k޻ )a(C:8vplYÐrm\Jj_;3D྘U!GqWUzxh^>MM<*W Dz)^D5 ek&xKiR*>52f>5EWy5;CWS74-<!v-f@ GҏT)PZRl%"Ji9۲ϣj(|%N͍R5~,Oe?{+K0wV q(HV2҂o⡕5PwX 9%BQLlz'9,> sh ׭h vYn⁅ZYEd]8-"WhH_P^ʤP ~_(βO8mt뀮H@9\;] =.a[xvvqy4q%E+*AE fIb=RenCˡ_«3?63W;E"t}퉽?ߜ$5`GkvcTKNjVlpMc_uiz0DvKj֭j`}5{y{m5bS j/ Աɽ]TjVc*OgPX-KZ0ۄ~Oxc~pZCp]cphXLi8E ].uW*8tI"suk%p((2vIYxɣSpQ pG  Ze©PsI瓉x棾9f <MY Իʻ> stream JFIF``ZExifMM*JQQQC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222Q" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? bڹKbREQEKzRb,?GjNOC/^h/ɧcPcJ:R=(AϧSKMC5ս&iU< &n2"YH yD; Kdj: dEoK4j9w '+k)Xd'`~:׋9=c$>OR"-!ԙ-.Da[" zN)5&GdQi)ߍ;Z;{إ_4bMʊY(I8q/APXҐpDc#8GclIƃ;d`u>٬^"voR%keG* ;9 ⼋=Km`%Y$ZY;0>$OGE~ F=r _GM-AXq^(ARA*g׵\_,8s9^r1sg)I-݆{::kO0b]fQo`恝ؓ~Ƴ{0j۞yYF(#N:s=k&Ԓi;?5uM4`bN:UUMe5 b6d8e#yu^gx<B9Ҿ!j:dF;kws$c<ONGCRsz);tzFoi[QPqBzGVZ4?j~;s &;qMހA'y?JLs7t*Rd{Dqښ@T@qdW 1XRz( JN==yIcր;b #Lv\SLR4(SaP*8\!FzJ 3^mLTvG\h:;~I/sҌ _^ٸUa=k -j}H8' xqgqQ)0z>:===+K:v"M5#p)1׽?ژ H4ぎԘ@ LSsғcL}iRcJEjhGxMRF0ZnLzQqҎcld@N{PxQԸ0iiGA4`c'@:Sm\(=R~ic;`@z/aJpvv9'\Uuf׺$ ͂~,M!i$.I8zTAԒ7؁S\9^dT:cǠOyfIe 2NxyGC>zͼF5xV1Z-L3.KaUH7t=q]!7SQ!r[s$'=ۓ7o[,:؀{cК׵![#.I׸ c8!HːszWhI !sӡIϰ Y:;aNIt$/N${U@8cNs:/"ymI0C=YQa/#h19׽Su4M٠@6{u{O5 @[ ּ=K.c$8$cֺ]QH˓Ϸ~TSԸ}pZLu^{ubD#9=ƺ[X^\Xf_GIDSG2sOh"A70qN#Qۥ2ނ0##iIU1YJԻx?[S؉ }y|}'SO{Sp=jA֔J'N/oGتڕ1!XU۲vEUf` Nwb[/#qGӹ0`jw|+h ?Q2`MyqhFr֩uy,!?qx檴,p5W9Cֳ+b(r9Jn헢Z^-+C}s L`{{^H;R_5&cܟjׁ]&Iҟ6qUղ3R 0F:}?*9Infbw0q.T~["9X۵IϿMsMܮu.܌ct VE2T]:=Ĺ 883#fFA:k2<$coSҢR ;|ӝEIz uˠz d?¾pѤh6 $'#~Zl|k}lvyۂpT׊֝EmM"zj1s\umT?Q]5g|eb@I{2L&I*ӯj\R&s1֤)󢋈o/'Ҏ+=?ZQ'׊Qq֝Ӝ*!f`$!9j:|xbb؁9}m>c=5I.$k)AYnoJqw5dItQo:5Wp3Rઓג:IY.cbz)g1Fsޮ\Ly=2+/340>U=@Œ?>՚;c-zgfj(؎cH8"%U /rAG[rQJ?JҮmKXޠ37Lg{t>ZJ?{qYo$FH>U6Wȝ݇?kmU3jؽL+5ʺGWwVm%29~]'vx323i4"B=#߃PMYC$r0r2:'"2)D鞗xRA !xc9+P%0e{힄+H 2{s^,RBtިlq7Q!0#?Ju0Pi00igޓn<9#HG=E3=ϭ! ?ZnLSu(ld'4Pisn:}qT5*O ?ӯғi+.*AWTAԱι] $;dd\zA w7f,aQlW7I-XdsMtbNݪD{Tr3kJױC戜YwLRMpڮ,z!u)kwsx $P >ֹٲj^lF 5QTgҋ@GzԆe_yFͅn'P3oa[v,%p7RE[~/CߌV@ 1>DnI' ;1O8cIdƅzj]j푯cD=q>%GC qZYeB0KJ85]EBp )^kuugqN|0~rs=W/`6SӼMydGǦJ4o[^KG?:Nd d8#*sgp[!%$ '=]T;\¦_R*8d SSW^&|ёP2=GGJHC+cڽ:u4p..xbҎݩqLCLT߭* Z91Y=k_ ZIϧqZ؉n.ygKΓhH88tӆ8PN{u뚂+X$@;-f{@=s8NM#OUגܛ{VY'9 {ۿ:<3f9bNI5@Ԫ F{zQ 15J7zVzc޳/.)VĜ8瑚5IE$q}?ҭjڀ]Ĝz/qsڶނj镮X_ppמ5.$8\o֬)88XG5<36}9T;af.H=Gq߃Zb6w80#{A/eh|$xuzb < giPѝp9-l(N=Xծ\݁J'$ye zq׽gdoo+z7䉒+S8W}֚aG*O5hP M,Opv瞕j,CCZ!ʎ{XxjסX9dьF~{mWd d`A]1cJL0yn=LBcJLdӱ4LcSsHF}(K֊ab9?KMׯ;q^Q (?JBj)3#;ԟ@(n>{/!$@;}i@9 }O_-_X*I$G!5aM'8qr iSeTܒ{#,1SDP11+rהnI%d*);cP\9BNGLb9H:%w+)(ؐҘfnvOӹ5jS}[$ʹ=NxR$u=vBFsARI$ZXn'PbGSU 婹U鞔[.Bm"ZkCWOQ$ ?M8.M2nёQX2kI4yٮn/E#=S&Q!f \q#X]` cY렆E1}Aq՚/#\pzǯ_Xkp +W%{~.3ф& (Ϩ?dȀ$(@:tr99qi0ʓA8==z3rr%"/Ip2GXVfAvK1\1('3\qZ O3֣~Nr98Wfrj.Y#+Jׯ;Ղ$=A?Km;ux ךZ-ʇbv?88Vv\i7XӞAO vx7x{^ 7S8+a$l3j?ɯQ44c0sI&G\LȦ&qM=xaݨɣZir r3L J;2MjL31Ԛ ĸ}k rӸ|'+sߊ|QӘ⍤#RONjҨe0=Z2^qOSd's=hvzc2G%9QU#"@E!@8R N}L.AJ<hI Ͻ&<:՛ QuDV<#d(֭%6 n2A? IE`I%Y؂xOA F ưt `'q~WRϠQ\ǧo6FHw?s1lx8VOqێ=낥3.#h 0FGNjחHG~; qI zކ`y' yGҮMY$+\E4&)A9?O񬀗hv9$S'q?tnrAn{* ᔌ ڷRTތ筇hxwj1r00 ^'rh!g9> DljVA'~g֣*m&)zQkiݹ<V<9=`kgPR`1ִ"[zўgқhHڪ_#!sR{ eMA>j≋o?3}'5v&,_]ܔ0b@(Ȫ$8gR[tӇ*$7 X)!  si8Tܤ]=5'-L֮"PvlaS\G\w& ڥ+'ⷳaɌ&Rx`Yc ׯN8Xcޓ)q9 cLcvh{ސM29LW BpdڹKP!Lqd'rb@''zH4a9>500+IO0 2Gn޺H<^]Y]F娐Xu3YE!UvqsEē'vlK6!$p98~P̀@R{ѻGcjS2D܁֋ұ\,Q "'nZL쏦OAZIOpI֏U0*Oa--J>k;䎽~mFMCH'=皌dz.uBCCYswnh%E6 VEY Z7 pH>κouEc8$ԐBH9P}҅IAكI3ˮ|qnĵ+؈2 [H nO JHӞ8XC5! 8qWl3 I3F+TsVU 1?׵ek/xFؽA+gMҌg%ryx+7Cz-€)ׂ9kMp٪p#ҭ+qj£mmIZEf䓓thxJzdzqOYU{[cJ'`29'O+w @AsXqH2 #JЅ A=>r&o8$#AO=*gp;0~\D3a@fFIx=?ZHXpN; ڳlVɗH'gOZ` 4wc 1iry8_ª>#9 $MJ} OEg;*ke| ATFĶ0$۸kUϝѷtS='wC1IslLJi?!pZuqŕv;Tu5v3"h@3#v_9ƒQv]PŜIf=&ZRID{jRcF֘#,ܚքnlj*:zV.C$3nlI%dL@''=1TN=hrȄ>IFҽ͢90>^2Mjܖʞ{gqḝ-I'?֜n*ԚMJ`Og+GN y=W$/o>go ;Sc͎IVLjUW,d6VQ,qk@SkLG$D<=Bj`c1W5en4`75GknOW :#Um jI3[`wc:X#f#P]8q^{w=%ЅcV| $TAN5,rNxp:Q47-3 z{>ⵠ =PpGO\\u pF}Z2$灞y5=dz9%|!99cQ0 I=?I$ې8`czEf6iY3"g-:b0zVٗu1Ҹϕ< F}3p]X)Vx{YMNNxڼozY]ĕ$3W[ʷ#9c_A"xiJ~)1; 6r~V/_mj2rs[Sؙn8Uk_*p ܣ\ @®N싙"aH2ZqLoS'VQGR'Tv4A3Zx$9?~QGlЌpxZ0+:ApsT' {0:TOps? ͼwiAB9c.M0: 5D^z[[N"I1Ǖ\_Y De{Kp̱7=+lxU$blSVp_P3Q:ғܛ&)&A=OKgn!XZ}?hVapF:ЬT9'I2NKPMc x)55_/^ X=@%x:gwቜ4z~G[f`$sƵ""/kZHF nI:#zuJDL>qA`VSZ/d:ؾ~kN:Y֋OZ"8($ }iDT\})Oozr#א+4I\H]H8$:e0ոggUZÑ瑑Z0θcq^+BXdzd:}JI)pcƮȇ\ߓlcUD 1Fd#O׭Bg!>TNvw)+ ECP]|LCI'LJ;#[ GS~B)'9X:SFA𶰺oy';Wj##Lqx'ҚxP z)?Ҋ`d}jǑHHԞpKN20=nQl"/c|c>SJN]u$,Iָ=ΪkݚB7gUpd8xV} ֬ ;bM܀FG u5+f(ܮ  $gOz.uܠ \O.$r3͈ǹ7Z';+|4.vFHR5U=  V!r:bJ iidgQ$'+cI) $1sO5v;.:w'k A\Ye*?xRd噟_2Kh{}*!C$`ZVΤ8W1qF '4%RmT8d88ǦTFx8 Ok[yHs) -Xټ>p>aݗ8:~6?xs^J ʓj=z'Y}f%g 4J)!$k<\d ~tUl։r^sq~CԨC/<*,kiFc znG Yݫ:mԦ`,AzzfNHlRu9VN;{?!XHlyN`du 'kP-+1]x%rq=lÏY( ?^qS 'ei+׷ OL<=";g ʡ$aXr\Ǒ?kM$[]xװx;VVK,r{?μUep95#So\v?S 7[M$,^OP0~8N4NqӟW4XIqsrm ҷ e6SQfYHjZ1f'9?G]"6:ⲭ.-YH)?,1@{uv* _A_4<uF=kɭ&duZ%؈|p8 zzTPe#wHՁϕ.@ֱoeP$pkV wFVq3Mo`o%7ڱ58*#2xm!L|Vr  Zut7sB Vc*R1+'f$ڧpe'8ddڀ`qY|=#8 p郞W/_z7 :lka@dFNYI5wyrrn>*奾nI9yMUZaS! 1N <5խ4kJہ'yeE#^j}ON[IBbu# 䌎S+jWgU@?ZxOL8OtsكRhIGRxiO|z泒fH&#Y:f.p9 Քg+܎j$yHԷ10ANq?:yD P6c"9RO>=I'eS;O"IG&9W瞼h߻ӭ]\Uuނu1[6AӓX6Vݐ`'^ztL[<8ϭX);ګ]F@$\;U$x"Gs6,{9N+)xެ z8(~lʴ䎬[1<`7`C}˜n,sJ'lH"TncQG%Cg9*AC$˒\pG5233j#u!rܱq+¶w'"df#=椺P뿔UدHIW\OARqI"YF$8WQŨ]2 \62A8yquX}afVLIHg?xԓsRXZjO{KLMT'p=q*pyj$r ?zRc"R-_$Yh5j{sԋSf¨#皅'yȪ@|4`۱'ڞV2IV;۱GJJFI-xn 8> PϥO($F $r@1ېOq4 -!icLV$$c*[n).=",B Q'985,,vf`8a9}8\pjpVêvkfz[f"@ޤl |+!@5 ax>E{5~ϴL]XWq*&#YlSZ^Mȸ_G5YlgDpşYd $+Nwpv '\9T`xXzéƖ7Z(@!vV\zf#k2e~u2(kĽlwVjN9֚m79_FOsZ+\%R085A\`p?*5T nx˩WݻС( ;ke U$OFJAIݖ;7HH=1܃$<^JwLr5gboyR})l1YaX|Q57R018~=?j9{U%8I4k%$HT_A(7\ozwA!AOZK;W!_#9Y&3E 3szPRsPJYw I$kWiմ|"g^fFA xT5~=LSp< =)£R߉w#r? ըd$7 tQ] x\$(BHsWDzkz\܁JщAXPeAREpU;bq8<Lm z⠸XГ׶k*Kf"HY$s֤[NHXQK ͵nOtOm4Œrp :WծhڊUF%Hm8M꥗8Z mie<@tcW9DUDPpO\`c:5 T "[1ҷ)5ݎ>9ȺNǽ(+J畈xtL_܎QWkZ T"ًGkƓ9 .p9{Wkh!^}y&H?Һi,{͔(8!rO9~!*_cVA^c$>"MrUwlQWfMkdA\FF}rq*ؕ@IPdT RdU p:C85xfA$"HV^cB#8 ҴQ 쭬.qZg8bՔv9/R3jEȜ;Þ*Aqʁ=+7M_J F*'0.[ 5\y'V>Rh=AU,%}Gl s04uѷ ݺV4#Go\$ec`1 >ޖʖېs"}WDC;V]Lj//e?!lP9/"=nj`BˍŶ >?sJ){n+00zzNEJ/sG `ԪNqUY1_(*ztmYpM*}?Z]΅a L8A#5c1<\U*Zj4kpG_({N3bG@9'n>WM ڸ%9'p:1Tpڍ&WIpW=jBUnO&#Fp<8*I,p `rX{? %:*ImWVSWEc2y?Ҽf"AP:s^F0y110Al6+KGaސiT7Lt޻'>_Ί`y쟸p8ȩsqsY/~pU~`$Ӣ=&ONki-NV7k=pgM ΢ۄ;тB3=+"؝g⮤#>vuX3yd^Di#E`O:kJ vf'̕ձn?y3fV{Wĵ+YNLj+Et!utU@Q`nt5q"002֙,(\joK )r)@>^IB6o\iHH{5"IgvRMRԥ$ Y*bmqcH;B^Ƚ]R'thC4.Q,l0vmq_ʴ 7͓oҳP}oΫ|>9fcJ sNG5Jܱ`x9hPē(:1g՝Ê])kSÍ=yӆ%O+~1?'#=? -1⡴^dOJڷY[A8>¾zu'VWұN}6mgzjlrKlܽy8<$r=O8#kNZZ%V[\;G^ŀO"5rWSʐF}ku=: Y 0ѸCڼw[foZD1ص_ݖYrٖ/#X1څ?1ےz|ѹFyC3H@a`\șԞ>S 03{Wt)݅|B$h%! D [>Ηc*XksݽµW (,A<9=/8Pt/~$#803 A?γbxd޽gI0ϷH.d8$sUt-2U̡p26H?AkL퐨A#!}yy`zF.OCwFUv~  Ǯ=~5'h#vqW\3$I(Ρ_WF^&OM +-ld猜7Vt WuZJ^ 9銐̀sҴtX-ZHQM\hCE='( l2ycOjf#~m<1Ysi)\qa掕m]3wPYr$ޤӥNL3)uE&9vJk4c,9p*Tv/~q'~ @֑%u*\=PTcjDZG 09''ךTcriA%Ģ8sһ=Do?4rvV1V)2?m6v7fmc#*'׵ZT`Q;e H$"21dZ̹r:w,|KdD!⹅TK=A dgھvƥ.7Yb\vs>]3ESOފLZ*{Q#8b.4Hq\c5͕1c^ՏN]u$Si?*f$`$ƹ}RtBy?*Y˞r9 ]PnsXv_q[0 `qp[SԌm9 u=7XA#uB)>+hr~8{cA/9/^I6?#`\wQrgD}?^in]L57Gi FWH{z~5,_$?u$? u;s JvaXx' Hy C7O bTWtz)VF?EqbI>$19lm zLsn _`+x$*5wb㨮SQWzw95w9qVUN\ tӋxw̆͸T5ƑDVq*xl5wMmB8OuUؤ]jw$= Čk[Ng=OT^dO8Ưo.R{\MKB^Qn@F$֩ErC=>!pxnz$$11\մ"dsنyLU 5 zt1ѴbfGYI b*o|v[ _M H?,.MF_N'~Z9;Ur*pA 4䎚SMh[H\uҎg(c*U*9=d72{_G,:vy=x=1%߬{(]JKl삀a+`XRI/(&;~Z|VqFj芶6V$iu'3ߨA:,epG\]j\a-̒=@$Z ?NJӒ9v?p2AW[褷h弙++1 `Cb94Hw8*i<0Iϭy)ݦzTtV-G*:;?!SƷ+) x$zm J7Guv $jc׎azb8"H/PH zu⩈0;q֭m9&>g<]2++[#:Ty#Q(lUkڡ|zOQY̥׃]։<׊*Z; mB@kn q`% s3зydq[SZy$5A\IJOQpHweJ8稯 ~ ż|^úȊ;c OB j󯉶b]\.ֶVI-?5ew/zI榉KFXR4T~W#UBO^jyrnP?2}G '(cS!YX <vڽc)3jǮ\N?*/*h":}3d=Fuch`6I$}:p|} qؘ{(3|\q{וy?z?<)zы^H_zJ)'=·TA-<>zų@?ʽnӥ@$ Q-0s\u Eiݷ|GZ_2(m']3+Clk>u r+AxԂA9ՙA8DD s%̀g<זx?W^u1֭TDKc7U5,pkla r/'Vkq?ֵ8 2z5nHWa`XI;}3Ds0`;TtjLp?u=,z_CZ(܁HҮ x"ӈ)IȭE휞]\f柔l(1Zbm/èb$Bmz rycR<8RI`JѾXw>S4q-8^qگ.^cʩA|lwx&ŵȊ+ery#={ZD}{dn.}Nb5vߐ >cOdy]4 )1:+CgJ{8?ҨR! xGC[ա g##Jiaze0ɂ港h#}%;?\ӎ=dL8=AkI d_O[ m&kΩEv, _QTnX(ǭYBS>d\\ }5v;5Ku4Vv<+r h--#2O^>{b2Rܶ#{u֮sY3<:(8 n 7|yI\ռi4$/,v}jC(f`r#YG OW(;pR'܎W7$ʜxֵx$-DK9$#֝ NHY Ӥ+ic&ނkmSoƹ)d+vzݕ2v㞵ՈxxВnIw:E <܍կghܯ'\$1e: ܴqoju[.Vv=Ot,Npr<}i'?hV*yp¹ybr+r syWξv; O.d1p3 LJ)Jup09'jn+2Ozcp@az2Ymد+<==7ڬqF\s;zk@'UӕɖQP``t*W iNUHY m Q*.O,sH#U\񨝟~Q1[CP('כRNyvqx#nPHomT =+".J7F] pG=+%Ikr,h} bO}UI 1 r1³ %ʓӯOJ"Ós8}DiC90$gY0jX#;AyWk'潚nku㎞aė63UK0dTB3]&#,F8bRjKO 3Ik K [HbRW\`O# ;tT4tFr\{Ja#\lrsQ7~)DHPtQ~tSXzS0AiGJLitӬ3ں+"`P6#z֞~mdt'LVw8MkODdLa*ť}0k4ص SA`85嚞sܴAV ~֝[nup,T/_ Nx8}M'U5HrsJz#ګ\׳ z;U'9*z.ᐎVRqU(TiFIW8>TC`hv9$2ߵvӳG}&= xSG9 3l#׃9A%8jLt`T=fAcf3'L>ztuFczb=Isڪ&A$Zӧf*Q3n[}RPc4䓟CSCm']xڳOZ^+HiV#XcM.08JԵ`@<ǭy5"wo[$0 ¢>ըbc# c[F8S@'ּ{ԑ[$dp>%c>srqx= ZI3SXJA{>pS3UœqZalV6tV dnqϥ:Ty.I+v+z+OMeu sVIÞyWHpkul pmx_~d$Dk$5=a!P :YVbB9wouDB' ֶNڳR%."D9v?Z4RP=Et)$Zq#zW=jw 7z~Ihe$^ [wYҡWL7gnG:_ށNjsPwg?CBo.KtxҸ_޵%${Xi$٣k˖P2=8+O3;FĴG98/yxq{ 4}[ B0@QҴȴtA~fjUscJEQyb9#u 8MR,$ɑN{Z9!)O$~QqceWDW+];ۥdL#u<ֱ.9zg+Jm^E)`A=!`{?Fcm OjQ8l`h#+#*rzU(/sH\9$ dӬn#=jN*3֣Y#q53VnT릜tKynM ($Ӹ-1Q}y늌t#Zhbcneԙ94{ DEM_MKeF/zm~γ/溾6rړˊngy%=]2+L֌"f;66[Pgi9ݫ<=y[ҍ%Ev*1כѷpAJռ~#;{ۚ=Ğ֩e9=sOLSdI?JkC} @{L Au9i㸦!;1ָQg#Bjyr^(#?3BRpr;K:)OMY8y]=dy+I tրH#&΍$tJqf("Uko2#9)uS Ǩ"Ix6 kqֳ eѰaϥz=6P@~ m+Qpx)J6嵊=P90 ԓ(qǜWjfDl~_bkdQ##BTnѓl `qޠkhp=kIWUI<2}ΨIHGFA S%)ߌՑRr2}84!ZqJ01W*Z;8=SAڸnƜ|H@"$\o6<{nD0Fd@9'Mp'W.~Xʠ<2kCK溝]̒1 dԼZ͒nVA5hy"dxA]Qڑ~2砮Xk%drέ?NK@PQ]cȸ@GO2!fc8SQVF:vL?*\L)ޘO4}遁< _ vODx_υAcCZG8[oR.j\F0{g5d# :[VwtL,u`gT&H$#T*JV Rdl*Asz+K)Pj5 .@q i"WkT_t8RI95z,-nr=OO$*; "R6N|rJ4ZRY95p88漹)FZ4P6^H#f0=3Z\zɹsV:a'Ԁ}Ҥ1׏j$w<ՠbg'#X kjo ۩H9=;S$5!Li=H#׭tF͗R+)XSktyrmA*r*xnOE)EKr7}Z+rz=&t<έGȽTJ[Oiuvv$~ c5l0pSWokɋ OJ6&c z1^˶FrlC vM`J,t$!0Krk9bi@<ӵ[`@i20t6VS_2,Jxp?u54iMd:կRG_sE5Žz( Յ\DsHh'<(ix^.G yz cHݔq?)BMS.56 dEFvku &r } H3ndN'L+%tz8$1QܬE$RHjq34(oJm] MBz?vix:r~a.G7r V OJnSyxG'ޓʝ [+ty,sߑ=89xm؜U{kQnsr}تmNK'~u^jl< `5ˆ^0+]3O>fu Av7mNPzS]e6`%F}J*²bI ڿ޶,nd128AjͥPG##֢u%UP_s+8 0֩JL{R*SqyO^{?Ji9&r+3fr{W9o?Oc9#ȃ*/j#֛Jdt9F29T ݐJ?cM#zS3Kf_[LW*{XσV8F QSyp@xpLVkTy.᛻`А T$]G[+2+N!KU{ SLWG V(p;ޟۑjl+rlElMxz$-jS)Iu&ppճ]=IdҮ[h N3 @D Uiɥy˩x2鐴eMz=-}E$jG8b%G?օosBz6WDQc{V흔v0#:})bE@XAGjI!$L:TF:ujAǵPvx3840 6M) ^{ּTb+ռP3ˡ+dA_ M4Xe^SFd\4jM)qJ :ܑ`^?a}j& Դ&KizMUb:\&+GgwF;瓊Wfr|W>xr@&>GV6IpA$܀Cg#_s?[ ~u6Ȱ`2|-:˿[vB*޵55{'I9,=JވT` Y^ YiXsƤT@AqHs7<ўhzii'֘I';aϨ(g򢘮yUd@8UEUtOM̤c׃AyHj@WSH=*jM{]$M*z 끀8T_JNTE8Ȯ1*vOSM)3H7"P} 5a.!b$d\ujA8҃$ux<}"ϯRW=Fv8 dVS\!}0ir++ Wd(23?zpG%`a\z/m9 ǖ<isֺJrڎ3rjR9x1/g槏tx2;s9|ZAi>K[u[PO4'nGʋú R}[?۷.jP8T((+w%eXRH dո fb?!YE<{t9Ai(8*cڣzqVPJejՄ=z$K% QLx'<#3RBhsHҰut`~9ՆnCrg"~9CUi ;V%" F8 UCj"0NE&@War9yɦϭ+ʥxjnԂ Y+qQ3H,ne O?=;RltJdcu_Φ7-ա#aXr H%pހԸO/a_NKۢ185xKHf)1V:d~Yh"'fH#`q^-vw9s ?,ᚳb&yP@k$ 5 Lsq!1SjD2< v?.*> miM[ 'MNB11٠uٟogٌ[Z+A ! 3I?jiӎn3w{!z{(s=/N*( pj4*tC%PISDg`s02KχWʜ+{uRDدry5ڸc\UP%{bF8ޢA5b1҂*1S5SSIds9SzRKMƓ~ \Mhiz~RdttP0«:Q^1NwQJzQH@s&2HE nݿR6iJs֊(sJ袁2=^?Q@Ǭ5*_Q*eN@X>G5aWEЋ(*iSB,FVP~@EQ%QQER$ΤU! ڌE\E4g2y5gSf*t5/QZWx9dqEc3E1:~xdz}hݾ(Qu &qE 6s})>2zE1!.x8>QK>ޥTEL5:'Nhp*.phy:CEXALQL TJ:Q@NJwlQEEi֌1E W EKcw@zUg9QZWt"e9PaQ)\hi7hLB3EM4h)<;QEڤX{QE!TN*eAQE0Dȝ&;E0,F8(u(&*ڊ) vL4)$ʗ<.y(9zJ(}?Z( endstream endobj 253 0 obj <> stream xko~3ui).wNpE(W{cKu4řۺ骵mۦʬN>eUwY?^_ -:Il=ŠǍ ﱴ+z]=m-q}8]DNo % $GV@xXZ~~g!C FP@*dw[ړȶa4|G| 'N') ~@~~q.a8tHzN8ZvQՋ;i[Y^Zo+k}U 3``͉@-py-2x֨)6؎оÿ5?+'!%kjr ᏯԪz m:6FVM†h8#$ф~_>,GFjvdvOVr9(Kd#;] {D]f  "j2V]5mJڣ½|-cĺ**lU#~گLST>ZR53Ht9 6Nܓ7jsZIqW36 IF';C>-?+ܗE zZFx7XX^vjT6}Yހ!Z*AjHBWm hR>QB*'U$Qy3 _HY,9 (<70ó y ́qaB.{7tiK7 JK fX;OqB?wQsG0=3^pCDHqKܩzv-0lREҍm% A?j66f%pFq)xu-t-J eJ@"0„eԷfW$j4{18q}A´@jc$ma; kk# 5:TKGGLk;2z(W,=RH-)$&nR\Հ}BEC薩 Dؔ@R=pӟ.{-9tw.?(CӓŶ{0)")yyH2/8lgeMedVۊё@WbPwC:7511y %f6Grh2:- +C$C9c 4cGӾ_78>7 8"tJ -uE'S5К07FˣEk9CZjUx>cؔIid5rv!=(P4ODvq-=gbMr$t\f1\kLloROa4W./vJ(ob1%fZE)dx3>aSJY(cD)8+J 53}Fes D]݃!§&LrO^S,\BD,&t[,6mRcp|ƣp\57Iߍ)p /BB"9Zt imUTX[9:u5_!cĐCQVX+P{dDb<}_+/p "$,kJ(‘& i;p/N댬cMڥ5&:px,,o9+$֎9%ҥ=2Rs{)S}'Tr!_+/pajQΟhN5nWQmr =%@ȓ9Mu@._wZ)=BUJ$Ig!r(Hc;H:_M&"JǥPsyRi}ܨt0}4VVKvnb~޻5EٛZrw bŁS$\u 7dą1#V7ETCJ]=yQe)ѥ AEj13׉fw-Ғq`dKaxQqHh&cN9p]!>B)fӷ:lpX2^5 A  xh$9tMEHpg@pBیA5uDtD^>ۘxV(3靴 ر6?Uچ?lj O*'}xcϪ7 -^"10VǒbdTO`P +qs3^ĐX=ZRL+1 u|^t%-)[~8 ğ1bDFQ"HDU* ]WťHh"PᝡX19k`ӽуK20-2ܪk$q'LޤooI]5*]VxnTS-!BML7oM5|z||W ;rN njN֬ 1ɱ!=D!R%!MpCb:J8ߥvUW֭dX'A>5w-Ҋ)=={`6\Wk =qHt<] WU?[_wUNo$"Nlg#vm0tWE'! SfUKe Z 3 @mK2 $pSoŶAgZw Z qP \GOwn@toyrf݈ڨZ\.WaV.1 N=XuŤ@o ήHIy݌2fWc=9fk.6Lgε#e,t񾦛 \jKd3`*ătJd^B>f{L:nS0"L.S+OT\r[HOLHϹP(ðH.'fX^  7<6[vCèS< }$|wQź[u{+}SpkZ8jT2_s;E_~Kq{DI׻-AX*3%toߞń^6$Xc36|M.0xzuÇh 4[_tnrLH؟ϊ_xagAo~6N?G5v̋`D)SX֪rmB[Bt+3?+|zOtR[=p^Qfד0`oMF.t:nTIC~NqMEKSx0t&)̗j݄mʸџ15vnp\yHB@ #D]QUkgQjkxZ-̫Q͙m~7X\12 w 8u endstream endobj 254 0 obj <> stream x\[۶~9| cs/is\ZXKwE8k:0#2M+C e.g=J#mpJ:zqF:J@8~ϚH㸻+σw׫|dK# y3"{6ݗ쎽#dx ZqOUk z3d4 2c(HCAFA00 G1 X! b64&t ^L⣀'L:d``jef9h¨COhb 8Bu H2)DS?4 .{rwֶs4q:quԓQYn g&=5,yrN@; **L|,G8Bi-;o23缉5(nS]\|ѥȼuav!ayevSdOFl1ɴ^Lr5'"W?9M% K&aw:*K'Ăvlܳ;9Xq `A0>G*D]:NݦEW`H.1W w-ھ?Є*ﱕ"%0aĉ9&:׹G -(>hXtO6%B%|]*MR#y ~06`+Nt/" LD~ĂL \wFe2W"SF/onO-EPb)-p!a@eVB,soUeWŇOMC]QӜMvl;h5GmP)IaPH/D˃Fj*weԯ̖X=ܯwv̀)G'~ ſ9{xKoM*in;$']PE7bEGV! \#]%D4#{j3 1:+HP Ul(D"\)L 3+QN(ԧX;֎lw< }&\ul7gDG]vxk". Uz4ĤH<rm_] /Z(i䥗GĽ a& ܒ*n(YĻp|7pho4%޹~$x9o<\f9!y3Ӑx 8P G2ȏi0Dcz pVffn0>r Q>]@1(,/@aB ;*l  |:@œs*gS ]cX\-'Dv:7Zh t?vBP:ܓ vO 4Ĥ>>I[gT1]ajgWςm1nzZdip"v, L939gGAbT48O&f0Z e}VʇYPf#b@V_UmOFLUBbF%~(ԼqVIש_Bsm}6 j^>r{t헗)S@v+ʗJIzKǴBWcZ[i :{>n}H/ ? 8$2^0룖عtz8 1 6t$|ȭBx κ0Yyh;6(c,>Yޛӏ^ejPv=>k=m1_7,QRX"rxYeLjk2 Zl1oīCD?zpKruUveeU^föXf3$N>¿MpD٩ai+X~(ՌY95DH?'G endstream endobj 255 0 obj <> endobj 256 0 obj [ 257 0 R] endobj 257 0 obj <> endobj 258 0 obj <> endobj 259 0 obj <> endobj 260 0 obj <> stream x[o6 OJ("E+ 6EM}lBX#p I=QQmؒyQrv^*]_uXgKv.;L"mWoW7Gg_s^;7#sb йyw1w#߹>ͷGoړ~?#$Dċ#'xOH̎V9oϝ4e(cTϟ;]vo_+1Rh'1KP)J>Mn\wl& V}HsGc`9Ɩve<$H>^nON[׋2'{,BwwɀrhwqJCg~bs3N&w) .Z?k>ՄE'{}psŢ3t֠!G(ioɩDrwWCnoS qw*snU[ONCwwYzb]GOboSdc 9yݹ rӏHFJF]lQQȞU Chs=xqY(fe̽uY''j-Pj/ rF4$u1ROEzD%E.TfESe+Ī3\K6_*{&p q6O-ԶwdcE+QlU6k86< &JgǬZwFXwUշi1X+MԚv뇴 u CADG6L3-nՙfDtQF3Tf2+4z,,"mB=k5!2 ߿cYwxWE, 3]^}py@h>2eB-sruœE77O^)~H~qa!o@^ORj b`!Ar{m3zPKk)xWxV[hiط:+9d;mNluC/ӢZ2[@};^W HBԗ4|V@tHidcwKڰ+e673PC҇ YS bw~}>Sc!i[JK{$QJvPB=XQ4| i)M8PWt_.hwPzR/No$PϔUMq}Dh`L-U>`nG8O3p^^cT,ҽShnj#JgP& x [QA#k}D,hhPΠ/W,U_A[IpfZkmU|I" x@b-y!mveOU,ĮKlσɡ:pPF)4IN4uDw9_:E4&iꭊ%2rQ:be?'$?]\2:PvXaHrቐFYu=)GaYa#9u8ͣNgv2Q۹RE:ڴnHandCS`)ÖJ[uDi6LTCp*ܴ#= a ϋ@nTt։;8@<[ P=hS{tC9BCojKOQ}'c/,hz7`U2[ ڋ'ɴ4m KU2Uiu6c 4tгQgx80uNYqAc -%vlm.`׌/*dX>t(?1Y%p~BIq` V b^qRQL|!C 9M/ճWs;Ig\:%d2IЉhߦ=m% JD hg$D+ ! 8.mF%R&F.I%}1@;54Cf1S#7`?;(\Oe~Ӡ~'+Cuy~{qTM1x"1O[]5`\ֳqYK@.{F.khz4.I/1{ 7>>n=:p3+ϿF*-^2v0| |-4?ױpt-v T c kߌ1hÊ "OEwp@jj6[h o~-ߵ?/̜o4y@ŎZ&1GŤvA!JwKcաD֔b-^ K{zf𢱂zHw2L1tfjFy$9P'54N0%c38LM؁=a(0o?922Z1\^(4+wwoeœxW 0qg"ynǖ! h dز6`!7o?9rV+ ߳Jiҗ_#h hh&bC)܎ L5>56P3ؐ!6_op e5"8FLǔ? BNkς?ac4h h\o{{ooOFϕb()0}EL(Ï-mh&" .`bhOpTSMdb0In?>U#[{ױplzipFm؄ݤ?5e<{6TI|QǦ/PhNCuZL_2^P84kdu]/ endstream endobj 261 0 obj <> stream x\s6Hwă^әNSwҜGҹ%E"oIP(8Ub؅|iE>k;{ֶ쮘{ήή?gWmYmYW=8_@( Ի^E^"/Az |v}|z]t|cxMX5@IdeAx)/ hs%e*(a<$eo Ϯpv?_^xNWk7;NY='A"Tfr={L/G_22Pc"! u0۔:A22BNtW۷oO(VE#ǎ#4nQ>iy Dvs)0Vyw|}j뜣$5cwJ0Hy4?dAL8%=u_k o)mH ~[ӛ}D Èp |#k 'x&t 8c0ʗNqS_I&QRH'c" c i0c*ݓ({D c+b#"Blr w~tfuS4<_U@uz8t02`7 8C V\a  `јgQܰv0 S"4,t?^^xwWM(4"S$g 0  ,PH9, Faa ̎+"ۑ0;sQ{` w Q tca  ;H(z$L!qMP`Ǡ` Tlľ"2;w0a߮@Lю!Xj =24D. X}{qm93xΓ(Ⱦ"t> `db7҈n1y: (i @ v@4bP<ђeڶ*@aWJ26a/<1SRG;!> "X8´eU`Y@~0cNeLcy@UOn@Gbn;H>p\ʸ)C61!u?{ўq/]N4@p{cGekOQH r +G{'zZnNp\xTzls|flY3Nj?ȝ'~V C2y538,hu-K(yމXDlw9fgC# 1*w )W- @0Vx:Q.ςzjsaAw|-XdCFN;"/zbeOJ,/W(t %J6Ʈر ;.,]_Pܪ:ˌ/( *.c ?b|s e< ԹfLRLY=s*%vz'qۙR),Nb/R"6S|!s(\~?W/ޜ٫S5S/ܓId"Fpk8{vN#\r1B!EľZJ]SBLl'YDG{MS7}8M cJB$}AFe22=+d\$Ko cOcr5DN hםF`@㨻%p]j$ 1?RSؓ=9l>@ ^^uzS_:>Eit=] $}ÞGj/`n׿-v[Wp xz ws8THK18>R Nc#O'n1eTTi6m6#c.1(.nT("l#,1 bk3M5h ƠX c!Xh8B6.KHwQM9+N,Հs, Nl%* טAc2f~ޥX/k̒UOdBfg}})EV^hrabX2! b655򀧮)^WѾoPQ?p.J,dX\dӈƤdOen.P/%RPigw}2DCߜǟ%dJy@|LkYɵjE*bL#IJ̀4Iw#9;o֘$dT}7"(2 381uL!p1FQBJ YV7nds߬Y&a,` nF`^`S=pd! DIAr!rӟ *6 I8"Kbu#cϢVJ#c>(Y,l'O]nr3%򇭭qwb:RaijnrZ O2Nn:p6};go^_~ֻrX0&cLBs-^`2_T#b0`(48}+r[+XZ'\eSFT֪L/o#Y.Fkvb?2> !Vhd u)wp=eƒRlJ"5"}'+Cœy]1zgL.nD\ E_3ۭ!;ģyv7> stream xio"@*i9wlE7Y Zl6BR1} C25|(W/ʺXf˫uwwuru˯f&믽o^^{ܜ]}=i,Ϙ¿KT&^,U"f `߽KP~|w~v{_Da `w>cɼT4Hb/@*ϖy\{HC& !$|m-rK/4L =ڊZxŃT{ b2f~竰g(GgA `)ka7KE.;oB~$rFxΰ1A8(R-2JW4`r19Vqë٥ADl)t-mZXwqpĿQ 2Z}_%_./CMywD̯g Y|)jvfz;Tz]uwI?qRC鄕胆 ڤȜ{4m|_vyVfi.Um #@ItEAHtO Ø%DQ 5duN HA*Zs]9DQ]8}"%>`Z _.R9FH=%ewN)`}آM4fzKHp<nmool toW$RK#&fZ` PIc@ )A<& @%T˂^ M' öU#j姤 Θ qbɫ1!Cx FՅm-RZ*=a%@ot]zDvi\!h2Nt Op7FԐpnPrWϤ"3|/sJ;ƵEquQ0(Hk8 k /.gqdD- t}Ѝl¤ e"FWo-Srÿ.3ɇh9'\q0nMQpo$"e6GzIKؗ-(ؠR RpeaPw5%~/D:J2y(̙F.ֺ_EU}eyxϫV\<Ȇ+܎oE+˟no ݪ4Řk#(4 * }T&B(#A!TMR ͋YnF~#Y|NufQ&6H\iPxڊ*6 E]b-Ve$n{wBۧ¡J.NeV_!&!43:Y'61f1gsC,xAo{‚Ёlm] vqi(A&P=E{aJH6Vt_ 6WT޲{b+SԻpP(]^RwBpWW@ FhfA$ֻ%Q}͔tG-@ ŴbDZ|"cuS1$ /2pBTt:)=FX,GJ(FΧJ! sU6@LK y"3-"rٹ(uo={n* wuYd$Diu*)=xu@Ѹ>ǽϜ+:nهMapnjK ZNw:lrD<|eZ%\M$qg8!з¼%7JLm}Qr̟L sgR\uJZcBQHʳj_O0yv1Zxx+ 'x.FI-C埌S(+e ī"J&;jwCm6ZCs#!5IWJ@l/ m3*,LiƕMôks]I{Th):tp|6d(;2<s(?-)#M=.'mED*l2߮wQr3\kQTUd J m@Bp1ڮQx#YCJyNO _NbCH&ӆggTuYtF.J7wmRA'ͪ`Xm`Kaֈ!|-qlM{u*&wݝ-&^i)]{ ؘ(ӂ#^4 ط|R)`)dvu i tJaaD19`C=sa3Zye@ nk4._г~}yNr ~e22Y:6oIӽE{m`Cƨo PH1pII2?^ ARqⵠ$R̝A58tA`Ȋb.Fq..{Lo=AO! ;ȋS^-IFxg-Cو`QC1(qk&NcLӠ EZmDQ_i%Oj`>ЯX:Ţ.nWʶ E0y>4H1O|/.(F%1K]gZZ=9Z%#Tr܃)dIa|Md)qQiGdeL";AD  wh;Zoe@M_go3bS1y(cq>;f'FDEP|iP4joO*Gl_L<*[Ϩv֛n[:dwF?aq+}$NB9h҇~bޞUBq3Z*#QhXuw`OP7Kv`~wA}Qˡ|7buw-DlSt`?O2 Z)]x;<ۂ8c}Fkp뼁)EMU~cqcg.~5#k޻%gA nRxxwpBr#1RnO;H|lOAw=/ojcPaG;fդ()N;>dR#AR  P?q9AL&T0<'2XZ'baFaȏ4e[4%NN< JC#sԀL8TflAmѹ lȃ@ξcO>`68{5RBH)=MU&Z#44:lephI?UHgWCΣ{ă endstream endobj 263 0 obj <>/F 4/A<>/StructParent 121>> endobj 264 0 obj <>/F 4/A<>/StructParent 122>> endobj 265 0 obj <>/F 4/A<>/StructParent 123>> endobj 266 0 obj <> stream x}Py'6;il1 Qy/A^FDFmFAqAw(ۍٹ?nw珋?؉쮮^|~J|~/_ Hʕ+7o޼wޘČ윜ieee4ͤ:q-vP }'堒{cǎQ}V|mZZ;wRSSQ-[P~NG]qcǏC&,,###ܕR<8|xx8;z_>00]xl$ruu޻`g)))tl]]kbb%##c{a}}}Uu S\\1&'' TЮ^TTkQz+ћfPkVVVJ)xx(SBBVNth4ܱPWWꉉ V2ڽuuu+p޽;rE)ܹ^GnRia`(-@N8144ĝ0Hvv6w F>ѯt)>>^w.~ ?X`NSSw΁ZZZ0([yytބ$IUVVr)KNNÆkvwwomm]Jl="M2šӪlmʕmmmᇼdqrrf%!MPGGA q(Nӿj~~~WoK2+yM翞.J_&N<)=C""" 3|KEEE+Vx8lllN(gϞcc͛7wuu)5 6o,YrM900"ΧQ///ڞÕ\z&jjjęqqq/OpPPbŋ36l[ϟ?NOO_z8?!!a۶mz rWn<} 䥼ܮI1ZZZf/CUK0(t2{%ossL5?6\+ f|~Bٌ ovHC.~ڿ޻wZۣ_~#r5c~0w!p1GӸi&5;q A^`t0H188(_ن3_~M +7e(>} `aU~~%Kkjjƨh4sޠ0=.83666 wڌW@VV⒞N[sq )׿o+(^ژ$}da6)((~HN-ΧGJĉxTg^OPqI*b;pMT---V9sf~3H xH˗^ܭTJ0Qz`9:QU!mnxxߟdddHe# Q__A n߾ݖAy tҥK{zz8(Mooʕ+[7(0weݱcw&''V^vv6w[͆`B& rVTZZxA._Af-׵Ϯqg jwM<vTܻw;@)s$ʕ+`&ʝ 9eee 8Mʝ !gϞnrg Ha$O>`X qg 0 #\,]T*t|w|,wC韁 GԀs֭[ ZMMMܙv@1 ϏRPPwV0ccc-N,=cE-1  V__ϝa`3/99;z-Nݚkbbw6VGGwSpOrgX8NYYwm޼8wBz8#<T OՑ;vp7N{BToo/w{B(--n,0[~=w3-[pg$gm@*3攝@O-q -y F+n߾͝܍@p]R۹[ta鈈nR˝0-Hw!//;_nxxwZVVwBU/<`^t:w֪ԩS ?ܹFxJsp@Ο?ϝ3W XpyKKKc6s*p@ 8g%x3lVuq@9|||sZ0( ݹs;lrr;ӊ[le-Ҽ|;O8eeebV|}}S[*!{ۻc 4¯k Lkhhp|F+jH!{{{]\\x5w%xmEFFrTZտ'O;MpmDD^^^7nuֶm WHGjkk333i,.ję[}|r& ΟHJJ Xij6q0D577sSZF !qqqŋtO3>|dNG]UVǒA.))hqY\>{͑_Q~:==jfWWU*K@BBUQq$]3֣G[yp ;r_X7[-~Hм(W4QQQA:4ϟXxNs[(EscccAdVzz0݁˲eZ[[_ϳ^QZmPP^Cff'Ohi%37[4ȲoEPF իG4!"M˗/ P~=zU]]Ќ~coM ۷O\tǏ=1Pv7e3^.#qrKmm-wիW'W%%%⥞244ĝ[oqNcϽ K>wˏF᎛9r{+@~_~ݻ7yqssVN7kjj  5_˗/B;vܹs[2~z 'HM`=zxxhZ 9IOOrrkSGyyyN\cc#w \;d[yyy[!P犺XѲ鐳/MӜ6D-Z]A?$8ؐVU蠺k.}\]]iT_9%Ϟ=ksa>̑C+e:wܱcǬYÓ'Oh bl9}tEE2Bk@ᒾr 'R~ׯSth yyy& i'Oܹs'ͭ,\5j!zzzP [T˖-e+e9ZOll,ٙ~^X0N\d;P WUUuaK$&&VVVڤRuܾ}2rGIW__oz .P8S^^nJeҥK]gϞȕcz uQRuuАX@Z Hs@ f]-`W 3~z~b%}ŋ Q _];JjUYY)NOz1 ,,ʐ2\ ]]]@p9կ~q#G(::Z0x3p2fqH]sssi/Sqqת&w=wy;>j_U>ܴi'&&\^*** 4Mllldd$K4ǚ"""gRk)`@kz-){Wb;P5SҴdj-sԩ0j @&_5Uo&99Y=TVVRiw!Dxoÿ}e%mJ.aBLL̼;o]VVƽ+++H]II w|ԥ777wxx i744!iii)7/VeEK\3TKVQQ}OB_xkݼy;>Bquu5,:Bj&JGyy϶]?]faj[FCq*jnn ҅nNNN;wdee9溶VenBff ŃtܵA6nUob=sPYYYx7صX2쥤4t0??? E1 =4|nmwDDDp)䎌*:u~c o~GtW߮Y*sΜ].IIIܵAbcc# [}&&&. 'O\q+F5a#;n!4 7;;0DZeaw^UAs6&>{ Q[#|'8 _qKwk%M}%3^9@ssŋM/R8~^0B[ZZjz󜝝޽˽#U̙3ܵA#| BNNβu>_/tTs)2壶e!6660raYSzoz|}}T6HQqq1wd` :z7IoNXSpӛK Cu9(_VVΝ;Mͣ^M?ⳭךzR"޼"WF\,q(|?9/6RWwM+z T-Mo[iƑp997V+Z67y˖-kllޑ*E8'Xp};-֙-/]_$[]L+..7 fu9qΎ!XЇ zC_M~B?o:NɃ/׭WJKKsssޅ8x}a%Xmr)̌ .V/so4;h`` ,].(zuȡƻXn7 H[|].(K{sQ0s0W\qwwWsI ͽUnbkWZs^^%QYYɽTGqWZOMZdIL){W:O8a ~sa- vMHuu8( u5dLoiϊ[:;LpG]m,Yr%5߮Ypz_h=f/KLL3`>p˳iZ턟~)ӧOo>|>/N _?C"^Ǯ'>p' A:'O\f\d˖-3f xm>mY2/ӆK_8ђ$$d}J%G777(44(H;ՙ ].*&^>y BNH+br戶xS߿6]w|H+!!VБ`yy%̙3!!!4Ms [\HwǴSSSZAeɉJւ222h{۹w mmmQR&)))T.bbbUZZm m.Q.z u\^bھ}gO|1h\~H]rr2wTMl_r`+_=zĽ`Jvv6w=:\hllݻ..._iQ]\ܞ?ν{@^*//==FX9r-ZTT}}8>qWyQ݈0s+V8;;ةX-QB㎕hZ:1rrf͚LV,qB\*Aܕ@c.ć;99_pae>K8Z0]FGG˹+5iѢE|@få ZvÆ ԐǏegg'''%%%4B^zj5@N}v;bʧ<==q]$>>;bUVVƽ E5@N/_1>pVD_ ;n?O>uwwǩo0 ,EqFJh4qS .poH1-⎛ֆqoH{ǝmW݇7khh;JlBmڴ Ci555y/WScpo۷;e #ݻwի|EXdWsP6lؐŋF___q`bsgqPh̾p''Lqaƒ?hz:q0+r9Hje㎡[.::ZΘ/]vKJJh>+N;;;9qi@jr\I>Νjt)Oqq1wb \1?rg s7yWKIIn򐗗ǝ s7TGq;z(w۹tiZ_EHwO`QtM@Z&&&n҂ DWϸTtwwsg$z7oH0𫪪EHoo/wc400`;vpN{B\ իW p$(S7on;c̃O㔕qX8ӧO [oBPw};[}%%%qիWsgǏuvvr 366h"n_ȝU`GM 6 ֭[ ZMMMܙs kԀs˗܍`!pG -].t|w/oI`)jylbbb 3r7C>\I8{,wc0[!jM+WpH 0Ӎ73$w۷s$LϹdM\0XTUUq}%<… ܭd Ü>}EDDLLLpePɣGrtP//aF 4::c6tҞ JۻrJ A9:::[4(\}}=w3%6݊AEzrz! jY0/8a*++䡶ᣣ566vv V)jkknFGwwws' {M#y )))k׮޻`G.\>(w᱔N .++555ZV"tZ:?(((553w/{ԥZݻw?tRjJoXXX\\FɞVXXX\\\RRR9&3g=v-~ *( endstream endobj 267 0 obj <> stream xZ[o6~7@`/v(UVHK%) -VNRR2Ivl}:<߹R9:^mW=~|t7͖f_o7e z:Wpe)] Gq#.3M ^1V1χ@3GE<0Vp '"8̢4A)0Gb8:г R#ELTK(S?P r)ݺUn(,€$ʘ)rSNf#GX2ި9o>s`mG߭YBkTt&'&ǧ1ٲ·j6 #<\8HCc"iGyc7ޭVKy]9>d9NF%/ѿ, +|)օC8:vB>\hm8Jy&_a2`I DJ" tS0|(3N62 lgoL~-Uh9BTǷn!SaS|&4 1%`lLiS&iNXKcݗA˵A;N$Y~3^EśeMdcY0RMQj[XJpXf2G%8_R!s~W ?}wviLME%ʛ=zSe14@DFTB c7QD5=9E|DafJ#SnH MҨO&e@=&I#M-M[,Hj-I~xGAQF<, 7K~+j~E=BU6 uSFCO%((IQWD6m+CJjg,9TVu*zU`%H4i&bֈTьe}qh^u 袋LJb4o7jм^X_Q^~EuwBǼy(N+(v,r&gZ{WƑK`/t{"X-qvSHJ]K4uVZE)/_1=40[i"_}^*OR|*<j[F:+MΕ%8ԛ=q%rU\,wZ]Zs.AUTu9hL\@BFM-5z55Ռ4GMFq2=ߎ_Nxq[% RSٖd:lZNB},7TLf!*Xrw#sl@i7bu͐QCe"pYSo"$: DzV >,~Q<,kB}?b˯Lz31*G.4&pA 'rہV8ӧ{mzn㵘PLCƪ}{wV~;5C:mmZ]'L1uBXNBꄰ%Nha{ s;j[L;e&Qh$ 2b)G a}^V9j*޺*I^rlq/H[e)-c3 O"SX0iN@]2ٟR4#d> stream x\ms6|H&Hv&3M&n/(6mi.\YvI-gwpd]NW'|Z_\ׇ'Wd5[||D~>;|ͳJ=Jr?%Jf", {V1ru+|lD{O6Ҷ!(J:FQ,g39<=z2}[T#C-D2`-u2g-I1M\sh ]\Ĉ{|orH2!W]=YuW`bi9>(G|aycSCj)+tPs=.Q̨BB@%976u836y~Z'Jwݽ'W0hF7-z⢾ >Kia7g:cF(4L5  ._nQ 3dn"ci\@ql$,2&|?Q:> a\H^h }ځpD(-&mN̯ r0kƶ&Шu} oxoNJۻ~ob,'de+v9|76sS7ydi\Dea1K!swi='X5zń\:oc87<*VJQ} BJ#4+Q* իV噒>ը Fd) bHY&X_S,ceM/ڿh9EKKOCcDEo^+cc37\7#MsЯ(+) J tJUdm_ˍ{(J<\&y.hØfBy6tQ*d.828H?l-=j% ;dEVBMg?$!+ ޖ9=rq9c# FDEID)`|ay"rm9/tv$-*ؙbǖbϋ-P;LK bt(f g8TvZ;ӆ`=v2OS,6Ԃހ [7&v8pa)8@2*~ \uqUbgp3Vyɯǿ<%SmL ebIă SL2+K ]2&\]{`Yy8"+W2ɀ?n$6;ϾNgb6_eȏRRd o{dM#ˣGDp.*3̖Pv_ J?y 2!{0γOpĝa+1W<RՔǵ8XOA|<`\x4p4(1+a2^upWKg]~jp:6.z4[:6Y0Z,ǵ /ZkA0kGv* Uշ> ֵВ^la:֋$ U"\D}UZ&Oy7(کଝZ3> o0u\x-u\kY[tےСrdgr<{k`$w,yp FΫMx_gL%y3vyL3gJ1׶|``GٷLdXŋ$ClkgHx8M}gh2G^9<' n d ȏ4Mwvkàa;v) |heMn0={à*]SP%LtwC]6Q\F-_'ˋ#\xu^fr` H %] AU1ʁ"Tdr1{ @/:ۆ(ٙ>a7L/SPSpP  siYg<фv&~\ސZ^f@{;@h!}}̒:hpECʇpPa:R iq8AZ}͐*ro2r+j^Q H͙+R=cˊ*!P))|হކ1N:;K0vAֵ9m5Joe\OԞzIh,# pd NƄ9-s3*]ԫ 3~Ohȫp.7pޚkwE8 tQ endstream endobj 269 0 obj <> stream xZYoH~7@`_E/aQl#ZC0ԒHoUu7K,dn澬e6ۛkv?of/{}kʋwݝ{7y 4f y ċ TͶ@K½Uuyz+xyf@@|ǒy%)Fi^"@*ԗ˟./_22 QzH*􏟼o~E>O?BGSQW2`@xJRR C_}%:vy,&R}F9̭#%9syve* xҕ|՟~}&geu5.,)j*o~Ίϳɇ/W=GIG@h3@F)xF>j_*bR}}4Ú cA6;G c+oYD$ ˧Jy4w!k H1[`D k\zgo 47Žf̀f\D#W2HirK0*mkC$Iݹx4fu`3kfCD.`:[ښhb1 (`l8V!]2= 0bƥwF(DQWC)d-;wAG/_`I1c; =/󍮂I>Ֆeu~WJhoprVn9"ٗXlc[ h(IW!cPb uIqoy-aB4G]MQ;s+δtXxB:QCI3+ ǁ-- /e "5kzo!ngsF42)%p* ܊lWz(ܙ ro(LzǤ٫̛h*ȧfAUo 4:oI"(U0)gE'%'ݑe'ȫsWE/l~B;&0ԟv7XZ@04u+jx5"b 22%VjWՅ~)tˌ2,֖WVW)KL%P;"sۇ5qNtUxB\Řkun܈yb2+W&}F:ˋ)Wa̅o TT߸ ֺ|+t )/dܝ]3cJH&Sp^畵 C\J]Jd0l;l7Ja,-ϱU zw"7t[$+ۂY)b's q?X!Li;zڊny͜:Uu!c%|($![TAy]u5CI@ l3 ƦAρKK,) hF[R-(;lvqM2 #(lj]_jJؤ&cХѼDzLIZ7 Ys~j*H owh^ ȤyF[amcz"d٦ Ȑ%~M\v!o:#_K`J~# mn*l樣Gsǀ1_P2&ִ)Ƶ`y 7)=Y‚}\a`8Px0HT" },TOMucCId .ha 1ø&x6  C> C>p5\C$^0^r2ԾC:%a;g)SLЋK^0]iLS.q5(#d:/`PX?QԖMǜQY6$P4,Ծ u -'9u8IȱxV kqCllWhFsDhgН _:d+*癭?ư7]CnLwOdUH׫zMF[1Sөg:Ѵc 4{g;Ml  3H%1CINF"ެ ͻ>d!c4FIjx /Zsc.|hC(>LF̝23?zO3x;2J +ߺF׻f_˼56wa4I\x<Ɓ/Y$}yOt> endobj 271 0 obj <> endobj 272 0 obj <> stream xZOHT8UBRB!wB P\fvX'뵋PIb{vorqYW&EICwV"_~ML|wg-#4̗;XAL"!}NcF׻;Ưݝs;3 ew$('Y'%~X 徐$Oww/vwÔ|+F *Yx0=|CR [v ^2?J=JQT (h2<0V`B.*s(Њ\栍9*^5e2Ylʨ||M&S23aGcE~dn0d{k].ƳQ+)cLNFcݦpm Ky3fPh% /e X& T9J0f>SP `-%̉zaTTN_v" ֵ=dS/&nuLB4TjGc)Ҁͽ%(}X|@#Gsr!']=?Ecg+Dԯ6ȶr caג&н$s@J)T&9Vdx \q: ea1rZ&V&7o4K&Ic޿CjO„E'$4ܩ\((ΨKYC1 .R]*Fsik $3ʁ :7vNi.Hkj)M8Nd}rpͨ=xbmf%,/Ūm롮EwY.]RFæOrǢa"qѦ:ox$j3ٗ8NyN ΖMq+eUWdx\ R/$#ou_V I!Oe(xz4Gt{e)_dXgwx.Gˊ75R7}IU0Ho?HqHʘ{L.]L^&*Cv$-~u@t~ڤyJ0n'jKr ~@-IO!]oܜS=۔}0|EKec|v,xD%RevStJSgd [D? rt~r8_\wFNc&fq`,7xzp] זS> stream x[mo6 "q7M-ma3ctƞڞM{HJ3-wX6%|(˪ɟq޿?l$]d3cuJy4yY\\8W7wő||ǜHy~Ry*pW@ᗈ;wd7G]7[ )?dN]XN$'SeGۏ2ДQH*??o3w+mUBz bI2P@TGTM!'Uaw +ZZ5ZʈT+̪Am(w# 4|e4z*Y8j;c咚UuAFht'=~F*A5-frU2<3 e2=65@y ,eS1ˈ" Q[6`>kK ]v;#8nW^${ȳX0@$(,!j > H:ұ)[WV&m R߀CFff@@OvYvZQ6ݔca#Nl?t9J6TRgydv"|zGZnH$: uVhbv#"+$q@Ed%I@4Y79tYeNhtK`-9`Dz"epXFj}51Ra?zilx!;}v{~33R8/no闩gQggy|_¿/3;)/6oZ?0׾¡ňF_4J 1rAPͼpB$cxrd0<^hpH_j%*i(㐁a ؕ 1}s,J\&OR:\6|@w8h5VO 51[ռ%+ѪL"NW#_v#4,Ir cJZ?W h H@r _N:6;1Tp>Ժ|<$csK%<_n'Fʋ]FGV%M˂L"lg~(06Gkr2!Ϧ Ii]ZWVM"EaD&!&/Èl^^46-QiVD;qIXtjKE<T-GV8{cPw&>2z4M<]/9P!mt^+9lAg N@FMa0bH3^p2\As}pyJ`j,DcMjcENt0G"&YPdt攢ԝUhTk@"`7봢U|$i5z/tFw& z:CH?BQ|atH⽏Nu<7|G9gg@{/@XXtApZJ_0(%^mȣ&w&~KDzyq碜3x<0NO["x)z(D ),SPt"0(v 7ZN_8Ht `2@mih>P))&!n-a~桭xMEǞ.yu% .1sr9-ƹ.ɿ:T2MugXl `#A-G2?#'?A5. g7c xhCJd 3fh-8ja&MgܧKzp^vsu9}*مԁ}h +;(p}CD #(yL4D#<|2jiz ༹:?nVOY^ɼ~ !o-#ZξFgpvFli) ;ĸ&9TO6h֭,!*ijBJzhw(Kȶ$ <!7h..)LN@Nq7EGb{Y*u$6 ۬zo7HR[w@rtO#4OɷP4qօ[n2ĕWk %ۮ2[FB zjz, 1usTE\m'OXQV Hd+>ٓl 󧺬 ʴ qXyuiwT1 gBu*r@vt;u*_lEy1"ԇn9r%ojc*V}7F4LL""Z!G'{Ԉ-^h-dպ\ewWx \ڝSa)wu  M$iPeSZOYxx@'ϚʴI!y%kt޴ bZb'|{_C,2Vx vF |l|hĦսs;jnO$,2^%nOViu `wQ@ޡA&q+ |5@uMIMEb}(wA:YVP^qnj:E[gK:Y5)m(^[X_"s(w}% 'e_XXע pG(ao9FKI:zl[: LBa+w\dU>y5jR4NW= w5tt/QyTm36p&KaXB'8v>yay?K #D7tId,0q兼۽]rݒ\xS]kJRV;ZqI#!>F+qJt[8;Rс!*n,eh op&zW8˪tIi4C.yݩ UˢWX+/D|GI/=ïM$@rd7oϖ{8%{u2q߬\M XΤ+;H9|<$ێ*allPE8'l.+a 6I?ǵع)?2n#o€Tz܏my̰mgm$ endstream endobj 274 0 obj <> endobj 275 0 obj [ 276 0 R] endobj 276 0 obj <> endobj 277 0 obj <> endobj 278 0 obj <> endobj 279 0 obj <> stream xc` endstream endobj 280 0 obj <> stream xc`p·0L?L% endstream endobj 281 0 obj <>>>/BBox[ 0 0 243.91 175.59] /Matrix[ 0.29519 0 0 0.41005 0 0] /Filter/FlateDecode/Length 65>> stream x+*@02L, T53002661SHMLO50RpWh endstream endobj 282 0 obj <> stream xO 0-L --´hB_m9Ǭ&x[,ba߿Bba&8i~O{v^~OC3KCt ӉN+0|I$(ϟ?$HdI=wz;u/I9a0bR,x/Ќ~II%RwAq/Ik>s X0| ǐlI}nvA8 qi|?nH@WB=FJ 0d%т$pԗ3-,dpHw/-s,q|b`Mﵨa$ Ϲ8qUCmfF 0s7I]AQGca,N$m?(߱1_ w/{G=HlF̤q zt:!]M=%99 [ L?dTiįul ` O -A dg#~O3xM&ow u?79dn8I#Z;K$Ơa;2aŽ6/"f27 Ae*dc ]ƃ6|uz=D{c?mW d27`0vz/Zc~G>)P=76_qXL69w:жK:ߚ c ~ /gĆ6V?,hꕰKO}EEw_&s@SSLfFֵ-k_<36A U#*`W+K1Q;)a;08Ɩg\!9]hC.+▧G aۄ _ƛ4l3#`ɉ~ -9'[<*x7D)9&tCi|qB۠'O/E3 x? OT#/| f@:+g6S:u5.1¡sy|b>\`>XogJ2*I|ū;CIoBrx>NaT^^Fj]ܣLyE$MΙ+0%. CH;a+TmqU`g>#q묦(G `Jj|Kp_ @Z(c3.nA"7NTGWy|X02-hvC0֙Zյ3#V_me`j%ui]Tp~Bp'^]o%\mB^=*Dp`B1O5ׯ_L$oʼn9_]&ۮ%V[6BI"Sƅ!/lv+g@t:7 ˋ:'s.DP|zMU2ڠ&D 1O,**ƯAmXSUtQi +.nJƶ4tEg<b=,5٣j1v z 3Y2Jk9|Lh!55Txᄝa|^'Bϟ?Za֚zp-NTLS@C=48\L  ^T*<5XI=忕AM4hb0"tC.˯V` h?na2yn-3/Î78 p׊ 5_ⴸ#ay,|TIgP|,HH޻sAͱ#=/znFUo!P7Ft8{V8:ɽk0ԭʰBky׸V涓#zz8[,ps}N k{ {_1mr5.Î@ Ό{ʏ$)3k|ȼSKQ#=WNI`1y1j7c5"Ԇ?qIMGJV4n:3Z'4<ɝduO)nnUڱS#sۻƅ5[> ]X݂l8nϲWIu֢JJ8'!_R\PJ`N3eK,{Į5^; S/.}Ucb=u,μG4' c{r5l]n:W4 vO2QZ$蠐Ɨk\Y?5‹ue>{~tCHkj 9VL$ۂ\NeDԎ'%\"x2?Qdž~+PG}Ț-j[ E=bJMGG^+dw`yDUڇ䩎mfoCZ2BURW5>*j)&-^rc뱆U,!@΁wI$,9xzAދN5^5[ꛗΆ_NиޮNvNoW(s6wҚyWvq7OH^N8BZ&L5{$2S ^|vq3nu0y6'xp;0AzmbWFls["w=&Z .y (1"*Cp2GKzԆTndˬA˳Ov@A6u e>4pÁWqb҆^kdlh# v+Me>4:HL7hۙe1b(a`y?#yUK|-J?idKWn6Q]6-zA Bj4$_)[,#Y;#sEGMUVkHD$A!/^[H!y5`GסWc+|wjj4ްB݆ٽASWǯcRاIHwyOzjj^4Ar`XqmF|̄"Ώ? %^QLҔc 61D{J܋Y8g>3?z?$W??!!OnϾzsUfJ4mL]~78"3UW}}=@Kn8νʾB>x\n6wO!A^+kEw9I,L^wqX^4WgT̻ .nq̍?l:=ĿA xl~~3Hucro<ƍJ?\ G?!Oey/sRSE_TgВBln N+˦)ş Mo ]'9~,Z)T5>+ًƗg.XsztglJB%go~ڷY,28|9@E|;pfIbΎp~VjN($5.Ub_+0-#|l޶>38Hm89lK W,svqE_!lqNH 4>+կxUj4;__W@d:8q=PQ>hJm-w.+F1|pÐvy'Wܚ/ϿίH{t鷹E #.v>A,hkX/4M^ ؗƗݰl9_xZ#7Wqa Uˊ؝W6wvZ}f70Ea#d!ylG)qmi˼J ɫ%e7X/eY;5 l3HU+ܤƸK4ޖS<$>Ȳ^3iH@tMZ25Dmɫ{xn9sN-'L6PiqY2w|me]6QKQ|V0^Y㋶5ǔeB;3]1eaoN^ ةs.nQܗ'|wZKˑU,R&VC5٩ F9Փ~ĸd\=yUiy@5̞ X=ɫ;RTY'6zA-P{MB}vɑ4ޙ_fe{fi|ĭ5'+Sʼd !s-\.eN6ɎrY[x6$GέVKe8vCnFՀ]k\ e+M$4[dshxc/}2ǽxR`~}}} Y㰜]k|Yi*9ǀ xe"c wAc t:!):TWq"Bd€Iu]6SZOTki_ib/Fk\6' oޞ *Vn>mwG/=AfPy5̛KLh|Nm< 34UvƗ$ڭfa9xE+M'i{:54%{T8.`lUu=@sLvow29q$7BSΕ)A>fFkra9RӓEQiT2T?Ϭd'?Yq3KwhhWL^ 8ƅY~kU"< I/"d]U-OtU k2lߜ\jC,B14uV!JV٠}4Nw KlBs-fN&_M^ 8 _m2xqvگj5W?NBiBN`U=I`[!4Հh`˩µcfjSᄁޠd e /TcKRHrqWO^ 8ƗU2ך(kܺo --ͬ8p$ǖQآ*D)&Z8;7@#BB{Ch\ +50H#W2V(yM ݐx"m򺕪j5U;ҸJ2GYƸ_E"Y5u֘jI凈+D:_)ɼ*޶. ϖQ_h|Pj4wXͰR_c̩- +[vEu@,LK1SqZG} B_Kg.Ď H2%,P8W7F9BS>?K)4|IAH.O+LdK%OS"ҳϐ8Ʃs&Jʔ{fS~n?bӮqmK~<Ф._OSOOj:*a;ޯB{yZ$(Pv{mwE>j|q1ve' ӫ|b E`aH>WҜϣWxиZ_Gq=5z {Q% _p$(@W:׭rgMr5 CIP4:Oˠ__z"Q՛8mS %^4U}}}mPgZ.Q\w~b|NG̑5<{:qd!re_=qIna@9,2s:6 ]%ɫ f?-'h|yg14hҊ{jѧ }nzX$UԄhi\k<2@y1&ߒ&柣<Ƞ#[(FuEEF`8ݍqajqiaē8/ZSOh)m;G v+K Txz2WxT4նNe`t?b٥Vϥ ֧?\ovXnEB6~&J[0 oP|7:5.om/jEPpL2 SЯqmStNe>MkG&j8IX;8O %:bө{>y y]{8uo>ѱiΕ;$e%I:*gAƑ*_~]xk-N6LjB~NUW%NKyyK8\[c5D_0øV6{.1~L]NԠ]z4Iߟ%Z(W ;W 3"ws23=[ҬqI򪐶%JZ ~HКЎ˫S`$2F1/Yԝmk޼4DvmuxBWs.#y0.|TztgpUJlFU*cZEo(+.:m$?"̃ČM?;wneg0$W8(at6HU'?E 66W^_4g'9x\ǎWPr0{Ҡ{a 4MAcōqğkcؖl}c.5/IE9+}C4ޙCi<&l$0A[>m#g0kVhpƯGt-Zw8%4ᒪ!"f1F> ߵC2G ۵z$* |1INaT6nI|VV gxr]P]/"<[}f#\2n ߓ*7' |1su{4l=xpaE9@w7Rr ůhX1 x\%5r_C=p@(>qFަrWPUݮp8Ƒ >`Ȓ/&ءq_C:9G;o>q0SHA@.cTC0T{0,㸻zv*Ar*4MCeTR"n>z=&(%^ISr!pqe^.ϩ6.(;;+ּo-8. 0te'dW%>BƗg|km|ok;9oP8)f zAT;+KryQ:'}\ꤠբmjbZ8e@ZAY|{;mNO)8{ĹIUlR=G K9܆uDw]Ydzrp9_INH^Sıj.ܚ cRAA],u g7c_$5~/8֔"ݶ!fkS&(\61|7Q-ǯwk rfr玾.0׋w"_WeWt\eK2 ɫL]_,-;Hm568L.EP Z;gp?+b#-!I xx^?#t>\{<́ʾF쏕,Œv :t:Ynd@9Sy ۭ*ګ+' ձ}s_܎3q`OE "xJ 4Cb>A!ao[!JaXՂ'WRdg_WgcWl1Ԕi=[|A*V q$qV5d:ydE~uig*"6IqxxaX3(Hb}'MG\6[,pNJTgRȞ2aɫfFTͨAct2=rK pLywF,DY gF88 [Oau=i3M1ڀIsjϤXC[%c~14128Xevw VVty]uW/c@' ~:`'V^ooߴ3rx\NEQT>2$sSqvYnُ^~#-Ԅ y~GY4nl%n|nZP3G0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0VmX`|&y^K2z\.=Ӡ$$v=rU#PbMbWPw3%|iWg5WƩ1P#6[4%ąҟ>c[gM?!mj'<6&#dAJ6 =c_zY |;}M9og&H}׸9fCv4$?s^/uCpƱw!#a&7~%_A8<| g2k)I6i7¶&SrOͶLrv+6 (1 endstream endobj 283 0 obj <> stream xY[oF~70} ]43EԹlvc Aڇ5PJ9g2)y"lRg͛TKUO7oQZ/כYf7ժj/oo/ˋ1QXl,I,IlyVEVe?\^| ՟lˋw3 0 (Lr$N"Eg,E(ˋ受-Q2'JH5@| EΞEC!CI,hG@%k#~D7|Y >ȑSxXG0HܶWIДv}O2h\K8P/xcleEZ6),O )B%cE8NE& h!g GgfG>IC9%NU5z6N9v -s\{JH<]e"I34mtiO@g'{hҜL`#ڴvcDO<aOHo@ڬ!I7tԸKc;zP rN=0a1veV[VF;ae[Z!C>$J<%6jfP0'"NY􁊽d"Vkh`~Jt;d}qbCcf B - '+CSbWRQ x@ WSJ`b`6σ"񆠣j/T]պ~|`9T4PS7 Zs (Sq,lH6 W>Tfr˥>OX]LwL7Тַw~ ݐl68JkUP֧[|+Cmc"aYӄQem+zYU !hͱX䓝rҽτS`ѩoΣU5@T&'23X%/4;b"*1eE=RL9kJ7r Aa4KC/ޮKP罈nz G+r=rWmDW6rAB;۶3#5̺B5% Llw+v$~!6p<#\~:.OL.^H4|J *i}Ս[F7ÞP#@Q!rk#Ž-_";OsP59 r(bKHRm4 Xl)$ȴʴpc!hZ۴ (->euͩV*OA/r:cV@2.1הc m;ߚ"k;giG^T.(|*;%3[kȤʖb_ioNLy2! `MDj66d^(XOD YgW2^<= 3ifdB4:נJU=V><|VI7JnKЍpدnnbv 0&h5]]g+"h;j^!8rA8B2oz*pV o)eR7.bH +ymoME`ɭOch{R^9Ix?+ 'FQ5O?xGor̿!Ίv,_pgYIg3… L,/sg${)Ik endstream endobj 284 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 285 0 R/Group<>/Tabs/S/StructParents 56>> endobj 285 0 obj <> stream x\ks6&4$M;+vN\GNd]k*K$_t><{n|TasN +<'YIa}RX|ՙnhO{)Eeᦺd5tqcXHс=d >s>Lq9Qlmc$"lϒtJ_s+& ai'lY,3"mؐ7޼42?Lt?w?jn3j])~V|PdۭShJ1,:=?t+C EeQ^iag#M qF:ʤ!P*SFlފ0 J udԿjEɌ(?./+t Q*+`1V>n\ܣUOjGn'|V_;E9n1>,g],Q\h*kH eTL^Mc_$󌲔2J\ԄJ;Tt'N6RIMm3ͫ ~C7c>Q{>+l(R~6販#9 э4F)Ct.T@w7.4 ]PFFLLy?T`zsL@+X(ۭwuXB  0KqI]Vk6m U%2O(CUϐ s')C(?x-\? l rC u4 :RZPJhj&ԌE&vm}j_PjMp yԜ& PU)^\쫁*|sz ;],z ݽy\տ|l&!ZcjeMHq(=%:Pjg ,S3v탅Ѿ܊?|st7R|qV<$X ޟ5q[U)J<(l]@{>I&iuC) s܍ԣ„x\AD&d a2Q_XÜah+ʄ0t`D&NKs9%B sKLL#ʚ|7zGV7< zRZ22Fd` /-[5| d{܌㵐=ʈ;wUCیr;*_n3-w3&8w%C,HࡄZَVuEċ Nu<~<Ä< <:r@Dg@r Z\v*.ro^gB Z -qQ 8iQh'n*L!pb2+`佪˴BZ` O8Vp ѭ wEt ȤPc: uCxqxqFHߎ/ )AXARoSݨv"oP'd"'=:2/Zh1TG SīSDVZ7^p]8\~~3oY ݣ),ST8[&*GwTu=LqHWULdWžXu3N tI]eo22Hz2ڄx\D^fDIoQcWQDI"n=nMq;$ORfziLgyah+',2dx$)'V|@/ӷ7t2#5noWc8o~_?/OvTejjcccR*x*%̊'Me<ך$+7 FGX^BWw<.k ʔ<|5J"ɧ5I C 3S/Aϐ*RjjCvSǏ"ty(WWZzLV< )>CnNW2Ү '\ wO] %+ujjM1*V`9O~p 7 31oz.kݺ`vJ&UPvc\'{te>Qgz@t`1A#B`n MAiƞTRf![S,M nEՏĈw@;hfTÕc 0ygaen+@KK7Uv1As(}MB.!\Nث{g1` YK?p&񬌥|7٬܊nմ>_oN+MɖG'dǠCYظgm\ov11p< >p

>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 287 0 R/Group<>/Tabs/S/StructParents 57>> endobj 287 0 obj <> stream x\mo۶ l"Jںnݖ6K= 3,;^~"MO>~H>Ey_Ogf:>xu]ur1snߣ#t:><8yIҲ@2FO匧\AT?~8<$4L=K|O3! Z8i˴Q:< RdP|rt>zeMya;&NY%dzPX AgXd<$p4%G~~im;a+lR{G4Qs` MF fadu1ar;I]z8s-8HkJ.q"2 ΗWqT>K7sig8a7IX !B$P~Ž o/1(a 3€0@0 JgqAIf,a WGm&w[KxemLE RRU >Id1囗~9C7JO͛MǷv|IKg82oӦ@gMaAR;+[WS3ņzP?|7f\Ok]M}IV6ima; q IʕaӈO~>ESf7%۽&Y4 Kn9z꣫#2#2 hFimiaӚA,PaKdrA+n:Rs}hXo靈*R]1kzJ}UZ^J XYnEN*uAZ PRA*Ẍ򭏱4¹0AL4w ,QVY@8y<=r+{xy?أ .wtSuO^9h{>S1EcR.@` !%c,ERK8r=*^zl&Q12̷(%X@: OUa]DOiPJ}f*@gp ЗDG4`a t aFpZ@T 3ԙϖA$_Jh}J MEV{<%ʭxɐѓaz DO8}S 7rTztW}Jaz=>{=~qv9:'(۳}r{@YGTѽE jr~ʭ!3 bh5= Wl XY b!iL,Rޣ7lbUح̗g-Mb'L1Q uRyvQ*͢x/mpG&IQw@yTٛ둃E(x42sP9h1]T$2$26&2b6$^*}zXMZ!7ͺXէoJ:~\VBWNP& e a)#XQFTݿʈ )s` H0k), \u`YT~M=J]/F؜Mp 動f S~ߜ__WutYzИ=$<2- <; TfAĀKx3A6j d 'μr'҂,`b8FP &1X@X ,CVgo6y\5xO(5ojOX)q3>&Naa€ԈTwAu3s֗lCy˜r\0 ,y7Ijs_/QyZ̭xN)6pla; eȕkBE?rS `_彏܍3H`ҡ@K ?,SeD&FdnI"m"ɭˇ :H2Dd"ˈ7}nY Pvq]Ei=>J{<_cK@Cu2j`u2;?i endstream endobj 288 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 289 0 R/Group<>/Tabs/S/StructParents 58>> endobj 289 0 obj <> stream x\mo7nu˷}ic>8(w@7YreAq~|]r%r4iHGC<C.G/<b]^WW|8??1_Wp{k&eA_(I2I Ȍ oRz{|@v??ӄ$2\P2W8ɲeR 剐d^mo}a{9 " , d"igW>ﰹ'EB^榨)oJu>NYz4E~7wӦ!ruh(>Q4I;}4f`z9z'<9IxÿKkЫ.)I.d.W~yfx?Tx/~iV$)x $B")/fod1#WH{tBX\\k~EwcwȮO.H{{ƟӔ2IU(SH^_AQe_$zpIUQc905c&ˋ$#̊m^Y&.^{3WD;̴Euvu{r2BuUM/yy?h" ͔:yIufxRNLf&S" [jIJy03 %'Y`l䵍4)d*zQJ$cJBJ%ku`VP lEP*B ;p:gU}j}3x^cu'͕5yTJ1t18Qb8Vr-TOQi8xɆB̼*3Ii)?j Brder!%vYrj:4iѬ@hL ȒpTF WN5xau ;:/8PyyyCn̦|qً+^,˟@9z z'']`H:X#uRl|NJ9@;29L;砌b|'s7Q: uYŕ>.h<bBѦVLkPota,;{:$2pU7ı `5jaW.O8pĝbcIːd(Γ꺻Ƴ M7oH̺XH$bb3hB /-'h3FJz(0vFydɻNN.v(C1gf>i l**rP̗QoɂU0yVnFG͑ފ>Mf* E*;R2!iٙQfBTt,[ VѤN1+;sZ yy4f w#<(Wݿg|O<524^K c5Bct-5@_\ڥkri\ E(5Rp}?^Z.Q  ՂhA?or4rX90 *'\fO=ƒRAW⪮e(m/-i|أi("փY?|`K3dVM>.#|dղqYgBpZ ZFVr⻍<8 س^iѯ޾MBu`[w=Jm 2K1T`E]('栎׆9j4LxJ9F  VRv7k*ͫWQTE M%rT%%㓜{ 8 1ev@'qmIN/~NNT`.)l8^W x2PRj$ R$IAx|&ܵa3<;5bʂY)My7;j8,>h^밁e <"n: cI:tm>Gx^v8-8Gfs9Z8f\us`eD͸kGv4iTQFM)r<v5׆٧z54ew;l*́K=JxVY`*T=t NX [{q50zjrz)]J]qPQ> *ժ,*> endobj 291 0 obj <> endobj 292 0 obj <> endobj 293 0 obj <> endobj 294 0 obj <> endobj 301 0 obj <> stream x]]q}0 w:0 Ȃ ;R A" H(S$CB˿>;nO1@myw޻>e]%.nM*KxKW< +Ԝ,|%,0 H=/y[4^XͰbB\ {A`/ƁAr@G lFqx+&150zÎgh6TCC-Nn`M`Vszшa.:}Ň]F XPH6Q0Ld>bWKGg3dD2hD@F"9/#H`KKtIzRL I-)qaJeXȤ34ql;& 6" 2딅sZYcj`mgԱMc8wY.ɋl Mٖ`Y$F E1ވq,gl4]9 d\d:0:QjD4B9pR !ST$rUP|-;a+,g q[j\dD -' n%=&NBd!27~CXGHJ >@I1=P h),$Z}-+}pIJdƑG^)Ge@yNB"AτDhy )7GO˰3}Q ܦLk%%@QXg;r7.a Y$`E%JB >uK VM:l C6ʣCc+},!#2aaıpdd",#Pi8JQ-ZѐȺ5Zyq["\H!C%0Za@d*'$ZFnjX㬴 lDGsDHpBR + k0BfDݸMvf-6rĝ5 C)&H %"TO Y@/@m%Zf#da VBPdz 5fz y(+1ncyBI)e>Jfr,˜!٭jߣL4c5*Y so$> q{' XB8⫧)a- ^fAh%C@:kV}QY\8"Z>VO=}0(Y adUO.j]uH,|n Hl!mg*0$Q$HJXV.}4N)A+@&*HSZ͐WJɞC]Ab v-dxT Q] $,=Ab }~D/b<0@2HNȎHbH!"1@C"^@ sċ9cl;9L\npcţdt2G$ԀȺ9$5#ds3n8@C X`;s!Ӳqn#pc)(Ɨ6 W!AxDEKoF # 1#PZ\jJF >O܇ں}#% % , Dr59%ɉ80pg79|cS7y.<([?DYÛ"YSAD$ise5ld!S.y ROaEygy~id$t'{+jH0ʚ =J`M x$PxJ6 0i83vJ8aZH=q`؈ 6 AeicE N'&>/Y cؙ֢}Ʋ._}}>Owײr%_G]t\PO(%Q74`JQY'Ʉ:@9 dfd{2 Lu&:r ΄\gfBn3@9D3sr }њY_vBffPw3ZS#tS#S5UMdpfqSUOF3Z3S牙uDՋo'zfV„xIϖث1_Y繩lo/_SmWK|w>yuW~Wo^w/'_~YyrיblWʡu)[8obuQ)FYeX5±>i Mc[31>w)LLMjp߉iL+MqL6-|rUPk+J3t=Vڕfiδv9֙Ү4Ncm]i&cm]ifqJLǎ48P}V3+5֍ڕvC(jx&~cM]iIcM҃֜!,G5*$]ozc_?xx,k'ҋ‡/_꺟F:N(3ڮvQh;>9(Y#4 ՝z]PhrqBcФ5vPjo/㫣j:hVCӍq6o7ׇkqݸq+q'qqa$8 u"F#'999#d\] N#GZMߏ:.s~+8*~7 r r|?rNh-89@ȡPN9Njpȉ999~CANCes DN,ȉ'ȉ"XUG΁c9 ' '#gcANDN'#@ȩTN3Dȩ 'u"Jȩ9@ȩ)ȑn!BN9҉J,MHA GY r9Jҏ!K9Z'ȑ~ hrRl969zG!kAv"[i?rMXA G3DZcȩV<5c9vFN"d+ȱNTV֍x dk"'X7r![ANDNu>N}Nǩ}Sg8UVx f2I97!tv&rV 9RZrBr!2wSۭփV9,'=d!B.s>n+85Br&rJYNzCN#\}BWpj,=ZMFih5{IZMFiTӪ!K!IY{iKY:{Zʥ,Bn备,=d"Cjx_Vn ro$o{`o=w޿[|?gXW{E{ v;}AĔ֯sn՛w?}_ܾZO.׽>X⣫Z[PeRm\;~w=}7/~|ѳ7?}v可/w_817/=[)|0#hJwA+5#%1v~pA Z)wqy}xw?>{5W"巯^>}w={ݛ׏^~wa˅'[bꞏJJ ȕ吳0LzX_nm`xQݻ{IVqQhR-4rh\^AlUMzpFBSނX54ݨ9D j/A\Ph j5F͡T&jFOP|:CMvtpM -4߀\}hnr7I;N 7 bȉ#D ro@ȸDԂs`ck"'4߀\}qy"9՝*#ǹ\O|r=D N*~dow B^>lbYN7r!9mՂ^^?lY6_\}0r}~üq;m2CPS;;ǎq;;͗ W#\}k_t`vW;`ǟ`{˜N}7vw7 v vAXQ߉WeЍ%8M섂p{!V.A4tbՎXs`N( 'ib"DC/vjg,9rhb'4o_}rM;C~X96 v v鯾X\؋ꎞVM줂t}!V.5b7GG֓>+Fv6+7[ZZzJVrbK^| nntX|u'.i' eo(!V.e(;_}iKpnDMi)0ҔLiWZ^g$._/|tt xk,_SQ> +Wϲ!Ty'Z Yt˝pteoGJPRn.itg}+:Rݘ]܋j?y+:&vʭpzt3T]b [Zurjaʵp[عZiQʜ?(Ț¯#)<딖SZaJ+NiV+kȷҕKW~CB7l?m'e%{ӡv^3Κi+i;O[Zm$:?mtTl.wM-~=ct/RMc}c&.o;+{a?-~{εs}?wUvU# ۟>fdF!g7g=ԚV-T֚B…kO,G>(3(śJvm~~>K~6[c=ʤS=qj-:4ם>ܫNmd~ԷIiH43굎+?4+/p e#~&Xp4n%m&7 endstream endobj 860 0 obj <> stream x]ˮ-m?n- 8 8v6gZR}֣ā}صE)yK0%Y+8chlJsl\d|`jTP2-&怿$ϿΤj7ߎYxKN:أBPP$T9uGA$S%=*P}ƃDX9Q,Աٓ@͹Œ2%F?h XjZ2 $qp <X2.@D*.@N.p=P&VLR6sFdU4Z\ъjEXm6ol*.  (# Vnu':PszE@O{H5Pա؛R  5 2 gL"}CM"B@-BrZ:X3$"H MYs@ͅd; \Q{ ƨe<{e+" PM$+DOFg"!L61ЉЫ(&Ԭt\Y5q<#'LdY^`K '/5RX{J*5J ;j&*\/UCkA#| q U2 =K$W|54V09C*-g8GEg<@$:{֘2^Nuv3H7*f1t=Su W'^U<d5Q:6r8RmgʈCR1fe,:*J2$Iwp$9hNg'Xs6x9Hc"n]IERpAZt)-fy4Pw_OdJc88k$91NޱY`t%?WWJ+x1IiN'$`s!yHIJEkB|EI@6p %4%SLRӪ$ bIfUR&0-{4+_)M5S"! Y| HQf'֡љJT d%bp9R%X 2Q49YCIe\6J#1 rH``G+ UԗI`)ZXxE}eXԗD,(-3U sH4d}Y/3+|*1R*h#WdO 'dS9`eAlJ HMY9,KZ3F("$WI-CIeNҪ\TG)ww1 =M$)3ϴ$Ft^h R܉sC}98Dif[̇#f h%sv,(q2Rg5ǀ'c Ii,2@x^f-Ʋ~i0H RF $< 8iI{ tP̒+h,EA&:6I2;Gi@8O*'<=1IiU*C,TҀQ2iv?U8msA*I!BcTxH`8ɋ' \~dDdd ï8ORfp|!&A,| $$%PI!̢:zF@b1a 2J RK&L.QZ-{PZ%[|M2͸"$%h HF#t$H 9(YD1J0bTșXX'Sm6$^$BiAp}V@J,Nf$#Ar6YNYa,!LX&qH D_&%(H +Q@GDPZaP 6IV'Er;O@Yx/ ,-Г|&s2 d4bAI!- v{=duԧS?/F;9:[d]g 1LN7U:OтϿcDr{`ǘsGk3 2%҅4A]z::\}dZ_KԥǨsך;ȪZ_I݋KpCw>&~uza.:V5Fշ#p $U'!O0Roy>Mku,^Kı2st+˫k7AxQp- D[%MΏ~&pԺ|{U|u|i])s >_1wZ^I_uc}iז7r~l#Sr7H<` nsm%c^ Oמ3ǡ[Wu^N c[ts\ 7~[-&zW=Iy+&=wܖ>:gt~VD8^3Xx9DC}If61D= +#LQ.]a[TcrER3 T/7yIN~hG&Mk # տa6qAQTd!OaU|NÈ){mmR[LqoPsE·何 _&k[)y-%몐wtl]0yI7̼.xsQFS6v,^xӵ٭yz)rk_;1dtws,JkrޫDRNRWT\>ӯ" H6-O]ݛO=A^j q&xyqDp .K}?\'{{;3p}}"x#COIv nX06,X W-ZEX ;C#r/`f2KI-dk?ՠ>Xmݸ ӱ:e_F\SxU|P ^뉐ugk)ݼ]ى> bվ]KF1h-tv(N1K^m[(׍O#wF~hhY|seP>V<%(N1u&mwE\T?3 Ĺ#0 qb^A:zp8j[mkzhݮLy7#}\un&{t(rO4Ŕv)h߶^߶_.{z{bsn==m^DZzcTAʯ:w~d'Le{dK{bKAm.ܨTTh<L%E8ua:^.&:/OOV3O_Vȍ3Vk8znݍи۝AqUۏGf{Z԰cf> stream x]ͮq; >H"H] q#p~sR-Qܩ[U*V*RlMHu]%ߴ ZPuI]ҪOl? %N/Gb~baRQHidˋ4luŶOjBQH _H--@2Ϙ%c+KB]ܜE,wb;+tԕDϠ:#wB5> Cu,o%H F5,1e}RJk^bIHRgaAAU-rd tsfpq{)HU9F}r]hKJ%‘cXR(T89BG !d$Ae} S̎?T,M낻o‚{gR-)!"GItsZ*&3zEΝ%yAbp V-t5oᓛl-+u`-`e5җɂ ):DVRg T䏬/Rgm)E~F(-@0)l QRZҙG] Fjf^WenK @J,e!13f ۤ gi5Q֮ϠÊ>&?cjy홶 kyn ҁ< sҁ(0ɖ6D] k g}-`myI-h-ҧp5UF8ZWBuiAoZc qRXR\ZZmD-$DB&S+ABG1V2 g Zc" UIuRdA kY1YQ!{@ZI[[z(^$\L|[I3iK,E&$adT a`к [Æ Y 9~ldrIfkp%@e;2: i5d}JJXkAM^T B@P [)6]sPFtJEe_U¸ KJ@Sd+jBT*$qYBT{Hm81( 1l0;FT>D9ոjpF * 6Іe$/h H + b9&n&L4DkTո5ӓȐ6k1(v)9(4\QBQ3FPg(Ē;\Af"2[T;Eeܪ(

7ߥQK>z@5{@G: w^ϣ螨eH易69nzw,'$-$.g4°řD=OLcՅ*:9."z_`cN~);5OҜo;sI͎ ?XN<4 ty`99͡\a] }| #fb=U<'#F;; F;_ƈs7F n~Dzr/O] txvEvv9'tσг=5'_Pمr99ԗssط4i&/5I˟.]({@y@W+mSš_ރ8KO/hy}s~lvw{w9_q[n`9J3zy@4&q({@y@A,spE`w++Xh2=FE3^WXo{#Kf Q`,կ< <|cJG> stream x]ˎ-m?, #H8F`YkUw=޵Ig҇G](T,u-%rIZZHIDiW#I̐gїP*jB"rhYD mO0b&b2ʦ1-T)pN+?߲P$] 5 j#b(cM'vueG׸'Y1&z1@M͐"sY@"YR^`ɠBTt 3PSZEJE226(>ʮai S 2f=BRn<0I\rNi:{(1)\~ - 2j&rd dD \&yir3dLN"f.DZť2Bɉ#)%/R8,U#/hk,b虜 }H2d@; 2&k9pe ~ &[zɫYz Ւ6@ PUs G 2Jiҩ5L@3&.Vqvk+ Jzy7y{!bhDdçL_ 6&Db{('سӳfE?E* %{4M;@ 2%:["߂qE14o$zn0Gf@Z`AA AAE 2:&d( % c!".E#\A9C>7V@u=Wä j'm(@&md4 * Wr0;j - |NIJTd0T5v}ɡs2&;M @Y %u))^JWZgN*&SZzzճBiP0-qQ], 9$݁d6"VqMcn|.Kf*eQXl"|$uLmZČFQ+iIVˇ,d$Ea!ѸXFMJYd%9U\wRш@j\RtJkƚŌNSj\ӔtJJuisarD%L~ּ1@f$$7yC[5I-$5L.Xeyd1l3Cy/dY4h#/QAD Vw$Kti 6rM) X#cIcƒK+ iH&IKBc(Q"esMGH"_B$!rݎPZז@s)4LD*rΙU^ܢQ(XD}KG%?I3?[JJ2U3GtRauM:gUɰ֡˥V1J˂T2?7 L+8YSW切e; I}Rz5Bf:YZ%NKR*]jJjZUТօ`TUZvj:ȇN%T$(u$͎"Ҵ'j69$sS5'MŇ=E܎VHúoe޵Q&ekۣ]_)gO@J-l({͜!g\@`FCXiKؠIۏ>~>/O?~ǐ)|"_g({@%<@lw,SynOۻZ5](fW1g4q8u77}8qщ8})uuPՅj.Tw 5]=1V[%0}xq#y%['_;6,dMpD&mx64>ۤ WbB;.VBu_Ktv{3賐xo"o3)|3 U] w,3BuPC"4}*ɗy3yVkf+EW>O|Cxjjgd?ِѦ0ۢq׭#.UÇz||Ƈ{6bCfho϶FK|.l[n{{#IMQ(%y8!< $ U\B5PÅ.Ԗ~aM+Յ?F11=3oeѼչ?c~nYq3~94VT][r#y`7 > xb1ؐOɸ nol]5sv妬_ޝ~οᷥqH!}s>|b4.W7>K ~B|/|˧/rM}F :!PSiuT4œ]I_,fDoLsy { >n| _\$m\ö°y;)\\N/mǻ/|\NeXΣl;6|䩸ڈTҧ/0Y`ynV.￾A8$Oq'%w'-ŷo<_r~# YٔeuÅ.k T/cF؄Ȇ?] e׆|-ˮ bd?/6F&ɄW x˱Ʉ<4!>~%/8׈c>~]/L^q_Wf1gueN+Μk|UjN|v >a% BluާPi$#gֺ/v>oos>QZ Phß.uq8c1_|gc١xo/q9]TbQn:F#*zg}6Tq \B pϓ n mǘfږ|x9fDN4aN7DXc;|B; endstream endobj 2363 0 obj <> stream xݮ$qw7?`Xm° HXM`c>YYk@3u2I2?ԐumrR״ɭvț ʦ;eO۶=+A_tu%_ҖS萷r+Vt[ԡm55퉫lU`=jDn=_FiOoVY'eVm{&IMnv{f(v=j5PiWS[ޤWOڛ=ƛSBdԛvUQp4[ƴ$ItVtgI]^m[m#Gz(-Nɨ픷 ibMk#J5;Y3bQ{#1n_Na5Q;zYQ{ݣݣ=ݣIkaL7tFV{d׋5ZZ5s]V=]՞Ϊ)Ev{ݣlcˋv˳nwyhoض$ioۖt$F{]YS[&u7rWܟò%K)=#=e#{WN3]M|؞p˲׸Uv_N:-N.mw۹HLqv?5TΡKy/]tv{KJ榽&^VSskWkbJ)lE׮%.zٍJH{:"q/y3[IwyLl%ʪM5t/yϺYi{2=/mos_mnReomއLϫ՘)y O&Z3ҭnf6&_.Ps[dVKs=js=.ٺhmm'3n^`u07Z3umTXFmkׁ=Z]zs.'ZFN݂Tmޑ P.읢5 K V7w\eUzn<^+Kmb-V`1z 'f2f1V}@fweNڨҥZulceOTm GASn߭{}0#[o97aF0U3un/~VoTKsQU%ҭhbgz-w3}0hW{ϻm׏~?~Oۇ_~#m&WZʕr\u)W[%lMײlkhs+R+-KRx1fPlڱP֞iK9lڿ6Be{iī6n鉍~6Qs-_7ؠeК\}EnaƷ:D_H/LF_`ytʚ!Mmמ/ula %P_2dhڒXs[_/Y+MmcSV0^Z~[t&~k[+MtmUcܶ8x(Rk-dwl@-HPrEȚ>UʹE jVUֿymlzY]Eż6Š 8J!{ b 0 kSs5yũa dyiUq)W\ʕr R3%l-gr-s})k9}o3e:Zrl>sY2}הZη3k9YY5p_یzIpQ> }YͨYZzیz)?pQYͨ,YEOge<_q/b~1>s? &> 3cgԋ2 3IyW'6k=vi;,KR+Z淳k>+Zwkt-AoaYŵ:3+暈ǬtM~Z3 s"t0פdaa^a>۳(+?-^q-]̿ٲR7{g"ZƾfYĆ%6H(%.> T8RIӸϊ q8Ɖ r;Ѓչhgȧ>>?&jz)_=x:tөSON=]tO<]tEO=]t%O<]t%O=]teO=]tOW<]tUOW=]t5O<]t[zq55y{Do=޾%zDo}zz>=~|fW_H~uyyjW]kھ_]^ty=Z{z{H%#W\__eGc߯./<7=zz+.S_]^qy޿z~~֣WW]e}GVk^+{{eo^U____rz?Ϫz?Ϫzzz?wzWo&~U׻^s=o\ߛ{s}o^y7ּޚ[zk^oS':qP H@ P$ ɂdA Y,H$ ɊdE"YHV$+ɊdEr@r@r@r@r@r@r@r@r@r@rDrDrDrD2% ə444nڬ@T%+mJ[(mJ[(mJ[(mJ[(mJ[(mJ[(m&$dddddddJ)!^:ګ """"""""""!!!!!!!(߀q@D (@ ( f  f  f  f  f  f  f;w@/z ^z\^z^6l3} (6P= P= P=P=P=P=P=P=P=P= P="P=%P='+K    K    K a#,w$2,|$2 "aU$,u0VFHX #au$,V@HX a$,uVCX{a!,?V DXa",CuV"RDXa5",GD ~G ~G ~Fzo&zo&zo&zo&zo&zo&zo&zo&zo&zo&Z9 %^%^%^%^%^%^b⑰~ 뗰~ 뗰~~臉~臉~臉~臉~臉~臉~臉~臉~臉~臉~臉~臉~臉~臉~臉~臉~釙~釙~釙~釙~釙~釙~釙~釙~釙~+++++++++l[ƅsa@. aBؾ/ ;ڔѦ6e)MmhSF2ڔѦ6e)MmhSF2ڔѦ6e)MmhSF2ڔѦ6e)MmhSF2ڔѦ6e)MmhSF2T(O<S(O#W<S(O<S(OA ]vWhwE+]vWhwE+]vWhwE+]n =aGOM=aWO=agO=awO >ạ*b*#le؄M؄M؄M`;QO4@26bk6 )))))))`S䔊)UTzի^E*WQUTUaKu?ɨ^E*WQ=vbXa/V،vcXa?Vؐvd-YaOVؔvemYa_VؘvfYaoV؜vg5Tz cSWuz k^CP5TaaX!6 JP5D %j(QCJP5D %j mjhSCЦ65M mjhSCЦ65M mjhSCЦ65^{AL=  ɂdE"YHV$+ɊdE"9 9 9 9 9 9 9 9 9 9 9"9"9"9"9"9"9"9"9"9"9!9!9!9!9!9!9!9!9!9!9#9#9#9#9#9#9#9#9#9# ""Kpƽjܫqƽr_KR|I/I%)$ŗ_KR|I/I%)$ŗ_KR|I/I%)$ŗ_KR|I/I%)$ŗ_KR|I/I%)$ŗ_KR|I/I%)$ŗ_KR|I*莠;#莠;#莠;#莠;oKm)-r^z!腠^HMŧ4T|OSi*>Mŧ4T|OSi*>Mŧ4T|OSi*>Mŧ4T|OSi*>Mŧ4T|OSi*>Mŧ4T|OSiG:i7!_}ï>}Gϛ.?U.L>w돿}ws7I󷟾O|h?|rOo?`>}|~Kㇿ?/mL~6&=ac7&9icr7&5;ՍILFmG#F3ۈ/J,cF(QF Qƴ~n6qsD,lcP1omc_Uu;tc_Cu_Gu_Ku[w zf[LmcSwԍὟgLvnE3ٿ;֍Ab,=t9ƈl8187Q,?í"F̬?&mnrn1޹6$;VN am4co?ب@hC6Cn:_u_n^G6JʷQo#nxkI y퇷vZUZ᪶:Ne=p[!lk}gnǸv7Z)/Ǻݸ]#oi D'%> ^8O|{sAMf>yfFdAQZɼMA K%xӹzz^{尿2 uj~Qh&?MO_hs> qx"8(\Moù0Bp8^]ZW[Õwxu\rc~Iq<BACskyz}jBWD@| {3g"A9 Y9P1-ܔ`ۘ?$|'RCԐۘ1 *N="5ekp/"x $ !@C1 G3@r.@Y<nJODa^t#Xp{z<LK^,vK9н|x^px  K K' ]<e  & O@zvo sZy/K/?B;[d t x3vL Ⳅ,hAXTϻGr&,! K`+!J' [$D]bu.b] r@qԩ a P&Nz^p1!^L3 " HW /A9@Zp8y hq\ +@;sP켐y h'>+s )' M@r PvS h8:(v vSg hq@9 P@:fa  (P'Wg @|kDv6BĮ؞gpdB)<>9|h@<4Ks+/ljvрv 3dÏs& O@uq**P?Sg9!ANo)1hOS\ vIŧ0yO Փ'F @^rqW/@' L@<@< pvh7RNvgr O ;Np1u$#n;3H, `XA!Xɣ0_?~ꔴPکC9 W ¿8ɁnG+SGyu~܀ux1dt HW IC7ay9 HW O@:<9yzPGc^"8]Ǒ(كGP&20C=^G FN$֗Bv^x+(D#׷Kg3qE(AG^@ru )<΄pHAO' Fn-U $3m `bXx/,W03ga@1&-^WplZAyCk]!a@btadtw32|'kvA' L@i98k 6皾< %hq VOgE :NG<q=xp P&N@{h W ^tn8)GH''zuZx3& O@9@G jt!_~uv P'& O@9sY,kyP'6sW \@|ZK 8|%}^w H>0 C9:<>p9=?9 (7O s@_}d@;O^LN@x ' 9>2 -/@& ^4y4{ ZϾK3 N@<eh_Ƿt9+' M@2T@<}9N@x<7+uQafEHs;J@GG & O@:=<>T˅=y!.j|AW.xJ h+ %HW ,AξETTѓtQFHYQMy#+P'}_ 9N@8i i@' M@2uqza (P'̀LCY_s~li(Ƌ/a[}TH O>w h.AXxh'5|عYOeu)?ⷂ+PΡsG @rz/_9N@q (g HL@=Q2:ym;\ endstream endobj 2520 0 obj [ 220 0 0 0 0 0 0 0 0 0 0 0 199 319 199 466 0 0 528 528 0 528 0 0 0 0 259 0 0 0 0 0 0 588 596 0 646 568 527 0 0 320 0 0 523 792 671 0 0 0 590 481 574 632 575 896 0 0 0 0 0 0 0 0 0 526 521 433 524 457 292 522 530 271 0 0 267 799 535 507 527 0 407 382 345 535 460 728 0 460] endobj 2521 0 obj <> stream x| x[ՙ\ھlYd-[^olq,) ȱ8$- !$8PbJӆ״ewtC?Nm44߹t(}{9Y9﷞+'B cP$d=ߋeǜD{ nEHtɜEK~΃WAtwΒJZ$\?"DY66H!}/_ټvӍp !BknFN?p׮ݸs͞P܊PWj0 =!uA}K6m52h [.?4~'n$?xE_AhiԷcv0g/4xC}.r[ewޭ$훷 n~sF;1\i|)`됞&rc/^!%';GHT?"{ mCQ4u_H(<\,!ܝ2fDXĈ4&b.+̽` ˒Y8S}%aҧDKN%R]70/ ? Wm.,d #]|hJb@~SXQHbFOK4ISzZeL⯠zY=&iF ZVKK0 eXϡm~u~ mfjo3i&ͤ1QDzȝ֣6DpoG?fLIuE^gL=2(Yg&ͤ4fLI3i&ͤ4fLI3i&ͤO- BFIFHLV>2(+1FbW"oQOډ֕A"%HdB])E|2# "_d{MhG-hCCh;atE]Pc٧C%PCITȍ(jP=jEh.Zuh3ڎv#6ƒ, *lQCі)}쟳ށ;f+|I'OzmBJ]Q 5)G\jKW\<\۳`~׼s:mƆx]XU4U _v%ENfMF^ըUJ\&E )-پy'Ѳr <;\ *xQG.؝C\].첐e?`3e}=IGc=cx{[rt|B|.G2GIrʾ]DTJAޓ Tb| ֎)mm ǐmHwy_0 0pYP/^$x\!;!dyl; u7 'A>>04&bB= h%N;x=y]WA758puKY>XVAv< &k_JX` spX~9뻵 a- <d6׳*l m_ ҏ!OaPeux[ n'K ':P6nWZlϑ{_[jurr=x5ͼBu%YDfl:!c*Tt@X2ȋ89hZe {nM ,vcmMQs5bn=]jS&MX$(L 8V;/h[hqFh:,K'"M>FSt[55V m'X*MH*,. f{ OpZ OQHI 4 s4mF8*ڭCALut94#4QX=J-ޒ ]i`=`AqS,X3`y]l%\``e R<!Ws}dDL1sStbB2 УCC aE rNyhre!bonN<({w".eMk#P8 K@(ahO602^;rAwP|#iB%e!$BY +IrjZ^+N2?Ёd-K%]CY| xvE 3IW0 $29\)'<;]SRe9I9 PjB BJ KUK"bbܾuJrXƛfG?̎k}Pz;d6C 6\nvl|&Y18Jm6k'\ ~O+w|/뉳)ןX^s/t_7.wEs#t ၑ?6rSd1ۯҐn_SR&t8.~:rXV㖣p ak%νl4p1x-Dݻ]T]t}8.j׾vj5w%T;,F &QP½q T>*{բ6.*&,Ƥ6ib&eI5#&6ivPRD)L1P(Q E!E%AZX(p@K(sp䔊}?u0q{ԥMq- VDk:LP%R%fDJDJ1()FKC+PJm!4bR`5Rxj|Gv'H4^㠊TV]eZTzƨBe)5.6Focim,nt4ZMFMQ܈Qcw]7Pp_]0WxYE}.T>gSS4U@R@?@bE) ʫZ;<|Uꁭ4$> զmFrVxdd=$$ -^VN6{:ېDKc!˃r/A} }[y~Ϣ/h5 V%ԅ{B:݇ .i-"VD VɣC0~t:h stmDGA=tqkƐnJ Wg ?e ?YܞD[E" 1!#:!:cgKt4_DtoA,ٸYԋ| T8Ѩvj "j5RͅA9GŴ1:V!Uƀ*+gEb3xXo 'N2^us;?.A%jf\SմS3kV6&䩡t.Z_j:4HMn٩)m ^D:?.}75p,1VX*uTx:*]rS|y?? Ft@`h2t?mK,VZ*JHTn.) K.ᐌRbZZ- )*ftz~4#kKrKb×]~6aKLiCJQ~Rf%MFkH(zk<2f’Lgmy"VQR\G9)W]~fQ&+YFLŒ4{E8J;<T*Q4Pk ;vqee xe(CX╕q*Ͳ_$7̙M 3Edq2hB[g:N{ǧcg?F\AH2 zQ\kY^"Dl%cUHV t3m n64|s}_zhWwKY-rdakbW}V->pMUT숴cz>іkV}:Z誱701{,{sBtp htso9 vqSG*A.AN<\O;Kʩ0S/jfU}ꁞm{<^reJ,|9Nc/Phiq GIp7|W"ˀH tZ-{\qrSUv|BLXɔzĠP6lRH$BEwG# F(ָ(5v&J>•@l@zσZʀ+yyB[*/ b>g x/(EaOư:A] P*i5K3Ony&PUbRȖBQ_-Fft..7Hhmh쮭ϨXwOftBޛ3Q#T}W+*ʏ|V~٬V rGֻFSQRR*WDOc}xH}n7xOEEMkcmml"5Yv[̣ F8 *фՐCiS2MiMi6E4^U:?)չG3cJc`pwDwwfڝ_ҴjimUߎyWc8]O\Yݳ:aǢ^R“`l5FNZ5Z-ZXS[)֨#b5MPS"q!v!e0DPB$%>'IrBMАx ||Sy Eڮyj]qaZ'9LJ[řbނXDڔ߽`F* ;5X3•X[0ޘ!)vO^=qH pb0ŨI4hCty-Vb95k] G߽1UFZƪ~/&Fׂ=̬Z]ξ'yEЉ.[ GlqqaFJ"rحz^w`"N/yCbw%Fv-_tK xR5*8O0_J1 xDfIH8dBq ˊʘQ8r%.1~BEcK>q4Ë@j-75JqjϹw ͽy%*%R8ik+r"͍݇9V j8xӚ Ie kۊO;e2\)hMu3f,`qRCe[Tӗ { ݼ)._8Tk`v<8TQ&cnqH;ܴ(3VY8Ѳ:MdůnQr1کV7JL+)acH ꄝTMN'Su"]n4zK~)8&|H@>3j%ӊEp[n``/@yc%G*yUɥv6s}-[Ȫ-l-viMW̍Fn)eŹ÷ێjέ˲;+`^c9[+YDz,[Xn'ÜSe:VBK{@b*:C+3 ?~N ;NU $)MYSxžyM>sȑwUP~e~O*i4~ =+, WyJMFBr^93JN$caΥ5ո(g5u'tyTbΚuqi\Q<אr7թr3׹KԸZvnwK:n+ɼ]L.7mty_87;27q2c.:i%FjF]sj-زNgNZ cö3]j&S~|> /HXBfZxƕ_j˚Eb1;pgіڝ;3ɼYHOƿ@k&^ױK/Rvnx NlXwYmr5>{+{j!:#Pj_ȲFmFRրh|Yq?k=$wasv:KW'X̂DHV@q.ͅS!) ,1xHK"XDw%1'~rgcj1˿TF}6STWq_{G:[v}1f7=j~ݦADgo$ V۰R?do+a|핡Φ]"f{UWs][6g TJ:e`T#Ȋ#R bԴ #`mƔi 2'fӉYTH( ~_kv%3!@ڟ{5 ?,ph#PBlGd>|QDg=x,-vEQvKkd('t5H @J(D„Ea,_{$GWC漰8ieK#EG D:aiuO#@m!$zVTb n&i 7 8C\q(iOu'qMm0O$ ?Gn▪ ͋o8(I&v~TyP^yYW'0H|լml5ib|}gW*=@H:'ߝ~&p7YίJM]YD?dY^,Yfe&~xD#y|i66" N'bkh:6J8>$ډG~_#yakmՏPIpѫsgwt@36+]* vb lȍRytlNgi/[sȬ(%9v ScϔYBDdHMSBυ?4u=i iϷJ_ͼbc=)ݣ4.^x GSw~o|O5ظST>w`nT7rHX[&͙܀eB,p,a5c,ZIN{"Ӡ*0,IL2Se)k8)Cb#"˸ OSᤘ'.Y5p[ c꼑J6NH멪:9o?ںnm;yu "ɤR6P`#:bTWޛtI6K(K taM(XEPYmh6&5I[T t٤ˠa;" n!=&M3|{wr=yM;j@mq9ĝc¢ca޷/3[_"b}n]&5|)o|E] ŶL,{iɢ޽|HǐQnq2xTt 2h e1,,!> ˷sLf !Գ':R3Gfvg0718fV 7L AbPlhX(NhA  Kc}sGO~*7xJMܑ-msxdV`Lz/Vّ;H|]oƏHٗsv\؞@LL OGqD31sjΩ=딦K2 v1ŧ9v)W_dZ7ur cwi5ޙcq4f)h[TuE9Xȝҍik+F쑖='99IKJX8MΚX)Jf˲sLH(aaɝKC;Zߙ9'wNubb *DCNRTk5qڛf4~#L~jKs8&$!%٘oC;$?vOa]2d"?\%ʌ9!nް*~#$Rr3wOPI6\MC^xOVƀK] fp郆L\;c7xԱ>9I 3YRybGn62{#/]Ko񿃽"xYаU4Гg>wh~Z ojifeRN(hQSЬAYiUw&]7ԧTxUj(j~`DoA;>%J7ok?%zWޘ,%C{DSRD6w/-HwtY'_UwIbXJ=t,#'FՈϱ ^@/׉)lD+?z<ɗ}SDn&m\M@\Fp|;kb[<oݮӥʉ#$RR aSNNP`KcN@ǴsK|k meӺy>c~q9H!z$$FΚAC^m7#/&/ICoͩoLyhjKIOqw_Y6eƜ3{t1rހij>g(ג~|;${7ˈO},""pUFF 9 !ȕr$Cڦ޽T%eٛr$]|ʐ"l1ķyxp;/y|ȿ)0LO 2M );zƁV'(}p~<&,\:nU3rjms *̙0C?Gp5'7U~{ =j} `m3g>O@wc<&%wbBRw]v#4'4D'&$1)GK픊"&yƜdmhPUP)'Իȷ}{Tfkܵ7d4y4h?74;i紨S]gVIwIAq֢ޓnMj'_Γ-{7h H9Q}}lqԝQZB !#G /e {SxsE$rI>otېAj8 l/RaH?:::::::::g61Lr <8Snx{Eė& 껒U5$א:*%y:*'Hs(&öOܗX4x#&pSǻ'o`)ě8θO nph@K0zy5W_G,6/q_Fr+`@xuTRKskϹ[ϓ|YV2 6_uk0X> <}R5|Lj!^C|-Zaa^FMc]Y8~"`Y1{X~80Xxė_I|(\!y-uԦ hDE1X;fm_6 x|e i f mh ε0ěc| |jˉ$^fQI-otX4o&sK, X8~š(sêˈW_N|,m\qׂ%JjI@|#:j_m7qNВ1-b dIl_Fr+0x 6pJjI@|{x#z*i'Λ8  г-7o_{.ܵ Vqr+5QI o$9_fi7-}vrX-[Q8_Fr+#7q.\b qJh x5W_Gѻ |JN7o*TJR:::R-RI-l=;jˉ$j_G%M%^2ӇWe-ʗ=^,&*.a$.zEUe=!BnCFL TȊY"+~VdϊY?+gEVȊY"+~VdϊF?OcvVƌX%^˘b †k#ZR;ނ2͡{rHçWv(cFVAc僷?r3+חF Ա,|UxJn7^=jFHYeE/QT2h o箌~]C}\M]Bm,u!Jk.|bdz抏z9$|l!Q'皩WABlv֭;ݩxI9 }wb>e;G-W׏#E>j,S)'(]^8iUĸ,.[)1ߔXKp18y2Pz䣴mM(";LԿVVK{ьL?rEfz6)zTI%ܯfJJZ;N5=3T,+qdYa>vҠnR+6GQ.ڹ%Ojuzr[h-2Oʉd5vn}_2n5,B;Ĩ7UV;vvx3y>5x476ѣN2R6Jhk:T\Y4߹ΝW>ez三xI=$7Q܋v?־ֶzU3ƾ{6N;N{8(;L.ݖei'[]Nd(7d6qXLb8l NK\`,;v[3fSVd4 .j3ƊbԖ:,6\Fg 8- ,x).7;*r4t=jJvMC1SfR ڻ,(6YVbl)0+&UnV.VC,V,\\1v*S06I晍(iN#Ulv]&e.\Kfk9֔bo)Ř(;]FVMsxw0Z`%ɝ+x^av䛜fc~awes @ Z 0q{,4[%f^h; 2-%"n|!< ʜ"Jɴ:|]v8b,d9Ƒ5ʻRb{؁悲|U90;ˬ.rY X`Ks疡ZC/X`/ nsQ0V(mhv&#;xh[̶|W̱[UKDΣѕ+NA9|d;bWX׎'h \fS 0G;ǜh)MH 1ȣfPu-,|CYJ_ey#ܤYJr-&HxQSgs'n,|;2͓ o/DD;b<"гXv"69]!Y%%g/rJ+]دM7f/WPY$/s*;掤H,Pw<)+v@YԊtx6D|ީMӸ]9L8,_كӪd@J n6l0z)\7M,9>\hBf4nr/I?-Yb:) Q"tg]0I&O -L#Wx o!(ew_~y*ׄ!!? $g ކG!+|\x*䏅!NBD)43eLTkYYyfb&}~L@xV&HOK0QVw(&ʣu똠cU=ѿXOBP.л/{1~xK~x  & ' _߆74aG .c~GF)Se|}a##C>) S)ȟB>-BxF<x9yȟA ^|Qx 琿7o/s÷OëۤmL#mC!퀼S y 33wK!H-H{ F gg!?/= VBI/J/B~Izc^=JIPX> "NSSȧӐHg B>'|^:33 /J!_.A\].KK\@J אJW!_N%Kߣץ[o?J?BIn\Y5EYB4J%r$(9 r 9Fl cXqrx9r9QN$'AN!);ɝ e#rgȩr*.r]宐 wCN {= {B%!g@Δ3!gYlȽޘE{P+EI?r!&y<`y0!C塐 .y<y49()D(sk76t tMOJuRvSSYbIg}A1=8A~_@OO@PHXL?QFӜgb~ʢyl nml,j{'22[{S* ,y~"5h)q,u&Y֔w|/B%"UYFfRe- a,fnXj⫉o $mփ&~s!xqqj#|P2d&x$$݉&>/UC3a^V0_'iLDG:Y¿%%Al&l5!v]f? z!I L*,V q7p'eHA$݌k*hNg0zd[ W_e?:ʿq_xjփ߿_)\kB(\E0xa!ڐ!Y!!/nB5i5d9¶] / EVB,PWv3P() S4LYa yAtM!ئ+BK<|~ru+eqt!%NiMr=yzd|ZJAs=iZGЬ}Y;vBaW+٦Rjnn )3g/u)!]oe`>PW(YX^n_XCq\lչȹhمJ*9sQU[pԇW¥.\p#.:듼TG.<_}qŶKoug^ce}m'O_vvo5.=&hMCM55֚*U5ZW k_DyaMchGykק~@((c}|a+eƱhhq7h76xj:m]R]Vݰ uSY-Zn_cu}[c=6ތCCEIE|އxﵲn#~{>)_ s\rѮZDsmjVJB7 s?s^ !,š?U?P=xT^\/|Mi"G S _oؿӄƱ;MP23i[<-J^4֥}Vgc.7IYެ¨߾ƣMusۉzG{9j/Ɲz& )$[98Au^!eq8ERΦ}WϕڏNrc _N81HY6 JYug'V\Uȶ??] )+٪.T]g+!.mIũ{/iOZUfHt7į}JѣnK1?_q*'B =N<~R ^z~6k*w]$[w+mm{v\qcМkخQ.Wv{BʕNvwn.69oݫ"ߐL (@1`S;xy o'K`J `E=p,KL"H bAd蓡O>ǁ5 p8>c3apH`0 ]@.0}Xç'S˾c ?-c Oya |-a |-ao$Y}wWtZBJ>>xKDͿGV5.cZ9@sOeRhſ,JA2D>r" =.cR{Q{,Bъcѣ=~%q]`p=OvNwyGd?j{b`.^tEˢZ`VuIs3K+.1GYdZUD;RkM8)Y8뉺^@ dC0v`*pp?0 f@>)@!Pc< 0@ `@) (}@0 n vjqχOKGC?;73/uo#Q]pxx1x97s|| \?a???xW7]xCb01PllVu6 2@@%xX<,X`+4 vg@ \A}\qЈ X`儳 gp))h 0@$W3F`{t'^VHHHB2JY,-)N pؗLȳݧ [P;QC(#kGI=| @Yp @^^%w9pc}??j5bN+: vՆj #hp$@iv c:=x ]Z-rXSk@)\@jW|·ڇ#5P< TXS-T k'`C-l#'f{@u; +_x}xu/x3·w1gU4L*r)-RR.Rh% ()XRpKPjPA k\;$\{~w39y.|y2-~o{ܾ6ilD9'&v˔`9.ć_:L\e0Z!W$Vj{U5;>r)wj ~ ޗ]0z1 לr5r@تYPcj2 5F\ 5-Yɯ*Æը; vn.--;dNh9hh}8`Cqǜ;F=VY8a>p2NB,©8 q Kqƹhy8f|~H!Eɛ{*el%Hy)/#e쓗}O>qyM\+7Y(/ ׆995-<~*ԪgJ|?NJuf>| kYEߜ ܎; =71¯ 1]WhtK<=?1jz-DOToI=`-`tKhEʜ-(x<~éEa$U'>ikXG{8n[8>oϕu}Gpagܪ⵺9[5ϨoToD} >>/a_WU| x _7M E{T 3ʓT8 44F2P T__yk9 Ds{T}`_np8,ri>fy>_8 p;wL$p]u}q߯><s= >ueܹ^=׫?8ϒǿAc[[==G{>RL9hj~_NRk3sTi5K~k.r\EKmXiXz֛5ZJTͤu(jH O3JJQ|#x[ /a/xŵ:؁o!_ l=(`;^7=z#PyU}>muZJRMV[Pӥ^Vw|WZNYNY˫ԭUj2}kzj[qnjŹՊsgڊ3mřLSxSViέViVf,> oV+Vx[+)+^ onΕ߯iF(ercߏzBotwktO(rOw{zKh 'KhM7J5XewzX][oׅқ*Q| 2k7M -|0w=|~F?¿Ǯ_15(5l2[|a/eS;2-~g1'#x Ϙ__+6jO{V=ouM6w5y^5^5fa^3ky05üo<7y^Ea*`xU+<<<<<<(Ӈ(5eo[m6Kʂ%q'3dk}Boc68p8`.x?<5|屶k1x:,p">z4$yf/<{H?[ :'oDCO8/2ok k`&n .܊ ~. vvM{Kٗ$|WSl_ ݩoU~O3> |45n?{zVɑ5vSC|/35G3f<>/aPC[KB_ͥF97)"Z̐ĞA*Wz3TT"n5ut.l.^/HtNӉ_&_I&+9+oy0f?as?go'Jo‡xs{ 7kuf$\ * lg+8S Tp z/赠ǂ Q8g glsqrhU*vM)c#uވpsح5wPF+K?w楣FmԨƶ8fZMa="aԨfjƨfjƨfjƨfjƨfjƨfjNp>bz+;` [i }#n­戮Oyƭ1֌'ǭ7TU'N9ߨ.MxcoLvr]s2WC>YPi;TI$m[S[&{Lb/olpa0Lx?:q,c>HF 8 'K¼1A3Ӱ?OO~9@4X/r\E-aӊ˵ܴʊ&h/kiWwþљ9љ99*:GEΐ7l * OTߊyᨊcúliV+WNyg+Vjv7{ᩊ+aCa]TvGeLEl6㕰aQ739C,sp.q2tF܄[ו0Zğ1__+&1~X, zy}nX5S<FGKo1%qq4gq's"9.ErdDh}"mј9/Eh̋Ƽh,FbH̉Q}Ĵ^ =+-$^y&4'^ Б+"հ%^a"fNPX2 XhNVY3)NU!d"t%a$YsJm:.5'wfK+ēoКSޣ{6{k6_A%ypX<9ݱ=yn#p~ޯ3O?GǪ|9x'S@ԝ< !<ɽ)a(0M. {&OuoktbǝcSrɎ/&tMM;J8\V[L ¼r:"ڵ8q~/ڵjw+կOz+WYMacil3sxy-Ƌ؊mx 3xl+xu؁6VGAU$LT4tW_:;X|xh>,!tVCS}s誾%Tw|6iqXڪ-wwi۳c{ݸ']}^|"Wq}!V&ī?a~}žk6̫uzQ_+)lyQw Z!jְ1u9n}3V:dl5Xj@UlҲUZJVi*-[elҲUZꓭJZkЎ.M+;NSVvNhd̐(3eA]fHs49 =Ӝ=Ӝ=Ӝ=Ӝ=Ӝ=Ӝr^JtT mfGtA2&cQSB9K&dB]})u5w{gT]fx}{DG%}:v?m m}69uG;y8ھcU7_:Ow}'is2NESiQmtۍYl/qꚢg;q|L Y_:/֦EK]͇k VRkdDuέ.cGM+oPwݬ˾[ݦ\;^mcߣ^{}Bݧkjs>}=hCo+ש/)Ȳ겷))Fq++)(j!EQ$ERT#E5HQ5NQDQUWVTES&j(*OQ5j)))rUKQMHQueEQTj)):ST=E͡:j&UOQ )(:ZHQs(jR((((j)jERTE5RTEQT-E((((jj)(RTEMRT-E5RTSYQUOQUKQMHQuUOQZjF++UKQMHQuUGQZjFzz+yVYQt$UU<{Njj-ayy\^Y9KNnR>ޙ3p}xйr][u/DSe"IʛIQ]7MRzJMRuQ$MP$u娫&xS'K=(ˏfRr?gtRG:&NtQC&MtQ #ވO,o-]|eѝ0$Oꐑ0Y1?G ]Fkh֤њ0Z]Fk(MI#3BF%gT&8?𴳞F}="އ>VO~y9G>"{9އBQXjˆxFch V#}}@G/Rx߈HQo5V5F(7b\oD٤7q#{n-g<({nx0=b# F].(`xR>({Q=#4P|-އ(jxn*顒*K%!> RL76 T3jf> >DA(hDJ!JM#׊JY5QV\Oe,@i)-^~GVQ]7P]ͥxk){d* l;j\D٨_6.՜e9JfdâyB2')2(s2')2QfwF&%}"F}+)w*wnw#.w۷}{b/Q|2k(3V~PNlf\C1ʌQ<.,A]C5+W.fʌQ!Y|$'j\H TO n2 eD̎2)s6eP2{(s2)2{)2痕IE/~ʜM592')26NB(m75C%Um>VSCwwic>t7{%+\C5+Ovl^/eevRf{)2gSfM{){1*//΢;<Ζfo(TC l [ *l+Ϫp 3TGmTR~ET8N*\C}TF-T8v p G *q*P*6*lyT8LT5TKmTBo:0KY**lV*,f!**l珋ۭ9;o!*l*\Z**!*l¥T Ǩp ʳ!*l*\JY*1*⬼ [} Ћ*l+·p G *q*P*6*lyT8BcT8BT8D-T RSXy>DmTRPT[kYF'>ݗz":m5+pǨ ` ;+I;U<>/$߯Z@i=ZW~)%*f0a>*6W ,^O%^ %^d%6il3sxy-Ƌ؊mx 3xl+p$yobB:B עY<.K%Sjᘃ8;^kxo`Gx*ۉ={> WUZVcX۵ᆊS`BdG9(G偿jr4RF6< Ok6< Ok2/s2/s2/s2/s2/s2/s2/s2/s^RxY /Ke),^RxY /Ke),^RxY /Ke),ebP0!CJ`'|72 7a_Cr6010qpC08&D8&A؊'≭xb+؊'≭xb9|_GXo&聏Yzr^CGd.مK&Rd)%"D\"KDp.%"D\"KDp.%"D\"KDp.%"D\"KDpqΙ{<;괮T]ٮaΐqCc9G_NABuޕPW( o 6W wg˳};pOi{Zr<!Ir<(Q`4m_$8p7pI?F;c6qM 2x'*zjlu٪s֑d \Bp?V\E-c:ee~nZ&pnM-t1.}Fiս@W X g r-oߦa sVz&E=ҙwo27ܶmmmmj5O'U!h<ƣhMo6010qplܔ44ќD8&8L:$"D$dl"MDH66^KOQ裡S)~z?EOQ裡SCtߍ;}]Nrux WkIsɹYnfO%YɷzkYZV譬ZVc`%nduT2zXsXUx܊_GeX>ѪfjF nlbM }Hׁ0^?k7&O)Q$=t$x`KwI.Y~'|º/Sd;Awп;Awп;Awп;Awпh h h h h h LˈC:ĢMx}[dZĢD:jHNq6Hkik6VFL;:#W$#gWk:#ADtߴ"CDt]$B%QZ קQ_9K;1B#a\vbp-S_|^'ډx!9!Es L嵟ɛpvܿoqvߎ;;;;;;;;56l͐}]x@7 CzcCqqB/H%Q+B !jBZ!DVQ+B !jBZ!DVQ+B !jBZ!DVQ+B !jBZ!DVQ+B !jBZ!B !j^V7!&DVQ+BZ!3;83;83;83;8CVMkXT*S ,MC}]k/9p5y*f< `6́0XA\W*A~ J_%ȯw*A~ J|/ GQX &9lr&9lr&9lr&9lr&9lr&9l<7F(sxnύQ<7F(sxnύQ<7F(sxnύр])$n x1LA)St{I[F(8&p.\$s6-Gi],&8\ K[O[Iq銠/>.AtG 4Gm?S rBvuCCۙ*qihG=F6zѣmhG=F6zѣmhG=F6zѣuTjWF6zѫ^;===========.|d0TΡEĶv9ԟo黆Ʊq^}@5p!Qla\j ̂@$ ̅y@uX G L+WU@t 45k:hTcA< a9^@A^R x6[PlA$*Π *0f?P`f?g a3~0f?g8yسڨN$9йخ7_r ɿ\?Q^7y!4flsȧ.jxF>g #a3|0F>g #a3qƯOa< O < A;</@/?Ta8 U@' ka5x&l 6|jw0Q98aoܼWǨߒM{~{]sԝm\ۣ+ݓA` 6Cm! lnx2?! ǰvNv Rf3d80#p<? 8N Sdk98loܷaffzx1P O'󅾺- GonϤ? "݇o8>|oG/z޷t Ngl`0΅`P+j".(\ *o xߨҟﭿ7P3QPN̋˼̋xxxxʻT:)jG'i4eǢ mb8N;}M};oo1\ p}s줏z y+d'* hjc'wNI;'b +wnލڻQveQtQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQd'uxy;3ս]P*.VG\D.Z;cɻcGd"7c` PC'3Le."̅<0/l.Tl8(A)Q-ƼPKsC1=]ot6|PMO'QӃbzPLO~{y11=Ƽǘcc{y11=Ƽǘcc{y11=Ƽǘcc{y11=ƼǘC=(ۃr{Pn:n14yS@ª⟣5h*ľT=I}޾VI} I}=G[Ƶ=v}}K6Kr-[Ǹ¸Z ws6 o4 g 5 ae\\AA( {A?`Mr@2yXdM&kr&za@! F0 =Ar\=Hhp|4x0b椘9)fNJRB@{wU#x4̸M_as'ieala#--crT?./y}8->̨g"=Ǚ_ЯP׾݇ṿ6۰ zh?2SX{N5{lς0W`>\sװ/M'[@7[aG[>]z xePFʽ2ΟX wTj5٨~/,H4zu|(DY:ˍjrs9l׹AH;Z 5%PsV*oz%?Qʡr(s,%ȧ(!S}vU+ c&d{Ђ2Ak͕.32np]kȽΗ`ᥥWv5{~EY{fwhַ_x ;Qm_ xuCVe$9Xe66xfF6^=מ-dxVƆ86x ɵ8|*f٩#d_9/Wgo0GJ4 :NB3!¿sGK{\IFrп멞Jo50Cez.*u>VZ%r;+QJ`*Jƿh0W9}>\iW:O*t =*J=bM^dD>WojoUW-l?}_Ph\/^Ãʵd#ߓ}xדC7M}Y KzѭA`ΔQQ*&hcwlm}[ϗW {걡 QǓ8js#;zЪ[K#Fo#.Fp3ށwu6ѭUVG#l<΄|A|Al<0L=G#Xd%YIqVRg%lːoz~ֽ]wŦvxQYAty'ʙ|mL(?e:˘h|Byq&?D8"/#`YrYtEYtEY=Y=˼gll$g̒ e,seβYY;K~%2Y/˼e,eWI,ػxP//XګRZ"`Q 38rK.Y\<9'g0.{޽ rT.:wqѯKV)֣ bTR]Vʨm*W%s'*Ta{:ŴT^>q5\<@՝68 0zRW}Gb^s0ǩy @ݠoooLfP7Ѓ=`^d||||͜oa.c^T#TtЃ}[-D q'*N/ZHAg=_Ho\6>n|D{r%g׈=bAiɋM\{p&ĵ6qM\kkm⚚ oz2:鬥s-?x~M!?bkGEirZy͇<{yS gst7mVG.[Kbֱ\Mfqy1ٙ5.:k6[o9bɣ<;Eq>zϻU\qwWElCoĞgBKNE;qcAQ|)rƬ_{UJ89oѾNxf(eDVQ~ jGѢF6C/j^¾S8+ r1wpnU\84ٿ-nHDc'E!VV=- 4tڧyC/*}Ên,no{}#6'&"z>|hho EЋEWl襢< ËbbabbPpLB%ѯ`k^F;MdDFFk4D*ߘWgo=QUjxTz Hi1zACRZ-E«*xUŀZT!ifO3{FntGaH#uL^(w0^P'Ib:'RXvD^g1^Tџ*Ʀelj*Us65^jXKJQw0VsjZř9s5g̋8"\qj^٫9{5g_ٛ9{3ZY9k3g]YsŜ%U P~=sKDg>whv >$0 rgz[9c^գz?%ҏ`5p$LV/":|'Nd8) b^˸jٞ sȧ.klmuf?!!fDNӌ46/48a: 牎R@? G(vTQ4V 㙓\u#WU7rՍ\u#WU7rՍ6fz[Co6fz[Coke3'5rF|Kω e(o( c`97NN.8YT8Nӡ ΀3,dmᛰ\C-*a7`%C*WSUZY$9Qlphd}4݅Gʍ8z^~ .*|&.B=")w ʝrk?7M"%ۿ<^/2xyJ;t=]C8txکKeX+脍mffq?,3@#ѯE3/h5C>]̀(dtLڽ`1kA:b1DB_ѴӞ;Qx vy0 f `>Z.c.+~ W^ 7k{¯7Dl!:x6cd C;KG_0vCT^#;cW{=nCZYׅk<*O;ԑtۀ~1b7/sɪU|vz;Ss9~L9rP}Xۼ>4a^Tzs%^"7N>{|aK?I_o~y0NjF0Qe(bP2W)vSL'&85NhlkZxl8D:O.эKl%Xq8E+N9E{N8/ƵUlG*7*ׁѝ펿y+wU;5"ḧ Z9)ذ;Wy"7g{eG{`~oh>>{{^y#ܗzWsy>]4 X5ޚVsYh05}Yeh:-4VC_P>;}#*uύ 紥:Qz{W/Jp7tyxuP&XFV|Y2W`p_u2ed˨> md˨ >/6XFm}3Yt^tbwWQlqݙݛBHB&BC'ҹRO J!ϊ(4PEܽMH!}왳3g{93̃;bMQj]]: V١X8J`3 ^^1:?)OAH>~F߇Õ0}>pFObť2F؇Q(aLbĆjn}>7Fׇa0z}>^F#ׇa0r}>ZFևQè `$0}>d4a(Ѩ|f:0e|g:|g:|g:|g:|g:0%"j,SNq1e[̎m(ׯNY1cf1b53k0f`̬ :+SӁ++ A5ŕQy|le;k tʶm[]5nsIpVi-UVΜtN$t`]0.h#ef9#ERZCi"&5]OcT3mEw'b/1'# T+W"cb&/B[-[hoVA}}^k*Z1zJ+GouË|׉Vkcȿ>crH+qW__klV뙩@k8#gdx;4Iʏ=y^OVh [ao7)- 2if»w?~=< x晘£G ~==^G%KfGl/C\Qo+*ûơX}]zk8s`53 uX^n5GjDPk8j UjQۨmPc\BqWJZ fp]^Luٳk~ꃯ_49V/vyVP?zgAG; w{+V]c0`>Q펻wkoݶ]zjQ5wW5hʰ"}ofeŠLX `A,Hp_&,Ȅ1 k 9eZ}/A~W%t%`ݏn+k^M2`]ˀuyNˀu.ex2`]ˀum3C>}5&&,] K%~2VS`XVu'orG3vsO;}5oߘk1PԊ^̙#JkwnYN`+73̦yn7(yG@{  'JQ{|_Q-uۮJlk͞y >@@e(b+^4:8zd֑j",bte"̺*=l2kƦi[^a^vc#, fqv+;~cCYasɽa#x^bҼ42l"/+I ¦jz5 S,^csyCi){7-سoy{w="ޛc+6G(>}bkX~[' >Oe?˟es9__b|_cgj8_7k5o?s|{^\~M~!< $?Cp~0x C1l1FQh^ш1x%QW5x-Q'F"hd4)F_c0knMrlloq,%v.y3_a4G7xƜa_VJ>.fq #|"F_1$~FL91G,6xAhDF#Zl{T)~7? qA2c4i åWF#eIиS&3li̗7v"Av4HE_3^;UqV#5ȏ G 7(7!KoM[nPS`˟f#2S5K'fyyA:f%[ܬf +Ҽ*e2XhcřVj`6Vu5L[w;1}Dk5͚nNfӬ9\s|ʰ296k9e2Y{=>ku|:e>l~2!䅐s΢ggoϿxϻ<=I=tFWb[1۳ͳ[˳sB,+<<Jq+6xضxĿh;V|hW+OvmNŗv]G|e7vSna[Vvlw?b'7>{}ȴa{}ȲSiO{=]e϶g{p'g$Ke/WpUen.U*Y~~KXc{dE{IVUw[ְe-oco[mm/yzTo?o{Iv]CBCχ^B¼_X`zBx[j ~s6%$$g$>k||W#~<*먳[Eʖٔ^bއptt/آtr~rBgsefP^يYwS}wٖ]62@/n"N~ԙu>_]Kk\T[g_\{Z{u{e9ۜD! 5q}ж3# $+w{}NĹO[q;f$ͺo͹n+*x؉?N{ z 6Ex.vYxߴ6묳C̫; 9uM'NWZ5rnf ͻl_ (֘|)ﮑos5HxgYPF咒sS^q9˜wЋ28^Ϣ{y';w'tm[T+m#vP_S|z cK?B5ʜ#EԐ?S9P\ л -C\r~@Wƭ*@L߯s!5nΖ6S#IyFbxm633{S&-+,w!woB~B~bq;[ʊyhBΒjdsձ-Z7zT{<|g#1*gDBDCsq+;6A\m噋99OY1ͦ, ^//q_Nn+.ۏ~~,=S)S`Ac=$r"cmay/k׎ْZCF:[Tˁ{VϽv[MKNuR Wj%s7w{ ):gZZvg_Iίίhq97}WePפbo؆nP W++# Ynʷ͸> ]L[#qyh1Bk>jtf&t~Bk2Է?/+Wl1ނխgi9woX/S6̒:׶nɏʫ WaڹtӸml6"tl51>Zs邏^+V.\*Ig[S ^v+'qNpx9Wȱ3:5u^_tt7^冻TT>Wܟz {s~F5+@1] F?oPv7U,hkRDq vɪ[AkOə:Z?Ƨ*XV|Xg1GwnFٮ5'tz\"= 4eʺ5Z ~dXS!3CQѵ\ɻ^,vҿ"3plZ쒃\ZF3r=9+J{Wa×M^\WjUm_}V;RWvZ:qNUlQ4I`cz"ϛCh3#s2} j>$3D܏ށTdŸd;߷x5{בF81B]Z& t]TmV V-V*gpNlFתn׽# -/QgCh:~Bٯ]YӫFvyPYh征Kh}n{ov{e~uJK`|kS5mVm1Z~Dzʿzܞ'Yesjj']ڜ7ܿ7S1=vVIG9˜ZSѢok6C ̓j\ǒegJRO7zgGa1A7W~*v1ks&o@[tw͙QLռ<;]yu\fm#{'qr|0~Z/X%'}\{TA! \'TA뤽vnyst<"_z^nֵ2k#AG"KS[\˙cygoW '4 {g- ~Q"S? NdQJM4 4 ^a6=9Mgh!=B/5;_#B[ JStq -X)֌v 0Xv;fSY Țelk_Y;v9fzfzfzfzfzf6/i5(7iEَR_́ly9`4g]K_h+ڲE;х>c~11X f'1ZbxbxW6O>I8_>Y}˧Hd eIYϐed,/ٲLOd]l(%;`/U_L[6yWɱn_>r%Q*_G-'P~O˵r?+?sa~^fȍ0r;wNAra2ΝoUf"5?fQmxِE ?r<8B z=P>),է]hB}x~f9P#6Fțjjt=wv=i/G[*A{zt>|D&$,f/2Ѐ#ԧtY9s1А.17fTƁS BsF@^ 1Gk\ B%iQrF%5J(F5JnQrkc5J.|q%V Vfkdfܜ͵Y"b0tKCz@a@Q)ukΚS(kZ %kIk5k먑iwiOzyy/c@M+ʆm./FGQl:k<HF-&&j0ؽa{46 Cyj~]wx=5^z/hSx=4^Owx>׻jMNwx5^zgCy8$/ 9GAѐ2TH"Hx.T /KV<Ƈ!G#' K;H%T/K=_W@~-~?DYש/?s9 t ߂t;ߎ{=||'u<A~a~W?g_a]~ *aFp#F$3*oģLM&D(Vhf4ƃƃĘfLG:ҏ*ΓnSyK-e+ eZFU(ۣL 숳:IRpjkH3$p4IQ<'Y!+SCdvN\].#ڱr<!.HxFzFEֳy{S=ggmmTɳeyiiEQ/<5ݽ!D~/o_0ɛ7QC!i2CCww8=z=|z1"UW JðQeoVYu8Ve>.;7ކ~_iP1sy)K\q_ ;-Θޑs c~[$nT͙qUUi^g戈DHHx1ĘCqqa|nj1喃x~ξd80?q|Ɍ!22###s^aY 4-5y?{뾞g}W}CvuZ9\/vߍV}g0r1_?cmƛaax5u_*囘%)ߐku5P:&RrǠxclN|7>Cސ9Z|m8:@y1qdv18<'O@79OXʏb䒦ao vHU3.lMO[47a\ j~mXf&W7ɀe!W:n&<'WBt\u-bT/ƏjEU9ʸܳMv7X ;=8> 6Zt<C} ;|Mϧs̮\op&a>u}y'< ۝T2\@"'7 ʼ}.V+ D5ifwurn z,/~|sgҹr7͌?ϗj+Z+ٞ9aͯw -B`ߵ},?.K|bqo_ˁ5icg uWǿ;W:IX񟹚q^e&F?Aյ2*U;2etpuj-f_'s'${>\[L캩ٞ_޾/4tj[bB['W 0Bg3_ M\݄aHV=s?=zk 㫛>Z/D\wd<<b}~}|kHQd㐯uSjg-L%\(?g\/ H,pt?TP1OI"I<ґd,2 $(r?BMK adyƐXY $bި˸a dđd#' x R gl2$}R!1ǦdyfRa-ߐ@c}#rc?v9LCi&G;tUXDwQHywȻGރ3X9C>GY?$ qȠJ?zʠ TTORMt/UجREA6U&&AK"+t6O': &7'՝xC' :"Y:9 ݡ:9;ݡSU:\ݡ;~~PPs/н9f7'wɵ Qxɝ{sr ST0_g'ݏݏ;ݏݏ'~DM$Z'c6|HI &tKrJj/TXĢL^uL^ Wk(&#PjS"!PyYs6o璹vt2LLb2=1gQd@~$-e@d H1 9be12OFߌlJru@:J~~JQ8)VىFq@8q' %iKӖ(Ƴ e<R3-QF2/#Q~ݨKQL˜.2] G]ڏq>4j*Ө(QqLR#3D^B7LY'\; )0Z*``U1}f"ía|Q>BR{8j-xuVΏAq&4[Q@/б` X_- t}&!t{uB.Cw?->BdG>9H=ta6Խ;;@}|֧~_c= &ޤF=D>°Oy"FA/_@?M&|Ee1??o[xU*M)(EB;oC$}G4>@gwb=tݔ4E߫'؋a<&݆a"mE8Iػa$04!Xɔ !^0,}ߧ3L}:d>ߧ1{ Oa}*㿧0ߧ2dOfɌ=qWlLŞw3(]", `É;ɷɷϥhbC -RZēd9q'YAV(~1#u?~D~p%䑼a,ѐ?=(?#MqECE\Q1\ QI0hg3\@,(CX2aI8q#dD!tSDE|ďn+f2J0$;}..DYD.uxL cF!<3GFD?$GG|BQgCh6 N4C!$-n!{D2ԉfP'N4CDr@[ͭ]DHE>yM4Ûh6 $bL'aOÞ= {NguQ7lASM'D̰'aO(Þ0=gj40@c{U==xB=(`0&!y TI$|B1)i4ӵAPJIx:3i۴m==NѾ}kh`,)/0^*aTnnu?!0RWVݩ@)nMYta6aX*R >aa*agWد̈j^5_r,)Ov4eG1$͐,eG_F< ҿ*T ׷M#]ߎ>߸vo!ڍd8W ݔo;$sAs(%0';pG3DxhGq@#݊hE7F3dhhyc!p-a[2Vo4C;ۅ 2|B21/a^"cF 3,a>ha0y|) xX8Q0 ;e 0 e7Q. <$>eccblQظьظ!#qd9B0p|+ Ns%91QK3RT/5E2/Gɫ孲CZ'1FLğ"@_;l9C^-.yzw{;g|_/ӗ[<.~O//6`66چ|<*߀L٧zAҦJJҭ*ʀ!M߿_7`~7=.?>IxlbROhyDT⩓DOI6O碗xýQo2I4ʼDǼ~i9Xu:H d1@':51ՉӫV/άή^^ ci{g|A*r}r?}VZ)X\ .1B,p9AލGk%KN[k&MZĹ2+$,1yxRD*FqO۽9owXGMy/V\EzVYt.hݿٻW= }C=u6i|x{3{}_7m~'|n[qxOb0k"q¤,i#HY.'|KK* <..F/O,;虠ży }(ufESeYdy{f2بdzh]zyJųs )&sAiUR'yLա@x $@^`}@4xX s)Ջ|@A`g Ppxb;b#CWf@{@`hCQk bh]|DUb|i@ɖ[œEtZSȼt^^"RG̔ψJRy/)1^>+/(h R8]d*Il{9_Y))k5()"TȇQjmG^/KR)!BAaQ sD#:]0t@:$[cS:!63NO:#6I!R -I%]:+kD7EΖ"‘)2iWZ )M61sX_=4)_+%cdX۳9^^* H*,G'5~y@ɕ-J2S,ŚZ(2KiT1cZ墇Wz< dN37*\!z$+SWV(SbA>hF˷o >·-!܍hĐg[$fq A,܏g<a<|z{` !؈$(vdEf@2EfC򿐘{֒zRIi`#ip%|( ټ-/@}:|xFqU WbkUm߰3;u{ 75o˚4oQۚMZ4}GޭԾl .A'6ԗ]6=#VxGoE w;8Si].NKr:G9=pdprO6W5hٶUTMsɅVh-TT{؅Dݓ'AM0fOV%a}h4Ҹ]6Ubd0lf1Fix_Cp|ׂSԇ6I̯\",qyT&HShLhQmk̽t9xe^ r峕*yge-nS <++1wa]Ǽ@eُnJr⬋7z\p-48Mn}c$1]\!7%M]b)i- A qJR01LEebZ_'<¸mpZ5o[Vb -vG׻ci_1f)._阃`/_*pvr5e(^ζ5z,c+YghwY̪0v;l>t-~w)f?vbv:mvF:'6}Apע@ *:Jhy0wXoRO5nj]ib߶nO!玊|Jml,[Uіeq]6ھŸ,62۸rR7 *Mͮ{{>>rwt8S\EkUY֣)ZŜE>01RJp&q5-.EKUAl>q{xPRъL2=T ѽC'+lY\g"ygJؽ}jK/krǗ׹+cg*UVOk, e` VцoR;22<׼DFGfE}3i I ڊnzMlsn-֕s/s}oYϝ#c8&;^)tJ@8JHAtV\'}9D! @3mx"ڍPCEkTSy[PQuk u{Jv%;*6旵m6\F rL::rA?5{{xEEPs/q/{{ܫܫ^^=&&\' AF@Tu: DuRuF:U::U].SV133VuX))柆[gg +5k埅ho!;??px==߇`D,^&ǐ0Y$Cաp:L)pu8ܥPGu:QQ4u:q0C 0KNDu"Q'`:Y wpzzggԳԳ`zzܣ4uܫimuhmKL>U Kza֯jm5,>} >}k{3jx~hx6nx~dx1ix~lx5I3y`9.`컠/"鋠f&o\c5)*03w[t[-*SDqebxƸ13w[ R_^jɲ3+."%s-;JRKKe%{Lv2li6/:m'-,;Ec-6K|X㜙Em[ #sKm 7;-Rg-y xy yܲy$ř]],9+=l[ۖ-ͮVcEp `;i{]&\>S ,JRʗX]5P|zzjesɎE}.qȎZKcoW`=8`=8Ds_ZVQZYc\Ds_ԉT0Xv9.PPs-Ʀ \k[n[S]Q"Vjc.,>RSPoӾ^j]b7Y.붜YkxI N#5^_2מT2w_\`b+/PQlG [NTۺʗ\˜+m)5mvnp&:8]( 3+Pvjm6OIJ`l~ڹ|<`,,JepY|YQWؿesݹ2yҖR~i /^ogp7[LQ6buYvlsĔ[-M؂8{Vq}mi.6VfK͵m*CJRUukEWg-A9hu̱ 5ݱz^\CgWʲ ^q[ mʚ_>*UEӐ673Ȱ`dXd1"#K,\[NuWuU0YF&fYYdE,3a1""\&r,<8g=9STtU^tR|ݫL8XW hM*jZ(Ѣh~^& b ף[#\5:u{їwԫ鎊'CYl+:PʝwNtIݗCB]tN ֆGNS%\9SpkV>s:ugZOCwAO*twQ'\OoNof>U|;K>Gv"ݦXe:y vOtO+ϣKh7oWޮLvGOT}s;U6ۚmm}w2/]E_tJ be͊ۡn-HpX]`Nw?޼kc) 1[F'1{''%v7wwtʽ߽b>;v!8Tc|7S SW%@e@S#"!1)HA31T3` "_JG7Oa`49 h9WEh%!5)@I:\@ěm4/4"4!4#Ҵ Ҵ"Ƽs.;!@6eڑ"J]F]~kD-eWK>$D&bğaH|H@ω)@[4 Hs{2&~2&4; q@Oi+<#}qB&IHxI}M2⟁ԉC_ԉW@? x+i4Fī_ -z1!I ꬸ** *xm/?=_Y|^>..&Uwk:%m6+[+>-і_Of־_iKK2MUk ~];ç' kƗ?1b-/D< 5 { <{Hl[B'A$8nx|'9A&$"@HKn̄'M|4 ?&ֈO&x&ҲI}W_l\w[iX b0VUb5X=FtgVw5:+6F5`q|+ =JY[^o(hԍCJb>bfUs'>a_`[f@=fٶ=QG:u֫yz )[2)mYj)hѤ遥f0 7 bp7t:4C5g5dux9}z,hw[IнH-=ENy5K ɢ1HL du`^zC+p Zt2Tm}^(/58Oϩ^u; x9mۖ@M*CB J Ls}yo?P,pt^15+X Hp=Ngxa&~'sJyx3ԄwSa1 CχÁt/|z>T֚Kˬ/Wsg"_ z')zRr()j3QrsL흒O]OcSE_{[}vr')p r&, KOI^hQm(%TʸUkBWBM! X:X , n `f0JC'CJ008 |fπ򂽡P>4z|W` ,7>Sl ʶ\jF<-U cԑ~_W:`ږmˁĩ%Pf(2 +20롑le!0}贈1"5 h nD MBPhV*\)S36+]۲culL|]eXC= "pj,\.n ;02wAd,maSvµ\p&=>e4d΅pE!L&4 ce28XVtt'#Wm\Xv;Y:Ϫv,G6+F(FQRjS,8K֑>Je?C6Ū|\Ȣ,:Uhgx} S=E'}oR)j:_Vj**[^p4mÑDw8![.txD 0&_!d덳Jƽ&ۥl륭:k5Wm ^׹)Sdws2'\wwlS{ۦFoqtkȵ{Ĩy <, \^yL\3egYVǸA7]sh6gX,iz}V9}S6{yי 68e5-+odv^+I^LI.ִ@ިK+ snξfi*hT&]zXnOGumYg_ۄmA1V9= 잚{ScZkHn6u0omA #eQu`= xwsu榆nV}u^-{m.o&kjFTMe7c3n^|z)/{ ~ "Lopq0)SRk6fvYaW`ޛY%F%)%dt1w2 m8,霋X{~5  Qgr s\!"qU.wci|^mOW oJҤsﹷJR?΂Qʟ͔=ґ?BR'JQw/sac;ȍ~itw9T%Mn%=J=~q ly^kzFTNWYׁĽJ}(gkۜ{]LuoHC'59u7Z7ɥ1#ʘb>p]g$)g<4'@Uv\CKuYi񟗗I)`/4cXۚ` ivR7U_h~}Hy1QQ?ƗǗcKO΂}g{E@ NH TA]@J|R@ԿCTFfTMjØQ7Qu Q|QŠ:Cu(QdTGQ:JE}iFzjY?CqjBB'!~jx TlH/$މVMWaՄ*&[6 iHy;6oti<Q2sqi_s!9R⿁a8Op3> :DJL6/HeF*/ae WHk~Ro_ ׾uBu=PY'Njk*8'{aMEÚxDщJXMqVSk"j`5E\qTSM M9 "-H CZ>o#-|iiH MLďH^G ϐ½g`??+MPS}0XS%Ú*;k8ǥ1 >*XM}VSqa5PMU2)vq?ڰp招W ?+a & f:03K8Ӕz=YN07<KoAC+==z:ȧ3<_O(3Dm]6@~_ iB@ n!$ 3¢."HxO| SqY\A''-HKrL2.Oҧ:G΢s m:W~C=_Rn.f1I9DByE~ IQ| uHNqYH48&EMGd>/|lĬXg);F_a5w[C1?O RcҴl =h[9G̊r .kq6O|@t%x܎y*'Œ^?3/\5X6-3쳎y&]oh\  DƸP ATг$"鐝6}y߮wDcTFZa|_A޿5$3,hD !OjA0& b R^=K/t↸'DI1_  XuFl_%s!I8 2(NBDň&%KR ~OD.*BLx`S[T'bn9LO40;[)Lc7WAi6@s 67=c{ʭx̧Gt}ԾOsb)83R@+R'K7Ig I wzq]ڑd4*=P:5NɅr\ Q\C}+O:N3r @Ћ '!yKr\&M{ez~AdLLvRb:_Թܔziz= g|n6g5lw9K t5ճCUbiP׸nM#it.3q^Kea5AR, b#}6ߖoZs)w;\>Wtq+m?˕_r33,q]L?깦Fa˵sV$G[=P]15LdY6LsweZ\.~?&`<0ȷ=SZGym9ś׷5oc懚b45?\kZVso!" NCaD?(8 QF(8Q! E1DgQp>?A\(QDu@\(Q_D܄(fD-n›ħ"?zЌ/C=1[YjoC&ѽEt/` F~{T;@w~¹&ؑoj~1ibҏ &DLI~1ii4ۣ dRx02^4;Hw"߅47o Ϳ io!߃4[HFR*~;IQ?E ~)?F#@Tć%A@$ QC3l(@3>f6B$%QDI|r?+58}# yZ݄5^Uq{:y{.l h➡[[3+Ro%f%sH^U1 9Z3Y- {V-jd̼>"OY-}1kхŴvb|abN\z-f b-U%>۾̌n3&+l Hu\"Wgc}@4grƊS}<]g2d0|]r)vk _.%jy;--δΜ-89`aMa_8e 2Ff$5ڲE<{i)%S},^y2IױESj՚b% LC/-w>l1e d'ыyAΑy۵m;oYB{Nhf,2<-%֖h\K[rZvZrI"s5bo28yݿ%qi7 {Q%ݸd1p2y5anfrNIjSΦwZ2 ϹE}yacM~˚С϶ ]% YVIte%d@p .d MJ3iͺ]:4[}3eѲ/HѪ'F@3R"aoecI[ҥޖܫ]# i\jf[6Wyw+̼< }J5/=j[={3&벮3McRmqbeP_O?'hyVc*i˱؀mctTH_Ρ@FT>`>лs)>gRLLeee:ΡCt'Jzmh=}>ix;L1&y2 Q e0atUhFu,j RReJk)0k_/Sk86#.7䒐ܜW񥗖+l2fFq抭=,2g >Y)6SB6- @M/۸#~e @ݹ׏kIszd,D4-/%bƪhɖtQ֧[aC-.'gYX1MLyb#+zZKhR &/3b#<ͻXf ?#V1Kal]qQ,LfFqɐ&k{I-0`SGY^K:V_cG(;Nw^?-,1۽wj쒽w[/{mA\5%:@bM}(.cL[U 2w=dLKv=B7v9wq$ȷj.ynq Os·FZ%[>˸y*p:j F<.dͅjW@ pײ%[vc˄0*,XO wg’5V"RL´>,a˺L/l$tRʒr/D'KVd::{RDf$]vh5" f֒09L҃k./RRJ꒔Ry3he`DJ%3xUG]}a:`^|%=WVf.ʞ|0mbkخ4<B ?dFIgc,2oQ. KQCaaYx abb\^e !0aPa;Ie^ԔOsޫsdחC턩Sf=I{zG{o/-_onmt)nW^ s^\>e 7ڷ/Cߧ^K!V}zm%_ Mrjb VO#V#3l>TyKQЇM{[ˮ_inho_f'-IvY{CτFV+ X1 g}9;߾zǍuÓz6_x>{ipo6m74MpIrpW{а״}װnknip|Ӄx#"q|/&|Z1\,<9g)jPV)֋N^jdW.2>w_]V/~8QiZ+j/s֋._i: ŅC=нlh.< =m6cʐtT?I`=|c]iPV-%0Aګ}* 2V-jxN1ϚDs)2<<5GVZbO6b-&, HB*3i8^u+}UטO5M5էm~[Qب=U4|ea#ܴ|eT+W֮4=7 6mTQ zז<բ Ko>hk(^jdB%u%4D:}5!A9\Zl. 5_mnhB::f4=2re nB#5%hxpDI*/fwL͇A{quA -Y@KѠ%Y& ]N^y\k>"OZھyh*{{*Nixj0kQö/ZiyhCfKsMy4dm5h. ICfnsK 66^Y7m BUJ^;,cg11Xq8^zv, tl+2s`\alwu `t8ga'4jE>jz (``II80b.F 0N3Nc$<3pu̅11~"6=؛Q1WK3GƘx,111Fx4,zlnQ:[E-ReP#R3঩y&yj7sfOdyQmoRF h1Nj]dQynڹ}(h(A3^T*kub,u5la'7(JP W&f)nXNh4KUJDapaG`쾰QtBb;7# j+5Q=fjacL8ťƩjZV[޶u1t%Pձ(J :tE4scҳfluyGsK7mq>\tM7(JU65&1a(AWmn ԰}6JF:L3}]h,utm[P3ΌuӍ=m{j6侮%l<`N,6Z,qzfc faFa9\{u+Jh+Ԍkia8ԷBRd1!}5lҲ>d-W2Ұ Nxj'?Ž~>Pi,NT"KNl$ -QD'= 5Xz-WYVvJj{ IZ4RPacf3Ւ37h-i 1ͺqd65.!乱sf酣SE n(e]~j|RJ 8}N[_ׅ"ULKMRT][615D@eonQCp~a{e`TdlX}a5 蜾z?cÿE3 0>`E /;2# X#~D(GػWXlď#~A_G57}.'?#6oG]a ;;A,9¾fcI%(sKf1ǰww1s90'\ROO1s\gci s3){c|?0d10s LĢ"YY~8eϳ>e&g}ELK=LJa`+gY>rY Ldeby,!KiYbӱXYuu;X>KRb,E`N4, VҲ)njVV; wquYrWf|@R%kFa7K>eȞ=juO8-Aγ52Ln͙]͘I{KDQ+9U3kA}QIpDn]B nZgvkٝN}Im޶+VPl9+ht%O,鶨ejE]s>m| 8A(X^{:89y<_`Rh&d~nx4Y0*-,M~`[9 f躝ٕոԉYB_CE7]~_ڞtgKrRLSrSւ{V#HLwLӲ#{YЉ( tVz XX06?oBP =H5{[vf[+mr.p50 |<\]Yv ~'@3Oʖʪ VѶf>Sd>S9@%Liy("*Hʖ [+!V3G"r.,e)U Q?8=Yyx2L'e,#d7l$i6>M.KV2\Kb 6ny,(V b@ E*rN "2zaY'ɊHEo.ʍ'=>Z" xdgzKoB>d4M񌛄P!ٗ;ye:Q(dKU/[IqM3ʍ&嚬5CZƟ.,s 0^ۚK MEn5zb ;t<Ͻ ϑKq|i>I}Jo! wػcz5Ѫ];F6YGNkyb?e@ZH3hPRm2e[bAHrܬ28n-OVYrM1lM0VwsD~!J N@ݞMA=2R7˪e': ސQj :eDxjZm AALX4[(=+8_OE+eJ2O<iP{r{IyhжH[be[^1](SLE!XEI)b*'h++L"3ʹle\^4їgPu"YMO³-~:&f OzmUE=QXnU $+NJڕgEۢѤَל I|yKQVػ }8ydΌUD6*V+u5=xʧr=ekFK;;|+ѮqYp6-)xi-Nd.5i wKGxqa %f.GKF* 1Utqdu\lO}pldJ? .Muh]ltqnMۭ%Ṟ" daHwKw\%U<<ٵ_46 Ϛ)M]NYo7:em$* eu;tt ev`|x*7)e3u쁫E. ʳ[kHW"WkP;"dtneE"i=ˍ\eqt@qOAjpQKsɷ攃MG]HHptĭwRGK"|QpƔSCt|̡uc77Qwp.eaQi&]w3f\9Vעk.m1Պ;bSMOXz,umT>`Y1dSC5b{k̰c޵K V׊jŚ38<5@s&?s/V<9Ys5ڽnېPUNy|ggztq"7dl8k1TS<,^v>'Tyn&.3 uy~j,W}4og2d^r&uo'q)%let,n\a3Y2*v [Yu^sސrx -wo*OÈҨ4j}9Gλ+ZtۙJh5))"c5N}$g;LlSl~Neisfa#瑋pD2DCgcnulٕZ;XkSBOW~}듷_}}Ko\c?D)LeT$UUƗ,±Jl8=v6cnn'{n* 5EB9$Fuы&h1g!=}HG5^5yc/}~y_zRė[t ~kI$>|Cn PA'(%ZB>!OP h}OCh}OУ '|>O0 'B>Z`Db>O(}ZL!>(,;fHH5{sW6.oGc~xD\$~+G~ ?οԞ_9E"G={UKȏx6=$7 OmT/4y~TR]_ y+Eq˽D_ݙN zH#9o-y^I_έvmT_UgУб2[9V [Yb+PleVA(r.APle-C( [9V.@ (I[V>b+Ql"[V.AKQlQl3(r|V.G?BM(r%D](V$}ko-_ mWv>B2-:&DB-$&ƫJ}9xE@CQ8c1 {c(_4( 4W} v' 3#, <6"bUf!r7(^|Ïk/X{?\!s"<7(Wx7 (̠W3 Jipz h.0h&+^(?KĸBru8 hǷ0GƱv/_Ѝ^cIF4-A~12[u+8\A0jDգ[IKHbhp8x?&ǎ.]^>J9{ۀa#@t[#BЂVX}!F=a*0W pat|a=#xN![~]t#~3sOWWWW>tLxBڰYօ rFȧl-WўNFc3چz]]p42n>m2RNhƈOJؘ~f+VǢyZި%KR6B)&pn؊֞z 2N!+48HZR~| Ҟ>ت_<'45QzԢ c{pAc-&Ϟk՗C%jqvHi ߀KhȗBf%QFD2;[<๢kHNso 6Ov(Pr\9W 0 ȥa+0?\<)GaV=4X_ }MEx'|w u,,ӆ7ٺ_N' 88)0ٰ' gsʤ^Y}; / Sy-Ծ>YþP[`' ̇+<'U;53cmC*V9 ?)xC<+dfphx;8wǣ ȃ(?iۊYa6.BL7{I nQOsdbɑ zМi!3j(5ۻxA}v21ʜ3R92JQ3CzE/:Fx ="lSŸ/tM%qq1D=VOʇ^zooX8oa<aD7O~W$x &.O(Vl^{^}'d>q/=4q>F0s3=EPMI's7PK{k?ayD~OHD#8k#a>6yu7ov#2 xYA|\ɾ  /l xX vG<8\-ގhBq_`+g5_< _kFc19MېGrF^k? p>њ#D,42""_ gq5_| <}opօt;mx \փCXIQhmѬG ! ES9T87Pf9j h7YǬtYs 7C+5|y'׈0G%.xN3{\V!XьgUވ9*m\0H'}/rx ?A3 9IUOpܻ9 qE;?u 3;"Z+ OY1-i?HO6Lbn4fȯE%PC!>} yM,%m+lAy-pg 8MSN 5'bw1O;f)/jP{GPρ{qӻ@ + =ۯrl{9SrARIiyL=^h"Y7o],o2_ywS< cKE|a!Ksp\A;!|TMlxq"SsQ(4x'|4ҙߑ @mA/|Pc~^}=K1U-I5N|L d"d#2YkdBPߩ4!>R$lR"hRr\dD=)~~U-%FHoBq _o`~6i%~3UeZ2^n2}bx'S oU(~$9{nBS S{t;bjompwwx~3TזɎVً#5di<.xt"+h*JphAsua{j> p1<}hW8<~>Az+u{kÒDqg_|p ˠfr٫%w 7C3|kؑc9kJDͅ|Npdzɗ kTf^G_ @Natr\}|rx/N"? ڦg=w87AAj8Kpc!q/DCm;x6'ʸhI~*#~fh>Ɍ(G֖7(eR*4VOKXQ2sFDUW\A/ѕ'(ΠlΡV :O zq}/EQtEAu4M4hmmҞgh&ÿ%/\ma 82RԿd3&'fp0% ȫ{;EUf*YOp[K>_jNx&A6FzFI6+w6zEUgџ\Zms?\|s~VZ5(\*G?QOK!Vj P7`KEiI e@e];K$5B_Ζx˷fQtFVH?w #ђed[JYo<|Ko sn`GY4yDJ Dyܵ2vu %ÏNz{c#dWHj v1<1^[sX֋:ז ֡VvV?N9މ$' t:E4#gYo#QRSZxfq>ƛ"Sx=HOaMߊE!3dg]ؕ19"aBfuG:G#tu3{EG|9 v|lr%\ n2$]|#F2_E.)J|;^dpg XTi+sWWc]b., hN<̓Yq\^{VQsE/\֌#Utֻ \% ;Ob{ĊjB%ɟq;?GK;_Zn)K͝-xU#E҇GbWidPJ5wre6υN%(_:Wq}OsLs1MaK GS팠dGz~m/Wry#qrwl1m U5_rM 3FmTC]2p],][Z>QX,Nܱl R̓(MWK09aF0_|43O2/&3R|ta_ITW=NօG|TץjB,aI.r)rXRR}b3p1vI2?gxa LlIy H<܊t{'D/}'r#i.G:PB'О@tl7ё܈>dOU3 kR"r}:T,,!phs6#D Od4UF1Г+u 9fF#ϰ1]c" %m5#?U ~u-Dg!!vNP}<-lJ,g<}iBj+92<KY99#}!J92N~+=Ӏ7TKɮ-سCX5:C$˱CFYVATÕK)8f͊T{Fh9D g!3{m|?` 8;OWQLUBE4XA,*b=֌;IEVfۺW3aN_N\yztʟ)SL3z>-zXK] ɁWBr#~KNb%AT1Kap "%!Z8CeZa6%g}!5O1o`~cc\J4/%8zñbd'e!p%K>釼zX5,ѵ(y\Ԅ2ScK&{٪+iF4r- Hr= #Bs΃ ![+=Lh<&{O/-B6ڍrŲ;TW-B eK`F2?ަFU6akBT7+̼*L)a鄳LCn^W"7aW8~P);P1M?pAOEsA,6V;KMFoG۰@atN/@3·c7Dt_kc~$[h%@{km+l=o%Ѱ'c]PjoV4~8;R07g5h{'? WCOnDw Vy2fր{FO6?2"y!#F9ώ܎WUoU,cV@+ث,A+ߴ5kM1Y;䣴O3k01 kmj3o٫f᷌g8֍l-bP N2^x;Kptͷ{ {>i%sd3R~(w?S^Mq˺꒬%~;!h7SÕ`]rDsJ=r}<)C;;s\ku`єo[a:K$׎>f6HXߤ^( ПPWr)-t;0{|6 _M>5Ta X f `O8|bʤcB>\7-S͝p߂O7%p,2+q0`eX֝%'f5l;ÞY%Cp џ 9p>\ +fqIV|x3n[fO6!y> ;ny3w+xH:Xr&MJ V]d+ ap< gR=wt-\{V6<P=Q?p92'^irqTee&JV]%m qf* .v'?[sog?. );o15VͬX{WUS?D:%oo⽧ƻgĶ.{YhSv8;.A}~lwUp] vĭvwnwm}O?Oro]]9*mFɆ&G.9)v}}ђ,#iYd[ϙ_/~>CJq몶LCGݻ\ʯ)ښcmm~ۊ}~hUw~U=Ttjm}.)zbi9 RB#_w] g<9E?7grK86ޚdVi=Sb/Y^l_b-:6†"Eoqrϭ_tZ=^tbV4ǢUsbK\Q?L~7:D? .$2{ˆyBLXae.3ˤKͲ;g}Ԗ3i3k22&$B7j/{~=o^R?d^ݛ~yn-In3>[뮐{qyG;c/@yxRl#<??]O"3wG˯lje6wMf33[EɭْdK>-Pd8M-v-9ǻ8 ?͖l-.Zs"^=$ۢՓ*o!6cMGJ#lhLgg3_S2ԈiE6_ڌ`55W߶e2JbGcXF,,Q(eT2*bcc㰌asmE Q}T>j`5Z GmQ88 }>`'c FGc h}4>Z`-V)Gk 88 8h}>>:`NGgƵ ڕqƸvg\{0B~'lI[#+U,5feܲl6㽡˸,7;ߕ7t |f>7W`sn=&[nh7V[x+:ފv+oE[hwV;ڹf:]d^v]\Wzݮm^sg37 5tWg^Tl^t/ڌ{۽ms'qأWsЖ%khy-%o]ku͖r5[^޺f+[lEel+ElEK$\fa)dlwپN6Of;y'(dlvp3ް o7Vx wpyc!olg6;RfG96;ZfXyc͓7q6;^RiߴJ~tޓL7ݐOܰ=7< HYww̼|7* Ѝ_e.\e/uuU{ƈ1b 17"\FDDDDD#DdDD ~@?@zKϨC$6ՠ*9wq;<ȃx |. '/%| ğd?U|e7|3 ?_;si~?_ I/n:㧴Z7D5ZVhRm6^M/3ޤ_0ޤWo0ޤWo/ok3%ssͰPyY@w1?1=i e v:H DRgb3U3ԙԙԙf3-RgڤtH:/u]X꺨u1R%KI]#u]Z򱌡@@Cˁ -K~x@C; ttY$!G ߐ#p!GZC@!GzC@!G!G!Gؐ#Ɛ#֐#ΐ#ސ#ɐ#PfH;CH5 V͐p!);ҐÐӐp!)!)vC.@oC.\*C.@C.@?C.C.`C.C.PC.pC.HC.\ц\1\\{ Ն\ rfr6@i: Gt;:Gg輘]J?5Z}'@I"^^ba|EYcҏcA$yՐm6Y3y}>"K$+)v."/5<ʣd-$#7M+<瑭A*އ~5>";>GѤc^!]n^ e6Y(W S7 XC'»vtHXrF9~ɩr.ç=\M1n| =Dy KHBP,`( & -4 Rl`}8&9p [[uMXr&Uoֶxjx8)M2ެMo""noޒfmhVmox7keE{W[DU;(M2ެov$֊p&FF\9 ­e"QYd>"s,'YDg4gYDNd<,"_d2,"g"U"M YDEDx0"WDDoDYD.e6,"e#zdt\NMJ=":GDg]GDzDt[="Q"rQ"rŘ)j [~"SGD#уYDBYDYD"YDYDYDYDsEOe"""EAFYDg*H,"M]"z@"3f7",H,"Wg"rMk"r],"g!H,""rc6YDfiE$;Wg)"!L,2ID $"EbcLvg& _K[x~ qdFdGF4 xģ]x4qx<O^< OST4}([W?ߨBjE(^"P8Gҁȉ\B;_NTTѧSo@p\wWw^M4,,^r^=~=_m<C@樕'k,GϮ!ܬ!ZB>O(X(#+DԈ32`/dS_ȦBDWSx.~ Ï ?E)T>!t2~YH!q\qgp<ă`<~i܍b-n+z]KDXR w߄o&\+.T1Ɖ^,.wu+DJķ^v߁p_6ƛD_5iۋ;`!'er\.j;ڻ⮢b6jo#jo/j/wEvh{E*u}"øn\2%/+${T!bȄ(A֢P rAZ ڡ: zaaaF?Ĺil(JcxlUϔRN|J9#s8|\P\T\RU.+)W)"5QEP-U0-N5S3P+Q;uP'uQ7P/Q? qI94M346 i#ژ^EЦ46Ղ]C 赴ihkz#-mh[ڎvi'ZFofZA; וvVZI{О6ڋN{;hC~?@tI藍]t4Cq4HC4L#tLСt=J?'8_SKzZD=~֩'Փ)zF=~SVϫߨԿyČ0Se*c3,lü,,,rY֐5bU kήfװv-kczVn`-Yk֎u`YY̺ug'bVooż oޞ#M+xgޅw-;W ^ړ{yo~Oy_O v:?ʇႡwQ.>Lu=|"O>OߛdVԬY3fnװ* L0 _j5x';xNm-k[ږJ#A&׶r_U)+r%`}լfiZ\ϺNXMֿϠr=aagA _t#IRg.k*>]ycVquQD@h0Ŭ"a~R A7$J%R+io7]mC頱&OdhjQɞd7 8|>+z2w+دFWZV:u:QW T} 7ԏPv߀z|ʴ2~V+h\#@Yηٔ !Ya2 <8 p!\p ~}ߏ Mix\ b+Nr\ Az,~&𳵚k 4G4x7'PHRxFVJӋ@S-T xնW;Xu .) @#CB S mM\'<"Ѫ)$ZuPlm3˶9d\GVvd;jgVMdkֶ tVd tg߸8*[^ߗ ?gbcWc÷|4|f'T@hf*}XVz^6zYueJP <[AKZ r"(, T O#xZC% tsGا1I#= ^shSQwA@gY6~j_XEr,*~6-~ MҐ 6-*Qu\50X)-m!,:*$Y2 X5@LưFoE1r&;>/G;f  Q+Tnmhi j', D݄m1WW΢&UQL媦 Ԇj#zDm扞U@u:X]~^VS3 (8K$Kf}Y?֟ ` 6 aCX6gw 6&A6=fl߱E)=͖ggfWa#s3(=LJJcN3Qj~IKTlJ5yg)'ɌiS9׉t%Iq@2LȰ+C!(+#d:P}9`|_87_mBQv,9H/& 'IҔ䁠b#WLSqQ< GI*IV2JdJUV  XJj"w))|erVXe2 ({=BrGPG#ϟe%]:|+:7nUϹU^Tj7k7rONOWTA2!FK)QnŠ| _v=p<C?şdYNVdYM֐dH9N %9C"Er$LI19Mn7MaS7%M9*SSSsSTh*24ݨ!iNk &fL_g%~r`,y`:mc;ndGY;α 'sO\ބBJ#"Not V3^0j>|_7-|{~'D4)94RZC-O+ЊbT+׺i=*m6\MЦhӵY\mX[Vk봍6mGۯҎju)vQ6ݣ􄞫7B^]J_j}>G/k*}AߢkBzi~I0Ep.gS#Gxx^ ^/=U )YuMS /I yDQ8Q(OtKLT%'F%&$%f&&&jk[;ÉcӉKI y=Hd*0,H%Ɋde*989*9!9-939'9?(Y\\\ܐܒܑMMHNKHNO^N\@*JZZڦ:*RSR}SS#ScSSR3RSR SKRR+SkRSRSR{RSRGSuS9$GqrR9si6cNEN^9}sΙS3+g^΢9+rV٘-gg}9s9s1 jږ#Ta:/].JK)9Etmzo@pXDt|A|2zƑe"Ta&/S)gJ3n̶̬̺̄̔̂̊̾̑I/e"2)Z>h1PɆp ,[yTGͦa и<\lG"d.Keiz6e wʰV{dhky,*.[b%eCW^;dY2;nQGxd ^y>YOɜ>YOud]>5]yW@C2=$C2=i0‡00*bDI"0TQPX JiboDQAD+*c1<*Ƭڛ[=ss3Bo `Mr+j`=FcT>F~ k_ )DB\yb`%xXl%[[jA Y `%6[o5jBojF5GF` Uz`wb8/߼&hZ{XOsC-#Ē#?^^^]l |V+P$pB+<*<*P*UE2*w8-v@?$#2Oqn%Т:Ƙe,_o✯V;߂4m8ˏ@l^iclAΤl^q8A? V$#d#"X#m89q m+vuM`>\%m#ہׁģ[5:ۀW@2NG0fYce0|R$Ts21؆ P "L¶{hA##lۆzjF.%Zul  U @ւY.d}ᙉˆy/Jղ܌:VpA9TBr 9A3&d+W q? }&-YFKa6*5EZ3"+×2j1eA#PUJ ԩ'Sgu[ @&dMV&CchYZ6E2ZEDeuzᑴ5lzceW}jY6 G:0d A6U-MP1ifs<۲m%m?+p52w %5FTbKa$yKndj˃e+IT͂䌃rLș gA΅ y)v!Áv,g'WkzYH lThRIEbz%-*rI yWԝb} RZu_L]k@6`E*YH/#2JVJ%sm= &,U,AnVFO6zȼ^ rs1yK.咋\qpBad>C.\@+t"6/Do!b,e#&B{`'AԺQDH.͐R] ܅~y6_JAT$9hTh n''J AցYdCȆUY6Fee,7S2W'-'-W n+V${C20k%6/ǁ Pa+'F0#*|Vโd4yҀ a<$du[-EŬ%Y`fzte*Mt1ZED6RYGh XhH2&q Őh#4T\&)3zCc<͘ Ēggcj`!Xˁ|taߦ3ضE-m6mh[N[ƻaX,fˀ@X{Ea"aD/XKf(3 Et":CPDghZc֘5fhZc֘5X%[%[%[%Y--ƒ-<ƒ-bz(ˁ| "A HE~$# HX_?c}U X syh\ ]C۵-mmKiiC<0-nn`n`~n{{s((c=Xfn 9kk,`)pp=0$^^^^E~M`>^Xqoogoxgox/b/R:zF&f`0H/I_ R¿/)KM oRxb44444444444d'?O~2𓁟 d'?0[f+o*\erQ2UFЉDu":qȸNd\'2B1P!sPPp؇>s8FcT8F8Ɔӱ@73333333)Z`10 X \$<";#;#;#;onbbFp<s\"X /ш   XA88[ \\ 80xKxKxKxKxKxKZ'=J{@(QݣG t`GأQ({= 5jҶ%ͦmmiQcB` ,KVӶE-m6mh[N[6j*"j*"j*"j*;7{^MBѶٴ-m9m٨yyyy:EԲYDV9C?>$Z6`z˨| QQ%'9dSF O_ϣ<1w"g@"QѫNe& _pmݶn)p/|%ޏfooqory<ca$</΋E3 ZmM/]·]/KKKEˎ|o% z1sK׮3W.EݮJ]D\_Gv2W_\ _5+=+.cq g?}3RJNSƜ;8Z1?͹H*E)g/MeQ,,ʇo.UڠY{8|Kaz2%b򊶩S_rs4YoqbEyj|G/S+&;_X'2Dcf `nّ&1 \8\yl7⧣ ^-Ir' JBSߪye{MF0T{m"Ȩ谐Xs@sGgsȘXs({GS1k۵'2?6,rcwkk>tVlhdtXlTOU,8&::1/0Jdq<֊q"͛-$/&DŽehՈR-$9C_wg~/ 2 x5>TU\U0z%^2˩wݞ.zoslgD\[ϙON 8Q^z_`9(pEzlPSߣ糒fZ ?i~H#{͍k:`zqa5|ÞnZ$w$,JxVd cY*XkҡG.{ViSi^@y1;|֊&KN0W5xli'*Nx܏}$X֌ vsdFGfrkӮ2-.8XYNrrB>_TF\AR8)7QcQO¢,4_o#e.<5׆ Gm.@Ng Q tMZgs|肱<+nuy~ᓌHغcȯ[&;QY?px%^lsiͯ}k&Fك8x9jbլ mm=y!f[FKk^~O/iڽak9ZrlrVMY/PЖġӂ7:39/O_wǍ9QWۯln{+8-Q1˅'J^+IV)~nM[,2Q=8߉oK;uƭnѳ՘3fs3_* g§#9ǜ4NNN!XH^JKqnH&u>c}0?={j+5.^[=Տ׵]ai0ENyҦrgFyE-}ZubV_X{ոD=J-o&-W?ZyV;n-6szRќV– l(W{Ƀ]F('/u5oۭ|o[]zI/&8y< _ҫyB a7Gӹoϳnr{9z<޳-۳ܕqQn#jq=I/|||[Uv73MuOua)D70熉@_-o{b`&p8IFwpa#;DM #ZH٬w_&x\`߇b^u%Aџx d`MĭG/LWY<9=Zn:']\czExic͹_):6om7볧=zZ{fÉ5Uvi31:gpm[ij_P>[ūsoޞ;žW͜iK晭Zfrzn>S7v+˧p^Į٤BNUܕ[ZuMizJД~2Y&o!N_{oz,r!{nzwwtB~xҏ<G3js訪7늻g-s,bOp|ZN=ͤsB>?ZűQܻ39z\C3>lzPLZ;u 7[u9w|AK#WY͔]7S ^?uhYæs;¢ [dѾ[i+#q89D=eG|i 9g-Rhrvü=O;9AoXu~Sf57uQ;3\8(#h>SN/S깬!Ec̮=+"XI"ɳc˞S`R97BجN9=rБ۫'˟ MWyK\]cߥR_bc[*b|XwktZ>s}/ɥM|$C -gKgvޮ:)y߮s ٠/\RůzY$XQ(>(HgJ!̲-?Y;\θo=ykKQJNV\tw爇[% vZϛ_d1-);1Zi^~~;H,4vN}HĞ%ʯOڛ!ʾnWb8^\N2fC7J9~7}3HϮK bSDHt3qʨaS{mHg=zT%vCx{xwux`PJ߉-A:!+upUxѪeq#pdmʻ;.zlaSf~'ae8ɠ|lEA]XxMiΎ+ 7.x> stream x}M0  6"$RPӞ=pR!yRǞwf fԃmy8Mk{K+\7T BpoNm\[]> stream x{|SG̽%X%ɶd ˀ L1%XBq(."`cB!4Bd7^H@LH! 7mMd] ;s?1$?۷=g)wc8c̍M.75}`RV.]MǴ2s>HW~ǘi˘?=5cjn\`؂pꍫw10xge7 m]˜sō Z1OaY[԰pV}K2v1\xی0Qd٬%w*'[+tg̰%E=^;Xű "F bX;M۾?vl[!.I7FXll@avf1UQr(1tbYaFTE!S:/c*}>;4J-Lݫ/cD˒ݯ+f ?Yv5~vb%v¦Wt֗Vw+3h{RƼ2T+dSmO{fN~,ӐN=C?clݝNl/mȮSgS[guNYʲ~o& t*Do ~=_:'sOՏibuߏRpjϬ~/ NW`҇e{+ T7L}돟z2djuԝSwI $߼Vz~EϮofWvwQö9tj"v'o9+?t|+0]uB:;Bvx+ v~O  $-y$\jnsI}1k1EL}rY i /i=GrM(=K(h Y% M%ŞƊ1Ea֗o3ג{V;Yci75L hԬ47_v{ý|gs%?:+~_7 >t!jɲÄ.v R3 #b,Ld›ʫ)c3=˩ +,qD&Yټޟ!UI}gܤ𦙾>j~f\ p"_7Éy" ƂUVaȈ*1j=mJuA7rٌYcB6)l"!%EݖYW3F,.G,Gp%6gP #L '5OaBU3.}U/zd`Mjñ9YQo@=c›8XZ5dkʸp,zZ1ѨPk pMim:l;4hkKuXUVŃ,nVCA2X0F?}5Vb^jeD]`'ZȄ[jj EW,I}.Va3FhDEXs!*>.)oeYĠ ([5`fXQhj[w5n]R\x9<0YMɆԜ>ƓVlt+[HkUC'ŹR#&)6JARbk8[R%*)VJBR,bX$B)H1_3'\)H1[YR4I(L)bӥbSFj)ΐb!)Br)&K1IRLt)ʤ/8)J1FR)J(HR"(E#8MR bC(b$@) E)I'E_)H+E%EO)H%E)RdJ!O RI*G)H"Q)RpJ/C 6)⤰Ja,IX)RB/N U E . !EmR R;).ߤVoZR/8*RR|&şT?JK)>C)>})ޓR+;RNxK7xCץIH/I/HIHOI)JOHxLGxD/CR쓢UR<()vKK-R))~)KqJqwKqwJqKqJM[YQ^뤸VkZR+r).R)JqK,ERlB)6Kq屇c.=\{t\7Q/'Q6Q(+QA>3 Gxҩ]Q*((9b%EA PE$j`'(Jdfi"c,@C5TSGFH!D,ah5zlMw| || W(0쇀/ iz?>|ۇ=]w޷o߰.n x 5 2_BA? LyާsD'@Xz,,>dY{a؃([hN5{7x4 mno3}3M7uZخ~vB&z/3M^jj{nj|{/:gІCܼ޳l׿>cZZZ}MY =lf #B VVX~o_ɋW~+VWVeۗز6- / /p–qSkǁ]p&0 f& 4 `:PL@ P LB@P Td`0qX` P @0B`$p0 `00@?  r7 d L ^ HR$I@"`l@`,001ЍU5qx;|  8 | | # 1#C}=;77ׁ////OOOOǀGGC> <v~`;pp/pp7pp'pp;pp+   5+r2R`+p p1 \l.6Q8?Xcsϱ9?Xcsϱ9?{p{p{p{p{p{p{p{pϱ9>Xkcs}ϱ9>O?=4c:ckoOfgl>Vv{fc]^fg[Cj?[YԽ,98q.UrrN︥q$ۑ+:1̤*o8+E^ڦpsOA9eS4VYOg BH-B\g#'Dk-fKel[Vzy4'ʖj,|Vk}_ֱYeJhOv$OB]:U3]|)'.WטWZ̋؍'Y׳-3*Xnє(}=l'{Pe#Fqp be: ߚ.-VE(j ="q9| }#]5*?gKdnrBlGjvV୸ u4[4~sgmZvvnMI&]w{c]¬E.OAj+)=ib1Ce<<cQAF'ؓȋZ{=9<{~K^a߲Ug\+OXŘ!F6=vkETf`C6M}YO`=bcãx+̇Àq^ޔBA1[UǸVgwa+m﷽yy{C?z#á f_ePv`p~ʠf2R.i" 5Gw٢l]?e؃mfŜuڿJlC+<\ۡ<#-h^!sNP+N r |NWy\긷`Rq;{JW6H{дm)#*'O3cë|is*Fv{uf{sL[5 4bN^>a#C*g Gu}:V]lxN4*9ѨD(~ǎcIu6)FkOsTMsLw:cK6?n#G1t@1.,g^vV00;qtgg<v&[~1sX &%IΘhlRX+@frFԉ)a2.rѻڏh?n*3p}woP{vݼ=1r3uOiƠuSW<IgZb:g}ep+OFٯ=gG3ݟ8It& 2h5[.zVnL'H=x~f=b77:<*ͦQQQQQ{5.39ܕY,6)chwGȷtWcvDπk:htR2]FZY:SXvzm4X z=.4Ԏ#z+dRSmIb&$$E(x$=}l5]ɶJEo Ziwfм xZj-ySjvP8uu;7h\NX̓8,]C׿NZg,ϫߪ’5vP. af6S=|sgtӝiNco`b88-a4Δ@ZfW^,ܐIC7<ֺ?[!DCdNKtX!&0E"f}ȂnXNq;,r(h,w^ A -'r5^aN .suukaR7HJm323\Fe6R}L9QԺwj;H]_s{ '%LTY4,B !ECžh80+4wfF#gxw;#1hPqQdz?a8>!-_Ixw.,.on1yΝGIj!}3 eLfg,/a8p}G7 *_'lf_,~bv aFuuuu$&ŝ]a{*yy+E<?1;+yBw+M08y6b))>^_rRVc7)ݹU+N5%gUS}Mκκκκκ` w+ωxދuyu.=v0Wh[f:R3?&o~䒑_ļbO$%Nd1G{ .7'%Z,6Qz>L1|qﲪ\qV!'&&'f8J{jv.>cHNCo y_s`2:kuzpzWzds3ݓ74vl ƶ([5>*ӥ3ԷI6qAvP2@T S_[.Y 'G E kßx.JNIs}RE1:IIxcnJEZ7 ?@&'c\(3{n},ɖe;xcDZ8CH,$!@R@% e:-Ciu^x+efhcwνW8֋Օ}}w\.j-O'B)Y~3!k: w<>.+]V$+R(+V\ULM>5`7C^ӄ4էA |p}/BpoKȲX% ~ACso;t~o߉^u _8~u֯݋k^{d?@XzƟB`I캣ZMLL&B#x/˙`؋ؠc|c4m4j@ l NTҋA'*u.`vpDd7]?B<L.R3RqOW8c^CPHY$,hhhp& x<7{ONNNNN[圶9M89?P y\Z%[RR~ 0UWhl4 Z2Y 8 {M_]u s_?#"ڕ bw^G@5y S4B=ize[upHjڷ")"JA#Y3^))ɌGܞ ]2e͉f &P|H)]ZB@vc 4ֈtײ=Plv-ڳ8^ȧֽ]ywkCcc~zzhPy=[G۬TE$.ۗ@=0} uw~8ˁnMDݚ5ݭ4^/rh9H.3w(9=_qp7w̭9U=d6e^qlU60 謕oɝvSɥvۚKpG<5sg00ǭ_ &.hbs9.!YZ0ɍoqxS&F:D m-K;/mWos9~W`BuISƦeGnZf~;D#=aaaeqGsnF,oBarȈHj%'^# XPΏS+* #O7~FC Wߨ*&E5=0]` ;"{7AYmYqN!SWk4̮MخMخMخMخM!Vj87i~05"blK n>ثQWt_iѾ" d\{]ןO+wJׯujNz+T"A-.t@B13wzp֌T9AnQNd]r:X? "/ I099LEH"HRsv;H3!ʫt@H$uf?":J9vB.cX`܃ ; UPNY+Qrd8$ 0h7Zz q_@ n3ZEDl4gOfRT35N7SB2،d۔c,eϙ:@;R1yT~Rqbj Ub]v|)^Y`ŠS?F)Ίa6n+)YeJDݴ0Nk j.RSKKXmv#u̙sR8aCHrXe#|OVp C^{z$:O1)~մp~0UC[A7TqX᭤+@3|yiŀ2,~/ nAGvF<@s| B+QHkdr]_]HR%G~6\lC~#|,[xŀ Ck"~ڴiӸNҏ<_,LwiB "d:c!l%'wWR& Z~9:l"C\B5]!̨AڎґD]~Kc{]{v޸йhAŸݶB PKqJ17zfhiTi@ <=J( P*T̪*n8pNBnWML:m:D3b5hp0ij 9%{tlux%w@faQ tjK7anmwNna|dDNVCc]G= Sx82y11Z9k{~`GN8D"y4GP/u^y_2hѵ*"ScƇ/k}dUj١q;)(OvVS&6ΨWwnh\!Etq0;ʽ^uIkJj),=+e[-;[Y@e 1X8G=Z VԅOOQ<)ܨUG"?|_&k$ IO7!,,EGQzjoTeSĊ`Zf+n(e#q]cRi'cˊ'iۿ!8qε]!E׭\6"k2:b o{斾=o=gumy!T ϭy-w[5w֔ɍ67EOO& 5op7 AP)JӇ52jdӲε8U*U#!iKmPstM㐫)V ]![q&o^ܺ-H-5_l炍l.2&ekc$C.M #-څ/ xsU{׮QyU>صN.aYZ ?\5Xuupj][9ɄЅě߂9]u3`Mk*ZeɧŸRS܆fP+}:'#ʩP9O%!T$0ܥDfRmķtsRC^TIWBΊ>ȺSwWEڈ<ӟ1*ٰ vϩbx43L5,7)9Ze/1fTyF :t6N 2-PDa)#B5Wb}{[ }WE@T@C[]ጧ(?Gc93xwQ3@Hʄi?WCCyU}r4 㱄d(X))Tl\Y&i-j3tX f}C2Kױ[,K f^0ʚ,\,B;c_MlF 7ώ*AZTJIRqsߧڒ^`":Y/C]fk K-_*w-˼iL_S5Օ:k}oY{}OYi#ٽ3|i.=h 2qm?cÅ9>+!LBo_>v'{D|+1`;, -]K-!3r\%*))5=)SZ`BaI6꜑RE58pW'_ OU!~u/Yڀb@ 瓲 $y㌙@Lb SjT5ߝ/kri`v܀jXld\&'zv( FCDA'+JӶ{žϺ{wc_CxtB~#Cn,݊r P6(p3-[QL[165$Ja7PF/W/0\:un9R,V[`#cM_Bi&%。kU 6rW:Clu]IݲCL4YcA?Ci=I 7 JEqr)ĝ&Umj?+•`ȝmђ3' ή;s#(ϝgɬW3}/͝V&94X#6?>7PZ˭?W$& a¡h{O%jBh;O(w5)Lˠ\u,R. sAPJaLsJOUp-(JDO^-LQKaL)v~'ԂB!1VKZ!sj 3Xo-d6uqD_@BebA]o,! :2PK)[''m y|R9,}Wֈ_p h,R]+:7M3vwri xs"X"86l$ƇӚZHkִ2$Ã^yioFug5i٫=r4qdF"{odTBr^Xu"xCEOGY[ ùJ 95Q6LŁ}@Le14(4(j|qI9rOOפפ(N)[$4ck:G\E/Kq#,A`F$j*5ooNѳu&#xmGVB?cU9l:Xr}_c]P:I  ]RO=6Ov_(T{9KnE U ΁B x3"!D A@ $ jDF D߄Z7U2ԥRhgͤRRS厪)eSi&DZx,iv%|B_%)^&yâ,A %$s)Tl%u1a8|OL&M:!8݇sNmJ~%Vtf@,bļ  $ @{tc#>@GՕ ;pv.%0(#9YrMhzP^G^[}4GB~Irb,*ZV?TAU9q_Ȫ >P LV (XksX(Bǚ29H8!M`usĔ,|=(I1 W" I}QfF cޛ΢:gs#}oDTI#obе>άE7x!;8$70á P0,'{B}՚^R"VMQz:[t3'=8~©*x$(ě>/Snѝ NљVp$ylɖHį}ohC?o}J~]au2J O]TuGpt4 ޽ MI!m-m_Ȗ+p6 ]gGvZY?Udks}1A^)]B\h;[Օ{w17fx(y0jèUJym(yۍUƠSov8g  %{ X_G| ?@X,]\8?{huŶSPvI8phD P\1=5  xૃű?G1i)/AxxoǕJ#U8put| fPR&#ՑAWd3}U/t,s1f`\Mf=+}k`[-?eY;T]՟ gvN]N`fpV3Qx?JlL!-x|'0h|5UdxXrcI m *A,y`;O..gԍH\/EAԳz oñhXq 8O?߄+w^Nv):lSކ$d,M;=c*T܁8B'/¡ZO?SwC?mJm !l~PЇw4҂T=e s5xK4- >&EbK5XXf\>da] %?qo; Ul/oc*EeϑM~nKPv٠*un`|[:߿Wv.I)]k ]mfA7[=Δ=_cA2u:۷޷|mm[[=wi}òKӍKw^G2Sz]_{Q3vŗ74u,|ݮ/-(5H'cf̊Ɠ>Na 5JA{wY.Q|4ڳyBzV7Wʑ@˙ _(gɫWtG˚&"elHC!$ZÙߋ(;tObٻd|Eg鷫yfo}uo5GK3o7ibe"”6܂ճj>[{AA7S8"-i0I>upH,IwGzV;}Òu:琼 $)(MlVԞ{ѫ:0 }^"IHX{P> >OD~ 64,Ȇ!WAO Rxl5y<f5T3h/܅cPQe)xL? mvZ_}&_O&'ԜhH]ȹEfNMR~)rBft;r!qXH˓{dEVŞZV/]⺢ ~7/%w-}woг̊,eֲ>[ mF̒_m醱}Aqڊ [`-p5sp9t4$Zˆ˔ ߒCK+UEtYD7< ۩?QHpS <*3O^OцFpCR럽O|Jg :ZD^:%N/vzjI6yV4Dfò#25lœ9Q+1爇\tVͭE5\P5ifӍ7]a\Ŝyk˃m--R}gawv|:ۮim_pek.S~v3g_᜼rGL.ܴpg\z'%5N]dt[ =^̎Te~iƔ3)2:fQ2JTy+U*_21o9r/}[^9wrVYm*&iVvMat^xfc'z"q|.|SOm(ހ>z Iov'*m[]o.. s1ޓ0xu.Lw,=o¢ r뭻ӽ|JӱnnfDOERw;°i+aHȐeJM2ҸJ2ѨiP-&&7վu'<)?gSwk6׬Jْ~fcDr?6cN\k6[-,zvH#4hO¥@JDnTr ]#=@eReR<ktVGcG-/=:>t9R}7zZ/5&?5ϟzМQ+3o_pJ4^s+-fo-_VWWs*`hI`Eak+f䁗bTkr6p.rU.mC Wm[n< ĘE+N.9 I )й5cZ9S9KU6 ^8>%LiL ;&≜fd}#i7V+_}@P.)׾A ~@e;W ?SeOeKH`xntMn<skHkcF>|c,#Cd>I<|uNǛ-Ŕꤴ('}Rc '݌Gx,w,/NV9Q!G#:Sf¹p-4cݯOXsYi.fT C>Z[F(J8wV۬ĬӿH!e6=kKjr|"%c|Y􊏜O5cΆrsƈ9Y}JvO .h 'O2םsopA9fz/WmKהde%fJM>3yEYmm柴U$ef$%e%'MLdd9\937.k8i$_tZR\ӆKxI0Y.[$*n7^%2#o(#žx+]_8A[ٍX%jl,v4$>E:M3ȣxx֫M)i?q_֚ؑW>.T(6V /R9>n쏾,&d)qB~V^AbGN %dK*$Ś93>S\USՕE)دq&61y'߆=G[~[2O3dZ/j9U8e;ޓtg)g$VdLOӁ_ˈ lZ)W J>͕"WWJ)U81s>Ql7fB:G7gF0ExsǼFG{ b-lwY<=dZb7W?])fc .ihMUIw-x *3繖V:?k''fg%k.ܲͻ׮aYSW\~Y=wJWn2C2>O;*J^Ur*s<M?^:|E睵Kr'Uo]q֪IsL>c=ery^x| JkW\:cNc׊yu9Ϋn,OsTe\&ZM,iZt"u}w FBҲ#63%fOӔ61-mbXaO3Y-fgk3B5ٕɿ"QKhł~5_MwפƙY'O<9߽(K/lKoINKIeq$k+,I9fXR%?y|.DL-SRa[M&+Kan>OH`l"5KI 1%3ka~|?x".1=5I(9u-DQnnQ~^:mJ^5cjaqMH̄ O p>j.48^%~-NX"iB;qh?̍,r ߞݱ9yIN1iގ~uܸfM}9S\Iϙ>A>6_5_k׵b؁jxeQXq2"OMK3>9'+. 忊pxצʦQz5IVG2:miHO)1eפ{-ZWY?ՓS)H.͈{d8_7^O%|R쫍WSE)}L)_^)JJi{gI>MX~F2KNIYM'>6N9M^6F.$.F"COVLߦǦ$Gn 1KFO.hd @75`vm`Dةإ!ˠǀE|xMv6<LF=Mb X͆WE6jesE;Ў^d,x_E>#Oi!iì-^LF NV?fh1l t+s(_{g3e`0 k޾DPoӉ x mUzx}1M6hlqx(9\FAMuᗁ(g@!pP8-g`4ekg >EY`XkFˁ]Z[V_!^( *r[#ml$l[M}PFP ?DԠ׀폀H X} XkP{Fp] -A:R5BԡY~hמf:HG`!D֟bFVt!;] i`S>@m@?vxkY%0dLeĠ~ Cd\4R\(炂`؅(pEYRƳ =[{8 D sq`8tawjP5(p ꣼p!;|y#0}>@j>lR(f!|%Z0. ]dQdk[~ nii!惲%ڕ: X],(UAei{jCzXLs{3 #/P*FV`6 nC@v#0KkQOn"JJ& BѻX^!лkuzm6=A:`F sEK~!P*xv xkǁQPzWx.Eypk,! N9,D,uCi7?vŸOݘa:Ѻ߃c'ڕ9:!a~HD[w.0 L~ ,$5#B_c5/0K:]KEu gxv;]J}nQ΀0p<=]P&q ;uf`ldY@aP60dD@$6F$w{@_QF2ph! ipl|ܣB} i/ss_n`"ʿ>>=HxP{8D! m@;|~ t{@ iirEEOړ@kn9`گx 3 (k.:@6l!1 f~^6‡`jZ{h]#y-)Jl-M []Tp .RE*H"6t ;@vkO?#na` O{x|Q!J>Dɇ(%CTwP*A;|7| >(14(vQtEbcE.]](vQt ڵ׀Y( ֒ݭG6NPm7b#(cc7<bp 7d{!Q'? F~oYv<<FLo2g:߃cl9M6Pk@Yπ<:Pr;:(|`qA!C .qD֥!;=;@;jAXQ6֥-[spAn}hQBR >֟_v/@eq`7FA#>E3pB9v!b"gz1^5ɨChGԋ!.m9g@;Y!.Qt_(qr}C8$m n5@p\j`@v10EB`'QX'ā8CvD{ǩ*&k/ +X 'Bج k`Dkviբ{X 8~"' HCvH ̪B X&\䃋|q8k<`8 8Юn`v(_{Z`'?&F{BXCv%XhD[[v-ڀZ |' "&_6pa A(D#|փ17&ĒXrKnbM,%7&ĒXrKnbM,%7&ĒXKbC,y%!<ĒXKbC,y%!<ĒXKbC,y%!<ĒXKbC,y%K+ h'tjد$pP1 p BH^e=0TmP|Dž]eKo2Ka / [U26ʏaöiE)M;R>ovVvr:\&_l؜1lX`ɖㆭ*cbqVaQ1ҚhfVf4l)ˊ.Îciv<_e.ބ'\<γn<γnF-B$#F?trTí 1nxيjUS32b;E{mwRp:ҫ}=s$[~)GH{K(FYHP CP~4R1~__%D -J}7[2a|2jB#*y)Fmӯhn'^jh"v i%J0bHP>D 9buHi(YM82>o9mFGяRmJhLmĨT^B^NJ6Seu8_V[Gk>QIqƝ ǀ P~pm;2^ll>~|ɩ1j1svl!⪝zjD^P/["l%Ѱiy9GjƼ!/_le*G1 {EeGsV+]ޯγw o3PnG)򢴥ƿY2H)5.NRF}/!;fr4m#Υm7hk-q.4Ga+Y 6@uVgvffoK 4;Mj[6[ej%f7 ΐt"h)<nƒ&o;lIK4 h?a*;Cm[ڃmf8 {"@3"ϰ3hE[m[b{KF7 ok)~GѾ3E_Btz[v j܂p #mP׹jے475{Cp*9Ͽ%Fnz=Aw%sg!=-V)vԆUѦ"oxw.E#m۶ oW⥑-!o{sgiSds[k$lf/*5EAI3q8$vz?D>NrkٺUk@_TWb[syԶhm F} \(ЄRHsVYlui=2!K8 42Һ *ɁZA1kln>{uO!< G##e/uhAJo}y|cw>%pRX|K16/zQeqqeߴ||,M'&iy]Y7,$[>SRP(|P*r?\%V*{jvNXF)zYѠ,\ʫQy[c£|&Va!+"bŢKybX.ub^4DYtrqF< ~$wiqL]%>UHM|uX]V52uCmz<=/B7QӇ̇jy = zMУz\=={]axzy=&@z=OBa_8p .< =$1z̅ G5X =\B@jq5T-xz=ހǡIq\c =΄z@/(=&@)c6X =΅V ==B{ sXУzC=.;vq?xz=ޅ  T6eX=\c3AoA~q9zz zz_IX-&u]*ꄼκB4Z0\'n!q1^~%z<=@1/qj{IVux@-KQuxOqLzCA 3xz|=NL1;rУz̅gAureǂACnxz =4Tz8SBmc8=BwHZhR \ zG=@{ǣ 8 =C!!Cc9У z| z\=~=n?w x z%߄BM\:5G GܠB=ڡG'C۠>qz<=^G&&>6%Mui؄ʴ zCX=R6c"(rh[w-^1=_>Yc @=b,4󫠇\!v(\Q&D1g)gqR=|# ==?@?B{sKXxE|X5>[Gzz =s qz|&\*MQEsJ:OU"':T(XWW@-N1=ހǠǿĻ&8jM1 q >0ćN z=S%qzGQz@Q=J>q9zA7ǧ[2>z,==BQQlS)d]<zGz/u1DUCnaz\ =nBAg&8X~H-+9bzXz'ԨW-ˡǏ^0xz =ޅBaJWuzbqFlPǷnCCqs2+>6oT/RToR?S<?.%cs{o>3XXO󥇊ͫig< [Y8="Euj^Y(ub3|nj;p?ݻN33u~梁{?3|TN2reEEv%Ybw:w:WVZqvg}NV_P-vgUf7l%cУ^YfSa;[dl XټcO jrTeE8==׽c7[vc&^ct_;h7굠21*Qug˨YfM:3f+3[{{z{aϗ_j{-UULyuϬzݾU q"EKZgn'FfD* rçSxa_#5mnԵ[RE^Y$tUx<גvO|rfK&d,̙>ـLN(P&8Rfn+2,ՂR5- h>RԨN"NJ۷uW"!wcϣu3Tl-U0XIJ _(?dԙG(;USSRp3 Ƈ@|77[:.ԓKJ& RLv(衇<.#U\%+**l_^/ͭy55C[i7;EaJ+y?Ԣ"ׂL֔\ i"-?]Az0 F'h%qRU;oY~ƏwzjV'ON}0`Um~\9AS Bh+:My W%Wȳ1 E04]څh"[J&%q9ZO Kf<[6naM x !] IKN#*sz yDHjgB<}-f2g_ұ!flG>CJH?%j;O&l~J7(eW (3P\CC>[CƷPEJwk ک%ETf2QQ[F!!% "W\-V{E) D5ՐUcɷƟ^WПU'WYnKRٳҪvܼt݄-)O8_?>W| ,ږ솂"r[&l\nR*JfC~Ϟn(P+Ur]JoGT׈q2w{)zoٲI/]rJᥥg jxv5Ci~<4򔤾.ߤw'drw&C_^l2nMJodWa\KwoB4o'Nn͐vNd+[S[quWn$݈˻N?3 [KLE C3{ȸNZ1.; Ҽ3h!5^vȫjxr +ٮKi 0л\dF.-bmw|oK}vǧ85q|-Y<Uj fgfVoJ颧Jrrj5#V]]]Vs6#ޢ،hJpPi;f4i է~:ڞTU׫۵e}z_WO-}[/\ݻ xҍt<ʈc.?eJR7_4/4(KBE7uA15w*sJ֔khommwqG;q)? MwHׅvE^Ik ҦBo>W rSFEgg8}W_k}a\̸xµ(mVmߧ-O[Jw]OtYhf^i>R1';M:'FIԔ/}sK띴1%=#|>;M v.L5%R2{& % hJzN*.ioä2u.em@5)iJ;Nu2dHNpTgd:jjɾ=[e:N{ңI'IޥǗ^I}G$ҤSin#}ow!)|ssvunJ'L#O2q`+4lk2 lc IekڡHCpyQ:졋F]uɴKJׇW14|ʑ.UtJm.^FW{GFF=7zHc^>^Zaq+G4τ &l_‰T2qx/œI_ULZ_‚{'!Ej,h.rҖ5*?ޟRB~sCW'=4%Lns,2)]Wx}ԩ?As˴[o2yҋwf٧8ZX\23¹sg-x>7Us+мKܕyf]u͟1/X N,Y8ns ޝ%JƕDJJH<:Bl͉#ʨJc&R)=6c'Jo-,=AFSz"ˣ*[elRz۰5>ڥYl'ywܲ[4B{wRMI)g6%9#n"} 9~o#פS=%SbFolS()Ss$۽oZ7K%}>*]t^ń>r䑘A &~%MU3+9:>긚1;bkǥjvb&f12mlls-̂98Ix櫹-6"gSECjUBuu‚CR<3\jr&[HjVsfj.6鋫۞TWPcRe;Ter;įF4[g ]D.W ?K\sZ[n5e5KݭVg6Qeiq6]LfLjj}kMc\s;sAU^Z:u#/ב})ʑkIգCrgγ{ Xjphu7 OwxڕS6{rd6ZDtDG\#f rdNXwC UX ˠ^X *X kG^ckv;Xb&@B1R5p-rEf\Y,Wb0˵8+DLy`yj{P/b7z{0l ǭWLy_~ ot|}1y1R~ 'H 7n}sa,V>U$lc})|| fX z"z{T(->Q+@wVj+imimchmkhm3hmWrf\Y,a-˵?5 (mqjg;'zōSBʿ/k!˕:rd\^E:|N)SJK)wRr> 2rmb2\SD,-}SE?R&59rnas 化+R\W++5y劼F{Wz'<1vAZDPڏ5w7~K 9 ?(TGD,^X *X k@޲Zn=ކ}w@=Ų#ZG_X ' -pZQ%XV&@S{-X{[͞w@g8 pZ=14ç|7iʹvVrw-4o&p;ysپJ`K4\+پ>+|f{O)Iof)eyG|G| ;G|wk@##'V [Sk3wNO|-|dg,x~urNeWM`JZym1XhmZf-@le62h ZfgLKkZiiVZZ+BiŴbZ\SuOևZMV@i4jh5 ZMV@$[d l! Dȵ@ZT j * DVފ[z+^mƫx؀[b^l >|9g=cokabQ=`%_K)=1q2q2q2q2q2q2q2q2q2q2;]Xُ}>[K1l>O3M&l}>KDa#Gg7D9hoތ=;s;s;s;s;s;s;s;s;s;s;s;sM&b}jsMq9q9o9o9k9&ƶƶ~&Ʒ-_Kh1ƿLƿLm671000n}`~vu/AD䮥_Ljw3T8 g3bo-cow9 \=;8gr5miU&/u䏤@Ic)-JUYW-"ui0B1̅y00w+Urr57('NE_Fk%f2r,('&x>ݘSc:W+Ԋ+7ו"f=YOj֓f=YOj֓f= Wɕ]Nue&@w<kf RNJ+ 4J+ 4J+ aΕð1AǕjpR3.a \׊ s s s s`@Z\\K4TZmը A0y0·\.`|.K`8|FHȃKa0p0p%L0  1x 6)la+g9l5ZAm*Ts 뀶 ބ`7ȵ^x4VnyLހ]&X<{m뀷]t,a5#'si g%٦'Yw9w !r}}/suw. mG[w߅_DH/)~w 4HNτ3n?vۏ3'~}ӅQE]Xps6ypޭP2X&7- utr}r} <(xσyP<A<(xϳg5^> u=Q;`'TaxvAovnkO[lg{c1Pj3lǕx%0#`WϹ\WhU)=&9NUiw<a,WsoR|nGQ;s a(eg tX8K~/){3Z*Cv$)?C}"[ k}UNfAy!\k\aJkk"\Ŭ:}f] Nv}ֱ*X kG~ < xaOa<1x'a#lsx:f 75mqMx#\#&s]jk .7Я8sw)x-\߇֑m0bY1la[ böŰ-m1la[ böŰ-m1la[ böŰ-m1la[ böXhu$4&UP`{^bGj\*.aolߊ[]7X\XmEؾ۷bVlߊQlb{ۣh\ F+J+J+J+*""PD>$E$--Szu'Scw73~vԮSzjWOdL)"2ED""SDdL)"2ED""SDdL)"2ED""SDdL)"2EDzsD~/]Vx-Z"(V >^kյ^O#?CoCoCg!,ιf-p+mp;́;N!\w|X n(EKjk1|Zg}IOLsͣ 8Z`e (rյzUX]C0l^žWC.&xA!AiKܽ]e&v2NA"ZY\W#ꊻ+T(P*r)HHl"6܊-4Iڄ!i&i~sՃ{y9c2}?o)b?p & C 4,а@ 4,а@B)T|'q>i|Y™γ}\` ⇸#\1R\WJĬTT)r6Sq=_KҵaXE_B %@9^q:N;T.QuSa:LQ)RDK/QDK/QDK/QDK/QDK/QDK/QD]E]E]E]ߥu.W劺\Q+rE]HuK-QDuK-QDuK-QDuK-QDuK-QDuK-ɹEw9*}mۣi@khM,~ȏE~,c>Ň>4a(qsX-d@ hmr/jßyʣV5G ~}G?Ǐ>~}G?Ǐ>~}Gc )S0`LlˆlˆlˆlˆlˆlˆlˆlˆA69PCy9PCy9PCy9PCy9PCy9P~Wȓy*Vmbզ14i8qL1c4i8qL1c4i8qL1ccl=cl=cl=cl=ƵXqě=Gţ3"L/]/7:ʶlmɴeZ*:oen<W9_^"{лKrsPwRHᑷMM{PtA=(UA7(Eߠ}oP _ʧV2%ViHF oMUoxw{K^ҵtk/]HF6ҵtmk#]HF6ҵtmk#]HF6ҵtmk#]ԀSbj@L 15 K^ҽt{/{K^ҽt{/{K^ҽt{/{kqL ܓ hhRy pMbuXa ;CsRL~,ybo+\¾t{X˱/ȀC&J+=I7n7/藩fܢIh P2 ]L!NLJ aGN aKB>?45"}NjC{z:Ԅls<^3t17AV|>uaga_Ž=ʣ=ւuhv݁P(DGJTmU&UR5K6jUۨY05)9LaJSq'G8JQ P0G6 Q0G6 f)``Q0G Pz(F)7@QRlR)5LaJ SjRÔ0)նG(5JQJRj8:2HXT|B-9\ f$ĈI{g8s2V%thoMH}?yLL`4g_'?J緳:$ SS/jċX6=廙˥S'ŧ|ejm=V |81d|OSO>uSx.O?aOuY"k'WFļkEUqC*:"cxMd&*^;DQCDDDIDDk"$J"a+rnʕ/z|=OSXvѵ=+C]w{~_(pTS#V~Ol)ǽIdڞhQGnynE'X r#{pp{TC@yGyڻڻ_.ʏPlNzJτKӫ<MXauz|5K纪58c1Unn3l qQ[8---T%ߒo귢QHAT5F QC>b#>b߃=h߃:hː2 -CjːR[u:Պ!bHH\p'mܿ- x>N_(x# 3ÊD&l':=nAkn؃^EsEK}"mEހK0v)jSʝU2l5jm {o.\RUZJkNilo`_©Lzh=So.pEP; GLHc¿&=x}| |Fwe rm./7%OOx N W'?d83)_.g%2䷢bJxU}}zJhNO Y M!J抒dnz?/KMJ߄1ڝu~}!, ץͮN?=3d:"pk>N:r<}Oy[h*W{}6zkMXfj:6bzB枡^-{ϔg&b0:aṴ8Lt 1ގA (Vwb߂K9U:qW'ae]Ǫ0CJ̨D#1Xa/_}/^? duN;CN=ߍ#H5uWf>hRx]p#n_+d\ U`juFݯ]guBE]4:BDxg~ay2;2{]&k_sGe2[VFYRuYʤe2&%wȒAVQ?'"?ԫ:ֺ2]jמ ܋*lP=7\ϩY:r=pjurkN[ZhUg՛-+U3V]Ψd/Q K Jyѽ֥]=?,`trs@n`s@~>,?`pn T 9֩T ral|X.-K1ݯdS2b_ BqP,-bmX"V"UzQFLᖋuu:P|-&ȕϛV')Uwh V;T ULf1'{3eר]C5bcx]5^W׋#clN͉GemRYT&1ӪnTE*zEElVoVElQ[T[UUEkQѲXN˩bYUIkR*FljQʩN9):T&թIujR6J9U)*5F9(CeQ]6.UͪEjѡ2t *C9̩fUa fN5N-2EƷ"[d|lo9ٞ9$sͲCwYLg:.'7dYC5_F͗Q/YZzْk7_t)Oʈ,(^\#JFėD|Q>_5$K|(/wk)杴ZJnZu;SOzӧ[4;iTOz,%;_z{|1$b`g;}4<"67GﰳY٠]5y;k&auMVdu;ɪvX+귢~+귚Vjj|wQwN=N}4,QmݚݭFݭݚmݚi1LawŰ;s;s-}Gݽ{ܽg]#ء=ⶩ+nw9C?L'ω><\tNq|jس7i8k)>SPe&F X,yܙnEku|I _&R_j0]}nGa:nf:כ7l O[K5D˿?wv>z\{|殰Bt YӐ5mm{~kumֱ{nsm6>C-:՟?U SqSg{hSʿckw}]Vr9UX励{kŘ8Ewv:[W=;s7F?lݛO\kr.`Ri*H3d):Pk<7R.66Ppp dDVFd9dʊ=nMf f rd妿U#\ޟ\nR?UEvzV<` PV9`Tnr;۩Nv*Sݝ(NvSjTݥ6.(iYِgaJ擂Sc:؞,:ݘN7f^/vy3z\Q0t1mLw3w%mLg3wt٣ӌ4cX4Q/i%=<׽>ƫD~$yJAwɓUgFu?s-w` Pzs[=+~G~d|2+Z߶;uC;:`wv6bg#v6wmm{ܽcw;CN㏏įmߝ<ώpN6wmOQFG'|u@ߴT0-LKkzš֨T xrQ#˿YzM=to7fM3IS'L&~Ei??w,wn+Qzq5n➟awN2ٝ*OK]47ZOy|Ƥ]k<{Kw.NZպE.JuYw瞟IuQ"]F5E.jtQ]TB>7&{d1cq=7n7UMy{d,Gz{Yo/MyXoc=l֏_G%͏ wG4< FcU D[ᖊ>8 0>qNGN8>O4| &8393>p)Aυg+x/b^갲b ^F#^ ++V>Z {܍n']__eʮ2eW8]֪{0n>'pw4aFxrнz^hn+xj +kރ?# ks-5wa!< [@M}obeB"4OHUIqIqDP4>a|,p {<.0'߉ kEb{^<_Y"/+*7q^W+rWE \+p%fŢyh^,ŕ k+o 7cn w~{\-&t{E[amu5j0)Cp  :Wdz'|7\9{Eν"*sUVۯZ<ᢲ6ѭ9 wb~x/hZf`#VdWWW^v`(b ;2ub:LXN, ͕cb8T0X*GPnL=^^#kyY嚯y:=ƹaY= 3pďq|Q jhTC#7z\С5t\{\=.k˵5cώxnYhߨ 8`"^8%l1>[3T1>UOSh+ 4q>MOӢF{Gg~p#=08:st1Gst1GstqT ;꜊{Bkůq/x7x [,GQkfWZE,5fZն(V_f/ӪވNBlUq Ӫ|$L/ Տlc1C~LU?VYKw{֚w]8 8+,id,6fzw%sq+%<. [ d2vX,&G|_ɠ95c$qށCquN :p4\<9_CĊК:'\ SWCޤMJޤMJޤM&܌y w.ݸƽX@xCX];?\AZV~Z]kYkYkYkYkYkXkXkXk֘~^BH*SUW=rP ,= mLDמ{a3L9@3L9@3L9oo@$7 My@$7 My@$7 U T T B4SC\i.ŘKpi^^^^^NVM'Uɪd4TӔjRMSiJ5M)4}Cw;}C?XQy oA-߂[ oA-ZOWӣ^g>#m1cCwTE*"}ʾHUTg3Uf>kϚf>kϚf>kϚf>kϚf>kϚf>kϚf>kϚf>kϚf>kϚf>kϚ_&U|_W52:QF'D(etNщ2:QF'D(etNщ2:QF'D(etNщ2:QYYb g+%V8K;K;K;K;KW%JU4a-^RXZKb)Gg<fq/yiX|&lJ><✾>:Hrdv*16(˥u.Һ\ZKri].˥u.6IMyt$7IMyt$7IMyt$7I+ ׸ pu:dzzz]4tє.EShJM)]4tє.2g̙sfY0g̙sfY0g̙sfY0g*GC\YJ؉]xoBN3u::sFgu:eY翬SB)!甐wJBI!__PeMU֤ON ݞPPQZO;Q(rN9'ΟN9'\aNcqmK~;=OqythBrmXl&'T2SBɜh;w{vrwN]W=xS\ :0%(xĜb0?9:)1#<>6"Jih2Y5Qrvѩg=gҤ&*maQex*B5j0B-Ҩ^;<SB{t*~p 7FLçBKthH$*Qj`&"Za?p0p8ލ#p$8=RTe|_0Wj\ ~k3\s6V܊+܎;p'  %Nirx2K2D׹7c؛䘌(c]ۓo䛻{oӒ!U*ç+kBMcwWBuet8{yeWJ,Ə1Wj&W>-wXK x#ɰ)3wgvw _Ajn(W}b v<@@gZ6:R@pzoبب} @ A #?ր֪v 2@@{A@A9C*UƂ@UAIj JR\IX4 B4SYjs-pzNz UdlPZC*5*_1W1ɠjCNt?AP{=xc1/FFƀoxh<%ˠ IW@&^MA3Aȵ*%t#z Ǒ!a'@O= г@AσF^ z 2hh"h{> "c0WrLdz444tD~N9s gه~a?}>gه~a?}>gه~a?}>gه~a?}>gه~a?}Ͼޅ}>UYY`ff͚͂;tI;W\ s%2ѷCj fu&Tf`#aM 76dpY`i)S L>l&6ɇfa#M4vd$aCL FȂmȂ%T),gt˧@Nn]8:p _ׇC}>_ׇC}>_}5 jU:j3y?[z4Cof$`<ݪ&Aǜr%tʕ S^U%ꃞL8fw1C BJ|NIhKhR_Q3C[_>bv͡.4әTdU`-,􅚍Msv/ [,.ږ.iqJmi|/lNG.o𭍻K̚b ml-aꢮz׷[O?_ZC_w? 6&ٸK]pwwQ3-@6HP ( \E ;z3P+z(1 !a|[ma6z[mav[ZlѓLPBM E=g?S#Ze&:#V"=溈> +j-&(GO7&3ǺγP VuQN+fvMI^&ߊH {z;!a?Б1dBADLD#)( AoꇒtT+wg׫qWVW#q(^σ 96rlHQP<]-;S394 [@i )ᗃAgGP#L8;NF5b8ouk)HݧH%RlEd؊HqbǁF~Q0Rn5V%@@4jƄ5UwX>NpjƆ /Q< zvw(fۊta gI^ t7a~'gg4cCJ3ؗ;.̓SPV{>A"?!"FЏ鐢ALk\ r5e#rL\!|wwD/傿\ r_.˥@w8h0hh(]?BhY! ?~ 9r^ƢN?`h&ą2ƺXt "GCqu7h]aj CA4: 䆛-CeՈ9 Vb+|yYءVB2[p7lͰvöl5Y7>Vsu r퓿QD;"uZf!؅AeyIBWg|&/\16fC6#jؒ';Jɇβ\sQj$32:Yk\D)581䒍\BlRg#u>R+ x8CSԍzRG1b5yc| J/iȭrۀZ1jUR,x?=*TOT˃jc/G [*12n{\~B25ex<`eNs'hoRj;S@1VuDa+B]aaqaM e%Zkk%6U'Z(IUck1tI:xJO P yqfGxPC7F&k w3%r&xMPN u aMQPu^"xNBɨK-~mUG ^ ~MP?}S&·(Ih46\q!N}75DFq"N3l\ӮI>t #>\Ӷ qشa"WH'^0T2Q sɫl U '6jKF۟PJ R7*+B]#/M?VJfUTn 7wI{qj:@+E^NO/Z}Z+hT]iEwzX "gE@a%ᾦZ$\D4E4¿Gox 5EfXn.lBWT n4*.^B Xw+IWvwr臘aܢ@bZbb@Zk| qXjqK 䳉 l32ZP;Zt |o.wFҵ4ޡh-i uMTX')9jZ Φ=@#ά+b=Xe>~It_2_-6m>gY=ނ<ކa%-;_.W_y;v;K Fvʮ]xv5{^.v {v~?kQ?_dh>+?/-_&uGx.[ĕ B["xH g( @4dkDcф,EIRŹ\I͢hDWM\,.aRq)!. q%:,K$ne٢>/#`1bʥ &rGsxX|(>1_D|=LI"M A[[ Vs~uu1d7[#">Z_~Vp( ! e|Ef.J穡|c(3o [BBxF@  B\:fn[ڱg|;ޮΕdn`YuE]Ikwϊ =-ĝ.{=EmO>L{ka!gyQ{fc+ګ3Z{g)%{Ilg;D{'&K\%/ޑMe+P^,VKbZFyA˛MbY,β.DG#|y|TdAr8&OZ\>+,9B`rd9U/)V59UN,9JBJ.ru Y9AIe4uZ:͝3ۜssN+ݹicp.r.nw.u.t\kr;uNG΍N'^66sۺyyz :C!#S֣s Hk3m=sYO:S[οlg5™̱^p959F11Ve1ak|SÚS353VL]kVLֿ7;[o{{Z 3|A}GyZZY ƒìZßW6`H$ʏ4 Տ̋, M, J7){{e(սg{sU܁v;dWw؉pw]㎱ܗw}ڝk~h_wWbrW]5:n{[=~==ك|agyx%#$/%{헼^c{kjOyiޓ3to7o^&sWWdo5o7{˞ccOcckKckֱ=jB< ȽԜi:S Rc=] 2L-uNoar^*Aوu)'<`y!z +yO/cAmJ)GY'䐆fc9Nrߪ-W]TITյ; /0u}~%z\Paz7hJAqՔ. Z-Sk ?z]Mu8:G P*Ҏ+D|ʀ}~zS ةD5*OYT*|~} Z KWL*]"}ځ1^5_) ^J}Wh]HӁ1 ܭ61o"J'HWB R17,,Ņir`BPO~h'U 7 }HWPOx) A{ Էh}{Rפ5g',k1u:HP g7n4kл94BZDUi=mvz0,Pm@m#^ޗ= c+"x9>Dp2IN'D>ST&|fY9[ΆϻrҾ'C;̕e>rd\K7r)\!!rLʵ2m,&[e&!wRCKf%wKl}9G yAayGsEy2cJϗHꄨF&8Mp 4h3g @b@p '1,)4 L0BȲ:"#(N 2T(NܭVJps)p3fRAݝn}Gl7q{g%݃s=8Gݣu(滊ME)ӼH5Ûgz]! ѐX p ~ ah8 Aap O4/pp5s U{08X` 48lpeUXXg>/~8gqFAd/5JF J5xU58op?ƏQq"LUEgљj.M6}u Ew0oicpCI q00`_ %Kԫ0z/0ȫq0݄A7۠[(;G7qIvBLqADnan@;8)D]8qH H_ m0ΑǐvH7 (=%[#cN ˑr$R(GGcP Po}dz %_pϐ3h_08\A8(}*+3`_ K46Wà^A r܏T %K/' ƹs(Z ?F1Ï<$<"aHy& qWIpwkܽ>7g%rL8טR*@IG $ARͫ@ ^9h7gx`ks7 fz3P#ޠ'~zk*Sm.pe%P$u b#Q`p!7Eu6㷫ڜڧ)G*y;=~.^E;D6\<]GOpL5K0<&>ކki@>WFF~׫`*Hz^+d\[MQ ڷkVʎWV$_uP偎.uX=;~1_CM9ח_5 =\O~4'O z +UѱWEjn| AMSo݋ޕ7!&6:;m߃Q| YM*XsR4ת*E'ڷU(vgP">z^~zܕ|Hkg;K1 X^Ey.>XcegcFҵTZꍾeI0mZ guZfR0Z8<]@N>-E^fފ_BdtRF;FiƮҎle}Jw𢡊w_wH4_A@N@-8Cg%V}y&:(UqnM:Rv٢]veT7TG`3M]o~ ƨI r)n Z`T noWC/\_bTz|xhj'l lGKfdqyf5*#/@TGT~X9fT|2tk4潇o\S(׼lNLJ{-YݪefV(`4h+k-'x]s^SտD^yߔ 桨x@}Ztj嘜ZDd9諸#Ղ?m}U= hF_4l9oP.yF_~,S緂%}(qە~:v{fӰbQ;'M[NR]/QR)kjऌ2v{򧩗*%yZOikStyDezOZ4eeG2aIĝ[r2@OCNƬ땢%])|>}lvkR_+^I_T;~`M]xXلD\вW y7̧k'fH}^w!+;Te7~v<(p 굪c8QԀTΚ'1z{Br_arOЗZV;-) \fKSP_MYU,EU+UVK2VT  \Z#4ѲoVb+<޼}.r|wK64ͪ 1>~if*tI,%}eX4t0zo!KAP ;Icڽ紌zDUOzKM5ӣک+׿ƬyZgΏ>/>Tկл$Tl-H)Bކjp̔=2\0_oRGKϝ2ϩӻȪC {~FM`{7iAffZg#TRFu!KorUt^TΨMU#?xRiIaޭP0+2NMTt.CcJWI_6ԯm =bwbNدgQs3seb|utf8]x@rެ)ptt' )Zp/*̔zSCڅ\G+6}ාz8p1W/3_7eAJ-{GqJ2oh=Hqo`NU.V]`Yuev{N7N7ufh C/}^fF4GNG tPNG3[Ny ޒV5w-oKt_Zޏ?L)Q(P:. vO"| KR(WA| _CG+<:*D<H0Ec&sU."Z3Ś]̮rf?jDwу%oX%]9|kw}cw]z7vw(.T%j{~oЯ-l !z76TƞgCB9xcolM{Yz76[=bf?8ӻqKCzw7.nܱ3y׍}x5un^; naezG7AƯ;{n1}paHq")ǟv:u:|iȟ;k|qvZ:-X]keR2>Q_)z5wOם|wwz5}vXT׽ڳ6?Db 1 AB Rb,50 303h5ZBZk=Xcz<kx=cPXZkw}PO>ϽY/מ>R׊ko{xr/O_Sה?kʟ#9#EW⯕c߈SٔT6]:O|u^M>zc z&:(?gS}_bOS TUlU*siqVUW*Utjll@K/WTzSXR_S/Qo aw2q4QVV&sIe 5S4S~.gJK/L99HSkk~48u.cT4cLD 5q7߰D~&$~&aUU6E[oYN1ͦjnjnGY'QGê4i>k'͟05f 4;?ll4LNpX"KtBKD$AbBĪd!kp 0 a:g 3X%fU V-Ot nV# Beë 2K@ba!"B% Q! Xbx A_ca9M0)*f|[X πzvxWxKO[؍{ ?{quX1XSVpWU8@Q V7?)D<%;V x=! k>'c yy<1a ;"|>>nWkX;wX{XsGO33}6s I^hgBm!*heUbm1v%ZxGs m5_;+Z³x3+3ALP03ALP0fpf303JLl:ϪeEBq!9r89y '8,Yvk@Q:( +ba1: DooRqw\p*oaO?Y;ŝeNZX'-(H ҂Ϟo?>.V̩ -c/: iNd+%0t_].P*ut6WV{Tdff`S=ٺlTvJvPlAvPlAvPl8۱vԄ% Kz/MX o`,a9KʪL]0a k`Deb&{S +g7p dJNPP җc i))ɦHR3{\Kzd ,GjZJj17I&7KfH:1J],WI6X+9Y6ȲuA| K~$,) RH ceD`eTWK_Ae;A ץX3$<, coJ0-,mĞ[-mlUʞAl{XC>#ּ+IAH?d^i//KX *?~ x ޅt=%L:5?</tO9%;* sЏXsA5^.b1?>a`K%62+YVR$)r)W¤Y%MZOjWQZ6;I_gQOB,4Sriy쪉눧Dqn9''d"z"EDiDƋ?JdAd< ߣ $P~{4ߓD=P~{R(GC=)ߣ)J=_y{)'nNR$Og)2`hN WYk:g v)\P nW*[ED>Dof A?R(+W9AQx-Qb" W=* /_! CjJB CS(aJB%b/(Ra x?[2Ag+SǞV?ID,ߜşPQA'(1寔?Q~ FV/T>U~ nٔlo yQ[|埕1YG+(ʲ)(GP)1Gy*J9O?ʡ\U*q q)qj* uNE'AϪ@EDŪU慪B\6N`r E*TϫxRrXJ?Ē[X "r~|1V!}(ICL)42 ,"'^!?P?!h5h$k345AW4¹_ tmm(g:bz-1}1}1RZy-t:u-zt:r-qyqyXW( iu^*b}P̭%[[/"N#^Ll=Qb bDӅZ0W&9=W1W Cꜘ#b^(l#9+ ʕ38]P ׈}>)(5P brb*g1sXY(yQr9QrQrp\I((((E焏qq 7Q|\N|\A|@xBd\Id\2~s Ohb5DƵDo@8 ZyyPN/j>=yX ei(K,RR(ELC)b "@)bJhMx:PX B)bS)ER2)E,R4"1 PԇRR(E,RR(E,R4"B)bR4"B)bJJ)b"J|(ELC)b)"H)b<$K0 5>P~X i(?LCa))?Ja_{)?,4 5P~XCaˤ0 F_֋`Al`ωTbLx=b+'1rS Ӂgq,+.b/}b*b 63(NN\>E97Dt 9epoFwtvj!~_]T?5{$cB 'FɅ\OɅy\f_I}˜a9Äap`x&*#*cD1`، c'n}1`8q<SO`4Qs_øq>c-J ###cf5_j)rtb,^g[=4b,XO|U/P`d->bܘø=1!61 # ##;6KYK+%9&?ZZ^ Fl=?/T<^7` cl}zĨD ~a|/Q1b\Ǹ2C_?_ }Z 0Zs0*C5^Z4ss*3(Ũ=*CWcMZ}mmX<޵h`f]ӝ]ߝΆn΅n.wVvvZt5k޵tawwi|_wE~5`iյb`w|Bv\5n ]=N4?սz=mu[6]nf/gz`Äum[u^6|i5;PKIٕ] lїvms[d9v+++F▘=ts^諻e-kyr텘u+[6KH'-Zv"舽Ǿ+J~o`~q!FuToooCv\_uBn7w`#uNOؽx%Ʈञ% G1ҵg@o]ޕ q٠ww]M+?Dw&~u0w]OBڸ]dk,44O.[]w1_@vt߂߅u6XZMܢhKET1O6zK9|hj2kp{[18ߤ$G;j9jKp wئ;:hлX^+{ e˒{m9掘iRzwz/om&5N·-^;t {a~Cö"ygQ &i2xBV*8J9֟U;.xw|lǸwZ>q<{`r~{z{ z{;*T{A#q9[|\ѶX>ՙw:{U>dkږ;7HoOsfy3&'c6|}-8ͯ؇[ۡw#=e~Whھ?pB!_30]ٚ`?M%Fe?*W -1\5~:ll~~k,酿ǡ+ uh|8kHJCmu@l߅.?6z!۶.LjI \06[;zf ={Rױ~5SꞺCmS u]bƞ@ضU>5puSϲ-Cmoie=FZiikEǎOqv zOc='{AG{6Bl^ Գ#jϮ{BklǠ x7z@osʸam4PzT^¶ ='s6g4Pi= zy[ZUhF hvmhn=hA;dX`ڮji#-Pkpn<ہƶIwd ^`i[#tjp8sL2 fuT\ms8jG}s0X&;춨cO`Er~*9 P5\6|Km!_?m~N ƂM\ֶϱ&gws6t ıG۠;t\,I8}xYKվ h/{?]nnb_MW}Ag_$\Dh'cwvƱ/vq0hos .;\l85pLЏ5c,n\mT:EFc b}Ƙޫ n2ferqfozp>73K_;S6N { {%%q0.DYq5Bc9Γ9}sg曜C KDp^ ]kվy;t}^N^ o?ʉN۰%î4tc+#\pfhO]xf9WA8/btʴ_};~F_r ۯ*%7i~US]+\:߳ /hjdkI8s\ZH6 .g Il\V~}SH7ed<+/z)۵\P صT5vⵁ%Bi2(wEJ׾x 5ոbz8sÍR~NW[M]u&l[IxM&pdu㠇cqlTcsrWHko!nr.&Z@4ɜF8MQw,1q݉sExτ]L]q^М׈iȭ 4mv pExi;9NxUnNv33'>|頻0Pb:.qwyxHOs*|t{nqw-Nj+EE1w#{)NR̯ޚd[妛nKtm 4e 4c hCݷ-w}dsKyb:7d\Ʋ:r:w m k:w6}dsogowo_'Ay[1ߑΓQߩX]O;w^5u^Ŗu^]67|7c͝}w0ke~ehb*cvk?=f3c~kf,wy\qCš/qi'_ w|ɧ-PJ )qc. Uv,;r7j vYMlZkmV|Ze؁Fck#csb'{cC85q^@cS.Įպh<úTpa?11Mz*6I½&jd?JIӬg!WxUc]v_'vz+eqߊU1]yuT sUCZ)nU%iM\7W[ 'Ej&RdAŁ|W@~_V-!]_7Pѕ>P*Ouʼ:yYt;yD ŜEtHApo3pogr|{d9=ɂBH}(o.]bәF̵R"H}6RmyB&:ŭax ݼ}%dnu_,3oH~1v>Ox+hmv#2{"as/5Yg^ۗhЗˏl=3tyK_Qd44o靖5UG󞾺őC}Mc}"''CEE>l2눌/#}E5_ O(K!}8m\5a`}[#wvD ?0X}"EQfI;,NF%KVߨޒ=%\4Rw1m)͵T]XnD-u}e}&Xyh#E,FOÓMP'[lq{rK,~OA$l {-=eQe2jlDMòoT0xQ.ϒK=߲c,<\g9qD7[Nz9fS|?M3ك|6󏱇BI0cYJ\#,GSOY }֔g8q2{$nr8/+Z\{{! Eݛ7ba[&VJU{*u&S}[/kڄw=FKU}O,*V-]1-:n!C? z ܠITw/ʸ'*xPiC7adym: 6VK x3~97t~kC|ppC_ap&ů2|d |K KOIOy=eRcߧ|ߓ?I.5Ք )otWU7)G)t9)])?@RꦧK+MMǺ9^]q~e~/,6GP jޙiJ@*˫ʚ MٯTVt)'^rNS.[[Vk\0<ǣlV);e5Nh:~tw>>aelzS]Mru3u3Y}n,Bl<Oi31w;;; n*7T%]"*S"߀2MTf+U]U)ER%,U&eҦlR*;JOR(Ǖr6 %rm[~oL"?ßσڂ;_m%RV 8R^@ۀ/f6N?7NѼ~>$ HrV`zV >dde@LV:"C",J_\.o-_7ʿŲgW&`g@N|cOC@aǠ@a?βeE_=>ʮ7g0гϥx}ex9=ʞc_=+X%ur\=лV)\g57l>5l!xoõ6}\ {⺘;q&q?~<Ϲ%(dXc ycEr/ 4:^fC3%}.q@S.]#KU<L _/W+J} W[9Y_&mMo ̽ 6_I%m"m6s괕6Ik\/˾j|5.2.b/F/~2m-S* -+ZPX:a<=4wꏃڜ B3Yپ wPjBkFn[!‡d1$)?jc _吢d9 ⡥J6 /rA_)_Wա&6 %V)*Ê9"BmMVFqlʂ۠nPB;HjW l'u{Cϝr!Q! ǷݡdԘ8:|}b|%t. !rd<]-y!lDxl:|p/5l3F#"חξHFn80%\+ ߁iᒻ0#\zf.5(\wp% 8,)+#.+[hkʆHomum #"TtD67SGA){AT!cGxhwh QNDӱ7p|*‘QMr:8ۓ}qWsqEd?2'X]G?O)`unTjK8{p;`WpB Fd2i u_#OlgFDvGv #{1Fo1G',r?+ҍWFN\3;Q&a~aq_ Ƞ?G/ KC Z<ͳ䬋PMocIk4"ŔD,>alofQvEsLS\GcuT`V5.cx Ib<@hlb, ?jD`MCm1Sɱ Sxu!Ho1V1":NΠzљ+h0jza%h`GhO.B_0Dd ;"A?Hߤ->ﲭQv5_7Q <UF`oh80%(6Eȇx` ѵ6^GW`6&g(<2 |ڽ>ş=4~2WLdmIs0ڈ57~,x ލכT>+p*f I/@S1;')^ 4F9AL 47; ^  ,a%%!$=dXJ]K9/ZʹrD4x.d KHno`B"rX(kI;%S{ Evc MY20oL@\P6`..T37+9œ+w%XWhsrmE7eWD;J}Q] D,#}Jl6Gǵぶh7EOF"-#z}D=zs_]y ">"ot668\eK<5WckPcO8^|"1nJX9`U8 !#VӐ[АC_Po(yJbX@O4ǖ7TV?n03 †XkÂ؆fضOl'>'4Dc{pc kbGZc'0D b c  vö9eԳ=~a c q46D\h荏o8Ok8l4\7 ǧ6܈O'?1(g>+iqk03>?_8?c̏/ԸL Ne8IpV|E2:hj9 _m 311A3~vCLqe\bWU^+*\fW :qH%WUTr\QrJWkkkkõvk`aQ Wˤi9WF}ˮ~u װ$H4)SʑBi4]*fI.>A*͗J]F$Q SG?t{> lh"탦>C0f2$en#:vC?Ky(>FSh7q }vC i7I -Чh7lMe@nh >K!P~DD{ў,2~rYΡ=JK{U':Dʹ'j=Q+MefVq':DJ{/nq?~ў苴'u}IX+|9v}I7;sɱ:a3΋+AMx*Yb.$*bX\*65k6qU!DS"q8CI4xh^+.H7S7OkzNGaA]`K@{PW +))s@p|h"!ԏH?Ri|ڐ `j@ä`~g`4 WZ +qiƏӺ>F+:{siE B.+ZDOqŴO*N=q?i30LZ"ah4ŕi  35=5*]%Y7@(7ۜ@3 ùnFT;:׊MQ&ځm5jרs4y;] 9ht|4y={y8O퀚Qr]@&8^+\wKwT㉙u^U{yy|nn]GȨ3uBMbݞ}bX Zb(\KJnh.xȈFxnrfWX#.@ru*ԋB>I: +*#ݭrrU8PZL-v.z$XUI)hzgH._wvptŝ0&j_kõ}kȻ.շvpu'Mvk똫z:Itp6@ "BQKVpu+ ԯv3ֺnBikĜ3%*KYR4lV%H*͐f͖Zb%TKw;IMmRRRQjrnj.I 蚉-nbU̖vHRX'r#qbIzS,D" QZa; %X6& A}T npgbk].u+fw 8,{]')z ; #ĽF`b{ )zw{{{4Žy!z{@86~Ag=hhxo\Tɼl/.S6 g]#gyhנ30[r\,Hr\cNۥpyN i0T h0:%gy\]\}:yU.9 G jL^%.Wk]R}*oΫ6frǓ)Gwש|{U>(uQ(NG%:qiIs}b eЫb~b{i;K4Of}w}'Vp'5RO33S%KpޝROY(],Y Fp /{fgÙ'Y!f{V{Z<<ѳųݳyʳ۳s@4yT瘧y$_>/g<==W<Ac6:A˛^58zSۤ-AobЕRo.owSwֹS"4;;;[VyZ"+yD3i.֍u^owy7yzwxy]"eSO ÂVC&o2v}g@@{t\88ٗ:N:z49  -X8gXd7U=艆 O2:yzSrz1S8zry\R)5Q i2Vb\1{sXXĪ] ݀*u*'I(+x^E WT̻͛۠<8޼7A.` (K?)ch i0`y70SP~F<}h 8TaI; 13 p< pt 6j28tpuf6FڤiL@3޾W2,M0=p̃cv5v> @(;aL6/5?f:FeNГu{d&;4S}@†5˜Q:=T} dY hQ e#`,5~Sw I?[ YdD ih@,(6|'1b<+Se9+ k֯4jFbJbZhMWfJ:{okV; |r II1vI_G&N:E10)ލ,uvek6 1 1 *i`?n+U{BU_d]مf rϑJH8ڶFU¿V&m޾ڃY!6Y7BLb $ kvݽ|h?>VD#猷^4N'}eIL6OkSjП"zcNS=M]U@TCndi5Vl88_ZNP]24?1U<UULбF&e%m?J4&_RFQ>x$Ia'sSmIׯ3C/ʹ`l՛IsAut^7$9&73:⸝w%Xڮ9m[`]ve=ɱhT_4.zmS iG+6l`c6d{e>–ꧭ`<`+P /ՎmmVdζ@7h[=ƞucQM6ö\t5V"f!Cda_w[wc>`\}V\;ݪ|;̑r$]M<$b6nƘptyiL(ῨK%R@yұ` VZ;Nz}=?xpCf(4o`c!`Wc6f*VUqz?Bbˀ 56vvkǽIDqv݀3󀋷8?+?ᘘAuT$Fʧ^;8&Ogj oer?[,vKea%lYji4YZ,,[-;,N>K帥r er[V5ÚMȳ@%R@jXXڬuvkc ֕5Vf6Nkuzzzk=m=g^[[oXmm-͖i˱ mSmmeYJC|BbhmA[ܶ¶b[g8&ضvYnU>tv '\4`ݴ3jO1qi`_\OJ`_\H_\H_\Ƞ_\Ȥ_\DSYS{4ys&bsLQ2f15^fϛL쫦LLJ Ӈl5®{q\WM>Dxr IeXMru_mc݆7kmv&ݳC{{ t||| AM ,*-,Ke A}eeee6$YynqZ=H76x TS%ӛl,~o#kɦ)LMdզoAAVhz{ogEs/ _~ B(STn^^ kJӅkKH~,r~931{x?PGg,r!j2+)}ڈ/Rh_Ѹsugl'ӵyѵKHڃԓ j#FiT.ʨ^ @ğ%t }ԓ2jguש:$ IõN*/%>ڈ$s?Ʉ;O`|?o6OjOrD-_;"{Gtv=CK >jS9 .X~K5>؆ !!:Gr^ܯIB;ߤs'Ծʗ%Cj- [ޠ X뻁_@ll>ԯ;edϡk]$|Bg_ S _p Ox )Yp RfJ=#>A[㵓1:jRM#lW B|8G-WULVP.*wߥto!>@rDBZANwGtz'A8JXO]lL珈>3 8i$LA-_*ҁT3LI0I&Hg/RE L 񗈿4O1,w!4cA-s&jrȺsP2wf1.W$_]v!75A/x?qy=Oq+T~]8{SPF]*V6Hg?/ {ŨigSIZٓTlxygȿ5 L/ ܿOClɍ׻?Dެ$NjSL'ޮ@/S7|gCOTp`Pevғ~/^+tRszΧm&:Mv8Ht g0+8?W#WiG>N'PoԼGdտB|".$ W3e7UrQ5 YRMsGp}߾N5ЋONĖB=#ڡg?zT+ge.ptuUm.oSA_|EW" ZEzwatnUUd?`R-h2\FK # D?%e'ďor1ʐ垧5Z(k O~ 0zFCPL̦@s>y4)5L`9**j[htP|.Og$#oT7*%=8Q@P*3+PiHB1<PRrUio-w^HZ6T%ΆD7]taY"+i4W|LM$oiŞSXܕ{F#An]KΗ 8]U90_7 s@r9>AD$IIf 5rк 2] ?UamWNPHUcrlLW}@q35Ė4e)`RBIλ!9wHRLY+{Q}>5R9QH</eL59?o_A$[8d%sI\9dΥYuERWD3p$C6?зm$g]IR&>_>Lj}kJb4uIHD%IyMB5Ia($D*Đ$rrQ!$1Ϲ{N=Ͼuu3nAf9QOdOe.e'XV3\yo+12c .Dװ4M:<p:<. X&æ᭎юYr87KwD(. y; Gٖ=)O~ug-LG(|.ӡԒ=i95(jb?S8w|.)~XEN>{jqJ|#Ӓ q.9H.ɓ[Xq˶6ՂN>| }q;@|4hfȳy]f'+k-5ٵ.OųȨ1d,ym68vh7?~GH4~8xUCZ_!{(eF#x+0y}JĹ;l\'>{%W Ɋd&5Fh XL&RYyֱ&Wq?36aVV`WVq'W8u;\)r0qdxb4yg = zqdwlVe)!Wk~ޓ{@#Evýp/8Kkv\q5Q YVЧmkes7'f{s9>L.p=?0g N͋9 Fx\\L~)yO7R-IF/ܙ7ɇ6r9{vrHf`9,pg^Y4!;bMnzna]z=?菠?7޾*kwƽp\78,= ykbǽ{<ڭrwhKMe`gvoH`i@K;)-sQqyqasa!+N㫇Ϻ컝|i?U86~y~~斸h*X_*{d[eھd׶5~PqǾl֢0Zǃ!YXcSw8ug"/k髹b?9v4v{>GeWסa+Ҫ`*ٛ{#axh o%(rhynE& :ׯ^'̅b%+̈Eciij;6Y)5#.x)Iem"ݺiNvUr$`flN8N2.c)Oτ}ez')/{vϑqJ K[d>C!؃K;enJ#o -| /|& kr;6?[]v].;w3aZv`tf0e\:h*besm;9rn'z#wXEcDW W)~;s3O _Q2#ϲaFȵt<^ \xeQא_ ouBy#Z>GÖK8Qi:&*$| ^S=flCǐS(= ϣ*ȑ\,<@zl迋҆ehVi\HG&NC, Ֆ'CڃU4&L*^{]F^wcEkȺ%\G|ӍQEOS)EC<<61l*G}AsVE,ޗV+O QǛeF3OM8i#B`*<4~ϵ |05ڱ;e('E_CГ:Aipv(2ʧ? awbUfSeh NɌ0rNt"&Smg@gS,;ȧ1 mDo QG;=}.gج"J{Cb%bMA@d6a)vBQ YlړJM"%TzHbBW,}$V#0þqQw~~>P $$>O /s,м\9Q낼@i9݊it$O""@LOZ1|0Q9Zv073[gXU<_h% VH"=Zh *g;[+lG|!An8~~Cf%IYlU)mجf4dsR lh o5U0}e8FkEM4>5BCJ^ <%.K{GoYCthĿ,wu{*D^ Sww4^D;<v&JgKP=;+-D>gÕpE|FגJeFoBnxm1r;JnalAβC^'r2r2$|瓰ޢ}p|Ƅ#ˇY}<:L_TJ|]M#eeh9kΪr} >NY{ (]g0vʺFu +BLF҄n|%w {OPy9ّi L"O_W3/y>Wtuy#ajwCd}EQhN/)y,Bo0ri?A&) S `*#nb#,ᢇ M97g *Q-4{OB ?YVAG~() <[FuFviД zNYhBg/6'ZFW̓7Kh yM`345>@#HiO4xYmзSGǽ-(ѶwE=apF~Yk-o F޷|cVE9֓.z~LV]=MZ_y-~X?8Q˧Z9܃͓:َ 7뚗d4mex;-Yח\֒=uYYR_)D沮!sYΰP*4xɚwS;k bԽ(Г Ǽ+e}Opui.x)swF:]U=OeK{^+]F4zܹ=VΛy6,t䯽r7.o\+IKxUZ/(%BO  őF:>t>^0 $4? hjbs0܏em؉*{by z?OP 3hy d8VZ݂ҏӞ9p9[DoEOLu#o;n+އмjv_C^HLV#Zz>} 19HFsh<vO4^JF 'Q~%+GiA?4 +!+ tRSυe裵BW' sGYD)zlaM4w6p:>VW9-'Q~#3 K!AoQ>O>hVu|3d'ZC֢ydDǩ)n\2A暙 ބD"!N!>547Օ=|L>-OB\) _j>&6 Xֆ('GѠ kP_`L?}ți>x x@&XnG_5d5E-:)A>җl@L8^O\-ZN%9u H.̅/{ 0ja4Q&jx'㨫IUXFcR+Ҵ`JD&3T31߼Mi:~n~z7r`0ޢ rSh~ h`FgUؕȍG0>#߄Zp13Xif=9t-@"iq{!K@GG.AS 2 h9|' _G مf+!N&2\yD9h=6Ű_& TH M8Qw+,}u?瑙;%z7zfO&hVB|ڏVH1d f6$vuz!1LG!>4%oEvҪ{ 3iw f oSH6֤<ޥh迡%zMoaGG9 G x;YrݞU"4xo-Jޟ}H FV_*un4(} Y8 dL[LLUO_&O7je񆤙hN_&nd@V>1xRS^䞲ջE 4 y=XN@NDnFG:T ͷ1Ŧa?JE4<*7FMi| "{6P:VX³.yKs}u4) i [q(i'pL2y%Nf`C}Ռt0&B˸{;<,rXA_rhȽSdBd)q$Sd܂e*Jr'WS9>3\_Bڼ>~ ,b鲈dThHdx~u``D+Sk1=Udfau /ft|ތQUx'-)^#W\\on|VeP+ZWTWȫrO/ɺcذhͤng є>nF,'N ݺBVhDDJuk{΂x]qY&QV'dt2YqOr/ ]|z<gt Ȣ2,@q{5k0ig34MV9%XbRZy0wJ*y2^d27Я*}-ח)% n1y[AUr>S#䂕Y)~Mw:7BU }1+%m-X/&|Cn|O;)ߥwˑ78O"_˯ܠϔo:?,6wJ߹R9b) ¡+7 ȯ܈\^ؔ1?<"L8OȑMW˾ppi G3諢/)LՇ'TJWWcٚk~;>34#27M>I5,Oޝ攔HF$n.X|!C>N)Upo(ƯxLF U)wx8opr;NSngQXJd JUJWW:Aݢnw>[ݫFiq*AUTUej켴RUO]cQtUnͨRTZ]ZVu&'Q1j*L.]Un7ސu1Mfnm<6TARw*jjj򨓤T %wkUGЗU%]*TUmV7T_Rwajf[p*Zz~*PjzX VU/e?cds3p4ؿ\0 å5ߑ& {Axa9(<#5, +ـw巅`}8p }SL\ Upsw½ᣆQ<0hP ea%W8" kt6a3{; 8wĀX8N}  6ҍQ 7mp'7ჂxG*X J&92afN; 8fCa.™pcp\ WUp{<odx &B;rTȄ `uXfH&4-`O^rq}{b).>/._:y"E{9/ҟ/>/Sy"c/nW\wyEͿjEʧpP*a.ѱfs\VUkwǏ#ɺvf"~̎_܊yN.oEF!#yfE9]9qJ7nRhy"睊wxvp.2' om?r3u+J0OζFiBgggw;hxi]Jv "+1%\ۍP T:{) U)]NN>&G]I&B4?(K6cu;-]ڝ1Sڝ}o:ns} MUUa֍/ɝ1wG[[~g{;NϒΔHIߗp-I Y=DsӬon%]TK\7ڍ*tm"e=&MWwzwzd=˩^/z S7,\Ǽy3jz;UOxJj'uCNi}Tet.˫J}zVҵ:WR=Fmtx6zڬij|~ZmK~͔pYsdL3M*4M{Ofg\y``0keww{W#^`T0ʻ:ӽn*;QlZqϋ%Ln%ߖH^b@!tI%fVDh+{Ҕl5sakRe.ulbzm`2mh.6ӔmcS6MLmfmn*hיJmmY6ˤlm*>"LU;60;T{M {Դ(SˎcLm;Ύ3u$;ԵL=}Էt 9"TĜbAŌ(#qt1c9<0asBs}޺U߮wU7݋LD,5I4Yf"DdD,Dd>"_Ddj5&"kMD֙l0hM&2Mdl5f"Dd.&"{LD3o"rD䠉!&"+Rv""59f"rD䄉I&"gLDΚ3I2`"rDV.$\1j"sD溉M[&"MD59BDcK/"rD䁉CG&"MD<5yf"D䅉+&"oLDޚ3yo"D$DV3QH2 @Fa(D"DDRb8oMkASl6oN3ʿxoޗ>?| oS? Q' Y>a<x8xA,thƔ5aMYkƾa9kZ֊fmX[֎gX(X8:.,ue߲n,ugQyv]de̮nWcU=esdkeX*{>4ws.q[V<7yޞw'p>O3JkF ~~IJMvUE5Q]5E-Q[uE=Q_4 Eh$&7"X4-DK"Z֢h+ډ!C )Btߊn"RtQ)E/#z>N! bQ bI p1Bb#~c871^L$1YLqb&b%fx1G|T$ebX!VUbX#֊ubWIl[VMl;NK{^O*8$#8&8%N38'yqA\e,⚸.n▸-➸/x,RT<[NHEXH BH,K R;_^ T~P)?*Xe2T~P?j:DIWG#Qhu:VNS3ԙ,uQj@].RKԥ2uB]RWkԵ:uSݥV{}!zT=WO'SizV=W7]P}>S_/WkV}G5]#՘5I5vShw{}P{=R'S\{^i7[흖>hiG-Fll&d&lVM6f6G-bsem6O----------mmmmm-6666ߖ`[`[h[Wqn gzgyC$[ -oG.&7\xr8r 6ԭ[P|y H*+g N9v?uzOE)/tƔesW*oκ|PāxlvPĥD\287]I/!$XE'!ttv}:~Tڊ ڟufk7 4'.+.mh'sL[()G,(Od$`im3׶Z2$.b] c֦A\Dq49@:^r69C)syr>9\@.( Er1-}d+%izh=O/ЋLz^ zޢzޣ>$ Ti#OWIpAVȂs?8I Aʼnq_$+Z|bH I%5HMt#iIBL .\I/C~?q' yBdċ:R' AsҜ$' kckɃWubOGn$?/S}HA:>=$Et4)Jq8iz:R'=BJ|S)yS[ujy.l9 H`?77Xؔ5؜5'2pb-8(bUF+㈪,P'eHsJqS.(rU ^zo()03x#ɤ40U~M`lu.O?$Cg?rȌĒXʲY#"XFˆd. 'qˆq9c\re%DZYOa1Ƽ]>)oc-k?=+XT`  XF\,@\6DAtTu 1)-DF_'*Iv'#'LyKC 'ƑI,h:2 u~(u[l[l[l;Aٟ]nP4B !W%w$E 4 F0BI1$ՌYĸok51N:r E\go5BJ1R~#\̇_ީN5/lqv3WfofE"Cy#IC2yH Y!yHCґ\\"#W"X{aU3e^ZrGمҮ%ЉtMF 2pЗ44b+ y<fAC- y7 yZѴhCg@ȧˮAY! 3P1)jS|h1f ?Z[X+"ЫZv@~"D2'd- :v!ay=ZЖԟVTC@ܝ %4@h)mh"m2,X+ +HWaف22Ų5QB9̅6kn,[`f͋Gk>,ӭ".ee: o6\<Xsc%`-.[5knQVWD<+"#'"gCij#H{:u4Exo S_3Q ۚ;㷍PK]dp/dl+WȨ0YaLCid$6-i L(-@}B2Yo&i|1_z:Le2[W(sy|]neW٧Wots]eݢ ݪSR%M@{u:INQԩzuQݤnV[mvzY^So;=HMQ5Y5MTMl9jŴ⚷VB욯槕Ji5i ZEVYUժiյZM]m;.Vq dpAӺn10@go8*s¹,|_E-+,+eejycy *&E `̾TFܗHC@FݍQv7EBn jw0jwsGP햚(u(*@TC $?WzTC IMq̆8Ƚ1r F =J󌑟ozĘ׭Frfno3! -c [>uOGO',XX.XXY>ݰ>ݱ>=>=>I6UYt:M})vJ2l&;f,#s`/,cKؒXM7l,+p!{}^H/ӽuW/z9^IWkuzIGQzOWC(}>VO'q4}>K"}/Wku}E߮A~T?Og$~I?֟U{.sɈxN4_z"j`qyWzh"ky̞>0Ч1//Y|:lkĚ`֒faU=״Xd\ʜkd_MjWоHi' 1Z~-~|/S[L.uOR% TdƗqxM%W@?+ 'ƓPFqd2~Ed96W"?;^G*o_ȘѠl{HUc,Z熣E`@'d:Y0bt}b<>s|+wax c9Y`Y0㩩*7<3s ݍsf,,e0rc7墬(,c`8+N7xr fg:3 Xf,^Zp^Ov1'C\x\pxN]V'FC塰=BB[W=֫š:ب`^aSeFjwtμdb`QYDc0*ٛ؋gڒ}n  %Hh8?N%{L\ ԞUڴ9:RDZdt&>6=VQƔG&iw>$to$ &ŞX(;ѽsLTw_'nl.ixXdT0ߜ%kÈQ:#*CL|#=xe;(sw8jիs|}}v?{I?!Zy>xȿlvدH 5nO>ny3cf=*+,Rj,o\^g6vk4ÓZXM,~5'S~!IltӦ4VE_ʻkWzdTc 9=|}6xoSpbӑmJCۜ>ml}.}.#6,*,Zւ,SۦӔ\`Fuk%&G9JD~"}z|alֻcL/dh x&X>dtΔJzlX%'_nǍʿ۲7F}t .i irqgݝ!J׽zqڠ|%#4㍔-?}#tJ5?/y-u]{5$؄'?Ȟ2C;ԠY_ΗG ]Po zo-iP:kZ. +Үxa,9"r&ow(܋!_URo/4Cy\}kSzYYUفkUnU"UDU@T:_9k n{gp+>).ٜ6֘nVY!{_O>ףƞ'ַ4% ulw+┵1{nwǁs+TxWWc/}ᑟV^AW9Zб~9[r}ϸ{:t^VQ] \.*uj^S8_UݑfS4{6 s?RJqhG'ZV*k"+,,hI%tT>^?Wɂ^^gvH #'k,c+JthOHz.LUq2\fw8T 1(i'}O5z\|TzCLr*$GuR rcW .4vE+AZޚooAnu5WVд VBbkkkd"،S=t_e+ *Xkè*u}t_Tv7(T}}oy hc6}l(x[6}o]7Ttq8aFnT7"\|m͟O6ً')7*UacA}"oG9t%o=h^o? :H9~kmry-5|ڽL_'zqwszTUoN|7٣n'ejdOqE$nX~FK`Ë>ۡ]zk>c!o$?q?p'˨U:ǾkzLId+a/:s~_5jVޥPe]_<Ѿvx*+= |OJ)?溡7K=NCƤ"L;,ta]h]䘼݆4xE}}]ٳb!c#nHգWq?sG+p\;lk,o p-3巁6562L/{œo{LҪ֓|3֞+>kK __ *9EiҺ1j_T}ؕ=#X}/2:wȾzxAS\s^[aˢr&_׸S 7=5mA_؅RLOTSӻ0}emsJ syWWݿCТܤLfޭrx{},mkvW|ƚݣ}\'z=}zғYW>MD-p}yӟoj>^tBe!2n(7g=7oM?1CbݺT+zklXZziR7' *[ݣS^wN'Z>17|?^/T,⿆M, X&3124`{e1̻M̆dYQPX1^Rѣdgc0 dV/C&C2CC>x:A!K'Y TpђʂĂJAWmlav'w|ju9-lgoz}붝޻X{e|琳5,VY7 .iouk]V|gIx/;/+Nk}ߡ _6yAdǞvjy>&偨#['.|$wb滫w'To^n_3_'U.*շr+:4-}4_0}nYg״8L>/H6y<>-f d "Ͱ (NVDZCX tȍ`a5 fF z2n(k}&/sߚ?V6;i7-!+s-,g^긽C'޹o&V^3}ZQZVc}Gm]JFrؼR =.fpUιF-i<9ViI?{^>ܲI o=弳_fXx?Y> stream xSn@}+> !0Z.{P&D̞3gΰg畮Z濛XS˶. )mhWiOVVEG]-y}:_m1?5'6<͔d*clmi~hOe$-7hUiϫ4+.hK:4yA&;> ILAb(u@%ŇEt6rؓu5lXBºFIX?E{;TÃ;DJ Z" A*:uhaaMs$q&LKDɤ`vW>Gc*u;mOMt ~' endstream endobj 2527 0 obj <> stream x| XUZ}@" #=EDbxvkv^&(yLqL'N8F۽Wma-סբ#{ՎC[(Ys%NSϵ<׺D˧͙>&o/D!h/pͷO Rҗ(;^u#o|_\w.5wA mG_aD<{Jq%z'% סųJ`?ѹ=DYsfm%9]ϹtΞ+_CRv]tܲzrLy"ft _8:JنWU^>m|B?dxG9G)ۤRw9RCfch2j4ML[$t4u5hArkZ"G"; @})!.K#>Ͼ΀q'ҧmt9tACL%TJs:AA4*h#&QMQ7*|4\B@ zKP-^iK7*U"0B@;?2A /{R5hdk*tQA+x 4BK%0x"9}i9b6ss>yO5X̬9ȧ@4SQkjC!IF[A|HEe*viA\ûxƣzH]vD돠D^kx[,Ft)yqVD+o{#zT\= r\壞d 䱐dBqf8z#hKxkYQZ)""R=/F,GLD@n~]a$TY o`>X$cv#O A/@7'(+~WRXګ.Um۰";\ĝ5~. l*>k' 1Saپ ~lfo5(wq`$W, \EнUďT@C>+!y s_Z({H;J_w1~#/<u`[Zh~8@=?~nC$n`: :ո K| {&g+@jNtHh5Ha#::7g{=BC+hk=|h/h?ƧJY RS#>g;z$iOa71Gk[; 4ma|#gjuUOmth~49> $ [%OQ~dPs]>.P<Ts]`[y7cF[Ї\Cxh.vo q.Y^ ^b_sedZ(wM{jwOB5:B6V^w*z`{]H]$O&q4fS.|E3Ro\V)W#uXZ%= 's-[*E /V*mCFҋnDŲD5cRI/bފn+qiv E]PowZ *e;v@} o tn5%NsJq0|137}arf?sʞ=6ϴ+|1m^o{\6f5dx O{S#"w|5Gږ2*&}n:^bP5=pMKJy7nA\[RPb$NUT: |t,Iat>Xwt]l9mWEUΠϮR9,nY]Aw 6nEkܷ8Q8ȳ@XΛq#؁w;n@܁- {gQ#Fkrpjkr]|T-[S5w׽r{>\k= GfYZu -ηx{r,rְA p$f Ά7KU g\XM nq*˕s<Ⱥ7~'f@jt')kW3H޸`\ؑQȞ±;¿wd Le R O Ghڹ1;t:B/oy[ $O1ln%(Sw}rS5d? ٿdώWveKmČ ;k_%OR<~JJR%XG'{5kRdžXyV{-KEZi}<0h=Z~KhەLlD-3\ϞhɁɞ;X$K+N!y'#m%Zrx#[Pp} XM3)!Rap&ʯVNfðR \ mrg%-t7h Ljp j9o3 ;4x97as_UrPv <6|,hk8jP#'<O}K_.@JQ~"d m{*,v܂{TO!WyxvAxVǐ <gmߢgH/a KšsuV-llL]aY$=<I^hb\Di?{s{u.ρo|mySK"~OaW^[%ΩJp}E\[T18*թ2'rdnpH"?-WdhǤi L_5ЏfD>{B?/Pk(  *$o``(Q/jO #(#l#F)POFJ$(82.ב؅]cw&u6조'{Q-,^W`@(?u388xR0z[n:$`Lk\LlR p pG(IQf|81 rpe WX@Ciq~I4 x)|8Fiqf!KJRmw+q:)AygoTx37>>)8 NV*Oc_LΣF7+S1p!otM.R_ +i:NwQqg?M4xcnG?*p41>nr nؿs)|'`(\K v8N\ 7b7*DQLwq mħ- z>K`c>p+U_KhIˁ5 kA0 _; XGCw#xqp/= ܧ3ނՓZ<@Oƛ mJߠi3 oҟoC$z xK[).6S%cdaچ  he5e\dq9X!Z EN _[i)R,זtJ:\%%9b'{b%jqʴZx|ȴXT|TqģQViqr%9x~YUVQ&Ͱf&&P~9Csj84UDf2cPpkf5SdOuʌ.HLprk6U2T7N 2CΆYjRITIN@dCЅg®{[FhUYa3,^s ꊘEUr1gN^.-r&rVZdJMu",Mx]e˷F;"řjBj;,IL r u;ʿe9OTq,Y#B8-S,IsJPLUSQ Os*Vd'*0ENSLRu _^RN D2*YՐ;m6g׮RE3czOJL_'fXZ@| t/sP ^]*%Gw[SɜONq2ғ\ Mޡ6w[9_@`6Ye)NnK]9c9'[ܲɻ͕ܜ9dkʅRNj.,_[9RJ= T)l ,XZRja:Sl׾ᵪ0`=VM&o0,PU`epUQUqQYbZX-jNVgE]"`em4q}c'dߗ_+Xd *錼z lJͩ"(¬"D*WW }JJ3{Ҙ WZJÓ NxP;A ܫR~*靖]k9m`&+)E2u߬&'.XB.B.iuNQz{]L׶*m.vQڍp;\+•mY퀨t3]`mի^EUd'evD6`T0 "zGzWUS]M#jڹSI +Fip6WԾ"mަp\pQ +TnV*i-0JaDm6(m6LZQ(p6T#lGz F8LSц=0[\#}'#O?1dbLLY >R&+*Z&(m8 Ms@Z*r@C9Qʎ쐕-۱n-tfX3-54߹Pff¬aaŶ]^jLcŲ?Ufg˾ʾʾ٪/PK3 *o \]0]TÖD҉!?pˬt]&Z;+lɀ];+AA5#ݑ|7P+;,I|.ak,m2re򂹤ִ|JxslZJ@?R3lb4W>QJVr'Hh ݭ)aG'6 oh Q#\!Mk֛ߡgAH?J瓝3Aj4=A)SѤ~ċ v5m2/&M?ؕ{h|%=@olPs0=x(|.2s^w@c WG/r).!FXanii;wzC Mpɼڙ߾zeVcIc5e6lZִxӧ8 WX@1Ř= m~<1~B<[BcLjԺe`#0 p&ȿp7->'".mE7qbN! Z/7nEͽ}ZvVz[>V_3i5M_xzmU "-ʹMBv^,."HܷrEh7|x!]$Dm~?@ΩXPMI&v4KLB;;8&O +AZăd{ _@8;Ch~=d\ #fzcfǺ$c?ʹAIKH?$Nb}G];2֦F/QQUE7^=E˸mrJxW.p6jːd$4 z*EkКd2 㰟׃%CL3x~J(*`^tIOzCb`M2d7E}(UyLwɸQ`D7M6n:I !!n˰G܎oѺ!rtOb~VMaM/;D_/wl y/8MĹ94'уzQf* E^.=-F[`yDS NFԛF7!'"Z/- XC[=؄;}1_̠#5~^Acqms?R-7Go](ֿv)8o7i<ȿ0D2(Fz8` C}I o\]ǭv&.#zyIDL{yԢ0##lĥhܳG蠘:]h W&LdIE /rh~?{!0}S#_5ʛ8x$™3gPZڅ zYԼbؤ>}{j6DSeE*X*bDw[im`jW Ɖpש[7@[}`DE5Mu/C ]I{,A d Hu{g^G<u  ;{4ݳA_,[x[LبXb%wK ʖsv)b[ȶm4$6fh_Bb¡6IC_9kafm  TDФa/x@f9Ѳ3PGa~}[S躦OSR] "I9N:Gt+LJ,S8sᰤԾ}( Y9Lt( Y9D Im8'$3H2>'fv,(.x(l-޵\Aëj{-*ZzP?$je7ϼ3ɾy}7 A[ 1x0G # 9Ou;J.ax/5!~ciڙ!o275ejԀ\sȎm#d__?K/Eiv$e_<+mz A"G?bC]gA=r=x(x͑;> w‘N##sdƞSg҉ 50;H4ǧi44³p)7sګxRh(: pz5񿖳fobּswљ3*S?~3 T)w*#wDemC Yb.#>.yv-|gI?$kzhSkpWUd4Ԛ;Z۪]ƘeljͻW/}qh,*vWw;zybg38T=)̾O-bF9]"Ywq{CeÊM&́ Ϋ^x7Ɇ@ݧ%֌@vYF)C/9 b0FV02?p12czlyR.?g4R*5Hje_fR$5?Y)|f+C =goq64Gq^^nY0af3 Ĥ7m!>F(SݭR TkaWU_:ڏWT*E 9|ڶihCVvhџ)mh9BL{4nQ:u!_(~zϷ}qiEGq6(evYgDe$P>OĝD<3~qt8$e$1:$38<C4IIgYd>!YY+Mp/y !ܥYf wյ=UG!<;geM`@@ͺ&  'V3;nAɺ5/sS0m,:̂GV].I|7gٹ6I ^@lX/*bz !:YXP?EO dbhV%tT>mug=D0Um1R ޑT*7W+Tr޷M{`>a8[y n@jF6&0[O T**[%_gf ;c.r6dpt;NӸ~r|%]ݎsn ;~ [/wі)aP!t0 lŃj,N<7V!]-Lކ}@v2dž>Aؑy6 ;c@29;kǎBd{'Ȍ}=dJAp`.)e  ㋻.xﰎst8f ŭȊKq*}!cL)5fTh#FŸƄLA1>ajifd]`9\%Je4r0(Cc4NOFq1$ $hh'G%K9oF&RDț|AyULq4؅ 8b`mKP Xbp LPvsT^yu y7H3*qyDCч./4_c8~zY]'Xc)c  6i$sz Ԣ=Vr6&"7+͌"^,죖#?p_U-TP:uꤧ*&FG=؈t-׃xF&1ht•Y9H78D]K*'LjYaϒ50Y2[]QDh5'[Nn_\Z~ @zugIfdm0X&u&b)Ҩ̤LaOm" ! +Ǚ!Nw NO[bWL4~ u)ԽRq#Œa~ #6:P\ȉx4䈉vԼk| ܶH\?3SKdv 濱~+VVp/՟BK@jnj*=_EU5cn+~'/8_rG "y.g' YޒMtA)pJ)ᰔ7PܼK2ƺZM3hN* =`}0*@":Cx澗!8%,K MK)p8C%2xID+v>ek0J sg>RUX-=ycA6xkι5'sUx!hˮ 7{^ ~Ş36E| ɹTO{퐛~G fEo4Q F _i}gw _]>_p$T$Cӌ!Ie!@ Ȉ>EQi<6!1Bp EpfJa\VV/:l`TF;>q^; uEv֟b pXuE1izxwV~I{rs /arOZQ.L җH?W#;@cS?o|H] cFj1q.K0a0u=JSKw!=O0 O@GjFRUݡ۱n =4>c@ 랰\plv`PAX jHGWMhAtl~3\{uaP$0VBˣD[D屓LI)z!P#~D6Dh0Ȣf/1f{635&`wkQ9{U3!x*aX'dUFe3I~U:v߰!`k U"WEJ(,oݛw<@ Ja3 "xlQYՌ TCHڔF-^W9&dgeB!4f>%Ԅ8{]@^܎WCRFC!CյcʘD.a/O62昌ÎB\"b3kk8‡ NؒJ9SGr$ GGKԓ[ b+5ۉEXc:x/\s`k)7n5=h]?$q!te(sVm 9].0au[\VD Zd1`fe<Sts1P|zytgNZ-󜐷q)RF\գXBӕ][^#%gxW TkϣчV\9مbg<>ӳ]l-%{wa.iu8*|*:lc?no5 ѝ"JI_&%ߞF )u@P2bCiB:- j,ϔ)yhpVSN>; JT7|] ;!534 DH>4y" 2A3 4`z;|;$g8gHHأ9enw>sW+&c1S12X|[^̤޾Ii۽_[y˯Unl~}9`x"UCD2}W_)2Y[vkҒ2@acxl L3 #]Me.[eB-K82zH_96ZáH1ɆhqV;e8 6$ը+N"70liC"п 卅uLBYx YwzV׫yԒT'J?ݽc9?8_}Co0doqtK+#WʏlecooB9*xDŁͼm;o^CӲgVB_lo-vdbb]''BE >Om0^epXF(<\M|~psȎFCثq0>S23efiX~CA(Q닭Ւqã#㡒hͬ0[yۥ񘡾XiJAAxDž`z^0b;gFd=DY$ n?)Ȱ~'(3"=C8J)`r?(4kZmP\ ײ߅MET_|FsQEԩVETJ+x=zonXj>W(3S RY%_P1 F/יv:wй6]#S{ˆ^`64s+ʠ[˶|SrmSis>ywA/4gQ&k7 C6MmmQoڰ--l0R,M.U9L qe46:QyšwIR@ĨtBkCC}\&y>W bf9fP)u^sOќէ\|}fݍ*UiOA3;DsY$[ 1gDF{wN^ vR- B!*\D} @Y㗈 G=a~0,}5'\M_=۠svG̃xs Bv8^[yN'Di-u=d9`Cs(ھ3fn5aCf}]-%WW%Vd`1!-,V riz72->#nh''E&%ʙٓS+(aėe|ɲW OQO OK\^^]a6")֐86t,eo 'iUNl0,65,%o Y ֲuuudi|HFxPH4ޖd -YWUm`mӀNj }TMVjI4[j6q8aqNJQܢ1@Ddcppp 1vߛaMюHS[#@Z%F"p}_0/ :WTvg]9eo<]_߼p7^HTNKf^|ڒ)lco23vveމ f" 9ίȋ;W=;6ktyzk?wE>bDvy%KlgVJYndlPYήGT;ɧPP,ұ%@FG[~j nӈϚXpu.Yv=r}͝@Nz &]H 5HA]*HC^2Y hԤ ;>'$9{K6]=&z|fC3rmOU:K݅b9^W!xe. @j[,7H766GnNOoX-)  ú$ZiPRdHu+6,n68*Rq8y6AmSH@ 8F -emQM$D:SDoaW'lJZA,?Ԋ\R'z3MDB+KWKo|U$=w'M*9Ź .^ySW;ۗp.(aI.-32ҢŞ%b挐gv2yrR6Ρ +:4R)А̓ɪj }饰jUo B/ea*)7"q[A#T<('ܙ7#5Z/47Bv Z4?^#@^jM?fr%kqFWגXz2_\@420z}$Ђ*UBzV7IK +vhi hi%h}?߀yΚKhלCTc%4J҈PJ i*M$hLUZP""V8ؖD>92߹x<*DU >V|ga#ZaJ'|R% ]8X- |55w]]ȩ:-A28^ U:29: BY)ӬXsX?erLSɘoFс X|njmhj*4Jf6t{ =[3@G|jkAmTbX ;*` ;%lXkҊY qz<#hDzTKFDžjpL6#r2i8RcQ9V?A,@ e8eH.;zڗnÛ^DRItco^wV+Fos'^ڷqaw o|N6P6jxUfT!?]`Tb7#!H & p!\(45rSICe):fM! DBiCV|(Zb}⣠H#_ַH@X?(mPڂF?*dwf7Vٹ3wwss~,.yFu$fԑ&8n 6 ;@zmS7G%onA]vq]C|bE5<ߚIa֒d3f8tUlUeuϾUSWi?l#<Ů4:+ܬa6^!Ǟz4?a66z<-V 4c!:UaB3(I 5ĉs? /52". 7Jkha 0+'(D D1 iɍI*`' Cpd[O#'|;'W.|k5g/xgzon'ces<rq 4#DR(|nLB/k(k(Tm|'NUOHD,|;dCoh iO6R {}S^O8tJ"5H٬dY/}~o\?&~͋uƞmibr,L[@s} o^ (_q9$RGcsƿZYc%VY_ ]S.>Vx$x;PuP-¬f?UcRUϺ}r`Z(%^(8-pLr]v=HuLjpkeI HӰS4x/MP@C슐YjGM„@w"ҾR^ˑ:E"*׮)sďCb'~/! *{z#%E~)Aӵ{X iFh2Cr`Kw;ڴ;C~ƃ_`9:f%N]tj C*Xk.5t]CEڣdg+ -ksp)ET[S!7)=blTL2r=aL#r$^p Qyuv`rooaA..gm?v3Nטl_; ̏k7=?!g:N*J~MOЧ2?6MZޣ#D~)f΅@=j$QZ4`  kTuL0x/qBF起2}C_ߵV|<>fkSQ7k_ţ<:OVA Ĵj)ig< `;Z!|,h,W L 4@">6C]xvve-;㳗;uk_h~ g>x{_N^dIB$ jSnʣggSʘdb}CUDLԯt c{cu4ba2HkDx%6i!Hi]d~rav.@'VQ`-f"\76OeJ,} G=thòS~mt;N?ꖅc/^ġmbKu-gίԥ&MUweՅ kOK{oI{j>ȭhN=}wׁ';SoؾwFM#k&S6T26o{LF\ )u`3q-!zd @O^ A7..e`mF'+4B2 MBE3tŮEVYP,EPqu7irTo}(8rnUߘ41IcDX.`+*Q*[zLH>o UX2eD8 s_2S׆xhz? |K|MH`"(-7{h NNI8s >F XA IZKڍj:aX]zLrhG-La)%(1v‡DHC؉ֆ0]/z}aӰ԰ܠ1uUȳGB\Ð? *kYi,ǶNTP$OkV_ōk^i.P uj׮&^V:0WO~h2SΓeZp2?55w-mxGY5@4:}f'J)dKhiK$)dJ;u)vg t:( ɓ| O]N?ḐYwqI)$H"+IED)MT<㤝EHY7eF^BĨ,k*͞b-/xó肇(S-4ǣI5>-S_(wh)nV+̈́!B8։ GRTjɧu;=Nm-W4s||f' .]Ox\~!sDlx7u1n/XJNϠ!]`i,SY$Y!@̈DV#X'ƁY`3 Ͱհa) */a}|W|> <@8WN;)2j(dYđ y:w$ICGDtJ$I E+YtӋr}dA y;N‘ K ɶx >/4O`v;;?o=OCδPz(m <+0~XBXO MK6I{&奂T'K>jًpQ7Ivgñ1 hbl`.W/(ׇ19 o/ݦXφ'Ig㳃x.Hf\[9-2 *_dB$5|†z!,_^;9#Rzн!7aB+NQSA욪0@ L/>UTRN}8ar2Nbp, P!; C}Q'"R*naVaiF=#nDV]L`:~Ƈ)5~[MI)9GSeeTt!OV(%/S 9YZ9 z|>'ܩrSOХE"3,*1nuzd א9ps>eZiȏm@[tDl ɥOemME&Ù _e$.3m#H;[-\'M$ ǗÂ;dv¥pRPpUUCS&y "*ꢲf9'З s86M7Aoy|em%H[YEQ,TE'tVR_do4gL&|w%_)%G'`HP$WQ;h%%&q~ H#Xka$sUh_ Q|EOQ:Hs7&!l; 2xYz 2B۴Mp'Pگ;~  JT]z8x(ؽ"npos^7q]̚'3}Xgdw4+F!1g|WA H̆tC/ρŁ1'&d:d6hѧOX@0(hﴉ0+ݪݧ¸ SI$꭯fT*DžǏ1en+ }C^FWzT>t 8^)wi+kRjCM?ugv'ݽ๠v X7t xnYxͯVw^mp$"n $EWg0D֝ A' lll'EF)q//J:!9?dd:sy1/6ZSmdJCk#/MǶivwSh>9kN0I3h:Ydx2KQY&:7s~NQ]pcB&jKU s^>|^VZIB._0zXӐf&Fhr|/nl`Ob3Ɲ;#XΉ]lX(L0s8s8yIn-NwN0Q*ZZڰmQ.K̂bBgꥴ_İڤ+;͊^ b ԶuFڦdfwXv?Pfǎ^AXDHLmu@!rvRhw˫~bSu#;v@ߑ/֒ngJ'=G3X=5H. ' '%/L=R <=YûB~#Fqo𗦸`7;iH;{SJXWCRvaժ"Zw 1v#°jpUbfPM=_5׼y{TUPۖf]U%z$ ;$YAKȭv$Tb!{7^=qFTɁ9NϢ]`laa'Gb1TN?:PRW FE&a rJ 7GL6qQ5G>|?MtXiwJmǟqgn#lNτ_@n㙧mA;lhǼ޼!jjw 423"7zP>(n$7h1!`BE0WDsl:eb.' Wm(31+Ah`uPi;1~8iM?%ѕ3ѝ{0qwDOnJ5XF7OADkiƔVJ:}Zah =uf g ]Ȉ05Sa!f_UZ_9'kHJrlGJGk(`+BL~TԽ//;])bw랧yzϭ;7k'Wtqz䓒npFJW?"]8¥Hrj AA':GYQ0 5y&VjJjji؁ F;0 *9(,w`6??O>9bC AC-:XkA!ZʑJB)(]o2j1ߌZ{QWGW2CWjcwc_";#yVl Ш4TK#20$F+Ыf_MoTqy81aܥ𼔢.:(@;?Q38\86Et`m|XDZX|p87MfЉшL p;;D(<ͥCn+}mBWJоwC1N5rk6>SDr.Dkr%.yyW5썽[wPQ/i:ݝj)Ry>ABKly7D6!IfE1!•ZIޝKko'WhW >jV\[ k1F!Zz_GVUp|RӞ4wΪoݿz&>ko, PҪ\S+@tVܽ=. d3 ,|πzyse+dnwoɬHߗy\z*0\x2dTku D&玲YV WM k4IL+C Bm#it%E'.@d@Qc#J2hQ1u#?`eG/[mE@8ʦq38C+jYjX02&@v%DTKX}x}5^#++ {ݻv=ҩ9o3y&dLN&I LHax(Q@!hYT"zR4rQmKH-Z\JS|>rJ{3IxT~ߏٿڏk{[ }v³$'Xnv}׵{*u`HI8t<*fzlV!̓鰄hs11%˵deϐ2̣&iKXNjE9VtNL:FKȝg} zmv{2K]1ε)I럸x9nK&g#?+6S3!p}s/xj>Eqig}Rž,;TaF/`>Ћ.-P<ÝJw߳d-_{j,yN|QۡB!y+ U-ޱfL;XwdkxŎ:c'eDbV+o &ANH~cHX?T^f?[sʻ5[|6SvO[.(I#?no 65q8?G1M#n}t䔅R:Isi* .Go%=ǟsmp˪E L5K-k]ݳ9&OSHە(hD]#BK{7t]zսC+${xM1jU  \)ۓўD%jOVV'KK%g?m^31!uyuF闒lRL~ş]*QJK|JmeL՞)Sr7(s|srު,^]{RzNy:{o%{圗K}wN_՛-ʼe|tUQ~wRϩ}EH}F=HsVÉ|\`oeaIlFi'BH߉Б-($fiԩwbwԀ~/m]ܺPv∈d;zt_qSxƎ߁&W6rL[m\ܜoNHS|w+[;>?WNJo)Nu4 -yN} Ms!#8 \ySk,|hȟ9vv*Uf,5!lhm>M )AxV;x_*ƃhd5-<:r0(Wl@(,lb,C+X#pq_(Z[tkKʏQK73R%i{MbCm<[c>;:;t7!eN4^[ 6[ >{U$bm MC9!Q 33X#(ŞPԆտgTo9}t\d!H߫p8avY9Vװjqe@o̡#]øFs90 H2V%_Zʓ;!*hu-x+o$@*918o~9>X7IOf땮Wq0ۻ {><^El{t25MmtbܩIkT=ԵTY۠L0* ?fXeF\^}wk_2!*ʭ4A=RfrCeA|8 B"h% }PY۬}g0<}gL݂W}1:%pW=y%%1[rWUE!OQQ '܌W!4BH$TpoxYYLiDaP FCNu߭4kLq_r!Mѿ5/e;u1Ĥ[ȓwzZ(5wݒ س F~5t቞{ig`lvٳ48OMc!0W?dLcHX217eZNO2 S|$#F,^bQX y3T{nϴۤLK62^jJ<2*rS[iKtuoPB)iK5\Xpmx%A7Ĕl<6?O#=uTKbR۩ϴSѕ;J&S`}֏ݐA`o(/T'xQ!gʯK $nTu,`BXɞmbCEÅp@NI}iGttX ?apSo,kv%\8ۻSw`+T|#X쁜 /Q _<ժHbhÃ.5fgƁcq{ee@8_.".صfXh y݄oz+t,$?y5~q/W&aH; 8Hey똚Ge%uuRDx n^bU9g.]s$pJ7j#IʦbLL٥5NZ5sr&\2:˭%I򡼱2E6].5Dhݵvlf6ёF%R$v_PM'|l *?&iT I[`l+tǩ->tсNiWoM]i=\DiU5$2V^6-mq۲6f}ԱqB3.t{Vo?_?<ܪܵyO T . _/-'ϥ}̱>-{"hSlx͕UXSҿvq@ݵW<>lK⿆: 3:r"̷/ 悹`. 悹`. 悹`. 悹`. 悹`. ,יG\-pμ2yZ>TǕ4ktF`;RiL=f٥vi-?*NX_̪0t\fBW0^Ǎ,pgY4&Wq34긝!g(f7RϠ 7~pNC h 5\+ii4jFC h 5\k4%VQ,mi( !# ܕq឴F гϥ<aJ?@x7 ܔVSZYp[-0U"dֱVhg726ž&JEp I5m@ER& Ux7m3w=mc7 PsWʮ6|Z-Q*ݨpոDԮ9msr0Q 9$yQY)riBYmY@mg}UH3-hQh4q7QD+"R^CϩDٛ.(l*("yD$fҳI^ Ck϶̧ԣY7QY`\/B'SV?(sߴfy5-S="E3ax\o3Se^-gԝ{=4amM_Jq[=Oh֖v*/)"$cgoF=ڠEoTmG"jMC*)GϨU ֶm3ڛZ[fuRӜ꤆ m#[55nR3 fݠ>g^jSڎ+[+g7Xkڊ6uV–vd :am|9xQC_h~ji]Ӭ\GWMzӌzulC{{sC5 y3nV.h@Ѐ٭-yMr3o^|m#E3njl՘,ܦY h{Zߴ`~3 @TB& omiY-m6̛)Ϋ%UM-sԶ,Aڴz^qAiJio' ַ:#PTzVU8 /lW5jijV`0{@nͅ4@'㵡_ Z^RR =j~X"؃zBhA`8ҷ鯗I",˥d&40IWB8rv`~}ҽKI3YZ+GG%G$?ed$ehYEN&.ًC_ϕsyʣy,Bɷ_" —ʷ_&O)hq>,4:"+MIV_A)J<_)V"KZJxR2@z2TI\ 2e,qx '*W)lsf[D 270n(51Pnθqq />x4N~:8Injfx,6.Feo7ށo}1?0tjgܚiͭ>+c-^fZ$kcR8uVh։։/^| 68[lmσ[X .{_yF>p'Q>\Zm>Ok &.pZkN5V&I1'܍o y|Winp\K)Mj:FuK. wOۊ1/xM֑za]y@sK5-wuA˻UEqD#Yi+F8]R& @v'\$H ٽS aY6+\*S +Gs$U@¢NL.z"݀H|?X\#.X XxRw76 Cp`t6Ӏ131[w6x)-x,6<&GDccK+LF?D (oQ>`U؝/F_PQ 3:-\K[QD:t9`@M!ۏt(Dž4d}Pig6WFGAj0G{n4 6 VX@pgtCKpFݞ:E wCa?._ѣ:r*_ \;(@ ׉:~(Eb`-?$X}++ (uOW1bd+ƈ;Q' R տZNc:=;-ۚoQsQO&Gv;O?;:СOLOMO$_2I-uX?p݃pN[uNA2.)}7t^^@gēG+$_Nē3ǘBcC≏Slp Jχ ?1G\XEU쳊̘-<$#EU?fbƊ@VXT~=DǓ*eo_.{cZC?9 W]e9wIlGedm@ӱb*v}66;/=^߭c v-.gF١bg/حCR? K2ݑhZ+N~4H㭷{V'c <{ƥZU@2|F^B_nyj0>_]ƌ*VǖbW^ dAڔ3ҋ1i%8.cށ˫FU_V=U)~G|NRgF\x?Sz& IYr@P[^R,VIЎn;;󊗪]}W.T?P)h:z=` u{cRcO1HoYCOsX'|r5f^v1]V(1[i(7h2yaF1o4x1h1˫g,7Zn1/ Z?a٭/<Ï Jj'CS#K-@ A A A A -]!葡F+CnC>~@N_ w``)NrJj̭"`6 )5c-g0zmb6"_J*q(l%ȱq;YbAG%?ȮwlClWd}dOY`GFF,2j`DӻB"[GɎV`"5`"wޔi[17ќq%)VVX'Ԡ1VU QEiq >@E>+NT:Iwc*FߨWJ0_|S#|a%0(<s?Vʊ?[mۋw.SP`TIdR,*^Q *D/Ȓ#+;k#oDGNN IG# =bf Hzĉ#yƫ#AX=0Hz?$yi^2@mHٝYٝ]qeww  w?ҧҧggnpdoW2`u[S\̺3Pme72es2i7,=3[7u~rLGMGY.h:U^$Ě ̺P(TjBCB8ؓBS ׇCsCCBK wQ1twFДЊ:Tf!헞cw~"/SZ>?yFfI?7#x6R!(k5.ZqʞK_iW< ғVf!=7 C6lեbEVpܖ覛:kaQ ^sYxbpK=| a 6KOIO?GML6KQWQ+ڶU|'&1>:}}Eou0O6tl~a6 t4l9GW5c.gϓ_. I!#)$IDRh&)H ?/\-=^A01' Y\JTxܺ{0$0g7{_?tXl?{ LSb>3V`!7o^=jro66bH?aE,_~|6x]ӻCx;Zgc>wFW0q/5g-4=*l=[}TQ7t>ϓJ'FG k &1 2AdH2A2h& ZMh$F7C4SbMƍZ?񼴰 5ia~&S/q>W5esrb$ILO+}P?N53Ry|BVH+TO}UҞ&g{˵\HZv'&99qH_2L3=Zo-zN/gŊ6y^kS>a¸HV|z8< rߎg:ygx^bHk1~yvfӯLBuGؗ &{[{a7H2)=#4H{.ߙyx4BFM6-tuy rϽdWjx' -ewӽ+cw~tOZޥ= pWЏ$}$ErפJ&Ib|GdtSNZi4 Cr$DuZ/}B%+Fܴǥ'жJOb}FzrAڀFi#ZE22o~)W.+˲}>KS:$BĘZUE"m-SϟoE#{`#e,oU`}e?LSxk< 1=B4o8#,G{Gݛ4.O>H봰c3M7G~{O*LbapC$Cd! 6CBRk:Ѓ{`Z2z4{xzه=],+ wC+DML[ -)pf'cYjf _ROh= zxff 7hR\?3F@ ZY*As-kj~4Coۢ6OՙF}cc|yג3@{Cg1OB2xeJ|y\B;g3|08Ix<]|I3 daדPI8Rs)|ؑ+: /d;̀2³ij尯W&QH3bSVQ*)pNO/b®|Jv>Ma+dAlMyT؆{fda+ ! 9lܦ N!aGDJSC=-˟&b4Qoʪ6ܮ|FbTv4%FQ_gQʕ.\I97Dҝʷadb8  @\Yc,3"\ VPDFrr -' ,&L'jP=E_)ϧ:A7n4۷N#[XAviN?ӏ,:_fwu[ݙԵ JYIJҨ$AJhdX!AfH$3<ː}y\.k{ZZk5':_1g2\:o;Η wMSJNk)O[KR`mH7~u?(mԽje'ֿC% byt}ұK#\~s܀-@u 8E_ e W%OcME83\v".gVRpۡvC:ޮGm! vp ] ?=[tIBzwKG5Pϒ4\Z}#G 5,&k#Ω|Sk#8U# <~]/ǕtЏq=wA{l^4F]㺍`w="\R¸3՜wj;>tvRu鞐.h@N<蘀Jߏʕ|mw?8]Y,)$VQ㕜0`7\¸3i\H_PxNyF0RZ?H?|pK .0;߹V&#ڒ&Z'a-xCm6h8Ɨ~;˨(xB?[ˬ"0\dLpg?h@v{An-- ~2|"3pje\0 VB 476Ck%i ĵSrcנ !~NiKYQ΢@dh̝as,WV@wb{ls2&ȣuRH]wMqyM,>";sꔇK{ ;r{+D! v`7wbs aNoϜB(^7DSI#"3Ӑ~k,C!t}J!x6lFHtd8 DFF&qhح4c .:.8{쩘АHt.-=s9K~"?YOsY'+mA_z*5-ݟK>]4?sS&Ei CÐ {Q"2759xz<o4x ݢ91(o [(JCPZYt$B~PJ+rQ} [EX &(:1⮗cqCKy9SF/r0<ŠCGϹ<_TUz& gl|/5oVĻM> o{~_W5~+%Fd1&bN,PbO(EX2L"$DGD2dMI&KrHG,'+jRN֑d&$ar gr\'-.yH yO> !#f0:h3>31b1Ɯf2vf2D l?Vg6f$vfl.;].cv [n`7]v{mb*PŪjhbMǺX^xEFl!fL$H $pb<<ֆ\$bIjEIUxpkZ$Ho›PoAxކxRߑ"ލw~x/ދ܀!|)㣘jI|3 R/H_ב&n-w6~"?E9~K6܆  x Ț?dC?JH%!#$ #$ٓXb'$9F$I2IFNdmGTImG9dr!$&Y$ lH.E$#2Gd!mI"!2MI1!%%kK*I%G6 ȏl'xBM$>O>$HdDrA^@4 rG !5Jn>Ri%(< PyBH@Sk:"EO!7pgDQ4`$P#HDFCܼ4QcP2A{)f0:1z(1` ,ƐҘ@42B41eLQ:cƘ ƊB c[e3Q63r@&2L8c}Q>*y2ىh;l0*`pbb6CKD6-eSBt6sٹasP1;VlZ.eUl[JU*-cP)]znB6v`gGknTeulۀ~cz0{m`G+P: )n 2 5Ǎ>yoV?z 5#d$MG&)$(U%d7Kh r&%r$w}<'mHNa#(2&?*d6 cl̦s|v!-dWlew5lmd`G!P2(4 @h*%$ $$Ă>III :$:$ :$:tHt/"P?СCJ=ʠ=*=+j++++Z+ڠ+:++z+++@W x# ~ ? >X7ևf@9Pn[V@5Pnmr;|Pn@#PʝQ =@,z@7|@/7y@?6 h M@-h BP- h "H l*/P"VXƒ;/+j\፸z|i|_WM|ǏZ! |bElpD\N|202,!d%)%TNRC~Z&)r\$W r#3%ҁ+F32cBSo"3 &$6 e#v;fbv9]͖؍v[ֲA8=26_ST;5hՁ> O>O>og}A@3LޚCA3`-D q(h $ÀD{ q8$D' q$ $]@+n;1bPk>@O D T b!1q\{i=^B%x{kQiEC[ JQ#UHݟ"Ed#W: D=zMTxz< ω ߌzt\ <?Cx{ a/rKCϺS\GwrW\A?qJy'Fwǻx{;=^+x"H6tket{'ae0]ZCOA>P{'=𸹏]o9[8;;I5HuW{̕C{Bco 4WōEh 4ߨ RS1"UxhO.0KJ½iքg? xY|[%4)ER%C  FLC-'T)@uNUpiزTY#YaK^Z`cw %{{K0xPcC\jzjƖj=/yJ4V*ueWM UXVc'E%D&4 BoB_I`ſax?A8 tq~6?~_|Ōg |(r]WQVfUrqIԅ!3_mM>s\aGR4([AU J9X֢peՋQsU_=6pkVקjBK]f0s0Me D"CzȄ5^sv-<6?M5,z6[0eOZJw&kӶdiV߾pwAm߮6[[Od١cwymb\0\:~j}Bd{OPx4kf̵+xG'y7fkGKz}hx3x#ojbE.+׿h5o91Uc|`=%W^.SsR'WS]4j/S5dj7CIQpb`X7%ɠZʅ.9Q!U/VPUfa.U-NӍ?4Eʽ G ]C f ,7 *+>.01"26Wdf,p9 9}u[cf}mq釚;g-V2Q2w#z6nޥ[lNږgyǒ߇0&l*sfd.9ˏE5V/̏BYNBqF6h`!}:DPK 䚕&;8^5b,@@1 ИY[qy{v{Rn[\ g +܊<*UpT^'߸#6@O\Vc% P٦?ĭo[.r~;4yz%Rli~C]Tocgi~Qzj-Hq!>*~驷X:-wfuܽÝ˒WcQfЛl9T2MeU }?0.r/z H膲@A(؏2 CrG$%[ =053(>*KA޴ IB{H%6B+ŏe!?װ;`JJ_ M)R?.!~bUWc$9'j5g>̴A;gRM(zl/y?.<^mpNA촥/|>_9*9hGQoBũAf/z}U2>9]#=]ш^ūfBc9'=toDƄ&&un~qb4gmlghR/1ܗ2^giHgɧ=2>lnؓ=m9{ϼ]7vsî ' q3 7Uyzc{5*wfټ,vLI-pIg*bieѱ/lX3MjBPɚshG8.=([s _itZjT{Vrٱٙ;Sll؝qS,қ,=#Z8iF~CׅA? ew{M]Vk{c煊= q䍦  S7/ЭqSg}EkExR  }ĈQgwK˥| XuƓ{+5^FĤi9]~W|C KB]JtJ>.:ùܶV;n >T? ϲ C2AàYN:C?ܾWX[zioV+me=v{hæyk6L񲺒0b*P@-AH@Hhn2J1hEcnQY Ub"_nenoabdfaaoddib-:&_ț;(54e WJ^r[yJ-}\O&sK #[7Fq˹>m:Y5n.-;[طl}?i k$T)1J{Thyךޝx[Dېū@+ Β dO])V> $}Cs뿯0DCJPj_>)E_&oѭ6t{?٦ERs֡)Z"+ q֒G+5FtϤ$8 iY-귧i(1O7qn2^_j6k^8YܝS(7۩חs:/SK)%%~DJk4ZW[ݻvJgP֜GW}Qpzwjkgټ8Kz =Iz[qg݊ZSg-ʷsv]E{g<|پ$qSum]^~}Zs*aW/m0bޞIovx &=POrMW9q2[/hqJNQO/s%'0G; _R6U~X-YmT6yTKz )|zܞT(*,/V( pL^ο_~7mNֿI3#fV xȉt;l뾗|Ze]OA)]-wIHS麹/5ȸUPfq~ۏK |YSݜwx ]r[әhēF/㊢굓 ,D:ƌ;H;BQP1l9 endstream endobj 2528 0 obj [ 0[ 600] 3[ 600 600 600 600 600 600 600] 11[ 600 600 600 600 600] 17[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] 36[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] 53[ 600 600 600 600 600 600 600 600 600 600 600 600] 66[ 600] 68[ 600 600 600 600 600 600 600 600 600] 78[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] 96[ 600] 179[ 600 600] 182[ 600] ] endobj 2529 0 obj [ 600 600 600 600 0 0 600 0 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600] endobj 2530 0 obj <> stream xeRn0+|L< !48~ Te_ib agfGzr9i]ID+/M,DZ-}\IoS|)\IBZd{t|nFE6]1YT=9 endstream endobj 2531 0 obj <> stream x} TT930f`x>P"&QAFc FL4DQHI#imsӄI%4iͣMÿ33Z_]a?=猂X$H5Uަw/f7"|ykj_6iP0aμz$cqڼUNy΢F; Gpkڻ[T:Yrv в.y>]5 <-_~Yu~u1K}o36:YvL{^zݪYmvk;_<{N}]wzqگY{8vMȴS(0O/\/ܠ{PTVr[`:ɁgJVÿBV⺡t2+aTp+@b0/4Ʌ awb_35<1?tN]Is, aC}!T  v_v0! a76gg oE܍8+-ȯמ. aC0! aC0! aC0! aC0! aC0! aC11[a %pG)oGC*A1BT@5  a-a~N808 j`:̂y+KƓs *E!{;ınORPJ[b]ֻ a{ص(C1+Lj#-肝0)(ǁl`3 vvaD.{Qd׿+\uoW-hmi8kf}݌jURETϔI%Ůg~^&:D{Bg5}LNP8!Klf_&`e32Ȼ-yQJ\/64T"o-/8yt}rVcC0O9L:~.k}{@3Cf#-HPr<0>c&!]|W!}(;S2x,b@IY 2R&fXf/݂N;^vV5.OBӫ& vBS ΏcW!bՈ- 'BvHx+$^ p4$ ;B®!aKHXZCBKHh M!!$ !.$ y!!7$hBBDHPIBT = =Г L(c~ BS }[c =WB(B_T U B*tHB)tPS;] ]} ݬMH:WimT- ݠ% NWhBc(WvpD@Zčw E<,Ѱ WqQFE|8H\ՅpUU] Wu.\Յ Pqt1.8GC*Y#MA@\$AuC"=όgsƎ1~|8]ťGx .ϜyQ9pa!fGzmh|3E(m5ҍU :+ .FTHO#3JY%ntso| HFZ$W_ju =kc-W Yօdig}ig5q7V;#W2w $"ͥs?ytNfs~f;t`ghҽ>"G_K06J fd|Sx7`ssO+SRCT<8,II!ebn)cR$MJ !(C2 s (p|dpPɤdݮi+FHd&}W%N9VdmQI{f">G%ᅮr wⶁMg}wqC䞻voFz/1]!}7y\|^`xb(eyc,\|$uʘ*Y@^+I B)ي FP&BNwS:2F*o!kH$G4EEn U2Ɩ~UV|'JGT{ŪM%(g sOsߟYrrcG1VyG33)5g l,>KOw^'! 4:u{'}@%؀=S~1"te3E(Eq;U~N_%:͊_V_2AN81kxGYN;` L Eܺ6H6l#V͸&>wߌ>vY#}$'YlKTlѻ,"Т.N [Ξg 21Y1&Wԧ 1i>9%Oуʠb tj֗ҝC9Dc^1WkAjS`]}ܯ5-I9z;IE$D[ h<{ٽgϾ~ꊳgϪ`hgO-Tsϟ<O'ÓIdcX<&ޣ=< &"꡾J6dX?rX/k42 sma[4x݇m};[D1I?Mj;墹]/kzֆ ʨsjܚ6*@ gMל粻_EQ$衋PMO%/wZʊk.!Czۜo'4No 64V?I}rrÂ69A`ap5k@uCT7 1,X\A#"/F}w|^;;{o羃!ߣ}A.Nv_v_oo׷wooo7W]6cC?gPPRk٧2~>!񂌳 t2~9G\/|v W ޭ+j?<&E~ASuJ_6 &Դ  {V>x48k A!~GWS}'\#PZ{B=ll=Q^JIFeeMjL)*?5 c*Xۀߛa5qd} csRR l3AWb.3?XTbnsA9a Krvu\ _S2/-r-Iu:ISsS毗B5Va]QW뙚pYcv4KР?r`4b 1|`Ұ1hX140>kTiqh$k4))99l@gcr5֍!E9ha#è?bbohey p>ՙZ _^oS$4&ɿ3=Ǣ) T JH`  k{#b6HR{6FGOlLpPOf%9ERj%hu*\(Y](,HMfCV8eÂ%xcvcb3 'Ͽd#fZL1k y,pnd!UXZ;<_X]f]ji6QU,RJ5P1`='@dREFDFXLf~9¦qs)k o?=޹{yZKa48^Ҙǻҵ1lZz~ot: {Kvۊm8k k2%]lJSD l,V&MplTФt(,Pf&|12jb0ae03KkK;gm;ߴc}kٲgY3 s#O? cgg_ۉ{$嶦~?ލ'+>I:g :j^lڴ4.1c)l69۾9VbfSE@|'o΅'.XFKES-dU<3rJg >ՖXl IH4]9ׯVM3.\q\ѻsNGڿ?F&5/+qmVkoh!êiKU;u ,.!&z3p3"<ɈSH4bC<c}lLT*e;6bƐ"1|y"h)tK١ U+1^KĂI6F ͬ9X4w`=w8kRmFiLۈw3QjEC@?}Bo 3S)JL>IFƏK^~zVf#uk{vTˁ֠mjU:V/ \>ť=MY6sH39[і$K>Y!7cc#6-jEb>"Gncnpu8Xhʣ^3]FFIqZZoV&} 6l 7__18#6Vu0Q?~j~m;)W޹7s]YcmEN{m ]_}_?pKUlʀO8C-Rt\BcH$M4.>C=UqMUTf ؞ f:XBvaǔMkkhk)1n^}aN:BfT ׼#'S%&MqޜSd~/ utaA02!$<ěXMM$_36|WťkR`2f"Dm+um -N;} u ?-\[&*R&tBαuEU++lۦ ][tHYY:7[U65Sw}r>a6Nr)#A`q:mNIHNIR;"ԏy# DbSY RY(cH? 5,BIKHDnkWrcғbagpK7Ut8ʪ[VuN.l(7ήΊG㪫~n?4{;6:zD\Pg$,I,]CmRt\Z`? `e3JRINPFF^aÕąo&,}f Oj*(%G]rBPk½#vK;{d~W/{K }V<~Lw`'}d2 N1Ŗ3x"$I^tVAb6Mopa'{8{ӜǥRhZ<{m8^|͓͌VUۺr٪lUذj`1ŞTTi>M/H1&XŃ[J*)+cLc-μ-\yf{6Bw-H,wyسƩ&]ز4u|gsBkq|̭qƚGZV&6_oks>MtyhB Vu\Nt4 [ɒ6)7/;mdKmKkE %lX:]J!.`G UK8A^-H^/1u! 8 W++/ J @Te"Zh8L~(e["3M͡|i=$I,I^su mY-wYʘަyM명[+wuTTnٝ^Uu-: [wsw/y[)ufM[}YcOaʅ;ڶu S=Vܼ`PklٲbKCfuI:8,t ?UO]Me0aK*.8S$>TW{YGRhZZP)\<Qʞ.@8@DR9<š~[7Wnl*N/\45Tjs"y}!t*xٕ@w4JN1'KeN/L7]|:,霠h:(jӵ)a 4^xG ;K!MҨƤALL/.=?UsxU 4*<0'ժM[PŶa>؛gbzƖﳕv~[{ߺK`l'Њ y.f\&vC1nmfn?d,X8;ȉ;$0"Sz,T ԓYf 5bͷ^;eǢ&_ȽC?Mx𹭿SkfXԑ\b#RP^Kظ\`ɨ[%T3IlgC TO_'z,'iBhZh5ɂ YcDXfB82;mx j))eg6%?:qh$4C=i5y˛q̘ZvDa͂*aR8wv0lwd4fܑ!8 [fdvʭV[TW`h-@,6lYm:KVy q9^t嶌K*ͭGK".&W%ع}hiXia{*{QO4; Vwyk:^?Vuιk5R4nƞ/m\lX+;w9ӓm]|^CY\]VٲvD&1=O_ݟGlKR-k{cۊؚUOnL&D=mbK6gZ>%OVЬy6 i>ug۶[?-)^rݻPy7p}CSHnYz ݷ1}?k/g>yNٸÁ1>e!,A$0ǽ6&cmK1%o8> Lh I7MkMՉ󒓳44!!)T*PX".U'gJcxRhJߔ ;~HMUII ܀ﻜ:b IJFIz6͇n]X8gQF_`ivI9{X.AS+&诜Ki ndĈf Q0eloL)%6xqn#TlW& :|~-C—ng;^4M8jF{c͖yَS)(gָo䨧C%%Yk?rb).YseE}6|9%'cN}ᔙNdn-,gDӠنs$'jy4EZ%E{jNuaNrX\6̗34e=DC/fSzѨ."sn믡'!OHb xɵu? ]I\,<-[! qgڂC$f0 +Q߼ylHv|OA3󀒻I줠|O^*򎝉cey|vy/Gs+޾x嶮kvZ}y5K.[d*8-<:nL;ErPW#"pO ڧ ˎ۫=ƻug/)kMY"g'ځXE9M%qvQOx\\ E#r_bS6WF!ҧhɚdG,9Нz_b֬XK]L(-ooOӽ0NJJL4,a?/gi:ٖԪ+FA/ݟX^d4Hw\r0`+oV~.B)[/ "->&bʰ%!͏4KmHR#ڴU?h(m۞m~ԒYzxճݱ*ªWog1S8)VK~AA\]imC]?mZѨx}D2[m[٣<0FS J.[$,zDK@b7Gd1)T(}$U;ZKIIM[1u̥F^XmaVƲrQ}0+4{_}Z=?]}ן\պnOmQsvӮk7߱8Gs'~۵;Crmk*/m+k{햻]cӞ-tܷv򵺡H E#\F hisw #Ûr'L#<2nG8Ww q?fXoJ6XvW!,|bv?O:                        u!B Ot$u ?@A&ri?gQG:C~dtOGd"; G@(ch lAȓ@ lLg >yv5sQr9BlC@<9?AY9G[BrccQb <1NIOj gac8s<xQG?'x$y{r@?:z2L ġWUd#}<%TU j\CL~5. SHkHi57M/qq#Yf~N H}3hոYv0f!9a*-G8%˳j\C j\ i6FmGݶ^5.cjHlq0o& *5nm xI|H֨Y+zV⊞g%Y=+qEJ\ѳW=+qEJܪ=o&^2H$O\dI$ăDvj~ /x7:y[ֆ]J66ҤG =zгD o=fuHvQCBPzX./7ȹqެNJЪ(댌t+T7u4{7y~Bo=weq-2 ǭ+sF^>s/L=fU2+%>KqGa5Po[kGa/\]C5Y~ bFl=|>0,34P6YK0yW 4DZL [ }Zpru왽у[ŵ0qm۰^Tw3Db(mKv#c*SF[es ̆9aC|^#CjL.z9.>f[A)a#{wsڊ=ЕLs)^70#~٬T=ܪhMqx"읱)[8nWZ jH^um)9>>KE#+8lgf:O2WB]`cUUV $dps||Mr7ce8^|ENwEõөz˰uV pMhep1<Ru$y~B҅Gpp.~/2[G7Շ"~N=3*'eGp{;Cwr^*<W73vyi=֓\C6~$j^n!])3uE>qsTIlL_pO݀' 8]uq0?F{n܍s1ws_sbku^gޞ*+*J.7Z~ zRS_ Hk]{\R+ uR;pwK~;Pl\R+y[ۋR3DWP 0L(VyCnBŀN;%t!<d.Dnä}#R O[=A4b}0>`Nn|@ HPW/{]dA$w^OϹØH{Ai nW'` $pxLI@r{.W-uۯBt3t]bi<~1ts`B.i]w0Pw2C HՈ].W2䅂:s\\1n%Ǹ݃]j rŸU@aPkŊ ̠5gRϛ=}.F{Xm\;by]@G;}*`n^2 :fV'ma~ è 0y% 0a!yApwW!%y؂`_XWkGm}؎l=lG5Qv{8O]Lu  $*^! ]Ae9ty~8\xz䂍ػwoyx.o=~w܅]YAu0IVh{ btC['Ki tFoӾnHݞ(=Rxl8^)dfW%"^;I(KYuѹվqE#1@}^WR_auz}&ELvr宀o8Lr%"iT"PaNgXM?VV_/Z?>OJP}~a ƟMSR-Ϟa"7q?0ۈ4$`?O~o'wTr9L""9J$c"9F>C>j&'h9I )ZKNfrV2Nwr 1r>B?ߠI??jB.oA{aYh}>{6~Mn8f 2_w/ /P_k85mWV, ?-KMҘ? #7ˀWA? S# 1tw6(7e5脠&Y%7j9;?7? 3* UrjQ W#;  5FC?$5 Fw?|lƺ(6J_2oEn?grGi ;?! ?7"_Dk5 kw>?"D់%$Hay1*9l'5䔦֬$g4Cd\3JjV> zkTAA*4*Z2+TY !7eFr4W3\1ס]KzC<-cU‘+V8+ .*EbԨ T%-1*O! _")N>FSTƠLrd&fpƒbCA`s/j yI$RG&taDMZxC'xuv]redC!uq7:OdH@=5Y&1NVߠCU(t"ZapL:bյr1ЬL1> #DBe"L' fjP Ҙakg-uĠ|B\K l:Q5b fb?W%P6+ 7/f_4Q ExeR[p32A,NcGUfA & j_$Z-Î$Irv֩1Gulz&Q2RPaҤB7LMɎ5c%=~rY=R҂pH9s#M08CL$ lf#¦f6[NVL}'T۱vuB:"3\evt5PaC[JknvR9X@ 3P]9>l :@I@ey3%IjY FAl U : X!jS KZpjxyuj&6M'*T 2 9h^55-SrLFji8Lfl.^\\ùf#dnhV^(c`H̦z5` KpT"c'@-3&xzv3%$ I/1"4E ]'O3㢉ʨ*_8DiQJU=;(tUs)pa% g,(+n}ٶԖ/=ZMLlgNF`SL:e3՘#٢pX!Hli3$2K+Z#48ĴOYQa1VZ+1+tOT|XjK:B$:t*!uI:7jruttL+LtD+V-/w|.[6m§m_^<ANlMNdI&r44!OL|v$4>P Mj56znbWg돼2l5Lh╉e 1DG氀]EZ/k{FԟTfB ;?Z7ts8u\"ЈO#,R ^xajb;:FF|OLh\TU ?@?\55S#W-ɔ21%őpTPCtPF%QF&M?t]cl69.B-|2}|.6z5 M }0K&Kÿ\կq[>lT384$qd6`w'Yj"8D_mDΈS RW5>o[Nd eFV,109lZLĵ%ioz y2Gǎ%$>x'7>qt'1(؂])qsVETXRYYE\,>KMVsS<~"agѝ|~-OA}>ios>w5WQaӅ$P$lx*7!"Y7GULb(eb/ӢFԅ: %&ut2.~qi]P7DmbzB>r]4J7 /4-r6-Yڴ?iyLdrs{&}bDTw_ojԾ }}W'4oLnj/r<}gN PD+]B iT>hF56(,-,+,;ly+loi^'m)Z8en,&W0sI~ZkÔvSM\! ҎԧuWc52Yqyj]y%22OfaEmHZI2wOZX ;^j +j:%SLlQb'Ǧs4*vylqli+cSwnB0aZ۩TK>MCZխT{kqIAeEW;YZ6aCv7[9+iTQGQ o牻(O&^0d¹gN>WOi7F-4uR熧aԩSL=3Τ H:;f3٦h֙tjKG/ӖiĂGMz1&x9CTKsg/^صM'e-۞wkeIn%=x޻#dY::oɏ?"?!b_։}Yw]^>~ZX+jYNf$CA. ,_0 `yAqAiw )8WP[pq:sxd:9կ;85YCΏBzW׏S;τDƖrnrɨ귢e+ +j~xԫg6FI Ӵ8 t~Z5{kHWM Oӓ5WkM%ճspj,Z^%rUY쫎^AUHS jЄBڃJhi1U 5Y4} ΝE*[TW5|[۽T յ^Sjd0T^ jdp^ah;jDG\@a's??ՏToWUZ;ᶇZzM8z2+M*ʯRM{i=,jGOR\RDSڴ'Z[uŅēzD ](߀z3:V7I?n7I{h~|Nf5 MQҕP&H$Տ~4jDɴi#hi~D]9xCR32щ7?by33qf-iiRf0 Ys}iNj[y[1GZZ։`D"'>\YNMjeG^SP ]]QUgWj݆5٦ɛ7\SY:["tZ{#=+uوϡZ6{L1[Wn-WfDZVn[iuahiae`yW_k ^H}qv9jƅgОf~˲N}"fNgҧ HWX']`;) .A( D^!y9XwY餇*][ n)d.\:JR$QS_7OSX˰Tpg>ǝ4S߭tiO5ZMC[m=MzӫWZi5mu\OV~=q5yWwievS@3Orze%[L3'V{O/z{QG!K ziwymdl *Ζsqg9+M?ztGg2m[0+,="ψht^ [o@ a0<iDHI,L)uA*Lug fqtxfCd ssy0!{] al#7: }@2M;=cفa|m䳨O͆ Ȅ <9ِ `!,s2 \>}4`fA+jCVa8I ˔_kuYa FXk#cmݡ8<|,E"\X hq ,eFKq899^#+,e_>$7DsY#Z@Kha".#Ocױ=:^nbw">;B' ]+B7@i=>+ ~0+PC<<W0F(xFC<c`,DxC2<S!A*LƳ5:Yy  /@;̅y0!Y a8bKxs(r7y'B,tpЋ(d9LnPSaX+aB5P /A uư6F@ UCUP:TUCUP:Te Ue8|yC.?_o/.ڜZaI; O/#wº[oBvɅ S4m߂R;sZZЬjҴ\]"..{Ω]F-YKԬ%j5/5/5k>X"W-2Vz!y1[<E߆w':E~Zg><"4xN顎c.ZΪѬb4*F˩ŨZ~hm;O߃yojU+@ޥ&AQ"er(o8$_D"հ%(Zu9x#Yxͼj2"7nx 3>x6`$; MŸQğ_) Y$%E \kkp{pgnd*ױu!G6zzzzzn}ǀwn`g~ >8%oppge2eQ jv7I^T:CJ(1 / /}٭e ;J/e (Ca< Dyc0GƐ$쓀BF3yV~J:ZɤE>gʔ\ʫlJTr/DAS;2O!)7>|>.VKpg.SpQ9 Ȉ"G)DD9VcՇJ)ey=g#l^ܫ˖vP/ Xx~ o$msZxN YxF h![x bA, kzs|gl8DniߣZeB~DˋѿBؑF @huy׍]7_ٙF?)^Yt*{vvih"RD*C8dlćd⃕`S"Fy|m0xa80R)81 bUyA""وA6bd#وA6bP21(L)!شgsp16$C6␍d%YAVbd%YA6⏕c%X?V⏕c%؉?v⏍c#X?V⏕cFA +1J  +1J *!JA%sNSt8d#وC!;1 C%ġb5z"$FFgxbd%YgwU6Ii[S?G}gEYQ~VY~fϬo!J{/M3~&]\Y}B|weXޱcC|ZKY.J6Yˣy'e!PJjZwF+&xh~5XC;@OKgGu=:jU 0Zsrvn]<(:w.bt{^zoX9y죗s5Ym8' OjKrC^0o߇y>wo݇y>l^0 V*(c<[B^еm ".0@ q;yUמ1 ፠}Qq3*nFͨ7fT܌Qq3*Jn ax8'`,$“Li,H׾ٿ `>lȁ[/B.,^fF~,{:&7fV̊Yq3+nfͬ7fV̊pI^0ܐZȫQ5D@[鉊o竣Ѧ=tpoyU5\05wؤ`AtCU#0c:xOp Fv̕nmCO{mq?s<7Ȧq(u9#`$< ̏1&sddn〹1x&³0@2<̟1Cc*L3a6d@&Y0O#i\E%C,gt@>eg('Û>UPc,"a bڬn=l)DsZ1^'OSz[(z붋f3o ka8v;y\kDwK:Ag]!AwX!Rkti=l0|Ȇ"^.C)lъ-cVW͊uk? UV*bUʪ2=e>_eCɡiπM>rh| ^9ϱ<%VJXPa KPk]oo pMy+*jrp2> ZQد$7?!ÜsCU!j}%J$%(bOF0~H"Vijpn\opU &w`ܡots`0Ȫ;2V_+\oNx8 |K;w2xK4JaoII/}fМPYaj!L-e2&G9 m"kKH`LQQhcI,-v2^>d 7ɦufBM7ԝvЮ'zq^]7'Ү1>c_bAlwC0x3(xTVh$P8mpR?<_MOR?^ƚ{L8Dgi7=󧒧 vi7vi 0{L/Ov+&+&+&+KpU :c )耹73f؏[@Khhs\c},&y a,,D'Iq}DG?OE]( w( w.TU v.ۅzPoB] v.ۅz;Qo'D+?(p D}( v.v.؇P`' B+P` R,Am+A5j[P[jDm}>̋P@Pf%5K Y9jB\ 5f~̏Q5fI 5f,TY j@͒P3j@YjV9P3jfG9Q§{&r$OݳM]2OYRwTԬ5+G=f,PJԬ5+AC( E(~ŏQ(E(I( E(%T(J @QP*ŏQrEq(v'AQ(JEDQPŁDQP?GQQrŁ؃AQ(JEDQQŁT(( Eo"YC&}JʽE>_+ͧ@:7pY] Uuc!0~7Ew%s DWNDSxZ>aᴉ֖r$"WYS&)[ v;#u u]cɻqnw{hӓ6 }#/maOy r+/ 0O}HG=F><> K8D}|<9w@uȟ%L)ɴJtfϤ,l锟 2_ ϒ>\c'0χǼ|!"lS΃9ɗa+]N+`uE䫱c{r n=6c+^n+6W5ۡ7w>b~ͭKxxXoDO9i^|ü?ü?~<̋?xX00/'<̋ 6yyX00/'<<üüxX00/ÓSEÿ֢dD0[H-&FiDВءE⻈# G4D^/|h7{ D\{Ii]HۑH%º c0¦aDVG#G֎ȚJdQ]DTG1Q3Lj"jZADu4^"HhI;AD(z:ȹhi#b#b"f(bF1DJWp);))DHh);)DH!5N&?uɳĿ;tgJss6 o)[xKOŊ[1v<Ɔǔ+kxMOƊTs=exO93X$oؿËMn]3M:Ag7śbnNMIxSO)o7ěxSmuԗvhן>b~} >0x{7~u.vOFiI5瓑|t56 *3#ƤTKP/W{AWP;ڌ{҅T|^|wa^Jjt~0JESI{݅]{SI{݅]{*]L+]=iwa^^a+].J݅ J ^t*|t:6&UFW9Jd^w2OJTz|]T.*=JOڧ\*ڧ|WanOe*_MJl^z)% !߹gR7)sݓ쥔8?jRbi{{)%} 5{)%s5)s-SRJ#ؤ&%4OK}aJ\NK4Ԭ95O )JlRb3SI\)q5%n 8}TPb>pΗJL6P|I)}~cޤfuO֗R|k%nx&%6yj_JQjJ@(qU[&%6ts1qvR+rk7hoޢ+헵˵eoko NߘaG?._(eR 3hs&I%q[b&F؂g,v8^K؉$|셽:E(%}&pDc8%p <'Z0eS2sSfN2n c(+0 s^Më=53Բ><߳e;vx7&F.Uo$cbcx^%K&cSKFQown.ɘcL1?cL1?cL1?cL1?7-nw펻[ flz[a;0 <ڗ0 VcgPߪ?SUC.}n8UO7:73YYl1;z݇$y^߫0>yb߳c8>Ozܟz!Ե]f<~ι]Zop ݈?I[O L}(>ǂcIeh"zꏩ[?󃮶Zdm*|Wc kh%,u7 &)q3 ɲ_k,ľ2,hj #m .os~C^#cw~ +/p7~{+¯Fkq/c#xcxƧmxcxOTSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5TSA5x{#azpRtJRNLG8gbV}q6>88sqA2HMDp!.ڈ>PQ?q R,e>q>J.6I瞍 %P:uګN{=[QW:^^^^^^`,5}YRc\'[ qlD7(Z;ށqr z6ڲqC~Ԛ,K;L+ِy+^-LWY=;YǪ|l絽ٜ3j^kvGc^q|,eSO |W:7]Ů5ҟu7X]i,[ߪߪSܳɿοοοοοοοοοοοοm|Uk_ >OSkZ>OSkڶI=V Vb ~%5TO5TO5TO5TO5TO5TO5TO5TO5TO5TO5TOhȨzp (b*o@q(ބft-x+0 o8@މ.GpWsU>WsU>WsU>Wz8)c^X/Y,K5)&=HmɳBfYanukfݚYf֭qopopopopopopopopopopopopopopop7qZpzWۤ} GrfDG)3ͤgs=-CZ6$Ֆ:wҿW#uI`]t|bU6Ū(V`Gq ;U$V3꼻3OgiJ&?"\;Jjg':!ϟ9Νyй|7Ob$Hb8\]%څL}Ji\Jpk*nI=ap=n/xƠK+M=9_=Ow~C]t%uM}kŎLzrCp9!8rCp9!8rCp9!8䀄W^Y+Kxe . ,&ھb9QG܊o?qܝp#w畹;yywǝqyܹ̝qyRdY,KIIIIIIIq2.s2.s2.s2.s2.s2.s2.s2.s2.s2.s2.s2/=_zK/=_zK/=_zK/=_z}9f@QT!B;ހ7P [Vaގ#p$ށ.G]x7cp,Fxߣ}}xq{|vNICf!3Đb 1d2C E=^sf]qD%wI]qD%wI]qD%wI]ipdK3n.˜4գm>,5rY|xP&I׆K*v]b/ą*pD*$հA5vǻSx ޔUϒ$s9'[(/o/*ʺOg:<*fnuf05YNӾClf w^g[={> 01+JrwMRG-wK q|Ji\J{ɬyהdT.֘֘}F>fQϨ]w- :ZÄ]'h8q^'˝h8('ģx('ģrrMN59&'䚜\krrMN59&'䚜\i،-x[ 9ly/EH(@ Bb) {uE9(G]rtQ.E9(G]rtQ.E9(G]rtQ.E9(G]rtQ.E9(G]rtQ]<(G@]<(G"咣\rKrQ.9%G]Ѣ3*5|co 1 Õ zvRvnJYKWtnCCx!rNY)9e9,2,9e9,甹fkfY)9e9,圲Ss,圲Sej>ޝ)~(gT8\Ϗ܁g9~ xbzl@#Mh I<Ϥjl<؆gc<~"^N$ U!Z셽:/:ض9@tmj܀[eqkۂ7?ZL89s.S=eUGx5JQUl5dSW|-?>^aG-Q\ccؘbjKIcꊩ+bꊩ+bꊩ+bꊩ+bꊩ+bꊩ+=,,Q[JDq%+,Q^oD}1S_L}1S_7c͘o|31ߌf7c͘o|31ߌfL1SoL1SoL1SoL1Soܖ&4OuSIglsnɜ[2̹%snecqSqV0#B +>+ta1p5|ע|7Op[cw~Hq?FjxaO8?'dq~2O8?'dq~2O8?'dq~2OɸUylU[VuAl][V|Aw㗸*jT[kG{^l3|-+*Z%VUbkXveXv%fԥx16c VlóxÜ3csflΌ͙936g؜3csflΌ͙936g؜3csflΌK.wansR/1eJ^/׾T ?kw?t7in.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.뒻.VB\чz(OǸ p)2| gq%]ҬW*~}6izks뭱SoHGu룺Q]&u.eL\2q]^4iU%ɪTd%vnspL˖ز6\Bk!k!״5-sM裘2+XگqdMkwpL [ tk\׽uqk\׽uqk\׽&8jڤ&6\\eih?2qV7N20VЬ8 pΤyz#oĦd够y8hEyXk}N~F8FFҿBO'WxH;Χ`XҤ&4_'Fh~ov7Fh~ov7Fh~ov7Fh~ov?6IMzmk^ڤo֖5UYo'.>.$D7QOu?]/81M[Ofh_fl|P9ЋηpvpSPuP׈RsRsM8D=t)uUVQҪETQ`+Y<؁q< Ђ{b x)*YE=gUԳzV]zKt٭8ݲ9ٲUM HvOFOFOF'>J>~Y|l5|=Yފ`Mա/M~;}-ᏼ'^sw0+jq|/On>1l;S>P!id:cϐEwatO2&YUk7Ã{7My19sI=H l;LC#wicq|nS4$C틴qqs2qc1;Odks؎x>3~+C  J'CE$>CO#6$Ag~A$np:JEj}v5y ]x5<꠪糕x2d;ߤR%wKvnQi@7d\l9n./&d5eCϦ%=n췡Z,%L3~5k!|E=e|_߭H[YFwq{{?r|5vl-|JV^tngnL5JG`YfhN{/Ãx@O'(ځq$lDmvz{0qxZ{;kO©;3F<2Q'p "co~k[ƴjL1 zG!:wCbZ5 i6l쏃ЁC0-UwcU롪ꡪJU5q.E`*|9Y՝UY՝UYCi:鐦CH=Vrjc]>6[KV>N=+%/OGBײ~-c#6O*<W|8KN}5ծ[ -z{~;ߩNX^,S˵짖 6{FnpnϮL5]e[Wp~,իG*7z[׌%_0ȇ% l'Oi3'Mld&D!' 9QȉBNO0hF4ڤ&6=~lZ}mO5>;́wsnc92ww9Rf5T󑭝}Aޑ`❺Siw.3Kwyxw1\S,x4yocI2 o7Cƛ!e |5W8r9[%UX }_<,NZ[>k߬2#4ۍ]I.* m,SALa%)G`+vx8Um&Jɽ*8Rd$xʨjZkpn-o!i]zYY2Y(ԵV <{('8!eE3`^3ڗVz/ܣ;ÿeR:ѿ.-gs`ĭW>Ⱦ@m (_tiG=kߑ^w?~?u|'e_;*ǿo:)UosӮŽe/?<?>G(d+586y16-w[ƢWW!n fm:V2{~; WUu6FUZq s8zD(xOeseЌ2ȿWꊞskwf`[~x=o]쬷:de&LJ%7k;Prn_{,:>?)NtϝSLϝt[+<:OẀVKp n\>Ȍ8hF4#͈w;mGOI,y:>/ILffL$4^'^s]˒UU5R v+*кdR'h-s{٬UծMe2IK&N`k'8SC@4uWRUU^e=|$џf+z|s}s7 4ƌZ9m-V-V{6Ѵ#Y.DzbwF4?h3ST73ypuS[4foi]7 c=jGh~Ǵd5Tr5.iy]VuZWyJu֍Y8Q4jlFI zܜRx^:׃ /2vi{vUO` 0|>( xL!Hׯ{i:z@"Ў7 ]I{xD2Kv]V.+m]Nd3bY>\^LS}?Ob>•uX6vyk]ZC\C0>VJXI+i#M=jK;Hf4V4=>_T!a krח͋ˬeipeeY~K]Ed쓭bQ1爹F~)Lmen"w*g0G_ 5]tezyq3.-jx|'*_E2, 7 Z >iM͜~̑dmpmpYQQQs<6nM1쓿rjoxm&JfWҝ0{ݴg v}GZ2[a_8_#|oZYՍU7FTH[bMs}/L ;{ڠn ZCFO8ן !#kH˾uٗO{.dsWz+d֚eXVRfȞOժxF/١=ýnV3iUa%;mVmUenWP2U{(j0-OKɐ~'_L(3&XiZiZiU+_&K_bsJsX.kjit4:˕\Y!凘7",U ޡ ޡ ޡo7΍L+M+USzZ߈Yve_Wve7t}[2E~q jH/'^<qѓѦ왽Z{Z&/^z%9[i(zq*ó8'lmqg ZfG˽7+g`* B@Q0x!;rΪ/ Jt4k`1jP©"JPTh<8 !"jWM'Lå}]uU{UVٌwh b Ukٻ ]Uݐfx Jo5na X/!vގ )$LlǹD)K0Ka=\mʰBla5x-&9+ d6\U #` )YABY)EjϩT_G%흅8\%ƚmҍިD /k]rآƢ=jl4Cw9)R5Ҭž1B ?r+Q ;ꛦAR!y,(l z6[)ę +U 6#6#6#p JPx$d8M,57HR4 A!$iI2 I&t0iVA7#m ֽ tOI64fk߹@)}򵞵.W\)`d H# -MXXI"B|hyZ컔|ס$`OMn ZWj` z pWܚNCӵ@Kzv&l  P> J+\ \ٍ(&`w(`4O`,0(9?h>$p>`?|X,X,h|c8x?Ô_߀R&I7Ph4̀.ʗ8. hE`? tN.!F } @@kg3h vZ;IEdi. Z$l EhTD*ZB]m$΀t.ڱ{k @;T=H:NlGx;"`' (v{i@;EoK p& /jXS`h?}"K!pE\RS&oʄN/~c `įA|~9TƷm{[fG;7dA3LUTI#`L`29@3@.>j>DX ˀ ]  5z` ȳvˍ1P]&&ΦrXFYS)ASJ6[Ci j$I@' X~!њ Z3">E:|tZ{[q<d';VOY()4ӀXy0B지5Cs׊?Y><ekaAX,__U5I'%Ou,y*jz la ц3d 7_\7 dJ^J. O3Pjq5:8ofopwjO!d<&'4*x2 #82 #1~ 1~ \.^ x1^T3?|K0. 5.O ih4B>':=*"c J{m:U12ʬqQulRz VדɻhXHL.g Lk#5shlk[v*׌;Vàl*O}sL%*;Dt*dicN:o\ s4x1Q~V z34̿=;L+ s4|ѣ\лo둨XzMfZ >q)k^^]A|bH s2NU|fL1꣑3dn !n ?Bھow`[@ P~{AE*;B ;B t;B t;B :B t=]B׃tJ~xɈ? ,>@X IK/j@ޕ*Xא2*ynݰ mɆdC[6'bM*ॊ^4`T"`Tn*X7wXxG9G+~w?zǏw?zML)?z#=G "9Dy8P; Z93eu#q*e5ke!o@5 :[2$JѫXsW9Z+L 1 현#86pV z~ !mvsz=eկuL^E Z9|(aSB31:MG,}!"=W6e3L噈w$"Q$iIgb4 1yg˰X9 5Yc 4sH~6lB؄4p9oz#/6FvfI#-Qc&( TړQ{,jEA%Q"jNDͪV Xs˵Jqbu|\ʓy-r8| |evFs5Se3ksf!!Rqe>u~gLҴ|Qu 8FHWU9,WQk= u׏`fhY CH^iK=jUV6AlH@I9YGA A$;Ɏ@#,B,ɶCq힃C E ]Hd:ҕ`$mκq>\qa~ A[fÇ 8G EHlA :^V$Nibeˊu4HV>;ÞVPWLW$.^,EޗA=2fhlmԸ9K!bH?\Aʒ#VHݑ< <iXKg&`wH mD(Vkb/ ѻ(,(r/$uH$+)؀^^0=75סjEg댶LW,VoA{A{;LW65fY̧pKk@[/F[ֱ,Hn]`_?f (8XjT|t/b:b-ր5%kLKY3֜1}s#dgd< dh3 Ki+ pv;ec &{g քmf;XsbX1=f-8ioMxvoʛ9ozpl.d)˽'o۰^-o; y,ޝ )76_/dCy?ޟ]/ᗰȃo2>Wj~ oe<#n~c8,6?͟fs,_e|g,o]sb"_—<^r6,:6_|lw^=},6[fpUF F}hhIJ5Fsˆc_6m6lݍl1ĸ4n6ߌU*Vj60ݐ3$ϳ<^lrγS/laNS̩T>||?ilʟ3s<ۜg_1s͏rs\io"s?z|h"R$ZDhSE~Ht4эg7"z8Gc!F}qq Í"Ul$Fqitwt+x18]<,2QS<-5.bW| k&6 #"be{c8(~4FM! An!H66&X1-3-dKcl#SegxJvg-{^Ky+e9xM^.r1Goˑ>c̐rFNS/d|R>+ %̑3-rklvQ~gmrGnۍri]rO%~y8q(qSF7\yy=,~{{G{s}=]{x>y?u}-v{z׻Vxnpx7ysn{?6Z NeŸ~[]VS˴LA+~ZY\?[X#VG:fVuuu;g]nj .w֕֕VȺҺnmZ7[;$k5ٚNsq^tcbcnZ7;;Bk;h-/Zyˬ!*kZkj }:kU*7. vw{*U|!} ]wV84|#}p?:~_}|{rObI.P6Kz;>)zĿ&)؇}N SF2ػBo nv1pZ3~s~c"{]}*a5eoWemhq~+dᔊ[ԈRo)aԂR9_E-8 ߨ(Kwxۥr:#C_L{+vJv-:oU j zoN)݌eYPK:9!rԶbٗڧU*ɚŘaE'Si`YN)^Z~bu-aVnWe+gW;?W;ў*Rhamao7(%s ؾnQ%屼H{^k-uWcAgޭcVmNe8M֙afkog5ި :tSkPzڷ]ϋ>Dͳk/t³-ekQkG^+|g#mݮ 4G:2*b,齮QGio~QHv[?j=~8rM圔>ߌ|Q7}_ґ5k~BGNG̼vn?)Ev=NǧͦGs^0ݱ;4穽Z=ŋ=IyH ϲaB6N- _Ivx'5$rmp\T[Z<^Rv~sWN "tURuZj?9t䙄q}| #qstȮR'0u^Yq^ WfY30rsjX.OٚN{zιN=+Z:_怒n'FJ1γy]ӫv*Y *6g8BhꯠN =d[zVݍGzji^W)o ~^G~]a:4}\=-^VI |OԚv}z_hMK{49VRu/j55Ȟ7v7c)szuɔȺ^W$V5eO;G^ǙnMh}g8|G8|GAO8ҕ͟^M Bj?=O3Ӳ׵",z.|ӎ_&XBmmr۵XsFV:g3q8/)'yV\ˋ0N> K_(2ax`q3G_ bqF|c\,Kv(D1H c-AQ"J0.?+o0J_*e&(Iv1o~1Aƿ>!Z!':@$:QWHՍNGIgPOs ϹtOCKBw@ ͡C t-;B z L# ɭ4Ehy"`݋zơԘ2p6/{L]+U̦ר#{͠N,Df.f[Vmc#K^Al?ۏHC'uL#c_?oH/eHMaE87/]x=^q:CJV6qacA6Z)CacCb60coj66p&M4%%ڵf@]#CO>X jeN0'^Kj{||wRQGqqğ0@|9z1rSQ||i9yjh`ڳee J~|Gg34s̙8k9g1y0o\;;8.$Yh.DJ2P{{(}C%K%H_j.%gQss W 7Qrs90WU*X`j1":sJ,D__#77hooqߙ!s's7jc eyWyglAkb|[[D=1MD,+fth.<CD!D^aQs0"^S @DKђVE$ʛnʛvuSo/SP'x6]&! P =E/-zSWoY 9}P\x_ E$(bq Q 1 q4(.CB E9W"Dg yb8&YLg+ ?FAx1yH(&E&ʇ+}\R։u2Q R| 6 Ql$@xvCGj ]A Pm ʹ^dPD6H܊+?X ?haNm&t& {s@i>,K4aHdhj/v̐0a38fnbf0Ff33L`fp3 c23\p=3f 23ffa43õ EHEH"U"^u#~MaRs.)N4mv"刏cq$1bm64s\=V+>"LJq8Fx{#EyMFY w Kl[kćCꭸZROCOC jiiDW{/y64֞ȯf˩gg. ,T w4٩ xIQtz FjF~򼯃:"} }ި[!}LuL*d|==IIϽ#%{ Jq Jy|ǁA_ @b`0?,D_#ēc:x,/TTVTևKC+6lH,ooĆ悾Cb"""PA T+i*i`*d0MfcPbB&%(Y(Y(,T,Tc0^ҶbO!O sN L `"e0L/ttIKpN+"L&z ^oO=O's@)L)L)}.z2Y{X14cbcbb n2{郠 A,L,L,L,]X XrA,#Pf-[[31\ܒߤ߄c dziߢ߂0ݙa9b\4S~>g v2 `iʴ߯ߏQSQ_/E\OO.O>ǥzP((0W+ PP7P8'B=BO#Ws-+۳s߀z1##{"H &~LJ&2) `RȤϤԇI?ҕLJMAJo#5w;M0R>3@f~}ΤV񾧿 ڧA !Tt3R~D?:: 銎|ggH9/)RjR9:J#줨)I?)?vj/*EPi@K0G%㨦o4M%͍ Ԣ**J72LG1UzhtD"T&+YOVF>jWd;^F/+TQhT`8 Dc1qWWƵTqqg1q8ok%2kF\QVc,SΔuSPLY)Xk2kzֲAVLVMA^5tǣ82s!O]y ˆ-kOi@]6u{ԓF[U#_sG߅~Luώt3o?ŕ^o{܅<%Q:eͫ? '|m\ohOμ37yfǬ3[,T{;~mŎsw[vv[ߞ}.mױ글'f=n5{L?|q5uc߽IU 5υ[5J|GGL,0^X+zp|G}y]ظO+%|7J~׊54cD=)#?o;W-Ž-jsaITR,.JK|| ̈!fǛ. cfɾo%gyS7b?k}QGg +9{]+Ω ; ^ *ޯ~SOǾt4 /cYn7.kgWq䇵 n]G 9]-S ʆRgBYyR؞D\Vw%L/b_y:iv0J:c7}ߪf/,[4+~ie?]oWC MMʉY"bEѡC"R.zQ P*Rc1\ '#'A@ID~qDMLZN!fPS1S̤f\(C,ZTj)KMA+X%\"6)_J.A@K%)~/~OfzŦ~_M[b])v=4HMt8 0qH]#)IciQG׫ձVǦ= DiI jlȦIt MۍZ{}tZ阦.1P+jci'lߔBn;vo25ZX0ZZX +qjcVޱvZX;֦jcmZX;zZZX2EsJڃ/j5ղ=8֞QkkSk/Ս߫jՍjucmZXۡ5vui>ToK;Qo>F|[`1!2.c]s.]&rLB6DŽ66yz˱艽j;rVͭ{uףv䶛m7}Ϻƾgvv܀۱nЎPCqKMв=h D܏ӆL{͵sڣEW*>Eʛ.R i,Уqrsjuғ~^v9d4ǝ>#4RZo:too{^Ľ.{]6}(^{^ PDphJ_ǽ#|W({n;=SS=7ͷw;;ȏ 56?0?$C(7|b\ߑy%'+/NDj C-d62NQZȆ!eوZdLdL^j˞yҔ+沉Ljt 6-LY(?[fco%.HQ>!8(쎣z+/{fo>{veOӷ{oW=}o{泧o'̞Ǟӷ3{沧o{v`Oߎہ=};o^ bunpunv9rl]V~l[~l9b,rK=5r˭X1u8QQ &"]Vv(qb3N1qeݰ؂|ł\̯ql[pt/r n/n/nmw;mj#ڍ/%{/9uīilFga6xClG\YtC@\y0nl; ji}X4Xs:&cX4:U|)DvR+:E\ƞݩ!ݘ-- [TO'Tv<v 3 o|`|@-aSq8PYVƧƧ833'`O8p7S{ߢlsO oo@\-y<տ.Q {ԩQOǣGVoƆƉGGx:{yl۲^#s'ƀD~K13C~o?{[Ka/=/{쥗![@6@7ʧ"<7e+VD\֛l߳d3 9氰-aMkV>KNHWM/m}3y 9 `ʷg_ty9ƀT*yBe3a#<`G!o~Irƀ9^G5H)o r2alHST)gȻW>y0xH1jTh^r\ؘ}}웘>y^O^:䥳O^ckdXaJZ̦-jROUc[CY.{V+>9yVSrZGV_k5nf3kr pFXVz(#T  ^gKEHnxWx.ep4s,N  93<+43+nqZw{=nWLrWJUdrd׿/rω#;'RhU$.:%>yJwk-֬`&8N+Oꇸpk{O J顴A\w>dXuWF#&GӢŸg0::z$z,z24&&5r0. R {D F׆ nI{k``3kٮ? ;J,kҎwfSZamrUJVYl>hS{:e͵[{MNv^pBtk CCC3CsBCWVn éd o tSw[Hp:r - O / CBCO뱷:64.<$z';"CBpf6|4<7R:Ї|51B$osk;מkN3YwFedneGQDTp"[#{cvDE4>:":1$**ZdX%nmպ^=kC;N۟_8~xg3}9fvn=Lq&Җ·k9vc%}݁/ccsFwAޝr%Lwk[/Cϸ$w3Ǟ`߇N@uF;۬Cq7fp˝%~@[T;k2E-9[r*;JoUͧ۾ۧ K5wyn{<+iM \3}w/Gxz^DGo<^N;t\Ns9tZV?;4ҿԄe'Z5Dh9j&I!r:Zֺ Z7_c Y,mQeD"ƨF+GkU*:cKm6XkF8`| =yT+LSfv۵9PPڽKTV-J@0(eG- YQd==$țG7hvmCޡ.wi[=폊9m͐ʨvX>,WijS|J;&ʵI|N\)_/jue I*bԬw'%OxyRS_< EՁE5D5A LW&@q1 CRwe3mVUX+饛k7L3kq_ǜ3KR% q&9ӭ'\k7~~Ŏ{ ;퓸[qm5"'NC}ٸӜT'CN3wgmWٯ!`Mr3)'wɝ,ps{QSSn)J qW^wk09Nָ5v;}d;#VZX}KPhw;b=ӎw7[q/Ƞ:0alhX;ʄNؚRwlͨTH)bkIiwQ1L=ͧhkHQ.zP=yX.a4Z,M:.֋tE!^=X,Al0!Hsc6y))t_kcGSާg3}*Aoo·~[{m{|6^m}|5ԛiڡ^Fo2!iy/mowL{}cg.7̣͗=t|G-@5bE3?6?(j )M4a al ʇtjfE5~*hZk|!֖嫬C[* 4="ܻxUՕCMeVW9Cc Ueǭr{rۋ[ʉK^rSmvHa lhJۅ?bk|!{7Yo-+|*Ixg=b3әmP@NAyzҜvguƕEle}+޲Za8kO&Ye⫛e?Zԝ"9|_Z۴x[~uv6X=l5eZGwz!΂.HX 5[4oU^YxJŦ^|έݞg*=;u:3AgYvfp);jhd4ܫ@,PԝBɭIn̊Pm+TG/kfŮr/jP!g=TE}pih\}|g^l_I v=C?!oŘ* Un|`g*+?^9*$jIUrF*䉫Vrwѻ$rիj_>e-du aX(Ҳ #6,ʇFP͊6B\4Ǭ(AXke!?kl Dgr.i,/ZV]r̪),\R2:gyBRYxrR\޶vśʆavx|D!UeO-/[`jʞUPzGKF,{Ksqši%mTV/ڮT\@KU]8`ahҊyMj;|buohl[V쐵 hͲw.=6՞*jou׾lw%K?=>KӕXS* ,^SֳbFec+K̿Xv*o U*'TYURT2!˖ߎP=*{IVd!"4@6 S,aYDFDD)$$̦wF#RYòuh 2Hcu 2 2l ˰,"s={'2q#=.  8BY* = q],x0lx qx5Go(6D<u,|"Yw2zP?ޔ5hxA]%~nAW!/^y`=4AL +}Fuq %DetP k1}Y=pWr2_'|εaXJPDMB HW2%a,lcbp}h[H ׄkp'a>P$D|e(R0 p+ikFAh1G"|eHeA&窍JQ1@ߓW48E~Nk. O>?]|V"ԲO˙ia_bvNr$ eP㡘P|(5%43L1ˀDžZ*dtbh8uE@G3BpL[ZJ>a@X ǂi mгe(r(|@o8- Oa&" -0? {u3T} :D(\L\D)x x`xx?d (~~SP 3g_b=x! ޒ}X ٷٴlJmȶ!lG}T'ۇ2d#Od (Kv&O$MпO$ZDkD=%:'D*Ni?$,T"Ч_J巡O˛MPY }F"oV6yT!W+rTB7o@Knw%}|U' ~C&GI?vPmҏ~ })靤wIچn..@EH>N} ˩PGJ 򟿜nnnUDGԟyֈ BDd<%ڔCx'L>wpW9OcwyT6&}@s`. U-bR2o:- >5ǮQKΏY:X_s1OoT0 V#adL F f .\WYs^OLc<ޛH}3Il7dcLTw.=q7iu^]✶;O^v{n.Bq`ɳ0IYp<8/'ԮP;(ޜ zP8fn;U9[x7ot)kGhk1KK?鷱q|:17)oG5㴩SV0dB, 6<5z-!לYjo- eQf2F k%\~h1qC nIl  F Aڜ!kJ B١<\0Tb U2`pkg18S/hr-xw|jƒ ߞ_;WpͶGJ4.s -:#D.lg;bKp#ZyÙfѷ^3MJlpEz,>}7xΉ!uʛ.UAYc͠E6y'ӛvgϾܻ ʺ+ 8@A}ռL5eM侯`ޗcXvQ"F G0Ĥ`rb_jhfMx]p B=s M怘 Sz5j2e"1B,j)+ϕzkG)(ȡK`a3gam5ϚS>Slzwc{Y_yGxosY1 @L˘o޷.Y'Y|pN6Z)s,{pȽ!߸o$i\bČ_cG 5'Vt/1ϑ։ 5JZn<uCxN`T[Og|~&5 Ć"~=J]_/a"s9BbYGp\Ϋ( 0&_s Ã` }q7HpxX]# Vv0p]g90w@z ۧ8j00m.|47gdb~%B@yIRR%-eIZG$-/]2$-H*MП@~kP.~ зOAзRh2@WHҷaT@AHxs祝va }g;$y@ qޓVB: qHXi2#2ߔTBJ|P""R SJH Co#/w$]Is9NREd/ gwC"D #G89G~ˑ?DAq4Q)E .'ɨ?8\|\v7bWn|ƋnoI7R/%\/NUQD-OQDk"D TY&O* 5^(]rurV'LZ'LZ'̊Z'̋]Kw`]S8,jpDx eEܯHW| 6Q*x\Q()"ZxJDŝ+iQ)qI%Y^a'~3}E Q0U"ƅWk;0?Ql*~W;3W9[EKx×_INsnJ*M,"/tOZRbR "OJwC2McI$Kp'&sn;)qM#R.gE=\""E>'^JDEu^ ΋Ԥ,,!_W"u)?NyrZO&q!Ҝ򳔟#_W#))){){H#*QFԢ"0\HFUA\5)GL/"fBXĕUeĦTf"N#R%oV(?0(_Ax/Q )k"aqүlR~;בAq]"FGE'##"FGPC%t#cJMה_Gf^DR%}-o(!o>.@t\] )וo[ t~ yMԋ/վ:-#Q.~Q{Z`ENI "e9fP T5CmPVCAQ,֢<8WgArޑ-l1u-`1Y>b,jԔlx KQC,[IKwɖEv=gcMJʍW=jͺĮr!vtшWY9'Ǥa]\+m/oe|%6>Ga~_qLw]r=u;ZmbA W?G#+AXw[pe0]nw'dѺ*-ɮ imO?ŧAm{ƹݧnq.5;;~sqFCv<3) qLk Z2) ߣv+KwM'?sm{= '/{J=-{u=wgx@9Ө/5h} ofT f;B qtCm}9s+ĊȀ'=9RøBU->fTdl}ƍ'T+צ>PUv45}ӆj`vi_>ŮzMaڙY48L;e֪=:hڟ5CY8ӧ3=]c<\6Б)V@wSqJqDj+V/GUD=4T\@/;C F#=3GNGz7>{j?>>ŒAc&~*T㞇e&'үc>ѱ 3ذ;7 uDsSf3&dhcGn3\uҝdu` 灏;3}t =1''fC?ݮԗX;.l'ŞK tT_n}h>fao[r"vjz؅?6-X=hUSa#iFM;1C5=>R:Pi0*ZAO>ec19U:o:uнBrcѰ m5VC+u3u6yf3j(LU)FEsdž}N_E>%74n*6S5b4BɨVUiL"69C(C4#ZNRz0D>GWU!/U5=C>P k' vF#fX%=i3:lˍX![L 런5L]̳:F3jed&iHɄL m} 7f ijTOCI%5pZUi.Eis/ܻ="6Ǖ,uXk gLؘ൐YBOKlZdk.ݺ}U@>U`iC q0+qT=UƎlOt={ED'@˞g XWbb ac35ҧAF3=GϑK FkͩfݮAWH0ؕ0̳9}b=MnGȬMv}39W qa-}d { t'!;)6Ym +JOj8j1r}P87(p܄̶kĶQ[{ }oNG.` =r* xjM  + nѩ|mSz`I@t?f%0+  Zg&6y^jae>ub}-c뙮r S4QDUOgӵ?ӟRֺ1ݦ_{ijT "`'l+c,>0uh}5t`3`6UN]kjL;O{Ժ-Ð~b9Ćz}yZNw8 jzD-0>:Zg2K3c 2Cog>54bTS>QIw eo2#e UC5BJ/ed췲(CgMqNDW S-kנly.1he --ZM5&EhZj%eI4W%&u[bRzMbRM&IHL`RZ%e8]PC9%EH8-q(FPġ\%8GP^IH &$~iMo%}È`J ?@~Ha%Ms%e>y< - ?!2&Iɿ.2&MRU"cQIHJ q1yq1}Iu_TEIu~,0,0W$gE1))W{IגIWx]ISp Q$H#/+"&*#$I9eC!f*jm=!M"{B"'EdO=!:I9;&_TyK'$=[>)%SmIHz=#+ܿTmIr랑_\(Ӑ]2n**NVQ/**^VQUTVEVIUE}ZdUQe"ȪEVY㥨 } X!J?!.e^;tynW^a#ZKAMx]3 j ejڧAqU7igɍ? ܗ;+eZƬwmJqk&3l;hm[v=ka{?ZhzylV6Z[(dM;{]Ks̹r1DQA4'+qFdYO6'd GA9Q9p 1N\VRCl8Oqk ~_:4VӮu+ta9(GzЮ핎-ǰ!'Orh$3)HGQJЫ,J2MqO[׭cz8w\68JNm^o㒽Zo߉ujfLp2N9fmr[ٖ6kq6XQГu"LAdP~8&n$#tKslt?=NΠdhSꀺh]D\uwdkcasD^tYe ewZ5yGYM9esgM6({U->t+< =Qn["|\۶j|ž!{heZE X2mh'A9woq*Ȯ@l5ڵk[ o{nv^gY <-t[ʾ|\'bT8/ׄRDUz L o5?P(F"%IIG! " 9%&Is.F4Ob*Fnvy,#Z!D)eԤ[T5뾺ܖmv{vNm9nv '2ڈvNȚSo$.J'DjV!ϩBǹs'ަ7'Z58g]8sV9kmi;6Wl NSLbgzƴ6g'zqrҙ,q[!OunZO+[s~f_VyZWx hkUCaS:{vjv9f˲kGlW}ʸz;Zg=muޱ$hG~|Ȳh,vOثGp5ޅ?Wޘxc¾zup5 ػMp6fM6Mp$;n9rQu9*[pG>o_zmzɑ@o]Մ`3۞؎mT{}Ɩi 5@ly݂!  !h1B OǀxBn$vib"<˲,,Key;e1Ƙ1E2)LaÄP^Vʯ*J]u[u>stP˾|Yq`kn߮-X rJzxvJl4Tb~Fڟ-}D, )u PR7B< )ԛA^zP7BQ7BUꭡP'ꭥPc *)ԫPo=z(ԫPo#zPS j_(P?I }NX'$^(w$橸ߧTPqC*H @4F( SS|q#Ftq#ꗀk B҅)tKmn#)t{%J`tHkBS5B ޡj&PH H Py|LQNDpG%c?awS'PN*{T%Y˛<_F78[&s_EϩT $%?H|IKuȠuP:ܡu$%-ė4!/iH|I)+KY^B#_"[JV㉁"9Ux)O8NxPCs_jÄ">4Վ'P]`MM@ =pm׽V{lW(+-xeA@ W#K}SC6{r΃{y M<#ycoc =jDS?O֜[80[,U{sq~Cw|'D& MX}U]dnՠ#37D  QhN fʰz,7AJz5z]pAFKG޾E|0b0^, `Gyup!E ! RXPV5  9;g͋j)4Z=v@j[[jooy `}ށ@<645*T]H@ rkp ȼc+rLXLC~3TO5B,} 2 XuWg..Zh{IQ(<W|㾰j^[-{W}:|4t|Lȇ{\>gk a\k jD&UjpB~ķ L.ڔLcrUOip`Va=)F9Ų63BEAzH΅A 9Zr|vA}A]uz^G:2Vк>)xE@rYwz{ Pp=Ėg T]Ėe``]eQpl'yYЮSbx0`]y`)@!I="G OZg<"I "Ewbذt?z<3 k<Tyށ;-L0D\c{_74-aX?׻]"O<5WeeXu&xJ<8]ЈKbJUa &x#赟$ lx7WYϞ?(Yv5G2?BL4vJ6I>\զ;/[iQ2$_jׁCt1pYR`a#UIMꂸ>: \ {4\A<<&>x4p3`Um˃pb֨".BAQQH`- XU^P p7[%#yސX5{w3Ày KrWs>oJ6$BCz }#dg zֻ%2UMa۲:/*`cCǯ hh]ہ@6 ? 5˚0Pu9X zW8M,ޡX#J^=xCOdXa$T3蜞FCSPh&ָظ7e84x5d = ކq\}ClydߎDP RZBntD|m'X k),_px8%I˩Ջͫ# jNg;8G[ÏIOX<@%W)1C^#L:D(*/ⅸ}_n@d ||t !lXkPuw>*M%C#wK F5"ߌ#ܘMتBwVeWaZ"Z3֋"B|k&C? tv#j>3,XGX/*:<<ȿkN(N('zE N~7r EY'3p<_U'v[s@9s6%D:PM;:~ jkUn}~(ap|ft߯hͪj!밂';.?ZۢmGmrUbާd/ !2Ч֪U>u׎BpcвJ&[UQx'۩uN:g7}'$CZk;۟IZׂk[z&$[-G~mg:e=ڑ"muEU۾ʵa ѷJem 9Xrm"kMoW2-[CO/گ+63kȺj] ߀>2JSVNyX-QJG+}iŴbH+@( hifL:ZdPO`ϩ`=TߥR%m/h ;Tn}WA  >0j[*o؍݈~xq&oUX2VX5Ee1 zE[U{TުDTުwTު_PyU[u|.epG2L8Ȇ08!~7)/-jo3Z0M7 f0< HEXTDcS=p2sd,d,CfʂSLY0̔¼߻}8߇7pppB#"2{!,!=2GzdXJzdy| I '=/rjiZMTN-SKO2P9Xf,l#M`&;[Ad!󇰇f&?fN>5s2pg̟\fu3ÿǼb^*4 OMNIO>dL2O2'$kI$rE$ȝ",{eD./偤tڶb[/hY.uҺ"yUIn Hvlf^Q=n)WJ-D-Ν'3<|Y Ʃʵ/ٵB0 ;Ǿxܾڧ!G؁;ZJ]쫶jFm3Ҟ0(jV^(a\"rܙ˒81^ S:_:_I2CrzDUW$%8V팽V,U*++ˋzu%'KUaLI)JC"$մk}0;Õ#$c*pkc?QTCIZgمX./:Q)ў`RN3vBZV 99X~/‹P$ /C7Uxu& @;PLDvD6vz;K MwCqtN@E}P<=@@MCAN>t3A}=A 2Y e%(PQ*A}АO> M MPI>A&Ѓ,L &c*gS!gA?bTcC ֟ XQb9x0·Q!(Lf>dqeaXx n>D[,e16QiJ(n&т8oB1CrѬ@~qF1*3u~k9Z.Zb̯[Q+[8+KwKɳݱ2QI: t3$V?l eN~ʛi 2Vr.TO[st W--} ` EhNn~ iϜch4'g̅3*YӀi,0Mq? vLgXr?, o1WRiiQ~Ʊp4kZ2C3];WaN6MM{Q^g%yCŌtl\ŔZ!4K RҘ-n|0?,VsaH-/,,e2c,ZV@ I Kܬ4mL>gQe|nYJ A ,}el̲@cX޶DX>Eѝ XLfyVEJX.\/-vd;㒃$ޢţ}}y@BFKO`E݂E=i6-c@} {*Kqۼfuס&eݒQIU$DybL5ILyG,q|e6RS}n?NK q:C:NjT9tE k@O:j% @ rV=A5jEuh։/E82Q:Yis 89uţvqTRIEwTVYi{TBwN&:':"{=\\rt# ]J=]@wҕH"F8`l,aj̆c=զ6c!XJvU8>}&l^Ŗ@K/[be|tsy+O;&i)YBwZJ:{_*zssx2LqKt@Mヘ<3qOb y/<GŻ@⅏\}b%rΥer2,SwS'S'yWC@ EhttO+y^j,KSwg.(\^VJv|B ^p_#(%q fuBrvzJ[\r3vb(h.ڝ3񡸗ԕԘ"^FS!ܣ;/h!i=Y0K9y4'sbwaV(i7( ac}JhF+)?0i;Z v`fkaΞ*},P)K#>Oș+ ϹG/Е, /*u }Q]VGp$b_"YWH"&W> ` 6*{|9-dأ9ߍ'Sy|g{ܣ N}:#퀣9R??rdnH];k"r"g3'nm.0=|?zzKfUz,SV0l`F&`{^s'W(~_5g6KU&,9:mA3dZCRK,P2/ Ζ DžQ\3^~=(8N]*F{WYiA$XbnS w8*rJ1gK<.>' TVt )KnODGLtHLeiki;;5-}J6t;;8O;r.зiqS}-D&]JFʴKJp|Ԋ9oܜ<伕<7ODH+`\G9ҚH-2~JK;2ȟ a'?ɡW(`%g̀Ox-+ XJ͊PxZ|+9FoG%PD[vsmY՗{b_"qU}|[;aeDy֕v"kgGbMܤPV")wzWmv@Njo8oX8PN$^Sl4!HA< "o=k2}8ݓ"YR~_o3 #:45:sؓHy1R^YLjkDALuiZx#U&@^pR +'XYFC-Iң4[hc\eDQÍŊ> XF͓⌥(y.i[sR濹*lJɝgY&.ΎHJ::uWKetZ2cNjpbn= +$+OuE1К4`% nC\WIX1(^@^,7~J>SQxU8c5'4-J2w=qtVnE;/#X|$׭ߚɩM7Jmudofx^V+g}ɓB]Xpv/g?'2u62F2ƑUf㬑S+֑~Τ^znI Z9")3䂔׷^&)'Ys< O5r$At.;$Z1w"q7[~\XoYQzzKA[oCi;^Wa5a0iZЩtxhT7 bO#[O؇qN-;te4#{/o D/̈=ZNʺZ6%h_%FسŤfsm!ok@\vX4}>杰kSDT}oJGkwwEr971ºb9X}D[֦eq X!}!M|I.e@ =_$7pյP~^1H91M#zTۓ4f` u6?k:oDNAg4kq%񻲤u"$}+7V@P%*,OK7d "H Osث=+fGFvNg 3ޙYQ\ ef@ED@;3l"""""ADE ""Btb T$E%@ hPq;I/{-p:U]wTe}sG 45[ԶǚUYZ#'u-к] u[?@Ίg wgF9oqy7^0x~’%W4?Q2]% ,.*NȮ2sLÚnYJg1rD]3Na6-6NVXg/:;_.38坦 Z[֭N6Z7oyw]0LekܳYϲϊꌜ^}h%}ٚwM;כ׼cf^f^VՒ%V}ĒVo.VZm;(arڗҪjށu'l*W75kraªK;矗17ciN˜#S2Ov¬dm,YV&kbNřlmzdo(C❍?p$~qvyG4lE]KzG[7n4ڬ̒Meo,wn%Kzٞo}Nŝ.PRغOQycǕd(Y*ͩyهKj6/YQ<%YY} q;׼7ٳ󊺇-_S=_lΞlfVFT+?k~o'oi>~reV7Y\?.O?;:VLIwJG;%t\V5ɧZ!37Tga%Yu$U>wm"B(7T?n!g'*-$=>=p_6kwZ vWy~~~zza?fs譾O;g|G~~}}.'+R_W'{..}߷qG=x'FD;qxHfa;w/ֻڤxsxE`s88cŮ^kڝ|M_mʯvW[=֞jk/~7z ڇ_m_m˯^ƯW[ցj ~uZʯcֱj8~u<:?)0'QދAO#ʶ~Eoud5kjoԷ?oXW}Ϳ#^34I34s|3?4 ˓|y*M_rYgwŏ/5R3muۃ3Vt Ng<r:c#Ngl¹ٜ˘ù-91srb a8>l +B(8?!Dh:x.@| B3y% 'XR;B1-8. 1́yRRi^*DHî!4p+ .$oN"WC> ?)Gɂ1?Q\e4/yk`%|~7==4M\;B\๰?/^p_?~zfs! ?.۫,՝\WZsEm׈94 B9!4Ga\e|>U#&6(ϼ?x6qaReoDHAۓ4Sq[aXKaԧ~y5<'-|o·S@* ΀7ÙGSpLJtXµcap0I+_BWBMp8,r5IIp)̃\ ҇|4bEߏ <]'ybȓ:-c sIMCRCџ>@>H%!7ȹȫ54|ܓoAA_E18%O'hxH4OwQJit ӑ>c$p>Wizj?k:hj4C{}\5VNh+^(E3i&)~S'ljh󣛵µN/_V z9-c917WqXZ\K01&rVNk@zL3B4fj"{L{k N{wxQܽ`LDO]|%0lG:{TF:>~$L^/K쭕x=.c[BYHnگ/ecn"rAM1zp7CJ]B\L.ymcE3$g]7h96/Aӕj#v2/̏l5\y^nl( UZ }̆}2IIs ~!@JkHid$1TGa B y m{ht9QӸ2so1o*wK-[Lf4e Ҧp~9F)2c]!2#v;&r@> 9qBs2:Nq+Qe.Ҫ8|7aOsih + J1+7m>5ȘWF֢iul|dFq†9﯅ j<92\)alu h128g<1rSgѻu)K!ex~oMc#iߧ}1H'~<1-Is  S; =q13jH )2fFŋ&WI|g.~H1nK~OA@4)Z,JڴNiIwtX#տOQz#F;>5z6H [m7_ I k+0qEDߑY}tŌbƓ1I?Xm:!o=#9"Ţ 5v0Ȋ<䅕A9# =#&wwaT?K'L KbW2aiB2"Oi;8fpNtZcPǨjfkN0*pj/ &I8y5(+ԑ$w71>}ag*|mDyKjc3B9f1*Netܨ6mFŒ"b kY"LjtFiKWqjiєέt>Kn:rkn|˴φbcGb"!kZ8Q+mb 7tV[th5*LUch@B6J,)qKh~"5-e2ju6A[=EWXrHgj3Hm, ~(ׄmc1vumm(xԻjWO-""Q"-unqu=>ұ+Z>fOrZ/OLuj׻k2~LaEib^2ֹkϲ#R,f (E<]>7 # ڏSVDQnpa$ \<߅oO>d7 hރz-qHd M *Na9@<|xOg7\Z| ߁&4ϡ)m8L]gjaҏCV]2`]8k߆/_JPdB3gFO)3hѐn 32!?Z>ɵ!+eooD1\ ;!qIXSHLzjN4 a-\"S_)B𥲀5r?,_Tq_h٧I{&ZviJq!* i Ac$,Vף>UvHBf`p~D"*dO;ACi:ly18ް >$=I Crcd[}.rg PUCMadRIK%O{hm=I={!l7vB( nٙ!_ *)3ZZZv <Mg~).O~ ;R|2V4 \O.,"Ӟ$woPp2;Ow"&}Fèt8^D aS\ \!mU54i<ӰND{N|osUV3alzȍ18وrGR!w3f WAh"w~fÑo_{ZBsd'zQBAukدO`hL'~-M;NU&e#{MIb5ĹoY4=a{VȾDӯr ϵ;_Jk, Bhmi_[@䞒ζE%eeϵ%&ZiǮ{)6Ff9_EQu b}~ |hkdSv $eye@gKI*G2ɑ{9VL7h%&Ⱥjbutv6Pd3%S-?Js Tz؝^3ՄAoOO{-Mu7=%`vg-\Uē!c44L&j y:ҹ=GL3x+}'=otWG#+eu{$ϻ\Bg?4< %h䯈awr3d03KG꧲ %I~թC,v <u4̓N4K ;vvp,W]S6_%]5y"C,$m̑B润SWO%Pj{Cz\eX-+ ~>/.!iB[Xugl{}I|H%NjH< 'a0 Weιvhڏ1@ \qؚn撰ֻͪZ$M?_E *Jh}ħ;~\X_jЧȃ!KL g_LN!MUmk;"ۆrx9Eȍ`g%vܷ9=)A@v\#u0sъoYAȕQ>Á<ᅤg.{4|(1Dnkʳ|зT 5*VI/M95є m#tZ'ṄvOn8A!}$nM y8&Iip\ZVf\۔i.e)Z#g3ًp?`gT~JUB `> Qu. YhJI)a/3 l|^hr!6lasص_Gp9>dN|N=3U~V&Hj_X9%4ߤr|R}NuV<]Ki#{m {r)!–[ 3pm/lgЊT)emӎkyH{*O%2Z+[2vD 3„cdy;Î0gsq8;+bꀛd4y*_5 + =<2%9!b!U;8d&k]DS1y3Ǭr&FS8'X# ZG̿F<7’C3bhv(yc!׈մWeswMb c^>5N  Yc@bXg<bp4z̝ȭ\Sf}a?X6ćrXZb,_\g'Z'د`FKuL#v+EFCĬX$ 1v؆Ig'%לXfԜ$G]DXʕ翋 G 붱MBe>oVʊU~|ӱZ˒Rb-b=~=֛{;ǎrm2w,4ܝ?hX' }{L`'̲@~KO /h(uDf?nz,KEY%wt3pK릤iOGsb䵥~g!܃ʩ;UľdZ)=ЍHqGC(G Xbaej#+A)}|G食.OB!&`q[A`@s.~>"l5HIv=a7b^X_v؊U?FOF$-9 ueLjsharb{bYtGʻuĶRK;!FKC_UGl4һkkJ=E6u6֝ooCMy55jWBw6>D'Vp9OZ[LC\%G1\ w߈ !Pc}?iog\̪tL",~du;ѵjU>Ɔiٍ#7%YZ*9Va% k XR ><`֐c YZ{S(&bVo4/e\5 N}o+\f&,ϭ!}.|Q\qY~.#WDnapws$|NpoES|$5%aց[SYX{ ? 4I-5ݸv}Dk!܁& \E:؞a't 4]=F\CG袽ԬY/ԾMjU`'x!"} T2\2\"5Ԡ<ϟ?Mܞ^a/h>R-=K2`u`d͵RHm1<83e܂>dL*ʤ QM > )K e2!VK~!RJm_ ֩jH=5f#K &Yͻa |XAse[@}ꝐI˳X}O)=dT#R,-%2{/ bD x5hs> %}&>DԵ:ѶD^CC I*d@ .4VZ3@CH v5 K2#bAE쁉t)c1cZC1Znp3%S&؍<s$u,ҳ>~ECm2/ZB19̂U[hgHjERCQ! {%AA>突<6~,.M@Z-41O"Ɔb-̩czH߯E=b8fΒм OivqA:MhOSK#gsku>x7\[>G8L`Kn" o +~ӢF"Jm9Z;bQ#r̀gxk!9kC_A-]l >/|9 Ww/};fu="a_&HYOmSbaě/7l+<9εGhXP vLc`he`j' #EhpXNSxՃp=yҶ^< Sy x'NL+:A/sޜB,8ǀtpX?eZ%Jp- = l[V< ]S#G(#JbWx_ci|5ƥL>M}%_c:5)W)Q61 WMftUJǯ|}ǥ $~뇔|㯒7!%Ak1~_H֐m#ur&h_ZHG t:V=,B6M`u[_. R4[Z,vH tSzh0bhCa6[cHFj]] \C CH75L[[ 6潚HZaΥ\c?ٚ/|rz`K\w/n\|.ק:_\O\ߐrS*|]R庨ץ)0:S(W~PW:=oD&=lgν̨V5t>]Wv^z[_+.sb\W<Wv^9%\wEOr=ΣK+67q?xFdrɸK9Ir@ݡ34'cFhmR.^“!Ni'FEI.vg !Lݡ|_Sx| 5@?χP>I~}?sn^U~ǟxiOx_Ax+9 }y"x 0s~Oxσ߆߁߅A|x xBg..$Ed Oi ;bX}1>_\_|=ARM#{gt5Ysu8A9Ύ=oIFo/p.'[pK6}cg' I$9ŊY1!!9͞aϐORvag##`b.K//Ԅߵ44uKFiiԙfJ3QW%N4%M~#NWR8~qKⴗ9/ ^g4"NuiԹйEƥ<t?F)|W *p֋[@҅┖!g"q2Kgt8oXU)GR9.YI9GΞ{=0ܛ=-2Yy,!O'r\ŞSX͖f#M.Mc\4bl8 Qm*zMDovI}H?A>dXh=;)Z.r+G`m!X[(EڒňńŌłŊŎʼnEšƚÚǚ5!!VX HX 7j@Հ|+MFn!@zYӬW=Nz9$yrX>bYFYFYF |O2/fyB21HedeH22D22L2~? <"%bbGL#AGbbBƈB~" yN2^2A/BR) ( TR# ) * ' y]R/ yC/d/-1_ÔrO6?F/M6|-!sw̃m'2dϼy-fh7~cԘm5172%2cXmnmg\h\b\i\k`jael2[sƋ+[ƻ&bJ7MNf SOS_S44444Te1017-2-323m2m35vLLgMLML7MwLMl7~sԜm5172%2s\mnmg^h^b^i^k`jaen2[s+[bI-Nf ZKOK_K22222Rḛ̷̱,,ll4ZZ--,,g-,-,7-w,-j~kԚm͵Z%2kZmnmg]h]b]i]k`jaemX[s֋+[ֻ6bKmNf [O[_[66666VeͰͱͷ--mm5vl'lglmlWm7lml̞ae'!q dT,\{}}}}}}}bo__߰߶߷?rFvQGc#Qr8f88;99V99699{͎ÎcSs+[NpZ ;~ABgY,wV:f6߽,t.qtunpnupr69[m3KkΛ;G.費4.]9|?*r |WZw-vpqwmvmw5]]3 +;GA6v-娜-} P.K2y\.W|ݜ+KZyU!Uy|M)ߑˏbT[+q%GU(e2RS*Te2OYP*e_9)'ErCS;muAwܝwGGǺ'5YyEMmn~Aw ժʪW 5WP !pu:ZV4K.Ru&uڠV6zV^V7ջh4KZ[kCHm6NԪlmX[kZk vO{a #{'Ş|/Tyzfyz==+ABo;;[.n6'6 y%U m=Cg>/}Ea1r_777Ϸз̷Ʒ޷ٷk]]]=FQ??_/cs%UF^Q0w>A@Y`l"P, ll4g7w1h`4  %`y2X\\\\l 6O/o !crh(;* JBe1PUhjhvh~hqheh]hshGhw9t8t,t*t6t!t9t-t3t't?(l;Gpppa8\. +y% ]pK5>>~!9h`$ɉ G""#""c#"UȌȜȢȲȪȺȦȶHCdw999y5DQgThNgot@4?ZVGgDFFED7DFwDwE-hGt\bJzVnAc3łx,'376 + *bձ% ]XK5;;{g񌸕o-p</W'ǧg+k,C9Kgųg50 kHYeUfdʚ(kEڬMY۲vg:Ֆu"LY׳ngODFžD<O%%F&$&$&''$K+k[;MDk#q:q.q1q%q=q+q7 IIsҙԒd<O%%G$G%&'$59EeUuMmɆd[DL|RjMw8`)'f:8A΀ @ = Oy114! mfh316<B l ;߉T':~';){G~AǍ74F Y. 95P4ԥ.M|SE)/JyQʋ~GPo>y6&x<?͉_6s.H]H] u.@7 ļ\Oڡ9ac;C[(k2#-xt ں2]2/H]ˑCrX~y 9Wl64 \ZV#jYZVըe5jY},(zAwP"]ĿuY ts7 [A3t6͠К F1"Q? Oz$ᾡ[ mV=x<EYءRK\B 2Re*C 2'ȩl 14hE]^"uyQuyQW6яR~"> C ސ zyq0,(4py!PĔRė!+rmZ'[![)V"Na^p5bA&Xl-bD{9~9Lj9s"DcQ'@"b$&R%I tp8 ]lk.8#3t ]X31313tf5CvgAQΙ*"<A|gzBSĿ#za"_tů!54 ց/cos H_sCk`(4.5#ւ3:P[*QFAQˇ u/ B9YyW4XE 4 ց/cmls tuNè< ցBQhE^+dY4 ց*)%((J_ Yșz!"OP4- A'{IWA#4X]D ]v(rd3d3d'd'dYA6AAإgwjؔm>;441\-sE|7w!sx!5:,Ǐ .rx&H=|Y|` `X]8O ERazؤzئ\"l&l5aXaXaaXQ"hm(E(GQ6*FFFFFFFFB {^ha/Z - 88886Y=9Г=9А 9А9(=txE-=r@-=PKjC-y%AOAOAOyt7Oo<ݿo%[ V¿o%[ V‚ ( x\'#uBC=H;#zxTpCak>l͇2V|ؗ m+@*@e m{BG!|< #36 a`06 a`0X|s@)C(<BPh O#S eKQRJa[)l+mK¶RVe_e_e_e_meVme2}T2}MhCP6T X_+`wDJDJ*Q*e+Jz;+vVYRog$ڙD;hgLI3v&aG쮂U vW*]R1VX9!,B[ЖT WjPC j讁h?yj!עl-ºT*4BC-Z詅%A[A[A[A[A[A[|]QGuz}TQGuz}4 }4 }4 }4 }4 }4 }4 }4 v{ =lÃzxXUj}Y8[a l@QR֨^kT5kFZzKQRԺ.EKQRԺ.MݹSwk<<<<<<<֍u#j݈Z7֍u#j݈Z7ַqR4EeW Y#Uv(䟃&ns[!odH% دT8(O?sH=˟r^| |SD@-/RҏBƿI9je^dR!kXI/"؟ $*D?BI $>d,y|@&$2F^%~N ?"oTQ"9N:TrSSK>!g r72擿%:Inbr#oT^agwz]`Y%a dsKIDDDDDçgND9DNQsޮi?_tz߷f/Ƣ)hZUh-z> GGt#bڌhYo},덡zxׇzCSYo gPo>NYo}!덡/e) ꍰײ^- od1G֛B}+NCd)^pC/<(rP^G|e9+sW是q_"|EN9+rW䂯E_K"}E\+rWfX|QTTS%aE\V q"Vč+FۊVʸ,qʸŠ1aE\#kq".+aE\' +aE8_".q^Kqc=E\)+RW$WHHH _d_"|E)n+ny_ 2}e*+SW$WH5_"5|E KEKEJ{-ŭ+rH-_ھ"u|Ei+WHHHHc_,_l__\_~[i+W}2y2RR4H@=<64|7 % (hK ‰Mf7C~?@At0Bat8AGQt4CqJ >>#cKPHE(@AQD# iA:1 d&iud< JQ(*i1@dEn1JJOɫYFct}OU_Ǜ6c%E~Gr 7>m@\ XZB޺ )f5#j+^(>o} }}• ѥ:Ρs<:. " ]LKðO@j5>},4֥iCF3i͡Mi'ڙv+F'u] Czp h8~# f iclTKsQgG-k\u Uw6G[V5mCv=@;ޭ%ʳץuj|CΞF4ΞE94ޔ6w!uuppL8{]~= ]H,8c.Ekǡ}OבW@^Wly-{!s q4.cp,6-̱vp8¸. A1$\'㒸.@PpE\ rʐ1સkT\ Cm\p}!F8 ,2BN"ĭpkp{wĝpg3!膻'{C!xx h<x<Oēpx~§9|t'=HOҋ&}H_ҏ'@2 &CP2 '#H2&cX2r d"D d2L%lr\&WUr\'7M0%UJ4F(QFuM K jRrjSK4{ - K1/{IM -Mв?/,?GAq8b5ǍIq8c5 Eqٸb\5׍MN A3ŒG3f!3ƌ5Z_[o=^k:`}o~Y#Qu:aNY3Yu޺`].Y+UuM&&L+\A#y8:e7܂bs%Ny^'b<IO%!)"y«j:SyM~/k:.dEi>>| |'>OS4~?3L> " _K|)_o|#(?Ə{9?/ }>mE}پb_M`BѢ@R[ሐpEEDQ DQ\$"YTʢHUE5Q]+j:'h$DEh*梅ODkFD{AtDgEtDwCDoGu2L4q'i4s;-}:zd xo%%\s?l/j 7 QӾ!fp<AI"" l{"5O</$QL9Ch':XA]G@j:h"GP t҂$I>zt# 98\D+j+EA_(JJRw3ح(&n[Sf|2-s͹a.4b\mƖ7`%aJqU*V%`U$Y8ʵ:V7εZqkk5 FXp{Nk j-H``}a}_uo).x3?O ٥ fη0{>iϱ&ۇHC:餃3ߙOVZZ'A=!刃-h>l-P>N~Ewѯn C}[~GA=D#~<?gxxx~/%a?Gr^AgYt<@'INST:Mr$ נ#W{@<UGد&r۽yȏ{ȏ~x?cRbTM!nOT~_Ef A1kFag"βsc7PKh}E`4Ga4C2z|Bz C>zzhxh'xyhx ؤ˜A6 Fm4F#ml#]f2rԘ+{ӠcOhۿXs[m7ͤj3h"62Ƞu#dcH/ ,-&M&IkKHk%+׍=j[5k]E +I9k)w'9Om1O3 ˹&X'y%@筨(fXyZ۬m(WH*u(s֡%%lp6(g A+u͒||*}z D8оnj\c1kbkb%'-Yer(JRQU˪JX(ʱrPI ZmQuTVUNU^UAU*kU8m` ތYrݬLJV\%e;o8o\U3g5wv8VCBPVbN\A*JI]NZzԁ4Z0Ƀx5mcX۰M۲9v;ŮjW5ThW{=l "E"("D%E)QZeE9Q^TE?_  1X C01ALD,b_ BH<(xBO)F<-^" hYc, =ZĺeBU{O.+Qf8^0ʖW[3-kQ! pqFQ(b5jW.k}_N?֏GSi~V_֯W7{EQg(F?,~99N o"1Ć~!"Ԅ6dCچtޭ/#L!3<,#+yN!-d;Iv9AΑ+G3\ DZ͔]hOڟ!.3t}AߣVܾ(=BO Z"+Ɂrʁ:F@@@@@@A`z`N`Q`i`E`u`mE6y+.n@ѵ+J)T)JBitR+}He2ES+˔9eu#e]٩V+9劊TUe:j5I-VRj.jO:TNTuJ}F]nP;/=zJ^ `D0:h`B09X.X9X#X'(ll,N . .  |-Vg]}hi60fLVؘf&!054`.K6ef GZs؂ecMy,ؒ[1Zk؆5éX `{v֑LZ;. 0veX{`w}փudXg`oQև~?zAp0 ap8xWGQlp4+' |ր^fki/1蕴1lp, dždz lp" hd68Nexlp:|M`l2pFͦi~<68=\ ElA6>y|R[\eCl q0p%[ |=\ŖdWc5 r i8р'0VeX`uVXU{5Yeཬ KfUul9Ȟ> ^`gh2~>ne Odv ) >~ƶ?g**;l;+)p }}v/ؗoWl;5 }<`{Kf;1vx}< N!ivxeG1yvx^d')evxѮk vdޝ.K@.  <% k@]0n#tp,R̢tL!RfLu]F*X=hיC,m=(B@GXClt[:m`Q]tXLuX\&Aza`^XR/ ,eCV XUcjf/_a_e_g/^v~1O%E!TONTUPM9~B_ pڑV -]ЏIB#4JVVbR{& j nj749X< M ^Ә),tZOY=[Az tQdD-hZk&4G ik"ZQ-A+%iŴDJi2ZY4m9oF`l@j0-"ccQT:"G,@W#!#"gFBvۑ 'tFJFQmڡ"QsA~RF0zA mi~Q~mxމw%hE`3fYʬ`V4+*fYլfV7kfM303f6s\ln0FxcQ`L1Zf=3le5ۛfavuw?t׻fYjjfC~5Y,k3ˣ @8*[XЎH Rp^2(ޏN{;b$RUx7DP2S(kG$@vG>kk)R$R; \˯nr; tg)CVC+e w?+VY#1ڃP-\~_t"fh y3hzރr+ځfLO^&CWF֊ FE|8lt>a8 endstream endobj 2532 0 obj [ 0[ 658] 3[ 220] 5[ 611 563] 8[ 575 537] 11[ 687 324] 17[ 681 653] 22[ 496 593 648] 131[ 488 547 441 555 488 303 494 552 278] 142[ 271 832 558 531 556] 148[ 414 430 338 552] 153[ 774] 155[ 504] 486[ 332] 491[ 422] 883[ 554 554 554 554] 888[ 554] 890[ 554] ] endobj 2533 0 obj [ 220 0 0 0 0 0 0 0 0 0 0 0 0 332 0 0 0 554 554 554 554 0 554 0 554 0 0 0 0 0 0 422 0 0 611 563 0 575 537 0 0 324 0 0 0 0 681 653 0 0 0 496 593 648 0 0 0 0 0 0 0 0 0 0 0 488 547 441 555 488 303 494 552 278 0 0 271 832 558 531 556 0 414 430 338 552 0 0 0 504] endobj 2534 0 obj [ 220 0 0 0 0 0 0 0 0 0 0 0 0 337 232 0 592 592 592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 652 651 573 705 578 551 646 722 350 0 0 551 846 679 695 614 0 662 513 639 676 0 961 0 0 0 0 0 0 0 0 0 535 591 469 597 531 326 520 597 314 0 592 308 890 604 569 597 591 461 459 365 597 531 798 525 531 479] endobj 2535 0 obj <> stream x{ |T{23gޓL29A3փ^Sr|bƖ/[kqmMsu|mͬUʊҀF),sr'ʴg۬h3:&MR*20b`_-E4.1| v'gHQ ,Z:G_dM:Ϸ?#du:vrOTn6&0-w&t||J`Jgh[HF"WZ NNY<ȌׅdAi LD=Jh'`ly>,y+Ƞ>Ƣez>!Q';uP,9Vqu*` FTj X7jXF(Ѐ d$Q(pa/;y`bn1QJ,B "U- ZŸXN#v -SADa} Q\(}?%0Q. uʺ=ΓvzA4L=;=Xo[Œ= ,wBP >Xl0XQo\m"brݬ0bu{Rw2BڧNzEW%&۬_z@_&t轸ʊ揁BÁDp!2K,[ؾ圕v~MU'm6@ln- m 8xTutM "NW-J I. t{G+EhLhq<(91wTx(z5/A=g`>Q 'a*EeRƺNN%K&%\Y`Lc22'0AZy^a=: m=Ă?Ll!|~Utﴵ*ǁFHaޠ zGvޒ^@L7 ߉kd嶊#hXt D0qdĞ8Єh'c{@<髂QB[ӊޙR=iQd&RL9"Wys u㞡ShO'6NnJUnJ F8u{-<@ q SuPd$:O\p 5cqJ!k%"C|9Sx<&ţ'Ix*m} N[#}6$j@q5# *7$~m/#|9q?8Ndaz 4i029hS:X9l0I;WXFJcJd"_dDT=䡄G(r EB{8ꉲ m Y`ɏʞ©.qYeOV5*AYL*XVÀ#D$܌'2UMd-J~ zq E#ɡZи$U:X E8Ā1nsB*rp:w`";Đ< Ne]8S=8\CB^ 0UU™bWJN ;P\8J2Sk`I >UХ TA*(SE K_,]g"@"='ҷEH_$E)>'ғ"}Z#"HtHEOwtHwv&ҝ"tH[E"&6nT y!oA@6g!/jsr-䅐C!?ېEr-kk?V}ۭʛor: knrZ;6dܴdμn5}golKwn,bMgpg=3䞣?w<̇BhtAv{qٶ _ž!|oj.,R˒OI)g?}w<;w`~WNسRf[\f6us߬aicqy:]!ο0ݧmɧ%pGr8m.sdklѧ)U4\FKiSi2:5(5JM#hXsRԴZ7TF.f&ݽ^=ʟ! 9AgYP=ы+%[zjEt r ':Q}]G'` )etNbJRCpvcmʪTJdy(loy,6_Ufɓ$ϰdf,Q)L\N΋w8x8?xQ}ԯeQ >v}iS짷~(^~д2o3w剝5viG{B•fd\̥Y[a[}w qZ '㥂YU2F?PZIj$4$&p,'pΡsg}g%v{q`[l-m 6̛Ma3-S*avZ_{Y%)9`"=i 2O&y\͌Aиr(,cS"_U_^>-_+~n哿Ғ{]E[ѷc_^=o6k҄B:wm0؄;⧰х(ei/`=cIr»JJLr pXf1Jt shQ )Ρ`%%k`q~>w Œw *+̉s/YrQ_6iU6^-Ig)c)M^9DF|WFڝaht3 tB4{aiyB ՞jlJZ#KoAx(%* (ƶI `[dk '/|yIM NϭLj[⃵fɵr83+s8E# 1 Ì66[oy*x|/d_+>Ǧ&{lBKrie ʯ-ۼ,&=&]RD,?]iW|ppVu~~p8ߞQ^Sa/*Y,YR\D>^%)&FSG`+840yermX[ ysJmNN7T.EqW⏱{OF75d Z*Ο3ZL{8/[El@e˯)U2K?˒fdKЗ-P$f%N' 80-f @9OQ,(vSA^e߄gE })MK >PNkZ<^QtyDFf + 4Ǭڋô?CjNKRP㣻nmhӝ]0 N]=v^H umRB6d p3/[ٺ9%ڤdOxµTod2Lm |W]G毩˪sח܉=kǏQ30kK;P!:C^&Kp34Mt!&Z+r[n7kuSrS?_<ԀcB_N8r+ \QXe]0K~`p5 BNbc{OJo]շJ;,fY,*@K@G^{ZCZ^k9T.p3\6P/e(=m^؋PxsqN|j/c fC6bD>-&1s61~ӊyUM 8YE6|MOK,@5X߼{}ޮ.UG6bZZ}y ~}<* fBO]"+!Ҳh:DZ&YyYKt3:CEt90%ryG'ӟI&TpybUO}e91rh WLbM23B9\;OMg. Z7C3 ..-ZݻKu~vp/q͛#u5]my4oVhp7aeUGk)'\J<:s`nZ!בNpv d\2y=  O^F!%$V8&k}9}{-vGNQR%2{CaaP^'ykMrI;َp6mCѨ9OmSt'{3_︻ocQIKs9 FP_Ѹ+B,}}_>mTlXdq\]u؆̛ړ O(otۖ]"v͡m]˔Udhxu,GtZ.,oVZʲiLm $8hwRN|sjhl^q(Vk C.#YUKN!Ke~@Nj:KgHB!Ek/!BZYntIB|w5 

|*Fe)ZԈZP'.&A=($NR!w@mzv4 ݳsi5~@ũ'm3$"3߱4fe(R *okA "sjI: ㋱M ? Lh)t ͍T*PEPjOnGP 4Z_-eʔӁeU23OM݁33Fȉiy33'L77~ 6NN.^eŻx1Gz>  ܟ5!s6QiZYY5kB fkv.~%Oҫk>1R@o> <<taG?JQ)Ɣ[)VSVwV/&-JkVwLyL-/_VUB"]0se 3V<LCvT*Q"d(Olcs.vmtN܆{pƋ&^Ϗ?B4Q^mDo1\LMbxD?*$ȱr\"W{Sr|[~!ϨP**s3]>Wkt߳ҖT2K7ޖisl:,\Ȏv(7o8}ph_U[9[Sxf?3]\uҏ嬿\9Wtߗl+%̙..Wzy;oYiA*J krMΕ+=-gzoG8 k8x(qJqX>ku9GC9[Y'+]2W\'sxإ\*W͙?7WzeQT(T0W:WxQ}RrWBl9(fY$2jlYHnot[_m|fepYnn07v+C$Wo*|CՋj5e-Y[/㫉Z[O|'NM+HMbxzm>um?suۧBJY 4*֝G"3Tkmoik௘HKݏ#\i+6$•/$ljŕn=SYs?If•d"\yVɇ%K>knn~Wĕξl@>nDr7܃+⊰\?gG}a]/J|U;^6Xg g)-%6;UMU3lm|7C3]g3-0 |8O 8#H3R<|4pFApF!pFapFpFQpFڤ6Y^qQQQQ QQQQQq"2 |GUG5GuG GMG-GmGG]G=G}GGCG#GcGGSfV6׶v׎WwSV<_<;^68*ؚ%-nW ksc]wt#o{i%N '܎jVㄚ;pBP'Ԭ 5wℚ8.PAM/hN;DKђv֢5,ڊvKti"ЫC{E"+s[ kxxCT|ʁ8.shg5q'% 8NTwq'p^ws'p~wp'p; #* LnceVW R]ɝ8ٝ]8|;q;q;{q;{=jQ>|:p?zsx;=sx;=/v`wzqPwzgsx;=39<ܝ#t(wz/1^KX/Kq^^//wwOt$wOvwOup;USux;UgSuwt,wvT̝sܩ:<םTNT^N^kG^$iVDs-uF'uRuhNu#XtҭukEŅt UҽE7W=^G߯7-]_dfb33Wd4 B1\eiS2W%9 f[byǼ#f{Rs#. kwcZ(C)|rjX,,&ºa=9-\^/g77˙mmpuZ^ns2;/O  GGSSrq9|N^n׆;]rYx4<*o MrU[5+[N H kCCĈ.1*1Jޙ|.\N5S}T#Wwߝj$7S)SZ˿9vPnԌg0=fUP9|%A/BK!)0hlH') f7¼ō0ou#s#Ϻ.n|{Lz&ڻ$LЙ:Ӈ 3ЙIT̼Й3Ӡ3Bו+]W t]9uAU?Vi9UvZ8-G;-GUVs:;dmGk9Z3srD Qc'G5urD͝Q 'GvrDmQ['GuvrD]y;ﰒb+$8IfIP')4I tBN.h 䂆: 'F8N.h ;N.h 䂲\4't 8N.h ]䂖:k\еN.:' [Q-盩W7U^fH~CJֶ+>DOY] ˙ lLͨ0T,QWWz ui(z48ʲnvJF-$mѴ^ i͠Ki&w2z-]NR]MG锝ifA˹4W3õm:ܘ܂Vܑ6sJ/pwN;x(yKc1!/ŗ\HG8!NpQIeqY2,ey.)+Ȋ\J/2.*7WTn F)0Xc"֚R`)ӌof'!8iyZSVW ?TV7ˑ \ JRA*dY*3\W+-<U7;;jmnZ|| > PaZ6ꁰTXJ= ˩Š거rX]= ka[84P0S=G18b8!vijCzң7z΀6[΀}!mKvnJ>k^3CzZw:]!NW>uQX+&ߐ_YN Qzh }v~vr岢lYInL4dXJZB7*ZGCxJ>z>abɄ䉧$!ܜxs&^363nN@%­mٖۅ+7'v#ܒx^n!|&͉$^G5 ro"|&͉nIpkyNvd ?x/1e>)aLb|S䓘",""ȗ1E9SXLc)ML1E)r*w1E Ɩ:|>ș"?1cQ$I$9LRDIʈ2IQ&EI"IQ$DIE"dDdJDd"ɼE"$GI)rqJwI9$ FI(,Q$Y$HhDd"c)R2H"eb)R.d2ŔSbLJ1e*9?H՘"bT)R#H2Q$v')R+H"ubԍ)R/H" c4)8H"iSyL1EZiSML1Eż>L2ct)9LMP>(i8=3q3~T?/'YHd*($Ȧr 'Ir",9MN3%r%gKer+yy||Yk9 a+|wGF(Zh P$D"K)H<*qMd/qTb2;mv);r|E=r'_sF/]FrKn2s=n\sTLJDJ= !Yöd#uк=e Fލ::Rqq.~^-Oymvy\&7Mf\+-rO }~QK ;'..[˶(Ȯ%L9\#(9Zcw}^m \*;ΤBdwٝ){A[_lKwr(ɋ`9Dlj{k~z-{Gie{W޽aKwf~{k{]{΋nkQضwwimko˸z2[wЯQwɄ+)Z˰$p*ἜsN\ s.\s .ɥRr9.qȕ2WJUչ״^Kmz\pCnč_.fܜ[pKŴ6ܖq{w>ͅܕY^Mo}"yA|1!ɰ~N&oڿA~_?'S}Hϝ?r>fV{}F? 6zZxF[W˷Vh&iRLc|&)`LAS6ELQnҦ)kʙu9l>7_/W9?___Gcq?矶Q* A2H RAࢠ0  .CAF,l[am.lv;a°k-{aoxQpp80pT8cqxN ')0z%pV8;4, y))"E/E?%HI$SRR:6Z>| `UkX"]Xڀj>X !oF~+Y;o)~E>Y&sGĕXZjmbkA`碗Iɰ ]"yj_;3ZZh}夭AKٝ-hmqu⚠釘?{GHέE Q :Q3_jnڍ"Z@RT>7Z^Nl{^kUxŃ`vdvN7Sm%n{Z8g"9ڴ`ђ67e͊f[ۛlkfObf n~L f-{L+u˅-Mp3sڻ`\0>L &) + y`A0X\\, nn n n+~Jv2,efP Zf Z69lgz_9g hCBr[cִS;:@} #.hh!<^tŢMD_q1( UdLZ ֨bfY,HVho4{Xo,ko7x?q9T-y!I |8%뺒n5uc݊[&ʝuwݓZ>{qz Yֲx~H? 359dyY`GR1;y>sw ]?cl>/W _?'/1(\.k]]3b]O)mRڈF 'oK8cRKRuF]SuIݬjERjCQk:|%_Kx)_|/oy9| [6Wkr/ȅr\.W+U*o\*"wBұRQzT+R1ԖkLJz jZigDOQםE#6K;3ڜ ߜ4)y(O~39[mLŭ:DeϬFV#t"TjfTguGgj)۞hO#;Skjgʶj.yUɷ|h[mѶ4_Ķ*/IhgY߃*2Z[GkZݙBMLhy[n=mkֽqZ{kU| ;J}m^5 F mfZ1k~zey_Eւ VBKV뷤8'nΠ>ek.ZAYsSۦeܟZ9ozg8XCϹ[GahCEƢocAN%OX=^嬱hvO>n}N99~?đ;CՌ!"4H#u*ABJ\IDDqJJBDjJU; 3wzZ z`|CFYp?Ko":ؙĂrsP;NXȼHQsg8[.gZPyX㖐o$¿n/ś,u\z=2{Ÿ̟L--/tvlr*4t)%%z*DHO]{2t|t ӝErHL\Lt:@8~ĥ|Oju|n߁Q(*+6﫴Û*JT @u_jՋϥs&jcXb Qh 5Xh'5o }$:@5Rqx9qq*^/OߤO +;U½:aUxYxMxKxWPDD"H'\0Q;9% '3tRȩf9djW,*mmUD'DgDDEWjw[t_LbX%6mb8\wGcCţcITqxxx8WR\ .+;U:qY*,&%+~(%"BX$.I$BI]G2@2X2R/'IH$3$s%Y%9əK%5HmR4\vFKcCcITittt4WRZ -KJ+5ZiY*,&%+}(e"BYd.Y,BI]G6@6X6R/'Kd3dseY%K_/З*^}QZ߬o__'&AbP c7D c CaaaaaPjdj427 g -K;\(3j&33F{ccTcqq1۸̸Xd,5n2n5Vwk#&icxxxx5 L d1LaS'SwS`HS)4Քaco6-36JMMM;Mզ:S鬩tttt6K2#̝=XPh8s9Ŝfak2/14K͛[͕]s|ln5_6_325?EaY,%adnc`li$YZfXY-yKeeҲRc4YN[-˖k[V**:겆Y#ݭ}xxk5::ߚm]f]m-Z7YZ+5Zkjlfek}hm"¦Yl.[-666ogKl3lsmY%<[VfUڪmlGl'lgm˶k[v.+:#}#qD{=>׾Ⱦ̞o/ooWk#&i{~~~~A;DC8\0Gccc#1ΑHq9f8:Ky|G̱ٱݱQ8hppqs\t\q\wvwST9 N w=XP(xg3ՙ\ut8K gy<d,g-j!y,$`#?93d GlU>7f8!9#I!׀_/~]l+ [wQ߄z.Vh4 Qh%V%<; کNlG"L BׂftXdءhVԂfd,,~]x!8 C[WRWWQ9,6c-? d4!:U,6[@ݪ`;+3+dZ hFG! $@9Yb3VN `3  zGb3 s`+(b5 +axl24x$Iez^&AE?S!9Xl @T C\!|H4#_ A o6%#b.dV---mm-fbQr/Zc <`| f<>fJ䳄15ԄlZ ]bbb(v`DQBJrB<$*@-fOGCKKZJ\D4sҀE!Ef= a-2ȃ%dUЋ\%C4$T"QV#SߴФEk}aU9 ]XKY1h #AFhb"1JS09fd)f@ 2F=|ssҠ%XpzFgɳ% ` X\,nn2Ȭ.˼ %lYʖel-r[` X\,n28;~;~;  .օV.r ]hb2=t=t=t=t=t=t=t=t= C00 = C00 x{{{ే/YO8CO8CC84CC8چm;v` X\j2V`% V`% FAODAODAODa|b7(v|b7(v|'`|'`|'`|'`|'`|'`|'`|'^7o Ebp>o+0:\ϖ2-dˍl[e[ˍ5Fhx /_4| c ŠU ZŠU 1l[7A:z`>MF[`a |‡a |‡nЉC!<@haqh7oV E@Ʒ8????--S<Ol<ųS<Ol<ųS<Ol<%¿D_"K/%¿DD6Y_Y_Y_Y_Y_Y_Y_+Wpwwwwwww>%C2 }2O;)O| V)hV)П)lb o )l?S~La3%O:z`>MF G*Nߩ;~T SYf*0Cp3xq%ah4unT(OϠ KFt s Á`-0}~g@d!rYX Qmw~M@q'gtwhDnʝN¿}sεp\'(n"7M妓{foohyr%?}1L+WW;{O]Q ⟾H_%E[PEFk>}NՕAK_]/zW׊/YqLX G\j%U@PdAUQ{TYOQge𿋮FW|AICNK~ ky͢-"8QI|ӏ dH9ds9‐k+ xT`_Ԗϡ9Y],.0" 6BQ d˞F&qَ'͛\hM۾3/6,,U@=>2$"\(bGc;𸵕ֱm ?YZv6;}mu2ybӒ2Et,Aa5'dL63`gCԆՏ6-i3flziKk$19F/I>>CߘlQWs( ӓ'O}1Qd 3T:rRiS;&GΠc''9&8hu 7q@GdqዸY{g^xN;6>K|+} r?r<'}-+ۺB6onɾ k?1AxPӾz,v~_I=s"=n S`Ήe[`[?yb?g{!TE+z5aլwoѱgjco᠂ MI#fo}'/{}#zv^E'KO Nͦ6ȹG[qd8^Z$tyАrˡW<"RyC{3>޲A=(O3څ>9㣚yD!XњFk *w|hh񈘈1oLmĭDDn5 (g~/Ϣ|ò?r54ލkݰocP fo0J?o?l}EK^E)5]Z ߝ,\dï;m ވ~)]WJ||/%U|üN Bst5Bï΅Ϥ利Y]]?N. RKṙ>EzeIvֱm͎]ix}[^69`4?:}1s1X OG<jfJVȎyYp(c`ߤaG>tٗ^[ˆdžtU9m*ΉUn5~:xs‹n%Ƌ> ޣݭ1*cVM:>}a՛4z½Iڦثř\r}|}>^t|mڇId̍i7SPaChZ,;ʔTIFT=" aN~AMm\-+k~{]>9=|8l[=whs.*gzr#Ǻauӆno1V֥䌌:LLOx#&N! CZW&fL/^ab{=]p۱ gΜ[ '?)W7V~m>/S>^ɒux]쒹ӆ}Ύ|I='/^ ;}u/jsm{gK;;!یN_4wR}w~f1nX Vx9)Ľy~E/x۪O>{ޭ>3u;c㗏en^%3+[I!rc_$ڻ{G9oqkƾ8ʱ!UG 2m˽iw\ݠg=Y}WExw9/z ::vt tԅYz\g)gL:L}A/4;pfoUFYC/~quخUk7^z}g;&%']ٵ=ǯoEIGWb4m)F}y-mXX?k]:P*mKx3vxu|es{^63#ڱg{쪭pSi{Ea˲?3$,=ph[tX׽w)>_,5cz5s*v~QEV6N+ךr5_K&FF[+lG' -Ia'iWpOm^QSru{Nm^!~Tߧ3K~cX;wʼ7'rd/1}Ծ yU[l۪G[a>`Gw7i&<縷r׀RuUtяCs;~wi/߰Tc_}~|;"?sl' Ώf(~<ԹlUjԲ%J{ԫ'͊wvVn֯jڹ,qD>]pۯC%{qtoPKsHJן 07+ג >uqmYr%ۮʙFt?},P[Q~{G_zw ң@gkTTcGc`? ~M79-yR#&]vl߹k׾ pdyON9&ϘŚI禈]xtuwQ-6oݍNg>}OƃO)_x_˟kXm23h.֛/VSҿ3LeXܐK5&"Z>ZÆɏbWNi }j KUgh0R0EJ}"C7إܝvON͛YTYo7o6߸Y#7ԎL֯oMU/J RTFiVZ1[ѥSveh9){zOo-V-;zO+uxFm%7>|&Bٕr/ڧ]uW>OGXeUO+C~g5/mYq o6+n}]'"~iv9s(Ek埭2>]>ɫ͇x6uؑ7[[9.z[ܛhAc酐h /To?ϷV5:,?m|puխ*{<3Iʿ?Hiٲ%,*x<& QmQ7Sr[-lb7hbFaPD١qArJF 2˰WPMj`S̢0bYIonwXmCM@P ZJ"ao]ȗۦob4{+>ٸ̏$q5+I_O|pj3#c(:wV^q|bޡ3YXyx$}pSݽ6XtR\P[Io rS=8n|fcmU5T92:ݼWD}>\CӃ=SK{֯0 L̵Ǵru+v0dsy49b|8:ML endstream endobj 2559 0 obj [ 289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 553 601 0 0 0 739 0 0 0 620 0 0 0 782 528 0 558 0 0 0 0 977 0 0 0 0 0 0 0 0 0 565 0 421 565 501 0 562 540 253 0 0 0 802 540 548 565 0 367 0 274 535 0 0 0 520] endobj 2560 0 obj <> stream x} xUս ds$Da@+ 2$bó}G@  ͳZ_Oqǵ}>E>$Z[{Z~?lO6@ƥ7M e5TRP|4k\:+Յ__¹i*nliu?]Z_w;(ݶp^}}Kg;xu}6Oђ(;6n_!%ke? cD yoھOo>{wvl >|`W ׶˯ތUxhS?(;ȃ ,38˵ɔS%x/@3^mvNl+=Kw\W?Ȇ9 mcðO".~d |bg;υ_*㷥cIz!zW jgyQދ%ƉfcHr6C>5eඏ$M$}B֭Gl1M4&\ޣ}Lb&( E\J  +G/ d&?,%?l#/䟠f$0y-4$/BX_MWmɷa &߂hCH tBO5膻aDM _]-C w/Ï`E `B%?gSx6 x Kax19r~< B9xK> oß9DI>{'C8ʏ3BΌȃ!/T @4(ţ0$#Ʉ Iņ..CIwÆ$6|&.)Ȱ1"Lg\Ѹwx ,ɂ@'1IU%?.6. P[6j=, )+4If-İl!V aIDaؘdc fCd†eÆ*a RVh&*Y x(_ņ !#D}A'(c\ZUFaFM% /L-r jĆƆaCLaCfc41nW0[D̿Ph>Z }TIl@ư!~*l0BEKb1T+ )&PLLoXM( 1]Ip -I 6*Wj6 [Eai;KN 8.6TfOiFKbSR6 X0aWTXgP$M r- iE43a;`WS6ܣ`22AbQ$My Iy1 ̆NKՆw  {Mⴠ0:Ldf';ƞ&8b6;2 ᶦh56,Pc٘s4Lxhg1 !ז _3FlB;Æn3خ$M e;N8bw T=Z  &획MĠpȅjGI )lF`ujtp Ldr= c1YdAp= wl.,t\*L8$M ~zlxђdRkHn'] Y.. >ؘl?`EEؓ _Ga>#jfh|VݞM+6"YLG&@/TBgt4, MϪۓw,Z-bF2[)TZ6Z ?dk`Vfll&UUnwY!dSf_ov2k̬lf7 4hVu.hsE Y ٩z: p&ٻP9;z=I7g*88bLgP{9#Qy}FU^~k66I#a~ b $l^Gh|=*54iX0?5eWX O{zպ:ֺhNtܝSsUwRE&Ht'u*>/ߦ}X[[ۺvm:zmk[Mۈ³Ё'˴ƾ>3e?wKu0^ϖ Q.ۗboeҽ5 0)d܆ S2ɣ զcѣG\ɕ].KD֜zx8#"n Zx .Ǖ_Ԫ5ou\/X]zSSfi1: ̈e,2)MJ})l̨nitm< e<==<: ̈\=״8PJm{Q|f_ װd͖h˫ qC%JY{ŋwr}7?D_}Fywauϫ~]Q>==n!I! o&P{ Q)+ p9/ dfUWa\z [[0`,iSzIwٮ.zRWY|;vSV;]Z{o/"'oʁs9FFs;坶NGkom}j1!2f0X[In4;=^mˁ9},Ys3k~']GN%?&d yJA.\j΄38gY9i4[|i թKv e2B7`(0B#E}nfsmaSiL}&wTp\m;ݏϜ0vYm'3^L#jzo#YHEjy:[vtz;|q>e O(ӖAiGN9NO9ؔs)G"{1}5Mbϐ-o~zQ^~9E؈O?tpj7yAp ~ <w(GeCAL""XqGkl+DbH*ˡT妙! ritsۤe? y8"'A]Hr|꤅Sԭ< }0'R 2ĝV݉׿u+|4W~K\~Y垹rCj QU̪bS ć.B|TTSUqo ZOfUR\i*Uflr ZS\F)x%ŸjaRq5qh X:IjPA=l6~ygThi6_~~K/-#^ѷ!ʗW=(qd\!)ds|E3U5FQ|Ƙ|cznnUPXz^o?~QO'%)~~~7Fc|L1)&L1[b3抹w^zW5P{Z/kI>tHNIܫ& nk¶~@Jz{a: 4,mam1v knn0Gh'O}ᩓzsL a1_%A2^yr3 6̎uq0Ӏcv7Yxb4L\f~N|EI*ܥ8an_Ӏ28s-}jXʰb..^Jݩ5.}ỷO~_'J!nD#9|٦N}'?14[Ec6)8,s&P 遥mSR)2Rf׹1\C2(dGLnw)`W\jݦn.!$>)!pٝ]ݧ\îA I z/~uer!e7ئVQؕ(C¾9+-ߏUREJb?- ݲ!rI!Jb@ʅ8)j< f JDRmed1@Fa 5 F޼ zHcVz!4$G!J |)WUgFZ+v'e?[NI7":RKTb2PD}tP?zX|]y+ i3k`)7D@cĕD01䠧=G9#~A/thVPh8h knw0hT.N{qV~1[.j1Yҳq8`Ě*1\▸5nZ#=baQѬw;-.gМ$\޾@_2LNs0=KGG-GGm=ẅhi<13B|1,+tNGo8{ ه؄T,P#pg-$b6ekU D\ڎy5_׹LkBeJ]y)Ӧ»4L\S p|Lˆ8 4C44S.Hk1[،^ G>/s"mc~>?L<~=9C3ޡsw5^KHd&d'B{‰Dn"orFsv1W6.'Y#k/[66KWrcc$aIwªb9'a{T-2f .a/΀Q0tlm1ഢVi}b}AM2-52#,q4<Ɏ\s|e˯7DFE~Pd_Ai\,\! ^}!Trz$¶fMd<42|Kdy[,haH[*b!8ˁ3etR2.ah@x g 9\\ftx ww*p*|LyJ^(oF^i^ScAa8q:l3?nc e5n_78.G᮶֯d\׹+gzqkc>״gg q́EM/ȘxcTX gd2K(NKlCSڰ6G|)Z0'Ff$Dta80?]o/c*j1T!t #R^;i$\Uo8o:\ )박Kx/ g=Þ8P(p/~^t5qD?k? x-R5~M=ᰙn D^7{m8D0zz+v_KGÖ+!0<19r_uOp*1`tknw,C'2 |нm5WzDA1(`i6K2CU qaGFTU4~1m CZE*&%H=)Om, twMw9?7ҋ)h/~>n!,+b!&Dv.6lYBR:$mTffLiTZJ,pT8*biWPVNG>+{@?e ~ru] R} }7E.jT_fslOE~ c%8Ճ_V0tU=3YGpB90G 'aE%zo?@6Ds+Op xG/5B%QDR/8h1R4fJ|R| aw~_:!bGbt:X~lkT@$ #WJazC+/^}JX"kȥT~J4 i~kBHzϓӫ䩘~g*2ݖN*az54&F:}H5 0+hn>L7#o+ɗQvVr9Qe +@A2{ɟ |y-+?C25(ge"CC+%_eށrrrh6 +]ӱoG5xi$oO٘0{]3x!$_HJl {B^<.yyQ(Y|9,lQ|~ uǑ72(? =|Yi+!_}O|9[ X79/3ˍ85($3rju8~uFhpM9i00?3FF#_-F29+Y#:& Z#_|Be87HAK&#!|_> stream x} xTU:gg߯JT IU^ ZQ +Huhѱ{Gl4*ڹcQl=(|uqh8^4Tݵw%'juYg^?{u%p`E&@q?gD?t< =nXqyҳvuys-\yx=zS[T_}u]~]vwg\*?6nٴ3x}ﺶ(8AE}wiKN4=AoߴGb5m|g>= L53ov^ͣط Mk:n/ɝЈ|;Pq^W7wpې~ny-*X}JxVV?~{.3Su JxϮy0Adl $VAkn8qɯUyxB߿|k4.@]>l1Ͽ=Cy ֲnn5O4|Ix @< Z.ǡ e!T X]vON.)vQrYEBˍB/O΁Rڛi8}ۓVmvv/qJajS]%8J\r< U ׂ.~ܐ!y&d?,$)@yB9T?90yD W(B[p=y߇N莿[3 =O!O)xC9 8 /Kp2~é1x N#>2#> /818)Cl츇Y'T&9Q*%A}IUh (I"Ć,Rl R MUZ_dR%4)Mw!L9I"ؐ~0R$Ć  Rؘޤo QL ,aCdT)2lH})S"IARdA)64Pl=k ә z qATE}2=VV\b64).dԫŔJɰ*~:EA@63 o dH"UASIl$wS4]lؐDdL&EbCj45en ә,&-`9 jeST ;A%6 It!acA$R-Ze0jR{63٭zĆVR+$RhtZ ?IaރLYmr@d/Qu$@k=ņE7CA It4 0rW &n0paL|7EӅ3fAh=If0 ~dd%FL|7EӅ|^+h4diRI0Z̪L6[,+&I/eeؾ!62H`Rl`^V+gL}4Vgj}Djݪ[)6ҭ6; |K9Yd/-ӐDj ņMCa#6*uSؘ43L:HJS 6Cr`*9\.ܚjhkt[t0LSb9?4 i.} SaIíKghu*.< fZ Hz ^ڀ' fKghu*lL9Y`i&x2Ӎ^.ߛ >|KsK`ئD44 ҳ2Lٙ 24\7ٻMZ8?vgT'/o)(fR4}aa8/L_D: fʵγ͜ gr.)iY}1x<ӤTYD,gp6 .1Y(OӤhPkHOϜ9H`vY]¼^*-G /)֩= VI" is0ou^Yv\s "/t2H>skZB.'Sj@-,:hd,˰a/gߒο@Г&l`Da t@؀հ:$ǟ%$ `tϩk?^{ꬂ]L,9=/iīHr@g f7,ih_T=u ([ւEzb/.H[ܰOa\_J\7FV1rkxmOf\GZ1GVdWxZ#˚.Hdi\#W6WiXhlZl% jnv.Fo'1R#Iu,|THrE\^Y+^T֒ H #1R#/)#1DcW,ӰPc(% b*RfȬdf~8sV$v!|{8|/:"T Űk,mUc Q>Q]T5DQSuF]QwM3sd㐸Ҁ?[%VgCY),+!ky_@诶q%܇?J[۸,0&8n7tnCgRAL%nVN'y0꣉RA?8pU1몠J~T5~]o4~0Rj64Xm mAiE[s8?צWq'N-YsiἾyGMAq9 V,OQ/r,,~Jc43!K&dGzG1Xz={Iis4Xc'`,%H}4Q& ^U.)#V{:~p"&ڱHDL%-xL_!4~OK0Nj#ϰg8-0D#RD(5zcG LG #ib.YK_TA?w'ٰsUbqҫ}-]bٲ{8ˈɰ]IL%8=I`IMfmV1h$'\b|/+1Uɧg:ꂇ|{$.ͺc;v;MwrJYΟXx[x_:c [-7ñ/ljUFq!0}Ĭ'y;m"\D]D1DSD,"3⊸#HZ$=Ϭˊ#3"9@$75cSTGgDshn4Xve]Ƣl qnn s%׿8z=ӯAqlgK>?~uJTy/V ;^o1T-Viƣkt=ʖs4 kij|]|ԌO>ŧ4>O >cbJ ].~_CW/ aiXVaͰvX76 gʜp\qށocϞYl9ϻ/+9Њn7v8##, ke=kGFܩndf Q1*s)S3Jϸ2VU.$Diḏycy'C&N;XRܼ={k/!ֳoYf l1#]d YTH׀GlʢϞQbbO}Y_~O nư)l[vv]5ir'͌YlaӰy2l ۇaQ_}E;3Kom{"wlܳ'箵xh=w9R,|ඃc%PO榦惿1 ?ۿqhǶ_ 'ο?`rIҵwNhIn{Nn`qmb 4 QG9(qRkeg &;=|X*,.#tWkakW39 Ơr\7b6"Pm++l95\V3,$K qC itC!Ðq1r #%sH0C̓+`>*Jinp F b-O#䩢Bc#;񈔇R9+L;WeCcA~!|:?C%?>|S;xAEQXΎfR<[^98SGH$5 "~Pߍ|1##ȗ2߁|+7 _yKyk|9#:EL?)f̄[!owC|uVò'ț"ok[`" ƛm y U?ZoӿG7?Cވ/ƶ񥌯`ZzhmXA%u8w/f!FQj%/e =P:i9~J0 oam[q]G'|%ҀuFdzkFeŌ3ބ%#եLRj^4/eOOOOOOOdƩOO7%X@!c+pLҀ=~0&vY}+pЍ[! T64c_!_xtj͜IWbO0^bob|%W4h!obla:[?[Qkke|1SN"_RƛВVLGUqe{/ !/K`●eup/.hk@VnvwlXmgAq0XձmSQmƶhۺ͝5ؼ%Z[qu\ӱuM{a͖-m|:}m5:nm^klZnƶ 74Wf5]VCMkEWwul--,o&ZTy>X! `P v@1ΉA(CYNvhM8sy#~]z:^5dnƫZ`BZ7˾:m[cM-(ic=߄|Kns^:,od/c37lf 7!bYb[ekQC%]xJQo)ޯGM73a:ĿA}FbI f狋 -d' [ hXRZ ` endstream endobj 2563 0 obj <> stream x]Mj0:,Ed@n KcWPKB}GJH|̼Ǜs6^`D\5€uL 0V_*0N~[Ν=k\R`w2~ߢhKOܯ!.`m G2zQUM۞4[@ k .AiMABL2t_Q4]UC,3 YgH843~)kO Y*_7>t endstream endobj 2564 0 obj <> stream x} `EW=GI& d29HwȚ#%!$r"UuWuA]&$끨( 뮐 dC!/W]GW}]bDh~N_:Ac ; '7: b)+ Zpe]ͽ]OW FfmFʝӈg.(̛?Hʺh‚=RY~; 957Ж%ò_tQ9]M/曉-ۤ]7^8{ޛX1iv`n!2vT:"-C{IneM[c% 6|+VQ\&O(-7ddi u(n_sL 38[b7mFY"rO/"H E%Fۍ}K*f̚Q93'TU ;1>ď!賂ӿ5Ga"zPy=~%V2 #s 6h+}?PRjcM=H Y)FaԜCU{ed φh4Q fE1͠kLaPxy\d-7,c=L1|8zaSҌX{oq:Bj(+D&,_@NԿ F8^^ZoL(\o ?l1o[~-N}ŅSBBBByw?:}S[sa*!!!і`o2#XIꦄį&ؤ"a49qǎd3d1Q*ܬj/8?kkZ 짫?L[ !!!!!!!PIeUe ?j;Ƭב}~l@p $Y)$8Ԏ vpᤅ#)%8"P{wܑ6j%Avpp'w܅ԕxNDKI܍ɂS(AS"8=dkE)ނPwp_Jտ~FSoo˨8],Φtp (<\Q ,p>ePr?+(< Nh .|HJrhE4\Lch VX WQ~Hp hxQ*"p9O߂'?I4<O<TF邯Ae *_K3i~f$lsh2:]@7tC+&Lׂ| f@ h~n wznAW ^Ls}nI72GnrUD +6t;~;h <(x% ^EwWI2G#t7h ^K : ~'/= Mh< \MOCa}=C\Con$x3= ~ցߡoZz=M/ ; r_ U_[FOo6z:= ~joF}'mMwf[v nշzWw{M%2xAU >H?mtHaz|$cڮo|v?)_m _nqE >ߴO/OWSt\G:_~kB?O"4DŽ~Lh1DŽ~Lh1G~ThQ MXhB?􏄦$4# M?"4#BӏM?,4B M?$4CB MPhB?B M?(4BM? 4B M/4}B M'4}_j}/B M+4}B M+4}=BM#4}Bw M-4}w-4mo M[h.黄Kh[BShNo M)4}Bw M!4}BwM.4}Bӷ MShB7!4 oM]h6ۄoMh6ۄomBӷ M&4}ׄ&45 M*4}Bӷ MR/M4}O+i@kX0RU 42$~Ei6 QJ; % ?]W W5_X[ !!!!!!!h[VLjoVVҷ"yQBBBBBBBB}+r.Uj[ɫ ҷ:P,QmmDk#?\*2"3zŸjppWK=s! q:g[W_%OWujo[+N\*&[4Pc}}ГD@V$} jok$$$$$$$$ZA|+|om: l9R֢obX\x(AmmDk#S  FT~[5`Zo vU Մ [-PB: xDܷ?R7`7Pco)kqR+&\\·:ãjh|[ !!!!!!!ڈH !f WO5TM m9^hqR+&\\Y< x_%~Ԉ6ABBBBBBB;LzLJ'S .U`  v=ZԞ4$'.^,nW j=+.9ѽ F|+__6&[ojΫoմFW..· i=+.9h ֆIfw*Gn>S .Up7ߐQo);3]$*x/ţZϊK&HHHHHHHH6bV!ܷ //B~yߡR[;..ދg[B_-&Mhm8w ?TߟB|\Ц̘j:-^0wj]XڀVY-08  ^ ~ TKtl.9^oP^Mxسx0`/lk$$$$$$$$ZƑS` E+NET߮|CaRs*/Q3* `6Mhmw&JQ{Ud$yѾoW$6PcwjAAOW,|+{qZ&HHHHHHHH6zO T:8://:vlEJ 5vZ1F>[IUp>jt?zV\r0&HHHHHHHH6f'Q``>OJu_^4튞7s|\RS bv,~f Jf zRPP;ﵠ0拍//:ujEz 5o)kqR+&\xW箄ֳ⒃96ABBBBBBB"BB"SHWO5TMn.9>uh'V~i"WMi-.Ahk$$$$$$$$Zk3)44!S2sS .Urr-75]?qRaSgOpw?ҫ[MhmHׂl6ɟ֍7U=Z*l8?hg(`ֳ⒃ؚ6ABBBBBBBQE$bb//5۷7(ui0B3EiWqRj[ !!!!!!!qևDHa=N-"VP,uŔ;TN3iZmtCbuuJYNܗRo `FjHiZĪ?; iGaffoR?~4J)~ϐ :9~?_>{=%[RbB|.;91v["#څY,~>fѠ \G^ݩĭur ӎRd(mGV^:n{fo\Ӆtykj2=ғ^;svbrL[ snVbu]72$Uf;'&%RVwTT˘XQsӪ2[`;ʑtp ܪ3=lxQnNtLLqRe9ƻɑLU([t6fM7^X[JKcji1#(o<Cgh27b'++oW/qi bVy%yx 0En~}G.)jw8+DUi 1(FE+ 1hGqiNvT9H=qIRb5;U+Lh(k:_0[m/Ò"/ }/ [q<}K*iȷap8>~K|% 'O1eDWRu5Qa#0miqZ2?&5.{"oN=JN(v+%tIH^2tI%Owwܩh ɝfa-O8)Vԏm~aoCY`ݚ#5ȁSoĘ"ȝR2o5.Rbpmh'y[('aǨFYO)Ӽy."xc'Hgj-#3T=L%1ZYcZBu^Mu N&bOy'}'3ِ-JyWzT'UїOݏFUun3-`1rUuJ]E}審[17Wg)l3%OWR,N [-xPyK6 h!$# 9zu=\3"hǑ5gu:sD]N?BǫA\?a𢡊E~4HO9bju͚vk˱COsL]N=U!NE<cn81:<2u5& M0r7IR\ԙ:s1*),7 V;qqnp-+xjRq PzpMJجNPԉՑR'"8ם J'T Q1j]jC艐ed& n&Wm2O3h)9,xJ`5Qm\:SS3G}R|\>| 3yRUj:TjZ)"cZe~~~; ncq`7]acqqqgqI)Z~)~.a~\x(W!߮^0Gc*"Q/@ C(A/56ކ?K:4| a0R,HYPkrZva; e)%FQ~\9]*']k2wW+[֕32S]qqq]ƭf8f8gtFe-Ñ蒱FKv$;$lŶF[:dÐ-C 1d]'!%UıN?퉌J_ـ^A%8!al۔'$r I./`[}_%/W' #dn ~c chB0 !T l@1XF'<<&,CmLs O3ǹ[N |DWb,_Xcy0rm71|xZv8 Y^YF,}lL [;e (83@̾<]mH=陈<D_O=Hc'c{ӱR\ &֘Q%FaO۪0nU3 lO:DJqW'c߉vKs =lC5 Ůtt9f!o T=6?cG”}6)MMMLMM=LI&9l5;fh̊jI;GF&֭ gM T_afwd1wp>f$ט nU1vW1RnefE8Ayhn$ƒ ,.f2ow(~bmpdEPuiJ9D$+ ܏w(vCq{\7**3rs6*<*.nTٍ9 (V@5JVMŲjQm467*6[E6W4V@[xjJGm)y5ܘ?@X?JUN'$:y>NTr(v8SdŢ~[gA}Ō: ΢2.}PȝP^|v{U_,t*_6ǥ;&9Ҳfxq#r \r<\GiNqyy467ZLq>/^}ֺ֊GdaEUf**j0ke?&Mcλ#mAEIIN^!/L&Ȋ G%PD׬Yf0gNx7oژ|wgnWIN1cN=\-ӕҗJߐn3[b*bg΋]*vC-zƕ*Xu&6}AOΞ3,ow s2c ]y 8z  ]FhGy&FL='pщPSSzA\:ƹWxĞx3~ =O`PSTY[ ^)6܅0l텇FAG' Wn~@?Y#+hq֝^Z(ZLur@i lFӁ: G@ӻ4f:9`KH߈ZMMl+dT1NZR8u" aqz G<#~xze0*ZORtaӘaV߯LtZ-UنdNJQ{zKg#QJIP^VM#8hØ ^Dz}a iHaZlmdYw%C{ؕFl)AմbV^PR2vzS<UzPcZGm!-h0w,Afe>Z_-fpC3:="žW|PsFqnm'ʂCQm/QP f^eWl[V.{W1*1Du¸'d4M}7wD[Y(ĒG eO].Nn;Piz%p 8̡1 _0ЕMe!XLyJ PCfjH]kJ Mu[:S">8&lU`IspM1߭-ޡ3b1y zn! {me (X( %[S&) ,Wv(j{ |,+gwҚR 4,6[new?>{˳lw~}$VTNÞf+,X*u8B*Fe:շh%k(m@ۮjl\dJËhcOHT} ƣƓ&isMotj F,C;ze?jv6#fT i][jgJuz|`-,Vԉt^9||B=Pq]ݥj G1CiMVyI]. +~Je'ٵJǻv^l2EYLEZO4ze"#C l\c롸XG]KObsul⏣V,o1m{C+뤄aqeq nznd*Ksut ˕д\.Jt/b<{HMBW*( #X6JM8QrrOQ2ZöySbwנ UK]4^D˅2@c)+z6>mECY8f[} 9þ1PkuɅ6 6_0m w>{8QC𙸕R6}c렿MQ'4v+>C{#'O _fLhgDB1=L @z]Tyj>pQ|i> 1=a D%v0ܱUĝ8àW)l<ͤlAQJ%__yQh؂rT֕|*HH?~OS֭'ASbb ^v@㌮eqLެAtf98 >;eq=3^ew ']r`" . *֪BHZ1S S[m?/5egwC~w332'+ -E׷Yڙ;Яn޽]ܚߔo_$V?˼jRͲUZHUi@R>" <enZI~F5r)m2QuH0*1?n̠2ʖk9݈=vxG;7:GĿ 5S:*eά,'sGytM}~$jg_6sĒ }%M)GS$3%FY`fؓ37%KCoʹ/3{g8B#r3]-M{abX8/{QiζhMH4m["2ayq$I3{= i!H7! ɼKv9?)oWޱ<9ɛ#H݈x^Rr \]#uƞ3sFtfdA)qiiigϵyR)Lɒ+H&Ńr@PuM3!Kp$ )dbHɘLbC~dUVZ9 ha[ҴqpFUOe_F/pJMŬr;#"O}|p>xw{}YW-z~gR`1y؟4yvyyd{Z\c,~Z""i8wFm gi9zOv`6٘O~?!>wV[=Žq8ZPE>9O?).nӘ[LrYW n>tbM͝. _rsY[g+a9bUuQmfai~ 3-,_TcZN3o̾rTUȵ]g*=SP C3G}7$?+.>fH)񚦟!=bnG{Vyq W;F*'?))78rncq2ir33-CAxlM#9"i&_X=<;&K_= {ZoHrj ^o1*_$~XC"1$"Ʉ*0~Ie̴!.e%K:ehd R@ o60bP ̰-EQ-W(K٨0eQ\XaG\ƞԔ R=(##Jn|xȚgJ̷MKHINwM^nVyBZ:aBd$,6Brk)b )brߵ5%l@ a~? :UkaBj^l3XFV`UiaY-N1A@zh@64*Z= 6dW8K$4]iC>{q\I-Ή,WDkzw6skQc$#\_8]i +"PuK$Q}lAi#L_EK0)T΃v))LnRonQT R-XFgr(Zmzh gFТLLuGL=&y_ȓϖϽ&{ z5.YֈFOC#vJ0BH΂"u3;jUsu<̔I-s+\db{2=W00P8L'::(v0 EO'YKgrxNW&ҩo!Q;\r)ޞ2vyGFAX1!/(?UWQW#{|EJ=mIc"0ROR ϒ/^IJ2dn"h^N]zHzrL\/r.r.r.r.IKr*&$ =Bk {ľ o%+C8H+jpEz<*CNpuT1F x0Y.w)甿׼S"1^]J* G&煮֕xڅ\>R8F&ydzTdtB ̅V1 :X~\Z;Z qвHvԊypkvMJW2yAŭעUHxڇWU%+D>}]fT֪{-ԂQV !aubȿ|\yWbk,Zo[zex-IXfU̻5׋ݦ [1:֗.Jo]>QkQ+؀DK/3|m-hY'f%vۗTt_X5 VKϵYiԺE m׎z&spkZSuNWgWzMW+,QCm^u~7^h)uzպ:u~WGsUվpsK9Zjjy)ʘh[(ZQ⛬ wv ~ y ԏYMy]MZP' ;E89A]ZVk->uRUYiCy71.p/lcGQYW B/#¨-]:ۻ 5UaPuS[kq w_2#]b/6:]|'8x*C±sE;/OKOŹC ف+҄<9C$_/_+_J|Zﴛ H#4: -$,~Dx$4վ{c)cH k~!S9u}>B&zkC*9ʾHl;컠wv~}c%h %HѤDi&kAJ(m$L$tqKK^#}| [o_x$+?(?!B  D2@]P0R]ztrJ5kuoVNrr{olH$n㳠M3M7 {t'fH67|Qb#5ZZ#{{A?m7?} WGf=?}z >c=S맠?~+k#"r{vl>e3aqvBq"ť-߅'#Yšm5ļcF&ʴ؄n6DjFִ-twDL_} 7@o6議)& (=\|V?~ r!!0g\qn>/}>114Wup;-XMꂁa;B5*V ;čS'ď)v$RK`xc봄\w;E'[C6^oC"\䯉GxNNj% BF.͙}gK3ކy-I K2f&42oHQߗxX!J/Վ6r<@v'19H^%"oMy*SMZZO0}t@l"n&=:#ʴ+){2] nXZ9qVlkgke"o[J6Dy\gng*5UV36m:eVͷ,E&kco]j:`}zVj-e{s892nqqqmWŷ+~|;'LE)@ut~B?E0 o1Kt٣gAf"~*-E %(x&;8<1` Ox6jG/'xޥ-}Yvvlj2=di8K&Cfr!E(\r)IBtHr@@Y@-tBh{:QC Ok,Gb`)z۵Y11kгFYe=ף}1Ѐ:#aA712[?ܴGoE˭Xg1n 潅9@hj"Y=ς~G^3y^N/ll'oEV:!}s4Y"/1;2ؕD{I2fMKe]D'Eh#{1 {!a62xT -*^PM& ы1$}{ѷ @7 i  GtTZo&l6sl%/RxHz z=zG/2@St)dCVENU@/l59^E(Dz},4Z2h0WWWf/f/ do 7@X-ooy6'dB dbVA d B^m2BAȹr=ar BIHyR^p:8_g< QGO3ddIejO{r˲VK,_ɘ/r?: 8_3;ȯsߌ $&E7ǣGH?@#zֲi`Zuэ8=^b7ْ0)-De;x;h?q):x2CH;i m҆ l.o@z5D̖h H{.;].=agSҲ 3#ef{گGـK12ˣ-lVm@}WAkPnq9$݈r9f=~abG;yy(F RÆ܎8Lk0'-O>ML֜蛰np c.ٌ2ںCn+[p\qDZk].رZOm aN\h7!CQٵkŔYHh!lJ.VH;߁.HIzC#~Tb~E])⫁vw0z@;vx 8zi6h0_<` -[YžoYcawcwLǙڏa zh0 7E:N7 ?Ll),{hcaMJ eY ,ЬuzjGסVX܈ѹĨ{6xX?t#6 b) 7;!qjJtFX9IX1ߊiC,Q/LB:υ oz>~ݣz*f17:SلIe@m'!p/kR}Yc_snXq=>Zvg{o9xhЪ{7pNp?Gl籄paѺ}td3;WRV9]Z B诡)p w?[,{|=.+ Sb?0!ۚT-¹1,G)\:ŬM1rӺwX?x#[bt2~&]\Ӎ=2(i'b'l}Iȵ2؏ t_w † KCy'.X\xnj1~6K3_ c *0#:#'9wsj!DH2V 1AB&#IF됬d!4%XHv,?Er$b:$яM?~N9z1% $YQI>s17)`il)b,L`9,Ld%rVAxF&6TYl6Gb X=ab2-uc-pc,Ȃd[źI=[n&7dKj6)ûUk]Ay'p/ Bz@K<#@?0u7t 'ЧI6Krig Y[ HZD`BH(/PR|<@{#X2tKЦ3m  B&W!6v>Џ1 @ zB`5hNBWsu$jZn1YХ]͠f;Zxs=4O V1=já2b%1Go6ݣDRp61΁, ]d-/_?UҵZ|F}'CGw&|%TS@ z1Z )wMc|o 7]ߓ1 c> uL G+!Pyч>k}bɱ'WЏ?-y̿c 9zбH` C8Fv|1Jk]Z@<[7E~|7"|l*C GǫdpaU}ou\ھDŽ;5/_Lb|y lm/vaC؟󂿼ho^kػAo=sol}13}?zrz8z|}y]1:oi8z ttꁟT^jԫ/G]j+,= e&&И,3 IӒbBKB CXu<^˲CuXKxxXp:!!{{!9u~Uǭ[nݪ0`'b;0w^>UA } 6? [LwrSS,O%oitat!JVDG_"RoW(M\'eϧĻȧyeٖŶ"ͿmɢwGџF<]-/Q-џ-)n[V8iT4⮊}ܵ"A(]H*8C-d> 8t.Bj,)CA̗Wqm_= y.}1 LBkc$jleӏ AHY2HlB}Zށr^P=jBmȎt s"m4fZI6qg>(sBs 9&8sv"Pfٸ T9ݜ0 T9ٜj\2K̉2=3!VLύÐjzlzbԒih<}ӜP3;{F8n&'b402@]4( 8/fc!g4 e(a}jLa<7+&@"W܃{ oo%?N*݀9@F #3H>Iu8G`sF`8^0}0<9\m7\{Npv@g < 4!PU#ˇ :Q+ԯ\D!ss%DHH zSy2tqe.d쬡w;[p=P ΃{cwrpwjKnC[؂$ چ!k`|Wԯ@U |A2lW6C(J|,0:q?DGڈNjn/@V{+'Ip cX^`/VfQ+؆l.M!rg / stȟ4k#+| 0OJ5` ~cuڲ`N==јDx>C Q*t~>,Xu`?`zFۏMg֖K2-Dd~m Ifvebتf*7{n-gmu>kDl'  ֤kf#=13~c%zzZAs z̾}z!XW4EC{[W:hw0)^֊`nbW+ȇ=UCM -{<x-4۴{D<8[{0i7?`u"sa[4l |m)ֿm=!k]wQ:vC3֙~dÒw7$+vFLB˅~vʃ@3QoyơG1l^nZoWK*p Os]!2D] ^G/: aV4X<:'nG >8U̜Wa= V HH<YGY X=ݞdTgއ)TdsJO_YuҞ|s9yS5KI+5yfzb4w=lĝ@eca:;<@25u=!Sos" dt dC_->Y 'g0ys1Pys)P m?(uv gw uN{.`0@ =#4t0My8< ;'=-eS'6..e KFW(n8h:tqWt|Д;G;}GvAkG=rd:؝fVJ/Ơk188WU.WPU8k -;|j`0Ocz6@lݧ(s?y?ڼʆzfu77&^q ӜO+X/zcwG,{=9ߩN﬿]O* 81+7wT9Y}MK Uz;_[du.wW:W3^.~-;7p..Uə ߭'wv,n-s%@=a9ݍ.`l?6؟x[UoGІʼp}bNG>Cp7Y=PFWbpjz#@/@"ޥvw -cl]6tFyπUrgX#].F s<*䇢0%w ³A1z*_!0CIJ+s뇎t"nBu yo0] } .)T5R]7ɝ9F{5P C4ӄ>ڹu;جgSӃ*~k|i?O#! ]u{Lsp2oȈ-<5} wzEKL!#uZעw_Z{ƙCB?Fav8Ԟt[]K2㻭zӍ3 + yW{ȇ`NİXz gg8b:W5K8%c|AvG/vϽ;{|)3O}<Cgw'Ǿ]]d|=exOESX)- q'zLk sx1wܽ-{WKu"NNqO3ĿLYj[ ǞP5g*#i!kv]ߞ6nƐC,KcmXC;|e}=!Kx-x9lۋ3% ʜLbIB9,t<1p9-= g16> wR&SȡGT=g:[Q%G+U%g{i` ږ "43z B_Q_QRI=&J' W.w%>ɟ"kɯ q'D~o1Q#Ї( 5!?*DN?CEPZEA"J脨]g/DѯZMXODۢD}&F=荨mѻD_v?Ջ*A }Nߠoѓ}Џez~B**^JUeU9*r3|UL򩤓/v ;E{#j/6)cc~$UDj$!4"QжLX0]OgQ/nˎ e|=Ӹ/k+4ηTeR^K2,|= ̟1^du#u yq^?'+N1NXˆljs0X?>zϑ볎kemvX_iN)/e}#I}E?cG^hM}{V}W 91ʏG[i5ħ#y"?>oVT/mwjd^χ66/2vQ[SQ6+R]oHI{:Rϑt:ƽeZ&H|tE^~\q~?Mh>2υCVjB]\Ft}פj7W٭[Ԕ_"mꟆaUj6 s^uf]ᑮͰV5^W >߃^6s〾8?n.NԢb+<_"9N֊ujynugk P40o'|y!ՐDaH҅iǐi5!OeCIyM5 1/F Қ+Ч042n/cۛ4t1La j 5 }5ˆÙ:dFt+du]Ʀ_{”K"Vi}UG|>_bO[E{szebx|)9U<_sYOuXGkzs>0/u{e侺#r>4wn}g-o6Ua6L.f.fo:3bx̘ڜǟC8ytxЍ=ο][ןNmiXHWwVM֗?(|v2Vuwچ8uOj͛CTecDnEVۆ%ߕkZ[B3+osyx\Syr@|vgU٘pyF,g fDoBA+(<0 tI~?~R~Vb)3i= cdqw&z"0B80G.W@~! N%g|M~2II 7~6Dv2B5ԼMd{/WVQ$ ˬQͫ |zZJ䫞YfWh YU>]HP* OJUj:OU2TUMe! vr 8BzICsJukR5ʁ^aUWUړSqYvT;k3{PjchhWim˴kk?F9ͱ3S֮¶U!HQ!H?TwդORFIjJ4Vj5FͪlM+UPc/x&4qMf@sk.1jF4W457 Ljf}͜*8-kV].Sk{QHݨnRQœ/mjQSOϩ szR/EZ*xz v~T1Ml; ]4izA^R?򫟩8yUIR=, &؝&EV393WVT(!퉊e ݂xSIڊ:<ޞFj=z]RTq8t6-pU0 8 **+.W\NY1QqbzbbbbъamyVNtrLb%)|id/  ~cH a!\0 n@U` <2/LM@TJ8z$QS"5$R!TDAjVު5@Q KDLP&(뭱4.e hNȍH9O+e<8Yr9<>LyH=oDyH 3,GچBuEqc@~~7 } rH"7Yi<"=1”K/N׸qmcꗌ!:@#I gX^&KUJ+MHEoR&LY6M{Lkz~zij{TcNOJ?_+Z p4aa[u rzWlקa!pDߗc ]Y Nq"Gbmq$` p0^?ۧ Y }xWZz_²,V۽7*Rx%5o'S3Gb~7VPW7a/o{SI,n@ⅽI, yJ~to <Yyc/^gf}mt 8 .D[/-u}I+Gi|G} }al*}xgμnM)Onph1 wMōx)k8Q|̯?lɣHU}BX8?]|"_ǯG}|CEFxÿ+JzdV#ӣ-b%k-{O?{MIo(^JE( C^\\ʘ{\>[;yC.1 ` `à x'qs݈v%dyH_nk[嗀_\e*Q \| Q;;R;"ooH'mIIG] {[ #g("ofP73#d?(Y~kv}]y.#кvuQuΖDg/f/Eoguxio{#F ;7c7Ȼ;R:ɛ:vwtdwqdpɛ7vm|g#矌]BW7>z{UfXgC _dEj%YrYB6x^χ9)J3~rH]_[ W("K܅8n7wr|%> ڃ.P(^iM:H!1 ɖIU)A{(yɲټl~ݓ===FxԈ~@!C#DQW+h_d1M M,H(.|I⎋&ȳ;zz7 oY&l%yzuҎ$Y,_spl2۫oz:V=iU +U nYL*ʘ)ɔ4++̆Ǔ ro%Ƹ\koɴ2zl<;<.!"A!&f$HoKߑ~K-R+Jڥ]Km"шo;[Pr#jxՌ/AmriewSգdv o<߹33w>ع\ 9dC snn,ZOR3ph#ive!# |!6cs&}AyF6+cqɷqC>nysre`$./N(((#jz$mO] |4={HJ9(VzHz,(5|,,UڎJ?Eۧdqz3qFRoV>P h'^.Ƥ||ݫEq B^jJ 7`#?-w*!GKK!.%K,=,ݎ'<DMư7%g*Ap9ɅXEH}^5֗-B8}I^{\wӷ('wwl-[@L8!ID8Q6IBx7F(%O9< ECc9m9my/]h~mL"t !dPAeL,1%a #Nb N*=Rb YY ӡ2YMp[L(uP$d1%ʤ* LN@s[DD@lTDiTD@D',(gA&QeRD iTeZ}[cǎ;"#SfNoEȵ,ފKyX_yke}IlC)lIlM1qIl%'{fxObq 7?ϮT{ /%??+;$g/Y4)*׈J%|o1em6Sؔw;M[ls^)ĜeW~ߔ{)*!O/!,!?vGe%moջR$.,\pwA=k鵑oNⲼmI\=O ez/Xp]%=oѕX3b9^b͈kF3JsC>J&;%'J ^ܷܿDo=TB/%t.6.QV,=iIJ.O5i↿kKYť1=)vI57 }q,rpH=抜;Wp+|"yMO^%-foXhhZZ¸pHB6׫L X㤅n{V"ϓsQ"%e|vsu/uv7+[7Y$妻"v=[II՜|dkXbv5[8,+p[!k.w,z=H5I\ 2~?\Vw-Αwgѫ&v *+3awk+aP7kw-ASyO f?!6ɫrTbh)oiDKmc0W9,:{|oe+o{V?"r]=wX.lonnVf_}.iyW_j#[VEK_]knZX*j[. ,hJ7ښpEo=_x݄ FmyVMc I_,RTox(IjWI1ar u?f j^K&v 09H4op1;7,uþqWL8Rh)F+\)ۀ)kY{v2~%=??]w 9uydG+'`s c!uhHjRc)OF;)7Hko [޽vp$vZ;]7Jv4ɞ-U/+vj=cȽ:㘹coUU 2 *K޶ćl͵y7r`,~Vi(q,r:hj2o{?J4;%(2 q}ku>♆`%Ĩy 22ƺ& fZ+&-kQSdA;\}~)Wyi# [dž=&+/K Ai:P#oֹ.+T,kXF_S^;Enw5Z[S,_\ʋw2rk-VWhм<ٛѓ"c/K(QG1OՠFfOge׋Loyc TSyo]ܯT6jkiUMY3I iק}VlViٖVH++dgk .TML-'r03\;1ts];Wg9.8jVuEvp n"]wgnz;q79zձ/ b)895siVv v7#DZ=ĪOfϪOS_nu|>kײ죂WXf j.w=޻.Q"+s <(5g[EuVF=KmjqsP> :웢j4Q1Cq`Lr#-[rGjzjmMx{5=2+l+/ O]M^<㤮!U#un܅&}3n7U<ڎBgpc ^}rn?/-ڤsVWo+EOŤ˺M*o1ʛLE<67.g6u'XvAͰF?8͊dhF~B=h[i\O't`'b3C}   ORʹա_p{U1U^#6Mw?L Xo]1xףMp(~>q%_q.^uY* +fqvfVOJʫ\"a,{[iBʰoQ/ɚ{씎2UTAvZ`&]EWZ!L&vڰ:TG ٥kݶt]ɥk}@FN$Wl!k%~&X)2 O#W+SJ t2f [+J:d#ДKPMwl$bYǻ?x/_zF=\:%q.I݁Mvn&><~ @!-`åH 3k;m0@\,@'+DEg5{rcd%*o?&|%O8Ie*ƌ^tם?.z}J K1(G)b*)0``i.o!_>r QR9 g#CZ6S{`&RAXCv-[+n"\~gY?s 0&0W߂?x8<p q }^ LV̠JPL;LtF샙sx7ymOqM/S+ }p> :r^oEktf{bQSQfF['$bPRsm TS`Z1elcTc<clc+f=BJXCŖ`ΣJȳ!u-)=0 JAv-[+n"\~gY?Yso? 3y5-H/S|n!5nuwS"ԫ;x2h3ȣ8Y53R=TN˩L쌄{Iu2!90wwS:}l?SϸM/S+/CG; |4Xez]]/Š*;b,Rÿ<~16GI<,TB|ka|FLH}a ٵoE-࿃os9!EjfJlq3w @~ p7B4-ƭ~3nc@z~\~3Y1*C1M2 fŷV{?ƥ7~L:'0y/WK|v[ E ^d]caG4Bn"pf|QΗn$ xtbJa-Ds#r :Yq >OY+cV E>=ӔZ9;yOjUs+/zewh!޾<ROaΤizj#2#ֽX#}odca'%N= !cҧ\;F :P9{K[*ݑRJv#XWpM7~гpjS 7W1 h"GhreSۑ;)5Aރ&LY(_/MO(kDVkK jR ax:_)W>)Ng>hF0wU|U =0 :zJqCzgXHIzb9#x? ÝVQˤNȷW/kB|][X>{}6:o_662~_PVMڻZuAsA2˽t>3(aNh S`#{M]st&JJ`|A#vq/C=:p+r=E %+]'e/;3Gi;)ydB>x.Y@}IjWޏhyx+ ?ѥGmLs;@+w\}Wa暝{ՔkXWwNWMzu =\h>LE`nOz! xk*+Wӊ6"5N r^HUS3ajlNk^"k3Ź[z> r0APEezy{OkA>:0d*c_͡E9m~^VC+%mg PςR?{:f8Y]h꺬|vKI`MHœ_(w9>_VFidE}yH:81b&0r_/Hg5`E{JoZZ譪+ Ӊ >re&2%bPatz,ؙ/;BW%edS2_zkCI-U}nUOeS+a Tve_4l)%rj{9\IrV~@7Bo^?=3Y  Ge-U=82suDuBdu,#_EoselWFV2r媵5zmgZt7^&8KQVۘ4GbXulOF'^=3;bYnitg'r@sbzBU:C9Guuv8=Ip55kYʠA@};@OK;JVT}tMsa::g>MnVw?=J.Y';7Ӽ$ݺ;}P\C}tt*lʵg{jݤ*OQ (J+.ܥ[+#;Lr2I~Ϩ%o.v~s?^*x Nzhu`06&KCu m\gwQ)Pj?8G٠S"=sbPڲ(o&j31zu؟UR}4T| 3:dfSͮ-(hENOs+ W,ţx [_pe'ϓd:}ӛuԪ eOkx'o[Zm/Y$oS'^F<$.\{:$9 z+9+~'jBNz\33u #7uI0_ryN悇E)9d\mE_'8L:B>3;ñ߉ѵѨԘ鄬-Uet~r:eyJkrӒ.dḻx.#F7y+NCT3E|p)C5սM++>C|^Ÿ=MDo7ğ/U2ϪUJYbjn]ѻn7߷(v zLt0͕Kof/fff7+fd>s3'dsVz.|%>R+\z+H|5>R$7/oɷ<^|sIj Z'ߖz>Om3/KRO+KRɷ|~SK}f>Sv?yD63GԖ3[lK<=)lj>I3˧_v%,GH<;<7HA}GLU={$]%Hjgl]jWWv]g7M#۽v:lأ;e \;w].q.2w]w7Onvu7=r37=sܳy[^r[nsGnvn;ٝM0 ˇJaհzX3<=<#l6 ggaux^.0(&.*+"? lT1UjFuQ(+:;jeGGS5<DэѐH"ekI4 o&g3fV n5i{ǔLoJ)vASΐ+krvcG}>n*ڧS}Tbs}>o*%vb_/v]nٗ˦}ݾnN*iڵ}Ǿcj~hjmvc?39{dd~i4gدW~mo7idߚ2&2 L;ߝotm][ԵwY`v9.4s]GurL u6-]wݴrW+9eut4ٮkZiA<7D\21niFѦƘ.wPtpxs&w\&&KML'7M5in즻馋fne/nk.slov; a'3pd8L,B_,T/"YBELJEԨLT<U*iѩѩ桨ZTLjD5̌NŤΈ0G fV$jbΊ2Q 3':7:̍΋3E̼"htItuǢˢ̂*xfatuty"6<]]onn0OGhh4TWF:=˶C7}>c_/W2wva?_{@kdw\c.w=\os܍nnqn{8΃'r Wf;~` 8Ʀ2Ʀ5b8#k ChHD"x)D (#ÝؾE' E#S4O$ybM%DmKO1D qH$!(I$A!ɓH6iɐdB2'YlH$+iɛO 2/SQ x<uT2Qhx4<&GS hxxBPf 9otD3%n9-Clc!l6"xujEf};Z .%>Y0&- )TLX|aaL0],J|i<0J^JsaaaLHf`܄J:.{iQ?eBn (wv$œ o^&1BK7$,xj`r/[c#- UedQ! BX9/A=̨'4O{'kYF}>d>||3Jj`uyCr|["jOXy4w~9[S97e%V.{J5.\)tv鸿*23`\Js>[ؓyU n*$Ŧ}7N.%S 4ߗ{蟻/?d9>-*(fXe9o:Ubxmժu7ȱiUެxPU2>4:Z`Sr11E.FYReMr7Μi9[ 2|3p9*7C@Pۡ?|MٙZ;7)4G y4{IbxG\=jOTdjb~d0vvѻVǩvfmK{Եzw}swzؤ|e*GT\FoW0nh4KRO2VXԞ`ˆ4&ㅻiPGLgF9C4FBD)TQ,J_?0t ֶvߚ_jO-ьq1P-$WwSc; /@$5L2v~];^;ݑ'ֽ UDm<ߵRdhOm=(ݯ;ź慔Y%iՍ9gI r@J!)GG%Ti%k2e>`oP',DD㔪a>uSG԰"q8> G*_;U~zb(>pbȴpITiQUɔp43"qlMe}2ǻmPGt =n}3~-tc3ǟ–94]UZs g*~JhˈĨTTlrIcJYӭuo9pb*5S@>l}d==^M ŲB>{,L֧ux>0f^w.)yfgS8@ Vc,Y"oBrlEͤQ_Gmjjpe_lj g}:KMś- 릊DU(5sl 5Y+v>KnXuk 21yi{Ӊ34%[/9yQKo.BXu>7~HÉM ~WwE*pe۽(wńr >3 qoL.d0E!3ްqpv<_#8  a6F{/hJq1i=ctxIr"(2 m-Ln<ŅHe G8 3U[%;+ \+xzYE øi|Y8*;Ici׿av8vk{_fJmqPR.\վ%rTqJmگ~^FʼnlK/_R%RY"}|xSX=I^ %|g1"+H/rx-R|yAɴqh'e݌cu os$ż!-Ld-Fi|ɒ9YUpdBMi@? G33GeZ+4T5P-SU-SsbT9I|NqcD|%ˮ[ X|VLdU;Z]7GO9\:#R*V׬w@'O闊tO[O_OWjoS1$Iet8xwzYQxWr\tksqO'sFy,Ekh*No,΢KI~\쒹˹_'=Z\SO5>h`%=D\]};gkLBrG@Sw"d_) }tL<ʛ[9)mI{Z'5z;xh',Fi.ըGmuM: ^y֝VRV}gyAow#%7sG6xh-ԚE!á1d)ԕjN_oL&}Yv.Ș[mz޸j7גG/Tr4xć!]5yj *DB ?(l}4w°2/(K[BL,9 D `x7AlK&{Է@|rqY5\5렰qyKZS?v:;@[·zD`qQF|Ti{9;  F4D1v==:1b 2#B#xjO'~X~ǐc\O ZT88kg@ lp҇O>k9xǨ&Hʋ:ju7Etn W\E5rWZ=ghPbןwF'j¥!GhٞAt+kTF(}"xVo7?N?M\_ 2/ϜAȂ؜T&YWK[KOƸĐ%wI]N$u/=ϠJ{KZчWO OIk'K<9qU">rzRw+rhWɕVuDnGw|kCkmԾxP2PVZ>uf3p̶jN᫻7'tq$R-դ{%{ҟ]v2Z6uNh8 6ER07_yS2f.e e.Pm,Rq|J1!~G?3e endstream endobj 2565 0 obj [ 0[ 778] 3[ 250] 11[ 333 333] 14[ 564 250] 19[ 500 500] 22[ 500 500] 31[ 564 564] 148[ 549] 177[ 500] 534[ 442] ] endobj 2566 0 obj [ 250 0 0 0 0 0 0 0 333 333 0 564 250 0 0 0 500 500 0 500 500 0 0 0 0 0 0 0 564 564] endobj 2567 0 obj [ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 444 500 444 278 0 0 0 0 0 0 0 0 0 0 0 0 389 0 0 0 0 444 444] endobj 2568 0 obj <> stream x]Mj0 >LJ(SM{VRD6+a  gsܑO9VNԩmڻrD%TӀqIɅ~ci׹_c⌔Rm Gb⫙tݧ(̟suOalpDc MJ"*$Oߩa߆}P3w eWfSvPb&o( endstream endobj 2569 0 obj <> stream xxל='=$!CZzMB'tiKAA#""+ vAPQJwɽ{ʬYgϜȢ’n\AkgqQߴE'K:E]Xu;C݇.4,{}l}QodX_ݳWIV%6ľaSJo`<~uYם27n)̯`z3C %ʰ>f8`B70t̑kṓLX=ZǙ̚EiK:'lx| N)3JϋXz!0tجMO9#ucW+r4r9ؾD7Nj8z<De~sG*> ؇5}*݂*L9=S[=wU@u xA7Sdy].qy%*&r4%ʮ?nJ xFf V|3aӫH*%W?we%AAA7Q[AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnp{?ǀz>m*b!z`~FqE*NT|Sidc?>*2}Un.㖎Ζc4Un иrs-qr7~y~rt`r+{;3B#Er0'I/^'اQD;IqNTw~t2d'qNbPIa\K'1s d"N2 $]n&mVm%jV zm3IPAkܬz6m*-;җRí?9+rĈqU}U~\9Ve>R2*:g~ޫ#3Ve-oƊSaz9؏7_^S=^cgA|nZwVmgmtsu6Gˊxx{nM-hW=5%9ʗިa6۵vR26lI{xB,f%?j5$ua)OVm|au=M?nt>h?eoź׭IsyeI՗(6:.:%:5NtVVAĄ̌(ýzVV۷NHc%w"nkeDe4Hpܦն^WǶ=M+WepâE>v35˖=xoůY J H 4 d|QY%q+_N: 2fxPe=جi5kba=ZqÌ(_Jr֭_WV\C,.bRc(Ϣ|vkp5[NvfL\1}ds3\7\4(=%&'jZqlPW*:Ksm۠u>vJRlKrykb3KtF]?a_;f[HFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [/Ġwq?*c ` N9r,{"jfsb$Y=8 85?k[෶8 <+Ӊ=5O?lj;cӦ6i +4V0Jan/Hl]a4lmc0 ~.L0kG^"<+[(A^xN(\ S cKq}7dz0Gc(3u M i8nFc49 vMl'u[xZYo;9W6D8{N}L?Y}.ٛ$qccuqd}̹8gob<ř~Uz &Ro"%8{1>!ԯR6wUMǑgMG>)I{'>l7IuꓓM*gMgL\>%/Rک?m*Xzz E3^n6rjm9JO}g!_^AlDG߇Zظ(ڸVkŰ/jW !A; ֊@?$I֊jqk$!Z}RZKצ]-޳\ ]xg>܊UO=%(룠WmM\n%2sJduB2]; ŭpf7mom_]ݖei8!P sqī1Δ8;ǽ&^pSIGVޔ(02T`pMHv&J pYPVH` P0]϶Z G-C[._?YU%&6'Z0pH9QqDfzBY]pek!}s~8[.O)}ɤ#eeWǂwD@0qI EM[hA.*wp'N'N-YS@ESež0ٻ"R:c4>,[Aon ^^-K =-[R,Ȗ`Ԃe(dͺÊY128-$Ϻnzz^>PHfYHa HeCHcCPPc .fC}6Mt6M 6]zvtb7 [ƖA.y.v?l {${=ak{=ZzcГ=^l#flevvПd{ W+0a{`8{ #;[ɾc`6 sX&P`ڹV'n\Ck$8<ㅮsr=ڀ\[\;|rzٗM핮7pε1M|=Vs4Gw\]nvҕ8ww; ڹG'-ݳL帕a?Kܷۋ3F̛3obͼ3&̛3oͼI2󦚙7fޤyjMu3ojyS̛Zf7&̛ 3o2ͼi`Mg3orͼ3&̛"3o7̛nft7󦇙7=ͼeMo3oy̛3oy3̛f 3f7#̼iM7y3Q ~]xnsH>Cdbm2$~; ~+n25Ӛf25O0>tH6ʱ*+IcLIfʱ0Sqh$zf&N24v4|&Ĝо)̧T7z*?c1뱚LMicT%}Ίs#A;ޜi͡]׭*?:Y l'v~ 7sČ=e:({?ẃQO0~f1 .7E/1'S'>KZ|#oA8$qT ~?cgq\"~'I8%~8+Ή Ғ.>7[e2N(d5,Sd.d YS֒eYW֓Y_ )Ȇl,,Tffl!sdKJmd[NdGIv]d̓@"Ue I.Rn!{^#O@9HCEr&r,h9Fx9A^,'Ir"irDΐ3,y-/s\yBΓ*Y& 5rV.zyQ.7ɥfy\&oNy\.{}~\!W*\-ȇ#QVqA>!FIn[VM>)˧).|A(_|M7-|G+H~,?>/_ʯy@~+!yX~/ȣI?uz@P+ՃjzHVkZ֩zڠPjڤ6-jڦTSjzZTϨgsjz^^T/ezUMz[U{{}P}>VOgj\W_/Wk:Uw:WGQQqUP'o]N3;k;]xb=q} D_/e}|9־6ξ.|_/>뻈Y4KdIKf),Ugij:.>Kg,5` Y#֘eO{֑ufrˮ`  U?3^|}>a_g#;~a$b?iveX eMf{f?iowO;gg] KneU5{~~gn﷿Ca{}>flO'Si}>gWo]~}+s]P5>huϫW7a^y]7,onyW˛we VGsEZUĊ*Qtή >|3V? ~*u? #xГBφ =z!bˡWB^z3nhoB> }$iо/B_ }&t m`СБC?~5t"t2[Tӡ3s .>6hcy <'j<<5y-^uy=y: xCބg<7-xo[ּ o;μ y<B^Ļ /!ι+ލw=xOދ}x_^||p>||'D>OST>O|&/e|/Wy|>_|/| _oeV~wn~/e M{{+5;~#(s# "Nċ(D5,RD.j:'H"S4 E#X4YDsB䈖h-ڈh/:N"rEP"(EHp!JtESEW~ Ab".C AKX}1lku`mZG]>WU (\vzvr ]]p,Rr*zwܟy' L,dzڳ}A)ߛm]]ӻһλU^>A).|||s|7mm{÷www&*.*-*+KTϨQ3F-Z*j}Զ]Q{ޏ:u 冀Ysցl&YJֳgq5;N̮igyvo{=ƞj7طp~ow=j)qpY{syL>u'd6GdֈLl4fm[m:׫(w%b-EeiX%hZ4-L*2J0-)EkQFw8hp8( 3*lY5Vfƛ̄Db2S#2M撰[£rM0uS\eiVeiyشLҲڴ?_1Z'Su0.&]D&dEd LpDd  G"b\eꏄ뻇z%hD@C&3""Sj2"2cLflDfLL4IQ k[ Gђps7"bʏu0dVDd|V+#2f>#2f>UѾ>@G+W _S895s2b1*b+3Uy*h ꡈZLkYik2Gdڛ#:Gr#7 U]QqDjm^E٭E1Y 0&3$"3dEdFw1;Q4FY[={cg>X' X>fݽ߼6c̻X>μ7̻D>ɼAkݧwl4 ͻ4yw_ӼefrgC]󦾞yS0o7M}ySi7`ǡy_ȼol7a62뛚y<43뛛-%V'U>KCA͂б^A:- ] oSn[k!ׅA ?B\~E:  [(5w k# pH\/ W?C7\1 qxz U*]W^ }q %k pj# ^g+\k|B뾮pa(8 ՟#pj~1M]q R[-z K/ <秨QE寨mLq:L}0y}1(1Ąф]3d9wOsO'2NP+S`d܈zAhM25b,ayZeDg+d!6Ŧ{KaWlk |Cy(<G;p;i^ċ=/%8ePY88a2+y%~U x5ϼ?@^1^>GRP(BcE"IEKHMhZJ1Xxґ( Dd$LBFf)2FvrP9IlrD9KMRr*B *b*J~"ZCkz@eTNTIiUfBմQ mjꩁvQ3=Zڨ:h?uRny="*ʃUJ^Tq(> ԕJ{ս46,ԜӜC1"4/5/HZQNDFP `I` vm;4 AtP;w8]. ] t[[uHнӽCbBDB .#ɠ2ll0DPapp) H5fIH (c ҍe2dOO!SHaL v, Bd B)E"Dp M&\&A2]1]ANݔM6[1~xaGͣȷ-n,Ee2Bˬe>ª ʪBUoգZeBڇ ?Vetet̺:6ovd?f?5XkfRҡ:G#CLjceY,%ʝ|T8ètqFg&QnFlnlb꺊mqtvt͸fPu͢NRH KZI)^G%eIrI.쒆!4K؝33=؛{=:Z܉D!YtO=>{~O'>O{z;Aw;y<5|y>|4lLJ 8B^W~R!|'6[K+z{an7:֠<twG >ٓPj?ςy:rs( P̡+sǵ?;I endstream endobj 2570 0 obj [ 0[ 1000] 850[ 500] ] endobj 2571 0 obj [ 310] endobj 2572 0 obj <> stream x\ tg#}l$dIM `0 SKxj=ZjO#G[0ENhmE@=5? eu5g{}̟{3X1cYt=$-/x`n_ni_:WVeU ^KMCXhjQF*U ֢~_KWkǻu(=.H-{ eSk{OKέ}`!@6wló:?aGerk0p(P÷)cߓp@gyy8;׸_>`ýgX/wwx9\s{:} '_zum^y_oylزO ϟG^q)m߀"ԗgaۋqBn:l@eLl6bA,xшgVXF34M34!}@?Br%|{ Oc)NsZl?t(]-fh&v8;v_TPMA4S|e:.(de>Op$zEb07E+K_B*ؤ/ sȀ,3 v̳a)\<sp4}X ˥ppO 9lļ6IgMz~wc w}a+ϗG1ǤWxA:!؏qx^/pZ: -_K|,g8FqZ*װ@ӄi(L? -A\LaRTD+tZ.*\^`"zeZ \_1c`.9qvl? cLL/Qؘ˲jlLF]aTؘp0cbi]? IEp-MʴVsaVcSVR]B54MҪLomؘHJ0bl<@SB2}hEj x^;4%$)KVR̠F)ʴ)LRcc@YAӍpU 6e&EOE"#=cCLWؘp,$^o]^s 2}VdgDt|T{2Č] ve:|?ъ40cy\e:|?ъG:Lq*LIS(q `6y2}hŬ,X+(R0)*e9?4%)KVU: 11)cTISXR[))WnQLISh\2l68ДD_DOEyeL$]^s +aRTD1A ' %,QQΈڪD y߁ ƽx1eh$<3tn438!4]jEF$HBA9K$PN`|5_|Z~VNqp0;` y|#t,tJ8>܎DKMvй34P9f{6kj)pZnq6ԛ9 XFAw- -v݉w$ P<K3?xrh:NrZ sF $uq^.}>=µ.%1fAa+>Oק?C!rH{HwHo㸬L{qQIaA”,s!W](SVK3~ԫئMC 8]yv@ۉ@T NI;L:XgE"M tdŦ&HNХ#GR07|/]Im*fAk:`bt/{{(ZC2S|t!]BJbv_EIS/n{{`<>=wiQQQ6{ }f&̅:4C?kO٣3 #h)eRm.ĚUl2" Oy_  '7쓃?{zc7ŷnuSP7#63ltk <$PY:Sh-Cf -Tհ1߇VWY,f-`GFi(yLf9d]ؘmJ'O-=/~~bG~ҏ/ΪIMj'+e ?C sw>]Bw>_X;/ ȹ2RPH$x,TpRUɘ}I Mٚ/o {b>CeRm2 F\L Tf.aIO 9077Pt"Y+TvvxZ饥XhuwG~ndӄjOgm[#Lڵsl,+j7ގ @.^J./A+rӡ4PR'#W>\NPn| $7хG+F*ZR5jwC^h;(<6141ACE4E54F0E49B2AB4C0D609C79FF>] /Filter/FlateDecode/Length 5268>> stream x5eeۆaϙaH ;[;@T@lSD;Q[y]kfų^- [lc 5 }#F[hr`iByEB^z+0͏V8aI  zS[`\ ~ wg g\7^/X FQΟ5pRpwk 7.Xpx0 &xc&.;„? j”ᅩn7m~aW쒝Apwgv=Y_.? p\UcM泿)%5g\\ʼ:Utfpcw,G׎*ck+pi <0ڡe~Tڏ/}ymңCUSA1PwxpjLFM,L,wnR_\PgrM_z .R\u_ׯ luimpay'n(7n 7`[Wxo}Zxw -Q}Ӳ^h^C-tYVVz}jo^-6*lY =z{Fd?oP mM #7..w~'.2f.xfb.å@#/2-+L5+MLuM LטMך352]ojlt&S3ͦMn50fji4۴Skӝ69vLK晖2mZtiӽeM3oZiӃMV2=lZiӣLL:0jzҴ)ꦧMk1izִ9ڦML/1hZeS+L7fiCLo66eiS|SW; ;=[cl=v ;cݰ; {c?8 7胣p4~810'cN8 1Cq:UH;Y8l0\јqiI%1Ղ 31 ՂP-jWՂ6{ī[j{WkRn\jcVKڻ­vkY-jVu:6f*X-jUڃʫTȪ]W-jU+R"6XRjKUD]T+=|!>Ɨ3| ?G|~ǯ?{WŴ?_(GjPhhFhhfX- K RXc9,e2V X=:#\=YcU5.:a-uCgtcClMxѿt(F#ua0E#QH]/QFňb0R(F_D15E"Ũa.Q(F #uѿbD1jE#QH]/QFňb0R(FѸ_D1Eѿ_/Eѿ_/Eѿ_/ɊdE`2(FH].2E"u(e/R F)#|H]d0JዜE"Q_/RFѿ_/EQb.RE#u_/ExhU.ŋF"ѿ_D1eQj~g煿H¯5h:Ԣ   M%Z` 6hvh$Xb,VX:X k.Xcl16Ͱ-[clm=Î;c'ݰ; ߢ`?쏃q a8b荣p$Xcpc0N8qdSp3p&Fb8FlY8pb Fcb<.dL$LL%13p)fF\qUz\p7nMV܆;1w.\c^<#x<SxY<^xU7[x.x|9>g _K|=~3W___/ŋEQ_/ŋEQ_6ŋEQ_/ŋE_/=Eѿ_t35E Q_05Ecbd0(F jb3(Fj`d02 FEjbd0ŋ(F"`Q_/E"H]/RE"uѿH].ŋF"uѿH]/RExH].E"u_/RE #uQ_/E"|Qg.REH]/RE񢩑H]/RE"u(^3RE"uѿH].ExH].E"|_/E"u_.REQhj.RE"uH]/EH]/RE"uѿ(^45=9E_٢W{,?>7ʶp jP:4@= Gs@Kh6hvXKai,Xb,"V耎Xau5F'u]aclMcsl-['6a{v.aW=>bqA8Co#qBpc 8'a N Sqct31 1#1 glsqa4`,a<&`"&a2`*bL%q)f`f2\+qUwf\qnM[p+n혍;p'n܃{qxa's|/7{~F_+~//ÂB/Eѿ_/Eѿ_/Eѿ_4.5E xQ(^0nFѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/EQ_h\d0(F jb/5E"b0(F"Qh\D8(F qbd05E#b0(F#Qh\d0(F qbd05E#b0(F#QÈ[d0(F"nѿ_$22E񢍑H].R(F"uH].RDF_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_ְ/Q~e[85E M 9Z%Za FE;,4Xc2VA{t@Gհ:X k.Xcl16 ݱ9聭[cl=v ;cݰ+ {b?8 7胣p4~810'cN8 1#p:Lq8g\q.0c000S0p1Y \p5܈p3n c6 p7<0x <4x2^x 6w>Ç#|9 _|=~ ?J/w??aA!Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eqѿa/jEѿ_/Eѿ_/E _0Eѿ[d05Fѿ_/Eѿ_/Eѿ_/Eѿ_/EQ_/Exѿ(^/E xQ(^0 5Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/Eѿ_/EQ_/ŋE7ѿ_/Eѿ_/_A jQ&N֣:7XN VGա4`u :Z:W꫎U|ɽ^uV:WΫUVʨ޵Guخ:eWUꪓt\uh:-WuFTG3p[uܭ:VpNUG6C7t[BOlm-;b']+v{b/}/8 Cp(C/8G8Ǣ/8p"N@A84  8gbcFb8< p!.hXxLDLdLTLŘK0#5\|bAFwX[O7mG98ݤg9dYMٯ_X& q)lip{,L/|7)@sZ̎'x"Z|a #iVh5{U([}Z}9z?^i?/rY>+^ھdPޯGEkJ(5Ѯxw } ]WE endstream endobj xref 0 2574 0000000295 65535 f 0000000017 00000 n 0000000143 00000 n 0000000627 00000 n 0000000922 00000 n 0000001809 00000 n 0000001986 00000 n 0000002239 00000 n 0000002409 00000 n 0000002650 00000 n 0000002827 00000 n 0000003073 00000 n 0000003245 00000 n 0000003488 00000 n 0000003622 00000 n 0000003652 00000 n 0000003814 00000 n 0000003888 00000 n 0000004131 00000 n 0000024655 00000 n 0000025110 00000 n 0000028143 00000 n 0000028320 00000 n 0000028568 00000 n 0000028697 00000 n 0000029203 00000 n 0000029562 00000 n 0000029691 00000 n 0000030020 00000 n 0000030149 00000 n 0000030479 00000 n 0000030608 00000 n 0000030932 00000 n 0000031061 00000 n 0000031190 00000 n 0000031536 00000 n 0000031665 00000 n 0000031793 00000 n 0000031921 00000 n 0000032203 00000 n 0000032332 00000 n 0000032596 00000 n 0000032725 00000 n 0000033063 00000 n 0000033192 00000 n 0000033321 00000 n 0000033615 00000 n 0000033942 00000 n 0000034072 00000 n 0000034201 00000 n 0000034541 00000 n 0000034855 00000 n 0000034983 00000 n 0000035113 00000 n 0000035243 00000 n 0000035372 00000 n 0000035664 00000 n 0000035790 00000 n 0000036116 00000 n 0000036242 00000 n 0000036371 00000 n 0000036500 00000 n 0000036775 00000 n 0000037156 00000 n 0000037285 00000 n 0000037624 00000 n 0000037952 00000 n 0000038082 00000 n 0000038399 00000 n 0000038528 00000 n 0000038823 00000 n 0000039130 00000 n 0000039435 00000 n 0000039755 00000 n 0000039883 00000 n 0000040173 00000 n 0000040506 00000 n 0000040634 00000 n 0000040936 00000 n 0000041311 00000 n 0000041440 00000 n 0000041721 00000 n 0000044910 00000 n 0000044964 00000 n 0000045093 00000 n 0000045369 00000 n 0000045498 00000 n 0000045803 00000 n 0000046105 00000 n 0000046234 00000 n 0000046363 00000 n 0000046677 00000 n 0000046806 00000 n 0000047108 00000 n 0000047236 00000 n 0000047364 00000 n 0000047675 00000 n 0000047804 00000 n 0000048068 00000 n 0000048197 00000 n 0000048326 00000 n 0000048458 00000 n 0000048823 00000 n 0000048955 00000 n 0000049308 00000 n 0000049628 00000 n 0000049760 00000 n 0000050080 00000 n 0000050212 00000 n 0000050492 00000 n 0000050624 00000 n 0000050756 00000 n 0000050888 00000 n 0000051182 00000 n 0000051313 00000 n 0000051444 00000 n 0000051576 00000 n 0000051922 00000 n 0000052054 00000 n 0000052384 00000 n 0000052516 00000 n 0000052648 00000 n 0000052954 00000 n 0000053234 00000 n 0000053366 00000 n 0000053692 00000 n 0000054058 00000 n 0000054189 00000 n 0000054473 00000 n 0000054777 00000 n 0000055092 00000 n 0000055223 00000 n 0000055355 00000 n 0000055487 00000 n 0000055619 00000 n 0000055935 00000 n 0000056067 00000 n 0000056452 00000 n 0000056584 00000 n 0000056890 00000 n 0000060149 00000 n 0000060204 00000 n 0000060340 00000 n 0000060372 00000 n 0000060537 00000 n 0000060612 00000 n 0000060855 00000 n 0000061034 00000 n 0000061282 00000 n 0000061467 00000 n 0000061723 00000 n 0000075688 00000 n 0000090267 00000 n 0000092766 00000 n 0000092894 00000 n 0000092926 00000 n 0000093083 00000 n 0000093158 00000 n 0000093391 00000 n 0000093556 00000 n 0000093782 00000 n 0000097919 00000 n 0000098057 00000 n 0000098089 00000 n 0000098256 00000 n 0000098331 00000 n 0000098571 00000 n 0000102058 00000 n 0000102240 00000 n 0000102492 00000 n 0000102634 00000 n 0000102666 00000 n 0000102837 00000 n 0000102912 00000 n 0000103159 00000 n 0000106704 00000 n 0000110741 00000 n 0000114095 00000 n 0000114280 00000 n 0000114532 00000 n 0000118478 00000 n 0000122294 00000 n 0000125794 00000 n 0000129404 00000 n 0000133380 00000 n 0000135297 00000 n 0000139297 00000 n 0000143574 00000 n 0000147074 00000 n 0000157163 00000 n 0000160684 00000 n 0000163974 00000 n 0000167042 00000 n 0000171419 00000 n 0000171605 00000 n 0000171864 00000 n 0000175478 00000 n 0000177708 00000 n 0000181399 00000 n 0000209852 00000 n 0000212198 00000 n 0000214553 00000 n 0000221049 00000 n 0000221228 00000 n 0000221476 00000 n 0000221655 00000 n 0000221903 00000 n 0000222176 00000 n 0000222278 00000 n 0000222566 00000 n 0000222671 00000 n 0000222959 00000 n 0000223064 00000 n 0000224456 00000 n 0000227536 00000 n 0000227715 00000 n 0000227955 00000 n 0000228180 00000 n 0000254250 00000 n 0000254478 00000 n 0000271214 00000 n 0000276545 00000 n 0000280837 00000 n 0000283675 00000 n 0000288182 00000 n 0000292133 00000 n 0000292274 00000 n 0000292306 00000 n 0000292476 00000 n 0000292551 00000 n 0000292799 00000 n 0000295827 00000 n 0000299991 00000 n 0000300138 00000 n 0000300170 00000 n 0000300346 00000 n 0000300421 00000 n 0000300677 00000 n 0000304393 00000 n 0000308589 00000 n 0000308776 00000 n 0000309027 00000 n 0000309168 00000 n 0000309200 00000 n 0000309370 00000 n 0000309445 00000 n 0000309704 00000 n 0000313690 00000 n 0000318095 00000 n 0000322177 00000 n 0000324300 00000 n 0000326728 00000 n 0000328748 00000 n 0000363386 00000 n 0000367216 00000 n 0000371373 00000 n 0000371513 00000 n 0000371545 00000 n 0000371714 00000 n 0000371789 00000 n 0000372034 00000 n 0000375736 00000 n 0000379520 00000 n 0000383204 00000 n 0000383427 00000 n 0000383633 00000 n 0000383818 00000 n 0000393988 00000 n 0000396071 00000 n 0000399421 00000 n 0000402397 00000 n 0000402575 00000 n 0000402823 00000 n 0000404894 00000 n 0000408724 00000 n 0000408867 00000 n 0000408899 00000 n 0000409071 00000 n 0000409146 00000 n 0000409398 00000 n 0000409602 00000 n 0000409825 00000 n 0000410094 00000 n 0000420477 00000 n 0000422951 00000 n 0000423206 00000 n 0000426296 00000 n 0000426551 00000 n 0000429540 00000 n 0000429795 00000 n 0000433326 00000 n 0000433552 00000 n 0000433618 00000 n 0000433718 00000 n 0000433831 00000 n 0000000296 65535 f 0000000297 65535 f 0000000298 65535 f 0000000299 65535 f 0000000300 65535 f 0000000301 65535 f 0000000302 65535 f 0000000303 65535 f 0000000304 65535 f 0000000305 65535 f 0000000306 65535 f 0000000307 65535 f 0000000308 65535 f 0000000309 65535 f 0000000310 65535 f 0000000311 65535 f 0000000312 65535 f 0000000313 65535 f 0000000314 65535 f 0000000315 65535 f 0000000316 65535 f 0000000317 65535 f 0000000318 65535 f 0000000319 65535 f 0000000320 65535 f 0000000321 65535 f 0000000322 65535 f 0000000323 65535 f 0000000324 65535 f 0000000325 65535 f 0000000326 65535 f 0000000327 65535 f 0000000328 65535 f 0000000329 65535 f 0000000330 65535 f 0000000331 65535 f 0000000332 65535 f 0000000333 65535 f 0000000334 65535 f 0000000335 65535 f 0000000336 65535 f 0000000337 65535 f 0000000338 65535 f 0000000339 65535 f 0000000340 65535 f 0000000341 65535 f 0000000342 65535 f 0000000343 65535 f 0000000344 65535 f 0000000345 65535 f 0000000346 65535 f 0000000347 65535 f 0000000348 65535 f 0000000349 65535 f 0000000350 65535 f 0000000351 65535 f 0000000352 65535 f 0000000353 65535 f 0000000354 65535 f 0000000355 65535 f 0000000356 65535 f 0000000357 65535 f 0000000358 65535 f 0000000359 65535 f 0000000360 65535 f 0000000361 65535 f 0000000362 65535 f 0000000363 65535 f 0000000364 65535 f 0000000365 65535 f 0000000366 65535 f 0000000367 65535 f 0000000368 65535 f 0000000369 65535 f 0000000370 65535 f 0000000371 65535 f 0000000372 65535 f 0000000373 65535 f 0000000374 65535 f 0000000375 65535 f 0000000376 65535 f 0000000377 65535 f 0000000378 65535 f 0000000379 65535 f 0000000380 65535 f 0000000381 65535 f 0000000382 65535 f 0000000383 65535 f 0000000384 65535 f 0000000385 65535 f 0000000386 65535 f 0000000387 65535 f 0000000388 65535 f 0000000389 65535 f 0000000390 65535 f 0000000391 65535 f 0000000392 65535 f 0000000393 65535 f 0000000394 65535 f 0000000395 65535 f 0000000396 65535 f 0000000397 65535 f 0000000398 65535 f 0000000399 65535 f 0000000400 65535 f 0000000401 65535 f 0000000402 65535 f 0000000403 65535 f 0000000404 65535 f 0000000405 65535 f 0000000406 65535 f 0000000407 65535 f 0000000408 65535 f 0000000409 65535 f 0000000410 65535 f 0000000411 65535 f 0000000412 65535 f 0000000413 65535 f 0000000414 65535 f 0000000415 65535 f 0000000416 65535 f 0000000417 65535 f 0000000418 65535 f 0000000419 65535 f 0000000420 65535 f 0000000421 65535 f 0000000422 65535 f 0000000423 65535 f 0000000424 65535 f 0000000425 65535 f 0000000426 65535 f 0000000427 65535 f 0000000428 65535 f 0000000429 65535 f 0000000430 65535 f 0000000431 65535 f 0000000432 65535 f 0000000433 65535 f 0000000434 65535 f 0000000435 65535 f 0000000436 65535 f 0000000437 65535 f 0000000438 65535 f 0000000439 65535 f 0000000440 65535 f 0000000441 65535 f 0000000442 65535 f 0000000443 65535 f 0000000444 65535 f 0000000445 65535 f 0000000446 65535 f 0000000447 65535 f 0000000448 65535 f 0000000449 65535 f 0000000450 65535 f 0000000451 65535 f 0000000452 65535 f 0000000453 65535 f 0000000454 65535 f 0000000455 65535 f 0000000456 65535 f 0000000457 65535 f 0000000458 65535 f 0000000459 65535 f 0000000460 65535 f 0000000461 65535 f 0000000462 65535 f 0000000463 65535 f 0000000464 65535 f 0000000465 65535 f 0000000466 65535 f 0000000467 65535 f 0000000468 65535 f 0000000469 65535 f 0000000470 65535 f 0000000471 65535 f 0000000472 65535 f 0000000473 65535 f 0000000474 65535 f 0000000475 65535 f 0000000476 65535 f 0000000477 65535 f 0000000478 65535 f 0000000479 65535 f 0000000480 65535 f 0000000481 65535 f 0000000482 65535 f 0000000483 65535 f 0000000484 65535 f 0000000485 65535 f 0000000486 65535 f 0000000487 65535 f 0000000488 65535 f 0000000489 65535 f 0000000490 65535 f 0000000491 65535 f 0000000492 65535 f 0000000493 65535 f 0000000494 65535 f 0000000495 65535 f 0000000496 65535 f 0000000497 65535 f 0000000498 65535 f 0000000499 65535 f 0000000500 65535 f 0000000501 65535 f 0000000502 65535 f 0000000503 65535 f 0000000504 65535 f 0000000505 65535 f 0000000506 65535 f 0000000507 65535 f 0000000508 65535 f 0000000509 65535 f 0000000510 65535 f 0000000511 65535 f 0000000512 65535 f 0000000513 65535 f 0000000514 65535 f 0000000515 65535 f 0000000516 65535 f 0000000517 65535 f 0000000518 65535 f 0000000519 65535 f 0000000520 65535 f 0000000521 65535 f 0000000522 65535 f 0000000523 65535 f 0000000524 65535 f 0000000525 65535 f 0000000526 65535 f 0000000527 65535 f 0000000528 65535 f 0000000529 65535 f 0000000530 65535 f 0000000531 65535 f 0000000532 65535 f 0000000533 65535 f 0000000534 65535 f 0000000535 65535 f 0000000536 65535 f 0000000537 65535 f 0000000538 65535 f 0000000539 65535 f 0000000540 65535 f 0000000541 65535 f 0000000542 65535 f 0000000543 65535 f 0000000544 65535 f 0000000545 65535 f 0000000546 65535 f 0000000547 65535 f 0000000548 65535 f 0000000549 65535 f 0000000550 65535 f 0000000551 65535 f 0000000552 65535 f 0000000553 65535 f 0000000554 65535 f 0000000555 65535 f 0000000556 65535 f 0000000557 65535 f 0000000558 65535 f 0000000559 65535 f 0000000560 65535 f 0000000561 65535 f 0000000562 65535 f 0000000563 65535 f 0000000564 65535 f 0000000565 65535 f 0000000566 65535 f 0000000567 65535 f 0000000568 65535 f 0000000569 65535 f 0000000570 65535 f 0000000571 65535 f 0000000572 65535 f 0000000573 65535 f 0000000574 65535 f 0000000575 65535 f 0000000576 65535 f 0000000577 65535 f 0000000578 65535 f 0000000579 65535 f 0000000580 65535 f 0000000581 65535 f 0000000582 65535 f 0000000583 65535 f 0000000584 65535 f 0000000585 65535 f 0000000586 65535 f 0000000587 65535 f 0000000588 65535 f 0000000589 65535 f 0000000590 65535 f 0000000591 65535 f 0000000592 65535 f 0000000593 65535 f 0000000594 65535 f 0000000595 65535 f 0000000596 65535 f 0000000597 65535 f 0000000598 65535 f 0000000599 65535 f 0000000600 65535 f 0000000601 65535 f 0000000602 65535 f 0000000603 65535 f 0000000604 65535 f 0000000605 65535 f 0000000606 65535 f 0000000607 65535 f 0000000608 65535 f 0000000609 65535 f 0000000610 65535 f 0000000611 65535 f 0000000612 65535 f 0000000613 65535 f 0000000614 65535 f 0000000615 65535 f 0000000616 65535 f 0000000617 65535 f 0000000618 65535 f 0000000619 65535 f 0000000620 65535 f 0000000621 65535 f 0000000622 65535 f 0000000623 65535 f 0000000624 65535 f 0000000625 65535 f 0000000626 65535 f 0000000627 65535 f 0000000628 65535 f 0000000629 65535 f 0000000630 65535 f 0000000631 65535 f 0000000632 65535 f 0000000633 65535 f 0000000634 65535 f 0000000635 65535 f 0000000636 65535 f 0000000637 65535 f 0000000638 65535 f 0000000639 65535 f 0000000640 65535 f 0000000641 65535 f 0000000642 65535 f 0000000643 65535 f 0000000644 65535 f 0000000645 65535 f 0000000646 65535 f 0000000647 65535 f 0000000648 65535 f 0000000649 65535 f 0000000650 65535 f 0000000651 65535 f 0000000652 65535 f 0000000653 65535 f 0000000654 65535 f 0000000655 65535 f 0000000656 65535 f 0000000657 65535 f 0000000658 65535 f 0000000659 65535 f 0000000660 65535 f 0000000661 65535 f 0000000662 65535 f 0000000663 65535 f 0000000664 65535 f 0000000665 65535 f 0000000666 65535 f 0000000667 65535 f 0000000668 65535 f 0000000669 65535 f 0000000670 65535 f 0000000671 65535 f 0000000672 65535 f 0000000673 65535 f 0000000674 65535 f 0000000675 65535 f 0000000676 65535 f 0000000677 65535 f 0000000678 65535 f 0000000679 65535 f 0000000680 65535 f 0000000681 65535 f 0000000682 65535 f 0000000683 65535 f 0000000684 65535 f 0000000685 65535 f 0000000686 65535 f 0000000687 65535 f 0000000688 65535 f 0000000689 65535 f 0000000690 65535 f 0000000691 65535 f 0000000692 65535 f 0000000693 65535 f 0000000694 65535 f 0000000695 65535 f 0000000696 65535 f 0000000697 65535 f 0000000698 65535 f 0000000699 65535 f 0000000700 65535 f 0000000701 65535 f 0000000702 65535 f 0000000703 65535 f 0000000704 65535 f 0000000705 65535 f 0000000706 65535 f 0000000707 65535 f 0000000708 65535 f 0000000709 65535 f 0000000710 65535 f 0000000711 65535 f 0000000712 65535 f 0000000713 65535 f 0000000714 65535 f 0000000715 65535 f 0000000716 65535 f 0000000717 65535 f 0000000718 65535 f 0000000719 65535 f 0000000720 65535 f 0000000721 65535 f 0000000722 65535 f 0000000723 65535 f 0000000724 65535 f 0000000725 65535 f 0000000726 65535 f 0000000727 65535 f 0000000728 65535 f 0000000729 65535 f 0000000730 65535 f 0000000731 65535 f 0000000732 65535 f 0000000733 65535 f 0000000734 65535 f 0000000735 65535 f 0000000736 65535 f 0000000737 65535 f 0000000738 65535 f 0000000739 65535 f 0000000740 65535 f 0000000741 65535 f 0000000742 65535 f 0000000743 65535 f 0000000744 65535 f 0000000745 65535 f 0000000746 65535 f 0000000747 65535 f 0000000748 65535 f 0000000749 65535 f 0000000750 65535 f 0000000751 65535 f 0000000752 65535 f 0000000753 65535 f 0000000754 65535 f 0000000755 65535 f 0000000756 65535 f 0000000757 65535 f 0000000758 65535 f 0000000759 65535 f 0000000760 65535 f 0000000761 65535 f 0000000762 65535 f 0000000763 65535 f 0000000764 65535 f 0000000765 65535 f 0000000766 65535 f 0000000767 65535 f 0000000768 65535 f 0000000769 65535 f 0000000770 65535 f 0000000771 65535 f 0000000772 65535 f 0000000773 65535 f 0000000774 65535 f 0000000775 65535 f 0000000776 65535 f 0000000777 65535 f 0000000778 65535 f 0000000779 65535 f 0000000780 65535 f 0000000781 65535 f 0000000782 65535 f 0000000783 65535 f 0000000784 65535 f 0000000785 65535 f 0000000786 65535 f 0000000787 65535 f 0000000788 65535 f 0000000789 65535 f 0000000790 65535 f 0000000791 65535 f 0000000792 65535 f 0000000793 65535 f 0000000794 65535 f 0000000795 65535 f 0000000796 65535 f 0000000797 65535 f 0000000798 65535 f 0000000799 65535 f 0000000800 65535 f 0000000801 65535 f 0000000802 65535 f 0000000803 65535 f 0000000804 65535 f 0000000805 65535 f 0000000806 65535 f 0000000807 65535 f 0000000808 65535 f 0000000809 65535 f 0000000810 65535 f 0000000811 65535 f 0000000812 65535 f 0000000813 65535 f 0000000814 65535 f 0000000815 65535 f 0000000816 65535 f 0000000817 65535 f 0000000818 65535 f 0000000819 65535 f 0000000820 65535 f 0000000821 65535 f 0000000822 65535 f 0000000823 65535 f 0000000824 65535 f 0000000825 65535 f 0000000826 65535 f 0000000827 65535 f 0000000828 65535 f 0000000829 65535 f 0000000830 65535 f 0000000831 65535 f 0000000832 65535 f 0000000833 65535 f 0000000834 65535 f 0000000835 65535 f 0000000836 65535 f 0000000837 65535 f 0000000838 65535 f 0000000839 65535 f 0000000840 65535 f 0000000841 65535 f 0000000842 65535 f 0000000843 65535 f 0000000844 65535 f 0000000845 65535 f 0000000846 65535 f 0000000847 65535 f 0000000848 65535 f 0000000849 65535 f 0000000850 65535 f 0000000851 65535 f 0000000852 65535 f 0000000853 65535 f 0000000854 65535 f 0000000855 65535 f 0000000856 65535 f 0000000857 65535 f 0000000858 65535 f 0000000859 65535 f 0000000860 65535 f 0000000861 65535 f 0000000862 65535 f 0000000863 65535 f 0000000864 65535 f 0000000865 65535 f 0000000866 65535 f 0000000867 65535 f 0000000868 65535 f 0000000869 65535 f 0000000870 65535 f 0000000871 65535 f 0000000872 65535 f 0000000873 65535 f 0000000874 65535 f 0000000875 65535 f 0000000876 65535 f 0000000877 65535 f 0000000878 65535 f 0000000879 65535 f 0000000880 65535 f 0000000881 65535 f 0000000882 65535 f 0000000883 65535 f 0000000884 65535 f 0000000885 65535 f 0000000886 65535 f 0000000887 65535 f 0000000888 65535 f 0000000889 65535 f 0000000890 65535 f 0000000891 65535 f 0000000892 65535 f 0000000893 65535 f 0000000894 65535 f 0000000895 65535 f 0000000896 65535 f 0000000897 65535 f 0000000898 65535 f 0000000899 65535 f 0000000900 65535 f 0000000901 65535 f 0000000902 65535 f 0000000903 65535 f 0000000904 65535 f 0000000905 65535 f 0000000906 65535 f 0000000907 65535 f 0000000908 65535 f 0000000909 65535 f 0000000910 65535 f 0000000911 65535 f 0000000912 65535 f 0000000913 65535 f 0000000914 65535 f 0000000915 65535 f 0000000916 65535 f 0000000917 65535 f 0000000918 65535 f 0000000919 65535 f 0000000920 65535 f 0000000921 65535 f 0000000922 65535 f 0000000923 65535 f 0000000924 65535 f 0000000925 65535 f 0000000926 65535 f 0000000927 65535 f 0000000928 65535 f 0000000929 65535 f 0000000930 65535 f 0000000931 65535 f 0000000932 65535 f 0000000933 65535 f 0000000934 65535 f 0000000935 65535 f 0000000936 65535 f 0000000937 65535 f 0000000938 65535 f 0000000939 65535 f 0000000940 65535 f 0000000941 65535 f 0000000942 65535 f 0000000943 65535 f 0000000944 65535 f 0000000945 65535 f 0000000946 65535 f 0000000947 65535 f 0000000948 65535 f 0000000949 65535 f 0000000950 65535 f 0000000951 65535 f 0000000952 65535 f 0000000953 65535 f 0000000954 65535 f 0000000955 65535 f 0000000956 65535 f 0000000957 65535 f 0000000958 65535 f 0000000959 65535 f 0000000960 65535 f 0000000961 65535 f 0000000962 65535 f 0000000963 65535 f 0000000964 65535 f 0000000965 65535 f 0000000966 65535 f 0000000967 65535 f 0000000968 65535 f 0000000969 65535 f 0000000970 65535 f 0000000971 65535 f 0000000972 65535 f 0000000973 65535 f 0000000974 65535 f 0000000975 65535 f 0000000976 65535 f 0000000977 65535 f 0000000978 65535 f 0000000979 65535 f 0000000980 65535 f 0000000981 65535 f 0000000982 65535 f 0000000983 65535 f 0000000984 65535 f 0000000985 65535 f 0000000986 65535 f 0000000987 65535 f 0000000988 65535 f 0000000989 65535 f 0000000990 65535 f 0000000991 65535 f 0000000992 65535 f 0000000993 65535 f 0000000994 65535 f 0000000995 65535 f 0000000996 65535 f 0000000997 65535 f 0000000998 65535 f 0000000999 65535 f 0000001000 65535 f 0000001001 65535 f 0000001002 65535 f 0000001003 65535 f 0000001004 65535 f 0000001005 65535 f 0000001006 65535 f 0000001007 65535 f 0000001008 65535 f 0000001009 65535 f 0000001010 65535 f 0000001011 65535 f 0000001012 65535 f 0000001013 65535 f 0000001014 65535 f 0000001015 65535 f 0000001016 65535 f 0000001017 65535 f 0000001018 65535 f 0000001019 65535 f 0000001020 65535 f 0000001021 65535 f 0000001022 65535 f 0000001023 65535 f 0000001024 65535 f 0000001025 65535 f 0000001026 65535 f 0000001027 65535 f 0000001028 65535 f 0000001029 65535 f 0000001030 65535 f 0000001031 65535 f 0000001032 65535 f 0000001033 65535 f 0000001034 65535 f 0000001035 65535 f 0000001036 65535 f 0000001037 65535 f 0000001038 65535 f 0000001039 65535 f 0000001040 65535 f 0000001041 65535 f 0000001042 65535 f 0000001043 65535 f 0000001044 65535 f 0000001045 65535 f 0000001046 65535 f 0000001047 65535 f 0000001048 65535 f 0000001049 65535 f 0000001050 65535 f 0000001051 65535 f 0000001052 65535 f 0000001053 65535 f 0000001054 65535 f 0000001055 65535 f 0000001056 65535 f 0000001057 65535 f 0000001058 65535 f 0000001059 65535 f 0000001060 65535 f 0000001061 65535 f 0000001062 65535 f 0000001063 65535 f 0000001064 65535 f 0000001065 65535 f 0000001066 65535 f 0000001067 65535 f 0000001068 65535 f 0000001069 65535 f 0000001070 65535 f 0000001071 65535 f 0000001072 65535 f 0000001073 65535 f 0000001074 65535 f 0000001075 65535 f 0000001076 65535 f 0000001077 65535 f 0000001078 65535 f 0000001079 65535 f 0000001080 65535 f 0000001081 65535 f 0000001082 65535 f 0000001083 65535 f 0000001084 65535 f 0000001085 65535 f 0000001086 65535 f 0000001087 65535 f 0000001088 65535 f 0000001089 65535 f 0000001090 65535 f 0000001091 65535 f 0000001092 65535 f 0000001093 65535 f 0000001094 65535 f 0000001095 65535 f 0000001096 65535 f 0000001097 65535 f 0000001098 65535 f 0000001099 65535 f 0000001100 65535 f 0000001101 65535 f 0000001102 65535 f 0000001103 65535 f 0000001104 65535 f 0000001105 65535 f 0000001106 65535 f 0000001107 65535 f 0000001108 65535 f 0000001109 65535 f 0000001110 65535 f 0000001111 65535 f 0000001112 65535 f 0000001113 65535 f 0000001114 65535 f 0000001115 65535 f 0000001116 65535 f 0000001117 65535 f 0000001118 65535 f 0000001119 65535 f 0000001120 65535 f 0000001121 65535 f 0000001122 65535 f 0000001123 65535 f 0000001124 65535 f 0000001125 65535 f 0000001126 65535 f 0000001127 65535 f 0000001128 65535 f 0000001129 65535 f 0000001130 65535 f 0000001131 65535 f 0000001132 65535 f 0000001133 65535 f 0000001134 65535 f 0000001135 65535 f 0000001136 65535 f 0000001137 65535 f 0000001138 65535 f 0000001139 65535 f 0000001140 65535 f 0000001141 65535 f 0000001142 65535 f 0000001143 65535 f 0000001144 65535 f 0000001145 65535 f 0000001146 65535 f 0000001147 65535 f 0000001148 65535 f 0000001149 65535 f 0000001150 65535 f 0000001151 65535 f 0000001152 65535 f 0000001153 65535 f 0000001154 65535 f 0000001155 65535 f 0000001156 65535 f 0000001157 65535 f 0000001158 65535 f 0000001159 65535 f 0000001160 65535 f 0000001161 65535 f 0000001162 65535 f 0000001163 65535 f 0000001164 65535 f 0000001165 65535 f 0000001166 65535 f 0000001167 65535 f 0000001168 65535 f 0000001169 65535 f 0000001170 65535 f 0000001171 65535 f 0000001172 65535 f 0000001173 65535 f 0000001174 65535 f 0000001175 65535 f 0000001176 65535 f 0000001177 65535 f 0000001178 65535 f 0000001179 65535 f 0000001180 65535 f 0000001181 65535 f 0000001182 65535 f 0000001183 65535 f 0000001184 65535 f 0000001185 65535 f 0000001186 65535 f 0000001187 65535 f 0000001188 65535 f 0000001189 65535 f 0000001190 65535 f 0000001191 65535 f 0000001192 65535 f 0000001193 65535 f 0000001194 65535 f 0000001195 65535 f 0000001196 65535 f 0000001197 65535 f 0000001198 65535 f 0000001199 65535 f 0000001200 65535 f 0000001201 65535 f 0000001202 65535 f 0000001203 65535 f 0000001204 65535 f 0000001205 65535 f 0000001206 65535 f 0000001207 65535 f 0000001208 65535 f 0000001209 65535 f 0000001210 65535 f 0000001211 65535 f 0000001212 65535 f 0000001213 65535 f 0000001214 65535 f 0000001215 65535 f 0000001216 65535 f 0000001217 65535 f 0000001218 65535 f 0000001219 65535 f 0000001220 65535 f 0000001221 65535 f 0000001222 65535 f 0000001223 65535 f 0000001224 65535 f 0000001225 65535 f 0000001226 65535 f 0000001227 65535 f 0000001228 65535 f 0000001229 65535 f 0000001230 65535 f 0000001231 65535 f 0000001232 65535 f 0000001233 65535 f 0000001234 65535 f 0000001235 65535 f 0000001236 65535 f 0000001237 65535 f 0000001238 65535 f 0000001239 65535 f 0000001240 65535 f 0000001241 65535 f 0000001242 65535 f 0000001243 65535 f 0000001244 65535 f 0000001245 65535 f 0000001246 65535 f 0000001247 65535 f 0000001248 65535 f 0000001249 65535 f 0000001250 65535 f 0000001251 65535 f 0000001252 65535 f 0000001253 65535 f 0000001254 65535 f 0000001255 65535 f 0000001256 65535 f 0000001257 65535 f 0000001258 65535 f 0000001259 65535 f 0000001260 65535 f 0000001261 65535 f 0000001262 65535 f 0000001263 65535 f 0000001264 65535 f 0000001265 65535 f 0000001266 65535 f 0000001267 65535 f 0000001268 65535 f 0000001269 65535 f 0000001270 65535 f 0000001271 65535 f 0000001272 65535 f 0000001273 65535 f 0000001274 65535 f 0000001275 65535 f 0000001276 65535 f 0000001277 65535 f 0000001278 65535 f 0000001279 65535 f 0000001280 65535 f 0000001281 65535 f 0000001282 65535 f 0000001283 65535 f 0000001284 65535 f 0000001285 65535 f 0000001286 65535 f 0000001287 65535 f 0000001288 65535 f 0000001289 65535 f 0000001290 65535 f 0000001291 65535 f 0000001292 65535 f 0000001293 65535 f 0000001294 65535 f 0000001295 65535 f 0000001296 65535 f 0000001297 65535 f 0000001298 65535 f 0000001299 65535 f 0000001300 65535 f 0000001301 65535 f 0000001302 65535 f 0000001303 65535 f 0000001304 65535 f 0000001305 65535 f 0000001306 65535 f 0000001307 65535 f 0000001308 65535 f 0000001309 65535 f 0000001310 65535 f 0000001311 65535 f 0000001312 65535 f 0000001313 65535 f 0000001314 65535 f 0000001315 65535 f 0000001316 65535 f 0000001317 65535 f 0000001318 65535 f 0000001319 65535 f 0000001320 65535 f 0000001321 65535 f 0000001322 65535 f 0000001323 65535 f 0000001324 65535 f 0000001325 65535 f 0000001326 65535 f 0000001327 65535 f 0000001328 65535 f 0000001329 65535 f 0000001330 65535 f 0000001331 65535 f 0000001332 65535 f 0000001333 65535 f 0000001334 65535 f 0000001335 65535 f 0000001336 65535 f 0000001337 65535 f 0000001338 65535 f 0000001339 65535 f 0000001340 65535 f 0000001341 65535 f 0000001342 65535 f 0000001343 65535 f 0000001344 65535 f 0000001345 65535 f 0000001346 65535 f 0000001347 65535 f 0000001348 65535 f 0000001349 65535 f 0000001350 65535 f 0000001351 65535 f 0000001352 65535 f 0000001353 65535 f 0000001354 65535 f 0000001355 65535 f 0000001356 65535 f 0000001357 65535 f 0000001358 65535 f 0000001359 65535 f 0000001360 65535 f 0000001361 65535 f 0000001362 65535 f 0000001363 65535 f 0000001364 65535 f 0000001365 65535 f 0000001366 65535 f 0000001367 65535 f 0000001368 65535 f 0000001369 65535 f 0000001370 65535 f 0000001371 65535 f 0000001372 65535 f 0000001373 65535 f 0000001374 65535 f 0000001375 65535 f 0000001376 65535 f 0000001377 65535 f 0000001378 65535 f 0000001379 65535 f 0000001380 65535 f 0000001381 65535 f 0000001382 65535 f 0000001383 65535 f 0000001384 65535 f 0000001385 65535 f 0000001386 65535 f 0000001387 65535 f 0000001388 65535 f 0000001389 65535 f 0000001390 65535 f 0000001391 65535 f 0000001392 65535 f 0000001393 65535 f 0000001394 65535 f 0000001395 65535 f 0000001396 65535 f 0000001397 65535 f 0000001398 65535 f 0000001399 65535 f 0000001400 65535 f 0000001401 65535 f 0000001402 65535 f 0000001403 65535 f 0000001404 65535 f 0000001405 65535 f 0000001406 65535 f 0000001407 65535 f 0000001408 65535 f 0000001409 65535 f 0000001410 65535 f 0000001411 65535 f 0000001412 65535 f 0000001413 65535 f 0000001414 65535 f 0000001415 65535 f 0000001416 65535 f 0000001417 65535 f 0000001418 65535 f 0000001419 65535 f 0000001420 65535 f 0000001421 65535 f 0000001422 65535 f 0000001423 65535 f 0000001424 65535 f 0000001425 65535 f 0000001426 65535 f 0000001427 65535 f 0000001428 65535 f 0000001429 65535 f 0000001430 65535 f 0000001431 65535 f 0000001432 65535 f 0000001433 65535 f 0000001434 65535 f 0000001435 65535 f 0000001436 65535 f 0000001437 65535 f 0000001438 65535 f 0000001439 65535 f 0000001440 65535 f 0000001441 65535 f 0000001442 65535 f 0000001443 65535 f 0000001444 65535 f 0000001445 65535 f 0000001446 65535 f 0000001447 65535 f 0000001448 65535 f 0000001449 65535 f 0000001450 65535 f 0000001451 65535 f 0000001452 65535 f 0000001453 65535 f 0000001454 65535 f 0000001455 65535 f 0000001456 65535 f 0000001457 65535 f 0000001458 65535 f 0000001459 65535 f 0000001460 65535 f 0000001461 65535 f 0000001462 65535 f 0000001463 65535 f 0000001464 65535 f 0000001465 65535 f 0000001466 65535 f 0000001467 65535 f 0000001468 65535 f 0000001469 65535 f 0000001470 65535 f 0000001471 65535 f 0000001472 65535 f 0000001473 65535 f 0000001474 65535 f 0000001475 65535 f 0000001476 65535 f 0000001477 65535 f 0000001478 65535 f 0000001479 65535 f 0000001480 65535 f 0000001481 65535 f 0000001482 65535 f 0000001483 65535 f 0000001484 65535 f 0000001485 65535 f 0000001486 65535 f 0000001487 65535 f 0000001488 65535 f 0000001489 65535 f 0000001490 65535 f 0000001491 65535 f 0000001492 65535 f 0000001493 65535 f 0000001494 65535 f 0000001495 65535 f 0000001496 65535 f 0000001497 65535 f 0000001498 65535 f 0000001499 65535 f 0000001500 65535 f 0000001501 65535 f 0000001502 65535 f 0000001503 65535 f 0000001504 65535 f 0000001505 65535 f 0000001506 65535 f 0000001507 65535 f 0000001508 65535 f 0000001509 65535 f 0000001510 65535 f 0000001511 65535 f 0000001512 65535 f 0000001513 65535 f 0000001514 65535 f 0000001515 65535 f 0000001516 65535 f 0000001517 65535 f 0000001518 65535 f 0000001519 65535 f 0000001520 65535 f 0000001521 65535 f 0000001522 65535 f 0000001523 65535 f 0000001524 65535 f 0000001525 65535 f 0000001526 65535 f 0000001527 65535 f 0000001528 65535 f 0000001529 65535 f 0000001530 65535 f 0000001531 65535 f 0000001532 65535 f 0000001533 65535 f 0000001534 65535 f 0000001535 65535 f 0000001536 65535 f 0000001537 65535 f 0000001538 65535 f 0000001539 65535 f 0000001540 65535 f 0000001541 65535 f 0000001542 65535 f 0000001543 65535 f 0000001544 65535 f 0000001545 65535 f 0000001546 65535 f 0000001547 65535 f 0000001548 65535 f 0000001549 65535 f 0000001550 65535 f 0000001551 65535 f 0000001552 65535 f 0000001553 65535 f 0000001554 65535 f 0000001555 65535 f 0000001556 65535 f 0000001557 65535 f 0000001558 65535 f 0000001559 65535 f 0000001560 65535 f 0000001561 65535 f 0000001562 65535 f 0000001563 65535 f 0000001564 65535 f 0000001565 65535 f 0000001566 65535 f 0000001567 65535 f 0000001568 65535 f 0000001569 65535 f 0000001570 65535 f 0000001571 65535 f 0000001572 65535 f 0000001573 65535 f 0000001574 65535 f 0000001575 65535 f 0000001576 65535 f 0000001577 65535 f 0000001578 65535 f 0000001579 65535 f 0000001580 65535 f 0000001581 65535 f 0000001582 65535 f 0000001583 65535 f 0000001584 65535 f 0000001585 65535 f 0000001586 65535 f 0000001587 65535 f 0000001588 65535 f 0000001589 65535 f 0000001590 65535 f 0000001591 65535 f 0000001592 65535 f 0000001593 65535 f 0000001594 65535 f 0000001595 65535 f 0000001596 65535 f 0000001597 65535 f 0000001598 65535 f 0000001599 65535 f 0000001600 65535 f 0000001601 65535 f 0000001602 65535 f 0000001603 65535 f 0000001604 65535 f 0000001605 65535 f 0000001606 65535 f 0000001607 65535 f 0000001608 65535 f 0000001609 65535 f 0000001610 65535 f 0000001611 65535 f 0000001612 65535 f 0000001613 65535 f 0000001614 65535 f 0000001615 65535 f 0000001616 65535 f 0000001617 65535 f 0000001618 65535 f 0000001619 65535 f 0000001620 65535 f 0000001621 65535 f 0000001622 65535 f 0000001623 65535 f 0000001624 65535 f 0000001625 65535 f 0000001626 65535 f 0000001627 65535 f 0000001628 65535 f 0000001629 65535 f 0000001630 65535 f 0000001631 65535 f 0000001632 65535 f 0000001633 65535 f 0000001634 65535 f 0000001635 65535 f 0000001636 65535 f 0000001637 65535 f 0000001638 65535 f 0000001639 65535 f 0000001640 65535 f 0000001641 65535 f 0000001642 65535 f 0000001643 65535 f 0000001644 65535 f 0000001645 65535 f 0000001646 65535 f 0000001647 65535 f 0000001648 65535 f 0000001649 65535 f 0000001650 65535 f 0000001651 65535 f 0000001652 65535 f 0000001653 65535 f 0000001654 65535 f 0000001655 65535 f 0000001656 65535 f 0000001657 65535 f 0000001658 65535 f 0000001659 65535 f 0000001660 65535 f 0000001661 65535 f 0000001662 65535 f 0000001663 65535 f 0000001664 65535 f 0000001665 65535 f 0000001666 65535 f 0000001667 65535 f 0000001668 65535 f 0000001669 65535 f 0000001670 65535 f 0000001671 65535 f 0000001672 65535 f 0000001673 65535 f 0000001674 65535 f 0000001675 65535 f 0000001676 65535 f 0000001677 65535 f 0000001678 65535 f 0000001679 65535 f 0000001680 65535 f 0000001681 65535 f 0000001682 65535 f 0000001683 65535 f 0000001684 65535 f 0000001685 65535 f 0000001686 65535 f 0000001687 65535 f 0000001688 65535 f 0000001689 65535 f 0000001690 65535 f 0000001691 65535 f 0000001692 65535 f 0000001693 65535 f 0000001694 65535 f 0000001695 65535 f 0000001696 65535 f 0000001697 65535 f 0000001698 65535 f 0000001699 65535 f 0000001700 65535 f 0000001701 65535 f 0000001702 65535 f 0000001703 65535 f 0000001704 65535 f 0000001705 65535 f 0000001706 65535 f 0000001707 65535 f 0000001708 65535 f 0000001709 65535 f 0000001710 65535 f 0000001711 65535 f 0000001712 65535 f 0000001713 65535 f 0000001714 65535 f 0000001715 65535 f 0000001716 65535 f 0000001717 65535 f 0000001718 65535 f 0000001719 65535 f 0000001720 65535 f 0000001721 65535 f 0000001722 65535 f 0000001723 65535 f 0000001724 65535 f 0000001725 65535 f 0000001726 65535 f 0000001727 65535 f 0000001728 65535 f 0000001729 65535 f 0000001730 65535 f 0000001731 65535 f 0000001732 65535 f 0000001733 65535 f 0000001734 65535 f 0000001735 65535 f 0000001736 65535 f 0000001737 65535 f 0000001738 65535 f 0000001739 65535 f 0000001740 65535 f 0000001741 65535 f 0000001742 65535 f 0000001743 65535 f 0000001744 65535 f 0000001745 65535 f 0000001746 65535 f 0000001747 65535 f 0000001748 65535 f 0000001749 65535 f 0000001750 65535 f 0000001751 65535 f 0000001752 65535 f 0000001753 65535 f 0000001754 65535 f 0000001755 65535 f 0000001756 65535 f 0000001757 65535 f 0000001758 65535 f 0000001759 65535 f 0000001760 65535 f 0000001761 65535 f 0000001762 65535 f 0000001763 65535 f 0000001764 65535 f 0000001765 65535 f 0000001766 65535 f 0000001767 65535 f 0000001768 65535 f 0000001769 65535 f 0000001770 65535 f 0000001771 65535 f 0000001772 65535 f 0000001773 65535 f 0000001774 65535 f 0000001775 65535 f 0000001776 65535 f 0000001777 65535 f 0000001778 65535 f 0000001779 65535 f 0000001780 65535 f 0000001781 65535 f 0000001782 65535 f 0000001783 65535 f 0000001784 65535 f 0000001785 65535 f 0000001786 65535 f 0000001787 65535 f 0000001788 65535 f 0000001789 65535 f 0000001790 65535 f 0000001791 65535 f 0000001792 65535 f 0000001793 65535 f 0000001794 65535 f 0000001795 65535 f 0000001796 65535 f 0000001797 65535 f 0000001798 65535 f 0000001799 65535 f 0000001800 65535 f 0000001801 65535 f 0000001802 65535 f 0000001803 65535 f 0000001804 65535 f 0000001805 65535 f 0000001806 65535 f 0000001807 65535 f 0000001808 65535 f 0000001809 65535 f 0000001810 65535 f 0000001811 65535 f 0000001812 65535 f 0000001813 65535 f 0000001814 65535 f 0000001815 65535 f 0000001816 65535 f 0000001817 65535 f 0000001818 65535 f 0000001819 65535 f 0000001820 65535 f 0000001821 65535 f 0000001822 65535 f 0000001823 65535 f 0000001824 65535 f 0000001825 65535 f 0000001826 65535 f 0000001827 65535 f 0000001828 65535 f 0000001829 65535 f 0000001830 65535 f 0000001831 65535 f 0000001832 65535 f 0000001833 65535 f 0000001834 65535 f 0000001835 65535 f 0000001836 65535 f 0000001837 65535 f 0000001838 65535 f 0000001839 65535 f 0000001840 65535 f 0000001841 65535 f 0000001842 65535 f 0000001843 65535 f 0000001844 65535 f 0000001845 65535 f 0000001846 65535 f 0000001847 65535 f 0000001848 65535 f 0000001849 65535 f 0000001850 65535 f 0000001851 65535 f 0000001852 65535 f 0000001853 65535 f 0000001854 65535 f 0000001855 65535 f 0000001856 65535 f 0000001857 65535 f 0000001858 65535 f 0000001859 65535 f 0000001860 65535 f 0000001861 65535 f 0000001862 65535 f 0000001863 65535 f 0000001864 65535 f 0000001865 65535 f 0000001866 65535 f 0000001867 65535 f 0000001868 65535 f 0000001869 65535 f 0000001870 65535 f 0000001871 65535 f 0000001872 65535 f 0000001873 65535 f 0000001874 65535 f 0000001875 65535 f 0000001876 65535 f 0000001877 65535 f 0000001878 65535 f 0000001879 65535 f 0000001880 65535 f 0000001881 65535 f 0000001882 65535 f 0000001883 65535 f 0000001884 65535 f 0000001885 65535 f 0000001886 65535 f 0000001887 65535 f 0000001888 65535 f 0000001889 65535 f 0000001890 65535 f 0000001891 65535 f 0000001892 65535 f 0000001893 65535 f 0000001894 65535 f 0000001895 65535 f 0000001896 65535 f 0000001897 65535 f 0000001898 65535 f 0000001899 65535 f 0000001900 65535 f 0000001901 65535 f 0000001902 65535 f 0000001903 65535 f 0000001904 65535 f 0000001905 65535 f 0000001906 65535 f 0000001907 65535 f 0000001908 65535 f 0000001909 65535 f 0000001910 65535 f 0000001911 65535 f 0000001912 65535 f 0000001913 65535 f 0000001914 65535 f 0000001915 65535 f 0000001916 65535 f 0000001917 65535 f 0000001918 65535 f 0000001919 65535 f 0000001920 65535 f 0000001921 65535 f 0000001922 65535 f 0000001923 65535 f 0000001924 65535 f 0000001925 65535 f 0000001926 65535 f 0000001927 65535 f 0000001928 65535 f 0000001929 65535 f 0000001930 65535 f 0000001931 65535 f 0000001932 65535 f 0000001933 65535 f 0000001934 65535 f 0000001935 65535 f 0000001936 65535 f 0000001937 65535 f 0000001938 65535 f 0000001939 65535 f 0000001940 65535 f 0000001941 65535 f 0000001942 65535 f 0000001943 65535 f 0000001944 65535 f 0000001945 65535 f 0000001946 65535 f 0000001947 65535 f 0000001948 65535 f 0000001949 65535 f 0000001950 65535 f 0000001951 65535 f 0000001952 65535 f 0000001953 65535 f 0000001954 65535 f 0000001955 65535 f 0000001956 65535 f 0000001957 65535 f 0000001958 65535 f 0000001959 65535 f 0000001960 65535 f 0000001961 65535 f 0000001962 65535 f 0000001963 65535 f 0000001964 65535 f 0000001965 65535 f 0000001966 65535 f 0000001967 65535 f 0000001968 65535 f 0000001969 65535 f 0000001970 65535 f 0000001971 65535 f 0000001972 65535 f 0000001973 65535 f 0000001974 65535 f 0000001975 65535 f 0000001976 65535 f 0000001977 65535 f 0000001978 65535 f 0000001979 65535 f 0000001980 65535 f 0000001981 65535 f 0000001982 65535 f 0000001983 65535 f 0000001984 65535 f 0000001985 65535 f 0000001986 65535 f 0000001987 65535 f 0000001988 65535 f 0000001989 65535 f 0000001990 65535 f 0000001991 65535 f 0000001992 65535 f 0000001993 65535 f 0000001994 65535 f 0000001995 65535 f 0000001996 65535 f 0000001997 65535 f 0000001998 65535 f 0000001999 65535 f 0000002000 65535 f 0000002001 65535 f 0000002002 65535 f 0000002003 65535 f 0000002004 65535 f 0000002005 65535 f 0000002006 65535 f 0000002007 65535 f 0000002008 65535 f 0000002009 65535 f 0000002010 65535 f 0000002011 65535 f 0000002012 65535 f 0000002013 65535 f 0000002014 65535 f 0000002015 65535 f 0000002016 65535 f 0000002017 65535 f 0000002018 65535 f 0000002019 65535 f 0000002020 65535 f 0000002021 65535 f 0000002022 65535 f 0000002023 65535 f 0000002024 65535 f 0000002025 65535 f 0000002026 65535 f 0000002027 65535 f 0000002028 65535 f 0000002029 65535 f 0000002030 65535 f 0000002031 65535 f 0000002032 65535 f 0000002033 65535 f 0000002034 65535 f 0000002035 65535 f 0000002036 65535 f 0000002037 65535 f 0000002038 65535 f 0000002039 65535 f 0000002040 65535 f 0000002041 65535 f 0000002042 65535 f 0000002043 65535 f 0000002044 65535 f 0000002045 65535 f 0000002046 65535 f 0000002047 65535 f 0000002048 65535 f 0000002049 65535 f 0000002050 65535 f 0000002051 65535 f 0000002052 65535 f 0000002053 65535 f 0000002054 65535 f 0000002055 65535 f 0000002056 65535 f 0000002057 65535 f 0000002058 65535 f 0000002059 65535 f 0000002060 65535 f 0000002061 65535 f 0000002062 65535 f 0000002063 65535 f 0000002064 65535 f 0000002065 65535 f 0000002066 65535 f 0000002067 65535 f 0000002068 65535 f 0000002069 65535 f 0000002070 65535 f 0000002071 65535 f 0000002072 65535 f 0000002073 65535 f 0000002074 65535 f 0000002075 65535 f 0000002076 65535 f 0000002077 65535 f 0000002078 65535 f 0000002079 65535 f 0000002080 65535 f 0000002081 65535 f 0000002082 65535 f 0000002083 65535 f 0000002084 65535 f 0000002085 65535 f 0000002086 65535 f 0000002087 65535 f 0000002088 65535 f 0000002089 65535 f 0000002090 65535 f 0000002091 65535 f 0000002092 65535 f 0000002093 65535 f 0000002094 65535 f 0000002095 65535 f 0000002096 65535 f 0000002097 65535 f 0000002098 65535 f 0000002099 65535 f 0000002100 65535 f 0000002101 65535 f 0000002102 65535 f 0000002103 65535 f 0000002104 65535 f 0000002105 65535 f 0000002106 65535 f 0000002107 65535 f 0000002108 65535 f 0000002109 65535 f 0000002110 65535 f 0000002111 65535 f 0000002112 65535 f 0000002113 65535 f 0000002114 65535 f 0000002115 65535 f 0000002116 65535 f 0000002117 65535 f 0000002118 65535 f 0000002119 65535 f 0000002120 65535 f 0000002121 65535 f 0000002122 65535 f 0000002123 65535 f 0000002124 65535 f 0000002125 65535 f 0000002126 65535 f 0000002127 65535 f 0000002128 65535 f 0000002129 65535 f 0000002130 65535 f 0000002131 65535 f 0000002132 65535 f 0000002133 65535 f 0000002134 65535 f 0000002135 65535 f 0000002136 65535 f 0000002137 65535 f 0000002138 65535 f 0000002139 65535 f 0000002140 65535 f 0000002141 65535 f 0000002142 65535 f 0000002143 65535 f 0000002144 65535 f 0000002145 65535 f 0000002146 65535 f 0000002147 65535 f 0000002148 65535 f 0000002149 65535 f 0000002150 65535 f 0000002151 65535 f 0000002152 65535 f 0000002153 65535 f 0000002154 65535 f 0000002155 65535 f 0000002156 65535 f 0000002157 65535 f 0000002158 65535 f 0000002159 65535 f 0000002160 65535 f 0000002161 65535 f 0000002162 65535 f 0000002163 65535 f 0000002164 65535 f 0000002165 65535 f 0000002166 65535 f 0000002167 65535 f 0000002168 65535 f 0000002169 65535 f 0000002170 65535 f 0000002171 65535 f 0000002172 65535 f 0000002173 65535 f 0000002174 65535 f 0000002175 65535 f 0000002176 65535 f 0000002177 65535 f 0000002178 65535 f 0000002179 65535 f 0000002180 65535 f 0000002181 65535 f 0000002182 65535 f 0000002183 65535 f 0000002184 65535 f 0000002185 65535 f 0000002186 65535 f 0000002187 65535 f 0000002188 65535 f 0000002189 65535 f 0000002190 65535 f 0000002191 65535 f 0000002192 65535 f 0000002193 65535 f 0000002194 65535 f 0000002195 65535 f 0000002196 65535 f 0000002197 65535 f 0000002198 65535 f 0000002199 65535 f 0000002200 65535 f 0000002201 65535 f 0000002202 65535 f 0000002203 65535 f 0000002204 65535 f 0000002205 65535 f 0000002206 65535 f 0000002207 65535 f 0000002208 65535 f 0000002209 65535 f 0000002210 65535 f 0000002211 65535 f 0000002212 65535 f 0000002213 65535 f 0000002214 65535 f 0000002215 65535 f 0000002216 65535 f 0000002217 65535 f 0000002218 65535 f 0000002219 65535 f 0000002220 65535 f 0000002221 65535 f 0000002222 65535 f 0000002223 65535 f 0000002224 65535 f 0000002225 65535 f 0000002226 65535 f 0000002227 65535 f 0000002228 65535 f 0000002229 65535 f 0000002230 65535 f 0000002231 65535 f 0000002232 65535 f 0000002233 65535 f 0000002234 65535 f 0000002235 65535 f 0000002236 65535 f 0000002237 65535 f 0000002238 65535 f 0000002239 65535 f 0000002240 65535 f 0000002241 65535 f 0000002242 65535 f 0000002243 65535 f 0000002244 65535 f 0000002245 65535 f 0000002246 65535 f 0000002247 65535 f 0000002248 65535 f 0000002249 65535 f 0000002250 65535 f 0000002251 65535 f 0000002252 65535 f 0000002253 65535 f 0000002254 65535 f 0000002255 65535 f 0000002256 65535 f 0000002257 65535 f 0000002258 65535 f 0000002259 65535 f 0000002260 65535 f 0000002261 65535 f 0000002262 65535 f 0000002263 65535 f 0000002264 65535 f 0000002265 65535 f 0000002266 65535 f 0000002267 65535 f 0000002268 65535 f 0000002269 65535 f 0000002270 65535 f 0000002271 65535 f 0000002272 65535 f 0000002273 65535 f 0000002274 65535 f 0000002275 65535 f 0000002276 65535 f 0000002277 65535 f 0000002278 65535 f 0000002279 65535 f 0000002280 65535 f 0000002281 65535 f 0000002282 65535 f 0000002283 65535 f 0000002284 65535 f 0000002285 65535 f 0000002286 65535 f 0000002287 65535 f 0000002288 65535 f 0000002289 65535 f 0000002290 65535 f 0000002291 65535 f 0000002292 65535 f 0000002293 65535 f 0000002294 65535 f 0000002295 65535 f 0000002296 65535 f 0000002297 65535 f 0000002298 65535 f 0000002299 65535 f 0000002300 65535 f 0000002301 65535 f 0000002302 65535 f 0000002303 65535 f 0000002304 65535 f 0000002305 65535 f 0000002306 65535 f 0000002307 65535 f 0000002308 65535 f 0000002309 65535 f 0000002310 65535 f 0000002311 65535 f 0000002312 65535 f 0000002313 65535 f 0000002314 65535 f 0000002315 65535 f 0000002316 65535 f 0000002317 65535 f 0000002318 65535 f 0000002319 65535 f 0000002320 65535 f 0000002321 65535 f 0000002322 65535 f 0000002323 65535 f 0000002324 65535 f 0000002325 65535 f 0000002326 65535 f 0000002327 65535 f 0000002328 65535 f 0000002329 65535 f 0000002330 65535 f 0000002331 65535 f 0000002332 65535 f 0000002333 65535 f 0000002334 65535 f 0000002335 65535 f 0000002336 65535 f 0000002337 65535 f 0000002338 65535 f 0000002339 65535 f 0000002340 65535 f 0000002341 65535 f 0000002342 65535 f 0000002343 65535 f 0000002344 65535 f 0000002345 65535 f 0000002346 65535 f 0000002347 65535 f 0000002348 65535 f 0000002349 65535 f 0000002350 65535 f 0000002351 65535 f 0000002352 65535 f 0000002353 65535 f 0000002354 65535 f 0000002355 65535 f 0000002356 65535 f 0000002357 65535 f 0000002358 65535 f 0000002359 65535 f 0000002360 65535 f 0000002361 65535 f 0000002362 65535 f 0000002363 65535 f 0000002364 65535 f 0000002365 65535 f 0000002366 65535 f 0000002367 65535 f 0000002368 65535 f 0000002369 65535 f 0000002370 65535 f 0000002371 65535 f 0000002372 65535 f 0000002373 65535 f 0000002374 65535 f 0000002375 65535 f 0000002376 65535 f 0000002377 65535 f 0000002378 65535 f 0000002379 65535 f 0000002380 65535 f 0000002381 65535 f 0000002382 65535 f 0000002383 65535 f 0000002384 65535 f 0000002385 65535 f 0000002386 65535 f 0000002387 65535 f 0000002388 65535 f 0000002389 65535 f 0000002390 65535 f 0000002391 65535 f 0000002392 65535 f 0000002393 65535 f 0000002394 65535 f 0000002395 65535 f 0000002396 65535 f 0000002397 65535 f 0000002398 65535 f 0000002399 65535 f 0000002400 65535 f 0000002401 65535 f 0000002402 65535 f 0000002403 65535 f 0000002404 65535 f 0000002405 65535 f 0000002406 65535 f 0000002407 65535 f 0000002408 65535 f 0000002409 65535 f 0000002410 65535 f 0000002411 65535 f 0000002412 65535 f 0000002413 65535 f 0000002414 65535 f 0000002415 65535 f 0000002416 65535 f 0000002417 65535 f 0000002418 65535 f 0000002419 65535 f 0000002420 65535 f 0000002421 65535 f 0000002422 65535 f 0000002423 65535 f 0000002424 65535 f 0000002425 65535 f 0000002426 65535 f 0000002427 65535 f 0000002428 65535 f 0000002429 65535 f 0000002430 65535 f 0000002431 65535 f 0000002432 65535 f 0000002433 65535 f 0000002434 65535 f 0000002435 65535 f 0000002436 65535 f 0000002437 65535 f 0000002438 65535 f 0000002439 65535 f 0000002440 65535 f 0000002441 65535 f 0000002442 65535 f 0000002443 65535 f 0000002444 65535 f 0000002445 65535 f 0000002446 65535 f 0000002447 65535 f 0000002448 65535 f 0000002449 65535 f 0000002450 65535 f 0000002451 65535 f 0000002452 65535 f 0000002453 65535 f 0000002454 65535 f 0000002455 65535 f 0000002456 65535 f 0000002457 65535 f 0000002458 65535 f 0000002459 65535 f 0000002460 65535 f 0000002461 65535 f 0000002462 65535 f 0000002463 65535 f 0000002464 65535 f 0000002465 65535 f 0000002466 65535 f 0000002467 65535 f 0000002468 65535 f 0000002469 65535 f 0000002470 65535 f 0000002471 65535 f 0000002472 65535 f 0000002473 65535 f 0000002474 65535 f 0000002475 65535 f 0000002476 65535 f 0000002477 65535 f 0000002478 65535 f 0000002479 65535 f 0000002480 65535 f 0000002481 65535 f 0000002482 65535 f 0000002483 65535 f 0000002484 65535 f 0000002485 65535 f 0000002486 65535 f 0000002487 65535 f 0000002488 65535 f 0000002489 65535 f 0000002490 65535 f 0000002491 65535 f 0000002492 65535 f 0000002493 65535 f 0000002494 65535 f 0000002495 65535 f 0000002496 65535 f 0000002497 65535 f 0000002498 65535 f 0000002499 65535 f 0000002500 65535 f 0000002501 65535 f 0000002502 65535 f 0000002503 65535 f 0000002504 65535 f 0000002505 65535 f 0000002506 65535 f 0000002507 65535 f 0000002508 65535 f 0000002509 65535 f 0000002510 65535 f 0000002511 65535 f 0000002512 65535 f 0000002513 65535 f 0000002514 65535 f 0000002515 65535 f 0000002516 65535 f 0000002517 65535 f 0000002518 65535 f 0000002519 65535 f 0000000000 65535 f 0000465886 00000 n 0000466181 00000 n 0000570352 00000 n 0000571005 00000 n 0000671212 00000 n 0000672056 00000 n 0000672547 00000 n 0000673034 00000 n 0000719959 00000 n 0000720408 00000 n 0000720785 00000 n 0000721172 00000 n 0000825185 00000 n 0000825482 00000 n 0000825763 00000 n 0000826070 00000 n 0000931582 00000 n 0000931921 00000 n 0001019700 00000 n 0001020196 00000 n 0001020495 00000 n 0001020798 00000 n 0001146141 00000 n 0001146735 00000 n 0001147058 00000 n 0001147360 00000 n 0001159673 00000 n 0001159718 00000 n 0001159747 00000 n 0001160048 00000 n 0001173297 00000 n 0001173342 00000 n 0001173645 00000 n 0001303071 00000 n 0001303766 00000 n 0001304315 00000 n 0001304344 00000 n 0001331844 00000 n 0001332117 00000 n 0001430551 00000 n 0001430804 00000 n 0001439595 00000 n 0001439842 00000 n 0001446946 00000 n 0001447266 00000 n 0001491517 00000 n 0001491663 00000 n 0001491770 00000 n 0001491965 00000 n 0001492269 00000 n 0001502694 00000 n 0001502740 00000 n 0001502769 00000 n 0001506201 00000 n trailer <<6141ACE4E54F0E49B2AB4C0D609C79FF>] >> startxref 1511676 %%EOF xref 0 0 trailer <<6141ACE4E54F0E49B2AB4C0D609C79FF>] /Prev 1511676/XRefStm 1506201>> startxref 1563320 %%EOFlcms2-2.5/doc/LittleCMS2.5 API.pdf0000755002406300000240001076713012163060730015624 0ustar mariamausers%PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xUN@}5{Tx1HBۊO_2IMB"73g)Nv~WZ8>.N۶Wp]VmZǪ*l 0Iq ޥ _B (Li¨WT3*M=%M}EڭԞ7LYn8D0rK0y ?w|A)e*3M]1u?UMOuK]*=OU Xd27ba#0o&ʀjg+)tzY2= w5ѡ|dd'A냜")N'@!G42!<1HUc\hlpph4yKqh771P@)ZA?(M Dz66jrm&8=:b]5=f` -ubgQGҡnM)G B1{jD^i2,.e]q g+Vcuq endstream endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> stream JFIFxExifMM*b.33`h(=d #` %*/4]8^<CLU9[Ra,gMm[t{*$ZekZW8 15 !P""B}  n!'T- 6 ) S cC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222.b" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( +&}7]!k%k $gx*4 V"|y)tbvIr0;8gYT H{i$`>%I5~>Ul=qc?|@uQiW-o`\E<,p$)E|_^x)T/Z:*8Kޤ((+̾'|Wolw\De}3=6Z ?M[hGTm,"e v=\)((((((((((((((((((((((((((((P]'ú kk$֍yW7ᆠ''>HFgYسsLPfxSĚyZ;88^[u,{WxF;?u/dBk|Us<KbK˶Է7=Gy?9~,xF ;PղAn;_?0?u৆\Kqz}lۓiBJ{~u >#x~>S̳;D(2s7]xnglHHswQ@q'ďĚM/u/k>3> յJ/< [j?hdMރgH68?A^c}e%s\Kq#1`ZFltW[[iPٳ Hb X2R|E jY?/R̶pщV9lp}\ii7=#iF3&jiPElgv <ƽᇏn<|u+;e{?Z_[WnP}?Jή֖5OPqܹ=)#pU-gx,ŴmsZV+/uMMSR-m2J+O%[;@p.]ҿ诇o|iFB~ '\T6]anZGQF$7=U~nZҬ;Dq"oPu ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( OSUmi(}}0{]6(b9B D6aQ\6>+o:ʷsa@krE 85{ͧNnu$EZ){Uصҵ((((((((((((((((((((((((()f8P2O|3L>.s$_e,p?,W8}kPI6F" $^"Gumf@<3N@O)rUg}N-㪯_ >JnO'}*{B3 /]Dx!y!tn-fq2u@Ş"EbK=F&8BH(᝭^9(C@>W^:_O ķl v'~UE>-U|`pMI{uocnl kqh@-ZV?.GZ((((((((((((((((((((((((()5_:l5GU_!_+WZhJ@ruWҺ%o<$M{(sWCfF׋-;]'d(#L1 T΋~oW[~*cEO`ƽW-sŚ>kkirg$|vsy&w+Jc^;N[߉V2KthX~Um~Okda4ۮ?1@59w+'R??Ӽ+/;Vq+H7zk=9Up3]ĉ2Fp,3_]a\dR@ @!AOiZJ7ad2=O^A]-Lech+ᦗB+fq|W]6k[,=_ח,+<uv q^n|%]{\]۩&>e{9iFPE{7o|A=BZ IA--WԚvCL7lH1Bk|' };(@zgIn =۴Fν.7M\ʑ@7 ݸ1@4]_ x_I' uGߕxw|CkoʲĶ:ۜk^/Dg#Θcn;8>~kකt^t˂}#HH|{mmзZP uQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE5j|TKf[e 5WZo BXVV~Ē3\x?rfx G" ?ƀ'п/O6,㠟Ƽo ֙GYr7s\cӵx} -1&y%%_|.g-Ͷ>kZoi INXS OmoD66RVbA~FnѾF^ '\Ҽ^bn<3Z-(z#y=7úq/c?ſJ|3?tVŢh>fhw]i>:֭o#)'$pHJ kMfX/pj%?,?߆{ɓC ?ݎ}j_HULnO=!A<#dR4d?ƺO[x7Ʋ[\:vkC ?^ :4idXB;^'>ptj[ 3Jךh$YPX9D`c?]d$Q:(3=MyW>9DcBu!C~t7m;E]^1{RXjz͔.cɯּSOjgjfv.=?5oXAϓ79JPj}q؅%ȼz Bt-FBSZ?w6:w?Er"bD)pm4yUEo:>6E~L?iNj<,t-vs -nz:\/sD|Sa ?ivtP)hfR9I#`Zi BN3Vk?c,WoGEW]ª}* dj5@#QEYb+{Rkb>BU~Ue6 i:uno 6o.?/G?Zɿ| rI&ϭu?e?Uqq*O.?/G;ֿMct96O*>1ոtˏQN;?HόfKh(}W]s_8r\C貛MfHֽĸUiڒj1qnF7/`Pt}Qeٕ,u>hh4RdRaQ@y6yw,'lk2Xdj>#|G5 <wJ-"O?Z-@yV3ZvcO ek˱fy, QkO/4GWt?<>T<\_ʼw<ϯ#:tDx;}5O.yqq*<Z_74GWtwj]PTyqq*??ֵ>oy࿈4tkȗ8l;o<{y )CWN\R}])Jqtf(4 * m>[%HU7?%V\|N>Utά D sniW<Gk>3xGfFվ*fO&k!F\I_? EE2V/1u=#MóM OfTR"2վKEzWלUZ\W?_A^qVγQ_~bQEQEs]\E]jԇT;w?]5 58;4oUUi;4o|5 m;QQk \[7JC Ğ-gFkV[RS排[5~#k:tڂ#O?Z2PCkЪYi<[[.<)4cf1ǖ:Wg>oXk7@,=`-<+ϩ բU$'v*՝Yݰ*H ( (8o>!B5v|%Fѿ~Q__T]RD5-Bu \:xMc [)H!_C'ҺQzM]dnݕxR`ZK]&Ũ?{ާW0T:RVSG/h87&QEzQ@Q@Q@Q@%5+ʼZ%&#*CO_38cKy|_3Z1}%[מE=vcO–>MvXQEQEQEQEQEQEQEQEQER3R@P2IK^w ԛ찐y??jxc{պq5YߧC- ׼~AEW9Q@Q@Q@Q@2xn;t&{@늺pu$T0%^{E/hͯx&z_W^ фq#+< PD;~S׻hKol⾆P~=|4ZxCX>h*C_sgT3:Mn˺9MeԞ]^E0+/{q^[klun }7W_:kh+|FPmchS"]O5 ( ( ( ( ( ( ( ( ( >u:Zm}콼*6HojD5Ƈba%)30aJk$+?\ ( ( (wc@I][ӣ87H54?&5?o1gV?z4q}۸J(Ը;zU$fTFf8U$ YI6A֠n$C5eK/(W@qקeS81Hz/A~!](TU.[ۨ8 OƳ%}ھx",~7袊s(((((((((o?q;FUW> ?#_GhJ(/c z/4^#oH#tW~8ε[NU:ld~WMGupETeWZ( ( (#p#?5 լHٿ5^>eqե~˅G ZDcv}>?vmЊKxϨ]u 2/VKeks#+1TW:#Z/scP߻#"q%loF?Լ1HY-+Ao,lb*ed99#\ƻ#UP(((_"i3~C5ހL]L--ñ>q_׼ 9 ]Z_3xQ'__kE⟦Q@Q@ﮖK8fۭAC'+*ιnLȀ`|W3[ӡ&Vx$+S8oo W-Wò m֏+ؙy;= _UA+>4ᥣ=ԑc|70@"m"TnK8ifhFY܀&Ƥ]ɍĘ u-BWBz:Fmy-a>Ȯ`@PA)9;ݓP-P _tm.%O̎z6»xJOuXI5f|EOڇ͖Nq{UpC {vgCOת꿮(D((( è#޴4kF~)9{wة+ex\lmZ:}/7$REucrX?zWÓ@xaчQ^ԗq_&#WNy|oV7 G%|7jklف5)D#!/Riec7OyMO.Y|3<,0q\q \^ҭuXˋb;`zc֍y?O\Kִ jv˴,Gnx>jꚜg{{ r61U$h,k$n2 uQEq?> C=;#Ϻ dc^{ײf 7 m}j(r0UϵpZ>-6qq 6<p OJ~ k%NZݥX-ـ ?^P[mk pڑơUG5QEQEQEQEUԣ3i1/;Ō&`k>ᯑ:OEǓz+EC35_,EQ@Q@gō{Q1օtNYˋPÒn?TiAЀOj|l.GҕHc/Eu,}_# `[r_5FWSɁs ϻ^o/s;.\Xc ԝ\_15qi7=ڃ+ Ի]2#|hR>S{W|[eB)'#CYԅ%VSV~QMFܠӫ_MlcY#|i&5oE_lzw8;~ |/4G7We^ҟ2?xM9~.%#}}jTj+M9>_dG1&I$rvZt_ՐѬUuEӱz2Z~xkǫZ1W7GHnQWH: ⿊(>D((%Fѿ~7zҿ@ >?X49YP*J)xg{.$OAq?jt|W mVHe O:tY],L.~av|/ 0۬%lcǷֽD6!Eoռ[ɋF~ӲC42WN# Wx:dBG#k˵ ϧL|z~ux. Geh#P]b]iy:84` W66<%.a(-Q]Q@Q@E3I )< $GAaHˍGu_ËwL6ŒԱ ħڿjyzkZNn؏߭t~+k&#vrG<֟ \xmڰug>Z50+]`g=)>YǣIc:}Kq) J9ְ_;xv[1/­$9@H1^5#}ρ=gH}+z,#QExoVcer]MPG8Ը >W\zu5cFw *{ d"[4%~rGP _s\SG d1wwƽhW`"Li9Qig |}ᏮsG9|QZ=kv/n @Ҁ:( ( ( (TtoHi+>.xQK+3yl|lu,:3qSo,=h֎i'EQo~dJ$Њ_;8I?dׅzQM5p*M((((f𗍬PJܷu8?MUuEԌ=|=_eQ>; *kZU{Vi7ksl0 ;֍xryR!½[r+?$if/jY@_C)m¿s͖^ _j_EbV _E[+?RңR kܜ#8]3SHM]3xRMs}o;s3ڽX#Vd;_ Ew`1M$I$C *ATQs?C㸯+珑 ( (8oCwo_|(~ B5v00:>ѪiS_7_A_[ZưtRLc/zFXt׻Zilƚ6}+|bC\*-''גd%]2+󜊞`=ڋ'g5:'ȶ$Ie 5}'Sk xľpmȺZ,u+4o×1wtαy~'.ZkϧtJ[5Aw $ "7Uam'GnrV9+ȯ.8?3.q;ii '~4SxIjmlO.&9lzrtd,u?ajoaT+EWQEQEQE5f)('q՗KuK֔yv:G㯊t6I ynNK qU~[6fo?w_~\Et"[:'3`{Rwgn|4e=E[/-, {h|euZ|Wm$c(>3:đbmwn*pUr}y+N@ZEPEPU!BGX|+OoD*5Fǡd*OFWҞ$,&%) |_xR|,ҿL^\87\_WvMEG \DѺRWZ3xI)E0((((((B^8Է"A98?4R9E|Y!?x=~ x_%˟X"PO$ +UG+7qoE!EPEP_?W_| C4$_UII{@/ ?Ÿ+RVR׼}PQ@7A@U*_ @GA_7TWREȅQ@Q@77zҾqo?q;FUWG~G_C~F7TW<w}O_%Zۨy5ߴFCHo7s=Usn? wS¿7yl(9nI0"QS袔a|*QEPQ@Q@Wc刐e;@قf8N~n'F:3|14:ZQz/4 iPP OֻFu)Q AP1\C|5-/mn-tjÜӯsDaHISq_dq]MfW+pPEPEPEPEP||G/WECmC)FHQ̌vW~ ƹ۹NZ : {q_Mi0s閏}+t+vsհ[pP ֤gѮdm`h8vAp@8P8P: x9QEQEQEP\9m$rB#Yr`_/]uxIZ7ukA#7JַN9M+os^c⏇6c5vp0zhU{nw{wg˱2A( Mf-R4@1y05#}UU_z#bʋZ{4gդ,*5#Y0WV/tT?lHom[G74αR+TzF1I"|Ʉ/ix㖹w,2[FU3R3pj1ДӌUGfSRWm}FY^}C>~{R?ex{z\ߣG,Kh'}?_q\,Khq~PϷ^7}K6I"^&,__Y^ְ9kw3%H|hy}JTFڟ]Øj)MU_C-/ҥ/ҥd0(h/hʢIB/$Xzf gmq=ׁapqn|a+ו?e+_o\,Khq~xPϷ1R?ex{z\ߣG,Kh'}?_q\,Khq~PϷ^7}K*7J?Ѝ}Ǣ+毇Q5֯ a@H})ǘWMR}^.4`/#ƚ$?I3 3ǟ=mK.׋j_doݱQ%_?¾'*x*Jz.Ng9EI>i|*n2:ZEV~i%гE@p7R =$SץOTOѢZ>Mё+u(LQAuXƇ8 EDYd5w>+eyV+',$"\OOo(N+<E5ğ~-\ϻ cE97IVuh_^pĶk|\ز3GQ4h"_q_ uk;t$3u/#ңZ#@qy>zρ ҦK}iG hLgq{ 6{}w-d+6c[4sHT,p3}t55?^]S5̥],T\q\TN8UutQEQEQ]%w@YwbW?r/M̓p"Q,v-CX~i^ys>? Ϭ>>? O?Wuv@>-tK0)Q@Q@Ŝw$0y^ZB95Y%ExG #}ctQEx_ #}ctQEx_ #}ctQEyo$lfR z ҥKHA=N0°<3]%7 ~_x 8 Ĭ=s^TTmmQ@=]7rKXDOL*ǟᝯ8uu},l"n('i<-\jq=nTGV4W)Rի/F/ op>{wl-d헁J`Gn?LW&n*z\ "WacY?J C AW^E tJl( c{}4ooZ* ,+LJP-RZRI=1zqW(iV]_\$1F%':+Um{irƄI˞l.0ClVo&` t=? 8/Gzm^;!$#yQ.1a|Eӡ v AWwY,QoǞӼ;k__Hsp<cÞ~6k{tj~ܜk[s$CHKCeo%E~&ՠS[(Tamr *3־wmtInR,|R;ܚ5EH3˷'P ZcP7S[Tuy@VH3—]xGGI$&` ؜VEsn\F"tuʰ"i kh0QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQER8sG^fn&(fsb=3{wu=VSIn-ks0XϨPpI@}}k[*/hQd%9`eDUyE*s0vAV%"P2]N?J kR1?,W5(#em,w yin隇똬ѢM>}?>qGnn%.yaI5}vш1h\K Ei@[]E5ģ|gWPYͅgnCLFF9==J((((((((((((((((((((((((((((((((((+'ѴoMu݆KXMrfJmN}iu ~ŎUy7@;;tuDgvc-$ZTQ@ 6.cv9ǦiQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 22 0 R 26 0 R 27 0 R 28 0 R 29 0 R 31 0 R 32 0 R 33 0 R 34 0 R 36 0 R 38 0 R 39 0 R 41 0 R 43 0 R 45 0 R 47 0 R 49 0 R 51 0 R 54 0 R 57 0 R 60 0 R 66 0 R 77 0 R 80 0 R 82 0 R 86 0 R 88 0 R 90 0 R 93 0 R] /MediaBox[ 0 0 612 792] /Contents 19 0 R/Group<>/Tabs/S/StructParents 1>> endobj 19 0 obj <> stream xQo8;E") X,ЦE }r*އxJ69VU@?GO̐m,y~yUO}}Xo~}oUM[uͺg{p}ux{X^_q*I K(R_~8c7^_2$3mj5m:)i^&bP^$aC3D Ӄp<V` ~4!8HݷAjfpK Hg*iLU* G!d.!|+؏{l{_T Se01K< h)ǮSZHG1ր (qьDȌhңѬRCaf^V_L4`Tݧ5fݮPn̏ ˻}!0.YRM#yU{0a K'n0$FDC{(d&i+j]o-/#QF7Nߕc)ձeL^Di9hRC#EӉy<ɈdKg8فPL2n5Xz3V8M/$1+؁hJP!ӗ#}J$hGQdM2#r"pN$xFPd(5--gᔦgv?8~NP$%H$npdII$^™PSM[R6lfnK}8G-[M#A9L./V )mQyC47FOD@{-5@8=μã [a_ժo`&ߵ}&$P;+H}!8M$0!C$-R4QQhKT8\pYWf5[1 6 w]nj6:&`*k1eh@7@ؑWj$x gG߆N36[%1;]۴w>_e/o)6@|{X(JRgP Ez>Sx=!+d ǫ =ugC9 *[T8]٬(D>C1֟ŐJءnpNw/h؅otq^śFV#>(Y$ e~<Jn!GGfH./lLb>۝ zrXG][SRjMqHKp**PYukv\Dcͧ j,jVyrG?|d|J`*@"Mq> endobj 21 0 obj <> endobj 22 0 obj <>/F 4/Dest[ 25 0 R/XYZ 82 721 0] /StructParent 2>> endobj 23 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 97 0 R 101 0 R 102 0 R 106 0 R 109 0 R 110 0 R 112 0 R 119 0 R 122 0 R 124 0 R 125 0 R 126 0 R 127 0 R 131 0 R 132 0 R 133 0 R 135 0 R 137 0 R 139 0 R 144 0 R 148 0 R 150 0 R 154 0 R 158 0 R 161 0 R 169 0 R 173 0 R 175 0 R 178 0 R 181 0 R 183 0 R 186 0 R] /MediaBox[ 0 0 612 792] /Contents 95 0 R/Group<>/Tabs/S/StructParents 32>> endobj 24 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 190 0 R 192 0 R 195 0 R 197 0 R 202 0 R 209 0 R 211 0 R 215 0 R 218 0 R 224 0 R 228 0 R 230 0 R 233 0 R 235 0 R 237 0 R 241 0 R 245 0 R 252 0 R 258 0 R 260 0 R] /MediaBox[ 0 0 612 792] /Contents 188 0 R/Group<>/Tabs/S/StructParents 66>> endobj 25 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 264 0 R 265 0 R] /MediaBox[ 0 0 612 792] /Contents 263 0 R/Group<>/Tabs/S/StructParents 86>> endobj 26 0 obj <>/F 4/Dest[ 25 0 R/XYZ 82 633 0] /StructParent 3>> endobj 27 0 obj <>/F 4/Dest[ 25 0 R/XYZ 82 547 0] /StructParent 4>> endobj 28 0 obj <>/F 4/Dest[ 25 0 R/XYZ 82 504 0] /StructParent 5>> endobj 29 0 obj <>/F 4/Dest[ 30 0 R/XYZ 82 721 0] /StructParent 6>> endobj 30 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 273 0 R/Group<>/Tabs/S/StructParents 89>> endobj 31 0 obj <>/F 4/Dest[ 30 0 R/XYZ 82 625 0] /StructParent 7>> endobj 32 0 obj <>/F 4/Dest[ 30 0 R/XYZ 82 539 0] /StructParent 8>> endobj 33 0 obj <>/F 4/Dest[ 30 0 R/XYZ 82 469 0] /StructParent 9>> endobj 34 0 obj <>/F 4/Dest[ 35 0 R/XYZ 82 721 0] /StructParent 10>> endobj 35 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 274 0 R/Group<>/Tabs/S/StructParents 90>> endobj 36 0 obj <>/F 4/Dest[ 37 0 R/XYZ 82 721 0] /StructParent 11>> endobj 37 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 282 0 R/Group<>/Tabs/S/StructParents 91>> endobj 38 0 obj <>/F 4/Dest[ 37 0 R/XYZ 82 583 0] /StructParent 12>> endobj 39 0 obj <>/F 4/Dest[ 40 0 R/XYZ 82 721 0] /StructParent 13>> endobj 40 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 285 0 R/Group<>/Tabs/S/StructParents 92>> endobj 41 0 obj <>/F 4/Dest[ 42 0 R/XYZ 82 721 0] /StructParent 14>> endobj 42 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 286 0 R/Group<>/Tabs/S/StructParents 93>> endobj 43 0 obj <>/F 4/Dest[ 44 0 R/XYZ 82 721 0] /StructParent 15>> endobj 44 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 289 0 R/Group<>/Tabs/S/StructParents 94>> endobj 45 0 obj <>/F 4/Dest[ 46 0 R/XYZ 82 721 0] /StructParent 16>> endobj 46 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 290 0 R/Group<>/Tabs/S/StructParents 95>> endobj 47 0 obj <>/F 4/Dest[ 48 0 R/XYZ 82 721 0] /StructParent 17>> endobj 48 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 291 0 R/Group<>/Tabs/S/StructParents 96>> endobj 49 0 obj <>/F 4/Dest[ 50 0 R/XYZ 82 721 0] /StructParent 18>> endobj 50 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 292 0 R/Group<>/Tabs/S/StructParents 97>> endobj 51 0 obj <>/F 4/Dest[ 53 0 R/XYZ 82 721 0] /StructParent 19>> endobj 52 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 296 0 R 297 0 R] /MediaBox[ 0 0 612 792] /Contents 295 0 R/Group<>/Tabs/S/StructParents 98>> endobj 53 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 298 0 R/Group<>/Tabs/S/StructParents 101>> endobj 54 0 obj <>/F 4/Dest[ 56 0 R/XYZ 82 721 0] /StructParent 20>> endobj 55 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 299 0 R/Group<>/Tabs/S/StructParents 102>> endobj 56 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 300 0 R/Group<>/Tabs/S/StructParents 103>> endobj 57 0 obj <>/F 4/Dest[ 59 0 R/XYZ 82 721 0] /StructParent 21>> endobj 58 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 301 0 R/Group<>/Tabs/S/StructParents 104>> endobj 59 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 302 0 R/Group<>/Tabs/S/StructParents 105>> endobj 60 0 obj <>/F 4/Dest[ 65 0 R/XYZ 82 721 0] /StructParent 22>> endobj 61 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 303 0 R/Group<>/Tabs/S/StructParents 106>> endobj 62 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 305 0 R 306 0 R] /MediaBox[ 0 0 612 792] /Contents 304 0 R/Group<>/Tabs/S/StructParents 107>> endobj 63 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 307 0 R/Group<>/Tabs/S/StructParents 110>> endobj 64 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 308 0 R/Group<>/Tabs/S/StructParents 111>> endobj 65 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 309 0 R/Group<>/Tabs/S/StructParents 112>> endobj 66 0 obj <>/F 4/Dest[ 76 0 R/XYZ 82 721 0] /StructParent 23>> endobj 67 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 310 0 R/Group<>/Tabs/S/StructParents 113>> endobj 68 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 312 0 R] /MediaBox[ 0 0 612 792] /Contents 311 0 R/Group<>/Tabs/S/StructParents 114>> endobj 69 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 314 0 R] /MediaBox[ 0 0 612 792] /Contents 313 0 R/Group<>/Tabs/S/StructParents 116>> endobj 70 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 316 0 R 317 0 R] /MediaBox[ 0 0 612 792] /Contents 315 0 R/Group<>/Tabs/S/StructParents 118>> endobj 71 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 323 0 R/Group<>/Tabs/S/StructParents 121>> endobj 72 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 325 0 R] /MediaBox[ 0 0 612 792] /Contents 324 0 R/Group<>/Tabs/S/StructParents 122>> endobj 73 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 328 0 R/Group<>/Tabs/S/StructParents 124>> endobj 74 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 334 0 R/Group<>/Tabs/S/StructParents 125>> endobj 75 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 336 0 R] /MediaBox[ 0 0 612 792] /Contents 335 0 R/Group<>/Tabs/S/StructParents 126>> endobj 76 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 338 0 R 339 0 R] /MediaBox[ 0 0 612 792] /Contents 337 0 R/Group<>/Tabs/S/StructParents 128>> endobj 77 0 obj <>/F 4/Dest[ 79 0 R/XYZ 82 721 0] /StructParent 24>> endobj 78 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 345 0 R/Group<>/Tabs/S/StructParents 131>> endobj 79 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 347 0 R] /MediaBox[ 0 0 612 792] /Contents 346 0 R/Group<>/Tabs/S/StructParents 132>> endobj 80 0 obj <>/F 4/Dest[ 81 0 R/XYZ 82 721 0] /StructParent 25>> endobj 81 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 349 0 R] /MediaBox[ 0 0 612 792] /Contents 348 0 R/Group<>/Tabs/S/StructParents 134>> endobj 82 0 obj <>/F 4/Dest[ 85 0 R/XYZ 82 721 0] /StructParent 26>> endobj 83 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 355 0 R] /MediaBox[ 0 0 612 792] /Contents 354 0 R/Group<>/Tabs/S/StructParents 136>> endobj 84 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 356 0 R/Group<>/Tabs/S/StructParents 138>> endobj 85 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 360 0 R 361 0 R] /MediaBox[ 0 0 612 792] /Contents 357 0 R/Group<>/Tabs/S/StructParents 139>> endobj 86 0 obj <>/F 4/Dest[ 87 0 R/XYZ 82 721 0] /StructParent 27>> endobj 87 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 363 0 R 364 0 R] /MediaBox[ 0 0 612 792] /Contents 362 0 R/Group<>/Tabs/S/StructParents 142>> endobj 88 0 obj <>/F 4/Dest[ 89 0 R/XYZ 82 721 0] /StructParent 28>> endobj 89 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 365 0 R/Group<>/Tabs/S/StructParents 145>> endobj 90 0 obj <>/F 4/Dest[ 92 0 R/XYZ 82 721 0] /StructParent 29>> endobj 91 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 366 0 R/Group<>/Tabs/S/StructParents 146>> endobj 92 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 368 0 R] /MediaBox[ 0 0 612 792] /Contents 367 0 R/Group<>/Tabs/S/StructParents 147>> endobj 93 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 721 0] /StructParent 30>> endobj 94 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 369 0 R/Group<>/Tabs/S/StructParents 149>> endobj 95 0 obj <> stream xo8ࣽ@") ( pzjˮp쳕J 9fU;rD}L G}sU٫Wo^hn}s^]ݷk{p}u,M=23V$-Y!d"{j_*뫔뫯36=J\NdBd$WI%P~fy"$;4W?34F+a|v/N!sd^*2=|ϑ_ 3[¬kvB p\i)3˕L[r승M./;nHd}+ Fv9Ñ&fWoo\YLGm#t\f|M4IS,G5wSrˁJI)~E#$LEf2ɭu˒o% 52 |]0q/LJ.%@q_lG_޳> +m+irxi|S!,JزbH Q^"D5 ܏퀋=gOU}{AloĬ[y>}5b ]>oʤ(԰ryU ۅRUa %c̫D' =<z@tr qkö6"5쇾].`I$G`lga 01^"HL%qd*9Ek)8)逋ҿERP5'@oXeuɊ@EdO?TZ I/zbkd´HRn?UҷDPY}8eQ$F s-JUPbHR_/Quր3v*##2'we*Y`Uiر?<=x?mmrX.Ll(Đ+5"EV- <<y " wbO*)`NBp6_\' V㼛Y.i.7t!<5HU %0JV63D!pIܡ &%hr=. yټ佯p4npb6Nm9@V=akd]VcEPã#/׹~ĉg`h.&)x@0DA{1'"50\(ÎZoxA:25\.{k awϛ\s[_&PݮC+hX̶.˛p_E--)hs"=pBOD́өbp; nt~fo6<50yni0ʠsΒ\ײ7Űsǰ($TVfͅf ٩sd|sAZt{87*R锥Y6+I/M9q3j}'ȑ* 7IҶKdQ$DYĐ*KR4nhpθ)8q7*c-3A^groォ[~e4fCT#"C z"(ea(eeW49Տ ѦKm,(\6]Dqth#H6 R4hd.큳ەKtdŕKA>ĩW t쟰\ېŐ3_C#3"AdDN/3BJÞIVp%oy ,k%KK`Y':22YLP Y!%$'z^ gJaL 큓;*ÇXG0rPxBR߮B1߮< vU *ZfSsxb 83ipjL&pG|Y}zstݘBas0/+{ V7Dγi S%> endobj 97 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 721 0] /StructParent 31>> endobj 98 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 371 0 R 372 0 R 373 0 R] /MediaBox[ 0 0 612 792] /Contents 370 0 R/Group<>/Tabs/S/StructParents 150>> endobj 99 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 375 0 R 376 0 R] /MediaBox[ 0 0 612 792] /Contents 374 0 R/Group<>/Tabs/S/StructParents 154>> endobj 100 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 377 0 R/Group<>/Tabs/S/StructParents 157>> endobj 101 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 163 0] /StructParent 33>> endobj 102 0 obj <>/F 4/Dest[ 105 0 R/XYZ 82 721 0] /StructParent 34>> endobj 103 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 378 0 R/Group<>/Tabs/S/StructParents 158>> endobj 104 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 380 0 R 381 0 R 382 0 R 383 0 R] /MediaBox[ 0 0 612 792] /Contents 379 0 R/Group<>/Tabs/S/StructParents 159>> endobj 105 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R] /MediaBox[ 0 0 612 792] /Contents 384 0 R/Group<>/Tabs/S/StructParents 164>> endobj 106 0 obj <>/F 4/Dest[ 108 0 R/XYZ 82 721 0] /StructParent 35>> endobj 107 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 392 0 R 393 0 R 394 0 R 395 0 R 396 0 R 397 0 R] /MediaBox[ 0 0 612 792] /Contents 391 0 R/Group<>/Tabs/S/StructParents 171>> endobj 108 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 398 0 R/Group<>/Tabs/S/StructParents 178>> endobj 109 0 obj <>/F 4/Dest[ 108 0 R/XYZ 82 702 0] /StructParent 36>> endobj 110 0 obj <>/F 4/Dest[ 111 0 R/XYZ 82 721 0] /StructParent 37>> endobj 111 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 399 0 R/Group<>/Tabs/S/StructParents 179>> endobj 112 0 obj <>/F 4/Dest[ 118 0 R/XYZ 82 721 0] /StructParent 38>> endobj 113 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 400 0 R/Group<>/Tabs/S/StructParents 180>> endobj 114 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 406 0 R/Group<>/Tabs/S/StructParents 181>> endobj 115 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 408 0 R 409 0 R 410 0 R] /MediaBox[ 0 0 612 792] /Contents 407 0 R/Group<>/Tabs/S/StructParents 182>> endobj 116 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 412 0 R 413 0 R] /MediaBox[ 0 0 612 792] /Contents 411 0 R/Group<>/Tabs/S/StructParents 186>> endobj 117 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 414 0 R/Group<>/Tabs/S/StructParents 189>> endobj 118 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 415 0 R/Group<>/Tabs/S/StructParents 190>> endobj 119 0 obj <>/F 4/Dest[ 121 0 R/XYZ 82 721 0] /StructParent 39>> endobj 120 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 416 0 R/Group<>/Tabs/S/StructParents 191>> endobj 121 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 417 0 R/Group<>/Tabs/S/StructParents 192>> endobj 122 0 obj <>/F 4/Dest[ 123 0 R/XYZ 82 538 0] /StructParent 40>> endobj 123 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 418 0 R/Group<>/Tabs/S/StructParents 193>> endobj 124 0 obj <>/F 4/Dest[ 123 0 R/XYZ 82 402 0] /StructParent 41>> endobj 125 0 obj <>/F 4/Dest[ 123 0 R/XYZ 82 351 0] /StructParent 42>> endobj 126 0 obj <>/F 4/Dest[ 123 0 R/XYZ 82 229 0] /StructParent 43>> endobj 127 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 44>> endobj 128 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 419 0 R/Group<>/Tabs/S/StructParents 194>> endobj 129 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 420 0 R/Group<>/Tabs/S/StructParents 195>> endobj 130 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 421 0 R/Group<>/Tabs/S/StructParents 196>> endobj 131 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 418 0] /StructParent 45>> endobj 132 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 245 0] /StructParent 46>> endobj 133 0 obj <>/F 4/Dest[ 134 0 R/XYZ 82 721 0] /StructParent 47>> endobj 134 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 422 0 R/Group<>/Tabs/S/StructParents 197>> endobj 135 0 obj <>/F 4/Dest[ 136 0 R/XYZ 82 721 0] /StructParent 48>> endobj 136 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 424 0 R 425 0 R 426 0 R 427 0 R 428 0 R 429 0 R 430 0 R 431 0 R 432 0 R 433 0 R] /MediaBox[ 0 0 612 792] /Contents 423 0 R/Group<>/Tabs/S/StructParents 198>> endobj 137 0 obj <>/F 4/Dest[ 138 0 R/XYZ 82 721 0] /StructParent 49>> endobj 138 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 434 0 R/Group<>/Tabs/S/StructParents 209>> endobj 139 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 50>> endobj 140 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 435 0 R/Group<>/Tabs/S/StructParents 210>> endobj 141 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 436 0 R/Group<>/Tabs/S/StructParents 211>> endobj 142 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 437 0 R/Group<>/Tabs/S/StructParents 212>> endobj 143 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 438 0 R/Group<>/Tabs/S/StructParents 213>> endobj 144 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 721 0] /StructParent 51>> endobj 145 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 447 0 R 448 0 R] /MediaBox[ 0 0 612 792] /Contents 439 0 R/Group<>/Tabs/S/StructParents 214>> endobj 146 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 450 0 R] /MediaBox[ 0 0 612 792] /Contents 449 0 R/Group<>/Tabs/S/StructParents 217>> endobj 147 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 451 0 R/Group<>/Tabs/S/StructParents 219>> endobj 148 0 obj <>/F 4/Dest[ 149 0 R/XYZ 82 721 0] /StructParent 52>> endobj 149 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 453 0 R 454 0 R 455 0 R 456 0 R 457 0 R 458 0 R 459 0 R 460 0 R] /MediaBox[ 0 0 612 792] /Contents 452 0 R/Group<>/Tabs/S/StructParents 220>> endobj 150 0 obj <>/F 4/Dest[ 153 0 R/XYZ 82 721 0] /StructParent 53>> endobj 151 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 461 0 R/Group<>/Tabs/S/StructParents 229>> endobj 152 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 462 0 R/Group<>/Tabs/S/StructParents 230>> endobj 153 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 464 0 R 465 0 R 466 0 R 467 0 R 468 0 R] /MediaBox[ 0 0 612 792] /Contents 463 0 R/Group<>/Tabs/S/StructParents 231>> endobj 154 0 obj <>/F 4/Dest[ 157 0 R/XYZ 82 721 0] /StructParent 54>> endobj 155 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 470 0 R 471 0 R 472 0 R 473 0 R 474 0 R] /MediaBox[ 0 0 612 792] /Contents 469 0 R/Group<>/Tabs/S/StructParents 237>> endobj 156 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 475 0 R/Group<>/Tabs/S/StructParents 243>> endobj 157 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 477 0 R 478 0 R 479 0 R 480 0 R 481 0 R 482 0 R] /MediaBox[ 0 0 612 792] /Contents 476 0 R/Group<>/Tabs/S/StructParents 244>> endobj 158 0 obj <>/F 4/Dest[ 160 0 R/XYZ 82 721 0] /StructParent 55>> endobj 159 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 484 0 R 485 0 R 486 0 R 487 0 R 488 0 R 489 0 R] /MediaBox[ 0 0 612 792] /Contents 483 0 R/Group<>/Tabs/S/StructParents 251>> endobj 160 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 491 0 R 492 0 R] /MediaBox[ 0 0 612 792] /Contents 490 0 R/Group<>/Tabs/S/StructParents 258>> endobj 161 0 obj <>/F 4/Dest[ 163 0 R/XYZ 82 721 0] /StructParent 56>> endobj 162 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 494 0 R 495 0 R 496 0 R 497 0 R] /MediaBox[ 0 0 612 792] /Contents 493 0 R/Group<>/Tabs/S/StructParents 261>> endobj 163 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 504 0 R 505 0 R] /MediaBox[ 0 0 612 792] /Contents 498 0 R/Group<>/Tabs/S/StructParents 266>> endobj 164 0 obj <> endobj 165 0 obj [ 166 0 R] endobj 166 0 obj <> endobj 167 0 obj <> endobj 168 0 obj <> endobj 169 0 obj <>/F 4/Dest[ 172 0 R/XYZ 82 721 0] /StructParent 57>> endobj 170 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 509 0 R 510 0 R 511 0 R 512 0 R] /MediaBox[ 0 0 612 792] /Contents 508 0 R/Group<>/Tabs/S/StructParents 269>> endobj 171 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 519 0 R 520 0 R 521 0 R 522 0 R] /MediaBox[ 0 0 612 792] /Contents 513 0 R/Group<>/Tabs/S/StructParents 274>> endobj 172 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 523 0 R/Group<>/Tabs/S/StructParents 279>> endobj 173 0 obj <>/F 4/Dest[ 174 0 R/XYZ 82 721 0] /StructParent 58>> endobj 174 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 525 0 R 526 0 R 527 0 R] /MediaBox[ 0 0 612 792] /Contents 524 0 R/Group<>/Tabs/S/StructParents 280>> endobj 175 0 obj <>/F 4/Dest[ 177 0 R/XYZ 82 721 0] /StructParent 59>> endobj 176 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 528 0 R/Group<>/Tabs/S/StructParents 284>> endobj 177 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 532 0 R] /MediaBox[ 0 0 612 792] /Contents 531 0 R/Group<>/Tabs/S/StructParents 285>> endobj 178 0 obj <>/F 4/Dest[ 180 0 R/XYZ 82 721 0] /StructParent 60>> endobj 179 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 534 0 R] /MediaBox[ 0 0 612 792] /Contents 533 0 R/Group<>/Tabs/S/StructParents 287>> endobj 180 0 obj <>/ExtGState<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 536 0 R] /MediaBox[ 0 0 612 792] /Contents 535 0 R/Group<>/Tabs/S/StructParents 64>> endobj 181 0 obj <>/F 4/Dest[ 182 0 R/XYZ 82 721 0] /StructParent 61>> endobj 182 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 540 0 R] /MediaBox[ 0 0 612 792] /Contents 539 0 R/Group<>/Tabs/S/StructParents 290>> endobj 183 0 obj <>/F 4/Dest[ 185 0 R/XYZ 82 721 0] /StructParent 62>> endobj 184 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 542 0 R] /MediaBox[ 0 0 612 792] /Contents 541 0 R/Group<>/Tabs/S/StructParents 292>> endobj 185 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 543 0 R/Group<>/Tabs/S/StructParents 294>> endobj 186 0 obj <>/F 4/Dest[ 187 0 R/XYZ 82 721 0] /StructParent 63>> endobj 187 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 546 0 R/Group<>/Tabs/S/StructParents 295>> endobj 188 0 obj <> stream xmo6wKg@>Km ֡[3E9ÀӏGɱ&OHnlb^y_{n|զ{}w]^|dKV[.jV˭cw-dݰ]}aw?]^Jk?[HCr^eRscٶx`T2X;3{:݅ՆKoooL !9}/+O0F¯ĭe"®'pͧy|d‚V}-EW㥩3i_] .ny2JW\בR%4\JV(7JY B!a)2BO7BQ=LI se }*KkWmHñ8ﮮ]]bv]'7YWmdZ߈=J3@B )󇫇hpƀc4EΓF;BQsS,>n7WvZz|7cO_l e? +ra*`JpY2Vϧ6Rl0bc6 Ŧ%$Hl]Wz|"R[(ȶ ^.LRJQ2""Ru s(У̚"$HY'ĎWjhwim'L%Pv-uX6!2r.NjU %;3JiX#$!)dRc{Y\fx~17#Y eS7lZ7+CDLP#BMȃ#M."es( "= Ll/6$ YӺަkYHh&A0FZ"Bxzb"%Y HaC6-!՘3MQlb{&]v H?3 -[ߖ췫J_$YH]/-F.LQRx c6E!I;NJЯK'za{~м\ՑJr΋i!*aLA)d\IC6GirMy$f ,GyXwv+Ȥ`TnaԼAXT\ן̢JO[z/#28*G3!1[} t좊2ȯX-A/ra*iF^@͍W lnF*=Hj8ztvʏCXZ>SRܵO|8t?ePk+cd[fmwix0& E#`Bw9 &lar$LD@{Iw,}R!EeodLlˤ+i=!j$+!ejrhZjMQhb{&Nh=Ho'tPO˖ Ѕ5p+Y6Ih!clKȅ l cDC6g=MI Iiis"T%ػJ9lzuUl;͋lKF.Le[B/5@' (:=Ӓ!h7ht7B TtWpyasjE0 3R *6}<\y0RAQF1&ڃ$B;pܠ[={`ff]vCpgmɳ| S1 gJ(gHE(njL-$콞v.'7;xgTUcbr]1"N/b-dkC_]<&rWzjΘfxWP=.k\\/j&u`:|QM72 endstream endobj 189 0 obj <> endobj 190 0 obj <>/F 4/Dest[ 191 0 R/XYZ 82 721 0] /StructParent 65>> endobj 191 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 547 0 R/Group<>/Tabs/S/StructParents 296>> endobj 192 0 obj <>/F 4/Dest[ 194 0 R/XYZ 82 721 0] /StructParent 67>> endobj 193 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 548 0 R/Group<>/Tabs/S/StructParents 297>> endobj 194 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 549 0 R/Group<>/Tabs/S/StructParents 298>> endobj 195 0 obj <>/F 4/Dest[ 196 0 R/XYZ 82 721 0] /StructParent 68>> endobj 196 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 550 0 R/Group<>/Tabs/S/StructParents 299>> endobj 197 0 obj <>/F 4/Dest[ 201 0 R/XYZ 82 721 0] /StructParent 69>> endobj 198 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 551 0 R/Group<>/Tabs/S/StructParents 300>> endobj 199 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 552 0 R/Group<>/Tabs/S/StructParents 301>> endobj 200 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 553 0 R/Group<>/Tabs/S/StructParents 302>> endobj 201 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 554 0 R/Group<>/Tabs/S/StructParents 303>> endobj 202 0 obj <>/F 4/Dest[ 208 0 R/XYZ 82 721 0] /StructParent 70>> endobj 203 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 555 0 R/Group<>/Tabs/S/StructParents 304>> endobj 204 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 556 0 R/Group<>/Tabs/S/StructParents 305>> endobj 205 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 557 0 R/Group<>/Tabs/S/StructParents 306>> endobj 206 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 558 0 R/Group<>/Tabs/S/StructParents 307>> endobj 207 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 559 0 R/Group<>/Tabs/S/StructParents 308>> endobj 208 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 560 0 R/Group<>/Tabs/S/StructParents 309>> endobj 209 0 obj <>/F 4/Dest[ 210 0 R/XYZ 82 721 0] /StructParent 71>> endobj 210 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 561 0 R/Group<>/Tabs/S/StructParents 310>> endobj 211 0 obj <>/F 4/Dest[ 214 0 R/XYZ 82 721 0] /StructParent 72>> endobj 212 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 562 0 R/Group<>/Tabs/S/StructParents 311>> endobj 213 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 563 0 R/Group<>/Tabs/S/StructParents 312>> endobj 214 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 564 0 R/Group<>/Tabs/S/StructParents 313>> endobj 215 0 obj <>/F 4/Dest[ 217 0 R/XYZ 82 721 0] /StructParent 73>> endobj 216 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 565 0 R/Group<>/Tabs/S/StructParents 314>> endobj 217 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 566 0 R/Group<>/Tabs/S/StructParents 315>> endobj 218 0 obj <>/F 4/Dest[ 223 0 R/XYZ 82 721 0] /StructParent 74>> endobj 219 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 567 0 R/Group<>/Tabs/S/StructParents 316>> endobj 220 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 568 0 R/Group<>/Tabs/S/StructParents 317>> endobj 221 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 569 0 R/Group<>/Tabs/S/StructParents 318>> endobj 222 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 570 0 R/Group<>/Tabs/S/StructParents 319>> endobj 223 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 571 0 R/Group<>/Tabs/S/StructParents 320>> endobj 224 0 obj <>/F 4/Dest[ 227 0 R/XYZ 82 721 0] /StructParent 75>> endobj 225 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 572 0 R/Group<>/Tabs/S/StructParents 321>> endobj 226 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 573 0 R/Group<>/Tabs/S/StructParents 322>> endobj 227 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 574 0 R/Group<>/Tabs/S/StructParents 323>> endobj 228 0 obj <>/F 4/Dest[ 229 0 R/XYZ 82 721 0] /StructParent 76>> endobj 229 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 575 0 R/Group<>/Tabs/S/StructParents 324>> endobj 230 0 obj <>/F 4/Dest[ 232 0 R/XYZ 82 721 0] /StructParent 77>> endobj 231 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 584 0 R 585 0 R 586 0 R] /MediaBox[ 0 0 612 792] /Contents 583 0 R/Group<>/Tabs/S/StructParents 325>> endobj 232 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 588 0 R] /MediaBox[ 0 0 612 792] /Contents 587 0 R/Group<>/Tabs/S/StructParents 329>> endobj 233 0 obj <>/F 4/Dest[ 234 0 R/XYZ 82 721 0] /StructParent 78>> endobj 234 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 589 0 R/Group<>/Tabs/S/StructParents 331>> endobj 235 0 obj <>/F 4/Dest[ 236 0 R/XYZ 82 721 0] /StructParent 79>> endobj 236 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 590 0 R/Group<>/Tabs/S/StructParents 332>> endobj 237 0 obj <>/F 4/Dest[ 240 0 R/XYZ 82 721 0] /StructParent 80>> endobj 238 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 591 0 R/Group<>/Tabs/S/StructParents 333>> endobj 239 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 592 0 R/Group<>/Tabs/S/StructParents 334>> endobj 240 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 593 0 R/Group<>/Tabs/S/StructParents 335>> endobj 241 0 obj <>/F 4/Dest[ 244 0 R/XYZ 82 721 0] /StructParent 81>> endobj 242 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 594 0 R/Group<>/Tabs/S/StructParents 336>> endobj 243 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 595 0 R/Group<>/Tabs/S/StructParents 337>> endobj 244 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 596 0 R/Group<>/Tabs/S/StructParents 338>> endobj 245 0 obj <>/F 4/Dest[ 251 0 R/XYZ 82 721 0] /StructParent 82>> endobj 246 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 597 0 R/Group<>/Tabs/S/StructParents 339>> endobj 247 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 598 0 R/Group<>/Tabs/S/StructParents 340>> endobj 248 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 599 0 R/Group<>/Tabs/S/StructParents 341>> endobj 249 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 600 0 R/Group<>/Tabs/S/StructParents 342>> endobj 250 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 601 0 R/Group<>/Tabs/S/StructParents 343>> endobj 251 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 602 0 R/Group<>/Tabs/S/StructParents 344>> endobj 252 0 obj <>/F 4/Dest[ 257 0 R/XYZ 82 721 0] /StructParent 83>> endobj 253 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 603 0 R/Group<>/Tabs/S/StructParents 345>> endobj 254 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 604 0 R/Group<>/Tabs/S/StructParents 346>> endobj 255 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 605 0 R/Group<>/Tabs/S/StructParents 347>> endobj 256 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 607 0 R 608 0 R] /MediaBox[ 0 0 612 792] /Contents 606 0 R/Group<>/Tabs/S/StructParents 348>> endobj 257 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 609 0 R/Group<>/Tabs/S/StructParents 351>> endobj 258 0 obj <>/F 4/Dest[ 259 0 R/XYZ 82 435 0] /StructParent 84>> endobj 259 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 610 0 R/Group<>/Tabs/S/StructParents 352>> endobj 260 0 obj <>/F 4/Dest[ 262 0 R/XYZ 82 721 0] /StructParent 85>> endobj 261 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 611 0 R/Group<>/Tabs/S/StructParents 353>> endobj 262 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 613 0 R] /MediaBox[ 0 0 612 792] /Contents 612 0 R/Group<>/Tabs/S/StructParents 354>> endobj 263 0 obj <> stream x]o6=@JEǢ(v)^!"ˎ6Sof(Y%J7cÙpH/~|5Ouْ.n6?7l9YeRٻW`sݬ8?grR*`78`ȣyx~v밋?/g?N>CYSX؍$~rߕU P" AIw puz/]Jq\׼+M1,Ԇk$bޒ㟑3Y*@ VHco _\J'R8e_JTq#DKg?bl{1D:!w`[~裝1Yo .ksxIo[YwQh>4׼A]\o㻓ZjoU@rs*K^e;\_Hyt-1NjK+<BdN0όでh]Py&;[Fuіq{x`UD]Η-h8sJISspu^\lF#Yfٲag<$0+P\k" uD厶yRjUZ*6 .dw2J-&cIPt͊e3"G`d&6Ӽ(%MKƮp> `#6#1Dy챀Еydcp\stЈARNmߊ{0[@e v|9)EIq~8t__rXN#7USUP 15Cb߷U[gM{NT9}1F7AIӓ[eRl;p+M^׈ )lE~$nIj|j P115Q܅ ᾧvatzX88YPL+Vz>G04rJXu]@}ĂRx跶VO>1MLP4s·prC7YsL 7S~o`ԗ,xou޼i:힙F2[7bt|8qkb'<z7>؇<0J°NM@b$0<W ʙK"^ޱ2K@Jrt4P1zSmK5!#:zi׼g/sDC4NlvH0-밖!:nέrKrO?(8KC$K LoXdQ{"x*YA/Kϖl**ճWP5$%R+ެVP(ƋBܡ6С6Þ66$<$nb6F͉qA{L6 vM H,K i6[Bf`2]—\7 maA_軃3@jF0_aj__pUC`{ @ j2)|iy\mZb21ƚ<[KlȷPq\}Mc"WMRQWjo@0Z=Q ! *8*؏0C Էc0h 4gWl7ndZ9j쒋zequEˈ6T@MO:{C6{k2"e;%p{˙5ͬ |DJMyEG.|O9v#!Px@npUh q[MЁ̫ 7ôDyK-Xo o h2mCniDŅLj(G7n<4q7 g)5K`ff)rNu!<7$ՅY.S)0-d~(ˉ54 Oe&S Ucyd;zYN"9/l xQzN>7#?}ox {-_e"V\ e(nc @QY^8UtJ_:2܆n isaB&#}Rk+! ͳ_ޥXVgSalJ{TX!wa=؆b&M T@MY6ƪ VMyI;NZx@B*H՛6HNz쾧 I@_1ۄ6|' q"B²y'E/a4)DpRY$('Y>>/p)1b_Yҧj%[Uhs1hҠ0-~1[A}۴Ȓcg>feTuo%ڵn4N5s|13{$^4ۮ-xvRC0o 3eis3 JYInFfG.G-V۴{^2sú%{D:-`9W|(D7羥, 3 <G\|ܷG!'Q9'؛s, \ endstream endobj 264 0 obj <>/F 4/A<>/StructParent 87>> endobj 265 0 obj <>/F 4/A<>/StructParent 88>> endobj 266 0 obj <> endobj 267 0 obj [ 268 0 R] endobj 268 0 obj <> endobj 269 0 obj <> endobj 270 0 obj <> endobj 271 0 obj <> endobj 272 0 obj <> endobj 273 0 obj <> stream xYnFo0J1=)| IMvX0"mq-S*IK3 eRDmܾCmyMZqzzr޶dZveQ|*kyuv&..ɵJ.JHS"LE ~bH@*uÃ@!n>`hr z[4LR-6?ҁ^V( )4CU :]w0n4+BO8ʐ0^[ydfħv 98s;?mDY qt (XG6pO1it|`{X3A7&x7x2bX2d ~)kꩨZt, *i uNI Pl,/e$k <%%) )Ɯ(aS!]KUh_JSt9o͔rdfϔkS2V)ٳ)9`,l~6K;fqhǵmrgY1ZJ;q;;/G,rԹz Uu.?F QzT24hMryS*HEVCJ%tZP -&]J6LbȠ`2Z$Yn95Ǭ8D\B^͝FChڌ#(1F(rOkBf;J8QtO m4}.!کJCuĂNt60 Jm;xB/vVc4^=?DyIixek.6 C0M!ifeհeQJMQ̿0M36!|\RaOq6yBM>IA;g먩Tr<!gA. `kE rN[[bOXXN,wC38hweTq{A]Gp:(F({2+cɪӰ0`ݖ"J]}\om9 >LFC`" L 2E_ȋl/KF #Ui Z"rn<4C|anaX^3O9B6EMQSy&8x 3|. S *5zN^?(R d53%JGY ?3|K,).x $M͓AaVdN`&ƏIHY0|_V_K=[Z6sbB~*X0Te 8HFRH.z ugvzx#Zq~许2qg[oK"%ۯ"-Gjq~"(aQ'.vg&J^("Z[EM= {.?W_8BŧGT ]FpxˤB%86)}g*ͮ S<n'4v5? m̦@=x4(˄Mxf Ci%6CtnhTz81 ۏp+N`I(`0#c%^ ݋"sI*%qRA &eW(0 $z5 F r~V; 59Qg Ә7?̔+4{kb43e0ᤵ^iw᫃m &?)'nEuagXg_3yz, X%t&E@ıda_a&MD'yQ ܛy^Dޜih \?>Q{uhTo,Pӽa>p:2-Zq~˸2m9 endstream endobj 274 0 obj <> stream x\ko:^_Vh="WM⢽GvڒWP(KiǶ!9g8$sr,(cL'Ut%IXirv..훓3 =d o2 yM [y;M5Td6ÅW,9rwմu,zf7+\!䓐k'\K T5±ncV= ;@CUfBլTpn⯎Vp7 w&ɋpN?:*rL:4ˮ?^2v˛+f4z kA+2Mf|G|8ZKXَV F LS9s\MO9_ Bߵ2?5K*=_MBiYsvt̵i.#NCHO3xokcX"#!]BEAFx{fQѧ:@ƗLjGX(uQFOqGǎFw\>#67,W=2g\ŋ( tt]_4'_Ql$~M7y-XFX<: :Lc4=`Ji~BmN~5(YbcM?d3$\o l{lUZ԰k4c޻yA }o}vlr\ K0M(_ >wdlǯJSp9N|8v'.gcFezuurA$:l ౭F1)N :yy/=8ې;}VSb*vcV+󱾁ߕIR nAe2H YQ^(85vI,;6tÀ b2ݫZXf-xP{G0s  < j8Q noSpȲEJT%Ub&kʧ0똃)ݖPXHn)lUkP袡NWzʆ?C-,ҹ XbdJywzW#]nVR&6V6 l>W;pN#MSlU4n ct,{/@ gr }u2ݦԭҝ-es )ΣmCM[ EXs` eOKz&-GSNd ءaD #IN9i%6vzVÏ#>5l~ǶE\bmJ8+hJijzRZ* ԦL!5Mmr51myޢ^\e:e4.o ŽfKa`pN`x{[Q~m~?{|H}$ƄkOEh 12"m{5[w5i,B 0dC]!d0Y) Ar"C(ZzPFJP΃i2@|!ʨ*ݖDdq KA-惍>8b/qs?t;h޲nЁe wZh_9LJ pDž!^0ͽ-" fA.BM?)KVFI(ΟH3ZnĚD *#R鶑&i{o`OUЊ*c4*D&঴@7y{ʃY<Ę7^ z0A$P0Lǘ.̸>%$sYAYL ~b1xS&tNGaG>\ȱ=٧=.&$7V<& ؈2rBxyE<ȹK#ܾ8L;ZZl,-X@ӐrsQޙSkU[:tdHH Q]MUѦ:* G7fHϱpCS6Ys1&*[^lܛ٦pOߒ UKT"C)&ّFein NHI+(&%(";Ggj_ S\<llLXN/XtOK.#fik5fpiDk I40{V.v|ĕcrK~_-U㫥ԾW ˩rP /lq߬ 6qK}kMr{~/w_>ê}P-41pb3f.%uId ELU#t/7(O!HP$A2Wy]arǭ6L|c5)\.hkXytpUwˣܱؽr:K[]y‭Ҙ^ U (x ֓c{xZfSw$l!/T\j]@P1$-&FiD;fYsټz'Wa$~EM褱LeEQk4"E 4x9(k]? E~Opq "I : s`Yg`npCD&О0~ ߾s UIWjaqu{4ȼ2 u1-cZ bZ!QǴ Maj[JĴuUDvm7 $2Z44ebZ7L~Onj-ڎl ~ 8vsI*er1~] _Oo>]_)b,->n0myy`:㻲}gl琌y'+t;]FڮѤgµx2aO~oOEL<-2QMP 6LߐO1t":&=ۡ,i|hеF$4) zAm&8`/dYh,2ݛ/%3GR5=#*u樮'sTN嗞`2-ܬ+q31ۭBe,bY?ˊmw'TL:A? C&kV?+drY^d``U79̴ծlO̎$̫0Ky|xŮ[mŴ4fz\X,;oĮ:Aa1'"Yup!?R}Frh)l\æEdF^0̮hVuM܇wskO-]sKx!70ٳcK ^躗(v攏b͖jC1oAvώ}/xg nx0Hٱsxon"WVxyj)c]};tN1uy&> endobj 276 0 obj <> endobj 277 0 obj <> endobj 278 0 obj [ 279 0 R] endobj 279 0 obj <> endobj 280 0 obj <> endobj 281 0 obj <> endobj 282 0 obj <> stream xYn6 4VD(0ENqXdb+vm)mR{Ρdq"cB_97o6M:_e x=+_~^tiŷ߲w7{x'1=_^pgERJ`?|L4[֗[f~}h$g~PNJ?yKŪ-HPL -% Vp Bs+';7=EW!%#v?"u'}NJ]Q7zFLW d~AR4}7w,.s1vAG!>T?o͇?LwwvvI챴X$c_(!5p-M0&,'׼X63-f 47q,NCOe}`Pi-{jL#ԉWFrǀ83CouHN{7?qĵW5mV~"llZOLze+qqWd9Yx9/2|x fZ6OumAϷ Xh0Kr|K:XjGĖ:-zljO[= N"m2WfF+D{gG>/EK#3Z;(ACOiضFQ +* $ 뜩7iCH4DY%~ρ+V"*AUYMghAȟZV4F&w"d(<ұ P|jC m2ybLq+4ٱ&-nFQA@Op| ڳ*[a~\ GWg Ʀ]1O;rn!BBA<"c2@A\"BAЪ}w( ߑY.$I}B<.xJkYֱWe*d!Q86n7ц NtM/4].[4Ot yJѢ`әU^A3S_Eo櫯E7@ꚾTڤa/hxg$Ǩp%*?<~aYΐ8<VRHl25n|} |ŚA HrT'jN@MǍ/ʙ.~NH4H~Hc€:cV ۺF7B0G 36~<*`^ٵAvVj0Yz4Q s9HPTH(]/RVH"H{1DDžHy[1f!Jɩt@ũ**Ct0Y|&W{̢YlN7ũ!k?_JJTy &"]c=aV}/F桭p#S$͞IvLU:ov `̳0@c#sBŦo6"g3௮MfUn+|"=T&6 0ӦbhYKfK4 .bOty=TON$߾cf[e>r Y݂]6 D>aFڤdI} j#G **m3OQsU`a  ki>QtWU$cVW_c .bBQ"ͽZrɁj,VgG#J =tl@I B[dhZHĐW$zBBm b2b_ so_syygTE/>B( Tϐ`\ 㣂擗ZwoCb,)#wxXpe21!1pnf>&rm0npwc }$Ӿ`t`" {t(:FEE~=lׅ>C6 fԋiKr*= [+P!R824ꯝ&wy)OuTp[Rӂ~CfriJ"CzE\#nn3q3VE Ý$?'fH9q:2P 84X_ Fs9< :JpAn ϲ- ."A56Vcx? endstream endobj 283 0 obj <> endobj 284 0 obj <> endobj 285 0 obj <> stream xXj0},Dd]z nɲiYi M܇JNvk=sfH#ypxE'Ï`^D[#=?Wr n * nH28λ?`} C\_`P1d@Rs! ,ng5#q[w*f],k{Fy7++t.|P߄Ļbs;Pcfv*+LQ*'^i溁֖@j Q5@ CbC ?$çMsYy؉ADmQ0u (KeKh;AD+ gFZ~\B.:~D=, i$" [/\/nP&h\wf$6ZeLWY-p0!Ld W僙sЗ=LU2׿ӄR+Z )#->;l7:d|OLPso7pXEOCCm3Yi]T)Ucn03=lzYMKyXC wr)@gxOb,>Z q;vNnʇ4&M-8Yo'BQOCzҟE@ͷE) )oȳG1۽dXD۳h>z)H|E-z7gV}(/;F!i<{gCo'շ`fiAg#F$h^ w,Đ ,cle>}4#ՕgKfHTO"( )(9 MM3~e:N} 1s69+~>< LeY3WKg]NZSz~\o_ǾeX_J> stream x]ioIT^uH{,xv5B+ nf637;ʽ#3⩌'"n/}?}߯.֗ǧo{z鯫jmGO_qhο<~-ۡ)[9ym??~qќ9ǏxvIx%k;r wˑr`@OD5Ǐ?P)a)ElsrxD\H%v$#cl|~qZ5=OoBӪfQ!"O⭍Jb.Q@y}B ]\4{!.wnޜ6_E|sEzzҝ %FێDn,?o+;ܗ@,yu|\xMV-./ ]?>竓'dq@[&3͊'[~wBX]<?Kb߬_6[٢,L#%Bw&xr}qsǕUT,;ZqxN-V[VF/4xSf௽~Ml70@V~x̧俯N? z5~L@{ً?g_z{&`j̛Guټʗ_mbuJ;˾ T 6\ݽ|qIF]t/u#g+K^?&t~Љ'{EGG$vFd%zϐNWFTxT~Cܢ%Ζ' $MjwsPdN4N KܹNSU)"1 .,1;@p<~Kipӣnz& ;.gL=˖-21FH{rEnLYQBC 842ăAzq~1 i=/+R|$6Q݇׭O.! vq(#psDp~D`T!,>@ !gɒA-V5c97l |{zNElF:u^-|Odl;=goigiZ4H'n2Ynɀvx V7[ȴHPQ7NB1ᬖX3s$D>M9Huj)F }yЇ3߼ƅ+x8A$1GC1?#? WHY4Ar/q4?U̟$X`~! ivjjIyLQh91S$!+P˦d+7q-pc{(!"1"xM{Kg+!+Qv*+U[U~oz䔰NxPǐABx(*N1#:7IB瘄y׶(u\#H)Y 6\hJF F׫ mh %PhÆaFD5"a|^C1 EGˆ0(;x\ 3hj;,ìHS}gyJa`6}^JZARՎNJUxoRBPknU}7rLo &j>x8YEmp Za6qp; moyh/TZ8\䫶WQ.iV&#ОS2V&)=t "P f*" Dj"{ Ha!6UaQ| ?T-nq7V(aWLRU؟͙* TVf=Q^B 5C§Ţj+.#yUZ^y5 [-y2^{;v%~˝jf_wYiA!ftwUAfH Ҋ 2VCX3"'Nh'uȩqIހ4y3S|=SZ;@AVBMj\Nb8)vDD&r7EiUW]h-[|?꡼t49z *\|NmˀfogVz-X{Co.al>miBtk!gMAÒa5F' s9n*nF8ٌw6!(3B֪&Ǩ${qު#y:Ndenr.54/sδQ,HzPrd|AZ9y]_]N^tS Ҝ7/C0#c/c&9MA~+B.ߊ`ьL9x56_,8 =EyGy]tufJK3QJӪfLV{ 4J;SZLr}oɨw.څU;mEMjNu  /Y5ٟ5 IϩX*fHp/*gH2-|ui‹oN~, m*3</M7 pg-u(j26j)wvHQ*@%WZS* $jwQ/Eo6( ;J R=nS#'_wb{H0~f*8Q_-Ol#GatQ <5џL[ l` 8hp#hP{b.l3K8P+K#svOiGBHcaȃ6پj([> endobj 288 0 obj <> endobj 289 0 obj <> stream xZn8}[B. ( nzY4ٶ1 Eu@lgmh~g(KL/-6!pfxfḐqN^_h8#Gy2zGt1}7 o'pF OO8aTSDi NOy'=r <=JC53(NL ?Jӓ SR 2¢Ep RZLY9vq0x8q,~TnZRXB)4 @ 暢ҵ7XlO7?;WU>+jH@쯞\^ |zGX- iNCvr*(Db֙oKXpLrƋ9* ov[ uhqaD^sDM&ivݰyO߼DG0)Cn+qLh9!/ SqGg9g"6gIo;41qA3MEZM&zy5L䖷n{"M Ռ @(gѳ)<"MYhe-:vm)}\A/1Ɠ'؄j I}gSLpb8D<֬=&uǥ `< .~vnz@o͟kB]n2ϧCfQ$cmm 'XtB!Bgjڮ(\04z".>U^U<2VWFՇ)r_}HckBsM &I/U4t%ICNb 2I5 q&stz)ٴ\آ~nd"J<6oݵhz~uts2]7 X7l)-2Ơ@6j幚^*!ҟT^\pĚ8ElSÔOTjBo2hV45]$zF*۳gw2cՍs}yPOuuj[De} BB԰)۽^o_AEmIjP;eb/U$Hn,Uw3UV7|#^{X<+sU{ְZjæ\U{#ᵨ1No^ް4w }y%~qøatsWd'S;өog$޵uz3I'jX˂0Oyύ{C YDs )c*H+XE[ ](cnNg3)RcdmJ$WzkK/ h;N > endstream endobj 290 0 obj <> stream x[[۶~_ A蓶HUR[ !b˻ly+I33li%٢6ùq8zv\tO?]=rqW-W7nnʮ6W͓yҤȣՓ ryI(lwnwO.薾yr>.n5LjI0Eq xI\_&zrߖH4'*IT>j|t#2ԮG 0W<)$)P )ocjuKф^5dm/!%&""AZɇH/R1XǂGUo4o_唅~^2q{ͫ(uvQL4C1yx _2ᥡ Cή]ҜqH |`4RIGV`3s 9۴!|<>~}L{59d0bI] ka{L{&E6~WY*{D0\[ozP.եw;-p~ a4 @.qu=$D_kYT q&V-ѻlȡZ`Qbn@&4nrR͏ףۢl#Uk^'Oh+K7],}3v}K Wm`2-ξGIC*}}!Uߡ5R~u._ aj +!m\Ҁ@ghSW?1;aЯ;]w &"A ϗqڰx>59l.]ueKkGй7#w僱Iݘ;RBĢb4mwvaU* U']uHͰP #+>w"NAJ'͌hp) r,.Zm[OjOnhShB(}2Y< y<=0$̠ͩ20-Ћp2+T?02r=CjOp!)U6HO r8tdӧo<ӔqEfpja]?:T)@B5&Kߛ m!Q:'{tŧg zuLNUpkw aNfhFGٴ*87E ʀ$MqKŸ=?y?l5u +I֠4Y@ RӘFZƥl6ٌA |of)Le+-5TLxd'L̸O F;{7;8ʰī)Y)yA|7gPTH?/ rS{Aa'21Bq  ȒwH"ɉ3S G+y᯵|MVQRL%s?Ay:0rS(5ʂ1@kL $#?1hf&F=6U=UΜnWb]Y6sWA7bcPˍN^l~g˳Cw5( jp)Hôhi3 ;:-[j76TUkyޥ`ݡ^/-Ic{wJj^7T+m %^X( LKiI3JS]jZRC!>ޛ3payC䉞 g HDeZq_ގ&׸ŏ҅c9cU0L,ÄwYDkS=jw?xa3:,5s.9@0Ěl??D[R 0>~R2Ǐ@ǡ;i5 Y">aô/5V.hv*C:S^c\7oxm0_,|}>aVƒUn[4Clkg-3 ],. I *(& 9C`)}cuݞAuGgx z5LNU\kqQ7$AGIL$R-V[cb/Hcm/H3ts%G='fX*;V!s0l-p1 fWe#ZҦ~g@~43N!]~&Ԏi(xMq")| @K BFHE1IOb3TG 6x'9ggˆk6_J1 8w冮]5#%=5SmmЕ|wދ-9]W, 8߲^ᜣ2 L*|j$K/,mhLdgBtO蔹dBH,*:6x0U^oȘj񜞧9"߇:ծq/<_57S{=Cj\: ޢrK9.v6W0lW3ϠxpV=Evw% o,Ήg+PʢmYJş12q2}qЖHvB.Rje*tH ZJhQ[x#*Hk =\0<::|–F6WP\8Rڇ@ys/̀ÉA5U:358hִq; /AFKHbα9<iŠ? =E?< [gD}50m:Lz y@YSu/þQgua4;̇pTRS{:=궆j @k+ ݅?=rFeނg5ٔeiq إ'Oiz2`m;G6Z{ċq^#H],iT~>yKs ֵ&cGh.5B|xԉ7I#qѮqDk*e%3T=͑ffQL Vw5*<^ Y`9^S,sHW`ym߼uXǾ!W58Gph N#%3 1 ڋ"% ܷ 2zk=l+꩑I7$8OwXzIyT.I莲kO*dCfY.ϽOTbLƟc/0& G g9Avmެ*}KMsHk0VwPH8 'fboD0S\w{9LZfP\)G͕=73<0 5HW+;S041w'{!=YPb͞ޕSݓ[ObAU_㝎/UTa|%±z J֫^=k5Gk)]r&},0R :Nxo)|;6*VP endstream endobj 291 0 obj <> stream xZ[s6~Κ&.$l3;IDHKIR"$btjIseݔ|ְ￿|4졘6_Uޔ؏WkxfMgEg:#Rq¦k{k,bKu~s~vl+B @a%7U0%Iŀ:fZ_.C8?[|w~g+!MB )ERU>#1'* 0SdG38:F.{fiRKywK(au!**a*P"kfr!vs}d.st-wl4{[W7,R2u) L%&[Q?3Yɍmkˤ|d%%iyI[47 @:_tp_g̋mY ܯGee>ŧW폲yN.TҠg<ۭANdYC[2I7UEY6bƒ AERVۥ[k\%k̲/yz'QΫ|I+gA^' *)fdYf  ,(B>Q~ZUC]9L7O&?,pYbr@@@szt."e޵Q,;* k}~DQ5 KJ !W&kJ3ByjlL'i<`V%9n7> )jE4pZ' t雩 Hi_AKdec.g5KEagݙ<N44>|G]gȎ:huuڟ2Ce6.l$8{0C V#]ۯ@~{]C-#Ա·QtQ6qz|1 n.]lҐsk nE9Pqz=v>yNdM\E#xhZ+X| .")tyEq#ur>__.bw* FE7S󚯚:ҕrmɔ}4}/2+WcV@#EߘKC7a 2P#)ocNP,ˎbIȺ^OJưT *'ˌUr$"I`nKl ie!{ ̎Wox21d2EX !аH)kM:<۵ "51hwQL\HER/(WxCAٷa՘FU /$#],oПaon(ft#U5<ޖ.rJv)LWЂ?ǚ;@ޮƱdcȱdO79^{sDMWc@(3G8iQNb0b=]ܤ~ԕd"#-H]iA8aȒ?p%?| endstream endobj 292 0 obj <> stream xZKs6G)'l*U'8G=89plHr$ySﷻ J@؛H4h4W|lwߝnۛ-><|ylv;_-~_ˢdvzY 8uQ֬RІM@ưIO^7w'#6M~:=xF. |V5LMQkV+P'oNOD#RDo2F7 R(E %'7#muKҤ /~ 6PW`׽URd( O- }Ǒgj4[zn7e=UB́RD cѽ?yWN؋A 1/`oYIOӐg^D*݂ TeĶNMª H֨E/"oVYh3>Fo5g))xsBEd%x3R6 %[O[k a2"ݮ)1ttI=޳} ifa=%7s&.˘*m'& .D1CY(Ϛb~ |s]TU(.i a3 ]{b.&c.OxMR*ON(Desjp&pT^4;!.U })\u!5r &`gwX@n]kulO b#wt=E&'GC)>@j (V Dri.-ޤ}݆,s?LJqݰݩG% TMS?J)F|u" sAY .e|ey94nd!2nYnt]{,J"Kt^~OJ)#|,>AZZ!j)(X\Q!PH_dw 䞬qr JErXDؕWy k$PP*cdSh*SN&ի.~\tMHfI~M8zt? ٙ?eʽp=]pϩ 8C:P=I1\P<0N*n0j(cj09b;p8G(h{U!T0 *Lz[t\z[`zHpTS^]*0JP{G)1N~fZǒ ! 9u.ˮGj(Joh:v;[hnnF++; Y uŖɝVU &`^,~Keei5x~lt6SrE71-L SFU RDMlPOR͑ AmK6t&חiuZ* ,].Qܡ ܀gBJs78I MK`"DW0fX0ȶoK#"VzVcyQA݅X=s )R;0M\?'(8"LKK)_cPcq,i%1 dy,ڍJAҥ>n]kK<31ޑ?"SVEY%(KfċBYi Q#"Ѯ=TqJ)8l9QdkOl&`DuU< K(*5qhK2 m9Lm xA[.d_gA[*U~yZl I[*S؝!U2 endstream endobj 293 0 obj <> endobj 294 0 obj <> endobj 295 0 obj <> stream xZ[s6~NMNglQf}$VT_!tn88\je>o?\4M>,zv=}r7vW8 M1_$Re&M@L"b5NOƦxmAc3h5&Ӻa3vrn8rZ|V9/Ѧ1汃:8 -~\oWҀ/I&CN rLB*u$&?$#?3f1ޥ?C*|RthaZ|ͱ,8{,Gё\s*_ŝ0+IOo) 4~ o=!P JcgHI7uuS}n&M#+ݹ+uxGJ8IN%Po9[8=[ĭ =,ܺ]@"eߴȅ|ioB\@&¿l"Ļ2s؁k3sXO9Aeփ ޹#aXtyeI,:LE݀}LҫH~~Ӷ_o#VNjDt杝tCf1`Fl`Xlb7zŶ ]NoKw/wf8W5+7=G% :]yI3J?e݀rQB)B`4`s'ڽmm2QjT%YTm7lV{h!V66VxP4a@->\a|Dѳ/ µE9~˛rV`hr{]q_-lF^zTR8;Hg*kGJMݶFmrB /9tV[J9@k67㸖!#}a~0f+9 +:"сLq2$- >7,P S.7U*p[nukBW9E1.,S˾N18Mm3E̓^38,Vk(X`o#[=R'ing.ޮlz/x`v}Σ 9LfcṔjJ޼ ֍yPŐ MƬ[;͓ (#CR`[6-pG{LfzGrYΜC}i5$"a3XJgr>>ÞP1m 未|yFG:8;- H.&Ԁ2蝻q@WqEjoAԇH&IOp/x!Np 8`3sgr6|3u1\(mXDyW`P30M> ͖dY.؄-mzfKs޳"9="hPE@G'WW铹+@ߜu2Qb0+ȣxuT <+Rf' ӻOoyQW{ - j*'#〹‡ ;-~W.#^8ÍQq -/oT֎yǿzLj endstream endobj 296 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 99>> endobj 297 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 100>> endobj 298 0 obj <> stream x\mo8^ANYH;,M^I/u. Ŗ];k;gHRblz83!%oNwjU,p(2f}c}qWmCcY7oi@(ς ? 2Y2q$݇\w/$Y~ŧ08=務GXϔ`'p*Ky cI`W|?4H(P AƆ3`P> 7!N>8^8g<@%T6\&h"3y umSVNx5׭IH~]Z^-*#yHiCbA4[/7k.pY!KjORPsht ;<dD/pJdK0ZVȧI'e5IP44 dlP*SGz1Ws%|#Z&f ANwDâ!h렢$V޼Zf߯i GP.iڕ,sON2>+@alǮBDBO`~/'r-^mV&ɠZ"M,rx-@ ;m֩XU]Zl%^hŗ봗]&I.01NZnr b2*WQvs~eNlUC!5ȉ̵)I,ͤ˥,M)ݢBc`EHP$ SUPE[oJGLeZ-_ixzr`Z*)eMF5_q2W;/Wզ\u7!߯dꤗBpK&HrKίJ09_NÜeGŀ?a泛Kɼ Y' $C ɺ"Ɏ,& \c )ֻ }_CcX"Z_ ƃ_">eG%ݓ#u3Vny@:m$Fn [β#`6n!Yͭ-h4s%0p$ { wk%`-NA0h4ls!;Ss J¦$؆cA0guEp,%X .p/H`$WS~r `<pLu2% ]K0B8m1֔S =rXB 9ˎPk,\xda47Œ>X<0pV#)Dk$r|| |:(v>beGE9;_\̭7 "`ZJA-gjuOm:B0Z›ZO-d̝•Z@٫^O٫xd82^Z;p ??' ؿs>:a*]\_٘ke L7;C̠:"32a yS.SXf f G6SlHre3q};j4`3zb!eM%yZ/\]_^|x:=}_>;6چvGMMk`3n˚t-|;F0ȗq}.Ƶ2S 5~Srx.aŃ#˚y |>{[{E)~vMrNiᜱ]vs]cl+?Px8Gʏ6اS79.)9k0̓&'HlQc,)즞Ow0:l J8xҢI)X 2RͺCٖDnŏu!J5ŻVx 4FzO aO ' M R$38f||?]_}>gםa}<8h &<78Яc}u#*4:F8sN4ŽV{ 4F{%Gkۓ^ yI߸qcɈqJz>bOǚ͢1]S=^qcg[LrM?$4/,SZ)I.ڼǍio˜'3jskFݗ(Є[e滍v_X9QfSzu>rf@BA΋5lQsz-փ\Y:wq3~A"%dN~Zy.,+q0wʟ϶PsUY@ b[RӺvE7%n:ېyiD.fǼv6&Ҝr}[#Jm%y;]6j]!DoWY\pϴ4,6Ku+6ߴrRolA6M8vڢJmU #"vc8 >I)WA,\-\Bև j_~jQxDMա͖ˮ6[}JM,|,v Z]d$WwE_ Ka6&Rj( 9d^{Q,q)G[EXT7ۃh٩]͒_A]~}N0BQ} 7[c)nrj)t?Wup[ZCEє[l:Q~Y SN{*Q>S4d5xjx[\=933Ixzoj(sAoplza45#$NyZ^1NHsjǐO"ێ"{GjBF_P{5Wj^Qc& _Q MOryuۣ{Skl<3w\+g)`kw)N9lL:ru6">&IN򾤦?cÃu{ oSQȔ[X*ζ8@sKGf}q^p̨'}篜r0Caw: {^EmCbb3F4bZ'/*NLDÇ <-mQzӏCBn˝SkDj:F>Hj!ţ2rnO60¿Ǹ1râ!q?eO_RG-R|.4{5jP? u'c>rBX#`گy VR2n1)`zrvRҙ"͖QeޚyxȎDF;m7Ib8L渙bz>t1$GҪӂ*> stream xXn8}7\lh")[hݤER>}ڲ##Ң38#3ùinUhȋWM-n%Ϋϻ|![eU%yfF^ǣ Ԑj UOn cm!%?Qw8&wEjAbwuUOl5@a}SR$: _~@t^xCX BĞ_cѓz,nX& Shx%tgP9*(z`U> eoˏƸP .4\hRgLK1I }dF.4H(_uN7* ^sUkpU-/nKki9Dgca N@Ý2t=p 0*{|YnP۝$M͓Em튟>4|`LȀNn UR T2i$b"XH.dј+$>FfrW,1HLs P=z` =W$r"jmy]V"/7ywv/MϪJrQ~~̱t1숞cu׵Cn"l_ gSf-/ t.6A8lCKh:HA=%Xk+4xAZT2$:?tLdl_gZJړiq2%d!#qDa֊ h81ĉ^O:6-qâm^eFM^l^%QVbU,75,'g:Zu>fT#N^[쥊-Mm^Yah am67&owvߙiDmYmEDG)`,eh|_iz3OTEscGsP.˞beu6o䘞fWy_µKVjzŴ+m *v_tUvi\5}j ďh@ƚ{0|vj;v˞jh0EPr!%ATۅR'*"3xDK)xKqk-+ŢĨ4d1,%O$Ee8$3M 3N@yKR;\,@zJO ÈgERhlw ~akO*^Ӭ (dS!r@jKp#R_K@{>CR2_>QKB8c_ @xY5.( Is iB ˵%!KROWjVEfKlqlti!』<@ON>s>?.=9AQ]ώEћ }UW )2I/WMO}O0)XDB8&T ~F+BB8q8S7< u endstream endobj 300 0 obj <> stream xZYs8~wTD'lU353Dڵ% Im&~DX$I:F?n崍^>>mrz_͢믫Cy7_|89~:?~><8K"oX*I(*Q:~?:k莾><ߣ\4(QL)PHr_HH4'*IT|-Bt;dn?JȄI!iC Pv1e &fyo~R4!Kj[ͺ%dug!(R}Qx7HhCU7;ֵJZ;.ޞEtԷgWQc1P bpr"i } < Az/Q$ZW8! г'OAPU}4qycnvGAQƀMGAIfD0|;A)6sM@N㲮p *!]G<^4fp@ނOy.͓DU`~IŷXK4m]BOKs#Bbsk\! 3q'fW}U7iMa4i=_GR1qh&As!Sϧן+q^$RH(.(*9[ Q,aHJ&%64[.*dP͜]` r|?`ҙ]hnet6vgf,n֫ Mh dGbQ Nci487 &Lҙ$"?%NK ͊K=o~D}5ʹ/ CP9$7?o^fMU{dkW[=CVi$DܽS[O?\ 9]?VE[NdIK{k |k.߮kYͪSl pKYiYkNVY)GSLCIt'|ܣcvCR +n<ӔqEgfPHi aY۶ )5(OEF ҮQS2mãf]ktM.0 &N,BQsݰݧCࠕyAV7)T$·~MS!yG@]-s-3 u!E؜)xkΛx'_N1Ӿ;` z`BEJ߯*JxK8`p]K-yܿ;1Ζ vp%[ b;B΍l?8:f*=LM@ĖbbcbCc¡SPYゅÂp\WN g4/9 buv]d'Jپ#4CX`;K<"h/"LޕJpq_RR=đ.Nmm(ڐtQsOI{}FԉkF%.bWq_}E"T]vDys"/S舛rVvA"56y"ȸI%D'/ځ j0kppwȤ! Orޡ$-|ٻ=̝!OApf ^"A ` )]dQ/`;nZ;Xk;|3@{|߆K_eg.YѦXL4kZ[^ : <8m,B,(  ޛuma?P [jot%wPY~Õ XoiFsa#eq8 _g~旾"ߍŸ,7 K/(Վ$+_.C<\SLa=~ u?{> W*̈́]?`K liF-Jx"o@ԜKqȺ^`Qj<}nybh2B8q>Z>/MIGVZE|n$eH ڟmb(Vbh@ >o+j|،ˁdd5ӱ)/4.0l$sLGET>rU-gjZ1 exw|ƾs& #F6RwD w waVp 9nHƙ;, t G";Bȍ#װn|+J ,WL|eWcxd_AX X&%b_`y05E|Ȓe[]&n@\_g endstream endobj 301 0 obj <> stream x\S6Aogc}mQj!u$3f=l_w˞f$a%P/u$rtҬdb^VM5cWG_.WG'bc씽;z#Ҳ`=2BYrSm}ciuke{W ;]}xfF |g L¤eZhV(e4k:"c "2Q[vpw~T)z-Rц8n cAU6~@iRrCiK(g׽UbdCQ)R-񮒋@&7IfUlkivwߝ2v:D7T }q2Lx*mvqǽ_ GPfQw5+rBq!|0pXoe8I. ȝj#nЪi8,4B`r|Ԯk cn2_ZƂO Ov@A@*p(p6~Lӧ|doQ9dL,UpQ@K?neYO7Xrc4˻wIL#2]Jq\+C&bJ8SUh,Ǝg^~yqU8{=x9!l;G1t> 6$kC_8pmOukeerąܟ'F AXӌ<8$DZod'}i "„oE݋ 4v$ء! awC6)z*;zedk.'[JL\" j2'<3Q86x|WUղɂ]H npbRypYnqbհV NWP94PyGGݲ?Ϸi`)i:TC,{~4,dUմ߅t&ƅ10c .8\Z4/֝*@UAi4|<8̓e*iHeQ;upBႇ!Z_Y5IjƦ&l:iA+#Q\q^PêJTv<^?QypVi9߱;>ԯ,w+ű>%3~2U6:CgcxIDtD@'FCh!Sם@*7Yby\=ǴLFi!QF#&%`fB'wp`OWlIX:ڗz&v1Y5Ͳ6! Nchgk͞h)> \)(nS̞nOACwlAV7 Mu Bw{nrmp/эDv6u%+D~O0]NRY*OC!NӤ=NaDOhgfZ=o횰AׅmJk x-}x6Oa_\i9|-%vopV}7}gs#~ӧ}VYpѣD{\1LmD8{Ҿ!mg~gwشZ9 MȂ9:yPg7}sÖVQx8[ccCmv:if[j=m)CF>3-JCb`ux(Gg!)<v&F1H@Jz6߃vG[np<ޢOqHo8 `=[#a|.cyhH.7 22f d$ >AFf<Ǘ ~%8HCHKhr|Ԯ ǻ5 )09:yY1j$ds1$aN=J%@uk&}tN0|4 GQy,9e<|w!oԖ{$r nc)&i\x  (wSC`p³D&wq; A܇a.ǷƄUSdŅr3TpA\h0…6$p<=7x:}ԝCV9tĩs8mP#b>CS idYS ?+*l$0Ky +< >Э2XuU/ټ*|#2Y|ZŨe2=-IL6XkÉPRFwMx΋n0c&H ?YlKڣ2d(ėr_aK/,Rh¸s̸vhk_H8sւ>xs>}'!yJ+g -,.i'JB7'o<'<j"]'C#Lj.{*]HFn&+@ 6o7j:UD>A,vKȅBR5rlNo>(q`z[Q #hc81>_=|e72B!iqkԴ] C ԁK.Ybujb|Ğr|6h٬,3nTݓ@wu /V | γj;zoM4J7TfK&; )N kD endstream endobj 302 0 obj <> stream x[o67AȓIJ))WH8!mE>ײ{J273V⊔{].|qGћ]]-mwGov)/GGˣjhWNNyҤȣ=EJ<ʤJh"nqtgt)MLOT5,a:)p*\EW&߻z%҆('"͉J/unD{vL+p eS/?<l㗧-ҿ_%HǬ[BJC_nh<lCGWkpC*v]_9?B(::CI::~L3'qz.~zс  xr+C+XR IѫxWvyA3Nʟ%}ȡEO@?X*CO2^kd]XWcIǺIfK,iiW,s`{Gly] jbѠVKQ{Ko[R-m.%(̈́rZ_l5oJr:4Yv'Dm-˚ΜWƕhtд6fhPU*-xqmC\/Uu %DT t6ŎN̓˻YBT(i]ݝn1o'0s1 Xɧ( vf4zhou1R>V'bK˺.Z 3q[/%;3eބK- 7Ee(f /!h.jCSt6o})pHڄuJ*fY?]vL>VkdY>Ʋ2cAFʆ"JMD"ez,DKgG w \I"^R=t[65hU|cg1'o; yA;5'ds*m i-nh"(!mm5dϐȡ5t|YmD&(@ܼ.K;(w,囟O,ouz:ۤQKg\A?)~zVVJq =$U64Ki)Tмw6N"EئΕަxHNvީ7ݷQ43C(n%rdxOi|QIﱡ9PqD֔ērϢ"MhL ·1B'}53,I#B($[>HI,p^dSBo;-1P2ʴWޒs$<&'M(=% & I(/“Q$G E(޸?B$P%"e@8rz:7iƖ0eJxLsoPrsd!;/8$;_P=!v̿`;3,2퐶.-+0QEt(/o˨,'U@p9gleX 捡1t2 Y2K-uЌt:7-{-x8K' AuwT #04ɚ@;ˆMܼ C:D=oCJ{Rڥ0ǦyMEN/j~VRz_hb̪.9kR1$?/a ƐK)lw䄐+d,&78ݧܘ^7_ ,!rnuƱ`D^f39BDƈeT]b(aE8Mۇ4JKm0:0" XA]%7a҃:\x|X= _AeaО׳"hKf,N5-̩Gsvzfw` w<9+E3qPnqz{[jk* ܯKk=}7 hO3ciQSq!}'54AMdQ'R(*/`[%퓍n!z9n!P>C1C 3}h(`Dn:ЏA "Jq?G<@C t̄Ga=5SaQL"wwEP'G."42ŵ7|T#R{ȧM 6"{~a|/&=GxDܐ;/^V24ya|M6PD0|0*b"$<յ{gjf3#~Ys^8ܧ|/ gهt\XL&.X*]|df2 ra endstream endobj 303 0 obj <> stream x\s6L_4/NgRiZ7q>2mN]4 h{v*b_XԳ}뮫gw5xvvv9o竺b_9g__}YU.or9+U*U].2v }ˊn>&7voS Lk!s)RJKJHb=6D%iNTBt{dӠ2́^񴒤Fj(;Ș csKJHR~ RzEE1X'*/VND2k6SɩLV=SEXEo1I +N7(z`a'Gͺ8'Þ 2/XPؠ/DZڼ؀3]Y \RANzB]e(2|z#- j'4/5{E%892(|4'Ds-,82.ϱBX _uدFf_?&%IJIa a};>~H%tGB:9|noy|>QIDu_ʕgeCB~0,SqCzޞr:D2h2j<#3c@v}:%AG /?`4A;0J%4 щ )dV=ZQ؆\ &}H98]8[ql_ɵ'u  TUUy't6!{3*F2*;i+얠?vhe pFY4ސ)'eZ(,YmXŻNδ %uI=4IAG9 .Ul -($JUP>Y!جpjVBi QIF9W-;IM]6gH6 Qac-@/,b!4_9 b%ͨ|Qk<ћYo^)qs&F#msȗ* %ń ۢ_X0 5bb^;nIzhT2r 'c@ObKyKw4H[ 7 T LXݬKG.* +R-k ]`tծUf]w9sd֮^/pO86?iͶv2_1rۏO}yWEPo:vd]]GVAp6-?_MK8^^L[AFHs<͊j(#|PkeSƷ2v7qPKN ʹ.& zewזf[,QH66?c(Zk'0w"*}IG % -NG$YyFCH2 i>FbzӣQ['Aҗ+֩ܳʔ+}R =sXÐ>&z#!uaa<n$ˏ,啯ʩʝV-H }t3 3W[)HAm=6І|F0-d[ F r|$[OD8AbYNEqDFlClXa 1 ܀'/Cr bHwi)O}Cb $P!dkٕa^=ݭۇ[ =.VJoL|ȶ0cn{^\ل*u̩ E:b`Zsɚ:X@{0]4P z3\Qf^7$[f"5lVo۠l)OhdIh@&uw6L lo^=uFB^mc/bE+=[&}@[9IaUm= +'V?'Cf!5JFSR P["pŽ|ĪIKG{"^i&^О8\N%rǏ[ɷYs]s_ὑi7 ?E rLQ~^,K/uR' CxSC_w'E,/:[[I fdV<'lEd آTa_0Xޮ:|~DA—^1kZfJp^ jLW|hU>}W齶Um6l 05-DΝq _q<{4uUWW͵%|)3sQNSʝC?f6;WJբ;@/9ǻ};a<,BZ!F޴T6w x$n͌/OBG'?yiȼȞI$< endstream endobj 304 0 obj <> stream x[s6iA$o&܃Zl%_ R$,}%Ib?~Nv(-ᇣ-78:;:~_͊hONO{Go80b/fYQRbw{Ɨ.v;kI51.*Y2erobώHi'*IT~V.-2H/z"d}\1 c6~yR!Kj_KHe׽|dcQd G.Y]&by[b~ y4*` |PfK]?3nY[ SƎfO^sGB T .EgFIHDܸnbnv/ !([\OÈyG}|s/qG9e6vJ!j/jAvxBw˻~ |B{Zm"|k}őm V˜rt CY c[~C۳W~!”i}#9>Mc0N! >KcQmA2,y'J*{\4`!P\ʭO[[yZ)啗-8%Wya^08.nxN*kZ?Q^eY{״ rLOQ :egt_*lu)r9>}y]iCǝ-pi <RWgmg <2 Sq,|ô3I{T[4U!4W1=6TG2:C:A_mΆfSpet q[p%IfNNO:+[*j%\ bQq{ dATSݙ㋞=WcLfa<^%Ev_ eP^!׈ ܄~"t?^N m9eng,gE]`Ye;KB)󼢈%X=1TP TUԏTe/#~P}AqԄȴV6W2i]) 5hŒӚXl^ו'$p_qکJE}=nF-A}LܬZj&#U[gW ^WkTiPwUI=Q\aC'뚵7B:&ȱq)TISfmɾ8Y6zlVt]C% lBbXxevS6.R3$VJs b'P+lLԎ= R+sJAV76]z.=M ͝zй'dͷ{ ݎS[[?TQLSMHWw4rfD@ Ac3tjGyip>r錌zΟ n^)"ԛ3ş1C9rFMyxIWR`naf6`;pzQf&ڑ`h$8#O&L #e }OA?9sdMʠ$Ϸc\OA1w#72z P0D6$,Z`\k͓O,VkoYS+%EW8X`9+*uYuﬠּ&?͗ER6{]/j.L#G5U7I]BfW C՟f5NZ;&KڳM(7hY؂. I7Xߵ*bܵ@O)"z? XFS`<(rb{9~sOKhct_i\7zTwdte,kѥ4i;N&+?q O/bpiMxtC]"\+ ah} endstream endobj 305 0 obj <>/F 4/Dest[ 56 0 R/XYZ 82 721 0] /StructParent 108>> endobj 306 0 obj <>/F 4/Dest[ 56 0 R/XYZ 82 721 0] /StructParent 109>> endobj 307 0 obj <> stream x[[S~0v*URN*B`VeRc/%%[{f<ݭm?f4ׇu=ߕrqbt;b~t޼=ao.iRf,ILDv9_>V{)(R˯WpmQ C d|'I vut_B Ma0J ېװ+}بU Z\ﱝɛv9-p 6ºnn}/)昢fHl,0竞rǃ.+Ɗ'kbXa CE1ih+Cpdz7ņdC=X|dB@j-3, K:2ѫ>Ԕ *h9ѬDmُC6lca:ſ)+J2{ٰ*6t)htؖ9L>*%z A8 {nXjX^~rsƮƄI-a~5>?M{v)$LV%iQd>p9<3G c y6th8Sh<(vv>H$c ?Ws)%zdfĴ rH?pbE'\y >lS?Pm`G;H`^ٍx.Pґ R;q? D N׮0b'𭚱`b;LMy 8aM E dX<֤2W bx\i]57(N#]#Mڭ"ѵ[kxAӽmGR(@TEL.!g}vO1{>O\xzZ zZhn_o0 {M:oӚt hDMA66cjwPun{Z^r0NE/56=_\}aktд}ֱl:~=rn͍[e<-7Λ{2ܜ7{}=Zq &-ϰ]lAnĎfh\[8Ü4yR*jQ𨡠ǜn.l\OSupWbK稸u syjE kJ`0%s:vڱ_1k)>>`}+f2'9Na_0\ϚcVKq&sjP6znЪ$;Y*ov ~fJb鷁Dyh:uAtXWmOYS*aCOZY?aG&HJ"L$^%.|J6!fP<4KFp%kaj~oTcLV ;M*6UÃlPd# ?`]f-٬CChtDunwּ,kV>sӟΜg|9@&=٤"oh%UD.LsV`7x(|,qiHRE*$41\=:<3DN GRz3 ަȨ [ endstream endobj 308 0 obj <> stream xX[oX~08fU ڇƒ8$. *~g9$9sbϞnjxd6[lY|-n"zWO/r< $f< !!bx'9]z0˿ƣ3<2PxD%IDď%Ă!26ƣ-jbͤGNȑtɅ"d~"!hcեDŽƻS®w ذS!DH 0]zL3HWL0 /NB%ꏙEi قp%- T` P2D1ҏ$J'N^쳞 SO2CA~I"XTc8S[!Qcn_!jZb&̰0$hwg]0֤SdIӜ؏mmjuF*)k!h4LoPFOݷhASC>qs>Y:cϣ(Ifih)hC k}2' mWd:mQYB(3ID N$^e@;ޟki]zC*X2\Lm:S@Rz[g΅Ϯ9_kZ9}Bt7 ҲIj"t">u4׾C X @r'eihꬬ`(acxiH4c@Ľ::ui@B@zտ;,^0ܕPWO]m#Cω@a;# WY;qcX#+=Ct=V - 7S L>,<G/[^\負9Qz;;l@PˉNrH=SOOmt[ĖAĴPnԡXBB5 9-VX2̓Xg<-\1dN^ endstream endobj 309 0 obj <> stream x\ms6|31M HI4盶纺ܨX).^i;bx%ӷnu=ڱ;}ͯn 6;n~;>=,O/7|ڬ{7=zu=gE ^*XaJ=}f{*g7hZѫلƦ:zxY *Yu02k+fMEuˣWׯ^"jHrD5[2S"+Y+Ƞ(Pw1/@l«?(pZ)l7lD #Bx6Q U9 6CU(xE\,WDL+w\[^@=]?1vz+dz,hr 4Q bC(˺ĥ'[Ztp|' N;W-ymcTa%u9%2<sxs,!@^`2h>EyUV0l\C˳<pY0e;1 ^EsYp$[_~E7Ydf|U1td҃Maِ'G\o&t HMQp+aJyuAD0y!yם c.S 7~tE@RCb$>h&j+^m\ r%؎DI rX>. JiHMi퉩(q%1m1׻lyqK(uyY(Pjq,>.5.D2 "1'S΃XL.WKve$*{<"fH_')#!me#i]*Ѧ}QJ-/M"  2 HRA(Z4>҃Rdrxc -0JA%.Cܗz t+x8Fɲ:bmAX22Bq1I٘P*厰(NղOӏY8$uӤVPiM<^ʼh@wrlfT? =Ts.a ~j0{63+"x<, <~z{O{P`^ @v0tv ouPt/\n7㎁ bA*|Vkwt~okڲfGn^:{2 ZgcN=OU8r;zeg9.%0o+qe#X5/2lmhm;w517PBQO6+>P!|)LbB'^8C'1րEmR0yE2q߱yw Aޱ'XP%W>h&J`/)mKb\\fܞW@&RXeBzh3Uq!,Fe@gd(_MZ:|(/Sp`bzyEE< _(ՃYEG~526_9j{!_jm K= b1 xQxPS#9%QGʗ LJT×g7?Qy21Zuep!py7E&,ѝ=,8+oCkۇn6Ro^c {?pMl 8#Սa-7Iddk!lcUY\w=q_nz;qг5eשdo rSXaEUmbJV! 4 ,@Hі'v=S=H*P Bɢ9@9o_5g+<ѩ.92o"֓(JM#] rp`~\.VTd|akKI3Eg?2(QEhGH"c9 t~2p k!q*V4"SZ;`M)`Mz e6)_̘ktX/ w\|r] p8 VޖWD7TE|{.}U( a_Ps֜T)RfbU8Tօ dT-~5gtNkH$xn-5E.d=b" 1=Ab+=ĖbcS=*$6bShHMw>˘GX"6:هXG#1*?E $0bzB; w@)|FShBf| l't1.Ɏ 6Dam'QԶKU3H`,Zo%:Dgt΢m, x&KQ<2/ftT Ht٭o6*AjHj)Pm1ew(iA"M{>T)0'HzWomE6^EU 0T EUtUwޭFyf+6bJւRB[E&d Y",MG֞O YOq ^H6 1I1>Q$#>帏g$"Ҩܕ~9^> stream xkoF(5MdZHGsh\W#ѶRr%E襨-kg3;E]^-m1)tx:z_U]W?^:c/gGo8K((a1LEqR"kv9>5dy ~dq$Qb ?S (\<$LD$㣫gG@e9AIz|p=0G %xK(A1x`x6pק &e׆i;iHH/ԍUB`]Vd Y2*{r>y/ʫ\LO}^NO>Z_-o7SV @rr_;=G+[G?xc:I*bRnjC["nCŐrb“(a:#.kor*'ko:YmDMnJ6U?#@{\a`N.w//yK7*4pmƂ{e"JuBwE,7 rLW-\nؒb_ůAIA-3BX Ld/0XmHjs ]JH=TAEЛyE~ifV y$l?IwqwWĕRD۬ŕcH+ѸJ`qP5GFđ]NPa(0NKsuҐ kCqs1t~7~~Ԥ떇TAٸۚ1n$œE0yVMSlˋ/!Ktnᯟ.>L䴃Hyun.lR%*/sDxZ71WѺ%R !b9Ɵgqviib r& /kJ7IS{Q2\EO(pj<.L1iq9U f8_ qog=| cI6!2R_a>LRrE *(R-,J(AW@]x{OQwYq Ct!2_X%A#ry" T{ Mܣ8 UkX/P^z3vV{*GP2[qWbÊ65ԭ{@&`l1L3h 0kPw|[7"($ ˭GR:JƵS e.hKYZG\{MM-2s049n *}m*_\$|6,&=8s͂-? U\h*q{DLs.,mo1 t\sͼ*,+ߨE?Yc#(ҟ"#'~0rdZ7Oes< Ѥyʾ<~ŸOpf(O;EQ{(O;2(mEwW̎!exLcTϣ9_̫ >!I<ÚT'v5⤤*! Ԯ{{M;&ݖCR'ƍDRWo@ CK) 6 ~D2dVOrDVK]Bp{MG{N:ߩ+dHl#yfCAi1H~ 5_HWS= ~SWlQ8]_v/c8S(rƎ_RxY[VojaFƫ4%,CkIX$_E@Jj׈:qjۤ6۱j@5 7amaF&(U.E(9Ρ5nv@ݮ9ӺMT4nXAͭkLknTl(j[ 9us*V[l&Ů x|mq)e?b Z@BFw_?wYZp1WkJotG|mkbz mskB{XۻlOk sb-ȄZx TK[~g0Ա`>X2-Vb$d K"} 5}d'yh JW>U#9>A;)p &V3|;&jE$˚y QL隗\N[t]NSiEJb.RS\4vݪ}@TaߖݝzWƄ}gP!"ŎZٽ R24 ~hJB!| B@PT|!AZ OYXZ0}^UhLzbǍ۪#F Q#q=>t& dk] 'uAH9~NbϒAGTv5V endstream endobj 311 0 obj <> stream x[oFn~>I9wnCpp)Wr)*73$%]H˺)a?piuq.N˻O'owy()Տ?NOÃׂ8R6p:S(iæ1[ FՆ!++UBw5PL ]lj?[ ޑ7B` pZT҆qw4•):Q#mo J J> !:ΗBJjOp8sIpIO"} .D6]#I8C$uʎp.B;CRX ccۘLFXLi[v5L0dr% )pM۪ )Ԣi{e?'jwylW@vDyk8S]|"Pc MlgR^w$ zlA H,6]|ˀYgYs=UfX7J=΁{z~ps7]oi~@"@OF5LGb? ~dۂ+W4Ke 3 f2K Ɲ9#"<۸/ڿ d7BH3+*`ԑvu+lb"S~lmG=47TH-m޼>Pm-0ܐD4߯DƼ4^+\t7e;lylQ퓌,v`Fl^ѰO+䂝)y9_ۜFo0no&$dIW+1/j6_oN\T=;յھ8[Ae!qo>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 115>> endobj 313 0 obj <> stream x\s6Hbx$sigZ;i}qzi웛Lۺʒ+ɹ8K'?,xf/_^'w5\->\PNt1{)`-2\]\}.Jq\GށnjWQ"Jg>m*TTC1Na)Xuˊ`tY1%u}3G*a_e~rq3ի-9|9JAL-)c'rߞ1PKKcOؓ Y)h"O f-8>wŸ{WbH3-TvPH3b ;:GqcFsa"0|iId47Bw U5VLއãv^}7< Ǭ̘w9AdZ@0]Y\#"L2dZ ~~+@|B=G7Z>wk7 RxUU~5墑J! :Yx1 i(b VbDz~z%#~~/^IA@C@. `f",.krz'eّJ/G"N[LB|T-4&8t1_CFI^8WaX|Q@gσԦ*v;Ch zk֭6Iп:_. ^ : ԁȩq7k D(hacrllxRX$:Ozҟ&GD :z$謵4`.4=!Jz;xmRB y/z2#yam`3UQTjhu:Ec M ƺ9\ dfѧ?CL4zî1;1|NfkXՃLRWAl/M9*Z'9VdڰX-4&j,5 9v{Os̨Ag ,ִ2v7_L &Բ  Rz s?..8,6Lyti_Ru]*4M HaNu ;QMspv(jKjv( +< Afw{8bq7WqKǡNelǡOnsF=(ym V=Ul%7 4aPDA넍|zØo6JGGˆTi#QF?~ܒ9CP"EpAFŪr$ Q;[+6_n< -c[PlPtOtGjŨZTsIEFP͕ޏCM̹VEaVi7xA\ٺ9nŚM]Tk7=΅kU;z t8>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 117>> endobj 315 0 obj <> stream xkoFR@ l$ rrɹ!ڦm5zfĕvWT33;o6G'U_7ᷣLJ"j/ (Kg1,QDHv9ߋ~sˀ c{ HžH>Y pZ(Ӱ=RR\FJ߻}Gdj (EP_n Ҳ8kex;Gށǘ×_"H&eז $qV!.+*Ŵ i,nsjOC9OŖJ\s"`oߏ;K~tvb.r1y2堨rq!+bfk!n183Y `_^+bژH {5n.Fs8Hxxhŧ,Hed6X-`>lxjoqD(:"\IH_W$;};ͫ^՗昋ü7omYT97)x:tNgņj0e fawPľ(R1^Cx}d6ol=!8Jcb^@{!Ո 6Ɲ糛ImxPAl0mv65a_^\W(#0M%nrX9?uYr[Jݖ=4F( )% $^Āi0b,>UUv/@k&e'(axtZ$x;9Ss!|1LpyGF11HB6i=E:VX˩, U۪-4nbzw&+;m6@]R d;)nqW,]S>.o'_d2?Ê^x9&$YTQ-_Ȗ.bpa (0NMK ,(E'q׊Ts/mhW\^ DF _)8|h1B@j ҇o_A>Wf@gnuma G$:)cl3'>. W쀿ӃJ%*zT(_)׺6nkN ͫ .ܙqQmd:QR )U7p1tH9&rBB8@ߓsH!14p5's06*5DkKeQ*vSe}lN^b 3[/`lt[[@ckAZ[8-sh+I+jl !5`5]fųH.B}R9gâΑF<`0+xVA.gVՆ؈tɆϩևu >P(([g/`%t=i H-Dx$D뼾am$.wHB=m ,ȇ!#^'$m,:jD>JJ/RI *Mzlwj%@ l V|a(0mЁq^j.o3KítQf=I:{`3T*uc]-O 3Q9Q_n HUaw@0Z,(}9_!Խhlu 4㞢TYM>(v~רVでT62zqf~8fԝCe^P~jP;-ke]>Xp8U":\a:/LkQdE0~kˮr%BwG=%#?gcm _Ng#ɺE6{1 [i}pd$ڄSkoSqd\r埭Xcٷtm<aѥh;{1$ b~k1d/2^/q-tf7mt1zJfzpL͢LUWyYg1ߟR_6˷0SP-jA3w9ڡdvo*)C!ӫvҮpU]sJ\/o',5iA%5-SJrHCڗ9Agxo*,g?kG8;{a%|Km"sd^20XR#WyklZh2T!Z%Bkh-5Aj%@ 5`z}cz}Ti% ֭1Jt Yjlܸ:Gn/\($oab,,X` _(X+VlTNbIuD` *,H"'^.ikn%]& 1_Pj#b1u9-f7>切Y /WX0f>+hsس.2tUsD:$AGt!GBo?G{^PŘڱwdž,M _F|ơhZE? }#Q[i̓" endstream endobj 316 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 119>> endobj 317 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 120>> endobj 318 0 obj <> endobj 319 0 obj [ 320 0 R] endobj 320 0 obj <> endobj 321 0 obj <> endobj 322 0 obj <> endobj 323 0 obj <> stream x[mo6nA,R.i!y-{ZM͐JH.]kyƓM-yuV|8\}˧䢺],vZzE9;%\|ͳ 7BfyATANn_hQ5wf7rgg2W% lLeNeVHR<4ͳÃ;"e C3 MN-$zɲRkPEAƜ3ӎUq?UFǴ?B_ ѾEAϞ.=D|6Ұnb1 ҆ĆҘIԗ6}#YQ1Lcʕ,EM)2\YνBgYN,\U$y/p.Eo| eƦF1wX-&~=G_vںp~qNjG4P>F4b'4.3"|(QdZ٘ es3b\f"T!,ԘMo W U/p b(k3eu64f0P=g _LyfbeK&՚T rL¤9zhbbyK TtIyvgxc r+rUc *Xƭ]zElt-917ڔ΄x^TMɳnf" :HG1,>}b%dp[ 38:3H@-EZnz$y nw`CBk0 L,Z2UЊ{Q\q'S*Q(=Bl_sHu!?AkymOܖP:?G_4Ia !7(!U$=H蘼3,LAf*c޸e[^M]7eƛӮ_?5N25Y?qi^c~nu`46[W<*Oi_U3׶H56XDM"i/|.j2؀A#-B ycf@ohe /cTM7@B5h@f={/S دHBKB'}`} 6B;{TcI9B;rů 4gIR`hW;`h{; =b ͹Agp\[ A=AD׻<σT<mz'Դp҇Lc%J:]coZ80N"p5"YMH14+9VI"$Yk0.Zpt`|YG,:iJDy$~> stream x[mo6 Eo+ N\E/IM473$%qERKlgg8/pv~سz~xd/o?Փf_o7_͎|'/ư7pV]Jb/M>(['7^.| 2BBg- Ѣ* 2hfP|L*A\~mR|#6*8kQ4Gƒ/v`Ҥ gf{JqG%64E@4CS(x/rfY]=V q}hoWhn\s)`xؓSO?eKPK? S DTdVH袆 QE<A+E^)D`(ʁ#b %CY(K.4{ T2_d$IV\V`w "yvdk[$V ҂cSd7dRpfD;9b, -@t6vDɄS԰jJ4f~ m:g ʡl`o4 TO:uӘX+|%MwP*{R#eIƵJǵPXחGr=\5#n Qo hbkLDoI=`_ſNE=ҋ7kjjSDT Caܮ/sy.J eEhX_MOtfs~h>{:! f|b3~Kx." /e)9_IUjkq$WLE]0 >ۻ~ubE^:6Y|zE+"lw)oW\ 97U`{"!Z@P UMRTen_/STYyc$Rk# E~RP h),DiYF`ݺ4сUyGYօ'l)n7;h+3plޞf+S/nU[YD#7 ֖,Wl?=vC@~ :Z]m*ݥؕuUĚWEb1 kN8kYbQdHn9b GVA nŘ PYbҧ,5 \=$Ea5Q 7kz1ûo.p E/+ Y" 1@"@șgy,bmUghiQ]APʋg藥'd{m N (CC!pz ,Ϊ>tT5}h\A@6H8,LyrsyHpXAlN0"燲â{ .?4HIޱ̄2U W.afЕ/+ܱ;BA>bWO J֒1P)yeWhX"n?]~\uf=N&`rNq7G1sA}F8G0 KF0czG 5Ղ0H]ۘ)r~qjR!/^^ysXoAʹQMh,3m:!v97@Y¨?ؕwU\R)fp)4t Wz MT7*w;˺ .U ) rSiN(%;AĤ7YjlWqĻ6cN:n\sutӹ1πC'TkL;i=`Hg&V8P0: 8jئeve>1@j{w+.uR4 1(&yB̺:&[(<(ȾitI(;fT.p/Bg5n}$g1u)%@"Hj&Ԃ0:w+TVrLh֜%?^_j{77h `!s^n{k*DAveBL(Ԟ>ޓQ5kY ^n7<@~o~l~M:4xp؟I3"{{{c4s+ޡCo(0R{pJMN\׷srCfģ%3^ Q=D,5v塐 xƳ#1Ɵ564=ο)<6…x)zH+) UbAweG/}rԚ&=V1/H<6nﶯp5C0?1!F[ ]k Qow,ot 8`<$gElT77#l98>yb!Sl]$3MGlB{]A#hw>A;{uG]k(cypV*˴V6f ;Übi!zdjGAts7΀e?K:hq`6縝xPs ×4l덦-6jvK 1 Ttd1ب8[ ǐSX(L~>:E7 6Ƌ"v`wfnUEvw[z!c[Rķ:ܱcu OvioQ/]ekQ0[g\}oq\:9=5^U3߿z(9#r|^8es:EYJkA-&M gTa3Q'䚮7Af5>UX5FZ-tƋtRj߃Yk݊Mt<~&ehO_g~MZΤTEG[Iȉ#-Ĵ1v^Qh+wdc]A-y\"oV&-o endstream endobj 325 0 obj <>/F 4/A<>/StructParent 123>> endobj 326 0 obj <> endobj 327 0 obj <> endobj 328 0 obj <> stream x\msܶ~܈;-lj;OZsx$@< "Oa]yK>{nomv\eo.ן99Xܮɓ QRUvy}|D3hVɂTY)d!Uvd7<;%wН(,ZLuQɬIy!d6G׏~BUZH1-%ԿeD L\%+jmh;EFBۜ3Ǎ Åq~ЁBPxM@L5Eh\S/檹]5W'"~ův{>ۻf3þK 34w?g._>h-Zսy3Gk%UelHeHt.V'<\7-~g)9T-FjNd~ 9LC˷LVvObGmOq!*j07f5 cPP@f2MӛIdv ?( QOYYaQ1D%Gg|3xm#əFJjoc n58턈=Hć2eUU?5|P&VYάkFeH aeM/7`k}T*gPj U QłYpn0M{ )@`&i)q@4HMa>e@I3}eQ^poGHbzU B=i1EQH,toLvʫpR#GJkD̋8^oF q 0Yԇ" hB(k`pn|݄\*3IHOYs4k__'* vUt2 uNjRDDzC?K$D?(52lM juʡ(4=B`@zDSI M/U %aPdyXΧ'j PJ{DynDaN  tA5 * |c! ɡ4s>䠃@8 e2屔dtc/C~gTM- r\21R82#=ݬEݬA0d]דyj0ϑ*b8/E@Oi3)w3WX;x+V@T8q< b.>6&t QǨ1>ʐPEsQhxud536_WM$! [G;JS.^*4Dl5n K .>>,VWw Nb@Ws{%TM~fŶl/Df%6-XC7Z_9EK^i Fŝ׍K$ChL 0=TD Bi'/~fvOd&X?ITx G`j$m.6#IX5hƴQ軾v]r492A>&f} >f,h$=GWSݴo҂޿4+P^`wF#Уp-[De=Nm5Z^ M +/^S%n.WHG5,בn'g)jߓZZrUvFzXlcQu{r;l "ͻ<:%%ظ Hʋ: E*wau pkܾDCC'Fuv @]Pc5r4&2rd F2>@92\YW.y0VO3je)Z-*zh4f 72\W6Nj>Luo\*HmTs _ RF:5i7m_oMȞ+0} s:{o@?+ЮoPC0.%i#3W I'Q/Gg u!9?1΅:o3]\E\EN- .@޴.ցrbxq$/iO`ݛ=Pv8)9.ߣG>V&TQ]ztY 9u&{BG~GnǤ#ޑU3quƜZwPYO endstream endobj 329 0 obj <> endobj 330 0 obj [ 331 0 R] endobj 331 0 obj <> endobj 332 0 obj <> endobj 333 0 obj <> endobj 334 0 obj <> stream x[_s6NMGLb'M;Lۺ%ݧ)@9%sTrbw.9~QӻbR~:~Q䡼eWW-~:+|){yuxp$]$,(X*U4z_.s1&YÃή~x xƑF5|2aLQ\Gy)ILD$Ãh!ʈHsD6 mv>J(zţ\B cW}R`4!Kf]KHGvWlQd - m*o˻鬼<ů^lQ憐r]\%@=ozw"37E\JO)g*PQ Q,8b8x,[~YAy[nq5+F1y W~ E',Θ$N`K rGo1HZ5L0f]8昿n&C.XPԾAD)؀3eDAI4Z9wk7:Jp'kig&1R4ךEC;Zƥmll*XHp_ux_S}Mb|sߞ&ur;pO0E[Oπ.p~~1V#<GbXOrj QkϺo$Hz%^~pf@44H<4Bom|Aq'í7uM$LkL6ϗ_TzQ%yrO e _k#Nd7L _XT顸{@-Fy Q6E%~B SjGR 9 d[~ӡ2R 2almz{QT.I@DR`%wDQ]MxB174_M>;a;+%.aZm^|+BXb54ǝf[T@t8h!ȍձ#dZM~0$)vE/9m-@ޓ=Wl [Tܚؿ4,=GJ&볷Mٌ(_&aNaФDg#<ƁL n\Fq_Q1V"nU4Ch%ϨUxVR9Cc ՜f :;4$~8+kk#i7E4dŜ~9a ->QxAudFnm{3HkW~ =oX>餰6u߻?\]ɲKvBd#4ԫ!~&GyQ,BǙ\I9` m*}^fې$1]L/5L:axe@}DlH'B鬎hMFڌ2!kwQCs.`l6':3I@'MХeB(tDLgI}К6 Χb@Ojj>LĿğTD+4\lG+z=99 \gK(1 IDjlD`Cכ{S8bLn+l}e޴β1ɾ$HIbF9 `{ -E]ΚFpC3 ~Fΰgdw}y _N72 ֨$9zOOA0O4v awD`z:I8KjP3] endstream endobj 335 0 obj <> stream x\[s۶~LNL7^|2q$gԍ,ӶNmʥgwtIb]i7Y~}pܶ]u]LL>Vy=m(zsz|qp#&eMn^`Q PIZDTʢit/~2~&y-tO}fK5@x IB+TQS|qLDqDQ"CE:ѕ zœR eg(;Ș2x2ۆ5OdX !%7 ٢ [y]]82Ƿ]Mfq3[vx% mǓ(:8G~HZFm&2íz\=昿j6aA,Q[PסFZZ9؀GYQJsA'='+S] 7ݧ[hQX }z|9]Q!P?Y3˲x6ؓZ\k" pAJ tih73H~b"yg̝x'?vțLT¿!a09v"4Ӷzsղm{]zYk({y5VC3;m+^F;Yɸn$ W\};,`Lw -& 5^S6oI1T:JXy[foցg ^g@a1 ޸Ggw_<^5}-}>G|FcY|UwhOΏԣΣϏ 2Ta]4X[zc@q5 b {X "\ ݼ@'vρuص'U>wawCUH`g`Zk7bCX&zIƹ^yЛQ4.ϡ|~_w6;pfcUfٙ CS8K7)pNx1vɏZ9Ö;L")ڡ]-)ӄȒ,jwтgbQ P"5fٴ]6 /'8_YFhz +[ZM!Cu͐Z41;Sz9݃#e\҆rq" +d;sxxm c<1hw~{WPe9y=T{6!~|S]ݒwj_~XP9 x~Jpf3]UJY$d<$n]PmPJ'(NcFZ IFCZԇуsZ :tBijY$ҋ"q{_ҿAKڋiŒrH^BEP;0it8*j GaŻpSs,{±dS@&l(}S(ѕ8nHI-* un9|MwJxƠN΃SmI d <7 2vp="yq4j)$涠gx>ۃwkWyda8x2uemԁ;' ( npJ{E\}<Ռvs?phM1̴{7| >P Kpejܼ 7X~J:&Zù·hih8!A0ӌ̆Kʼʆa,v_@7482u›36 /WX0.|G iQpX._nY޺iDXLwu`j%Nzqyo !|VS魾dZ>[sirg weΥvTJqZ\%'RϏ,SkмߺR4DûEzB)Wb2\ijX d}LZ1pӈ^ieZ7iьl*lkN:uqQI;mToFkQ;K&ɸRVc"O1߶\p:KӦ'7^ƈ\bfS|uec9S-,=T#x ]nuB$L)Ass5x*]Ci QI0F@if4Civ 0Æ fS#]T~reHV g:tYJ(eo21_)nv7UM Lo5v m05v4PtF!c׼ E2OrKL걢kyaE %|f9w_*_uI1*zE)J0+ehMKa(df&_L,W)+ʔeg)cowzώ%Д)K~WG{*;jLtă3Gʌ !+4QJ#Gk T8m Pzt{GEJ#;& <ԈpyVq6]۱ iZ<&ޞ\ $YjmΜϩKg{jpȒ"9v'dqY&n<䑆NG MXZg")Ñ\tJ3&C@`TX4nrhh29lϞVnZr2Tz3zr:3 LLIv!` zLʘis[I+Z艩 WNEpE(q`RB8 ;'Y_!MSJ`". _[9[_G5Gnƒ=,_"y1#D2 'c[>e22Pz[쿮#Pu/YbZUJ<7W3 7%OH06c]j k?j ǎ6:? wL,rGͬέk* endstream endobj 336 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 127>> endobj 337 0 obj <> stream x[sȑ*ȧ@) ¼ӺJWdsV.|HP-ErP:n $rdIӿMYlV{W7u͖{luuW?fO:G[wWwa&;Wx ċ L?zO|_t}Fk@gdAbDP6^w?["$QiNĉnd(@AP_4ۆ(=,Ίuqq)\\jO٪B[/Iޢ<{r$bWGZr@cy?|х~=OqaO cRH0:fK?AE&:̲%4+Pz 4Im._<8l5FIh9>䑶řq!S0.|Y{ NeAP6,ȱJ|S_|̈́-%Y ϑXkglW쉻~l_uJ,fK\դh 7n|u1A? htO`Ylkzr͐D"-zԩYF`4Vq}*ÎfY4pyQmWȚ["Xm|a:]eQٟU]vzWУN\=Vd8H&b^I?.Wzhif][ ܼڻ! _򋿯aQREtܿ7gpXKzO)CA2^ǩNP< Y[~o$t@5P}-SO`Z5bA*5:(ne/ EqEyF=@jʟp|}6Dk{? {,wHu*تU Mpt}|>ϙ*+{$_fY'4uj{Y!G7jOhϖˮ*O֖ȧ<asRy bE8lUGIJ֔99 ^!ܱ U*[#T|fVPT6RŽ3{ .HVa߈ߎXmk r}1)IicB@^Mv3h;fmm锒q:ZWwlPuP7e(L(/o3P6F EtR'-|p@q 7ezͽ>ٞc>o&J?KooI# F \@6DoIXKu͜ \pFE,x&ƒL _+5j EioΟdz<,0eh0}R  !!G(]$C_f촻ïrXl\(cyCq6VBѣϬOƵ\(0%S4DxzCf߆wٹc/M.Ҍŋ39j۷]7සs 5oE˩OZM#j+W4tk82r܆gz m\%KgpNIq&=33ޣ .e)R@e^U֤عX1$F4 dԟ=5Wtlޕ:1:d/N^ "L kcZL.vM6f~n"2hfc\0J90o[,-{fIJp3Rx{.3.tbxVIO0P)RnvKHy.uw4==*]_)%`< -*k)\X0IΎ҂e0z 0[hH@,Ԇk.3aO 1|t|l30n+(3>s5G!VTߢE=Oqtkڐؾ94dCuN,P߂0i-ZX;Gst`fٺ!PK$4}P$|ʻG،WJe?qbG),RSL= R9Cw ՇmM(y\f۔Bq+ ᕁ8Y󄃈3x3;d :4m5ֆvM *A?)!J 4qyx)n6HDF3;'y-wte\egw95=okW-?- piK HH)}C(@dj?C(PLa{Hcl4=t(4d XycĭBGrT:6FIMSHY}oov(1'm 9/Is{t˘650*7^]13Жص@=y$v}cIS8usN ǤAgV:Bx:B.%+a+d 4,j氨èFٛT۲=50_ Dc^!%nnuRd:pw",=Ec^|8 tt7 {[Dl￵ +mԯ UQ`*hU[ͣwnrӞ %{=;O}G\0?M#M^0I8$Xcr'`Y7;/n4ղ Q+rgobqƎFՄ_3aKy憍H{.zbî׻gߓQ!;ýݖ-bEˉ*)ԎtJkJ!uiC:$n G]Hd:Pgh΋'@!83KCy5N~Y/6s^aw<[ So訤\yOM;yz$FO1y5xo ǭގXkmڕq|I+1aZ;a` ͙WY}n.[|h+{ON{(J9{[ohlٱpG46*:a@ŭB53t5oΙ1cnxZll5z(6)) ͺX-nh\:<)JPDd] g?,nCrN؎vI aMd?{U}Lbr9Q|uDګ bri";u̳mK<N=pZHÉ? endstream endobj 338 0 obj <>/F 4/A<>/StructParent 129>> endobj 339 0 obj <>/F 4/A<>/StructParent 130>> endobj 340 0 obj <> endobj 341 0 obj [ 342 0 R] endobj 342 0 obj <> endobj 343 0 obj <> endobj 344 0 obj <> endobj 345 0 obj <> stream x\mo7Y/%WH&ui>Ae[wJίᮖܵKӢN,yp'Wx|s|On|Ꮣӓb-~+^|w*^=9y̳WGO_)*(l!oջ'_eU7:zr1|J-V3)iVY~8ן_>̙e-38I+Lj4K0y*dyoEmPuT$S[S> RKU ۘJΉlY(L~_JвlQMqW>Ð1%Vɥ AS w2P>qc.{.C֍㎠t-M 5P뗅:$}%ƓMND3W'/G?ɘKg.$)_WlL-M;R4VڳĐ0R\вìW9ذ՞6ˆ=lxqS:/#.2k~|p{A{[.\e Y"' ~oiƺdOY1\~jO>xY4{2vI 20 bxd > i ċ;/p]ٰiZ us_v [l+R:`7$GBuPWN ADwb ue.o3~ -oaKP9!Iפbg`#ɟ$Ɣ;&Zƻ x%M~؊aW%,+*ôud2k;L35L[+!zV!h?V^si [#;kqIe2WD;ή,3W̓-+z Z¶Mѫ)f-NWcjRtoqmuKv-CbsNŇcjg T13$MƸ|8g $-Xe7t[ч=u0c0nvqv9X>G'E'5nKx5T?LWg1Y =D@˘_*KoF.fTИT}9GRȎ`m(MEvJ%ӻNU'K<3vN~6!\J|M1}=I^ԕ f_>ԕDm_D= ((ss5-7bbNLy SVKGϑŵ]?ZܑXBױi={̮̂kyb2b+*&>89+Kn Gcdl\z޷\ FV۔qTI]_u N@e-5kEm"bZU\YרA4grLB" Wk""]($2yG[ &ײD|A1Y&&}a5 hbrGC|fHd&&#/CQPz4),A><_WpC 1ٍG-ɰcfj+U tJ։*pKVlJlzDVx$I,tadXdɜ}<$s6eTB0_X[0={Q2R /輒9[29e=F~;[KVo0̹`S*Ŏ- wÌAу39 4* l ӢA7; $*2/uVFXanۉm4 [O7l|~jn[{ 5wƋc<(樣92%甭H9vLu>(w~8aߝEQIL1`\KL%{ Lɪ L F$!ɟ,#v$ Uժ;r : dAy;ڛ9xڏbbc endstream endobj 346 0 obj <> stream xkoFR.j$+ $^AZm5t>WܥTٙYeQnEžeUe|ɮϮ_ή>jUoثo٫㣳ׂ(Lvu{|Y8Kt%,V:Ԇ]=؛awQ#O뀝®~|t8PPG^cY[0ag&% _ fE~|to 2A%F`(]+*E*y# _-鯑I&e駖i$携ؐa:lw-':]svgcqr*-OTU@7 hX sޢp~-,'I )cgRrtZ ҄ i\*,聴ŘPI(v$:D7pnRƍo f-r놜|D  y qNb*ZHu>'-A㶔-$L=Ma4Ū9@h:Kq)<ql@8͉%d&IIxV$ZXj, ՚nc\n7!܄g6WɳyrՕ tcaJqIat $dN3iD6iOOv`H 9zioc0I; p+g/?IBAHb0>U}^A<ܮ6t~5@P+[`` =EqEWp a|VM IR.VG͎޾$bSIη'sse -=z:?෮T"c孅9o|=@{0Lߊ᷐om+U5n˓P$_ָ~@TRM^LRs5ŒU K_#ۡ+\iE&fo;r~M#@;se^$oԟ迓p'n廞֘̓ `sv[|n3L%z60A -|HHA&C̗ g a^|ZwS])iAŪ=8 cK\*Ӿ}&ʋO7if9<đFv̛B T8‡&t;)<<pyScV8sUoלB-)؋u _t cAi~}s+Ri|lt9gס0 4 muGB/;beOt/Ѣ|~B9epﴔjf١ YyMG˴l̮89pmS'2$caOnfd%MvnpXe9Qia=ԟS[_~ʀ-(AOEAŚO:n4g =hkY*\Jvbqnf@kfȞjVE4r_czQvw a=L7lq%Mf[DRkJ$G1=uϒhсk ^-z+/OC'f`ff#gVR@<(|cuCVuEF. u]T4ǯ< vV4uGjCPNQON  w8@OI`ω`.k:YF<*r3f~A[uSZCM?|"q)|e6QThmnhD{)%J;¼ˋP= H:s@r[5O{w&I3nF"rhEASjI Ç||uyހ}Sp &;6/7%LZ=\ΑO(W/)iF Wfȳfw|:Zxv+frJ@ܧX`qmS_Hә6_4 b$ ^lk%#[4|ՑsKVKz']lM!Nwu W5fav=jm2hSqpG-' )baYf(]6lDCҤ~WMP /NtMT'+VcɗaCWƥqas4(ɏoJzcw <{H`.[cYg1?(}sF`MIeB&_IY;Nĩoo,R̾Gsp42cΘMNOV.axd /+-#?ppT=l]&xppn#tc35)gj5vhRtm)j?` endstream endobj 347 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 133>> endobj 348 0 obj <> stream xr۶=3<ҝ!${:IKiNT>8}%RG\In'vD8LdZX{#fi;/^vtՋOvjv.^y]gJEJsmZv}`&?>ݹ. | iaZ:4~r+6g7_=2" #J_U n"uBhrZ")8Αwdzɪ'/#*LW/ R1H(G@)>+\f-`ٹnv̚~n*\>4H`d c/.s_{ AKvТD6y.Ro퇷N#}ι(s!B|yc-y/@p nd" e^Vp+輖p^`.fJ+8|:/S>@m*/L"/R\=*0/4tQp9<GpeM?.J\%3U+q'E-Z5DLݜ^tp9QQܑEk))9:Y"dY썆XQZɂ~gN)r՝ B=}v`H ¯XtKE6ő]eaK*C q9edn|vwWT9E(Ɔ:/t@nncC u:K_P'BG:`IXX-xJ,denT?gBkh3lMg Wŀc8$ >Ikg#g.,a6/wM;cR1=vG)Us<0i*אҤR{(,xl;XߩU613:`.x9˭hB7 wFYDl}'=OhyZɴt8^Aݯm'85sٳ;d?nߴۇ.oR)#LFDQJ$ս~hQ.{W[TDŽaId1 ʲ('~{1t}HZjI>uʢ5!˟~}g-icYtc(͡)#2v"LYT_?eB܍YzȞd̢2*2.Xn16mNZ)Ktm15k&ZޚZ R T1f"C :JW _(:TGiBDVWχrYƧ.=3r"MҊ. C234>cM2zN^I{Әt wP}1o6=qQKr7qQN)1%8%5~- %$VΧ֛-Xֻp ?yT(|BդF*=eq2)T>4$QpJC|_%|a}]$T?P~vm #}eF jzTʑ*heQŎn8Efl aF#UwC w.ΟsA'v}lkDeXUk|ɼu㘉cnɖ3<[zk2-j@/Ʋ5*,=-7a,Ӈ-|cݬdZQS$Os|OZywqkgvZխ۰Yf:w*{ vіtDWx1 an"tAEi1m(ntI멹a oiЛmP;yv, :A1 bTkRʂFmms2Q7% [Dmq1c͖q fu8|r艖 I]AOm=|6rZuUXQػT>=ϧ2c74([ oasVgsr }>!K۪ rwʋ7rƌW>:H"ڈU{IBK+X\1j?q ǃJ4CNvOr{U 8<ݯ|Nz 8_ oLzLN$L=L㠆OIwn&͵뱻E~MUќӜ3>ڌ^-qj 1ifޮ^ɴXr@-$Yi~Z5KD XNVY'z+ĕbeff27TmWs"1Fj_ eJa_`As&?(CB_r Y$PbS‚Dgv endstream endobj 349 0 obj <>/F 4/Dest[ 81 0 R/XYZ 82 252 0] /StructParent 135>> endobj 350 0 obj <> endobj 351 0 obj <> endobj 352 0 obj <> endobj 353 0 obj <> endobj 354 0 obj <> stream x[s6=y VRp(*]ScRDAhOn Fn}ŠG 0@R^GQMtƵ0)i5$rpn>c\@C˸4=5=5aOAљ8"@JC6!Ocˌ /';zI$&xvvw͹g!$k۹ەߟ/op2Uy,d(?'h.'7rIG/He-ا=|̿.<*'*v?̌Y3%\fڣ7t1d 2ricC!B$pߙXJZIQ=LadZy:e ܅E P骪FSU&NdWyg3>]'9d >Uq>Gh=> $YA iI/ "AV(I0RcXSB4;2@%@c^UF- p IC҉H(EIDRT TQ @G;7Iڻzq~K̖5ܬaoW^0[fh`:YcvS6-uo aHP}-$dg@/helX׋zA-~ӐepQ 9 d} 9%C)M6kX4Y3AE "GHt'Yy~x*%^6Ųg GqafVB~8Y,B&T=> "pEm͸s ljHI/ еEj݌R -=opaz7/ _#!ɓb@}ztW~o&7y Ý3PE<̭+F\o`R'O5DbR95N أqAql@uAl 8`=Tr]UqDӭ¢L*tG^xR%"U@.o|=G\  C!REpӒx@0  H5QmZIOU›P 1P g_PFV5 4ޭ nsvhƥbx$vF|;k3<~ L S$Q\)%5>ku;[xGeKU)q=PeӢYk2ܬDž@@-e!b]fCKƈMwO[ qV aJYI.ax̍ O ^wGnY."?` endstream endobj 355 0 obj <>/F 4/Dest[ 81 0 R/XYZ 82 252 0] /StructParent 137>> endobj 356 0 obj <> stream xZ[o~7RpBs\E4iDE>2m\>}gfIwWtsDsߙO:{f?xuq.?,r'/ϋӓ74-[\p?άNR2m~ NORvC͛oOO.fl'[5L xg;آIr }Q`4G =#ǣuY_}Iw\͊?rsn;nfmcb.g+|PF&y2{cg^X5* J-=`DXbthx`(xD={ J3cIT}OTUl=EƤTMЊ=^CUNS.4{o 6``P-OhB6Ė'Y$Eg$89l牲AށE))9KxLK" \b)w& X 6|}' ʁĦ‹V˨[nh)c sdF gϴqhϚA 1{:fHslq:Vf:ֆeW[^VwPϟ٦kA x]❱s2t]W1zCEނKɇUqu=wԹg~8;__Gc,f(?gh}^h|nf?D % .]f ¹ͬ2kDq5eLiGV3yhJvȷIUmU2LD$!16XHĤ4=ϥDCbtTxI*"%#=Ē̳Lj#8v3:5{gQ[no1XZ^*lY¶~+6^Œ%l> yyU eŮ6tYYgwȰ>ܻ*7,]>'[;դB*Df7 >Tے$$ i"P':]g j0k 4;|[%}Ѝ+(\'<ɺ eV~yGC~\_od $qds j¦] DkHiCٸ@c$޸jc#rY>$L@wJ\C@$C9ڠ5-颡raZQRPگwTGIia@ J56XoU;-T(@!04 (@O9@`=f P:h666,J߬$Li0[+uq Qܦ;˧S59-xv4-xvh"ӜG`>-buEnJf}?7r";`؎_]xMLBb{M^:>Kߜ(r0M2QvH)] R\1~æ"E)(_+*_QD e ސ~ߣm>!z՞?x(1 2.jJ@4a Tit4>?F=Dy~=Unoщǩ: ҭ=D,Dc9-o\bo޲_1޺-o MG*7y⎰7()7I?/@mชT5@![GbN>-Hv%^$5n){:؇ȱ ;L4ɤLeSu)TSƸ0v-R+282[@^!^QpX=sxGaXA@4d/ԨiEɈyǮ1sȬT,E!i!EQETx dP@2 @Lu`o\11hY>MZTOQƔO4+*'O!4S$5:՝g;=$?UU endstream endobj 357 0 obj <> stream x]s3xnz4 f2w:>w䁖i[YQuﻻ E@`wm2a]i7բe?|rڶ⮾f'?O.ꓳvf/׷oدG'iRPIZ\Divq`nRv.gl';@&NT35NJʤPɳD*G7v@AI+H!T&J$Sp#cʁLrH*~R~IyOBJ[. m=]I* 'gWhM@xLn;)8B4Bt0A6A4\}oV΅JLTyч0jhP҄\OY_64-JJyw"ǝ3Dޤ٤5<, ;֞a Wqcze !QY:o6 <jg D0 #fSl}y ry1У;%<3oib5oPN?Ǖ3cW&WEkF1=u31qN<h w{Gf4xCB5 Hw5v͖kG_/& v"]>E gД ET .#x)2 r 2Ofu2OeXF e_+ja~sg`L̅J4i`'MZ-'R,^%4l< endstream endobj 358 0 obj <> endobj 359 0 obj <> endobj 360 0 obj <>/F 4/Dest[ 85 0 R/XYZ 82 649 0] /StructParent 140>> endobj 361 0 obj <>/F 4/Dest[ 85 0 R/XYZ 82 649 0] /StructParent 141>> endobj 362 0 obj <> stream x\s6~E\h7t&47i&L'ڲ#əI$Ҕ&3.>,KPg/6bK~nX~)Og]P_|^.Γ.OO^ei'7',KrfybJN.@B''Y>=4K$:=y Tv2 ?diP*%d"*ٔ'7ߝ|IHs$uH'CL+F;C1cri&ykM <%+M]Y݅ ?<"&ֆ"3FBibYΟj?ݬnM򥜋\T${#yyE9j4S[{q]zٶ=fTvo(zY%v 4P"-x NaK 2jA 6,^ΫպSV|CĢ I w.\l,顑GBØ^8 u4&ACB|bYl>(kiYov--4r .!̼qvФ#! P,zdh5$2_)! psfv)[LQO(*QK׬SS o{I6-:HP9C`~3fG 9qmd7B4(j f^_bq0dq@ꓚ~Jx=:J9< ACN2B#]SCu<j93bzPCɉ:/~d JkC@QK=tKPD<? ?սd"pX?Ɋr6 ʵWM0 PSXTy>7 0iЏa?l"cphn`a yށqċr8613+# u`d2ȅ -iU})G a{aR!)#*a*ii8H2B+M:Oc27!,IȦ2ՃwiAXa< ;6X %0lfcXHjҽN""]:yВ+zS/Q k-2@"6 S +hXșE],Y2ӌ22\SlX@OtqGi9i0YET8#Y#b2rS0zC د٬bn<|ҜZ]h[c =~+[ZSꢛuQkU !?퉑jJ^_`^<(l+FJ uGjK-~PXfU܉&[Y&=2M#c ّNL-OJ lY6nߖsio$Q)gԤo2po< بڷjDj&ZMMU>k= ]K`k[zdL=P= ,^-e[}Pݰӥ2F{0M72#iZ'c“Vq yFpoA4/ռ7vۄ_P"b0ƺveo+ 6ҏI^wdC@gjdב}TIWfC5X5Rw;d9|+28mҀ3blqYfZ+7Cs'4G1 Fe#Y ;EK'L$׷%. ORkx /Wߗ6Bbre|lKo}2/Zȇ]'F8Ό\Ӗ#x UK4Uso1cP&I#aQabվ=Y5"#*θ8"6zdACnvmĐG%\{J =L׋ӎhú…&G6ZX;lCd jRfQ#`?BPaQEU/)7XGUe0H {QˆֽRq`G.}Sq—LTo@gx]Rt|dW1@}p m ^unfo5|ڦg$x+&T-?~ K $-t PDP 9JњI޽" ftvs>z0Qk̐gRэ#邑5]w۲Uoj~܊;-E--Qn:8yLqE|VhSRE endstream endobj 363 0 obj <>/F 4/Dest[ 87 0 R/XYZ 82 593 0] /StructParent 143>> endobj 364 0 obj <>/F 4/Dest[ 87 0 R/XYZ 82 593 0] /StructParent 144>> endobj 365 0 obj <> stream xZ[s۶~LMWi3;m>Ţm%WR2v>m-, vq5ܲ;~.o98>_y|}{|6^,gjOoeqV뢬Yt ;;<(5о o.&l';5p* ]gkآ) ֬Ve4[W/D#RD эЦ -U^QdG38:>(D [/|{JqEUE br&f3=G3⁗\-n5ir2O̤5J83{ cgx)~99ٯPN)Bg -f_[zrɵk oD!=!#5oϚ4@q%8F+.*J( %qaS"mERU:wD.w-K.4;_ {e83ЏT*<'p B{Ѵ~, *À^n ]GyGw1bl)UMTp/ۉISwgOHwM%t#r IoYܿfvN@K Mb o҂K%jX/IPHOB2|PLM jS(VjAH/&_Wy*~: &Điw1ݞM j[L[LOd.ĤA_ǻïoN~R$8HDd' *u(n7iB .y-|f[/w^/1B cPRTc%J,?MM4 <ϑwiĽ}-SyHI蒈K! $hq+C+{oRE#bSJv8aOCrb3O2vU>}.8d`]Uxv܈%w9x~fS p?g٬>~mTAC9"IX %bR/nvhł,<53<ݕ cFUGEnjmcKVLsJ&ύ0w3ԮX&=_^n vS'p5-^9H^$dCH_-YQ9RH1;Qc7;r'^ngl"B el&Lbkh]"[$w~lb_9bn1fQlsr5׈f+hT93!X% U3ee̤4ZK.]3Iui"M!NP 0DI%*6F 0Gy2N!pk˓?bZ-P{`y~B1j!p.Tt7`PH<+Js3p85Q%fG便Ki ' 2TGl0\#+t0#C9ˆM?d(Qr2T%rjz)R4Je4 Or֘V{& 3jMӌSf Xtk [tGN'Чi(rUr%.G\*:̞J8&(=Hf0mNvrm b`7n1ޑ.bԦj85/qpW veҕ.=;HfM=7?9i쟴 D`sc^j|f9WMy>>nIثC_$z71Tyݏ0z_/3%'aaF) מHH3"$+ =$5bt Ytg=8} {nBԔۓHM"iy.&)zhM]كe?S* t;d/`@0O~mL.%q4pv^ew'2mE\nMFִ6MOy؄{pN핲8]vOzeT m sT^L0Y#Jd^Eh&T36?p endstream endobj 366 0 obj <> stream xX[oH~0NE&sEH–}V S 2¢EsB>\.Nh(4T sld /R 7>*TnU0}UZR?^ש5MQ LoZbΖˉn2^yȳxddO8vhH0 r52*"/<K-eI@2񙦐M} L)[|Wky-Ce S;REC^)MYm9a Mp ڏC0$IC, MW;EUX,lë2 o gW{̒]uǽuh?Ybb ̬:v@^)5cB,ßMV<-`**$~0Qe#@K=0x6]iGE@mS l<`6ƕXH/ixH,R7?Aa.,Y !3ڒh \!.4.=ݧH'S-Uh Z9Gld*]77ttqQ͟W\ i̡FJ/^S:hksg㲍_@4:iՖ z5[ú=EO!x5!3]Qc hR9- i42ohM&'uK9UOqnz*'Ұ'^,c<.,7熊@E'dS3qR:tPZ)40UV6J`0~hz&4;*_s/ckcGsT1w{tMVn20tahlT-ٱ,GRɀjmXZ(_}*^MھhY5(?+٥ݞz`cx±J_KYSkKkKy endstream endobj 367 0 obj <> stream x[o8 b/E|zHw#8ENcgm73ԃHZ)|עcyqGz;nO_llnN'ǿN'gW_~a/_b/'GoiRlrw|Y 9+$-X$ld^}3>~=>_l0J ,gk˄N IBDel=;>H *ET-Ct=2RL}&R.8Qv1 f2kR)KjYT̛%ó12[Yp,v3:_ޭ'bVK^b|"G36#~^f$4Tq2#N_)+N/Ё߽:ROs\ibDpƕDg%aK2̹%-tQ ;7#[yYQ wzJ/@ dA ӎm^=ltk]a(+x9D#a V`I%9JRՆaptV|ðL,YA$iLRiqnى_@T$*̣s0n u2)׎A^œIj)>i&C"H4LKC˸4>ja32Lcx:ÆrJװ786/W+Ù"wX[U fPRdZ ABͻj|=8]݃l);$P~n3>Q..?9{]{`vL-E /<;JJcn ? RD.CD]Dn# `4&_q_zTkX1E<LtQ-lJadvV`ˇa~(a PdeYP:M?3oowɼ}ii̻iSqZ*Ԝ2rї56 v_Q0:[=T%m*B,Oy"\}i2+oR@9K #ֱN$-ѲDCkc^b(W 赃vS2u:S^0o_QcX$u:{1ԗ<:7ly~s&ƅ)a2rPVV݁!=G}V5Au0|h^}7}mr1,݅HNv1ӺfM$u 0h;7.j36sQK I1{@uh&bLa=l8JKJ tL;Cx13۫3F&+Q|oйs o_W}VAu*W !59fS'IT^C!xF^<Ԁ *z0&GͺYCFx.. L]e5C,󰕻 mKsS  W3ҡ!h{<^  w22bFw`h}Ȣ_ŗY//@n%E.hm( <9l9(_?m'2zps#PQn{뫳_\}<q=1mAU:C[d ږPΡQSzfP8ZXSj}Me[.q*vIpWr\!~Nq;angjOSe_'E62խ{@"S9ilՎz$hĘ!ڪb+`RDRc4S]\~Ƥ3UôjSuT!@'m^ʓ\RAz!,Oўޮ~RinJoTHiwr>B>ІBp@̍#=ZzJq/%]Jٴ$2wVRVM+ 1"y|E-g}O RUR nKޑj`/gK1=ؑEmMޗwI? endstream endobj 368 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 148>> endobj 369 0 obj <> stream x[Ƒ;̛$ t$FY1p,^cm˖d&j$?5g{?yo|Ϗ|x~}w?zw~\\syu.O\20]Fm^^|o?ܿ7\]*{_><߿l9\jw~q1^gĜLW6oOf4FVVz?]~*31J_bou e}8E7_>6{Zt;UYkEHp4^uxW0\:\}G?|$\>tfbV˳n.wg7u{;rtyw0:kryԨܽf.ՋuCXs],U*‹_MS0i*,/vJ^ S]/`$^\\3ʻNJa9;Ճ7 yC;~ޛϿ;}?H3v&m_pcbiO(9}yBli`) 0tdS^Ye5Ba9G})CvsM<;l[__Pw*ҝR wg,%GR HohQ? ~/brj']yr}2K?.e@Χ__F y-(M6 C}yi8]vAMnLpb8Zkh=x݉=L}`4ho/pSgL9gr4yJ-#["mIe!<1V=`FXfaX1K1|ļA/EXAR3aeV_ū'_@㖣 0[lѧ`~WA|E_^WfWf+tk"X %5q]U ^~p滉$/u,XA&T %69d?gNoWMMxVH/W +bۊW *ujW2!-[؁/5TB}I|Ya|]?_Fr53yS :Ht)Q %e1gYn ]]%^~Ӌ)'ЋY,`x!vWat !W2{h{:t-]Uhܗ Jz['`hbL1 "PsbAM1]Q %)fT4QL[3а(o/(v)Ɣ(,Gb25҄mA%od!LDV=eFY@2=($)ݮ_Ecj^e `Z|ܗ'B `p `ȿ܆11X m]!0b `[%`Ѧ`riEUG]I|I}%SE5a<º$sEՒ|ԕėS``xeMo/nO`9ZLgт.]6M"ׁfUDva;>̘X&D ҡudd{vLWq_eI|teL!fS4 2hU+q_gBV&ΠugY~m=$؋1Մ^W&FN<[ ò["!|-%gцUu}ܗBgg\rgpU ,tnpuN078@whz4V.7Z jg1Ҟ hw ͙#Yٖgբ}ܗ$33ϳ\)4Ъ/ IW&44~=ϲ,{i?-re\ϼҟe1, |-%hѦhn} S}I٩\)-r hA94~ܗ8& 4=r,L3p:4f=T+q -@z,ܤ0X"amVLpUYvZULUeڈ0$ҌFH=Hc H˅BZA#ZՏH3[ }ZbOK>m%xY0這nGOV}Iy8ӇpƔxk9ųnҪ/I4+Îh'7GZ.4v~{ 41)'@Y& nx@Y`MZ4i! ڤHX3.MBɄ<[Hjy`v$Ҵ"CD @˔WAL ԗęg3YE3nz{ }3&YPpz@{ f)Yl-&ҡpL::4w^@"1TpggJ8ohИRr-tt0?;PSz>fqq{eYLc YiL5jbVp[m3mH&DDѠEޠ6kDѠXLjZ;6ICyw&&F bm<5\)X6$\?&v\qq{X`cd111F[ q|`Zj>ڪ8XZ2m:6 שk13IM!1ZNQ-Zw&6)ڄSS-;=ڄQ)'PY&D q9X,0Bl1ڒhCMLv76Q&)i m>6BE4Dw&fQ?*vhQoh+po/6#hh㖣rS8߶n\4@! :&D[@ۨzsQm)@JZGp=Z -Gj4 [!3 2c8:D2\)0 $͔ٲ{eY0c b0c 4 r߀zwG5,g8Ct#a3έH{ ,tgb ԐjVQFAkԶB"XK0֢M֖}qYmI ?SKZ.ւkD;X&HeXo/SNMr#6?ŵ[-A#al۪-l64#<;_j3Y^t?{˯uǦi4aƫչ34%~@j_U݌fEfdyvȸmb/ Ogm 7ZuȬ3Ag12\KfWM@ i[X"; E3=2E"dj2˨qO&;\^w_}> stream x[o77 ^/?w7WhݴMqM؇{p k[[J%9@!wġEimoVta}wf3w7r˯|1̗g?t~<>:Y0^m.o8g.Jڰ㣊/GW.;>z ӫRœRW>k 0eaz[65 ?,f_=qD%2R)KWlA푡"Zee(;XqrvUSo[ #U|L KXa 8~E"EQFE*Ζ]<,WQ[)4j:1vzQٻXƜP dCάt רWeǎA RD*<[V.+ wCUq <a8,گјV $.?(z`j:3 'Gݺ8K acKvT'>55?ٻnl ipnlA"i+Ezu7<}ώC$~Uj a#^р@K? mMiGBk" ȰAU Li2!M̱:ZX үkmY׫b8?0.6YHyUtT#FrgAe,Ű1l9l:>>v ->*R DM䇾3 <.wPO.("C);%(?]`QO%9 eRp|Y~8kkՖ+$x,a?&^ ȘD2T6dC԰U.hUT EX my'jM5d=AN2HFe1C7mx_ أ2.èD0{4M۱m =^ s5$ɉ)-0s.W n[e3)(k֕A*\~Z:LUq>]M1vn~CÕ-̓ia@/rn !Ifİ5cs6>ʨ*gR=UP.;bNC *,4%__]-)}r@Vx@>/E#bǬ<.Uq9~8 ~}Pplj"+dEy[I%z r@/¹idfNҺj`O|x 5*1ڡh߮q^Mw$vE%;Đ\ZI92Bh(C!в &,BBC4:Yydu!|j̪ƨtkƧ z^oby J4ElC-DT7ga MǚixeO[&rD4δ4H `jɪ1xxF*Xo뜬Gwۖ!b[s iСOLle$|gHf])c,(kTۜ] ; DYQD|ݿ&ұIۊ2H_ NE|8[yT!}vzbzhp &"9SA"Ι((T,y*Xy`]%K%cK1Tة|j@=234YU͋2xgTgJA9APu> (E0+{@. ?̄c-}7̗؛,**KNeVaOWF!p Ϳ) f5-hC5Ҫ.CP]di(<ҧ|qgQ) ̶}30Kgm/fI]%~D j쿞GL8Jq>ZgN|1+ >UڧbkC~i}G50d Ec? xU".wRze" @LPD%Z)sk71<ImU:HXV-:ֽIS-RBj$%H-[&>MKLKYԏ4ET/EwaD'J |Yo$c̾L6xx"E{&7"wE9mm?{%K4Xm's,\Eݒ:7'?4$dbHNW%r۲o3]1f1yWb }L4j"Kx#n  RHijEOCzF-xC&rbK :@5X:*WeF̫2&Ǜ&YPRFY= qay3hk|r'a0+Z X䮦M:\=\_kSȾ|ټDŽMGȖ]ڶ9iŞןd' d%aKg[~WcCٌs`bR0xc?U#&DJ++"z o}%r&7хL3Mܶ8 9N `g^D0-& -K}gٚ|9׬Ϸ}.Rj/$}&yf^/sF3M˓ ?Zx5du{M8_.#{`v/UZhTSu:ڭ9&YgbGkH#xSl endstream endobj 371 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 151>> endobj 372 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 152>> endobj 373 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 153>> endobj 374 0 obj <> stream xZo6v( 6_öfM={p]ؙ;JH(]עkwǟ}Y] f?Ӌ__ӳr7O?OG$p:>_*SƲ[ {},[8[MbAP]nYj@g-A 4>*a?m*OdҞglMIFB tX\NtmR:U?-E_VȑhR]Nf鉙l9a݌n6;=mgƻ4|@>u8Hf%7ޠIB\?$΁8efBF)˫ )* z URDɲ2΅4XalLIK z }d[-n %`I2W}ZZkmiN5?Յ| *t|A ў8f~]T'g *p/U||~34"0JsՓIZ-:؛(*l@N@㷉iR5pC`1EȸZ:Eaq\/'۩fw鉞,VDMS;sL+!A?9UJОCmhƢ0v dKMa/!7S=9{܆vt(-韬<=\m7W+0 ~jZWopnV'*$ IRJ*D 7ݢ3%ӂJ G[Kt`j(KCsqD#rד,9^8L>txۦKq@LMe\&FNePy}BB_P^p SPeH'ݐIjIzA:4#$`e|RN\}0;UgY\nj]"uspSE{~Z/Qolj  x-Q0(3Tl̳vMnRoEc^*R$R[HA3Р; 2-4ߠ{k|~Һ~ nzb1do~)tȔhnMd~ށr/cެ>CY+fZTRט10c ~788!xIOC1W8IdUjmփRӓ86HܗlRpj#C|F/詁K =aJU%5g'JХ9*4(^ȑp4c.G2&piZ&kx@f=;SP޲ SM-zE"9dy8F2uJ8<,ÏR C}DӍ~ NֿXc@3r,0AͬA$*ubST?aS89P 3Pb~׍7fG@RX,IG}sݫf7K kId噤<(L} f$RHxH#T9jj$<×4;\S+!|IHmK=5NntH󗬅VxE"%.;=ǞBIf9R9b׵SM'szN_ a<"EDQ"ج?f>KؖHo The)QĘWƌD)|#m"5/z+lp,\ʇJ2_|PD$$'8Y3tSP(*UX<Dc->s ğ BWmf5L9itD< `1ѩKA_:|r-@U#" [T)M=xU@VO/Yfw7'6podc4XC6>NƣVyC _#b/S?E;v8|,`L/8  endstream endobj 375 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 155>> endobj 376 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 156>> endobj 377 0 obj <> stream x][7~G?Hn%)%aGZ@3d[HLWerۻwo._ _}u?~^_|⟏WO/߾{ws÷^ܿw(9jxsj<5Lb{ }x*D5v0t p>p s +99PDŽ :^P6^xefE+EMn31oY.ףR IHiC;c|kڍeXXipARƭ+`M.U\:~쁅^*R;PS N~.p)QeB  *Lz[4Fnjk]@i z8 K N0 vV@yZP,-HA?L( R"Ԥv@B> "4Cȵ)9&l qtkWz+e( nC"v`Hp&~ k ,hcEMW0> ޣNA vX,h [5aL200j|l<\9bF1ݒ[ϠtuJJM/^-+q\hDO `9zNi 5P.LluanL,QhqH9uPѱ+S)FՌȶ"yvnkଆQVzx4D ?3>5ܟ3PUNHd]#,R1KjqJ}{AAK!)2W[mDՌlܮhoSsf;B V*>X`/#48kr,/r{JXRہ 'qo1o}JSāN&چ2"D?6!v "@ALy"K<"c@i"%2>Fcg4@EJ SPaPcwV,ABEh">#x`cAD0Vf)h+ X(p,@z GE n0,&+xzhj ~3V2FI sX$lE$!#*/ Qt%1[`KZD\ m(:N VQ`vǰt5x ϶&֬rZj2&m9xoy|ܥՋuLk6^2_\3a)kc\O0S1R 0\Ђ~ӌPЩLj6.69{0~FNu 4"zr1)&t6f<\n;͜$$9l}ZajT; 3wt@G kWXTQO< 4 Pwbm0NY*en7FS*% QѧVzp8p!#D/ gYo p X;Upb k6em^NV3! z( SGr54ܧaD $*PWU8πg"EuW_n\ׄ~+kAc$ Y6(6$4?xpȨ KW #  kO>'蕗99 uR_F E.dGezWe_#*[/rDi3&/ɘv$fkHȖK?o)`xzD# _SDf$>ObZv̝P:قLPj>#V=T(P `ِ ș.zåhud:̪G {jڠ*vPӫj"jlk/?L`K-ƔU}b9Ki^<3EOhO;*_ڵ\cX(T/BBaF(*i4́SyH8*>INеɔOb9WY[[al}KNMj_o=Y;ǿk|STfaMjwmr8/԰2Kkx#SYژN8&xL|,MamK\-<;T( G<IJ C]] uPeken`OumD|ICu1[Ccn`Lⷍ}֓sZ5%9n[qؼ ٓռǜG} SiK4nPM;(Rf zymՐg%hq([물;g8ou'=7}.օ85Yݪ{&`-T7b oM 83HsoE=8MӐ?wO9ӌo}7y}S0w+=xXh@g\YC,VQо P:T݁ ,9*xP Li%Ė4xE{ɶ|]d਒Wً]}򦃑!"!4  0PU5`Q{HzZX ݃ }zxP9&XM2W!K$QjBxCtgi!Fxu BWH`&KWf*Q)6GUʪi5* Li؃WjS%\HėB]t^=U ^ےZ>BdL/%r*V|'5d$IG(=wd`+0K7 }jHzLWajJrF cjHc)iB/ɢGT2<pm>=>\߇;;ËԾW`Ya.qGh:bos.*Na(QE1k K'k{ 󦕲'6/ wPj4H77l$ϡO\wE8$9ܠvxQHŒ=2o{pdnDy,6Kg5OaV Ke D¶ك\9mQj_, h++Q[i|T8*J=)2wMO369:^Ep̄&}cwõl7tC<$XĬu4|ʪ Hw skBEP=U֋:b9sL|̽/c=S1gΐwJ{fYhk_U OjXcDP$jnx3s2oh2'p 旰JvHH{McRx6j'*,P֡Hi3oPa endstream endobj 378 0 obj <> stream x[mo7n%75u@(pHr.7CrwZwm@q̬rl_[,oϞ埫zs׻v_on=8gϯξL#82XMa,d?-{;>(:|f.'/0* ZjH[xEeXUB];9>'J;[n@5 Fv 4C#ffxd/NS:-_ۢͩbUUE)cU7S3On`C)iC猝]a|4Fap C󲐒QUĠ$A ryEKXd֪P@Yb[;1ck [DKEˏ+]]^]xӛ?=;@|uУJQ0E<%l!l Quu!W ex Sb dLQ,kKC/i'@:ڤtA- A-  ]/xw8 j*O&z\qy`VaݛYnhtotYʚ8{BB\X d&A\ǁDLr$A#%: (DUETb$7 tcjcKb.9Hs=R$ڦ ۡ)`S}UQXs995IOZF56b-#@zF@̐AV9t°:YcuVqzE;5>t؊A'`X饛*8ޱ>CSMzrs(ĄCCͬ Al[8*Qpy/Lpdʖ,KǾɟpĹ9 Dvo]p4Z &/:¢V,Ma$9冃14:0E~؜]Mަ"ApPVŮ_!1Ԛad-XLUӭ3ILWtS /}y96&@CܣIS5ؚSg)S5u=4d"e.,MR%ٹAlRax׿e蔐R! O07 ϲ2LBSrܐϛ,sb^jLyIË_SpN\z`~P4h 4= h2L1fKSdq.m o >؎PJff-Ut rt=8d*JDVD!ʶ&: RL&hS%Ѻ9~g[|vcw!ܖ=Q/u/ g0= ϋ~{ծZ[iEqh6h޳]D-j]`\W7a=m+#A ֵl8BCclL|}svJ $㺱VyCT 9 (;%Iσ鲿7]r|:d9vbW 3cK-u0 D5v ?CE9j}log @c[-m{zF+WlLh3er^wF0=FO8EgVX΀a{x"i9QER:mhGKcFA0BziBбikSAND@r:]'N"O>MA CÃTLG;C8f94&״kcI/,azf5ɾBJUCN[/yפBU LPy]S 䇹{d$gRKA=lioڸbjhԬFC>O=ɖ9ZZdZlSaUO [z$j6|R16=vI%D \imr E;5 ElVXP!TCڤ1X,5.'X2Xl:Hc2wiyܦ]>5{e|̂*9!H䔲rT)致!KXUY/μg4'Zn$(a[ v p=2XS'ʸ#yKmK(7 `>Inq1K@:ZpLa:R ((G PxrBW0oэAoůW;8|?"?$wp(5fYQ޼>D_S&FƜѾISXUԤ-T*vЪ?_ endstream endobj 379 0 obj <> stream x[[o[7~7GsEV)m}P%HfṑҐ *_8pgoݎ}շ~^l>vuzn^V7߰w7gWL386Ӧ2|_6{8?~|~v;cϞ#^)]ni@g6)T .^ٖDVz*^]u U0JW荬(@AF.@ۙ??n))m_oZB9PmUd(lxbf7ۋ'r>.@Iv3{㜱kO`Y{9qSTI8Dj̈́ + *+zU\VU\b}Go\HÞ7V4Q2n'+Zu6; z"#LzI{CE.?2j)2̴c'IN {DRTxCZ߬;<@'ґ>? mz m##AEBUpQ^Φ\Pn+Y W+,'\pЁ/Zdhi C&.IJ9Md\_N$,/+a̞lMfhYfUc90DOX8 &_C͑z[kA:ҔPvJIhl$Qia7ܮ;qb>jPKWIZU%i<"ڗn~+ϮQbc>E? p Tl8 g )/`.%vB'>4"ZK*!^/ W Y-hb^ c)*zC,!Ů7X3ȃm"e58WdAfhy6:1Չxҧ_<ˢV@/مi|`oZhmWoX[&6zS*PZ`2-x@v//TRP\ea[qͤ+O{yRp>ֽ% =2>ҎLC&OS|=Mg,D#  07jA_h/E1$b!"^Ħ4d &tlA%%x8̒A$Esix!|>㲵O25%c[(`^Hi#jQ'Lh)SZHs 9Psx4MYM{p<ɣ,Gr ^y&Gu;C^ǻ`kv0SbrvJ-Q\WN^lK_zE1;\$LP-xhȦ_=E, H^F‹% lwd:Jt,~a|37-\i&57&ؓKQ%Zj}TIБ%AHyiɚ`S 9&ϧ ] %'PJ#+5'~x 8VQTR[Z߅w8h2r5}0؀cդ+) !eDrZ8R~zɂ`sz 5U"pHM bw(7QS p"XTۅ/$HCyzDONHP_/NpK&(RY@4u|` Q9zEس ;!4~fhGQSzeWFtkn,nE[ӥ;&]a J&)- +!wVBdgq+!T̒VB`^y+'}k%D MSY5GoOcxJH?h۞("XL`I)Lq#a@U7OśB) V|+*o|/ yAF6XJ_ !Je>/nJ'?%d~$|NKQʺ#q݇`}7"Mhi&NKYz n $:QD' >wD~կXo endstream endobj 380 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 160>> endobj 381 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 647 0] /StructParent 161>> endobj 382 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 162>> endobj 383 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 415 0] /StructParent 163>> endobj 384 0 obj <> stream x[[o7~7GɈd^xw<1`Kx3rPEQs|f.ޭOŖŻvZߓۋշ/7/Oig#4Ϫ A$SY%Q?)τ$䯆HR)YdR"@/YV E)2YN$㰣R\rG{61m֭+bd(B`(cjz.'ϫM|Qo{@;m3mF5o$w°sr ü̊0/ՔOd&kYGZgKJ[-&ʬvBU" ,DHoAF",Q*=Td]?FڥaXjgR,-;~@[ ]}B#9e7B+ .:(,~,i&#Zhle/3HI,9m݀fdX47!B{%TTdSU n)&2 ƞYo[}wynA)I o|b/f!ʽI)5kKe[!~$xHKpI|>UJOԅ]Z]*AKo'X)=h^8 zjw;Y@|abهgODs9qVK8=zSPKv9#b2{.ÖCUb\r2.CI]3AҖ^jRw]YBؽu/xs(_+9Ŗc$>}MNrRv:)0&B OF~nHB}II*Bd uH،R?p8VzEoyցE`h]O .2I+3>Vq]ACwmEÓZ]I&r# y;d'Y{e a@?fw܅@b.iV8sLb71΁E ׯtv ȫحzt<|Az,Y$9>TĜc@U8Qw|A&]4M!dg_jMX?&0цr_믋X^4|م<|czᨓ#iG:Pl"HF3_ܽyJgs֝:*Q6x&.pD8AoM[rz2F1V_dZx^ ܈Q{VP(j8ńBMڣEUxīh#`}T.Ä +2=mZ߭:MV Im =%7Iw[J'u)w!W̿l' b&P\$ XMPmׯL-vRXfS8I&jTn |_/7]穷r[ ˳)PDe,9mm4d&T"@ՑG7:j3=_*h(̡ifM;-@Hd , $|܃ .h: C}B PCxs'BE<YF8'؟p~؏at3pSg0Ŏ qnӘ C919(U|`dJ` h" ߝ T/DC/;=Kb?XonKq,EIB1(B3Ab%aY࡬*5HKi'v|ũ: t/s5]oW/-_yxM|P" 3ٲ`kx az* }z2=&a4Q-]`l9A % X\, 4,>cA-9R'G3O8ړHD{ kS# l^fWxX!h+>aV FE+$x94HGJzML&ǣŜyucxesdzq! iP=8Wq!UjCnnՄ}Ȯcr7]! |:vhdԐNz[aC o=aCgo\TؐҢ{*7Z$Б*, ? endstream endobj 385 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 165>> endobj 386 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 166>> endobj 387 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 167>> endobj 388 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 168>> endobj 389 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 169>> endobj 390 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 170>> endobj 391 0 obj <> stream x[mo7n%^/߹@8in/,'l)~}g]-)\H8g8Rg/tMz=~ݑ볫ŧfgo'bwW㣳׌кj ?>YՆh!+kȇQM>G#2!W>>Fuav%kZP:TH`TF#JHݟ)Gd,bJXyn Uꔐ\T%a(;EAƚW??o)B3-aML%ѺsEE(^ib=v=:_OqY}Lg]MR3񜐳?_"u}^ dCDײKTaG ;~b=Qw2U|^nk$9?Pj[oL+Nh+iw ZAg&fQs榆ɰcKv,N|jn0uݪl2=+ ;dHhEOld\jou%{Vn5 $ggMh hGB! HA] Li2!M̓2Iͫ$Dґ*Hs$~M_w#i1PAףӘVLkfr{1w |?-DbP VXngˬ^ǡBQI鿠5&ϗ6*j+ALJG ' n .K]PH OeXd. =@NlwK7M?n65lG⒍O5TE4e?rBn\7P8nu#7lUU-0=UWC8ɦiv5E'gيL(ztKL?ςlXk _.Ƨ8nؔJm:&A΂cR\(  )&+r7/WS|yF~{Hm/Rs4OGʳ $7dH#j))Z4%_1/9S5B@4) WV47ijX`?ӻ]?v`EgՋimk01/  PoK(/cv !H ħv˨?ަvx 'wPI@)% V7ۈ,܅R[ ^Ml̓repz؋rx/Bj&do9Bƅ]gao_`N{\d, w[i4Gj8O㇤38k.eY1^`+|2#9O .o;J \xܺ4'Hՠ%Ml6TN־i#HB=M!D#S2ABadw|= 6,DxuHѻ? 5zq{Pȣ< g jHU En!Xcc'arÂ" 2Q7Enpi=DZ" r)vpxPH7YlPİAјJ!zn$4荧 hP(2hPAC(Ur b2_ah}LpHxu;vc=]>23ʈaΖ')Mَ7 ͕+PȰuz :9 D?вkġ+& xg6ሉ:hRp[mnuh4=w$±? |@k=̅sIK> z&ıFuOI{IJ27 ";v~jFzHxkhăyv /,W V[H‘||sI>xx0@  M-hJ‰ۡ$2*0Lγp`n^S"xӟp@v?ПXRm p@0K`@Ni˔*,0 0 B,u/9hjSYjr~ԭ\Bd]$KXCmRXokDpuoPHlmҳgP9Z? 4j˦Xm]kB=Z-0/TKt؟ob $_Ub#L)0X%z( oiUηWFH"cg8 k焉^0β)<yVGCE PG-BYv6c-xEkCӡM,c|܍bGWN=l1bΫb4@aࠈ4&W#Zp%-Q˰m#s Pu[e*_O|ʧK2NlK2Rt¶BXaWWM=GH]P &P0[҆ϰ֡kݵa}C4]:b2B!͸ύ`b^fxco'Oc뗱 0rwѨݟ{`MH.~nMa>n@L7 7?52Y zȘ9[7`? ⛋TL_[pD]y (H!pLrh+Epe UVfvguGNnToMdA A'Th%Gqη7ɬMٟ endstream endobj 392 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 172>> endobj 393 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 173>> endobj 394 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 647 0] /StructParent 174>> endobj 395 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 647 0] /StructParent 175>> endobj 396 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 647 0] /StructParent 176>> endobj 397 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 647 0] /StructParent 177>> endobj 398 0 obj <> stream xQo8;۶HG(J $b;{cNN;ng'ER)`츻"[HԯOOzt8n>zW_?Oßyrʍv}{Bl*tͮ6jv\}zÏ|a?^ƸWJkqw]N5_igY#-VK̠#cMv7r+nb öQA7~Za(aVJ Pfa(iv C؇훛 .^~mNkf ZFKQNp~ݻM-Ī0l;)붆NK_/90r!]5+W?nv8+yxz3t³3>x㮷QUO}Ulﯮ'3G5=>l_,+Qa?B>J?u6 +s`yY){fh:!m#p6wqs Ov8]vydёOSj?Mt4ss )f\:wmS0Li:O7$FCe,|W44)ڻ?/Z9ep < I?OxXO)FvE{Eщ](g[_,$,،OOt;<D;>L0F]]M6iL,FX ӥ)c巡'm4܉.hn }Gkm!2YNj0;c^~hcEMu'ÜK>m dy7{3`Dv BdTksNTzaT0CJ`b:ًxY3@Pi+dVk*jsYR"apI Wu, >OKk]@C%{Uힳ޵2 ~Fr"0(iSmFRJXcd;c/=cx_ׇomBrNHҜoZ8]_ڔ/s/fsKoYȖHrtA4b<q%=\ʲsNKoBen$0Ɇ,OJt!&p,Fs`ykp 0$2i-`|d(0s0/s0mZs$LE _#Y23X2RĐiuK2m 2s(d 2ngLDMK$v*Fʄ0c0W0&ݴrN0dJѬe尥NB:آKEl͑-&-|L$fvX-*fp2H``b.,6Ԗq[MQ&q2 vF3L6|`0iE5Ҵy>~ ŘsB#qkd9)bHb&Essk5:ٚ#bBM.b"1Hskzİ;EL#LZqPqVLMQqF f630#2_*W.ήNW@,2(rҧ@=s4"E&JN:Pq|8G". RW1DDR(@dn*@dj1 ]΀I]G\#4*A:ORl sJFŊe)YH\Q[p'G,BLӞBpYQGaEh4εYLfS3, +OPk5%2fHeP1.ΗɦPSDZ"p,!F\i _r3N=r"Cg#+kxV2r$3QJ$0M|MHI"4H  6eycޘ#^ YB35B1֨Ō I/5ن:s#iE_a)|t9'a:a-^.jtݥx!sx頢˭֭%: ْ#]I.\.FĖOw'/V-}upՉ`4C[xƌleaE]-|QIe&XVpėWcx9'hBX)^H^Na jrD8a0dVMx8bf(8b(ĸA#3lQ-ԎVK*)%i*p-! P{V %d-i.cҲ]9GWNF %eNHHPK' & N' cYeJW%^4΢@4Ϊ@)4n"}f6)J"f:^±Zk 3oO7b bDLZ8]b]9K F*A 9"&"/Ĉy@ _#ݱ,b]l^Llz z7hVHffwvDxƪ8>ip\`3,* Jx` <6lEOvaIJS"VtR37Ee5v&$1:M&h1>hp,BB{_>b>j87(ؤp* n-q.#i1cNRV1 )J(HPK&q9Bp5=y˒' jIY37CY35E zeuIJq"wjSvm3_{ \z7<]7TsFt65MɄ T$]f cYUuN-*gQ\57C]rVUSS*?h8q8 8T6)C&1C.*[33qepKˏig%N8l͑3&3|L$s9X3]\,zgg5ނNkf[щA#83lzWo"dܯHý4e[DQD!k+0B2nb7VOJ-9&iĀS%=_%-p[ޢ/Ϊ)/vLtMp/1tI "^Α[5Wo'ϊ=%%- sli s:9%…/邉Dt9 _ݱ,^bq~-eR LV2inZ&A#2lkK.)"|QbW(2&A_BݳpNH֮:i-p*gV9ܨ:Es1}5~[rM(ɥ [X< M/YV5}\A,1^6FPc @c 0c Jk&bebWlp,"FJ2'ί 0NA>s}BEB}ْ#bI.a1FDgrח/V0qܴTK8h&s3bI%qVb)1ŒZbƍx630a]MR@L8a+\m :+nZ8]fra9Ѥ^d2f)9jrAD"rwKl5=iˢ&.R܎I #U /rōgdSfNJ}R#L8"\i|g룓ej29+&ћRAP&-sD$kQ)j2)BS(eVhzʰ;L\ "b{¢inZ59²ijX7AáЙm餽Rb*)&<1p@x+Q|;K-T[7Bd;8ѵ!8b48"  p'fMpފ&E87jfp p&jdܱȷVJC3޴b'UgD42'i-r*8i2N[$G/țP V8nؒ6ni Ìnނ^7oE榈E468kFjewI WET!E4-y6d朐D50q J ipx_9;tf5Gℚ\E> stream xo8wI+Jp8M݇w{}&nj8|Ibmw(x8:/Oէ_l|޽y{?lOzuyzyJ[m>>}"VOz]tVYm>)V7<}|>y܋u|uѨ?[)VGeWͺ{U'Zzu=}Ouƨ)4Vnu3=!krKй ʱ*vK:>KAX1HH)_Q'2sSun:7sޟz&wϞWÍkuRڪ ,U,#W^V/~Wۋ7»[S mg.loYJ_3Eɘpz.8tb-ݵtony_orzqksNOjkcsAkw&~qRՇ/A].J |nfu Eޟ?lKu|d/ם;!߫70O.ES˟<{xgu״R;\ GNcx<}5׻syՃKM՗O@Ohtǽ~ |:=3_:6 %O\1~l.7ST!?՝xg"l7zbIZ+puܟtM.K/5mօL7nq<Rx_9MT\:-deB+ _hj)KnE fNnJRaWլz,drb,{sg㫭Dv+3Uv燽B+@%_gOo4ju])_ <ߘͯAC<pJ=}ȢFYB2@`|J!Y*46ns*[7 2Zv#a*'jM{iFVZyYy] ?3Xst=Z|~o\.aaޫTJ7K'z$%U!2,֟7Lo 1LO;T {QNen|)@.3{8>-jYfSEbyq7ugSASj))3"rM2P-uRܿ|)KDS9^JR\u`EI:٬Ji@.\(BYUl@c./!;8;AN/b_pN~x}z/sQLGaƫ46uۗۼ͘BMbM2yuD⳻9ݡ?Daw?#4 2l@w4Vr ŜoX 8r f =:hgENJr@`d&d KHio)Z2Đ8BX4 X%0H3`PV> X7x2) kB` 0pdG |#蠍(6d F,FThk3SB ܞN&EXg i$J{xx#}*wp"hPz3Kj).4cC\4.Z6 q׮T p5ȑ\rg!C#BRU iZx9iq:b(+r:d>!Io;")  k"9&žc0lz84& u1 Q$H$$^{ O_wݬ6Ja^rKaa3 -1` p5ȑXr Xdh`1 e"l4,`#_X>,~b *4ckKւXZC+K]Xr+MT^96xIUԯri$dXPh& TDә7RXi®3L3@vu9YBI@#%@U;yw CrwTuM9>oR|Ώ2溮;%}Be5 0)Ap 9`7hs @iv28 Æ3@%7́ @fCb)42p&iT2V R4&9r\U!9@=@6Mi843 9`H3 s-Ÿ%42) kBa @py&!׬")$DN-) R`䰔FHIP֣ I+ApW 6-0`VAH!e u`@JÀYYWÌE0Z*BC-Eܤ9q, &8 )(rI$J{'P&7d4Dˤ3͆l!h\M.rC!Cs{Ed B_[;B_N}k.R>m͎~ ^oha.44~bUR+іM GXjrY#N# 1;e.l4켜eR!G` 9Tz*vzX]9ah EEC(."8 & 7L N0ճ&ӾI84"vfVw|뭹GIJ镥fJ3՚N;Po&j:UQ&#G˝]}^QPȦ՚N;rك%D: ,WK1u'ָb,lz , CI`EWIS(LBQuZ(ٓ~y"d} BEJ37Az fqPE_fZ3Z?+_vWV?U0]lȑ9\P5 ~F {hg}n(ݛx"#ZT 8蹬'k0Td Y=IՓ=D4hWOnTT }D5oC֧a+GIwfZ +aFvQ5EJ 95Gjr#ήn8624lȦц{hg^qpxawDA].%3KQU^4x VPBOԒEP5JPc(Pd &P$D p"680)"w6fA&yX]c8l?ܚ'58KIҜh'04 /²5آ\! $t%$Pj֊pЪ20XA2SǗo__^O~xju%Ώ2H[dUx7 M"Q6MaZ%ʦ1Y6A(lrB&sFLpB8AR(*&EF }(Sx^RXI 6 fܦ\ΓqșɜJRX[N&Tҥ陜ۜ(2sU%VՇ]uڙC]8ܙ tp5xȑ:K^Ƒ)M0,fů?tq &G~7(lo +t"B7VUbn EA(rM ]3瀠:g$8uj>2QH$JN1Ӷwo?\4ktI)J3'HWֱNS]6di\M.r{aAa1=MsO>?MKzy'G X1mUC"Q MajZ%1Y A(rB!{NL8(Fn*zݰ"lITtqw W!8,2[RVXe+"-қfN=%LBV\V+p9Ŋk+Cd9Io^Y _,V̚ 0b B(QN j" '!dCb!I@^6bA")HYbB׿9<|H_WnJ ,@MxڛDٷGÇm-Y$Yj|-GV# 02 &\@!p9A9#C@dNeؿiLxIgr"G@琢zS;d3RX ΧkgϬƏrv+vjĭ%6?K= ȦױO&m mˊ.>6dDQ%@1hx2U4-͍P A`",x2lN4t3)Xf!RIłH SXVba E ,ܤb:ëxP=)@H(K;3fAM:'PP/9D ,%f җ&i+2OD!Gjr#T^D!Cs{0, U5MzxC<"%!Dw˪ "A) Ek $" &žΉG&E W+TagtNB͖LHu2hfVC*ҙ&iZ(ȊH 㐣 p5ȑZrD!Cs{Z,4MK:9@<t)ŭAc (A! 䄓 {"LL8&Fn&*Jޮ*I)L,L$:&LbYҴ7 YZDKo8t .DàACؓi4Lq!K@j0HSx? "gP}k3>" nRXNed bCWq 4d"w!tMd`R6XidؕI6׍x@Y&9rކH28!î4MrO:9Iy-ߕ}D t!ˈ)UG BK $| pZ68-0)Z4`mnAoM{oc{qh^TY *>5L-㷭m\7QQL8\Jd$P~ EaE[eح&i>g!CgW WG") k"& 8 NR"Cзhk 헍#]`LC#~K`Yhִ7͆CZu)""Gjr#|D@#Y#kM{ӐSbs]<1߷AEjY-zЉZ$0`xCxP$ܤP<س@a21pä5v*h@7 )Z>vtq>E^J !s֛eM:Ӥsm[wu_D I+EpW;o9\r{LXURSvIg^qH\yJ m{WdO g+S!ԗ)ցXAۗb]4q)u0r2݆jf&a'tNR@P~nO_ҁ Bf~zW?Kp)`@!Ҡ&i*Trkr4 & 9r\.  !F2Dդ7/,4" ~Zf]"Q;3ݿWo7pǂCؘig(rhj"Qd!G ݪB@B(  agRarN͐# %Cc`֍VoJAnlĚZVV1%7)lɞ (FnzU JSbMЎs^@gb魦<+,+wwv(ωfCfJz#B2(q ƴM梡Supԍh*2ѐ#fр(2 h.;Av!gǛ/8\\UѼN%PWGE%qޟo|ڴ2TWshIt2!kD-c n@T&-4I^4St:rSyL&UZ#ZE_k2KΤF ?Csiꅿ endstream endobj 400 0 obj <> stream xo6 l?xR("E@bgws3Ww?LNJ=X{濿|I"EC'(P;yᑨ/}j}_eXb~uٮW٫'/L3R]-?>}BGʋ6kXWu{Ȯɯ>}yuF=hwWZ&OʜUپOj%JJ)&m1ѐ!d9;&c'"v"b1\j?S2+~\Ȏ% ƈip013VUyݚ3z-gf{-~dZ<8ppI?{<..()h"{^ wo.BA D[G87[=+6Wճtv%g_?wϞ3c%N_ -꼡v8%0.,yf.tasuּPRW?1,idN'iwG׉Rxv~g_3FLo1\mz0 K.Ѐ/#C7_N%9U旺R_]C , s:,:f 1 1DfFG|&#M׵sՕʹor u lDkm1l-#1Ͱ 7uW%4K'qj;~نa͡Y D{+0(Yˋ&K4 #K7[XR|+D>|@Jj]T(TS[1Lit 20Ƌ %b4Bya⥁hqH'"P:(@U=,h`չ6nw{AI5:TGf뺬?NtF ϶W Q7@A)\,8#7CxoA8$DP3d#@bUƒ>0A xxxAu5‡I(4BD]i-[hRu#AFD'ZOC<;p.#Pe K.#K Α)4#LwiHq3iCBCސ|"t "Ua:t͇%H *>hMʦD#AHȣ#FuR#`2& L+sɿ*hʁb~z>> & !mGJN[&(3RGba39%J)L)qJB(^$ ^d𸺽o/x,]eu(~\#:J2iQ#֣[ƕqҮHtuSI1bxKHoHguS$!#iPDQv ߸R<"ISld3IT>~nW}%*9RI,Rhi#O\Ї1L@( ))3?R)ѕӔ&J: @aF-1 -|:in _86H?>KY 44ojiPc)a8!h7pD"@N#tƈ=H$6C D%vq[Lj0gP(Lc-Gl2FֳQ4aOq<#kVf5kVКUM=ܪ73y ;Hnt~O#tOŹA N 46LoiH[P8>@CfFrc82]#= YOdPbLf0b(1FS(1)fP 1@1y10hQux$Su]^T]+#Aq`;İ< :[ƕqhd7B}'0%Q#ɹFs [ƕqrX-H#G{t̊|R5-Iؒd\R"ؒh^F%)3yȉIe&D1pJḮLqs+|q܋f]B9X͈AjEs=z%q\G%6=j&ju N)=,wiHqXH@#z "Vqev x)U1bV+AP'&uJh62 "& Lu#:5;z1D|şKIbt5\*iP# ܊7C) @{co\9XxnW_ "*9.Z'X\0-f~|Jƀ1D0dF`fh#04@P]Pc10̈́Q11"`NP[$PR,Mv$Byxo\EՉ]N\`t5w; ]1Rkb:\H`@Fb=A_`nW3W`FT~f1D3î|ۀ3& 3ƌ mffL03F3X1<4*7a@2*q~)pQߑ"7 1iPc ڍ+`U>%U ~J*ɛ- )5$"}sF\k)׺[a!WTnW31(Ĉ7 DT,FLQبwU4Æ:ac2bC`F`lz|8=V;@ZFjŮ$ʭtdN!{@4d(1{Cyݨ2FfKQ)43LwiHq\P HaFb=AD`SF(qt*6bc#v*;A/ udĆ10cCX4)D {@$h8S`"RI4FLwIIr9\p9 ؜-aeH%hQ$gqȭ0 okh)m` {[ z[C %ȒIe&D~QNuiZٟ!|;PD@\v{Gq\HI#)G,wiIq8s> IAs$ "8q GXO$*/HqđĮɧG<)3(!< a6e#f@P2IF(#4BHS1q縮! 䲗TVśʭDAV08)u SB:3s/RRSi҈[%ҷJBPZ቎!̓-a4qu*Ob#v!DKaLLd0e&VP`fNI(c4JUǺSau=X:!{_I1쥾bC/}v QCzxq. ֺLpך8@{`BѸvTG~)\kPGh 'o=Ʌ$,PRb4&\AɅ}q Hu 訮%vՔX^ 6/7A0D%xfr{tQe %så(K)4LwitHql<{r*㌰Zr-wӃhÆUR()&3)T)J 3(T8/yǡ<&%#,n֭cNпA~%q춗%rYHGt|%t8':.)4MLoi4Ia[|0!%DO :x' ;V`_ߨ@2 %׷P$ UlJIFSB6.TA Ud<' FB HQDۺsTv :,6*3j9Lק1CF*(jwܲ.99=IilҰ\s#zBCFG穓av𙻉Ea\=Iyf%q>Q<Q\d2"J*\DBs3(0QݏPc10Qu䦹Su]pmmFWTƖۓ]G@s 2 I3ɝ. I4 hlah~Cp+reG{`!/>|#hG 8*|vR ~FC {(Chae<1@L2 D,3!4T1%NܣS"~}r xi8Q) 6FюI:鲺˺o'44}v\J @/]%6ރ4ƒŭ{bInh*.?KH|.}6WKaIDLDd0%"VPP"{l$~|Qn |,N)~V--#]h,N\8H=HVU5_?Afx_4NYC"o2$8o$ A8 [(GTxKqUDfØ?UE"B)⹘pb2qBI81B9M09Ohpc4/#%S6Ǖ=`Hm#^?"9[\gpWcT|{*>Q'fq8GqIVqmU1Dn*jŎ$w 48u~鱇7`O`H5"P.):9 jG\jClϙ~7_*aYR:d [La+UVPR:A&" L%=T.BC۩,'ǐdspr} %,oi8Qw[;ǵq,8jp>MqqbKIsXg6g'  8Il':5s\;ތ":7ys~,%rbH/&x:8c %c ']li4%KR(+ TIB3%# 0QR'N I@h2CؖѱfLdF:ڱaeZ0>!?v(Vxr<g#3\SIFȇ Xf`406G=C8_K/8*Y nQTY'ηyԬtr(}{)9=c+5k~.'huW+.>=4 ыMdq01/޾xs31onc9W蓼x+ڷ"[%`w#J*p;2BG) #DߐԢ^KhxՋ)ycb-/p)k 7l l9$ x$J3ԇZ]Ylw*5W.W>y1YUc&%3% 湠Ew[37)C6qJ ȚS,{ɩ[7Bـk[yXSw!_7|F.|Uaezlho\4et6d7"CC,}/|R+Mč`ra=;\z\dخz}|Y?ܦ `R>S 5E:ֈtu{QN)<pbUhDz;W ;~ȏnˋ { S4[9zMD^m^6l֋8X/o;{)ͻalTz#_ >?;n쮗 |JU&,{+K[/7.ۢ7BnqugU/)6m0=H_Vew_֋Ul~*t9UTjZ`!b]A#7+?d)slw(axdGoD7_2݊RAJV>g7&[ɩ'v]6:*vGv=O [5/0/̡S2 [ocO endstream endobj 401 0 obj <> endobj 402 0 obj [ 403 0 R] endobj 403 0 obj <> endobj 404 0 obj <> endobj 405 0 obj <> endobj 406 0 obj <> stream x[[sܶ~ۺUROOg'Mi7N>lf8^zR+7S_ GϟmvOn6\߰ݟbՏ?/.O=y @_A!h[O46Ejع0 %x )#"Z X)^G b VUfwa+!)B'%݉!y&Ǵp|vP%v{⎡xy$4ض s3.+^9p:@AأoP'5t^ h)3go78=HrPX&G\8ـfnlM.>ccvi,`<'p:P\$|8 Lښwuo]a47l P{7Ln4-4*/iԵ.rOS zLZХ tiaq|F*GݍJNoV;L|`|7)y@/$-,8B"}yUcsgG=b?+'+J?L"D@y<~XCz7L1iTxZ|ڬ?- 'yN 5j#D_I@)I`ځƑO #LUl _STCmTM|#< i >v@cl  qrDe7ջ?U|ݽkn ѐ$74A?*;>aPFF*E[fYQ~ujKm.$X\GHzљB <fsyNҁм@0 ^y$Jm #(̱ =?Yb4]rN(Ҍ-+o,2[ z]QE) qGRjU(zәVw O7}'& 5zԌ|'Y3*,ATGB' !O_b?Q+$afLF0b. &)^m$QPqԴ6r6I8 ҅raFZ ޵ 6}O%f3>)g]Nכz$QmFRiFMJ)%RQޣW&^{7\FiYn0V&G\j>>K<2b#v`tM˹bT5*)y受J8'! @K.lRE4^{"@3WU`k5iTѡm-Trf7u wts8ܩꓐC57/=j,2;]P-*6٘^KqSa-f$P.2]x-O\C^t>*Xn\"@#)=x6N`g.:(I֡6zy2d1_˸OŸBH HÁƞ a@R=یqqYGseeB@8:/E[Vxeu ײ22#&WINO`+vF%XՂ5ϡ@^k X*D>N'ߨ-3z=apaCH&F%=[i;ۨ.lێ<3['P՝blSD-uSާuՙVP uHҺbg>}*B՛W:k,z7QH;`St5*u\>Lb!/%1F>i΢ '%-QEe"8&WW߮37\Wl4p~,ضACYLZUd5=>;8@& z#KIxÅZb P@A-.Tk9&9Ǥy mcES%Fe endstream endobj 407 0 obj <> stream x]s63x;6MH:q䚛&CF$dR%owEPtbUMN ۻIl>.o}v.Ee/ًkx'1[//8 ?b1f{DM}y =8豫gW䬂-Jh?Q3cbyKŪbH (IP.0GHb#i/=r~i i)9~pje OTqRGn^V'>c W)bSW?d:O/k@<>؜ ZCQ}38Ł^(oL4ӱ@ʏ!ȣۜ JƇ|>LQ)G8U"B)p YcAp |C(ND b?d:!WE.12F qXXR|~S/ҫm>y˜{L}0_yjp/ҜD7>drceא隣!lQCo!@5_U6yX`ïK4NR_)/ߠu|$1Pw 1gI& ܾ@E@G0c'#!뙹EA!UkR&Ě% `D΄ $8},&,.z@:N] -ˤSff|f: ێf~| trfj %S 0_Ê6#t%~V⾂pi[=T%Z̧Wuև^Х/MP>RhrY M=>ukm/YA߱U M)bf us( 85uK滴J1dMVߺ%6N#ĨS'm5KuIGbˀJcSvU^wYBҨ4iRAͷlC ?yC?X^ak `H?ToE@ |GIyDg-@xZl3!sT7V9[cFBn ,Hp$a0[dE(ʶmSʱc+kt}+$UT^֙@6M?1uзj9s"]dt c5)s ,gEb.fӫ\ŽnGXp;͢'ձ'ű ;[cq -ɋ'y@8Jf[=vhE,EFjf;lG4js^;k= OR2z "oΌ`NWI=m7OyFCs9:IRI)rlH2)96JH)ci! N56 yD簌t3u܉H꨿F?#J ftH''$vO"Yn:!sd# ^KXSeHL0I~'` X,O7QIhtdPc>< v6N m6<3T|@A嬁3E!6 ݸ(]9+Sl.Teo[5N;h `rK!7>)&]S}ZQFjCag x5 ˼h`hJc#>-#Pd+|4h&Ta8 PѴ3hTBcm[i^WQ׿?UVgECoPXqŖ4vN7p!萐i˵ y7 ^xe.cYdLؗ?}0ϑ*qϑ1 <Y&8OW8LH*z')T怚v Bui#V 5yFpkf( Mh1-HJ HEIMl4cf)H"i>0{x#d. 1,4E*(w҇mB2X +2p6rȋܪ:ʎרV>|PGL ѕƚ4h4>` ͥE_& KaDv`PKk"}Ez2E HtOϘ A|(_zkdTFXf%Ňi{}>%uRJ sn<4?vj GKJr_I{!vMA: XSf򧆷V2 ;1CzF]YlPQ`8It40Imud*7{)]il`' e3Qwcп)g]Dr<%{H{9=)/@jQNM$0nBv^RU=-aKeܾH>oI|9[g;‚.gM*n4,:{==q@QZ[jt'T}_y>OXpj,w.l_<.DLS&'{DfA-]ISl{ʆ'^5;3!WtXcmI ?we/~<Rp$`tr J6U{og`fw:\3Ǵ))HRLHk[m=PTBr)7|T ijl1Jy&jצ-,+|8۲d07kߺRWn/kmHA9V]ޞ& T"\ǨJŅM9" 3z6)!zUto]4ХȂ/da x:6?mV^NϞU)52Q@*[?|q=Pƽ)|p;4cB#.E*{i>fyoks̽6?oGFP?{Au0U=6ϷHd39&;DRve~I^F#ڑ@x =,`K  de=&fƼ@S3v4R`W޾1Y"y &w[MR!6Rzt)=%e>/F 4/Dest[ 113 0 R/XYZ 82 294 0] /StructParent 183>> endobj 409 0 obj <>/F 4/Dest[ 113 0 R/XYZ 82 294 0] /StructParent 184>> endobj 410 0 obj <>/F 4/Dest[ 113 0 R/XYZ 82 294 0] /StructParent 185>> endobj 411 0 obj <> stream x[s6>ҝ&$sΤirM:-2RI:=_ P$$[X, ї۾-}ח\UrzxUuݔ}m&7w,HȃY/ ry"2X? 8X$/]ů_gogq`Xk&A SQ!g"S|Mxn:?]IEdD_ w7G4J^HiC n#AA8PmԾ%HɰD&f`TTHSQx" xúY[O%|aw,dM\~DX{':e 99SDn agA" #tDG a(zĕMY,ٔ128a"x dn"XQ$N<@?l J*5M6sNupP05'C4:ǔh̹Tߠ6-m:`sl ہ9.Y(2Z}t- jy'Gi^9OK6 3:2Ȋ"2BFLm" ȶ8N-40qeLaŰѰ"NJ]3L^ vn%9ay^m6\F2 1w?m_3aQ1%/,Dh!R?o}$m8t/L}l5eSswgj*`^:8NrH'Q2%EKb˃BpD(i]`]7䵏p)7w{)^Cٌʻ-E"p˳<֖x)F~Pҍ'\֖8CG4>*_\vZh РiXx-T&Isz3[^Q*fe,vkM{R8dʮDzZ/zenKL&Lva VeO1?(L=Έl(7nS*AK,oC>j7z6Ge2Z4}IC,O'NSǴsi+D *"|T&9W-s[Uk6-%][u8~sli&cz5 kuHJܮ]2c?;OɴئVk&y lKV=W n͍XC$H3k>j!x !~OGe I>|C@߃횠9{{`A7QQzyTN׫W;(:ˋE;,Miͦ: })dbW%Y)s=qި$]љAD0&IHї #Z /:e(9OEĨw[:VV|=%`ANXtG)$ Ƚ^4#"f̂"NLz'@͌܏bjaˣm q JZk궢z*secC^gLm50ɣY7С uF|Ρ~Ά}6ؿs&uU1/ܤ/?6RI <CƘI+j:}(06h߽p3ۆ=r׺H汾ć7D>pN#8s{<955#yA59X~ZX8.MV"tC1^vV!˰=5Ջ@_Tx'guB S-Ce-< 1絉$X*(* 䙝BY݃qUi!p;59KSmQ^9܈843giyNyj^؟ 75V~N??!A~zYjH(GWp XX_5=jqfɸ+$ ,Kgc™aY06}ifvxͣ p3C1ÄZd8ÌbъF q Ifř2qL@q ndP*ZDŽI[j- M_]Xt ^ QAvy37ckcx+wR%5i1O,lnu敝F4tLE6 5V]}lY=rG5M0 ~3̆-՝D =TPc^J]^ `jSAluUU_V;kkWtW`Y*a` X~9uoީ>adwa9P=8.%?>*o O~aҙ Pl9|u`-cI.lՙ;ǣ~kW5Τ CbkLO}<8]/B}տ HF2>hfCLJ_/UBv1ef"R̥sxoOlswf& /5SxAz0h\o'NKT=vV< ᆕ Xc'? endstream endobj 412 0 obj <>/F 4/Dest[ 113 0 R/XYZ 82 294 0] /StructParent 187>> endobj 413 0 obj <>/F 4/Dest[ 113 0 R/XYZ 82 294 0] /StructParent 188>> endobj 414 0 obj <> stream xXn8}7RHnQ wAȎ*ImÙÙgu^={6;mbq]^|se6y[΋պ*zxO'7͗Ӊ`) 4OJsmN')[ѫpyv:L6}:y )*j̜;͜«ȸҬ.{dZ%GJF"*wף3ksE  Ĥe||TL-)x ʘ57nh 29],NTRn'Od]TNNZ |~KfH/߿biN$#2Y (dfSX[ڑNxdWLH=r`(qB%$|.;!&|F(1婇{;, <3B9ui@ʘ߻BS'l?KH2:x\ۆe^@1q7w8,kNrCDŽ!F.,@2FVqDd`[:@vG^-vcb򪁜7u` !!2@z@k(=:%ʃvJ:_,yw@=iuZz:!JqQnتwˏ/ՖkV LIQddAs]x8y\;壏'Hdȣ,ֹtE]`+>#fd1:i!$s 3M!K W7%XɐFՂbqၠdϿ&R(&)Wj:vU̥6!v:SuaJY%- Ά{3<8Pс((G(ה-"J! ;n=AҒ IFWXA+1+B Xc3Gy#ͪ$zAGw;> stream xZoFnхMs_|Iڦ)4U܇hxHs]KEs=3;팮_mʖׯ6[{zz_2k+o7o My!c^0by-M#9? ʒ|w~.~ߟ}<@@ƒy5LQ< R< Q^"@*V_n"MQĉJտJ j飄 +bCAƐ'?b5~kK i_jM?wKnn )Y2E6E*DP2'ry!i._(oN6ϮPrʧ{?^8 ;$p'oTm@o"f(PpG>uvwc-YNf3C2JX~GM-2wi@8c:]_+|)]ӕDG'm09SHVhͦB JKE%tqPGIV4ZI۷bZ§[=YIGh/ukɄs@A:&%/ ,!$?lb0RAuV(۵, ~@A׻M~I[#Pd{3/0keE} a+ݫ/يQo*XUKNrt@BYc̃lo ߲ްsK[B4IWç9 7 mђhӣ-fH#. mEm? 4d)cN:ovV־*M~uf@'߯]iZBlkbM]>;>+K-yhϝt024|<'gpYK2A44;P0؈]&F\F:0oUGzTst٫joAat>sOÈS]s'LAK`n0^/1'0] %adz>a'FBB቎_t L )\xmkq]>tډSzQ$I7AJȑSA mspQ669HblV1:S6ୌix*pM 8="k蜥Dx>&|NnNE[b"C1 ~QgQ`Fc%8Nizil/I4\AJ L4Ҙfb[gg,͜՗`&,Hp>I.2MjY0 أ[MѳD|v~=Of<|!2tC}?|3 ,#vǮLV~*;XW)BB4#C3t.|q c!-x-K*}Ll"MF ɰ\b#&x,ۇn?]ŦUm9EDɦj[Q7?m)C$Tq;YQC`ܹ'0|D|y@csh,-%up[F2,QܖȟsUOr9X<;Vޛ݅W+*S5 x} +vh{8yr[Rhװ6-HxnmJſ&҇ 6w ӏ;ɼ#儨{`;MЖL ]]WP Rˮ$ޓ$hA|:s: C~bCy @թOp?R g;hl~$M uof-ٷ0ѨYbՐPR&l;1G.! $}Zu^YpO+r>Uu~O!;uwM$^1D=.Sl+}IL|&$1S"UYzQK*'ӵE9r﩯nu %E P*R$pv>iZsw/((Jk T<4A쳮[)4 ?fS-PT4}R3!lYgpA4󶪟q[tb3*@u6Tf,>Δ+KgWPHө:sUY,k )표n2žCCדQvMN#NJꈩk!=|rj9(/Ŭv%.&\ o(uSB&#l*p~b:oXtS]?Xi12L]Nw vhj׿ĝVv@> stream xYS8Afj1=GQ\ޱ>A:P_-;dsS7S$wK-M9vxxp4c1aw77o/e>+ySV#vrvNnvw.$&ꡮds'=B?AdIax+pKP36)$jM:3%d .%pr`vqx-Oئ!$y Z<:nzR3b26ertKNXvF1 Ibiթxtӭ$>,K2I+&DyIL:1$9zjRΩ}}jE,߹.zxS⤪i`!8"[)c{zf>Pź 2yq "eUzh{4ZT~cܙ˫^||pQP l8p.u5-8O㈾@d=.aj=KGҥO᫁Zib/cEPTAWTGqԨ7TJ?$*]3L 8$/bZ(8%zCW$xErA**N!}uŬȯ ڨTMy=8jB/}5[ [V]%m5_4%-}ۄ^<#aVdWJ$/'6|’L/Td$c {֣}UBCS䷹W%4 \z])P6P* Gp nE|1+";~@D#Ӥt ?:AtN.dYᇎ*D #$䫮yj%m""z4ި)W\z,Й'C6!2|f 8m!o LDDWǷ}s˭⯐&$&U*FYԴlJ1T"4TWn·˦]ZpX-@>ksXKoȖB)r''NJo}[왅.K97  qy2~suS74v/ߍq,8 Dz:$3U|1gqWݸ=ʜ;w'g=u8L&O aZPqb.ReP\b; uZ 4N.ܠ9shYY\>+:S֯ yTppTN5.&Sh 1j'`D\M[IsFRLHD{:mS%4zpt6k XTqQ?nvHV|-@Ђ@/-ƀk>o4e8r3"rEϮ5ck<20%7{˯`h:7=!|c$ECs&7!i9 H!a;Ȱ T9-$."jJ<@._ X_|$C.[vw2p.]w9گhz9hzO0X8.~IF#UN } T,@2,؞ jBNv,ǵuNn)lV7K/ P ((g2lb%L%IWd9PԟeUIPcbU$e \A'rf%$ׅPq}Wqb> stream xm6зk/(Rov%&޻$|hqzcEDZ pbU$>,(_O\ϯz>?o=~ջ/x_y]g Qnxw(J?QtVۺ)=ho3]g7ŋ_wZgZѶ.gDqMo)Viퟞ? 5V3BMe?ǜ\$ -_W^ ߵ~idЍ/3&U4L&L7$z &T&~e= 9x)7O(f_(^{Worrk`'}k-ao+Q([ 7]ӛ-.}_T7kG3Q7s5m#7^w/+Wcy:@ˇ~͏/Jy|sSc {w1 ytA|n_>FYy}7sX{x\dBҨx~ܬO[{ŭT5'TVw@,x*n'hAMǽ=8P\Tljڇ7rwXו73qVYԚʹˬ̯}pg6.pi@AVC:zk0;%8 RJI-ap4Ƈ/gDJ~!=FTt>)W50D@ j%HP)BAO^w}Fh=c2ޙA1O& mb(k_5QM2&wDlΟ#@ KZ?7>3IB85M\_S_̰P<dq5: ;n" i% c$fIf3q f@?d+ #-*m-[_ZIZdX9ߝo(9=8 V1c"zXQO2Y53qvEjyH";LUr6(:oOSp=})޺H![EՖ(୚U415|!Jԝ*'ii$Nd! s܉Prλ(0&dh^r 1}u;&-IvݦM2 N5~wge{1:M4M޸^M7[0)<:K]}epxV:+Xk%wT%N㚂)K4T&%Mי\U5q7wG 6gD!YE]gnamSԍRE1qz&00\䶳*݇$*ܨ9Uh4NdnPUlБLxg˜f3ax'Q%ocW&-vIctެ/j+F)z4v۸ 7N`w<s& _!Ⲇ2޸M7N+)>áexW|mX#agVyjשBs^\0W5R9 y]Fe7 #ڨ6M෫Va6Kt:;Xu= }9u~GvD5 o\Cۦ8떁A7/ʶOW2za5a |0˵=F&[{ҭ(YVo"t!Z\]"o*^zMY |mP-BΛf'QN!P)*ex1Ik KucҁkD!_#Z{ ,7HUS=0[fFY:t /]b#Jk ڔ5aɳm+TD"Г TBs`|ԓl֊SBڢ!q6&)Ѻ|KpX@yJ!!)a`Q))gO8?1\U [̗SFzyI =ca;T8H86*f֘FC]h2SbK,.L߹!R0jA`. 0.!X~S0`?  1ݠ_8,tr`:@d=:z14B͠JUec,N4SN&wg +?cZg +DXA/ֻt_Fk dqI{QU~ш?+1)ǹ&EG6vR(ȣ^NgjmI K淀Yy22?$jϿ9ypA4 *FZDo7^R!/^?o^j5~nJ]Bpp%JHΨ!dazD + 7g6Nu4y-Xm#w%+  Nڊʼn8]ڒ +9n~5'99A9Gršgq869:#Z=¥9 V2*ӷ`Tc X"-=.l\dA6a`"Ι$.f1qn~5.9qA9Gš"z31yVT¾KKmjXM,<6rMa%FXLdSaaEFX$1=#[~6%IȜ93>(V `'F7BpR1Vx\H76J2Kt( endstream endobj 418 0 obj <> stream x]]s6}w4JA*G}u+NهV2)@QJ4 n\~\~ޟ]f]w3^ӌySgן?#Y!#Y]EUK]J7Wn?++/fمș(/ !Vd;Y"oJYgeVsIXl>4BB JHP%ŕʶ!9G ޮ{H W/D5` "_/ƿ橒Fcܯ6ӿ:ڤS988TmI$u_>x{egϾ=6+Lהd{ *Ї&odESТA][?MEưeLaMMk~c;ertJWlpy v]>n^Q6.]lO_~}aҲR6)u^z&48<+uTPζZ?V-P2zTA4"z2鄦^@UCѰI.|CklrDhI3FHqBWT~|3t.l~?n?;@*I" "k>RVP 7̕RZܶ?|xhw88Teݨ!saPjxchL>Dڜ "x+{k Ӌ|}~yJ~P7\} .gsʓ`l#e?,W+5SnٓZ) gg+gb]C3G58ӈ 9TLm^4A LLo2bD@ gQsN]sTyɣz4?ҽezy{wT:Ɂ/jgppU#M-o[ 0_'+ghҵ0PSChY]O_KK-_(|37ŋ82__Pm2"^Z !l Ӭzlx?c$06+BA &^&`KZx aigZrx GlLfכ;˽[έ@[Ɓ S:-+-?«r׆4~JhΩ(j # puyN ;&Wj5Sڎ-lvqNIt2O#&#uGO&PtsQS0w&F'/w;W>n? 2cJy>NH.*wFg“\5z}`z>t3awMv 3 f/`\yNv&YYWX&y&{ 'D92M 5 e,zA쟇N$aE#"^6:If$3u41VLG ȶ\4R Q0xNhk[GA1O`Ў 5w"A GgAd"=8>n}2a SOM N++ՙ*;9,UgؙaYuslkN `a1/˦G+<LjBP M  }-2([Y?Ǭ+ J;WY~Yu_J-q-{έWnXy ټ] ww^:H< =0_3%veB@SKţ\XS,)*Li_Fl1O%[M{OMiۅH"Leq!^; n7qкn,MiEY< (ے$I7 (Q/+A N_]cw^`0@s)Xhl F"jTK҈1OKC0QJ; G58PMyq#/>@Ұ }{; ٹ1P)E:/Z4JQ5HJo1?OE̓D@ҚS8JsQ߂JQ/H.v{ >6GkOT5WZ>*dzNz45af77a2Sne.x 79hD Jf[pKHZs #5.#4=f)esuKL[/fPQy{|Œ4B66)E Ő:q< `ÝHU6!BPBP̔J>zTɡp AA{s"y + Fq 9i $KNh89qaVQ簎/ *a\faf:!e&f3P%"S_ 4 IMxU6!LL̔Xl< R2Kȓ:B .fa!ajc9n*]nƩib&nYlTs=B3*F~#;EL jyti&-qjPIKE&*[a9BJȔ(JB8Q)h --2+]G!bLZ6]jB ǹi{LN:8TԈl**A}]94[Sk2VnjG<ٔU_yWTP9e)T%T;=i lj߶A`x YktCkiz s4a qtb솞=p/UQŨ(ԬfS`1p@SPjܫX/ 4*,=:?Z=sg8";q Z_ `K#/a"UIm{yNc%A@ɝ24ńZ*bBL]/Kr;aeLNs&F-g9ș LTg5}ͮjTF:bVF Lj L-Okj++Z9)ڨ#=i3_sJN=u_ltSػroW.o_jƄZ5=wުx|-ZʁJݓ(.%DO/ՠKD~-^ ulv]rl$WsI_~}w¥VË$Jx_PsΌr˙rǙx-TڕLq'Q<G'wF86[f{I3? u+tLjye.F>:SÑ$PJ)&X0wmssœ$pNY=zq'Q)E:4l?ud36Nh8hEVSt7݉Lo,E >pf1 (q,I!ۿFbI E=NU #B=CiH`޸}$ʛAD͢"Vu3z]<.*!dH9 ״8dȊP)#t#l!%S_o7m]Apy>͎-9GLAGi~2%% VݝJpzx$SشN/>!nUc]rb jh,۹IjfX`2xP &E5IqPQwPM0KWo"HR8PHUJ R8ߜ PE~a$TC &S~p{8\٨[KeE8spUVqF."x"dx؛H*7M JjS**Ӆcڃ@|1dfI2R8h9A:l]:KW/6j@mtq=3Jg]cFI3ɒNz)^:^jyZJJPlPWK--V҉nRe{vEd(È Ý{=F:ntvR/!Uڢ} OCeT'@uðQ.5 /#/6ra@j3֟p=菗3p^$A*uuP;=ـd~fvǩ|Du'бhI (ltx`F2yE(@(R\) 'p q.H(NR}զ[ݫ4Fda8=L.!}h8Í> +++3L H/Tɤb^I7tH!^s>j$nw_zpk_ ʭZ*­xU2(BsY)rM¬h(T&!Ϋ{̪'Q{^:έcRu L߮skl9}9^H\ƢW8 !PZ}gf־ՠ\"\We`k"d lL閦\nEs^*\0J/^qF@4hgS,MPkh\{:K^8ujjy*6BSiNZ١VTD' TήtS E:ъ bK/P<#c(/(l7UݚFŃSւ:7H؅Qq"t:*NG kbu#84H SwId ۭ?.m˾U_xXh8yv&B(q&ƍJ3%"S_ ;iWe`k*ؓfjTitu.ƗАcosκH'xG?CWY~/f"8-(Koo [ޑ:Ĩӫi<7檅qaɆ~N?9#]6qM ShG4%N"Wa+k;1=mb0XjRwIswUe(;u_#46(wxLcRk/0;#|\Y>46[v^?0r*-Q߀ސ6 PxxS+@hS W9H#֦!s)K6D#2Ji kJQ]> endstream endobj 419 0 obj <> stream x]ߓ۸~wYZOTۛr*q֓&Z gi"ivC7@$Ѻj=F޼=i?y{:7_ŏo~scn[w?]|[`Ū׷/_EacJjQJRzq`֋?vŏտyiX Jlq0U׫Z6U3jqh^qB U(9JI-v\ k\1#!```͏Kn}*4!U Vz*dDQHWjyois%bthUj/>|naTE|!LubL}|( nkƹΘ)oĭm5P8N+<~ށ_?4wmry?\̓5|emgƙZaea;*43zU3w"띘Uw0 #sq_-483k8F]\DMC6cܔqpXmW]U+>nbl4K^4ZMcl1e=5C@Yף6ZXp|dXcIwNʴjb2#ҵX cU KHg_O\LK$>Y}$xV@'VNsx` !;|U>Vxm zb: @hC<0N/$+7w Snδ k3+H#N0rb"c2*tTPUq?*NaU-X,H՘WeWѺSxt!HY.d1+E5lI-|rgW5.]M&Go.'X#NruɌK+Vst967+ 0f<)CfӚ+BV0v?XnP+\i>lov W,[s062s,K[F ݄3ZTP*Rj#+'c=lBV+djQO~çzZ6L (3B(بқojˁnzқ1*]:]wIw"6nOU w Z7X* Bӎ#gdxC9~j]v`P5d́ ڟAf=<.{: T1\Nshcy!69@ZQ5 ϡ, 6ƣJ`Wt >]3ݓ~=7F RVUg!+UMN2:eV=̰P'~Φ;~n>7wOgamf+4.Mܬ' nʴ-Ofk*ǚ_#+qϫuۭHuxTu8'B˛S+ȩdpL!5Y4hQ 616 j-pzİrt\3j|+r%I+e N$FցHٗx/u] z +BL'CIKʈ*xá^A<h^@יQ%9QQxjMd XFU^ETc#d)\XOsAU{"8 SDZ ;y#E^>ReLj)CŪ .*$.i!.5ӏeZUY2GD3u6ViU>C;H+" wzy"UҤ" 7 sf𰇐W y0+<_Ȕqb}K\*ÆZR-/,F]plB~cmsh0> XV&B^Ghڃ ?컀aCҲIeWirxȃTDRaNeЭt;;x@9]3,EM"y7v[sv)Ȉnw.{G#1)j1ACJ3i Ɣ$S%kH?5WNs3z)I2 9l0TS:fwўiPŘpcmZ4aVkXO~!hfe0 ͲI2Q :S&OX˟^]hྀdVH-U^D _r%]t#\ȕ<Dm`Vl^!ư0V0W$LFhѓ?M~8 o952O] S8ao,aA {ͲU 9alεCD_݆ѕWH$2 #^].. huetִ?^ċ ʖs:J wg S4eL]Y^DUXz[|>bL8s&$ޮ.°WRΆ* +g/ei,jqHR e$a)IE-KUD| u;lKOm{ƴDk״g֧i9,cx[Ȣ4IDyFnφ"Q5CS '}K1a߅iA@kp/rAL!F^S9l5Ms{X-, c0!/t^Mu3'RJ.>O3C yz] {ze}irq>O{*c:CV{/v=#VWL+aXgx|[ $ [H"3KO,N*?E\tt++~q`m><׀iZڲg@,Ss uuA)ˡ.#B[ fbt!ff g"(|2ETIg ֢}IY"O|h=@!M[P{sjOE\,-VqeE FiF|)#!˝^9#E1@@!]$D׫3$AH<;d9՞AӹѺi>MA<紼\|EzH}@z>TjUMOhXiRUk a[&"I,=L*A揳 @Cf@E.pP[ 32!LBQVX&!'e!VI8d5C'g!}K10=hy{m`|'k\e]'בFtpA Y -/RFSg/9ui7M"AaߛJnͱS 9ꮳp}i0]QE#׌Z Ƒ);>doHnӕ»M/3$ӥF{('PlwC^֍eM=̰%>ɩ|wlg+̰͗ E݌=ً`]%.-_̚#^ xy8RoӶػn/!]< @o&$EuŊͳ^ S<Q]`ӑ]` uӒיa``{Nk:H\XP%wj,5i`Ա^^;?? h=&/Zj'vƎ:[#]g,}f~/ݝğavc$;$@p@fmZM5I:MOkP/M#T'P# w'^~g\3ݮ9P4&望0* K>TJ(ru.jsU!&aR:> stream xo6طD)@b'E.871AٞzKZ\r)`7|Gǔ4W?߯>m>?z˧O+6㰺X?t^F5hV׏OkW1|ߟ>yecMg55kjg]4ͨm̱jPUtҫ铏{俓F32Y)gVw]bgw8ݩFX{-Qpr9&|yĘ4~ET^*. WmqPJY>,JEXK>\WoVVQTھr%k_ {s7}g [W>ݞ>'_֧Ϻ~K>oF]#U9v]6:H #~>aR;k+v وc^=-ݸn臤NRYuG0=4m[v\_L?T0!>M;mlTUr`g0Lx :|K0k@u '?Aqd:!#G@Afq25x1Hxf4֜ɻW7:=|wO[NNv}cd1" ~*JόÂ~FklW "*Պ+зcE_m.P]44(0vS@M(A0dZM߻,tk`_ǽ(Al,1%SNP+T+#Y)@qV@9eΩ\Tuqj8eF [&SKSxT UF7ӻ6&"]32C8:6y _~޺#g;))zPʪL+wMqE:p#_W)+m$:M+B:`ժx><~ 'Vm2@R%D̬~hFY(ExuWbjaJFQcM&:v.,b/b`!eYUX^qsXR*+/aW4=0Y u t`U biGڑʐAeTsCT0%*oBjoIX 2l3ʠF+u H T Z+/pj%NA1CN^sޤl" pR>Hl1eҼBeS\ǧZuO="LJNdQ2emߨSZ& (|I Q:M(d79@@I @{ {nGNBصddQF jLE:%ʘ(sJePQ(z/8jDU"em0.arp ^zrp]NyZlC|XoXcA3`Mly e4yEM3&= TVEd2)RS\Ngo/W8jRd4FxۡtG 8-9J&_9LNنA& 4i|}3d0n_VF6 2"L]N;˅ tJePL&z7j0U"N`M)4-P6y NsN|N NZG&u7C'^{b酻n)B3'}ZS(#K2ڦv. JrvDU*;DuUD#D U YD-0ktBE75AG j150'(Hi T;u>V}uYL'Y@=sNJ-`M.:)Y*ѩVS􏋳sN*KS܈u7?@M(:AP:}qa1)!܂Շ%moMroCSw4߮76Sؗ3*qK{i:6m͹{_U\ZuO=Um2Rptݍ+ŕ7p5AqG,|150SB6,` tJ膽ÏϮ|.hzMNCٜ- _{iNq)R8`'aK* Rpvl=XLLlJYlSd4@ԡ8&eB5> stream x\mo۶  {hނ.:]&K0ȉslvfI) pm`JyfZE^ELU2whBc[a@F; \]I {zacxys#߻;Cȶ\>wBsgPZKK;etP<8UI[R+8 |wwG=ϗvRכRa%7; fR4 ]ᾍ+b׽YOj/)ojuHZc:[2<;&dyv| }SO@7PE*V Xȯ귗ӹ=e ׷|O6:_q1o4F lgy%n,ucuz3=n5Rߥ4}l=+F?›gxy -|[\kL=d'ql2ILG>xKeC׽FRԦu<.nq+f.+bIJi(2'{p)[+wȺ q zEuoШĭSe%J:%SV2?+BNLp8$5k 0O2 4i ?Dҋ{ë){L^CLږ )ZP(=OHlh[wCed& 9N tUOuX4YCDї],&)Ʈ[wc&lwU.ZؾVe;NubF%W!{h+]+lGc @mGgx;=]It'w goQ>=B+=7Ld24n^;bf^&4UO|y-q1"DSm%"u>?aW_+Ю?N! E5=&VPe?W\\e s$.8XQ`;hIa1PGcM\1l(k[[=#G3%D7z&6M}[}wu@ޥrf% "K-^cc#s.keˆR9M",ضS,y@JX(LNRxh@J=(F \|x@Vb< $iaWكj&^*,v -`!dS`@kRc6 p@9~pkO:+ˏӧxnkR-o&PEX k وPi ٔ`@ [AM+ucd+1<с}Xq:crl`e%H-Iޭuku:/0HhtH3n`s~̮݀Z*Eph+]^/k4b}^qS8 ~Mq uk7-Yݳm1|b^r>m˃GKuMw5>ByA$!~>ξ#PN}}rE /Lmf1[#ZZMS)׺>"C6g~Tr!kc6z%a]NҎbyBdžCa0W`n圚/W]29Ř+NfJ>Tۚݕ/]gb[B CCk<[;5*TWvUC QL*H2JFO>F\tӋnD_y#Q 󡄒0b}^*$eӳ !f3k%)7ekwZfHebWa ' &k)lQLjL͐*$eW'WN9,I ^/1͆% BRY/`bxI qa&am^!)08HWg|I x!x6mZP69tX3C8j E[]Sm$)}wA݆.5 2d&%˷mW!? >~~BnKm WSvHtU .7:DKҶXkAї0j\X BLQh0ՙj;$mT[7گ<Bva3duVHqχbMd3G>lg6ìT1[7ƕ8LtůNHt]C ]Yfmt]ˌaI dE#&Ef*~i']Fw?"7'veuWHto~f9Dok(n3 Iksl#$&y!b3duWHmumO'zWM}5IMo~~dmU !f nz4_*Ui&Z٪;F(}bA" endstream endobj 422 0 obj <> stream xmoݶwлY nv7Y&ͦ 9Iu>6~I)rfX~H=~{wpqyoO8=yuz1jfƮ:ȞGMSMǏT&gS&Q79v3!79zꫩ?U[w}uÓǏ~D ک:'MIdvmW+u=wn] ek756|~v7Ljퟳ2vy,\k`uʬu*,.6ݏ'OawVX^൭~xqVU/N&GܾLv/Wnͺ~W0.]!JP8#!*pmQ\u&ҩS1fvR4ZMPB s[iݺi>vtU]ۖ.f+/"S~S]t;C^9NNSW?\ؿ\~.Æ4Km*qqc>__]^{Nݬm;EkŴd1Ӱf31mܺodZUoY0m"e'RAؙC 0.eöv>MyӸhuu0W>7lA%t ur%+pc0h6g7fR[[*彩\K8ӱ _4[ٱ|ERVo`inksp_ػF}X؃z[{2cP7 tҍk%έsCյ0tLkB֛Zݞ۠V8:`Oi+3Th /5L7gqۍv#cڣ\{nji9曃9?Tiož=ncKp:BW&m=Nejbru4 K%1f{M0oܷKLK"m2 h=V-bRPʢY7  RpK"3|kg8O?n92G{s~'rJa&ġ<˜ZeTldWf'M`__Յv߻^;CwW&ד"٤IpIt)uabe[, XX6mUi!\"`Y΁$\|Y,۬Y; k,P$$ֶ p_{NW`IM=8Sv`n#Bsku.Nx2 F <28CGqv<eL9ŵnV|Blⱶ1p y28C6T~mJV<֘Ɂ~ ,@WQ\" 7kj*(҄jpvBy"@-"oxtH7ƍxˌ9EnV|BzHeF ܶc>M 6ۘH("ef VP|F7B>T/o&/TܶV@)(hY(D)Ȣ$ J<J 2J)Mf(T+уb : \Y,JKVRo_gMMfPEi tk"@w\g>UMGc~PQ^ULh467E9PД[PI9&H-y/\-/\GI|)N]E+Q(XDqrp+vpO80OiP9n W|Bl 1Dsttp@>pMz:q,O8 e!UDp^BnCZ܏~ ,A?nhV94Ɗg7)ғR3O8ƌ5[TnŇ.nm.mQmS&\NDc\phv["ZoqT)Zt"5$Xˀ?Y.7Aeyj$$u0 : AZgs `sTllq[xmL$p\*P㛸8ieoeO(Z 'k,lWQӵ\"K8kbַ8UPf ,LH'E^G"ʵK>_KqNjioJxGC]\um1 G]"ya7snueoL9V/O;˽io/ݸ]nIr#^ /7]Uд\rPt"tJ`HP΀2,WJH"n#QGJ *yI6  bѨGL* ={ĜWsu(t9t/]}|%hF5zjٴau8T}v>6/(4v/22~Lٜm3͢A4TsQPͧ endstream endobj 423 0 obj <> stream xZ[o~7G8W9EVmiZ S(#\ffIi]RDs۹|M[olK9^^}{?ﷻu~!e-OXUe`IXR,/BLddT:?\^=~zyq&o<;SB:uV)`TeJJLdR%M}yq?6D%iNT.مFdR2c@xVI҂ es6,5xQ`)!Gf?L#dǣu-,rp%7y+##! . Pl&R/TU<PBJ) O!4OX%_bBcΰ7f3d;ϒfuJy%D=rf2õG+{): x9 *lq\͠ ӌE{%LBR(Xp58tUhd/shyps|՜kkn3Hd_3^:E_Wu|  cI ÕסᰞHY.dK6N5@UUMIa,H+AK sc\+Q<_F h*O랠`6A+k*=iy <"p 6jݭqmަ dz> v'ЉB;>xSߍ"5Mi&!T5.=}(F4{G{7'r?7)nQ*<wxC )DPqfҹһ=G*\޴t"T] "^=UCUQte GCB> s'}c=]o=sw4&Sae nf\ϸIW5Ew.Ьr-rO#,zä/o.^L28YyCb";= %i*J@A̛'9æc!?zK}8IkOdA8MifiY̜D%3PKH ';MOa!֦dE.0̹.0Mos;3ap.E79Ar+a@ E(&^_B >8%s%(b&(׉B o( V| mwY J5a LIb,DN:rB0tK s_a2b~Tw-vMcJώd|kVD :{}'r5|hRha}*xג> ~]?$ R"YȰjc* ɱ yY2 endstream endobj 424 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 199>> endobj 425 0 obj <>/F 4/Dest[ 134 0 R/XYZ 82 231 0] /StructParent 200>> endobj 426 0 obj <>/F 4/Dest[ 134 0 R/XYZ 82 231 0] /StructParent 201>> endobj 427 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 202>> endobj 428 0 obj <>/F 4/Dest[ 134 0 R/XYZ 82 231 0] /StructParent 203>> endobj 429 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 204>> endobj 430 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 205>> endobj 431 0 obj <>/F 4/Dest[ 134 0 R/XYZ 82 231 0] /StructParent 206>> endobj 432 0 obj <>/F 4/Dest[ 94 0 R/XYZ 82 88 0] /StructParent 207>> endobj 433 0 obj <>/F 4/Dest[ 134 0 R/XYZ 82 231 0] /StructParent 208>> endobj 434 0 obj <> stream xmoݸwKwz6 z-RoЋEZ'Ib {k; ~!)Pךi(t^^?|]=6ˋ՗uۻ|?5cg/"ѵԼh:L}Mͨw7?C ?<9w?{mZe۾Qrh 4SL~ 꾹?ϟ7di?4.1|^V^B@b71vح>?L)bHh-̧^veEu8bܞgGު c)3:m^cӼ| GO?M#t2wvS;Nna>]7?[ӯ?S;lq" 3iU+,z]@/~5ߛ'1̭kg_ / @e49x=+ |u V [택7()A; a$VG) Wp*pXh`h70  "v P1{ t)b4 0 B;S²j/N0Hna'aNAza~`Y+:-`b9x+bXH ʎya ?4NjiYJŦ'wxӱ$CICMvTx (5ꬠ8ĝP?u6QE&SmW+!/ NY[>Vzj&5'Db@g#q$. 9|y\fe$nPB T~M w_]ԺaE;cd'd (წ sHZF䦌 j" KH/K$aRRN+BpI!x>9YOJ||y>#@׽8`ɡ(rԅf͔݊!$z8#>"0}S"즎 j z e "H'HNyE7>qi:g8jph,^_ 鑏yzTW]77MW4}a + g0"4E.̡-^v/rζx>R3 V0T*;0ds`0  …]<iqFÃ!'}Y0 `0sgG-ܳp桹=' n=,aӤ.dzb$}NjOkB87ux,2;8KtӾ,QFuDTD)R2_j Dq/O|fԨSwƶ!nדL)68 0քaCb9 " mQ~rҕ%Co>l%t=29,u,uF6 V i9#!nJ|*$x]p UW9UűN[x{0CFb:av4be{l^ &zڗEڷ*{830]a7gmL>#Sҩ`2'}yN#ђҬpBEmsMFM43q}& ]=C\SG@5XdA&?gI7bBV1Q1Sbn){N $Ni7"Z(o}%TxMK\ ?Oo99JkE]/Gr jhpP>i}YZeOr(?n'|Op=HDC%nL0(H׵,HjLT{j=Drʙk;W/1K>&#N#i1c$K]eӜE7B꯳`J b{7CnLL01M}XKrP\ZerE`W/}bK@">Bkc4@E|7})bض#(:4_rx.aV*CTU~оt9ngr(*'rCnAW?_)IΓtUV_!񰴪\nbe>l1CxG4Lٟ+b¡R6i!Ѹ 2}_,]Qì *8Q ֐m_DP}I=_ I0BeǯJJN9syQ`Ξhx8Y&`җgJ>l)>׻/R/a$tsyhnE<@=JPC)j`PC B.+ǡPf_L0(Xi ߏPBeiGMMN9KxҬ'Fv=-MYLGhs (gf{@Kg[qR.6mܔ޸O72C*/g@AV^ajf`jv){.aWLRUٕSub]&h^Gޮ`ҭ9TyNi4s2qi3WYP}ӯ*WƸ؋OPcaDqV hNlu=ՙ`3b5q:sSG5XdA-Vlڗ%pʞp9\u~=a2 ^y!(-OڙMGTiL C X(TkdZׅ;,6hŭK=}UY00# B037uPE&SmQ4O,ʺCY'YN!Y+c̪̀|Q2MNj^!nfrҮҸ#qy*^&6No4qq{ChA8,pq H∝8#EdCDN3K(VӾF঳jG+\xm08 /[@eQD|q0JqȜ auw宿kr< Tm4߼jnpeW|]ܓ::*; 0$$CN0Ae?u8q/s4(طd:%+q2$1]Ve+T'^_+Px[M~U:+-Fr%uqg@_' Z;B\wsv$ae3ۏ$,¤śepuQrʹ"um0"5 N !nҗ|O#\ ]&bb˫Xs 848k wX'<ď%[ݥ9' ̣WߩQ&ta nꈚ5XdAA͢Gh*eN;eeNyWol9P hYP#d <3?]P;x(Z\Cc+"r5T4 ]0 3 kp$p[2 7kTPE%@E)*sNPQxARC%BYUF".4qK7w &`0K}h&}dR` Y 7'ʒ4#}M:]],A˾2ٹx%ٙQ|rn7$wR̝As% 433h:ڙ#R۾,Ĝu+y}Xu 2yhյ!3:Y9Y$1X.(Z;k$*6=;7yK~n 8$nݸ~.΂Ob1~:/a"?ąK(n"a;FѩkZ'~L&[\1vu EHx-~iӖ禀H'("3 TeJܭ3&j;ߌ+ti$=bQɖ%6z, endstream endobj 435 0 obj <> stream x]6!~HU%Jiۥ !v{ї_;c3C+Ag?qs=ן߾xG?~|?}y|_~_/._~}m/fe2 r4Lhk{7セ<=EaCu!M6 2]~5n~fFff7}vCfCL&OvX&nR1Ą_{}3c|;SnHl]l&y*8}*~7k*{}ڛ#ՙLϞ\ļ<΃oxCE_=O#ٓ}u@->8qhGak_. geV;Lɼy͛'^=xnޤ?懧KҎod`q `7U`ط`oAOΆq05em9: +Qb%Ҫdz*;|^LjNPfwev@:whkd} OC=zÇ P'F ~iP4A%(9Tl̄b};1ٟ&H-:+Ugvq}1OSpJz ([fqCOYd)K(`Lo&uznhqC2GumGu5CDdl fAnO#dUyZ&O؅N2OiZzPB2T{)2~]Deo$Te2KU^ fPoMmzn[&13̻p|!-rn ;ޅ5s!f62WUOP˜OS2UO]z XcvR,F[8yX P)&H1J("!4(*@AZ%ժl~\~i{^LHt-zѥ̮m'C`@X uCV[HR \9(z };\N`dʏΧ w;'bXhP=5m s؂l!\L:sl&Up+y=E.^O Vu ޷i2W*V4_|\_E'0P+*X`ݶ™Pvk3V/:H;BW[Ջ4(*@^첦D׊ *x_ߝ?^GYw[WϷUX^$*kDNm+*\:f,0u.aDcEd^U ޷ռ$Xe2V+m^nLH(Uo*mzn[Wa.l-m7\:g,.^0O UA IC`];LO#D" P*u pWRP εǔ2F-ED RL:ax(Cj%(vO~N,PM!jtN#Ld`O^6H^ 4d̈*XSZᶬ"=kUL݌1Jg8UQ VA N> stream x[޶ ?rx 8'mcNMb:Nh}E QZ;ְ93C>z/7?6~գ^?z~۷}EW͗W=Z7k穹=tm?4W.f߼u^]4~lrޓ%PךŻa9Z|Xz=s۩o&~*ھ_>hFj4ʮVy3wI"zc[z\KZŨwݤ2,wwQbb%UU[!Sc:lw<~}wrguzXɳfv%wc;<s7] 5V\Ybk.UiH/uk"'ڋo_^v2_/$jZSPovHz^j>9=,lv{YdWWQw;q7>͡O3w]J۷=ѭvyNݻlϓ5`m(Y@9(zRyXrx "/")E|)TQu-!Q,h%Z1,1Hs.1"p^aۃBjY4@] Lٟ dv]>{@Eu~!uzD#AN@˓f @l4%@[ /AAHCCa7F0$֞GV *AjVhuD $I%2Y4ÑJ1ijpEџwk%Qۍn&++Qo]Χ1BUEFˆNW0sm%Bdm`8tKf !.@v Kd IQ#$"3Es'lOS2G"t?Qc%R$0Bte|uG,aM hb;&Rғ#D=ː6.k0$҃?,: IɢΒX)Ko%4씯YZY;:u[pF3f7StYh7c L2y܎\Z$[J/BEYH Վ{xU'D[jra$M`Jq$^XڣHlϽh%{DI,„x2G&puףUTO} DeC2pz盥`7Kh.EzcxxMj}4`4DF1i`AvO"lhuDq|K8esgɷ 0q H(%$'IAHI(G*B-4vYJ,H:HwzQ:B^uo !4LW-xY xE`9#pDdpe,#ϓ i} ki`An`#uDYE o #4L7kpCYˆ X;E`1#`Dd`d8ٷ54FL ctfc'7v$:N^Xh[ M/ͫޤNY‰ R'18R{L+Lܐٷi`ARekǭC5:;Z Btip D\xQ](E`!#IAHt adIZH-!BECHc:T;lu~VZ sT^/?b'Id(3J<Ɖ 3r9$ĵG^SoK dJrgYeL;<#YT XA-R;æϕ\I D~+~ f5Y7H KOx25{To+8y택v,o WB4c8 yJQ*t@kU@عV=Ⱦ4QL }vQ:P^TODPhzn^`'*SB^0iXMuj#SX( PRR!gg*X&Pu: @E.EK!D]hzn^ aٝK땷,XBxuޤd8ҚI52ZSO #D[- wXPAVe  Q#JԟABr-&nhub^,WBt8rvEb;@TGȾKY9.:^0Q:edLy25ѷD^GÊ`QJ2Tb#Q}0ŶG^}0eR*!Ra@T.O}TJy]|PnUGH%2ռ: (%^O"T0}#^&=v`i:| oܥ dv$=^Pzp}e& DXL:B-фnhiyM5I*tuMJq5keA(3 `Q@%d_J2Lam:PZ G34wВ ѷ@^L1fuj5,S|ݤajT"QxxPun,NR>QpZ P`2;^25YP2CAp;OP Kh~n^AᆖσJIav3oqU*Sⅼ-72ɠ5 @N"@saj\jsXhXqØFcC`QFlo#ATn .>viHJ"d1vrUe72:ϟe_߬/hu:D^~">Ғѷ^$SzS yC'IĔ[-$Dd`e{5D"dVe穂UUJ*ʸLDVD%2ټ XڴT&>H)l[{J"KX \Dj!dIsQeJ ֧?^]O:P^ћh[ M/͋ A, Jդ@8}ĶG^}d:)} Lu?,:pLX 9ƃpE^(o +4L7/0jfj5,T|4c AP(BHXX fFfR!R2S<\CuC&-0:L3} 0eytz0-*8 aTӳ4G *Ood6-TZ4*ٷ@89D2LħP֝*]!o )4L7Ӕ˔}BIa҄1ho#lB? HQ&H (R!b~'T$h:DԪEK"$P`nj^G^-*< ala+xR(L!dN}O2E?r87uA%rN<90"'*ő% Dd@eI#s*3&pURfœNkG/ڂz+/Z!:u7jPa1TEwkUwM"Bv.;=/nRi;J52sI\Kԟ2L.0V֝q4QC%к ѹ_.M,{t̬Vޢ\ aҜғ~Jqw{tζG^=:mkT5TM8K~<ޥ<D8F.`"^%*܀݋ 5>?-hzl^2q_6^[T¤b̫ϋ@8PD^"^Եf" )XOMEv3/T`^O}_;zIܾ}{Gw)mE ,IFbM^rѼ>b6Lo #IXrR {73.j4MjB:#KE {`teH endstream endobj 437 0 obj <> stream xkݶś.h`} nF`lkԱh}ŋ(RtsC7oz}|۫yyǟ_7Wo޾}_4=l\޽slDNcs;D3Aoٗͧw;/Ϛ˿޽xkݚZ47};M3jSV_?{?F3ꥳϚ0\QU1vb˳A%1.K"X,Z pGAsk({y=yv'p{u-eA^mfv%wC+Ox0F~BG]|+ixr={sHa4 h2l2/.=}?Մ rxKc>jȡo bmrkgaѥ2:YfAvmo=ːQ/CfQrݾ]w[%[1&5 46 וƉ,i6IڢGzBmD^=scfmĪy:s0Gy㆖ ~q|1EVAE\9ESCŷ N Zb99ҵ@(nT2L˗]'D qu^ Z]*;fs%&Ġ1Ĭ5v!A h7NF4k~3V * 2}`^Բ/&z:1^"v{E|K0dE0N+A`)\$-" aX?&}|u1FۘwU lT^>guum ~^,x㍮ 3, /93v:qh|1E VA\9MǷKAF4(8jḧ́ܐptgwÖ ld ؟OOW uvcP%veCܩ:KM(*HƃRրfAÀE!/lpF[G~78lFf`wj3ǒdgP%peo]ܧdkĖo$]&l-5Jxom"1v"o" n $Qws ":{zVA:BNN µ3LU=IhoQᇨ&qD/"Ky3zc/ *_!B4@[^}J{lZa$Cb .4 Nn4V;p7 ҷL`g#m3_U]C:?^|Kpt۱/%ܓAQD&:" Ko@[@g貴.:lF&LOWs_}Uqud< }Kpteܡ)h q@mk (7anPE#01f0n(5@1.j77lF&b.׾9Y.Ն\Q`[^'tPLqU LYk@ Cp,рErIonn2LqjWvxruncYonxnF`ۻ%n|1 VA TxG5AE!#{Y-kخ#q^ݼ"V̿lTl)ȖT/@\fI]@Ry տ?5ߊ^ߞw/ͯ>\٬۷]1CBjpT ?}|o?b[La@l͛o2& FM`|954С71cFƌ)\ay\p¤\ ѺNOB8@x22!=ݑ8r$9i !;nF5h"g0gPb%*R1{FqK PVn y| +L6#i|F&ߠ_>w x숂7MVQt ,,͂=UYhWZ $V$XSH  \ة` = pXԸd&4³@PbޘH.`Qg[UUQB)>/9)i׭[#Ȍ} Ƈ-ߪ.lj;[M.Q-fF2'J(3:^{I5z/X *jg[,%mzYXIToUnܦ&z@" v;i›ɕ귰^ܜ]2îZaSnQ%V̭N/aYSO0nr9 v0'e1`A*)|xث啐{_{oo_w+4eZfz@q1iY$ʾtRb5Ag"MX^w!; ԭ;3 }1m\}{ًg_=;:/_ͳ+^<~sl}q0JWJb@MR//jy\Md4pGl_u֓@Ce~v^<}^Jk)MZ_,61ƚo’GkhR_QЂoQǰ}dw }'y05XʷNl{Y"{Lxaslo ڤ`EBDA v-DZ6 nn'soۡo 0 nkչ0!o4"-p&K+Ɋ ~_gEfKKX -#Fƽ@^\e־탺dvfl-:>:Zʹm|Zj /a<Q [oAsBhrcMptrh@W vk_8Bm}b"8Nξ>vW NCRurjc @EnHa;&4k-ފ&7D 'w-ɍ6 r(M2)H*rZ_t[t|,eƭWG o4"N],h i߮B& ڵ ZoECku͆3qdoq7h*o3{z001yQNgq_<4X :* #-"ۍ![QLz? ڷNZ#m kEVF9cڃY7D%*^0Nb։M"/;`]xʲpN} 9:zvuP3֥bj HRѲhQ;+Fm߂ÂvQ*a} a.|W'ARUVV;M8 YӐk Mj! V$kM Rguhk@( C57"Ta%mTrEQ,ߝ`{f@+,˲Fgnl0“u=AP/E l~loXO?,p&$\,Rihs`$ A흹B ރA _Z3ƣ4aE[ tZ V Fp!7~3pC:W;Xzc!q?&{FdZD>j8RIr,o݄/^_@(jˢgg?uM8BrxGܰ+ʡ'Y.ٛKeKICO\!)v!) ^Ց)9ptPԏKұpQ:(UcҾ/ IN5"MpDR~.fǢcrrn[qF"Oh808e6 X5랯ɒ CD);ls rqHTpfq(= r8tTԍC5Q?فSaF17b;t8O3( с`sg 'w :Te c"?4cEဨ& |p Ҫ*04X?}UYQ&jpBLyñ}]7dM 1Pp}_ܗl~ Wdg^# endstream endobj 438 0 obj <> stream x\o7 ~zݴ(n;q-lɑdo>|崀p~p݃vq;f?|pή7t`|um/dv:}w"lz dȋ*+ȅ̦@c-ׯ+~{j}ʦ~9\>KN5 *Z:DVq$,"[_}7C$5Q$UT\QM 9dإyU/Nv `jR^7Mxq*M4*Is_^7C#«*gor;c>l7NGq{?ʲsG'e%`QJxN Qc%(/׋wM_V'D&;Xh)XY4* a_N88ڨ,G$!c^qDu^Le^L`tXբm@f Y̘ej(jrm`_ijN(D'GG{lc|9 r2,#hL z@'"U}4M7cGtꈴ 9zʺMbR-\(60%Th0θEY!%e^H7Φg{br||zyxL/3T꧀ ש%0XqWư f0`p 3vmDĔ&݌c(Mh:ITG1vjgyxը  \@ ,?aqwq'CyN.~<89 sG)qUؘFV}īy >& >wԦ,X6@%@ 1)zӴhĴRuzH(2fk5xÆ {4LV8P\11$XYGp`k,,!Y4".ʃ~.#i8zͥA4K9,l,*EMb+&EMb\1[.t6푕3B2"%9F!Q:H&H9rxǽ}9pz9Vr̋X(qь,;E9K2, Mv6K148 :wԦ,Xl|2p7 '9̶ɬ&%!N-""luíj$5V-Qvy! ISP[)վ9P_Mg_N*dE>s_ET!."s-Bq+^Iח}oIYFFDsqaJbSpԪ5|Ú7jFզ Q<2Q{NYpG;H Ow6N.)q4I\aWș 6b͡[U;֌=͑d' 8SHadG,r9jE+g䢼IIܱ*|cㇳS}>WeL/cj--)z:`n23jӹ/ʛIbQ{Ә1^Qݧ>ۧ>-!ʘިu*J31y9Ì8&!k`8>=fE[Dn.0F0! k4jF]TGXӠka:XQsdو&ʋH EJ :.ʘ|tsdg(GU^lFyf;UM./׺!-%+jG X!pxbgQ LiŚ"VLŚ*(c^-A1!I!:9Gq$)w!U`%cE}5ɯw4,NXkM`5(o-5(~,70Ya +I1;آ*,XoKof߂ciB̝q$~{_`̫orY*V%xjrcrBZkzał(o>-Hj_@Y|`_2fUta]5Uba2fkﵗ {'B2@5k9 NM9ΛB5re5"j1-\,Nhb6B7 bEĻ* ~,ط0[dEp#$`EpT8.xz"fpxj vb1TqDh"Q!#G"ri:#%߱l#ӾGydeMڳZuVqAS6Qcjwr_/|TB^=eWy~CP=ZH7|fB -0}^n.kMZQTcBQ\h0zT$⎷: 9pPP j vk8I9 BpUS76 ,He qtUGnaMa:ۗ&|XށX˽(fAQp jjicx{Z'1P;!<_;n.ODgm'|<|4vUңTbbV|f-!ӕ}`8yvΕGjd^O6M+r׫vr$(gO%E߂I sDȉ1qTx߇348Q~Ĭ^#О ;@hZ4>JdjGm$ 5>Hc}H,}BDSToadՠ^h^33H|é:'@MvR|s%͆Зǹ&0{&0;&I<+OW0^|2#}r;G7QRR}M;Y4KSy}87zx.[毽j|3gDŢ:sx 8w4#ғE1 m?_DwNXI"cEzI4Ի,o~SтSuICUˢpZ2v;@٥n M6QC&06ʉ Qa^XI(zJ28~_oYŒwZl=1QM$`ҲE[ʜE|B_7͖7 , >_6 >ß7OjelFq/3a g_x $b=*&#kUqQ,'}TZ8dvye*e'n[_Mfv~#O;_2tJGq?^ؒan2kU=P(`x3],S:ۻFk!pH{c9Xÿ?ξ Kx!oq _w_P]6N0B4rr}Tfrvyz5q)l͕!va\LyJbIm~b Ԁ35&=BxJ vqy(5E|ɮ1W\6)ۑ w`^^}BȾUauZ>J'5=! sUD4cXhU$s=]O9 mvKD0/,OL[谇X_(- FB+.mƑx+[|},0BMʸ,xL~!&W5d& Se1٣X^ثO!+4[ ;Sw[D\i(Ἦa(d#M8oI~È+֝^hb`Wi%4 qr׮q'4̼*B~vٷ3LDH a؂%Bjҧ5'Z*}޸=|D\ވd}`EZUpN6!j.՚y-- L,P@т->uD[*EçY$ mF`ͻSB|5#ӑV~ǁ.\"cdԾsqB|RK4A 㕌,zJ endstream endobj 439 0 obj <> stream x]s۸3|26o׌grtw%CrDleґ\ auFI,v.sb.ynW.oU첽:{_M<㣳7,$+try}|DheFt I\ۏJnG$GdGr׀dfg(M6' LD <2TGώ8 eR@ gIᒺEH.2 e0;EށGB4e}@R\Ib#aDL;BP SؐuِOE1Q#êK,Gf|>=dr ( g/nçħLz:~{bH2渎˩a<+rt SdE(PH5GѨ<_lǦE'0&h2` *WT39+0h-Ȼmtw[ (x S(' A7TBJHo1J3,zHu`辉N>H;&iq)`)osnE~Ih?_Iw B kڍAǏu ;S~Ac+Ȱ/[ERAY/Tܸ_oX+s-z 18Ke4;j!e} 4XcPƪ#(RU韷%zOr`}X pUyje|N͉Y s=.˭oڡ(cEa6r^U_eevzͿ"s0)77FG=7iN@v-.?Sj„]/[U,2bֹЌ* s)CE\c򺮬8s'znA6I © 6` dKA/!us[n2'7Ahk ~Xu#T~Gxrj1EܓD8ljucU -<<'`5*k%H GEڍ0$BǦQw,z~tC_nAIZX= 7!rV+d6R Xy?Jl[ܙ{SGL(GoKa]#n.0uOFZb>,69X&Hٖ:5b!84^4t>f5nԍ/Pi^E`}<=j:-qq7tb#<`tMɓ"!+ue g68ӕ<~pSb22`xR{=˵ZU_h"C9x-xC׃lq:2/T&5xb5e':׶^MCqhC^na'0,vj$E^ O^p[pnت^g/</v2NY7*ĕh ulNr75. |u'=$;01waGۗzsILlK,߷]M>dQ8@N6l17V093С! ]wo4jfaSYSMPjk2m$`G)IS^ܴA2F::$<^HhgvThyü,IA4ݻċ> endobj 441 0 obj <> endobj 442 0 obj <> endobj 443 0 obj [ 444 0 R] endobj 444 0 obj <> endobj 445 0 obj <> endobj 446 0 obj <> endobj 447 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 215>> endobj 448 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 216>> endobj 449 0 obj <> stream xZ[o~7@_¦ɽi}4-ietH%\ɭXpfvo99|'M|2+<=?f']^M^?޾;cog'9 |/lyx0 Xϫj Q_|bp0pǢ~ +.X !V]pw R$AsC/G]t{wl}}T}L#Fc5hülO!pBB%PLP<\A7L|8.k{2֗!ۙkQ/^a8Q4tCE^\ː-%e12_lF!*x,g7Esc/Pm,茹&6"TN䡾a۬hj?C|cc\)50f!N3Ō>.cAr-ctYʎrVaŸBEd"8ЦP/KUP`kJ3 @QȱQyˆ 3 \W +.Yjk&&^hYDOЏ m-D$@S luA+uhaC U, Ƣ ևڊ'"uapoD-:CswyE+ռ񧜆NkF$nkkLQo@שN/ӷj76edc;0|6bl+wq>[]81xg($h]`˫$JC'~`7EzWGKd=ߨ'F:ooF""V{73my\e x5=Vf3,sj;#by-V|}jo㳢ɰa(xfT!kik1(xڟyYxpE=ecCNгq4xƸ[6n:ҋF,S>4K^i[1juRҺR:i@o50\%Տ<_-i )(Yҷ%FG\0;l2`^ܱ^G=ҢF=ȓۧ`([CytPwSְ@=zH3tEIi/apOh er +d\ I(R 3jU^UɪI{nW 8V>\|LAO)3bޔP[[a)~Nb,Eld݉>-7T `˘׎;E_ @À[]{H.#d d2pjANR=Ύդ5[P*XA#C{]?:KbB'B4[;1 wXӛM@V Xhy jnq @xk'o(otR%,澬tNT/]E=0;ܓ{i숯*+Q?L{NV3iomvN0|Ȗyg\rz˛ Z>kӃC+P{^l9 C% nʴw/j=n˿q""h\;} 9̴cCاY03i=[[}Ed Bek-@ڒt2:]k>g>!m' md麼3O'=i;vrj&f;5YOF5v>ld ՗׫u_"l$ޅՊv?R!n.>탽Ȟ}в\Z$R I>2w#n{e;nIxWMFN]}^=1}*gW7KnOy:R4Ǵǭ11ׇ[c8bO1(YThPMzk'xB^@];X endstream endobj 450 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 218>> endobj 451 0 obj <> stream x]ms6~;d:*rc|5tdNt%WӴs?  A툋bb^><|bi^W߽_8<&AEo_9 <( Y9۫" >^O&_/_8(LE)8r:FҰ`Q,)`[|qHTHH7FI1g$,("cН\$ZijJ8DP/ìpUE&`&wO;mCS{}4/OOv1]<$1kd VZW^5MxB oUgM3H"M!Cc ,yG},7~"28`?^]iR\V6q+m*Tـnr } qu6Xoe h|Y]=FpKny#@_lS~ш&W 4 34@5(X* ]Hx.'ϫBBp@'x=[W%fH-kyH!r00qJL]N4LrΊU&#.0S` (raIU 0ΝL@c/'O8V` .2U8Tr.GrwM 5ql~lSau،u~uoܺ[QB,r4qL툄W]T RB(UAU[M%EEAIQ8&Ɂl9 8[t.}ytvu|{~6ߪ GH/ q\CM#@_9G"ΛzcCnMzwlm?VHЏ[AMcv]S3Ï qᏃS QB51.RUG8plN4w#aGZw(#=W\]bXgO!C'y0 O(+bv->A4+ROMbݷeIBabh]V3G qEcCuG-ǎ2XD9];9q>ܟpE)l -DI⟚LXr$1XQ;ǧ-G,>PPBDk@2?붸&z Zϋx(IB:zٔ(ԼM"(_H".KEDGQܥ$ef9XQD˘Q:`FjM@ PC +Rjt&:xMΏ'p v"$*ŒB)uH{:q }/'ѝSh{`n 4P͌׋FXh]7e= ;Qf @v Z&¾Q!J#*i QrVj]PCg Ǟ_<9Vb`'" XIi+lq+BN9R_-{v>Yp# IqL/YADjv|IK*7|\/le/ԚB=i8XyV"jM;O/OS^ϳ#l݁ڑ,靸XS1eֿ.JOcp7RbP0Jdf5dB+(wծr WASc$ sp?SRBf Ya+c 5Ux5j[αfH|ڟkޏN0tgg "'u}1Z") =p#D7c_ Ƿs)5C oj ʹ d߮(#{$7g]}`*Qa*]5&^^na5.^ i}[ΰ634j4%,i ރP n"m9-PZ}@ɟ% 6- rƝ>?tN$1J&!ZsL&`ҌɁ:Uk L;С 1N_WO|W_7~_na4h֡*}e# P&nj <2b3<{x:@b|cdi`PupZ q Nc*i]!"(zba A%5+GHs A(GΦMX__yg:gS^NWo v_Bbխh2*mKifZv6m݂u.wdm9pLRȬ=b]<YwcI%I˿[pRv>ؓ+rgʜYRa; ; +ڳshbHthAs2^X S5+ Oӣ!Nމj˴Nm2H=z,!9]S"j#cEo1"x"z,q w+ yazC3zH4|E=ɫ 5PExiy+_x]7_|DA8Z ZػOO^R_%~8ی'Y7l\ZP$뚕+YnO-S+V+|Zq7x+A44R[rW+>;:J$W%lu~=,r߈ ]aW Yj#bD΃6'l6T=aSr;_V\-"@Q,JX=;oS||x lz و7YYjBQwF9 aJ#f "LqxkHxow,y>z)5J4Ż ۙpĈr҂l'#4#WY8ip3T#|X<z8ps6޹{j|NP9>3Z52)*!r\c P[ Ur$Ty[GB'ɾ|*֍Q>hXƸ,$\b %1}ՃҤLė}b0c{R3*e>#9@L1%|o7w KkGo4m_Gί/7@"Jo'Q$YBMVՄkS eLNdO\}2/!> stream x\[s[7~LNr|x9l3i4%Mه,'ڒ+ɓ_!%lgDAħ>_oV|v:4NV7f~vqnw߉_ߟ=~tJ Y]+.?hlEc5G?~|D),4.b rE]V5STb=ǏvBjIV$eH?߈eL@ OҦ _34 Kl,%|60iZo}P)mB7A.H̺_o1ZZj>y&b{b&rsL.}uXXwXaSr4zsQ$H*fr.?Bӷ~~(78A3HyF#@}{k`, U[F@ quY_o^Wwh[eMy0}馏{ϖkF-naU4Eiv@ i`^}®Ʌ U)Kuf&_?Ǵ8wo\"Hk--EGđU 3m8qf**5Hc+v׽*Ti+ic3uNrԸէtu/%/Q\Vi\=^7Hl^{W_j ۗL2CV]]ԁhF|'~Z_1I 2C+KݯCjE7PQ$Wɪ1~y>I*!WJ[@kZGx3B6;VAAuEvgQKP܀<ɡ aBnK6fg:]5?:MI(n+I mopS^ï:9pmpzu01-[BǠWa#{ c1_1ox9N7a25%77uDI.@:]WqAoN\Ip9hUg\_o7`U\ р "=XX;82v'Ӄu$*>٭ʌ7\pXXfcܳ]X;s6u lCEN"񀻓 d0 ƶ>ešB’foñ!g!7kCxЇׅ-eLW}.`whtw"Fn}ܪk0EYg/].9薲wⓄ}m?z96 =Z90 %=}]|~u5_Iu\XuZw#T;$a/ B&U p*w^g@o/Mnkw-')5LwYw&\'Fjj? d؇wNѫ9dWvH cFL_gPa + :گ2X :n齛웷_|z5ŏGq;fSDeo\O#؝rHNS E|yD1mLS1&,ETI;XXljhL,S`=JI>w'1H53T&'d5LUa 4 ]cRWFcUag5nyAK\j -V RUP{{W@v6xp lKa DA' {qԾCs=v1w˺q}=><ƑJ㞂xj q8p$ |x5=fLDih*qZ sMtZ1*MSqAKcѦb/M1`%] !.7o fk,a'j1x UU"˥!F_<%ДAM*#>MfWs}0"wkRF0"3pK(Fx9ZXb@O, 6~/0x@FFU-]4`jPm𨣘:'OH?]ǬKтg e"y!ݗ;ՅjcOUp #X; ݖ{&b\SsF%Gl'Ql(\sHB.s=Sx茿)S ǻ9kXjAߴ*3m4>ѫ|.>M1s5c3sb=洣6O/$ 79`b}Uha+ҟ))%6bW9)^n_WWO`~ Wt1JZ&cXt׭RfowKtGb"cT&tKouy w tS~NuG.ƤO LJ/,IyZu]SvRN=֤ٷm 2a(N>U؏b4ɧqV\L7D5=rzayO-=WWI;|P #Po@%+qNa+"czu>>283GnrY*@}U߈-U= Љm1}[$Lnl9ίG Y8uox]a_.$}% gFv+V̦돫(x`4|~y J}΄_~=@!Qco$mx&2ste}G~%e>lōEeLkO~,u`a߇eZcQ$pG4}Z_w\먡 :z\ə__X4w#MgLı~W܍+[8ޯ/zgolZ)AQxޗJ`\o0ۯ@ j=c9ުe1jF51voul tpJՍBÑSrɿ^|8,7П &F?8ti]@c+Y$&3*>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 221>> endobj 454 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 222>> endobj 455 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 223>> endobj 456 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 224>> endobj 457 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 225>> endobj 458 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 226>> endobj 459 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 227>> endobj 460 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 228>> endobj 461 0 obj <> stream xXn8}7 4E4i] i؇Z[NpTV %ŢM*iwQR͙33Cӓ^-yM޾u>+f:+OgO*]mzUn޽#Nx4=3d8aTS4ՆA̐x-~|n2NfGQ T3VqRf2j**MbQw뻢:*vcjr,ROTRX%˲g k"`0|┐R3ZF"|KXX)TAS PgqpᱻK\=@a{W2~_voË#_t;?5Kb!"uxa.6/ hwU^m6%5@nlUvך:h8aաCe[|r IS§@(%0%f3(|G&`TGFtmYHEP!`SP83L:PY+i,r$ZX+^5AjSCc9HW !4I=d~?X5Ŭwx F4ac]\~=|}1d1)85i4Cxb̶p$ghnm-.7opoJ3Aj&&)=͹[`@wh)5_ݸ}\au`,X_q.$*DSKvUAnY⣥Gv# }ewz\!ᦌ0*ǝj&(n3 9f\]}E3>!p[d敎> sp!zTI"b N\[庬7 >O7ϝ`uMLGkE-m"#'c?D, ?Oh6}YG>&.Mlrb÷%۞WÁml~2QuI45 endstream endobj 462 0 obj <> stream xn7] n5>Aǎ/֎ck (yhzYh̴M~}$%K1,>XT_墚7o_4M5f}ifW/w'iRbqzY rV$-Xt3v>?=I'e'3v+3M$ Jt\q-ZdIg r(vӓZ R:7C:~T x-RCH;Иr b~9+RvM*Q~ i8~pi%fJtaBʻܜ=ӳ왘LvzLj?} 1/;VW,mmRׂl)["+J3Stu$U q1_Pؖ0*zPzX?G&OFNr3!`GRJ6Ԁ]g:QY$E#H{Y9רu{Cfp b#o-,T'AeEV`&Y$U$ee\rLoi #r&S@K, bhJ+8c M60t Ӭh6I9hm$R6 j:frBhOCf,!Fx9lj_/(ITgə ~)=pQ%#9Nj/0IOƎ< !&/^|( euE"P>Bh-߸m䁇 =q@\yPwha]2(Ր/NC7}Bd辀 l(ǢF,Oăh>'X]ξboۻ滻Ţa؊BGq>K[\ʮ{ZZ:Aa:`|^%ǫK3;E :WS{PIx _C&7H{fCCA#c$PS*/HS?3s $0.z> 0Qx VrtpU:g d:5z@&2sn|WJ@}5e Rjffg59^ .7sGAj=Z6أUsq]/'Al!aaSCυ{~پn-|C+k>ꮮ%ut"˛7t.p*/0 8( tOۜJB(zW82hj`ݢ|Q؞he}qRJ4lI.<=:o.vm3<EnpPK ɩvj}}Kδ1 #+ 6ƀej cpp\b`ա7W䥡=$K9HWzTwTԦBKq=g/v\\&&m  PbW v$aE}Ҭk )PԱ}\h2o-$[׆=}!X*4*cVg3T "q4 z44aUiC~9^8;244uAƂlt('+[`WlR-1b I9 W(b$ T{#~n]fsB)?aEcaIN k90&ۭ.:fvgo0NSPah:a)̘m!c:E&O4r3U2oxU5f`t^!?F,VADVn8Gv14 ms[-&v{!܁Ecf1S`strJ+|b+Ӹm)}|@v Dn[Mn|`ۃLry1m)X kjT;r1Nj_nkG^*G|lvKy]Go͸k*Xӌ_yl}3,) ,ww,e#V7IQ/L 3_K9p?Fäj4Cv}7 2xߟT*{") }3{S <:X̼nO#߇PNfkc} 2FAX3qcwEI`JRON/}7JsqAZI0[?Ly1\S0s_i5K'0Zk~q—zso$3CާXrZhkkobx3hx":Nw8A59fqO #Uy}8 {:l,_ajGA99 26+LĘIq٘'7yd~۠Йc hTk? rE߬84Ai$ۧA콟O',(Mzw̴U '9Q5GbɁPU`P Y?`"["(UEslv^\%`G95uslp'&L8|(g ܶ2ʹ '=`88qCNCu 4u!\+%+ub!k endstream endobj 463 0 obj <> stream x\_۸ LONVORm.&Cڍmd Mڤ{Mm `^^5bVNZ?jr2˻zϗw_7a.E_w_?{yYEfϟ,R8Y&U4[독f?>0JbchdS\DžFE+KLE,kf|엎H4'*IT#[NpH q DžQ({I M>Gyj ]W)!]j{82/Ϩ{S ٢H)cۢ>Gťusq#^Ȩ)ۋKf=vR䞎O~隱՟~p"QcǾ3i) [|KHmUW˥i _nkHq0n.i"_} CP/ica]$K=[p13(yaF67!i}ę8Rź'!",}$YObj :ỷqӃ7jtzH1q"'|6;RԴ0FYO`Kx7ʘcKfUA4Ԭ1QD Cڵ!<h *mS(|m65/Fp-W[|A-hR/n;y YmUu sf2(>mq~54e'҆(xY/hC/;ғF:M:(yt!2-akҀ'~NoChtAQpE hLjM-+9~hqԫMݴzސͪQ-F :Ct]]-UC f X?f->+b\to%&W)sR>BQ3[CRIȉ/3l(/ g邚3>U'-7!,#`jͻ3j 9ed$g & 8 ;d]f420U pV4IrEɀNaS&}Vb$` yY*μqw/"\Ŋ5;@}q 9}# to:Ӓ? CyQZw`aHaHTR+҂>zAϿƑH%8y`E$FU'E$CigcYIuHаe#kJOl5'Yo>\x?i()?گHtQ5[0V @4[pg2`w;XycGNQ8o~x{➞dJgHSO]-]ovA>fj]VOƁlsxOsL'1c'FNSv Ă34ïMyDisF駷&B*n_Bc_GA+BC 8o9] ,XO]vzЁ@ЁѻkS|S}QCoq/[;h _=ɸ`Sˢ/tpOs{kI=Rm:X o*c@W"G:h}%8D\r"FȈ-9Za/˜C `+i CX_[N).D2<7o :߇!ۓDLF34 : R)ͧa# UʼnIzB' ?Ϣi|=5@ Xȣ@@;X+jלpULH}&@5Mcxrqw\$sŅC5X0!es&B!,+*djW!vmz7, HApdvBK=ݷbM%^0v*(U'2,Τ˒GQK-VR9QS5Tz!ln"v뢯RXΊvb I\xMPPM)Dq?X5y.pxWq*XlIJ@% FT=&X_*DFM-[qΩ%X%ej5j.iCu}(E2j0N1AC,Ť\RȪ.vPHf N󠝰 Tw5^NnFjStI)=`ʊZ6S Z喝y]U}<#x/3Tz$L0BUf1FF%M<1i[%~q8r͏W?5J|ӧ7\xRo}ŮJTgsA|X6-)<w+\3Z]kPn™cR4WCӥ֚UYkB= 2R=$™3XaAN Fzx9e×'W0lJhlfЩ[MvaQrG/$9xUh\QNs0+ʧޘ?%f%T+fb]MBܹ戵X„HtB'Qg[D$Hsma8en(L&N6AQN2z#,6s+.@,) ERuF1Ms]GL )({AtRzWڨGT F9 hN8֗qiחPrX[;qifb|Idf_MbҸR:ѸMX2ĴK9B/O߷?f8ëuL~)~ͽ4M˜\';Q瀜'灬9lH)cyz̅"ϠH FoIU,-Ҫ{qpN;i`<սa(bzϴR%OK49.qV[LK6,g!@x5͖֨'2F#Yy<9fO*04\q<4L-E5`fNvXl og]y;"dnbt?<5Ewh5-ߙ 3.8dvi{n㰚hL*  =X)`UHt6H8taRR̊*nY endstream endobj 464 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 232>> endobj 465 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 233>> endobj 466 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 234>> endobj 467 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 235>> endobj 468 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 236>> endobj 469 0 obj <> stream x[ms6|;1Cu::N$Mcw3n?m*K$_ E@ &UzqX,}XOM=^o}~^f®_.~}~C}};bw˧OYU˛O8?J%+δa Ee铜O\ѯO<:ӹBq9-LViPTefO.3ٲy曧O~o*IR$o<&#C8kUFv9/WR8˺OIwO]buǯH(2]Ќ]NGz4[,ňhYWGjtXޯv|k"SƞG==D%a,r̊\g0 :+*C;pŸ+3*1uG |K('O31t ͎G)zwKV ,{Ҹۇ֑c.Omv7A]1kTqGzNia|| )Km/ ($U6L(|E)g=nG h)🽂V';Q#*  {Ɨ ͬl!YHtb3[YT=#9Zpㇷ))y3weRWՁ"^ruzt,G˦^7 X.7S\:淗p܀n\2JYdEE.S0e1_7S<ЋuQO%w<.h>GL*!ekYR jrhCƤ]H)$E0"7"6"]P@rHmӐMD&I#$?̋`GbP*!=uLv0  TW:z}-n_U+B"a@p4M{zcwӞ̆di0J0!i ;ow7HW-|]ˊu,5!hTc^#IH)}}Hk{8ndr<) M Vg S䬄8Cne:Ļ94aPB@<:vC!`{@ @B`m , a#34@ Zv*D=m7_U:65VԦ%A 1HGڽ{*.p,aHVs{B+>h-T⻹yt7S.Lԭ Cd, YφC a8'4y~ii!6 <}n8:QeOAP ނՂ׵MwkC[><×11qJ_0zH h! 90bq%wy{a@x,Nv"6< 5a6<\&k5!aBLӅGj4jV߮~9GR]@cJߺ 8w"iJZQ58KZU/Y=KMP 6C2`Ѣm5ԯ!Jb)TT2 @az;JðE[pF-Thu3G{Û)ҫI"3?cmBLR)zTpb;hɔ䖭(6v2r1AglĢUZF 3ew˥M֤Q>&]iGyڦ l $}~qN$y>֚ߞZBy(E>8&6RϺ=0Vqqрɴ1ބEtOǘo%&=&Inr?-3)`x4bvBJR9 tcms(j;%-7ĸ5k[lD%Ʃ;ΓvjXٍtX۰B셆,s܍x\6I%*/N#5*%RGp*}9u1! rhH9pVO0 00z-7 mҀjhI*vWc۩$Ō*"Ȋҗ]/kjbhPkbbN1z3# -6*-^fҤ,LÞaȭ7xzWIb޲xU {ͮRSF9=J/yC ^y UCx0fZq)RMl FWi5B"4oO}|}EZ{*z&nZ2TAZ زg+ ܨMMSb,GΉrYI;+n~J?֌}HvkȜWw F>y]%]?CkNϣ-[]ů^Z ؃zMQRuJyN} X9]$ xiUh`sA'TQb*53z0 j>B7ccpwMkmQ{,lbD9ܷh?nvFIb endstream endobj 470 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 238>> endobj 471 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 239>> endobj 472 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 240>> endobj 473 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 241>> endobj 474 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 242>> endobj 475 0 obj <> stream xZrF}WaIanxTɲxK*mo(֒ﷻbI\/ӗ3==:=+}2/O?e2Ht?~;^'U:E0{qfGH{~B=[n|ǻ ~c]"ߓ0~PqVkP{f'ҬH_^ PDB )ER_^%C'Ty-Xmh;s0x6Do[ "%})3L5KPyR_,^7뚢t52v;9ϧ'z΋鉘r&Em'jrm/? ), g;F~85" a),|B_{텀j:n\1. t7"O * n@+C3~_,w{s 8(` /6d풅<4߄A݅shn"3u דa:Ǫ<ҘԡABe|!@ 0 0fNHaHV-} Ce%GcÁhkO -~lqHeEP1É*w|_Yd`b+C˘2jKfCmf#d3 Pa6P - "\ c4(7S9پK3< |1Փtu2BlYAQn1n+ߥŠOܷ,)rl''AܦWhA`&aЈMEJM k>%DfPVPDBSSTA]ڢKCu=zsVU5"юS8jDWV"x`:V^{Cbu/=7F`~h\ jߺ]44)NqB-~S{SeHu1Lؽ@}T2ͩґB&z[ ,ۣ2yo d4K0[|H"J\縱5 ϱ6]LO@4I|Wv 4}=a|2;9&Zߴ@q=|E6 Bl2:MO&4tOHDSԽmfBTmjN{/2і’f(j}#݇Ҳn"nڿH,]yTLS *ݹy4mԿooi4\3 5I>vHUhǭO<'[UfŔX[|RF~)Ri`$>aﱗG{([tIzȴzshgH> stream x\Ys7~w*O5sySr8(R{(~ȑ]dݘ R((Mh|h4Ŧ_M M33vqzZ:=c]MI3_-}%ׂ4Jv~ g)Y%i %YoAǏUήOň?=}(J ,k8ۀ\&@Q+~2QO\[\ $ R$OnO "* R4 slL9|>/ <%+Mt]yׅR9FMEH4E)di j|DX3Vdjs};8H Gg?{B7Xj!~RBdZ&E4|!'r4#j֐oJrevlho(](Tvre7 +u<2ܾ45~!3櫥*˒*˾|E$?\zϦV`wGMj|ΉbjÿbFßs͖ωcYeLJދ9&lvCFEuɄ~fDLhW%- (dcYÿX XKKDE)7H<Ë\i^A>~i܋nNk S0*QFFF1:KqoBx4;tOl> YdVRrq>LfYr>\ԡFe7C#Dpa/S=iHPNh!"{FG}5_So;K>.yۜ'>ݞz2CQWrdž^΅QKy"UυA})w<66:yb)Hv+ޗę# }UA$*T:hT`K?Jq_xT ZBv=N>S-1 ;8 \[ ?DK}J+~(f ,]ݱ@ }VNQV-ǀOƃƽL$+Jd%vQR'QGGq QY6~أP Q)E)cWcƛ3}9 3T ?)Ud機D% ~{y !F?.^Nnk62at*F9C7& " j-K__iV쒮q}5Na&NvtY]2=Rt/6{O"TNsXYg}V<ќVDe8g ZUeNJG¡#YାҜ^ÔzM'U̅倷LI@a[[Fk7o|k#pzUa0FUܓl=Zޓhm|\!wܲ =Xs-cbmHދ`vw>Ya+:D6eĮ6Ճ=F(jiR<:f -k]mM6;_n1hyզiվ~ "n endstream endobj 477 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 245>> endobj 478 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 246>> endobj 479 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 247>> endobj 480 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 248>> endobj 481 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 249>> endobj 482 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 250>> endobj 483 0 obj <> stream x\ks۶|; MHv:867v>Lh[^i T\G\dYa~褪C9b7Gǣϋ貸ϊj<{=>xrt&xdQ"kJΖ:̣LLODRey'՝Q'-^Bu=*JD$8Qw1f)ˌ_n(pZ"Cn͛!fV٪H)#٪ N`2_>V|9]mKVz 泗oN;DԾ9xbN.xނԖ}1YuL&aε ,Q5|zO6&pO:pf*oS-[T2bXwOwe=s3xOFg=p.Kvcx #Է|@bF%6->I3 g+Vբm)ƍ-bm-N8HF*옦 .+rY1 =HR9Tv1%&= BLP4M.1v\4ʑ,7xHsCXİa{a# rvBDH"4&"v,[IQqijHftiЉ E*H3xv³vk5=Dfj*#$}dkz 0Q[8,}s'kXXb6т:тƊJ6%!1(͜,+\C%RBȣT;]編Bl>h_Òbq~JX5<$jmMw_FHHWjV%)$Z@L(Ƒ61TDj.t)wOP+G/q̅b_j?mF8i!<ghDÛFJq%wҸ,a3G8YPvLi z՗f?#¨TFA4R$?5*Le9z(Ճ~4nFCMsmA%my}qZ '5D [kcvBc]ӚzUǸAnuZ14ێWO^wtO/ |kɹ"cڑS Q.!  &(]ꮃ@QrDŽB{RjtR<" G%컹v/,tGS$Av#TBn}\}"1Җ쒸6`<)!eTPXt!lWߡw.^"=u eS ^~%t`SYfAJ&[qݶqͷzӥ kՉ/BQb6uX' Ma k[pX?'Cxx]o7gݚ5v3<ε$/O1vaVzI"Npkn f X:Cx1I-j"-FG?5jaZ飬{[˚}HWrf1j:ҜU;V$Icܧ82]0߶AtǷҷ%fVvlnbcvzG?|!Oѯ|ՠ6$ # ʛR>|<I'SEEo@Ѫ0oesor#iCL0vy!>=\yT\Dco\5%ˆ~uYy\^0f79A|^N)Iw׻J%͑֠ RK?Jױ&mzQ4ۃWޒ#:ylv korcK Tt+%^|5hc8==g9Gq:G$nJ1 !Hm=yŲpڃl1ݫ1b+I:F'FRcb b]͗Ӣԛddw.ajoۃԾҏăZ7UO}TcVőM}`Vbnj>2f}NVݺAXtߍ]$dʮi ӭd:=M(Gtj&:zZ: jкFlmjnm*~;W4ofrW`Msa6?cyX|X(Zy<0@楆a6/A>(ii&#r|4rbkMZ `kZӆ|V`@ۧg@녫d׵8s$+qė*| ψaX:bY.Xߖ4EI5^xRKݰb֖0O%r.!յjb,eE3"R}O`lPxvOrT:E4*Tt`e1|`F2gy uCɆŘ"vCb- %*S a46bRݭ~aKS79-FQ#?`jL税ݠ{8Q)ӧӭ3(cM6"/a q VJs`?׭[.?MfM;5y1c4uv*[Wz40\MwTY9r)?UlX,JQ|v/7]ŵu69Gop ȅ+"HQNw,>dL0NP3E9F;Lv$䶳wYLJ5]#^,67X-033߬& $;5?_g y~J3vR 4ϑ(AYp>]٪![UEU0!I!-m9k ҸFgɠª } sl^ZT0až0xOG={XW,KEDo` M_L״cDa7lyS S c8܋=^S@_jp}Jxy~ 2z%=wdnb+Xt `AFxEUVP׼ͱmfspA-ֺzA!*Jmk[PٚZD1%}aV 8qCsՇ\?=l9"%y=gCֱ6!I զ yAk &hY2@s~j~7/QWr86O(HS"PctϟT6}odpikm]%gqt]ϊZIS5\c G_t$Yu%B{:/*t:/AԒ=k67h' MNq?ꌵbX=9!t"G0+N%jot)]aG#wj㭯&<"aN þ:F8 "[@8X={cs >.,*9<;!"X @۴fF54whpG/D_ɚҥK ij'.yU_Kj4P)q<&;/VVu]#GWM c˃ExSױ'ӏ儯kgG&O%0yؤmN&C:qd "f. L?ˋR]C;iuѝ`BU=@99םn[+vop]=6^S]nǾetzm2ۄH]q K&&/>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 252>> endobj 485 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 253>> endobj 486 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 254>> endobj 487 0 obj <>/F 4/Dest[ 130 0 R/XYZ 82 721 0] /StructParent 255>> endobj 488 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 256>> endobj 489 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 257>> endobj 490 0 obj <> stream xksF{f84WkoԵi -Q/T]J\jf{n%b\˳gbݟm}gcYm勳o K (S/Q{߽|q{'yw|  0d^ p,׳ TO&yu⋗/~@J (% /w X G<$ΐw!f~#NO ,HHe՝H.Y!כWoY]nlc?&s8_1Q? ;F+ cL gt)gdu|$w窿 I=H "J"`+D&z`dhCeYTGDWe >7q*[\ҹ4 buJN^EJN 滭6:sJ\st#@ީO^^} Y|(5ܵr!2t: (~)r}"B=J@MY#ê?Z1X]g5bU<-2(XRJIcWc.*m%bL06]bk>Ųj !޳o#(F]Tޖ`Bz/~=isB,V)e|S48-mMX;u,vլ=ͣSOs0B]4u;Y}P4hdlȰ@-ءW5G3Z®N^%nweBh).9H4WbJ_mjqP{YLig?Ȥ{z?b5dK}uY(%.`TqRe_W,ť"`IIFX\ Ǡ0/0I>3f}; 4> 2fb򚂪w2WE**_@mv-{0j 2 ?@pWbN1 m G=uz9YܙdiQ֭nWPmZ$mjw tmqݨdGIDOo%/w޹$jԹdHzMق3=?2)@uuy^QTҵ1b's9&l;AC"s"OXEv۪{Js`4dkbmy$6왉"3۲J\J7Fb,e!iqb){ej*xPpO%PO.HͧJPC)8QЌNg ;j,ZT-vdUpCP|/r xU/t $R-¾EH3"G] @肨zl{hZ}TkS|Z@SG@@3].q5i1ʆQ@oSVs*Of}pL):Sd&qo@@eyeUevCB k$l?B=nv[Vm1?EHW]J.'hMJ#D &Ȁx*|UIj%q&є7o3+_V"\EJ H z/[UVI ,:ԛ(|!DZ$=T٭jg8dn&L9vHk44t{;F7B.]_o]nZq dp5eĿYٔc ;'ֶm <] ,~JhRlB,B5vUW G/`{"؛-7aShS§sl鎈(|Һ buCE-31$O^Z`^#JȞX~Ug]Mx9P+G<:vpQOH%`~v DƂc(5O;|]A8df`b 00RQw6+yŋdК%>#3DC\wP xy)*g0p#?Szg8^{hfM' Tv""8(PmIƍRef!h4Cg ?ÞI`<`$YviH 82ŋX  = Q2aU{UNvU g1=fohC5;܆Tbc]tϲƏ3lu4KSlZc 5~Vg3hzP7'_4lGڊ@p/6hG$:d[vyKm8l4 ^]l8n'0>mʣch%VLj}^#\)So[r#t=r}Y\_xrp}|ݞ/S~:FH Nj4ңTm%p QL# ,A8XMϊ;:?tmXSb8,dHG9Ql%h|w.Ȏ<\{q߃t/bzG*aPq fsBIyΞGڂl!TGG}Q{L7?oWoF)bt:TMrX^כ2@9j)y

#<tIPfP|Z} GeUcLW#<#K[٠:#1DzUсvND‡ ^#+C/,v܇52,a9,zx̢{iYTinZE{p#gϢEc}Ձg-vtó:Nd4 ?q"[/oWc39-`n9GYH;fbıTNI~b9]gTSDž@y8l5? gtt˷onFiYUʹ޴}ᕛ'@eC5ԙjz]2-Ė8OHl-ap2a9B֌2v ydNK+:Ƌ'=NM5, uyE. \][QƔ>ݗ1q5Ji o|5b2fD o׏}4ƥoQ#ŀuNa {IRDv_{o[.Q mp1ÒS5X-?7onD?\< DfgXI%e,%YM=q5x_\X eᕓh+}ϑnp5tMǠQ?ywC)Adqzyv'9η|s^yM>q6<4c%;FNt8nծGa2 4I3 OdvYG'#}gi9ƛYIwqj5%E Mzn%szIG6F66=d`v2m6-K# +Lb)lm2Šhp vg4~PWf/4JoENS P٭ AQA;]zIʂ"yީHCJ}N6Z0ڿi-Z.qB&z Ъ00n.6 ޻,z%`gMKUW2Mn%XRdP!AHŰt M# endstream endobj 491 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 259>> endobj 492 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 260>> endobj 493 0 obj <> stream x\r7}WT*67o*Ub+N(r(q($^o708 HT zF(g/7b:۱;{Mg7՜}<8|W]LnYz}^](IY`H^\I#ή㣏v8O<<\ TfIeR)TSeV0B4RHp!҉T&6 ]`#`ȝe?JSn8VSh- vbb)Z$)f>N.S=>6˻݉Nu1p9⡳$>`?r7oY@(%Y"MrNNxLHح"2Ꭹ=Ӛa2_y=Tù);o2`,͗+3XYZW u7֑L |Gvp۠p0lP1=fьC?7$ˊw[ LY:IlYq\`W'Ùlzc /"֊ơfw'p x12Φ*)E76s6`7 R7'ra2V~>nNQN,  W$YO`eeh9IlJ>lN2^bN͒)=LE1VTd.EE5m~zSdӄ 1E&\o?^oGಐ@ˌ<5U@TڸpHſmww7 3U7OvOζ@U׫zѳ7 e,Jlx{OvWgCVgv%6׭&LЪy-dxL0Ҵ\L7[6[6ƔcMdӮlf4R6nq!~*5@S/ <'?ku$Ĕahl@} ")vSuJcT_Zl>( uGMB@&Pm5 f"A#XfCjoܴlwcr"$bAnڲye*C&2YkΖP*|}]aeP=4%wŀSiWRZ=٭q,K}T]8nh . *xK0{ꅹRW`h,QNC9E\ŲZAyIx0as-$ m3t&:\NV]n`x~2#0DŘ(Sy c|h0SUw$L.j]ф?BÞMljoˠ>C$)&s\'I}jճ5u֜в̮Vzޡoo&͂U%[zd*kLr$, ޴{0@7\0W3Q4= 6#!XdnJox  ڽՄR͑xĮƋ8m\<LӀJ8-4Wi:ujK5YM09MzmLsd}.}NM>F5M (ar¼rrlIaQ㤰|Stym!fXN2s )$ dyA̰ H+9-WS$&Af3bu"ayNDvbܛќ*pzaO@;nI $5HQV'M p$h ]9& 2!h Nqe"P_*{}>6,{Nf{x"F2k?%nlDI޳ւdObq(tܼv93sn #“U趘 'n<"}I'p$2LThe؎RIf$WSԸ3_ %q R w)<'슌 d)$ Sa{!:;pO`8D5òH19Ozu8(k#1,1Ss$R9%}ՐEFx{OjyTp*;he i\ð@\PD&#DS?T(Lz <'d9x S+0+I4EH wB{7^9*_b@/Ɍ > Q/{1ƏS:UF`uM,DS!ьK\N3r 3t2f-2hAb4Tpr54<B(;M? ̛pv~ ,T 3wQ_B;s|%ڙ7Xڙگ@;b 1L1jxg6w&%&gxِg\,#UCOJ=tp>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 262>> endobj 495 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 263>> endobj 496 0 obj <>/F 4/Dest[ 143 0 R/XYZ 82 721 0] /StructParent 264>> endobj 497 0 obj <>/F 4/Dest[ 147 0 R/XYZ 82 315 0] /StructParent 265>> endobj 498 0 obj <> stream x]s6=3z(&MNnһMyk+m%=R^IӬ$ mWO޴m5kj竫y))ʼ-kwo?{^z" Ի<&^a%*b]?24ϟ 4<% qD )A,Hc/U{yl,f$(EP~spG`;8RX ܆@ځPW~-LRc6 n R&v2&dبFS(#a:) FHPPdoB E$ _?ҩu\9A_zޫO׿ K0A:{ IGI3㯿BlJ&@ ?pA/ L[j}^L-*"=Ĉau_:$1qpmNR{Uy\h] bٛr\ ȷ`۪EI-#U ү] ~/Ak;l9lСÿsH݆i |,ZS`"A6 #{G/fa5* ,Joo=0\{[7=_ j;B <)p;0u6nQk^t GQIؠ1(=}pF륐[4i{8V9Lm(oNSrΕxNsKg J96p=BX $:\ ql @X1 }]64GohZiÎ;?Z|v;ƅv! *b%p` C) dp R%TFgf!G`Ç5 nCcf=N0!^rE+W4qw+!vt R+l죓=}Rx4kڠl< 500W5SmXAMX]` k;(TQGeb78r۝[s0Al5u5ye 1w0M9Jͤopc`pSpz@p@pha;K^^tS[s*9>ñ?pqx86Z5RA.+wDpbk }EK  29O>AE܁&AƠpl8JE 6޺2|{YRVwR_~Ob (|; SAϒY.,˦ХTX;Mo?\~׋ձ)EMScқBh h\F2ePT)h 5fQChr)p BCEԦN:OIM~9qً$rVdخ};ak_{2G0h`;#) + EAS[X9uέ`W{I8!hzqq˚nrXYumSH^;:VtUq?Zpj~ש[tԟbpJ 36ņelu-N֓[Ӊ${M3qWܶ >hX [xŴvʺrphI`F;ofm>ƙخRv-Oر`3Pw Nuv]0{4-,@QvHXh$u=+vß;n:귋Z/Й؞ƽo6<]1Tpκ.+n?qǔZPqd,qe/cr%/.g\}Uݏ%𧏣Hu2Һzk HUpsR8U"ⳛVXс[Ĉ0}ܯ,_ >uw|aO3Lʸ9-8t*Ao6Oq*6YQe"clZ a$#яs$ G38Y CbrjB5l.>6-'"NBS)(=^;{檶ԩ0-TR e1>Bl^VS/F WU9qIg5R)qMbRt^oRC\'MБRCMT/)OLDtEtIu /Iߠ:S s&T'=dJ,ߩeP Y)5ezS&'ɖ̜hj]<2's^HJײѤGɢqQе?M endstream endobj 499 0 obj <> endobj 500 0 obj [ 501 0 R] endobj 501 0 obj <> endobj 502 0 obj <> endobj 503 0 obj <> endobj 504 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 267>> endobj 505 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 268>> endobj 506 0 obj <> endobj 507 0 obj <> endobj 508 0 obj <> stream x]o8=@V)Eht p>(TR73l&e%5m|pȳu[^6xmb|;X~vpW}o*ouM,xwq|t,4>>bA ,HUA"Utp_f:iY_?g @Xg"YPu)E RLDRuq|t(% JԿ_n QBF 2I 1d!@c̀0zl@hBn 6떐ᗃN+c`FC2Fy0R12cFc6{s߱YbcY:zov4@:q(8< /hןg5_PgJ֖ŀ9HbT(+C bʣGVúAא: _Sؑf_F_[a 0 Yj;Rc qe<{'upl noNw"v-јԱA ZdY 朒فy N:Lb$6A$~őLGGaͻa@ [I1TXP|o &nah!KʡDDVh^Ej"zND|X:oɩ?W'2* p>-[/ñ8 z@h~Fhv y@.b{9J=tD:V)?Wcص#}t1e/GY`̅:KlP?Z347  }30eFcCsE]@=YrQSByx+X 7/OQWvү&ll`:o8%s '2"uFR?݅b].}uf$/⮀$@Um;9Dje9Pc(rFLW2#hw%[}]:E!UsQl哊QLؤw wI%`%m^,Ψ%\.j?{ ƹw26 Ue9 *GʲlO Tn !ջMlvI==un&i.H=A-,?¿V>V YR'Xfhvrxx8\F\XwQg3bWjUmQT|[YަD-x0?myʫaAsoO.֐C@I[&#w5N(ۼ.O &$Q2]w~-8xM+4=u+#@YXxfwTݯPFuo#cբ5gpzhkK3KT/$rY4(2dF&eo%b]>#3zJ嫹:|2 J؁͗KSc m[n*\7㯐آiL!A8.%(Wѣf"a^rz -_XxHJoQ–⡰ecuz: rDka6EEmi`|ߙ*\5#5pkffIW̼؈$d8ly}]ynߕJ@ڪ Z wJCPuFuG* j.OP#/p[6zFc}R-n0 gH M(y]RLĸV|b!Yʢ\WGH5vBc&"g$Y᧏Pt yaWvg\"6#F7)PUBz{fhճc&X`bI=m +0DAWi#lsU> ^c;[4,EFFwLlu+ 0IR x@}N?6;A}ρQ{ʕ5QDl)w}ρ>⢃r^tP)n=OWg+nO(UK \LYry(jZ-g z{X[i~)OIjOy M .1(Gdlah:}֑4wyjoP[drfV>Mד\3,#/a*+YXÒ;BGiyt%wiBX @6wփݴݴMKݴZSi Σn>Gּ`onZd--_n pMn -y۴+Mm&M7UɘSC&~`Ae`8jbtt4})a9+2]b]Yf ;e'LJX6\ Cr A}j endstream endobj 509 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 270>> endobj 510 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 271>> endobj 511 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 272>> endobj 512 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 273>> endobj 513 0 obj <> stream x\Ys6~w)WD'U줼qG[`q$n Iٛ8$f$+qe.4}DoբO^x⮾I>]\mw_\/>Tͦի7Wϟ]HgJϟ$?$Q"URp \Jvϟ-٧49=goQ1\kI2+0*3%񕰌?[xOK$ Dj*"لPA xF^ЬZ d |D_XqR~&&|h=b88( eNb/\:9!osRΉ̉x߁_Z)VPz(ye\|`ݛ$1rxU: 6g9pN\d'?<>ʎ'xBcʨ#(ͦrĕNYB{`'ؗ>Hq$ ,WјZ XR-%ȝ A4fSHwXq۪g,_nJY(2;Nvdhr؁(ẻ|g4}StWtnҳUD;cNrw@Ƞ=f?r`9^6y_]Ϯ,~ cKWyX-&m2d8vObvJY=I+̹cLsMCXF|\ Ӣ:V?*a|!# δL1{@VBdwB} vGk|eLM]3CN`6wG4{!y'4쥾8=.p ].҅H(Ʈ.U57uJUH(hCrPQ Q؆C\g;T!.r./ToF@[,mRtXNίC P2J<(ר. 'l]Uu1 ]k+ Ffkai#Uk -ȱJ톥mlLԛc 4p/j+|:ya#NRU=.d ||Xh{Mqn+2]>M,Gy `2=w֗b?(pgAvRRmskn&RK'1uL9]몺^+SR8a$l. \~G1'5D8kc !q=zp9eT ˞4xqzn.hRe3ES{"*ƌ>Mc`w90{ZPQx.hV9,޿9"BU^,qoFy3L>ct g Ν@Fg^;%aFZd9T1<Knކ&x4w\ doE2y7'+a9lsMx&<+]xúWm~Ip;<8ղuhY׸ Ԇɴ CcZ3T?unwU2'}xv`wxt{z4mCcVG6 #DƠ ؗi"%`½ ]5}ۧ;湯h~,AF}U(AQjՐCncΐSU67 ͍ FGSaq>7 _^y' ]c{]`U{d+hj1/NE>mUiK[&^0dkj>гIEOf>}l؞y OV{'+:Tb1ѧBr5wuB+Ye2s-|&0JQK,,ryը3lHybލR\#n KsKh*;  åKJ!RXrM QZi5[_| Ri[i4t΀N3X]Ÿ %"37PVnqQy`5`~1sRXdI""}42Zm֋^)@JUHq F wUijm}0HFY.k}7 jE)B/izojn4;Kt*Ev/mΠ4(8ምo60",]AL(ahWEZ|5#Tȩf Sm-&Jo4j}֣Q`%$ l(jeP\FjnBchUmėf3Y# 8PabPaI;+w|߶sB.ޘV͢h|,8Dؒ3q^XW[rHgaKqX$ ,҄HX,#S`TELǕa,4 c(D`$ 4҄Hh<#7@R,"i2$9"B'DJE+0&nHL3w^XL)>brݺΩap"'y'Id8uHuF)i\x)rs@8_# *'Z!`T_?o0_b endstream endobj 514 0 obj <> endobj 515 0 obj [ 516 0 R] endobj 516 0 obj <> endobj 517 0 obj <> endobj 518 0 obj <> endobj 519 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 275>> endobj 520 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 276>> endobj 521 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 277>> endobj 522 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 278>> endobj 523 0 obj <> stream x[r6}WoK,u*V,'͖h7@(Tp({kn$0pDkg8Dovq[oڶ׳CuXWb~&zyG,M"=>bQ YT$-\De Tf(ѧ8:5;`&f'*3,jN,)0*BEO&>>}q|!4QAD'*IT?!=2R %d€^񤔴 3dL|5Ən)Д\5-A*fR23-@ѹ- YS|U:9q'v%Kdҳ3=|Df;X~T.zhOdH]Vhy|Q (}7q(:Fu9㏺4G1yWJ -W``#۸FXkri٤<($Eϛ(4,N `:fU$1"{f(o`Grl8F'yndOlbIuDMcTY qC 0Ɨ_f%/;nIۊLӌ ݌Oz(58|eu<5?GiwҎm;S8. uO&zuj':~ZՒP?Ap~njer@,,Ig ͥλTh G?.h;ˊzqwHhCD=<L*&Mh,ieBsTE[ BP'/yf[|cMH[R`'͛Ej6 5RCpL&\@+Z#4tWcD6Ezj Kp::c :5u?fz5rza[5ЯR+YOaLy+hnf*䢒Eq;GY [۟ P/+tx ezj0 *M8w BxJ$pHrC2a)eT yjZ| 2g$Ӫ! =,۠WSUb Uh%Ϙ74NuzL z¥_ed` U|Ee>'C3„H4aAPr` =.1<qU2e8|3#Q[Z0`]nM_:u)?]Iy0m$`M~$wmcȒ"?P'xGBl6!7AZLDΰ@zSP5j _nP׳j O1ڒ OzM|e{sfzEDw`PHw<:+BoajPtgjDVCWS4-0u`3k2i!  4!!:Y 2uxOL4ů+0NarSzhFW!v>ls2f^Pt9 0 `nc?00ftȍEz*"Ƨ҇+`@QI_NθYoQ>,VV;{җWD)Ra EL3{xܰ4)} H>D=9LC=e & җLҙ?SQI[9)hw)@0(ttЌ,Segj@>}F/vWjxFhYND&6j*ʋ @id/8[A3eΌwD;aU/BHc?./ka4]Mv;(-^7bϢ ta3nw6d7nʮhy .LOHbb@;}b )Rҿ8E zġW/0O.kbH^?,e֐[un}_8]|荧fhl 2m +ECxi)wCn,EϜ 1;``6A(4aM z]qUnF`H&\~W]FNdV1yKu [k]Kl}kbtuR_QiiW<u ML; jڧBql!=:uóAU mC6A ԳCU q^,ħ= endstream endobj 524 0 obj <> stream x\ms8~;j*f٭ʞe\fkiG䑨_w|IDFF |߬oU/ϛZ}oO/vxy~[of/_/_?{XEtuRϢB&iB&REW@REw~4|S-]g3M2`Tg.X*L ?Yn{wC4QAD .Fdغ=2 zɓRP6c@էfihpVY"`hu+!*"OP}.鸵!PrqC˟Q-WQjarn1O8aY\kw?fRuئ-wK-ngY̽%{UYfSޔ;̦,ɍ`"m׻OB`uz{-Θj]fݬY[x{H|r7Ey3$[]U|Pv[TS( e'~-E[^V# 4 r@Tw>| [˕/ dyŸWqOUY؎-~?lulHG\";| e5;p_6m t[E~Y&h:(eZa boI}s$]ș&66=cРڧ{M]m,n>PƇ~: uYr\h_*,T|5a:G6x7Г7\7*5Bz1a_0G&3.8+c9DK)l^s6şLJv*""Vtyq$wÈ >ԃP-a21պAT°4U?Q-idp‘1k#ԓ5cB‘j3H'I, HSYs*NȌuLEdV"ugȤ# .6͉ʒ%h8_8pձ#R #֎dFHG d3DR?~oD6n?q07A7pE[ʾ[fյt-sK] Mv6R9+k! j O4@MB\L 6ՎMJ-V*b#/o,@$Ss$CoClS" P~Q5J9_SfXLeݓ"g1m`)[_P5: W؀+\=[GKB,ddGPr#T|dmǨk{[ QYQ0u`V I ̳E0O| gЂyݓ`"YP_9I`>op:. W JTp bm?孈`a/,#:@ Sn -ҀxJ)oW8W-r^1^54Q֗ uG|YB X6|ǵ /|uq]H|;^j-oEt3dV>zCU͊ t'>eA;Ny$p9c9T5%t]MTmsp.Bf@sީCX ?KAc0YŁоZqEk^5bA2^"8̀qbF_dޗJǾ.V[wU]o|ۉyt2ɤN* c*’/3V% <`-?nzKkT\G!S{26i&2Ptb\jk;Zh~ߢiAرiA*/ia{!i/N@= ޽ׇ7\x򆧪 Y̼:Ȁ ъͲ Y:C6Q lH|8JLvg".G^Cif TMbM-| Fz>wc;@ob:Xq-eoNCU'K|~~ S wALÐ7X6Fa4 *6a-cF tw4A?x/. E>0q rh/On} YepIgy 'z}Xd/S9.4y;}j`iuμ{2F`)&. v1KЊfB0( םȱi'/?\ xyy3'0(3 J-v(1(AYxADq-(e"m8! b& g d%Gm6Y> %&{r: t aBS،0I#[TģÆ\f,z -z cx$E/(OҚ}"C/Gx"S.~[^~x}~uF4js$]xh9u_A~/SfÎOxrIX/rxE_}lpNô=ICjtS 9OJ>2-p 6E : 2j.VrJi^mB4UoKbh֗9t.d6ˍr{2 Rl1Lsn/Wy).vVNY&վ5+eNJ_}R8gj!;E^=<ܞ D|RoM9.W: NocKgy[q(ɦW0;jK9V.Y5eҼ]ox VRh_)Y#e$@Ŝw1y&,EcmC?#]U[7nFw _~Pm{wv%& ܫuxWp *EuWǠr\~Őx%v+TH^ng&mk K>W[)RÓ~jϡ7G}UE[hWh3R4z[oy`Y^-AqvϋhTf" Ab ]8ɬQق,p3+D]Ъ~CZ;Lntֆ$M%Vz_.*_]*ZȻbɪN@7^݂Ze ^Љ!^j !WtMUoqyx=7xveU9QhW[jЩstTiK%'+}wd9m8jnnӲSW8CZ5ZVŰ2´ Mܿ>/Їb@k jax!xV5:2.,7Էkoɤ5hUv^FxZa(l821V# '0xP>pJ?84ans6&Z=&3m/rZ> ZI= ƫ'=6y LkFz~ȐxYv{ 6|ZW6IƎD a2nU ?=eⅰ̶J"4N I9:7v$K6>|Ӓ1J\{&{$"n2Uṟ\Nui(L&M endstream endobj 525 0 obj <>/F 4/Dest[ 174 0 R/XYZ 82 535 0] /StructParent 281>> endobj 526 0 obj <>/F 4/Dest[ 174 0 R/XYZ 82 443 0] /StructParent 282>> endobj 527 0 obj <>/F 4/Dest[ 174 0 R/XYZ 82 443 0] /StructParent 283>> endobj 528 0 obj <> stream x[s6(ebxe2:n̹|xpu|t`,]}<>⬄պ(kV)]hî>Oo x|TOW^7?]O7vxF. |g+آ) <֬VBij>>;>#2DFX*e-bt#2ԮGKUpעhUeK_\OӎIEkmoֽWRd(*(yד7#m=BscE9c0>/߼fe} 6j*/%pfU .*Uj-#vz@y#jL׿E/gHe{1C7mtu;գ!CF:C)Mf4>d2FJqծ>H4=Quf KmS?mo9j߳9-Z0ey"דU㾬n"OU06V+p6|7[Ͱv"" W63]99f6jb#,leϳuz~6=&x 89ULEUoqk~]sx Y1y:U0pFcǩ7}1{YnJ3 q"#t̿]ظ1gde.% ?lL GZ"|Gt08%-85tGTTwKM3Y?2ϊ<_<_ ;%a@3a٧eNF{Jߗ %hP]Z̚SeGln{޴<:7(|Hi ;'1onR0h Y0HUϱA`%ہjSAR 1T11T19jCJvxGbL*G3FEU۞%뙵?ͩh歘q [πk6}N"gf y|l8hүPsgFw㤆MNY 5v8ǏIe~>ހiԐ䅠 DPS0֛!ƾUXm&5 Hs1[IޘnC-2a*Q~;s4K$0%>/3'N+*8ux*/ JNsSAJb0y2zQtDJ+C)*ReJiA]f|+._c-Kkۨ9&؜ExX I^E`W։Zeq*Q6>4[_WD\X8XjFlW4`Cz)ݐduQ-K.YFB,q7{]Aj?⮖"ժY-0\ Kj+o# f-gnIF_R0ҢL_Z8QUɅcmTi8ָ '$\{eANN^& |n3 {>ik{Y@!t/H S endstream endobj 529 0 obj <> endobj 530 0 obj <> endobj 531 0 obj <> stream x[[oܶ~7jYJ) 8vH4qq>ȻWrwI̐ZIɕmsp!sr.v[o|r}rpW|(u]6/Wgɯ4)rvquxY q$Yt XٛOaכÃ]ӯÃ3M$0Jtj3Sa&)4,\\'l]\8<KD/Xv>ZIH!jpdL9|1<+TO?l)0Tf]%ѺJ/,x">ޔc1۲#5llV٢\?EGzv*OEsQaߝ1v,k5P b.2kc9[݃9nq$w[eM$n0C%Gzwc*|1g'jD.x‡(m';_f Ő;LI,bO#ŎC.%iS-B-l^`#HAkƊ,ЏZހ"L"Sb9/i)%g _Drߕ@l2aM6s2f{۷jq;!  枬q E6+' x x= W Jv,uSvMgxn j חJr<ҹs\* L̮jka] 9qVǦ-~Id =sGG4Ҏz4>Jq-Z%az:ϊe~khZyQOE[9S>`؃p@`yC0*=|]5:{dZcޖc@9>6L[GwP{:in%B@L*Si6JyMROA ێImxyNժO Auw4QdA uzU'APĂb+ ےݝf&g G ap)R+ m*`& 2l-ŭ!"pw01.q/{GlEQ7'cHܗ7Jm=[Ĺ.۠5\I>PQ,Կ13` ?)s6n 2EC8v07.e}!X[/"kӧ!mB3ur&wp%Mc U\lfy=Ȋ"{0G9c,Ua~D MҺ!vusY7XHؠRil!28RVL*=a*ﱉO{D֠G,:œB2khÕε:WM'fIkLڋ03y Hx >N <\?4sLwq0@SPFh! huj/-4!Eyg'|h!~s RRC~z7>(MQ#z_F/|H g~[^FWz/ H=-ۍJG)xp*g>@ x{(PAi밢GOkblv]_9֫Cթc]AL<5ׄJdv'‰M3 ruw[;zˮ5rWw)0T,62Y 2BvѾz m;x|q^\V'"mmNӃmq<n7{Eo.}V!W O5k@5v;;bKz9 vi甋Œ_vAuT/lXŜT '^T$ut)z鞮}fϼfkI+6!)_Z]zuVfG JP:#@x`0A=ܟ0WOi, &ƅ> ??E*OpEx3+)Eϼ=`g269dP'n;bp&J̐Mh"SG(8 7Ct_y ,CoR+o)Bv u&鮬;xQEW/(]X Eq; E· G?Ǭ&wBQf`n\5XPRK`RޟS$ـ2j'ה@ZJk3 g3n#a{HR2Ӟ endstream endobj 532 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 286>> endobj 533 0 obj <> stream xZ[o~7t+ɴ(_H 7qq>- %Wbߟ!)rEvvvn;>ywŤfz򶮋}9e7'˧N?'Wl(ro^'qY$cұ6.?ͪÃ+MĎa׿\$(։Tq-Z8332\JUyxpߖ4DAT-|t;d]*@E+Re_On\ǎI>6_dm7֝WBdCQdcaBλ.ѱjv%|Nѱ;d5?: /vRQ4Je 3N08pΒ6\1Jf])DUYEʼnD;nEb\XtAE D*\7D'b_*I…fp zc8I- k)gj3 t^mmkv3\O/cZ%ZZtşl]K8f = 3 ;"o)Gh4 D|.^- *۟H|Kb5/[E--~y'D~I4clcñޱ"^_SlD#U%=IE[g}e!~D1豺Ol5 }/Q1)^Uxڜhg>[ pO˻*'`/$e=1; IS yz1aTD ͊tNΘU= 5/KD`Y J0[ xcȈM׷?D檔7ZopmyqKv SҨ6_6"ݗ(׫e'.<8Z,÷Y:K6̷9Jv>v{)۳8Y\u2pG҅44 Q',[#pؚ;Pz `ҴGf3༜Gu/!JIWt6[$08vU ˡkcPZ$شB@-ya]ŰUnly@XaWy+B;KzV:^|-@b4 !Kw7P%%k4{@X|[NټwXtE]x{8>ai nˠ#SQYU8$)ARް_Яq,2&o.ί{C?0Fc endstream endobj 534 0 obj <>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 288>> endobj 535 0 obj <> stream xo۶{6/Q$u@fE Zl˶P[r%9[wwl&e޺Jyw#{󶬳y2?߼dLgf\lۤ7E'uV޽eƗ7r{ngY^Bb5}+./Px-Z8-?P]A(tpĽf@G٩;Gy6\x(V(z]2lURy_;p!<I@`3c2e4>]e@\I+ɦ]`A l-0F֓ %'$3zײL^%]KgjB#Q%].t%M$rMz}zVBظlpL˔ݾA e\g8d$܀|rtENV;6.|2 ( ='/jPζJg.cz:hxRls,)YOJG&1YL2b3+Z{\`H4 K0l*9! 0S6*h+Rάg]lfImy>'[|Ucq^ r6+RURo(+͛rJ N*-ՍBv/iè#3fH00l;MĭF茭=4 x [i h/'ݚl}g=5_춱*%C7(6s٫^۬N (9䦜|%WlCN`aRكBIxPqþt=Ž)ykŒ`Y\C]d}Yb y˳k|/鵯`;\`m%=1Ib5ZOi!j pgvuY+0%e3,mZdhB[ a42LQR[l0%FQlQqwbj>SNt>+A(& P?<6mq<1w=Bpuﰃr߄.&7zpS~PZcP:˩f"PPmQCZQz"2+7+Rnmvq'5&J@;h Rԫ;0FWRxN ms=P7$cR&X\uZVt[8L= n+|C ˞$3a5XdtBY bI,!^QXèkS$kmRR4*qxD2hpff)e6IgLg>o|o%Ӗ'5T+ܐQ"z뺗%_͙.DH =yIjQة:Xt4 }O5M<щumEΜ-莓NQ%lJGyn WC"ss{JGY/:S $W<fG>/F 4/Dest[ 100 0 R/XYZ 82 493 0] /StructParent 289>> endobj 537 0 obj <> stream x܉dy9(}) 9TPԡ!-x!(""gPJ+˲?y҄ml4io|&5y1h>~;<50PE#Mjvxdd7}g0n 7DqS\A΋;FAvKUE%1[%'߿B$z/@̡ Ѡ Ѡ Ѡ Ѡ Ѡ Ѡ Ѡ Ѡ Ѡ Ѡ Ѡ ԡ_u<6;O0[K೐zv$gg/Ҙgۛɜڱrބi4OIs ԴnVI+YTs~۵fInhvwR$}}w9+}ŷi5ڶ;ɺ[,/ظ}2G OJ/K 7$XFUlg>ЬeZz؎'N[Z?tqB_jo-x3ۦJ;qNj+% w_Uc}I}Ru-˪;_i^fI'?Kҧ_KYK _n>\\֯sSU9;Ʈ~s1ez̻O,nk&n*#^۶xڄy+wKnmaWI'ؑ}yK˲m7sI|J8yA,Pxwu~ev)c'%`4/L)J9˽.|J~+ Tlu})S.7^>nx.:o,e%u~2j5N?x@iq~Eo87^?_r;/|K|8A|[,+ݮCAmva_x0xrЯbfsBV# `F=5.h~׉{_yF<%t=Lѐ8-'-gou6N({>7o͊{F>w3)9_Flhu-e˧8:'gG3{sJ8f?8oHa8:'W:VJQan?~*sQA?A?A?7k֟/G#Mʦz ` ]N `in.D?4jzwXVjzc`uq'Y/%V\\ahЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏhЏh?b endstream endobj 538 0 obj <> stream xKqsmn(23`Zv,3P֬DrM-:SFV(ђ5Vd$}r4JijĆDlqTHHIb eCn(`&Y9pH %y0GAIx*aQ)<% " jA:tAt&dG Z hGw:Qw?d0vb <6{3*Bg."S1>O5'^>W.frKne5 GHYH 4.j fd@G ^309} .~KXC2Kt~^Z%?aOX+u+qMuTC2mN4n6ܑ߲.hi{C*,9Zq\_jPsY]m/;oT;y|1wp|ۮk^,kyvQ.8.P(^q\NeYam6jX,f`0zV0ZVT B.d2)D$I=) endstream endobj 539 0 obj <> stream xnF݀TӜ+ɶ(Zht>}eV!ERҮ 9ۜ3C+|Q?t,&]_GP T5,(Nqe eQT+TAݾ9>^i% ?o *J(!#G$-Pv1f 2̒_^ ,%UL_jdbVֵ+|`mQ$O"њ>_׋֡MN]BTN2^ I4d 4B[DWoX0خ6O ~*V= XuT+yf#[1W'%@nWK@xڹ(V|캣EL*JciV%9*-H&QV. Q eP\`|g4t_&"-ȇƚ!ӟ;ʝ|K7@4#p5Fw|e^vCvBI#;By*Ue5液 O6T:+D Tl@fn u>Odbrꎰ^w0 +`z V[^*mP^D4`Oٴߪ::q^aMߒeRLxaӰvCປ䕸'} 'wR#h6)}/2IZ&Wzs5ů$Kb$*B ,uP5je2頻 *5$g)h u"/DLe\M$Ad6=6&qq}̶:/^W 5vK~i<b(uBxF47qg t?,7<ۨ{c֙`j:K4NHN|TQ T*ڲ^c&KB8j{ c͘Wop_Z r/ f7|C/^&K!0ww^;2;}zLkI7%UO9뤣e_Δ3fr J9"6:r2s g >.^&Cr=!S0lmr^; L9~)=)BuʍQg^)(Icvvɻ6H*uV@(s:ToYEW)fqSb\v hW  gG;8lA$qv1^MT;:t" O;2:H)"BLqWpSQ0zxH1JE1<&iGWN9xRx_uHtqA$ Wdc͠hƱ&i* bP\` CȿHWƔe"ŝU÷.v|T#;+/\&<̢S'wZ}UˌE:q?%BSdw g  9cݪpTaZ%t@ KL"u {>)"H@ Շi Tˉ˰h@ J[^>pm7VLfVނY0byl'w "|}NdcUe, 8J5 ο^VJ`zFXHmϋ-=ɏ^Fǰ{BWk[zy5)ڲQ1{S Qԕ|^̱e^~p1_`/fd9KrZ=bnW| 19ys_z`6r'-6ka(l ͯyJz:aX9\Fxw>~F~xׂt?Ew@?{z`FtH;y@1r[?U R q! Bq0* a7iޅhz5Wlӟk1ٵk3Tɝ:4k(1~A ր,;tj? #}Tc7 M3rQy1\grz*yl*3!{rE~4>D iŧa!}-ƾįm+bA{A Gv&Xa¶Ur3j{ZϦ?z1siDF0`((B8~w nݢX^S`(|vn[_Gi)hsuڷ7U֣=q)873C:~ґiW7Ja͍77~mv)=ڈ!NNLmf挀l[^SbdJlxMfN9@75*[t? F endstream endobj 540 0 obj <>/F 4/Dest[ 182 0 R/XYZ 82 545 0] /StructParent 291>> endobj 541 0 obj <> stream xX]o6}7G9i")*+ qxX:78ەl1'yx'%=dwFCjU8ʳ:k%qh)9pZDY VPe+_66h]=[-sN0mbؙ"fvҮI_6eh $jM?ٝ~P^c߮EՉZyrF)/OkQM6; |=Dql^ )(]kg\"1HSX1.cq1FB,]u]/K!,uW۠3>:(XQp,aIˁ 2ͦG]b,W}QB%6oy+ }ǙG`s 9ծ-kt@OݤG -)tt&7_6׬Sh*VϜkFZBSPY3oؐEapHY.4 X*HQ,p_]P sbA'H)jZ+|Ǭ5 [0C88APfLxAFҁla#G@{9`N#{ڬAd؜+2./PhGgCV<.ÊRu.|1QBܚܖ; Խ"Y6"$e(2x6{M.}xpZVlSy}~OTYxwֶX&nҶQ,,*I٫Un`*8v0 6hjqL>/F 4/Dest[ 182 0 R/XYZ 82 545 0] /StructParent 293>> endobj 543 0 obj <> stream xksfH dFG:6;mjg2 hP@ȏݽ#:Pnoo߷wWU].Yu]e1_M]M<Worvۛ'8`8?cA X(NDH`2<^Yg`[0sGE*HT0Eqe pfQT/TAU-;?i% r𣄌+ebCځƘ0:luKЄ^/_%HڬYBJn"A"B{޼Xr^A(+\~IĆ2 2L.E8_{9ŲaN5<uWo^qϟ\g؟ g,O$=Eg#_߾0BFt֥$⺻D_ =X.>qQ zbK@D`i%. 9ۮ(v]仧XU[yyD:.aZ9hnk${6pMbEP~%2nPj2XT;OSHX2By f |8\EY:Wvwn>LZdvpFXkf#2$CRx i;JYXxL8q'X0wqU" ^C t//pE,;#JѧRl_rold}OSwŬ6:g`u l]J ZVKU-_>m+0_HˉEu5, }Jq܊t3!e Yng`?IPj$H H:";kFgY#-]diu{,ӥa" $Z\䗘x-0>QpD0*,Ԇw5{5O >A[%x=?/ݪ\5b]kVCtZ@ Pe4$p SB3h4$K0^ٿOzgX`Ùw~*If[߯HWDXH{ֲ6XZ z>d|ZY˖tL4+c &OT+1@Gof~Z%=]&8❹Dwɭ(쮬z,,},?p_KOYoJ15Do7 gWkhMJ-mr2G5Jisp ) TǐCE(dT%:a%戤[EH=9'.:S3Kx p . %~DW2A7$Swd(\f]뉿H]njiTPXRS >Mu88VTF4THt1 Dit8)Qȟ(qMeǘAY<4Kq,`dځ0C .+#+݊qk*'a|so# TE͇*4\vQ64M1 #|ا}3rqr-r\\{WCޢS@^|jOҹABz Y E?OŢ8`LTאڏKG ƣ CņB%P >TZz]+n7 m$$."j*2`iiɎʲH#(q̝! G띆ڳu;knl`>+i A;F_8:ojhSOX?b:P;j9PaC즱҈(ew\DIC'qϮg%! jɫpQ{g۞zČ ŇT3Q LdE?TMPU` V=eXl@hEUiF\w'B,#F$и7:5__i6&wyz₡zdH`k('Nj3L伻 ^Kjm7HQUЪ!$IFvfOBz>2zD:UdL'q;LlSPQSjA*kdYת)pRp;Fb<9&{G>PWrqn\@~^ A6_!Þk < L;h|i (K>؏;-`ZHk*>n˹?O.@1^tC5Hݢ;hT1v:,:ؓ1TmsD‹,DՂ$LD~x;bo[3 vuZqM1x)O?qўB}&L4;/nnhX<Q9BM ^ =;0#ëb(e6IX%YE)5"\TEŒs.2< }lCN>3g <WV|_pA'^'EbmNqKHquKb@5kչ2k.).~%Rg%ָ=ars2LƠr 0ral~ {ZY9cH0F;-jy(c*K`"Ŏ]Gm(Aj*?OMoB{m [^Ų^۲~όN.H] !.PLaZۓ~x՛j$T่cQz:RSr()H8 _I3ՠγ]XJ>bnn\x71)Ε)]TmR?Ϝ^m9 +D‚O=Q ?nX2 endstream endobj 544 0 obj <> endobj 545 0 obj <> endobj 546 0 obj <> stream xZmoFna?R澑\QuҜM*Shu'Q.E]3CR䊻4EiE;;;;Pge˖ʖ->[l?[<=gUUmwO(L [ܝpF%J:f }Jcv;==>>\l;[=0B CLg%iFih43 \J2?=䏆( łQ;VdxZae(;qxx˷A}_#HǼ=B)nm1FE9B&.>/B . p0I]‹h6O!+fsܮW_>N}}xqEV%xN$\Q015sW |fݬ]O\(y ,&@,zّDg?i3ʈ>ULs\ ϏW.6Dzhc eӮ6|:(*Jo@Y}¤a2tPv;?9dg:m=4XnAUAȊzon JyE>yʁ]0avc<ˬ qw~w87Eu![J潎{آ+ƴT4% vK j 6 :':\p&TEW^ )@ 2ެ^nnfhXR ISbFZbY@7#"c4tMdd$ZKdcY[jO@v (|i ѼK/dn$6ѽ~}G 1QraTnֳ8/v_T_SBj MsepfO:3vFj'\R4_fe]@ɑ^#QQ(<4:<-Wxx|RML<Ƨ/V!4 /AʷA*}&9.9S W3sw2U{w?w ߹}t`n lba@ U-j_;o{I} FN`t(sm}q K"Lbr,snQx7z_-BZ7:!CD;VQm0U^"hnmG6.wS :qɧIP޲s2CVܮ>lk/M-V$~ Ǖ87:bu -j ŭ8M> Y40T(D׼{`4$b@qDQ)\ܦ 0%fB R`rWݶ`9IY/}׼5A?Qg0&*G4ӵR4hƇr> stream xZoF7a $sENr>$(DۺZRJҽ%EK1URrvvg<;/]?ux(l:_mz#4?>:{#,e#bTGq#m| do?fWG1ǟG73v50# #Mg%iaL,J5Kr) D)ATmBt2TUBKq"iQv1狛yO^l({v݂l-Gcd}QS}Qe7O~ZFp i2|sr*g(]Y "Y,i?V?hjZNY+#4wXO3庈B)#T} fتڪ,-C[47 7"_64_VU"uC,d[:<.ޢ5)%AYcC2nPc,QNpi\cy^e穢.UHEp\=5e!E]= h/ZпruG&5&b0j=4Sh5(.;Œ-hO:E^oC*mAq:Mm$\ iVЂ~e geU0Zph{; Wqa9gxfS˪=R< L?m!7CUEC524\RI8eyV~P g beA]=~^2j#; eEYZ03*]$+èyd<\6A+T<J9h(pRziTsX?G)zAr)_Ōc.x8HE{i :l}Q/N)sZ2 !̾"y{u]b`_Pel㦍`>}#i㗏`25~c2M)~}Lh$jWʚ$p4 OWh)Ň'|x[^DwJrh-SfXl_h4{vh"2\{L,sy+ax,7HLsUl5.i(|Y}O|Ȭa\a]v_kP =!fZfi0 }"wߚq@TL݅!Z>#Wi(jQBKCɫe Lv.(wgA!((zj5&09t)<Sqkpe8%{}w:&D)'^lbgx'Lܦ?-?cIr(t]&7 endstream endobj 548 0 obj <> stream x[[s۶~LM錓ح84Qnd#)E%]@0d")bv(Tuq;_OzX7xV~x%?0+(?޼{8 K b!X0eT dwՄM`00'Pa XrA`z_#HŪ_P$s$+v p#J yŃL`c$ _qZ~ FRFfvn T7Bv5yS%>y%[V8zIٌ(|==UTw2;}Tߞca;2^S'䇠% 8*H2uEN_p/A:5;U< B2&sF\#GB8 2z;PI|݁F]ae;'Gunk ĩ>DƜ۱O 'RIi` rNZOhz2qu}8gOF Iا0ip̻vWdYdƊ֟4bzU Ľ -c,M/]`"θ&1*3z5YOd,m+&Es ƦG@kj*@JJYi?l*'*}ӟYsq/'.jr[& -X"ꋬb< ,ZlzZΧGj2K$lڄ z^>oRO{yqʼ&NI<]Ėw$jZ]ypNcu; JqCH٪bE}^JcMTnXl'li|"]'r Z!tv2hȜLC + 7LN9]Mfb5 Ȟv'V\%a=PUo\,HbSs݄S7^ױF pE[9V5q36gP.Ⱥ4u;2b V-RĪ0؁u^m^'nL( p"A҈6 :센oVӣx38# njN'91)wY)pXZ.9i1TUi+9l`} .V&~ .6uAzGeߊՊ]礪lVuYq_ͦF.*&-!tNG]vfĴJw݃j[7OgpXڜ5@cjxc)+ .Y23AHg% TWC)A$6৪"U.9CE#BF_>#T!8Baյ$EHBSm.V5?ڬ!å1؄t1;j -W[ʑLpkey?e %o}z \H8ݫ5Oj-J{vNʰ\h?x$o!lt_hM^| +Pj1)+{?S(mWx$ [PYBig"{!K `-7׹UJAﻀK_j۳S!wǨCMЍW=M2M~!lAr%2ܥ|'3Ē$q}U6GD3G^Kxw~ ڟW}v1""VY bIicTgsK=zݸ{D>oόkuj$/|UT]i4لِ5 gV^Imf {/52.ĭmqe@\'91[d{,}%}~^'p'%m5 H=0 T|j8 yŷպs#yx1_-9qw9yo4 > sn.,NabpEL H6a2EL_|:soLG2BE{Cs{C7D2ƤG{-CWۺֹ"Œڥ%3`[&|( V5GNs+\\%+ |Edܐ9%!++ &^\瀝^/"{.078,+JJvbPz+iMnIl88P %*]GU/MPbP.Gz0ٓov6m.ȝ'd(bL5IMNB1—{bTcwq'$pa ],˦ = й X1^ܠ<Ƈi Nا%Xˏe}APsc Y?G?rimVx#8c߀dG晏Gp# x\stdq|oyO"d?(W endstream endobj 549 0 obj <> stream x[sDOUy64_*ej`=1KV=fƊ P_jl֋eþirn.ŧMh6uo78K|}~MY$gTl=?K'x{~vl70=̉U3):.L/\\g*bخ~9m-l=-AM%Lmw E`DE!Do4m+(ܱ %j@-rEU78ietbyy%h;QY6yGlBalv!ͪP~K8)wK+ΐA*\={ M$jӪKvi%TzM(+a?K&,"! q弴#;Nh 99MNCy6?fZSRg`H'fGewdn[a'!)00!$)WЩ;߂.Iә5DwnGiWQp)ǽãf8h鿛o;H/oϠ398z0oYAN l]OI~fAk Hv:xKb~trƍv ȟMJaI#6T%$\@C4.fÊ`p6V=޶ gվ e1g6Gw-:>';۸$O]/zy_ηsIwUuĔwe":3?>`/w^upHHR]~^xM&f[ݩr]ʡteJB/uoxԛb3d3xEmZP;J اnB2 iM+I^tyeO;'a OW2I5V(*L `'qs{nX9 +v_o \QL; ^ T0]E cxqQ,,Kl[n"-`y20U8!XUl\~w5d@;\Ӌ\tX{kVM#d&ܞGp=kHpW "f/HD?NXpx{̠wOQWq,!fns&MI#b2 t(ԽG pD੝:P>ƨjmA[>4]U;qY$#H6Nzov(Wr-ރ8[La21oP|@@FngyTRȁBՂss*D@8;t H>0D][xuK60 &9k &\YJdD(]>U"LĤ+؅ӆ 7LTff`:'e~|@ҡ>i0IsP|"#]A&:A;yY2x|)h w`4%pȡA ٤:@zN54 A=D H*ކNaBz"$Xq}9*@CК-41tJ}"oL*YB9PA\ɻX[Ge]Ś&4 ],V.0bN]IG@,cU;r催{e )R)'yZKXrJ:AdPHf O.8TaFéTǬoX]xL{"]_{I(C1ĹEջo<"A;k{"+ߊcU  )99fr-zH$X-c>358Hkv?v|462&GQI.4?g){i]q=N5-{6]zU+ѯxf"0W-J7R~pCH;o=DUP8>) -+zRTn}h网Kt7 <-`AF}tCbuXN< R'Tcy(V=~JL&?{}Ŗ඲w0Mftv{l2 dD' O2W\NӞP8ϰ0٠1yp=ž3Q V/m S/txf"򓉉#Y#7!?Ъf?)xdhS5e*WԳ/<'t/7@2k-z0 =Ÿ^!j_,\GxyUA;ۏ_㐢.%}hfl{7(x'P]vo"(s|ueH+c|MO[D^7>SUи^~Vld0Gvv{-lFsxؖ3`Q="K|k' Qq/{{Wq}h/EP-%ԃsG/vW\ծyגrF}kUeKSٴEޛ""XXR 7(gh5^&Ыi(ҮVI%{{PYr@R &Z"ww[zG]9n!U>4 |> stream x]SH*<کX̷E f7W)6>#f={f,LOwOM'j=/krzz2^CyGnNO\<'W٢Xϖ3r~_\rhg TB3J(M(~:>GN{E5N%#)\<$f"T? ]eHs% ԿޑEn ҲL+ΐwӛ:oR 9鷖,kIHsV10 J͊QO Kwj J$P4a>9/y(Ñg?LN]ɯ 9B BI>ߡYf5r񋱙j4A \>9BG~ouP>| GjT%+RTOY䀜n{rɘhnѺ .לDl:*I5.p- g <Ť" փy Bb]FV,^?>ނF %b'O`!F 7?W}X = h|yGbToܵ~ck6ݺqm H56i/B/ĮaPs&{RTal%3G^5bR @gcx&>rUW b^C]BQc,[s=:=`<[?,pqItE@:?;EAlv#u^1帇BF \m7 Mo#H1[vPq h&Ѹɨ%G9n EI[ypPBb$svMU*4@9q|;P"e@.60=!ƀօEfE9:dR6ia^`+X6hAuYs7mV={E x)etX JtyeG9 |pQ?K.Tf`qj g[>ī.j|k9o޳Ɇ' O>ݾw{^s>xopcw ;V avGYq+W>m [}pj'A;Bgq^Uug 6 v09̤37߀ E'e0n ՠny"]TIc\%˙ﹹ 5dzX0^dQΦ`?+j_W]@^51$LLX@"x2Gו?&e\A)F_O\9SrPT3r(U,$É BF;ʠn髬$@"x^=W:\'gu\J fp\7tZ3Y0t5{EX/_'f4'%ȩ`{nڍϤ'6vQV:駬6@pBx{/f |9m=3+ߚ!M b9V6WkBCz]B$YŖIFg~]cuvAݐcfڳ'2Ts5UG`3x%HE-ж?@Sl L[X0^ՂfD: fY^ BwnQB=,W30?m|4\r*ic!Ӕ(EypQ(b] ɽ쟤(_Ox:CCmIt &)39'V$_'*L{`wY=b Mcw}U{GYj\y/;~qwJ4i}06nvgkW]Hj^QeKS;zC?4e*[K'b%~ x +6N S-qq;f0nKC߆etґzhM]%- D+"?H=K/4>T@) GZ܆1耣cM8c[-= _c8Pw͠7#uF7Nwqnu n.O8B] 0YC e,4eCC[Xv7$vC<=r jǧՠ[8[8= c9"('Dn J۠лgLMQLX5 !{|aCF{ #B 9ܳg@1} ZQ3a&٘㐡4_2+&h/+q+ͷ- 1) ~)1xl Dj bWvh,^ ; P\ʬo> stream xZ[S9~G;ݻ; LLe} `{nfɿsdKrCI ttttԇzv=Մ\^~x:<-FnqtDNޝ0cF тReJ[ p^jrߣ|eE|w9 O{gfejx%#KJ<ˬPD&YV{ׯl%* J"ݏ2c@xVJ!`(;H|10}[Q7k[`ۭYRd(,+ Wc[} Jdp󌅄tx#1g^N2m_N 9w6q$0ϧTe8*eFe[0g˯ȸ:nq׎3]^~`qEfB`!ҼiPItALv;ͮA&wC.Q5yoƆɐ@cJf,`DcZhr'(вܹ0nNu8p ?(2~Ϟ- *Oo4}i=y;l#P5,'X)}_C@ 5YƧ V ,/aEvqvob:y*ΌYf "6woW.D9e~X= PX+c։V;}Yj Fv*'Ɏis8^ 1܎pQ[(LT 868mK ZBRhy{S}CSpaVUx\Vp&ɯh\TⒾ? T pZgIa2-ADgn:5h׋ݲbccfKv, G&획c@w|2#Fv0hә*3:o=oe.ֵm>6M5^#iێIA?ƪ6};Q{M,Oⅴ8'6[N vdZrȄ6ʚc0Eseap\peSq]%a:M4 WAVyq!bukX eJam.T"Q 8-xPҊA0hO=eсzkHE#X|5+'3,q.N*ȾΎ3|?:8$5qiX uRj~g7n7"65e^ `m 6򶚼&Z^LȬ&IN#<,-z[-AZ FxvaYz  e/$g̀k[&=nj Ci{{+p,) e~4+~S~ 唔&u`x%zEޠ^Nf [6orZPH>HGL?&jb> stream x[s6<ʙ&>Ng/$6݃Ycdɥ RDϵSb?~@ONz:k?tvS_'Ŵ].~~>?<8y/ϳʰr3Sda*B; ;Rimuxoqvxp1aGFy&avV>KYtYU*33 ?T_D *ET|1nD!UƁYhe(;Șs|v1v*@"_%HǼ_B)?m"sEQ`Ni\Qd7g_2^6 XX /rLGrr5]| ^w2{ c'x}|[wOC_yY \m~{R1.3厨Zz!,.gs. v h.QяjI8IVf5"+~{iݠU;, ]ךqdN-"?o&ZikOXF &.R6Z.H-6lt!J۽c7zg|Gk4Q ݃* _u */rOj ٳ\8(Sa磃n0&G b7nD=E&'GC=ʇ*^)3!mRPrAwU%tK%Hڵr&D4V{ zyDJKBe@gdHG@q*p0x qPpT Tlv5`wrF0Tw|$ !Ph{N?kKZ%tyO4A([H!vL`)NEYQyPdB# WK*Ȓ-i8FOB0*+"g4Cs"R8ǧ 3<I֡3 k5oI!J8S3 +J zGyIYn)0dQ_T*ɩVYAhT2c)h%BۜMhF6Ce"!Mk *aC3J>R-ҨupTVOwV#JbSj,0ZxJ 9"ӹmD [hR)g/ٺiX^#4y`+ qڜ +t7㌀Ezǖ+Z&Ec_W]b4k1r0@=ILyw%CA.p}C䬦eLY,4HkU>epBx/c%obZ>9nؒ)ؒ -yc%ol)*P!@KRiqGjqZ&:&_ys#tB\/a̧%{AXvWvA1&p{=] sbC=FXP~$_r{SA_ *wǣoXIJB\--)3¡Pj RaJBU  ?'w endstream endobj 553 0 obj <> stream xZ[s۶~%OL7l;q7'gyp ˴..E%H8j tV~쩼'f8_MzwoOӓiR(2y8=$(B&2#%TdqszG|?=dӓ+`&f'2 J*,K DI>)O$Uyzpvz% DTBSBt=2\REB^zu;RPx24ɒ/ݧ_zi#Be7uU`Nhݎ޾|Jh_-AD1#S|_W,N¿Ƿ\`x}|Imax*98< 8Lrhb=v JA(s"KvTqe;V,OR/ 4LsQ.HFAC?ZHI{މԫf  N8l374l'C 2+rSc>ִ:dJenNt8q ?Y[/}T:9~Pyx8cͰ]C 9 P_MbGDP:i*<40b\aǰ9]$h,lgUɕ3z X*br<8 G`m 1~O%Yj͇aUo*\f> *<8Gg`_(/ *&>Y&7)ʏzqw&X<՛8O_P+(sy!?zsW}  .//_J(*Z# 3c\o(jLu׷ѧѠ,XvcC=vtvvvSQR{q6.!G%Ips_w -=tMOe ̗ 3@UY bzc:(Cƙ%ˡJ7kBsx^ Se\4i&c+t nbr]B "à3p?s3( g*%L<9L/+"io 5ofIk̙F LŢIc ;Asc@TTN R,u#lfmWKXnU{H3쬺Z;ە L,T>vw:*P= e~5r BxhxNWx`pMQ/*9c5§|!DqF7ng(CcMsxHgs=(Gr$! (YFb6-5&F 97xXg|.-LW8 }@`uZUzz\;v8<6v}ZfH5걯AQ^s;Kyզ2UEQu'ǶO/qQ4WgdpadBlMz *ă T, vkL2]_;s oKܼx%_(@pr}CI5* _{LbAwvF΁Ak"@x a-L< endstream endobj 554 0 obj <> stream x[mSHNa>ʩE̫^rT@\%\6} -aXY\.[fdAHRKlߧ7٬b^TU6xZ;Ϗ?eUV-[fzxpN24aӛ8,1!OXMh"6/inׇÃˀM?΀ g+(L 0JİDOBmXܼ8eoߟ2np:E< f:#_~9ͪlW"]ͅB#m{ KS(5h\ZIX#57>r'LF9J%"וqڶ'$_`*/Y19 `V,k%_昈Xۉ ߘ`Ů~]٭4Ey_͂o'7D}^V? 0YAp!qߛݟ㗳_FQ<^vPʚrq9hDY`)_>e [H t["$d&+0`d 7$]"hG5叏o0u辜MG-JC!.Mw-(jix6~&Tb|,p(, i$L:z+EV"&5 %]ݻ$CZKly٦us! ;P~A? 0EJ{ɪfvSwY|WkMpٻl,֡6y60hqBay6dμKܞ\D{s253)V5&Vhgi%AɣI-jwҊLdusA1cӸ*x?&qi #?BxkNd/=XK&D9Y>;dgB͡]A2 `&&XU6smKK)Tߪ;j `OQꇳAaCR4<)$Bi`KVI L\)#X]!9l&9wdӺJ7f , `rEHؑ3 ؈Pq-mQOYagWy~+5!aelxƈ,KvB<[]BgQm0 a)vnޤ6jWVq|F(oO±+6yÞ(]QjTw:6r"K}2ǓabJ}CV#y9v;K=d$jcQ<ؔ׆1<]LDGa3^Bj N휵wXhс['^1I:}6,- H my^ 7?5%wEkVU3,&îi܄̼)JeNGPX%kCP]o~]"E?|`t˵,r7mHp|BpJl*G**+eSUYU SaSxGլGEFכL>ޞ:"UW_xH#Msjwy[Vo@An2!!9v}8xg݇oIYJqdy.3hG3LAEx=Oc?m05=j\[:T;]M0Uޮ{ H:_ _E;ryj5N5-B%: f\:U N#Zf%vKz$|L}!R*+]g"ƨ"x+s±U a:r#7Y \aR$ q,0!--VPkI5A7KzKN[rI~^OGZNLeÇYX "U1qXPrz ?}w)B={o"}';nҪ*rے8v2:Q(<&a`3m>*.R}:0#K-f7E"6 qE% K8l=a%$]]\#Lϧʐ&Sy=$r endstream endobj 555 0 obj <> stream x[s6k9>P}[ݲY#{y,K`ӓB%ir~*5==I7|y{zr5a/lӓ(MNT5:)0*BBk&ئ>=yvzgK-Qa47TPCt2R %dI).2=CA4gI>~}Z t|=-atuKH12W +1ۋ٧$ J$'V8{yQtzOEr˩w2{+?`xKQ#0O3S$I*~?`yA)Yƽ g$./b0i;: x([L#NK r'6zdjr9$ Znnh $ȘV2cScִ&tQe%sa(pp ?LQtexq- j&aDpQ@ ,MbhiF|m" 84 Li2> eXE6xtE Ukdj2e*LrsƋ$?`C\ AB۟gŧz7=i>vjz'$VIU߭~xul,%ܔ!! Ee$?~qNA N "U4v1ӏ9$ٓؐqIɨ\lIc^vkSj,W<-P.׻"TiڲٰKN ՞WM/Dc:8u*5#dg&i&6-88^xstd>xr׬Yv#؛R4?^*1p8?P~-Q4mҳ7:j% C1AiFB1RqX R~hhʼn6L>aw5ݾ¥9:[8n4;k8x;:RB|VQ$3AEQ/UŽ<"}ޠ5x-: hX P)x͵DB49d1"|mDwCyxEm r2jsC5wm2AӯO PL._^dX^,P;wrqwr2Xfѩ*Y]öuePȼemW!>}H-5]"2=aI"> 71.L iG@C@AHǂ<ޤ# OP/rHVMߺ[WyBBkM"\Kg{n~2l$=LttbJvY> stream x[Ys7~WG.k4RX-9:6 GN)LDF@'W|Q~8;\׳oz^?l?~x~,O"g#Y$gұN.)%\]E+0Jb c5SU@EqY+Ҭ*n_(7D0TP[FdR*@E\(G92&-"G__v ~m06JqF"D抢2wE1.^Ͼ<)sApzY)ErrE|}r*a}Ӽ5{Ϙ^߾`IE< &3 pfYcg*NT#v|q1Ȗ_]b7xG\õc%8.`2' ‡KRA>[oL#Ne`䎵UtϢѪYfr ^Z^r 1fdּ[CTƵd`B/?Ln؈n;'h;;PDnHx;Fb25$UԐ zfF+X\8)` !Dh o zK m1E$.tQ#TE.I'W f]E+mt*;$!ۨ8$d*3 0Ej1K9`MIZY%zͮ#RpHbW'Gxe+/@FXa6mlP#jBZuvW;v=yboKB xΠ9V` h?$⩪um>XoV%F9rmIx0|do -cPrQzɶpMn KvHPߗi[VOi CC BKo4jy~Wsʺo-%nn_{ U,S-q}ׇx׆YYUoY湙[x>B@R*VӀ5|Ux22 QT@!@!J9ȁwѨ,=׺x͐~^uYCo -RQƝL`!Tkm{>@+ ]v^{(P_K+.Mtm}؈CFz؈J O#!&RuG7FbgśybVᒸ)Eޮyj,g^ n*pkq K{^27]U #76 !ohrș&4 oěk Ix#;r{u2#э0fx=9&Y&=ڏog)Ez)MB OހR;hF !~׎Sr)6 qJ 5? d-:]k +:>X'+π\ac=6L?"iv"{،HIc3f2*MvBƐ6J$prN8L`_Vi&^VYBMZ` ɨդM&!rAFZv;\oEΧȒwP- e5cSa5G71`6FvS4>08Y d<*(/zZ }H^`E:y)8_q :\_p͸mm^|`؂PŢD$1wykKUm^Dŀs8&G"!jxb(rN endstream endobj 557 0 obj <> stream x[r9}wR*n7NMsV&vdc{W2_V7 Qݩ 8 _6_ f:nd_ӻt\3{{99=9+ϳҲɗr3ܲBL6y_.K֧'9sr[ֿrzr5blӓ73$(tnk8[-LVjYfV3+lU|yvzg-duBF8)-br=1]-UA^TnCv1`dv5waki8NAyRnܒ뚢vMq޻bro^A b#.2N/Y1w߽%؛^1v۫wY^ qu_@A3+rA謀VYqS|*EFDx.Y1UtnU"EWW?y΅fgR1a!C龵РIҀݙvo6gDtrzԯc7scdH QnO֮u3XUօQ4?teg hӧ^>hS}Jg/hZ UPfoE}n$~?֣7exNeLR'Oj(n2>#};o]sA<@]}Uo7zM\unb_ >߂ͨbc=8'NeBUS 20ƎZBݵ7&6HNy]Xԥ]m6s8yqr_ŦZnWw^~ VHVG JkHR-9emp5չau~iU zAp[^5>rC]KQH;z@-m5?nPun9Ϧ."p Cڋ+܋f01bp~ɡbjŁmx O*ۂiʁ Tڽɧa0Z?fz O%<*k"M< d^|e.*8j'Q`B*A i2xZC#QvFPP`}-:U(_A-1ݑA|?Sdrrf&>qfPAg,1{60;~ ܭt9uߪv.U[N7~c+2$$XB0P9B=kq8EaWuHbJXݶJ4ld&\F' qQ$ IАAcEI:Mx<$&{x>C]Rخc@Fkc_=>3TJ̥[gëIBH9& \yֵ堧SCF&MpٺԐbJZ)>PRօVqP0>{2=iK +D4I}4i` \$q{^CUД~k# GV4_Ar ʵ \uHGoxiE5A(Bc=)⌂,%?TCxAв$iXCGI|9u/Fa xV%ؒŌIݳ;K~J-8?1ؙ$,qi `Qi:ћxXSAn?w+lԎǰq4-eӏ8%<[uJ%yѩn7-ضGQ+д(l=Q>6bgm1ζaS6ŞȞ<=T7L ۘ()?Xćoё|BΥbw3ECl1#n K, &&)C7 .sy|].Pѡ|]0i_T?\?뮑*)j; ΒlX{x,O)`TRlM:Ktq-hTJ. XjhAwMp&+cS˛iLT^Wr"/b:Gy O>K\IW endstream endobj 558 0 obj <> stream x[s6Hybxt#$܇ӡeҍLݜHVf*b]G|̧!?tv4dVݑogogKy?f Gg׌$.r2Q?Jr'9ɄeJ@H(![DF񿎏Qs$LP:ҸsIrBUu|4=9>%J5QR }t;dndq!.(NQv1 x-尵$萹ײK1c۝-Bd(sSeoML;x9V8}YL]³dtEȬG<[{'#W.9ŇK\}݉g/ 'Ƿ$~?nݨE 9?{YQ/&RT#6 I&4jeX0l1tE55KmW̄ &K2b1G q\i²[4yha_\˲? ^8ah{4q27,.ߣ dfvGpA"UDt5^zqzI0nHt5I\%+s }Jmu^:mMAWb#$V[]9:L%YЙ aYŎZ"M\C!~6n\E.i\m8]Ye{tt = O)O5ǯUi!^"4Z^ϱ'ߣ ЩoG>")!%'Np&weS'aBF1>(s3V4RKJL0aZUuCP]T%b/)\Z{L\)nݐ Kk uר ؚ5jsdǫ?\"#TgZ- ^]w;QuQY1\K*ڨj~Fİ0F:|2 v9Z('{K>[($#5K>:6+ O1XU!|{ N$0 J:l Me"dhHu 8̞ ?+@=p4mbq"iN`gLk/=D.7*fp2z)3 &)%)Yi0rV}cQ@Mjq[Ib0dK0Z0*XrS[c>358lt3m;L:0[ t(]mqo$*?wyMM[lJ*-Q_?..Ƞegg[.m 1.<ζxA㮔K:Gd7 @Ys9ʢR5-@ƥ <`rkeBL* Hq|_=!~q&j+/pN1[\>H '&E̷86Fq]DmGU el_ѣ{cm0'w}p@vk4Ght3Ƀt|LJӃ䕮#sD'7 .x\TGxt e9K?0y§`=A2n`t0A|xt'B7VgwN󾎚@8aaS P@iM#F)n#m.Ĭ7^'@m;TI6t]PVD+oK]>Tk_ao0 `a6 !F&  jjQ~=0YC|r #7 R#~W0([1>Wq߯?\3KNWi&궂QV7tVAȷ\, ' O+jĥΕ`aɆz&^?93/:̗=}B)s7MN`0iRE69{M \5L,~K.ڠ##R8"=3/^&pCYoT1VMm *Q*39bO0pHjY,^[s 6YD=yL7\s/-iBh?\)\RV:q|> ,?k+B - 6kFˠ/iSWւWAiy]w `MZ5!zǴ՘o;AW՚}˔}=?Ae!ehP~5Eل0=TDZ '=$sܤaҺ.& &ݶ n1}+!RnW4Gz]V!쇱3G=6XZX-fN 6R$ QLg'fN< 6s^hmN3<>0wi \=z=r'~`*. Bo=@-w<&T ^<ola ?SNlm"mCk#7Lke͸?u$[.cv4zp<V{_73lUqV!NIe>44y]"1tؠiE,u#%nLO;5e[ukLWUuGnOXT+/ruX#b4m,ߑRߍ&T$}Z-a" Z@^YvUёV.𗙑RD5Y=Pt8,IO ,U+E.* )i[%FGciOʼn|gB"> stream xZmo8 XUT/&MnsqطPDT\EmG>!::]UxRӪOf->Z>vtP]帚/˓:<8InqfuZ)hîܰA cW?<@i"avSltZ$'V3Di*o#DdQ)VvPF-U^$W$G9<\89~~Zt(kzYt̛%EY收 zp[³a_F?:KxyG Hn^N<,ɮ؇/g]bx}9t:0x|Z {\DYp-G?[,I>i&B@} ĖiBfKcXt]MܮA0߮׃ɲ\W}I$ r0q#;h6]Ǜ̆r0^!xiwo}ziQD."0w̭?] Gb`?U}1ԃ_2˜Zo_?]$T$z- m{`ʾ #iPJ{y\l#y(Kܹ+$O~F#ScnCh<)7C5xN aPT9W&u~t<ݎS&!kH\HiZ[m i :Q%}9ioD˒ :rUkoÑ|BLz)Cy\{\j)6]"\5,o#&3NX9G$+8!z1?x8E}il˱bXshϬZXVHJ+a`}c,L~1XOn>tpQ{.o]L}rQLtNon VZfc6Y><+G:Y&4Shlf`KɣfMx\2Xa6NJB&>.PKmdkQl)ox`Uʋ\.@ n ycFQ?Ûόс4a}. vSgvAA`[-]`tÃ9שB m[r{-r^x"slޤh*Q^vU-ʅD'f8]T: ͣVDˁ7#i\QνsE wLQP8SI2aWeSMzy$h "|/W.ѠKyŜ&{@o1,Kʟ13p1]lX:g/K7 k#.UR掩 7ݔz뺞9X,'GRدVwJd?m61)hULXٛˀLLd N qSRL&[Vh(8Z}W3*x+ժjVZ PI(iR?><,Tn;9tQס;}2tI_l 9X,P|JBmerJc=Js2LA ِ~wA |5I{+" J(_$P社I%nGIz0zMu6]%tưc$S=)2w4x`v;* *u<&i i4Gr  Ehc t^AUsDڍ_/ۅ ɞ Yڼ۶z&Km_fQzv;-ތB}5]]oϱOݹ8K,c:U E]m۫`Cb* ACz[C[*B{K  e&`#bHfj۞AVf0oPD~P"4EPO-m4Tm7 STODnK!!|6/t&v{ H8v'|+5u{wo ߺ#^X([Mv.z "0+Tj{2RiJp'ϓ.of߆n6Mܽd{vDh{Pi{-wtߖ7陖{]U6۳ w: };ȶ;gu-> stream xmOܸ#qX!~M]a0^ U˝J*v;=JCď3'ϟ>?Wrr|wqdۻ?6'>m?}kۋ9HjTGV,jX Y(o:Y=<|~xpU?VzɔRR}6TJNP섪[j9|z|FBj)ڦ1B0$J^eu|'&f-rHExt?MrUҹfzψ˔K=Zk`+fPEoZ`w[޺+Znfs(Y߾>Wzm6`8xCw :.J",4R^bk^=[Zx`Ӕ^Ih8^1цGi0liPv-5L$fzUb^0RVN`3kP5O (sy]lN t_8eHjY @ͲKX?69jm B ((IXMݸ1DP`2STĒRY$ez^]7Otr]Wyd/p6!_iVp?&kgϢRQR#s& LqT˭6; cP _H7"Q'O+ CTM=-~1c+Lw.VЩGD3jP^Zg a/GCD)-@9L5˜Z$;Q^\t/_]%iZXN31b湛8^`|`O@`ivjQNA#ApEH5YMBLfJrlc 1,,s./᷋7\.4&NtN} Eiǎ}9>x;'i;Oie%= DXM9Lf\a` .;Y[TI./Ly* Ϝ1X0!snYn! ]iVp Spg$2P :)|k^'/;Cypǻk;lH9x@ x{z"o DF{CBh$/}U\7X 3z^Uj1b/{8t+X{Ǘa !υQ''1Dͨi[d#r|Eʈ]Z$inh(ۿ,჻r*C:g>V#vɡvИE${+@uqrUw&P,jn3h Ρ~=aY!nY5Kl_>|ޤg Wxy(Gk#1bɌjq8%2`χj\,M}їg~jbNϵh,Z^ 'iJ%t{k.W΃ 7o>}5KyhwDP[ |Gjq7F3cP 2뤍c= (fмm!'SF8JaXdf+@ ՓXwy{N{n-{]0 ;΄ƪٺHO -7%MtFy;Voܸ# BVwglm^ "\KJzNb$𝊱l"#e=qΤJ{‚7Ea! lYb`&%h6uiL]B3.3=SHԥѝ̷Ou.qw?=f,Yܨ& ڿc$DŽ F  WӺzXz9+MR7# _0}:Q@|.YYX93-Z3AO|txcģywgv)\yCK {U>UAO*njXgh@oy8‰E \7:IS"LJ>ӨZUA+7>,vڡ#yy=A*Bw]oϵ}=|Zs__g^WjWŗ=]&lw?ȌKo ō{S+1x֡IUwzFdlbҖWR^rKdO:LZHf8 \*l.%_lCrG۠p vd !=Pxq:Ő/줴Saz}_g endstream endobj 561 0 obj <> stream xks8;U}^~pTX ![WWa?xgd8,ܯ=ǒaZVwKX4'MS,Kvj]4j}|^ًǏQǏ8/g⌥JG:a7cϛǏb,o~r~g|%# "'*jEpQYHiV]>~g AP}>r񣥊8kGځƘ[K8{~ qn 89%fTfBw9;+nŁUGbv]jlFp>{noNYޖ9[׫#=rd.60IW]5e `}f/|akölmMV&AjMVȺ׌C ΁B J’Gģ^UW*k C(h-QRYXD5dOT8B#pXa!9AT8$KRI! E1gjaZx'Gͺ@d︙=}S;398r)aiɒ(% S2+]АzU5ʆЧӿ@V3V^:2"4r9ג4ϳBQPA}0¸4u쩠nOþ$)P$vro9;y=}x0c--!lsr}M}/tpKW\[8Y$KN^m5\ϫ5ӔHƷ&wؔ^fpIz|3ߐ {$ZP'ICMc$C/I@F2A##+pRJH[ "!w;[vqyE`aZӇPi9/)⺑]upE[R2rW⓬z06Ck uTˇ( ʳ!`*FA;S#K[K#Cقtƒv"Nb&ZCae(:Cن"\wPlP3u#)"\3[s8{bM̼:Hgwfp؎Q1-cFdcٴcFsGZk=?zZπTMB&]I&9ntXtyeK/<uI L0l=}l {YvaiǙt SM,A%8Cb,7G :!Tx5N1HtAvA*i M!x1O.d֡~Ntʛx k`pzTysS E qu1Bٔ景@4&&Iw+ 6tQ:V8$oLd^ { rd~첼Zyj[ ְEQEJ8@tlEQ3vmMefU\5Dv PVgs @DlOnza+J:ƫ}}`/$_u3+}%8'XpPVA*ĺy!qw7-WlXk|adjQxʩdf M&s\'Lѣ;D=!,QOPc_‰\|:c `0B#at#E 1Oa,4q(&, ,N)ҳX'lbShm:3 K S̟ifb*'$m@} XLwJ|a.̅XЅR\rA'쪦~r}6bChbU4$uaFV0rU 4\dыȨkP~ NK6DQc3oKX'4c7P2i0=ăT(!IpCi24,ɁHR4DsL EV}}X]'6lGg:Ff3+i 3&zBiq^yđ{zJz̐Ewh$A_h5 > stream x[monA^KpMr"J˿pWKJ$2|q8r^8 {v\MF{|v{vxrv>06V+{}s|tV0Un8࿜:JV(??U9e~6a'_Ϳ.QJ,Bq:-JKJ\Je}|t(7D%储QvpK&T)z-J.8Qv1 6%~eɹ8pQ@KP6 *&1RI#i" A) LihƧXQl!1`wE 5ȑd|"/wnb%22dg~`94o0`k\-%+%K"o6bެb+<5c3/?9@^=1P5{Tl pGJlO#Z7g|}8y6 :߆8M=Dj+DCYce0ƆikFPEN 骪vUyօN`tմvCІ-vCӅkk2z @ɥLԸǛl:0 ARy''DDz4l4?&l41Qܚ8Vz9277 (#_<Ζ=g·g0Z0իzټĸ0#?^W%*ذZĢ%w^DSNh9{XL稾U Zu [-@#6aN L40]˟z*Ip9;^9T`%feRXO: $AwnT lXn<trZ$l^~=W%a[ T̀v"-E{UKRGUYCxl"H6??/)u~}}y[$4]_~;v$/dh!w=\=AZ uq=M^] .ڷa  =4KSad( oRlB`}8U:\fhs!c %(nkILFG#O>,V"1ePa EZP^?4>Sq|kh\d|! wi=}=_5 {v4_ s\דɈS)ŽffSmV]Ǎ piOXܳ(]`Xxyq~ %~gxgԯ8?Oѳ v4 ݙQh<{~1E{`I`$K>dpބ0(:!]&gb\}V =]&.=o29; EAIB\f_J iFm3|u ^ h&iwB0=52j/f!k QY 3!I=4 @%zϼ4k:s m ϗD5n<~JqHR!\ڷW.)^lSzNեvgaTܧ^{TٓSdpڐQnPC5Aj/%bgE  n׶b MQxXT]q6&ݤO-T|:sU-CPĸ0C1+6,ÊPĿ4~x:s |_:sH7Q37*@53 dq+˄-׭3ia&|,5isV6Ow)a12w> 7 endstream endobj 563 0 obj <> stream x[S9C*4mm!-RC.̐&E?I/ئ!sc,˲,踪f?tt\]]:~_]LoiX-}w^"O"gW=R\'i2m^n˯{vm=LO s)*$Ek+e4 D9AT-Ct[dVt-U^P$;G92]O8ekiМv ,oP7϶[ Ȇ(%E!]OΧwف˪o ?X-E1HjY'G8樿n&KǬh,ؠ1-n: DA)4e\aǰOz 5]'9Y.C5|b%3BX>a  p>8Y}V=<9RxV\«!gfZ]f_1qϏ?w;g㵠/9Z9ukMd& EM-2P9^ )8p:Z5`^#S~Ƹ}CL & 5σD5_P^8!up|=Z=x;xd ȡ&|AH_ ;<Ćik<PF &a\Z;4D8(YiP2˅jOBQrxXҹqTx.FmwlT#nxQVs<>"Zݭٔ}Y/zZN5&A<)ʇ{X% L)' ,fiV2wM)ހj[- G a[^|+$ *Q‘+n=ȺPEL2ݔuY߄TjL ca\ޙE"[B ;RJX&d[pVĔfbIV*0`3a H!vad K% sx˳:dH 53NF[S cIë \Oxwn\b,jeyj=T rKHfO(`ȹZNHXq.pW5lhXyfa&lgd:2jcR3%QgSEQ6)Tڴ-I) Ԧ9_ ҶPm*49>J6t/;0hoC{ Mz+n;$;ǕdrܪwŪ]>Mdz6]|F"pm@4#knxLk GߥXBDI9 1Srw(_m'>dՒ𘙯6 Mi݌)_}L uP+Qv9Ζ.)om,XL 졫)ܜku./)__9wk P'WmP :zYAW:^mr7L/oHw!*zv_y+hA0ʱE3%,#Y{k @2A(\UǃUddUY{fJǜJ:\5S 27/̵8NQj_\=llx3>3_&ydY7-`l)JK|BK|஝ cQc 5[_8EMƛ58u*8LP5ZDaOxhp ,̸h|+٘ݣbR~Em:^>|ut 7Diص ~<e;qap.,r%$fޫE-7;W|iQn*'bU׏#N8ѷ}3OK__GE,\B=i#h4Dʸn L(_N:P7uLl8B{î"f1}_QMU?]{{& v-G`*4?^Yd5|]mA]fdbť}%u 9\)Ϡ2D1obmL -s(jP-hSQБ sF M1JF6>r < N IfԵ(DgVlZUo)T iZ7qZ`qKPZUm4gQ+Uumj‚uee[ )S20 k|cUP1ٞ2R]M8f1f}[_?CXK]R )6yz\qQReaNm|tQ˒,8U[Vwr;*-Z.W/!n& 4h;Ap]Zp.PaPavpۙvhgwkS7kFW_+v+.)̯nK*;1Yl0&3Ց*O_''4aԧMpI-/eAЧxVZeҏ*tMԆx6dbBF Cڇ#L\jlËbd UK> stream x\YoF~7Gʈ(I2 8cx Hl@LWU_Ebgr˯mzrqZ/fooGN*ή^QVQjxv=zUfѫ/yvwvWo wJ.~Vec fYM'"eY{}&⊨DK**zCtd`H3\4TZ@w K$^~'v|:L>~Y>Ȉ/f,bdSU( B!_v߭l~{nv[8+!A=\γB"9H,+PC2/0bHE x#f2||siD-Sq(%A[~DrdQb\o:°&7zLRv٭OhK.]`K06DpmBɿڀ6Ы}݂"(_nw4ɟ:e4n/RK@fR{Aӂچb: ʋ ی(HFM޶^Vn^܇D$Qq{_[Vq(_m"iZJniT8 ߣhѮjRmU}ޥL}쟻V K~;wbo]=mV}*|Kl]zM K[KmaN9c@HwkJsH[pv¦T`·g85. ంd%W@/ihƠBY0M3B wT-v aڕv Sӌ:x .dv셴CRR/r3g! Ĕ?, 6#eqdP5M7BKf1HxdMY $0d;nsaqˎ%̒a ob5]gk_XXAxv 0X"U|qU"|wl?ݟ'2w~Ta?MhT1@"d9i0BPcl^:MUR~G#'6a-f$HJLRP,ĺ΢Q ՘/$Aݳ &B. Wa  |6oB`qb y@ HDc`)`cBb VڍӞUāhY zh{s 륏ϏbmjZ.Bbhynu#og@ćC@1F(B(1HfbCD $hA; ;  v@@$b5H\ ׵XBoOas]N4p#88P)\ʝ3f!CMʅhyܷc?7r3RؔPe=h9!C$ n$ Zl/wIlA)A#b HB֤WC,$оzӎ >’ jI1ZmhÊ a9-dtE2 \#˸)J冋}ej1m\"{x$'?+ C8O+m,lF5R /FE5)QL΁}=Q#f[6?I8RgKeRai 2"PnjRiA<ڭ<2ewxB*R{vBŜiIB m$˦a⭚ZY!OMF@%քh_O~ BJd:?:?AFh!Z^2SIHĽ}ŧݹ<^#}%aZ;²iD*!Q-!=\ I1Ur`+M\ 1|Umkܜus4Gs5]UWp2H8kn<D=r9yqe9=4FNp (܍mNbGTtFt_r(|;O! DX_G'iw%b84#3ivdjx9v<>N&7=ĭÄJFbޘoX6[3y S]4'~yݦ˞/֑{^(dX)痖qIxVt*r- ۾?"_Vdu*S;ZQPՑzY,mMIy|7+hy'.υٳk=O_'a*`޶0'굷r 墻GQ03YQq]%,8T)qppPX|JY^baDȖΗߴ0yFVᯐky 4%)+ފ j-> stream xZ[o6~G9hd^umڢm2!(Dv$e@!HF $ύ系xt#^-trWuNݶZ|]^eԯ_'eAN/fPHRZ\Tezv@%`?$-~8;8K'9mv$TT d)gi@RLR\nzPf@e\FqHnC+)i) `;H(|:K+-;=m-N\?}NfR2y٪HQBڪ%_H%뫊mU6$7W~=&OE@ BP9dSUCVȔcNfK¸փ"厢<#ܒz/),2$+ t.tANzR쟬2| mj£TeũMea.g| uJpehѢq"ZJwVy ,C`1Eqq3,Y]EҞ+$G*R/Cno2BXϏdrUW"vpf%5#)Rxyզn'GQ$1qz ̇5aACØo$!٢h!$-Y Bf >lݸjilo1_ Un] ّJYx@9QflXC|5sg:LU0U( =P;GA`mAvjaW=L xSF9m@(0LxXf6dBa~Ƿ۫ja}Z{D%Rņ 5(KU7W |$,ekZ/OhyeFn! $ R=d36>` K υ.uԴ/C"8jUT(U`<ܝ]O}^@q6-$ |4~pP=%e7wR>r2f8tjzL^0MB {{j\65 !Z+TFޠ݆?;|k'US?"Cz۾ _'~"TM(fX$mU\ЎL"&jT^bx$Vafm {f_npPhhr|ԬkBba38{Yƴ=f,hjlwl**SkcK}?֊6y֭<=@{ b :}ډ'zT3jbi |}*ZB!l籺"|3iQP bK燦up;ģ⸂ipq.|'my\A [!MGDQbvmwAl2 WMHd,_6<~ $Ց@`D1a3C˱ȰA;2/I>}> stream xkoF9)\Q uEsL $ҥ$YRJ+&"%q3ylOv1/f-Ӷ-fw ^LvQ~tuz2E0GyƮ'LGqR#='v}z[ɳz`W 8HH Mg EpQY/Ҭ)OONOP"Jw8k6qyc _ͮ'\ă}m4Sir'A= 8~8ݫ%6dE$ʆ'/7vgrWyv.'7lS\MfMlOdR Iky Cɰ_^06}-Mp T,S&dO<6$Ŭ%[(0 >XU;dܒb`w|[&i6]/_csP#}|}vNXє+ٲYd἞{@E,Ћ,%+?Kڲ(Y1#s*k֢Xgw Enr9[oj|4_,u//!'HmŢm >uNn޻xK7<{GM$ʆ5mIٰ-n|82e{8|Y t :CQ@, Tn^7d;e~`deBpYEg #7(..1cCtPefiޡkѫcjPY">(هmuGͧuea GBGwTTȘ dZO|Ѭ[VQXu)r3l+vocć7Qbӷ2*\g ZAHt4Dwuz2凈k=nO()| EsXE "źFH~4+CX-Wh2ޖbS~",65j {7`Pg#)Rxӂ -R3Sע՟hz _U$(θ-ŠbP)O|9Z Fa u4iYM3}Xf~X['$HІKܵ$A iie 4dCJ_vpV/j#gpSPL""Läw K?BsaLb( %"N$I~+L$ ]_PZb 9|I iNzZ0\n y$0UW [o :߇4182FYHpL -ѱ@\Wc@rqG5. S(u7g2?|g2? BwXF{p#CtK֯, A/#<Xv0e et^CI o ٲǐǡz msFݺ7lAE!Ӄ Ƅ +KnW3h9!cc , W1.r7x e{1'(`Af]QQ 0.%A-5^uFZe#-/W Nhٻ޽EY42=y^:M?8۞Jc?:u2N)U{v~RG;O85P ;qD5qnv@Nbrвղx@ɮ3S2n:̰~]:9ºV(rI IFivpm[1i s`{Bm'zrv谉R}8Ֆ`O60ׁ 8f+ P)^mᇲ uʴ+ENPeK}ٿ]i0~~k#5c}.S؇C1p ;:t|8Ż ޡط : @Ȣ @0xI4衂IP^.tgweEqOy5Ř*NvݣKȵ(hth(mvSceFư)HmQo|ގvH+bH"~]4-LIz1̌]\p0V仪ŒՓ/$gOhư;5] ךh`XiCF85,v͈&lV4W\BEuvv8 Є%i5k ǫֻaұƀS/u8O;x8 ,. 4A{!KoH*J|qQՋ`|qx mxrPGeγ1(s enxhWi3A{?,Ϗl{T"> stream x[moFna?JABs\Q q D;*l)+rfvI+.iU5ek3HgVda?tjLU3vsvnl?oӓ_yVqV,/U:ӆ]?ٯWawӓݹ?yQzzr3b/'ogI`O8[#Z ?̔fɟ5D#2Q)G[tyTz-Rq<GAƜӛsK:Wߛ-yR_c7fIuEdEWgѻ~9[_ь=.r4PrV+{w&fU-6{yL {/ްv\W? gyX^istfsTA(E "";q[Vf 'Ms p]^Ze:)4p̂. ȝisОEwzѫ, E7Ɩ!P5o%=hj?Yf- vDQSk1e{/÷ѡoƓD )%T4r/, ged/EOjY@"hmPՄa4]$jW5,huc*X+%hn{?cl\g?R +"w=q\7,Ž>P <#7y #'6@!kuƹuܻ$[]ʵ |[mҪoIn"%~@8YDTjf%ڣ46p@˲ܳBMTV{l"iۈi+얠Ά;46ɆeH7îZ "*M@(6/XlΑj[i.t3֣lPN] zdK@ɦcźN1z\Mu񻮟`]\g ~`66j2" W L ca4aX @K{VJK||*# HSHតh3zbV10iQM6l%w+eaЦ5jWCLJ uLh?]AQ?SϦ(u,_Ewژ+Kez7RFpҕM̥Ӂr^*٦RB4%cځRJܑr`[֏R췏 %-[.\Z+|c\!?IRA-D\qHA:pŠ .&zZRn Xb)=^65qY3ENR5 z] W9^WJLpm^nlItQ}GPtт:>cX5qT&ڕeYޫ9ulup`tmiА3QD[et`ųQ6nZ8=|63jM8."QvMөZ ;:*DA8:lعZ6/5,\#Hz>,`1Y`YWlybwK\jqe:jDqT]fV29GUpFuOɃ0q뭢a4LosL;ؼhj.LYpzWs1Y(nй8MZ&?p–-YcAp?lrT`_w b*ǿbRZ֔x76(-[:MiOLBE9qm H4TQƈvpEڬ@WγWNė,׆<ӂID ZJs0&x6-PXǷ$4$zc(AtID2[wt +|(.qUש 81e.zSx$pr*M߄G u4%l% #4޲I!=TDN]6[%vaPv̒_zRf=jуO==4JOYj7eUD++" »cDs(`.-0Z͕X` X≖`ഐ۝M ]sʂDAVi^YP9?{e+ rWIK?kGAw8Jp iPAlqW86U>@QpQ1&KE`s?J*4/{ 98T!B-@Df23fXQR1^'VhHYV /? ? JnB_$gIiǗ'>aBiq!;D2&3 ?592㠹)PI% Q;F=Bly,zbْ +Yʒ,LCӐS,ʠ?8;ޤ)lgi<`<Жj;"[؝~LSH}ա]~aK2y:b~X>vq/G߼e-xd!}o>=|K6'8e8q`1TFwj|ڕ8|0 mͭYN`42&r2mz<{;O@ۣR򭕨D;=:lSV/ٕ:y ! =3. 9G\ endstream endobj 568 0 obj <> stream xkoF~&e(iCKkYl鯿c%kQYg罳3㞿\ol|v:\%7׫>_>?_,jɫ.Wק'?ȳJ'ӓ""2uR I\?OWJ7'yr?ܤSrӓ׀(8\g)d pʴLςgB&d,6@(a~&Y EVdY% ^ @c^׳`%A˗FE nt¥taxXͦOrL]?Gx2t9K<&Y$#:LEG3~{qC{* k-X adL&g2fz'8aI *C&A*c囫HHLJy@Ô0ɂ`A[8<|j%8qT(2+'z>)JZ<-5|IJ#ѵ!zqy?Ѱ{0QgfE^yGHt>݄:#a4G(ݷqʔ(O a;0-uX1䰅$<2gz; vY^"|ǤQ=Pq^v m`,EX 㜎j&D8!8Z31Ai\)tiB&pc˨ xa3gp_42s=tq 後J\[DH8[#q_~~7/]/cnty^+%[˫7);w .yxخܗz L:  蝄|贮7PoqV%|?]O z"Hx/ƉQ1ᶊ Eb{I(Z,QsB&l\d} 0ϱ1`wF&ur䮐Uޠ}2"{^O)t'<}{2Cbyc}C|iHEG _m {9\!7ȒhX"WscI#=vfQ#%87dyrL6jbϋ=i-lI4jtkGf:ɃlNQr%P9r){]022]x Z|[jDHR=G.Өdcc`=(÷,)T{RY/7c-Sߍ FZnvhrFyɭ-?Mp 2RHCA՗1#cv^B} jA*s#UkNXCvWqmj|>5,^zQ-u{ȞU+{EÖ[ vC/WN~uxݽCVv1S*K}xʨwuPĕ@k^.F][Q=QcE.=vp`ڻZrBB)tJ9F\w)aVnj)cދԌmα1sOo6o`D%V2hoS48ʼKivc( ^֙b.rEYvK3 IHQ)x`JijlTid (a`X6N! ҆n书<S쓧T{@-4 endstream endobj 569 0 obj <> stream x]o8=@Q$~-ha^yp@HH՜o[vpv8o?\ng/^_}?l?t]^\,Ұˋe7gFaT"c 4a{vˋz x'UB8uZ*xLbFg.RXS]^<-! JԿ_u IWB9+hϑiO _q^~ Ra@ &E(4ݭU=V+rPfGXuim\.;fY:6m5PIdTѿU؊^8xjo\s߿Z^D_kDkAv}':R(@icPِف NzL]fHzkeY>E 5,v|$]yG%!Y #óP{w?eP|^m6!z 7Cp~!K>zKQɷ95 E&'$>Cf!˔9l%vCY{9xˍұLh]}gwhI*1=мSԎ^P !f3P/TJsE}f60:Y&l-v9Nwv[KTa*} 5t5>Rl' *휍Bc{Q>Έy1NL1xv܈G|'F|l\LDzqvK?o|`> stream xYmo8 ^AaUWۻa@uֻY?ƛ ~؉eVI-!E>(uxZ7=><]&ӻ|Qj8zMnj^,_`/_kD̳nG8e6X6?fVG1G s9#- e<5,kїZ:$)MR?aːܞ.YQ 7gV!vGq$n2CFX4*Yv>)X-b5_b=hˁMYL'6ZNn{x'j=?k )=F{_16|48{5[), W2<h D a~r2"-LC-S^#CR>$L,5X4B7d b Dǂ'~0H~J Nuz]Hqfnh Xp9}>F:T"d6M1$%"ۂ6jY;a4[Ta ?bShpЎQ$Y'tP[q=20q+Cj2ZO`)kkbq4j], Xԃ,dʓ2n>s_]re&7bYbϼiGL 6맠iŦd.{nzO{}JcGHҚvm5ߎwEByo\aάKlq`ԖK5K8JLxƵPJF\eV룈'x}<_MQ:Y8Ͼ!+#z :4mo55wd-/3vٙJ)ղmskN&m]!W&'mqvZ1v|z+}EYcQfS|@S}̦7xȫ_=5yaoWBό- v"*V5 5CM PN2턳b\X[]| mp8ѯoU|#s`WғWW<1R'p^ۄ ieѭX'CC¡4] E#rOF18xٮ6[#rMk܋8A4ه4UAu̗^lspܶ!,Mfyn 2K6aX8`{@׻=VE|IBJDhtTο"XvNF 8)@`ės\@2L'U> stream x[o7n?x|WH4MҜVZۺ%WZ_krTmyڴzޒ>}նY/Ofz73w,Jry}|DI()e297rr=> ~9>Jrk`f2lN<$0RR'婐d]8>#5Qr MP^ EJ^J Sd(|9J(?~Zlkv_B٘KAˡv)(8E*9_isא(c3BN?`X?{{N2+ \}yw(c啊tjxNxⷥa|]n섊Dˤ_]nw3ɢmUY֮zG=&TZY9Kif+hQ.{Jf>YgK Xr괽Ud=bɟ=6mYN2e"N4!iE[߼Ԇ)vY/ %ڵ ^*'BarW)yL}E2'*"ȄZX"rfD!,F OHD~ȇJe Fhx ?ae^\H6CgXpgl@rd`PTUl-ES5by9@Y&$4H"kCcBiƆPu? oK8 dl'N@m7Kp#2܄-7hY4.ӕ1T tttBm9# y3gJ)* $ r-u4xW9\Fw^N>NH38 :Ŏ:~5% o$o51i."цx"G>_4?iFW dw?]p n=`h{q$@ 4 9ŃodU'p5 zk8s}\,IM6h GZ4i͢0i^F0Ѵḯ#m߾f. bV:Y[2&Q'E8<YਘU˝\<6.aPIY,eml~h"ag^Pc],+wS $AM&2Ex ‚)+vA Vld6fwa VdxP+إtPfQ҃ UUMbl(Dj׵^N{dF1k$$q[M&*jMLжp mZWvdE@zV#=Gu2k$)KC שm( ]R +KVOʔC N4=mo3NMu;~w|=zЫgrpԕ|(ƍ%@1l‡At^  @}5{` mSuijHpvB+ 4h-lq;3'9=g<~='oH(6l#kxJ]cݭ3|J8{(Lݫ:u0U/x6;ɓ5?ڰRrA0ҧڷ({U9:~Fr ʯ MY~Y4Pb =gGP%ȟw|jWgulIB!$x{g 6->Gb1[,ե5]g'E@DAybFX_\T e:lḬD#DClǫfaa%t2U@kg4 +|fZqlc+kњoۗD=CEnN=sE@MVwOdA6 a8CX8sЏ7)NB?޽S^fYo;pЅE0UdJ66ԃ,,6g9n\iӘҜsJOWLcJUvu 9+JpwT}eorxT̽d>1y5U=54|Q1ع;a~v6/wXs8Mx;ww~obEeru]I2Δ*_Tydw฽ endstream endobj 572 0 obj <> stream xko7~x|n(ĹǗS6&EIF73.%}ڇp8o΃>}>ד ӗM=nryms2[ԛrkBYCll+a{a{("CHtUU{h*wv3c =nHcaH>Mᤉ\b OcTÜL,h!rgz3>fNU:M l#D| |n|R6!J# CKD? ϛ,L˧J>]y5zWjͦY_DS)wc;h q]h]X\?tNjcc=,GVY(D(ZOjg ͖ IPRx:YPBY`]y㷆 pZArAB-eFM?l}ژL94smHaH蒑٢s~&+kSoPl\CUs\~?PҬV]])D2rME R->P*WKI6wGwXl񝂥Hh4Ui˹;4G| wiRiwRQ=IA2PIRb$ms[]Z uڮEpyC<6GW}Yٯ*%v9Ӳ_ ߷^Pp 繀a'9<ZA;i6 }8TKo8]&1]ңhSᶤ΃U U-_-m 3nǢs wi{b R9YS} w.k76 #DW*tu }hPU‘5QtwOHC#xk`=!A:#vc׼H(@{h(K[4%Y.hOv4N/2ty?'Pư„+ߛg좾i/,HM3'/ȂG  d) Yb"C=ǚ{ʄC]zmCθ-O*Hy—6| zgi_@׎RX0Qfb )jb AjSaq3&Wlm'jYbO۝.h4!(Ε+jYԣ6Ih|3/'59o?|Mc*򙌽Ҡ^!Ɍ6_%CR88UK S fUwanИWgkCDxj,tbT, <6R㋬lفXGiKm;q1m+1mIhHHv-4 l.3[uv|2;hn6GW}iiy(x1-ī2<<VcˆV0{c`PN< 4\q GXqGgJs3h; S~y%&Y4_r;%D 3 ܕ JݟC紕oP sV{E9mB]S#6h%Es@% endstream endobj 573 0 obj <> stream xXn8}7G9$ŋT$-ZEb>˩ %ŢE*N$rUu\}/|:_ͺ\m:?WdZ,`q=# ӌg`fbjo 7x3\%0 wqjU*Ұ\#P2 HPtU2R攌tZi}eLoF!uAT1Z\(.w txJ8>-9a[~>u&\EgB)A/Z]Q6r\q%J+*TZ F ԖޞoN3s}co\pD5Äkf_pkfBzeLu嗮\>z;14$-4V=poH!ܽ҈K#BV$/H2x\mJJ2ژ]˚;Y41aU[Z7s dUVdۢ-L9-}\t>݂ q™ʚGb#;qSIlgOVih$~6  ½3 k%vZ$ZW5*Ym] |&of2Y໢I]ݟL&rt\xA8C߃C7/E% x-3R5Ig#9"`Rq%IԣT _f(*B4A3q/wxBb_%4BfQg4{m L| d_%_,ʲcbeyd18"xy*wd;>Mj>(d~Ӛit:2;z'E!'1IiDy2a2kGsQT򳚝٩MʺRJo)Qlq[lknH%}^n׻|͚82[~lY)R arN[NyݳH|BKp R ?i> stream x[mo6 F_%fK>xDWv-9ܯ!e(A-8p8o>|ߴl޲;{߶]]]ֿ]>ϳz9k?..YZ iV\TvybYve?>]%wv(K%Nuf3Wm@N iYTin鄌*HR$7lKZi sl8|9J(z~4PKŘwK(G.cb}ShCJUrZVT%j>?w!AR>tg͟?2s\'\YfTpy:3%U闏ٓSTůM߬ܘ4{0O>&/lvqƥti\' >Y^}#77<)jٴ64CYkgK\;ONu;eҬ+^PsզA~6{H֖;|l9>DuҹmT*@6T&ZkmW/MuWD%[!|68V9 z}UY( 3驄{Ff[]%+d㖡a ȠG'Ƨ ׻RX_&JYdGeMS3r_nя'nCjDe>k1d5#]o H1H^AEt]ewn:O LOɣ!] Xa@` ;f4l\}2@.0H~c>:;6vzZ :v ,-bp?j'AĆ22L(y 9:Ox^s]^=Ջ|fľ+~C4cJPJ)W!͂JlV=}hp@"xKF%$/&vҮT/ Ҍҳ]T1$蒡sCAo ;jRy}b7ݴ~kwv7N{v {[ mYn{VY߲Ӕ%BFFR*yozBMQxz^ $u-Dœ2DVKaQr/!P%n,A:BQ2"Ji.{8vL.By.DҒ H!ewW]KK> stream x][oF~7`ծ;Y@ Exyh˲#@YA9U&YUf`u|u?>n{=~׫w}}Wo^xh8ڮy 0_tz˺UzM7kO__`'㧗/~4jo"V3lofkSdn:rUy}^3/ԡ(P<"1R?-Ֆ;y-V(8C]w~w ;uvs(Xy!pyׂvE }tͻLJRmn=k4c4w"y7M؛xUF[&R[u۶S,_q=>^Mss!7!­!xQc03v o6ϻr.7b1[X 5T>HV˭ƲsM+a\feۭCҝ,\;7AfZd٭/0 څ$xyON^M:ŕ6SXț~nnwW ?y4 Avoiww;oOD_3ç-5aP_ʗorK#7npهwɇmGٝ'zs5cE7ۨ! ݠXtwOr|'f|~ 0.h=ֽ͊vxr]&&w%j WU ޖ#eT &{D3w?JVLŰ[2t+l-S aKZ95g㷇 = U9FPs!yj~zjEVw~[!fV;LX57a=V4a{w腲Ÿ9u#D_4In~zLL+ apKab`rV4gי%cYH˷B0f#=`ڙ%9BK\nn`I hѤyKyri߫!m~iiMa4uX:)c@2KL>Wb+=٬Q`O6/Sm1_*M^2e*H#$3g}>"kˡpLӜcf!3SύI\V=;VAjrNؕ [Zwb;oO2xg*X.fɍ܊Zs5JX,`>m]R[Y Qj,ZPUҐWeٝ.wiXنWZK0$z$sn,޿91|lI?j)0|: ?ņPI| B/.^ bWg)*AĬа>8لR9V2'GqS-? s)r,.Jsze`v|NIAh|6* %9VZN,!Yr۪:Ajkr\7 c%tM50 'Xauz`jXZ`΃%1V LBհ:J`AHUDLEۢl-$͡Y X L׳-a@&*cU T%0'[ϸP4I_ëzdfC'${4IU=[?JrKd{0mgЙ.3'zҩu$")N>ǰD P5\шȶ)0G'-yDSų4 ЈqG4hDN|=m!ԔH4ѝ-WDS# ߜ fz~9- NDDŒ囟߾i E)S`YJQF{˥ "KhDfD#w{2fh$'"P$UD#=͆ԴyM=h,c@MO .dRưra_ =4 Ce,xH t2!?օWD%xNH(rUoO]X) (ՔbR_ur;dT IFY͒V<(]{9Ҍkx$hF<]>q)-H`i. TCV `X5 lM%0Fjixʴ nYilez $ju+[U:gkZ_M_ kVaM/A+MVe`{̮U:JDwM7Jb$-:}[d1*$(bՖ$P)ȣTǃU 'P *q?7_^2✨-u\\\z^@J}R"?G P_ >G ׎@%7c~ԤX-%3TIuعK_ S5&3C!j:T؞M˓;%G*B.UrNؕJv42.U ,)Z<3!w+ c5ڭeqVp %!emCu |3cώ R(x8On|B ?xwn{~kGg4<,Q%o޳5|{C&FP+#(NFdrB$rRDά޹$WĸV- nMf,o2`i:l+a̖_KH%,LU²U2Q/ܩJP-$+am5(LzT²[Rv}y\$UIqO~|\ >$G.8oXA3X(r"kadF 'pF0!Qű#6|MXC#ƺYg 5SD.: pr:sqk959Y,b4Sf1 j @Z8pr~r*R.$O\.R.= _rނruiY̖ ˱:Tu]f ,g-0@,}DQ"t; ƩwY A?t4UaWqs*[J<5 ʉjf/#ϜF77Dt]:EX(]-ݕNn^Ix$FAf=naxuA̻Qx5 &AHF܏m^d )L_> +7@2I}4KL+H~tJ0*b-$WX!U1V","9 )lj6qI}غKNYtGWEZ)E,\dKv⁎Epo)s!\1EK\)s"Xz t: JwVأbbVDH't!s'֡T J&HZBqK/b,UЏ}wRO  q$&`73t*!SɅb\IL14_F005M.Lo[uFin3QOæ䋰/:[] @$HA7jǻ `}w2΂> endobj 577 0 obj [ 578 0 R] endobj 578 0 obj <> endobj 579 0 obj <> endobj 580 0 obj <> endobj 581 0 obj <> endobj 582 0 obj <> endobj 583 0 obj <> stream x[sF}31M\3fi3i<2UJ&XRܕvWt%cA,vU-曫m5T߳۫f˺z_jhV~^fnϮ,K`7󳌥7cJ҂R%J%Pj6ߜlon'#;`&NT3kNq IX!3Tf舴!*HsDgl;"#PB&+N2|3d"@ܿ-HY~EEj2Xn'7ͪfr2ݵ7Gg~F*J컟z,\=OgAΓۤJ@*dʽ,;;ĶWnqݳyr{? iq. t3eP&I`9R܉AO,ҩE&{zyφ}A5c%Z hl3-4p-+ r;pIk2Eэy/GfT4ЬO\:`a;lI{ZLzPLGm40n5`'?RԮx#ƺH 4)鸔t\JiI)^JRսuG$c: נkqĖ`s`89[W{UzRd/j#Λozi〤$R:mL`g-ΚPF6t'y* bd Tl,d-jR)~USӦ_#܇utхTw5%L)U7Sg.=QNr U!ЇN Pov"pLRy0.rQgi΀~-68nFr2c%Y /C*ti] W=Ҟ -VI0X0+Η:U)H} )ߡ̠,0KRöldA<'U)? Bȱ̱%8$ԞpυX L:Q#PVtG ~Û6Z~NѴTLAۆ k ѐ#JQؤ dz`E,H  |΋Q"t'JҘiP]?g4K>PҥNؠޑO/՜v>:.asv96rH,{ٶ՗|`D ի"tVK>صyNN4܊g'%*hcd*s Iɬ@fQh)HZVn.VdE[,$b%)J2pL] ,hB(f%qj.V qq̀4*<,#髨:&P> B]ܮ]m?\CI<@}&o¦lB[>|aӖxy,/UOYf7T Ay+)cRXmC!-dO)4DGݲO͉8}AbG\[&rIt 'Ckt$O.=;准bw`X,Ox8򸝂)+F\o2! lCWıO%vxZ":(Is3'1 _-u;~I #=~d+#OS (cYiY;GBc@t>v|$},f ߳?[Ot>9a~S,WT;b-U+K6u[i>C7r&̌XEPPM̋gSF{Rѥ_f%9,!n#F΃qaΉȊߘ99ީQS2qx%癸վQj c%1CaG1o3bnvPeyPw^zvETc]^ !D;l :G62? b-ARR3Q.r!r]lo] rLwZ`q+ps^X,]Ȼ endstream endobj 584 0 obj <>/F 4/Dest[ 229 0 R/XYZ 82 193 0] /StructParent 326>> endobj 585 0 obj <>/F 4/Dest[ 229 0 R/XYZ 82 193 0] /StructParent 327>> endobj 586 0 obj <>/F 4/Dest[ 229 0 R/XYZ 82 193 0] /StructParent 328>> endobj 587 0 obj <> stream x[o77A̴I&9۸7݃̎s$5_ڑc;%^Q$E?R_?\5ӟ\]]YyޔzGgx9;>>,:Is)ha7㣔_.l(M$Ntjg8N IY'Ҭ_}j%ʉRDlᐺAhZ$QpԝcA>Gi4PevA68~xEl2uBSv8n*L@>xG 5VKjvۏ^¸j~S/tlNX\SnNTOV]f`馔!&˒ UGg3mRݳKj`B-{r E HDJ8KS,LФ;&,2`@& " yP$--)?]&>Uӟ{7p0 >>}H9XK?<[ `"~O++7^zt{,P7?`CcE^/%|e%h݅2!.Ym\b;M> e^;:AvLP eTm~}=%9W(Ysuyyy4K;I # u&j+Zo{%؜39] R{am@9Mp6q89(j \FFj#=/G~;BӔ.m"ز>!5tNRN|FVh 5n_BVls&jn;gIdoNmXݕ޼=6;xҌ2 L=BJjL9ra<a h;\lxצǺ M%4LK>igt]δ*R_P*!=sɜ^vƳ4Qa#Lp[bd= /tB뇷9Wl Z³ ۄ{l7<2y°2M"sEqaQ>DRܞiYi+(!G.Ҳ+(|[/@f+wX|뱿Gʇ]&}عXco7(+@J)cc^~9Amm"Ȁ-8/%OQ_EiCmP]|kC<4{\"(m(tA'1919,.$y4"D2Wkh!L2SmdRD+4@I-q>O7:7i:;"X :ǖ 셗 #als=}8,0f]n|帽DTu Jn#AXm6n65m6 Ն2Кf0\.m}GϔBGZ2h}'ڗge]ҭ+<>dENǸ2L (TDhWo#tq553{Mg ~,$D K{U]I=|mC2A/ [68a7/2SU[)tQ{5z$LYUrudͬ ߳j{у!KS?LEEftU/;Fƣ؇r3]Sޖq;Gnm^!F}]>s k;l<@*9fPayA>/F 4/Dest[ 232 0 R/XYZ 82 567 0] /StructParent 330>> endobj 589 0 obj <> stream x]o7݀^~ ?m\܃Y)73ՒZZ'N%q8̬Vda''gdavn_4;~3y?_L68geQWsV颬UІ]S~}xP͈c?\ХW8[5 JJ+l5;<qxGdPE@F"`\ YjR(jE\p#@cɁ͈KםA"~V(_#HƼ=B)"lȁ(RzMWgO=Hs˟;~ V&hRL [91}~=}|lfGjtLj#=9UU#(qjѠFTZ{#w*A2 ~RmO¦-dkPeJWZX*ߓ۞0@u%R1ÁMM:;$:5hL2cIoӊb",:AHnίsbvsr. Nn1Sbsv5s. fe R㇤ee6H7Z t# Qo)@~D.vhl]1 j(r%B"HW@Y BmDRͶ4syGR*wH֐b4;?a τ:r 7'8/2*IҖW:F)!퐄st>#K-(:wBddPnBxy(>W@nKHЋ H|}RI\"Uc-dYłp׽F݀¡MCHT(Qpb!"c@M*!5&ņ{~u|[O'xcP,^|oȘkL>m;0v}B,KDq&tpQG]Q!"S E]K}&MAUԡʎ% K%[(\a[\ 'z 8"vR8"oCA_ dR(-Vml"zaMڒ&kbQb|ǖqOn M% (qTako2]d,TFŦ1|~6}0w?=hTϗ@ J$ԉNMSb!NJ^_g}5qe)O}g/y)u /wEa @c A]zcjetisf`VmfTSQ6ؘ'.6e%flEW/鞁ߠgWGc3j]?W)T51_p `fs"hJg.>fH # .vpR5D®$@Wsr5}Iw?ЌрdIH #0;j IuчOS8+ϓ{Qhh.cS^o+x({Yq:{:'䝐zu^+*K^\%7W&b>^~:'ǣgaF+?6yy>G"D́6-~ 1!+6H됼Q? lqX{'#0p  j(fI)o?iQСMP`[AtF_~nIيa0`Zk*T(ipЙg]+(Q}(Mn$k#>#oO#7fN$9[KroSC*j)5HJ75ΥSzXN6 v J'\RkucJL<3%XU3-}ۆŁmؙ^lv&t,xdVm]v잱?t)_b)>mmmjD'!o]]`wWct[0s3tH;}jJi1z¤R?`pt#*x W& %\܄xh`GktPDnw$Zr8h_iƂ%ZO(,h08 }X,ХA _6n /Zh!ja|WGF##ȰGFƼ*p7a.} ^ه@XP&j> <_4@+VtmiΖfy}^6ҵf`mfm(@(S(M-Q]Ky'`KlFV96Dܔ:,@˵?.9rp[m~EZeY߼Xnz{tn9#}͍Qkqi[g]߼^l XoO)A>y9mu>Sn<1n{݂o򂋶X$ǖ=x 8ڹiE6xS7^V/m]O>~z XbIP$z1SD6[J #mhip譋#FoxO 58D`2vMu8I'ނyHmE?~Йgp = eŰ00eRY=Gu:ƧQ]̽ endstream endobj 590 0 obj <> stream xZoF7a $sEi"Mu'L':8#J3+hMG7g76mزᄏam_v}9_?޷U]W~|{~]y]gyQR\6 d?Y;?+gufg?";ׅltZ+*?̕fٷX *ET~V1#24i0BKs"YQwKdi |Jq/`2upT]ge -v;4Jtl.+.cnv[Vx)XBRC vrZȾd֬f:[>;JVҸR|(YSf U:/!U^}zu>)UzOgo7hQp|0\*f8ߘ IAsk7X{bMeGD7WI\oM(Ȣ]ۜ\ =D0ΡlĂ;ӁO)e>~KO}pTϞ2(Ah]Ƞ$MZ}x ȟc2 $S6δxHxH5XtaIՐ*%0qCܠz+ݦmgNV-UtcE@ ܬrD1Bf$4%d/,r=#%Mu7ņL/SR`6]PsHt9qW*Ja3H U`HZ)@WUk\c1B9$hD(oE$)n:U RKhR3H{cMСjDhdxB/ v~창f BZc[f H-Pu6^[(tKZT`àc_Y7bX6ݰH+E 婵]dYylxwkGT*}ivӽ5㊰1L)C-G$cYaj2y~^]]x Zce"nvo#TX=ڴ2eH9F-S5:1wUΈSÎ 5|.id(9`6P;:<f SYD)O)yzzcOً`OԨN.Yb 6W>1_ӁYQ"WM4'>Uoßzl֨`oO1kM׌lTV޿q<DH32߈IE&"HW2W> KEIZ\t)INBG]pTl$Lf|kT񢖹Qa_ħV|JdC ! +CEi*,j$1!K:VqM.Tzѧ#x8<#̀4ˉWƧCԹ4/Q7 Oag)8{Flu]dPNATTE߯ @2j*PПI'f8#R_"Ԛ atزV{Öjͦ̚=9q/ˎV{ܽ2ZEXj]K[vlheZP]~m̈́^W"8z712 i:tb'[vێEͮkɌzЮct(PQ= P*3F㮴ShSX`Ɲx\ {K.I <&c=mcxȹk;XRmbĢnE6h*%t@c?αT/*rb_epvt9,K޳޴>rj29NL9ڧM9܍)\*m0אx"Nk(=e!%^Ņc Xa"c L Hf@lszʵ!M5fOQ5&ZޚZ ޥPTu*r%oO'DR R$iU9lR ^#xDߑfb@ @e!NjqpЬCȝ1/+l)QٔsDPW6=86(VIsC8vfMqQ*EN,"ngBNe*UI]@q3~UTu^/Lr:| +#I!ω@4sj}j07n'v{}>!IP`M:94хvVwwE%$э?V׿c :a-G1VxB WtC8c>!>ղ7齍ieD $aU{K)PcH޶~?3‡K_|…Iۑ/ yioɡ|1&( ᳰ7*t\jЋ [{d n $^iMRONɳLj~OxB& endstream endobj 591 0 obj <> stream xZoF7a {^`IC[>}PduaKD.̒"Wܥhׇ;e|f8;uu{=_Tݻ/(or^ݮ^}L` i.υe7nO.'l;{32-:-i€" 5 iÃj&rb4q-S|=6( 72+49$ \ˉPO/e`;e\WO?5*hEBk"n7ab뚢A:P.'eɦ3=Y#L8txFh2F!3@CBxO"5I$4r0Bg4t=y20S3tM2Run%IЊ  s!  esjCDFg9z4R%Z:HOGb4^.3gD"OLyZ5nfR^nC7f M("V(n0AcvEf fr!Ӱl ؑ]U9z Fԙir*j9 +W(*tf'cLb{]>*#v|*כkWm_wiyYksl3۬=Uvn6=M] mup˛C YW1*6pY Vf qB]J?yyh< >s|N1B*X8lLc",$4frל.'00dR^ c]V%Y{m753&/ O ǢJkmɐqwI!3Nş}͖aR".J^Zwv96p5Ĉ&s,u-T0]Q1Vժ !rWrQՒ6E kz%xKX46su5h8z ̘NN‘ɞAGث fSvHn);xIr؀u)qђėc]tV*73_'\,HipXpt.Ob=E  9HE$(+;~}u` K' *G ;Jx'ةYAcbNO蟖#;9+vr䏏(+x5$ONPlL#JέZЉ5o{ǻ{WnR6"xE` 4BD/Zz=:exL`کXuq<.@2P/FGqN,nx8Sv6e ut5GF Π@N9DDȍoENFy(q49ӑi66vdע8m9.}q6&+6e9hqcȇ: hE桞hW>Eo'j=іgdO3qctZ= =J).tF],b+ihz(Lo  04\oD+Nugr=~rE#lu:Kj]"!iPxp|[$xB . "]ۍBʚl1TrWX%5y*T;~μ6X8lL81=Io Yi<2㳁 0 J?&L: 6^+d⦓kP[ Mru>[<TdDܪ5$ݹOu ЕJ;+&uИДx^e5t09 }VaBA3`[`aV a:+`}M(&K@Km댢II-Dew ݥ+%D;g?bv=6JxQĎ6(yLl&S dTj@G8K,B6{ĦQ}&YmtIBD7}BbZ q2sdĆ F4`~w4^rD}!i dZ<^F+ev endstream endobj 592 0 obj <> stream x[s6I2I8M'͸r׎Ym٢KMw E@`%"u./f|ymgjAӿoÓr5k+y3;j1p7/?fVIO wK40WV@8: 'DwVŰEWYuhJzú^aL/hWc8Õ_GU+7"v[ۛ9(k_EK'>1-W/T|lVgI聠-L M/4req.E Ww|TN3_szcrk{}TN3_so3{Jt7prc;\"Los 7sCQ&+=)6TP]qӤ_laxW> _a%e©f9tϫ&*[ )[JeY:A%妃]+[DcǏ6n ov=F/yPz%4Lz t,x4 k$14ء,Bw\å_ lpP `!0ГM+3U#Hd0n./jMo.-umbrEګJS\͍̩G4Sergv39׉( G7 ?ޚ;P}bZ$y,Ď!YE-YARy-6sQe 9/KwWIB5t!pʃ/U>Of ê*4L+e> 6^,5t5wLA!sD`\$ J@2!3rƌqu'0DhA]TK 22A-Ϛ: 0j(8_ӹ 6u9EfBT\:Gb]eAVIiif +k:@m9g^W`ifZ iL=nڊK -b)%|f+9N :;MRܾ c235ϕvs -SXBqY+])ِ'YU߮&Bdf3[}! [R4n>tO_ďu0&XtT4u\C)84 3nz1[òo@bWBQwm?Bs)}s$w iXF005:hdvoǻM  52A0/S\ Bd'8L ̺: O;] l6GSu˻a"N;[4(iCw,J J3D=Y.>5V߾FY[-0Clw|Y[)^u{Otԥޚ*cs~ݕ޻S 32ǯF *$UϞ"uM:]@2SyE\1U{AY=Htͼb؆:ycτ1QUL8lv{!P\1U^Tw\4Z-f`ʋ}7llO&E?c_SRaЧnBذk3 m 2zeqtK1`PYl0vHj@{/"¡H$|Eu l*t/twi-^qS+:e-]\M@D͙W@ a$w"{3yVKPAuh_<}]냘eKܤoȌV0QcMXqI endstream endobj 593 0 obj <> stream x[s6I:I4f&M郓Zm,ɕ忿(N2m%X, -ӗn~://ݴt|:vמ~h˦^>cG ƋyQR\6]?kî7GƏG|fFE.av l tZ+*\Ju{|tGd,QEDF"en URkEZp cA< iki~ 1PW@)(ha <-lvnt~B,.{޽f%SPU^Vy(~$[^֋ De?|Df`IΖ3@<4PUYHkLs^6fA![la+E>_/"-2[v B0l.VĤc`9-=DtONqʵg4ϊX)iW̨*7q`>{gm䇒cy.aHI<} F(Sdү{ ڢBaTpմt#r&zKHk;f8EljrЮ܃sq7̹ ڸQ")u8U09DY4"M:"w eP"W<eUy`UQW:tI"^ &b$;d1 6C۴ghJ**ZXg-Y,O%sSAc*vz߭;ڰ{4a4vz4=M`PI][qYj%M]ZS^+ޝ \zw@eRCz*,xŃT;ݩ؋fA,m%1e81ÂֱP/&Q nZ5E-[ zCC\ ]ZB=**' YqenE9,{XV62:HMNu"V{vsCA FuLN[QlJ|l&1Yi?5+S}uF_@u-Ů\ϓ=.Nb>@[H;xvҌL-##NBF̐Dj@\K{lk0LCxlW^q].z1D w}sWhS_p4'E6'x'`y?H.W|&.W@OK<~Xݓޗ%IBYwB?!1XCW3 B+lz3}GMtێh2 kݚϿv|Nλ$ Km4H 7vN2-ҡcm#1-obZS=aNa\zs^0QTaaKbXZAW: Q_*׋KãMHTx> stream xZo8v($m]t[/$Ԓf-ʤr)jp87--8ӶaZmU_fo.;Β83==IX (X*U4[\$fw1r?\8(RT&lSQgee_I6ӓH4'*ITz!2ԮG %@xKR(A5dx~)>?p~&fw˹pU6r~gkZ#rz<;xMӯzݴc̓]$2hQ~:iɥ`.4 l30ܷ$,cQTV%2PTl|'IqJ! fdkėd0Muo T8_5CˏY ji{^u*й+,QPtr^NLM;awh2=ohgMq 3l g:6,?-UƪzNVr;EH`F-td o^ tgu.b ui=6DgW*gT\TeS%9E0j'#t=AZ:M D.7Ax kܴZܳ_USF!F`f1u.UK [UqSMyؐ` m L5¼G~  SM>(b Gq2$ gB04-x<Ճ*萧#LkIvEu3W`$pqgc@ S ډČAPt=tHo8<},&@8ď-Gcp9Ox:|$`@ M5ZW𸝮U  Ѷ <:k.><(9\H%]xfX*?v{#؟A۵ty ~<H&BD<;5D$Y 1?@^X0_XE>L{iIJv j,|`ܱۡEM[ jZZņLJ"AkQfLFC8H }c`q}ФI @;i H=^>ڄgkJڟahԁ"1q˽{1)35qH_1;n7Adƚyޝ˿@5AxֲFX{3,Dto1|c[R\`2W2HC!$KAE+y"Wʣ0"e'!;^@zZ!83bl"!8 Dm>[%4wsB> stream xZmoD^a?:u!q:$A|(|pS j8nu;5/gfewi^uY/^}XjyjS{_~Yշ"+6;?㬀U:/*V*k ڰYufwgo%uaTu k @u^iV)|2WuٟB AR~`܉.i\* E^+ZG96 /3.+g?~. >a]~UB)oeH( u6߬[6Tb}h'k~"AR.5cW17V )ൢ)!y(m @fesKHj4'phŸyīr*rz*,tZ*x]1Wen,gxֵ(Z٥ͤw%Ҵ~bng@Sv*@#>[_s`Q۱k3WЦb`Y4--$ogC:Qӕ@d<ھGlxobژ3FC"-rX>3Ya?37D4p(b׃n>pyp(fsG"]0DdyiUC{8Y4Ewjښzj !;`EK\i[/ E 1X6twçwBU 1ou@:TN$alt;&8AbqԇymLQb;7MQ7p"I|jKI1Su{g8<)x.᫉0^1\0c"Ss O%.5Q&'G,:mUi\'MI=S?TMݾu>ꌟ[H=4}?r"8DiDZO@J8s_OoS=$,7I g=r*\{E%t3GFOo*EB JYdܾ.?G uTb$!̩E!ʃ' &T*a~$_D|P(OⅪFATb>>4xIA Ėp&t/_:Tb38DɯDK/JIg_H*<nD<@X@8FpLu}AhρyBɆ -uX~iR A eo2d9v2a 0BL&̓ex}8.SpؓIaOd#2:܊:LgdzLz̛6f*=&K1d'c&O<^li/ܩik^Do@|E&Z#ocNg[RW Ŗ3)W%Ul')b:\Cb{~Wfճ_m: E*:m\(u]GIzLeȐK\݉E.8'MS|G endstream endobj 596 0 obj <> stream x[[s۶~LLLt&uNs>02#KDgw@t6SݰX,ūmm=꫋W}?v7zMwq-VmX}}s ge75}vVVyQJ\iv}dn`wݳwƮ[`TfZɒmNq7 5yX-Tl=;}K QMD$>gni؄2/^񼑴e/Qv(Al-:|=<,A:.%,-)2WY5W2ٻj開U;cP%Pepzo_s ;_Q<%J|_HW Ѝȵvپ qgRQ)VN ,ݔP{p˲mGnV=ϳsѷ*ז~=Mo~˦R:_hwVף]h5-ۻή|mtnvjwoG;kŝ.sQk:kJb0;(oͳ%gv^e~6?f2u[M].v,yI[|S]Oh;r]͌iky Z(괋:Hp7}궷kT>Jp$LR(HM>i݄>ss~hnXǜ[1cIY4$<`nѐ P-9>D d<0e~qd?%Pm2 /~>u󇞼)lm{d&vo)56R}j1vuc~vA]4zMUd ;9 ^6[Ӌe; KK^k**ȯK:q!*gG/ 0I !x{HI)=sJqW3>rTyQ\sK!i!9UQYXA+PʼnAڷ4t9ͣӣf]k#,4L%^1ޑAcK3Sdrr4T)TB Y55d#NۢӞiN55F[^HRf a<̰ݩGǯ#iG)BiW'  ڡe|eeOR [;=f-c%*1jB*kQ(g"]Qgd^V*%C>g qSU r _YrXcG6YIX>ɕD`%Yخ(='kTl- E 8x R nH 9Sp`lILl$,u 6usf(xtGAG^P\l>(_1ޮz|@wm˅rMmP`_w 桿DY?UܽH e >حD֋hЍ4;4!?r_W|E҃bşJ[1ݙ(1<&& CAswEM"h|N 9}?ijՄx˦wROU+>vWYNMKL+$X[i2c?Wݹ;uޮHMbB9z=]Ni>s9CHoMXg4kZz^`|xG`tGAq Sz=DGz:d^a$T(M:#tgUDVcxD{fbOp5tIKN=F4Y#RSV QǏH~Nl:س!|> stream x[o77R\Q I"kM]܃QdIVz͐ڥҮdq8/ K]֋O˺$7͇˛6jV/֫$~zM^ݜ]Ѣ2#1bTA )*&7@o&wg|Ɨn'd BBQ dd tR*"F+Td;??φH;"c4TRYdR`@xQIC2RN==~}Z lkv]ژKH-vY_YV`(efhXp'`P5b5uPCc_^ry?8ƵWcCдAI3)*(!dA!$옷_$a,-?SpOP^j{\5BzĘ~n?ן)e\Yh&$ D`[gn+`m ߚbd :C9du:vnl ?8Srz!&;,h >YB~]1Ih` 9v@ֹ^:̗ \VOB+?YByV,'dE aI~2*۷2{(Ijwr?u1 Rd]o6t6XU[{$@QNWyR(34GH:=F 02E"0=VfC8UUU/4Dm5PrFUSwAASheM[z4F; ޘfQЎfqG6 ~c@ΧjBfui@ùdzSa|Y1|ul)dkVxIY jt5!$}ҦO'L viu^Ϸ1H{&5*7(ֱ\Beڛ\zxFXΈ ~^9;c%S@ZIkqUJlWAA$ju*zs\Ce-˛_hv1y*Q~EFwvG~dmw2n[i}>Q_k y8*дjI(Ѭb0SHHTeJz KpeMP~<¦G$L.$ <+0OAkf9dxLMNu;!L">LwY@hj*EgB`A3B+݇8I#}}QS59aAfh2aBQ:6^)tt)kCGO 9ʊɒA`OElB-,_& WaCEF sC>ؽA4g=χ;dM*+BNj0ޮnxŠS)sx?7۳#hG4=4IGڞݕ v4@,:ϞlƇR$!\~p@S6|^7`p;ֿ iMq,hA%s=I5Ύ?ӑ?RbJ %&DWЅrWt}9yMNlcc=q_r[2[4y=hh2s )FUkL| hXRDv_ S5!'Ou;z'~}&![CMnFg &n N`LhRnٽjӽr 98QwQXfI`T 5"lzsBۑA&tK)"B9.OcGș`kB/Ɠ 3)@ɜlBy ='L\*Ԓ V:&y&flV?;pHA<h21kM(5;C:2^y<@V?Ԓp뛇qzذ}R%N^w=o/у=xKكWtӨ@ZQ0DGa 1,}Q-,YS|Eg'˿ϊ0Yffzg| Gڧ 5 ܍Amc(>ܘ>m:2LKRmi@I *U~?[6-Ύ<^yO r#aconZðCer6>6Ô=Ҋ1 Z?$ endstream endobj 598 0 obj <> stream x[Yo7~jn!@ċ8 amZf9 *}pPZ9HX,b}js;ِoO7j꿏~1/''3F"WPJ"T~n}x@pxp=!Ꟈfjx-%#+S\FuQ)RI|eÃW:"m*CWdM(! 4`(;CAF@૛ l_Z~i0:fR2| lEl(,kPcc3_4nb@K7J:# u·>'2nSToUs;${ :uĕ{\5FaK㌿OFR9 I4Qj֫ȩ %h[ eoUg ZE9D6NNup3P;76&CdFǬXt;ᩩ g|LtU%8|e,26tMqK2deT-de_ZAkzJp3(z2)ԌDy Li2>MȲ*`R`n->5vǚFfL8bTP>yr oU` 8 GҶGG2-xdZr3Uo'7ZO夹/g?&U ,k֙ ÝJl q_UreXYeJI~#?exgv>ʀvNO+ku,qJ) IQ#.Qܒ濳sKJub%O-2P2Rv_z=sD\VMHӡ&&F68+Tա]ɠ(։ބoB>,XnԠfs& E7Lw:AǦ $pͣ[BПv3>!`Vymw?mut;\x, n;.p\g1!ŷfՐ/׆ lodT57d1Tj8!v||\%"l>.in6)o[6-Fjnrx/Nq=@ngZA1Ѩ s̠k!ԟ~;'KM^\Yƛ:J 듒(i]p^s˅ljiQ'FC>ZG%k=S7{Rxs'C$.<1 =wГZ*v4w]Z&vv(Јu*дP'YîH{-*t Bx @};Xf?jRD=ր ~6t4gaQIRv O3X/2s4'aD}^,f%mo~@6 g-atF5 ѤzmR} y PCBɄU.J? ML p:KM$+yYXܛګY'UmzM@dk!G -2/3b"G4x_jj\r̭JT& Ki%M㕖c\\NؙWXa4w1:+s|M7zwdF e¾ȬJ!= /׋eՃK%{(P]«FnfP=Id/hԑdIe࢘K7ys\ 2>.@c _l5 &k_}tBd'- JfZ:=WGn. S2k%ҏ8xDsO sܵ~ {SbI:[XFR [M!@GT BGy.T:>s*vb%F=QD0rw]poC([*| XE71-~ fesm9 g?b Ig`onhr2abB;X[=C& q[bX&D8C' endstream endobj 599 0 obj <> stream x[mo6 Ů"J+ l{Mq8lqDXNm973,&ifEm3!G7뮹/:Won٧ï痟ۦwͪkͷo7'YU˛rRgy 3mľ2vsz[Uw'fWvӓw3$(tnP&4謲RR'l]ܼ8=2V$!#HJԿ_6$w 棥8kU&qms_.>͸<~4Sǚar7PgCXbb))OC}ߴ`OBs!'}󏘠߿}-6q=s` H8Dꪪ U&6';9 ؝@Xard)S%"9#5 *PEѺۮiٰv{J͖X5 &*Y8^{unǺe'T 8= Op9Ώ^L!IǸ1S|=CU`UoL>앙u5k|b<  :j4XNmVWzAB̊r:l|&"խP>hGKvs #S=k8ʋV)P0?C.r*UП|ODrXVɩΓԭ%ϊ4-L FF> v{/Zi$R05HC@59jǵA `s uPڂw566Q4N$oQ o '<4-}BoGݳ/G$kV9F2cT;<]F) e|sW1t}@7&R_Wu4c|p- Wy2ܖ>DM1Gf^ܣn`ӳ7-~q+}Nu10R2Fdv+J j]-^=#e>Or!!}xM).WA\e)n4z' ~'3`eGƷU~UFDyAvz=VF۔jpIDR>@ GfHrIٳ)fǥFTcln;}CD/X?MBL:2/23='[ꦻC-ڻ#ί՚{WhAysOT 9 -bǚ Lct~eKS Iq,r8; vwsD(kl>7 !HLϖuh>ʌ0~ӭnfC_᧛-y5DFl__oOCS= z]_<I`P_VK!)ܞ[&={C%Y vl|5R"f]0~骧>zͶMB(o-~/( aIgRL,&LITnwO&ƨDDVp>;/|X-^.qe9m>oH郇R\p>7!zoO*đn\}iKRj$'KRR5R§.U[]|X`pԴP]_3s9 Qbv-mw_ c5qNJ[_`U")¯i$.'ҥqԐ@8FŪߑv=5AnǜG:M_H`$ Rש!J4S'1N%]RFx"C4nﻗtmzМB>(=wD)̦I!WT"d YyD7ej퉴)jҽ!t* W}WUN\eTS9QOUL'r p'BM"{b>K( |^\RP{+'14>j\ep/s-*װ*3͏(Qv/8K=HڥRQڸ5Z̸Os6J R;@f;}Dj/LT:ArIljR$|H?L#Rdb:$}<"6c7k"sDYͰ8{BL`R7V\_7HPؚ̚yn+m k+?"1\aqu{V۞H& "aLrճq:L@ x {¶2G C͖ ^Arg$\Z޲hR&.wQ75f &=ÅػmiEb0c(Cmlj]˸8=JE-YOOӚ(küܥA <9.ɘEV.\^(d'N:ƍIؚ"RIC3lj y.:m% NK[M@p]= %]&sD([a9n;XT@p%tE/p`h) Qݷ> stream x[[o~7G)hҴ Z۸8iTgp$WRߟ{å dÏ3p[__=?Vw񏫛O~Y7߰o{A0^Mn./8+g.ʚUJڰ Mcd-`7?]^|@e!avKlrZfW. ٮ{ry2NBFX)em(*8kQ4ZQw%on.#;~4졈/vyR"fwHUQU?Vźz>7~bKh"P/ƨŏ߱ƜچMacdVER2A,+E^]@QQ#U'"@5xB#`Qd׉SR\h~0\*f8طa%` XVhۊAkt9p99=u.±A\jOIǜiN|jj0;ߞ`8LL]|mŒ IIwLS}HF2X{ aFh_r`/QJ|+ Ua#a[?U'8-SH=(K]&EDG%1wсqFG󡋈 Jn?,bZ>6)ud.e!DxO|_O/~uqCj&e>vT=%ePH(J]efs[@Į';Q,3X3f}ޤ7ZEVT%Xȱܥ$ԋG1q口 إaܦc cXR౬;/cyJ>w@9Y >5lM&a:u,Bu4/xƔ]HtzHJd0S3tSl/#L4dri"c d6v/[#oyFJ=nכS8;LD ;o\&p{fu߲CK-$RB9xW lk|Bb;l Y`퇥G8|*?nhw̦T0heuv;  %c0W&t?lLL+6X:S\@08x32P"6z?u|ֹ\joQ}a4׵AUA*@~m]qw=cܴj֍^mDX?٣e+{`5'n]Xjm7.|mqlh(Mo^TJlo?K٥&]RMP%TGPT`+h7l:zy܋09 p/sK˾-d9h ]AMNu($61IXy$iEIˆ&ѼOdu,̀v]Q"* 2'12v`t)uM $#Ӌd2G"2Gg"ddxWJ2 lo!X4#c6/HE5ܦoghk%luMmuǸ4du' IdScNJbKڞۑΑ#a"`z3!*,"y|bH\b(!ix!(AD&GݺK1D3M :gA&brr4Vi5-h[R_fHB )iuJmh f$pלD`R5y.GdQ?d ED?;_B)lEX :PL6_fF=3Ui5KMd!k@Ir=&F .&(%ɠ"sQfB,Ҍ^iXe5fv2qNM!'SNrQqD(DRNH5}\V"H`h|K-(IʻQhPVni5#5#B8P/Pg]v`ЯD&%*Mnu{ڳm90?8Q="sSWlk;#ݼc;;_AXN]R]w[[e (HMvz'[ ZuA\A(18Ĵ2GRI *Ü#^(g ]nM}v;۞|o[l<!m@R5`0r &:7/"(R` &Q,K鎩Mv4IxjZ*7pE7%Hm%Bʾo!-ٔ$]JBgjYr2qCr\7Gɕs uh"h:2X\l-FSXi`*&Z;Y}3LkZ&n ФZ endstream endobj 601 0 obj <> stream x]sF3(ebz?yvN:iύչLɺʒ"Ris,)ĢX|tzf|\Ӌ==-W|:[l8?gdGYF#8/Xj"Dl`?d1GMG6~<>x`wdx -,J K5*҆ɛ㣯5PlR%Ai큡HFHQI xoBJ7~iHECBk[ڬ$Y!gb>[垴%a@J}Aه;F{kC7%Ima8`f 7D 8޺:ë́8r/dQ{XekŸ `ie_1J8Ұx, 8ZF;u+c,2QŁE^l/Kl^tpcfo E^v58EL4Ekkp:6⌣[td=Ħx-A4-lˁW#?c,%AeA,QhkDٻv ¸#vxG07ށ~ueCId8TryOR !(yBv,x $n#'jXA3<iO(XRӺ b.ƺGuA|҅/{t'7|})5-573hS ]SG v5[~ qų06t!K jMj." Y~fd?ar=hɮgVstX7Hʑn($n:NxT= q G1>AH}" <,y3G] 9H [t`<ޑtk0/[# {'Zz6vg_X]&XX,B-P'`]*O-Y6Zeo`$۽UU޷ϗg5J Krsg-V9mUKV- D-/CG@'(,ȌAō& *%0!9K1'U| 7uab+SkhP[F;1%^?+lQ!$>yoT_l'>%k&,[̛ds;x *|6 ]7hA߫by(IHhF;¹+* 5uwP "Ӱysh twvggcns8rREG^R߫.4YO)le L<9[ j,1K/ S+c6>\5Հ]2ŒL-'+6XQNge#—!swT]r5)U+sG.{.2~~"{v]J5'%z}pf'iej FW$ą R9A|\sufQaf̾CޓnCjՎ3@|ʼn"^.$Y,1YsE^~<"+]rpهÚS8U'"Jj_*7YD#|dgc uX7(Gx!a^n*9S:zaHz3iEPv`#aM-Rx52?{:=qZ> stream x]oF݀ $sE9Aڨ'DjeJ%473\J\kwE.p *QٙٙX_4wwߝ_t]9lr>{Te]vuћћyҤȣ RǢ\%ieR%JG{S$nӓ8:sz Jj$S\'DE(D"UT'7/NO0@ HsQ;% PB& O I`;CށǔóṲFK -$c6c^ƬȬY-?.7jYWjJB1 ~2?VtmZʗ!/͓,T/$O]y[83<^l%,K 1Fg˦vUi"U +pG,ضHAR,^j^"@D]S˺] ֑/V[Л3o=|䄃 \UH[&N_%,ౣ[0N™K@ 3xؽz08cHo_cya_bd^P9}fo_?*UCM+jf#8kL`8DLQjr-B7]%zW}`~>W˵HH3m#~&{ލ~= =qi6V)iawy'J`bUILqv? Q8j<&lBd&#VA(E;vw ̊ {op;Ca›)Q$dzbs>la2nb*Cu=O$O3z-b_  1ScNZ%"gmg:6S@^+L]U ,b-}mC*Z\խ : T=\gP FyP6 ~%ja^p, 6š DUF&b\.2G,U&29Y?MIj׾I!X3ʡ C՟ĸߨdk*-gxMMMGkT㨌-m{UN˘^DE]vQ"p\q*0 5)dp{ f!ߕ(FKZy[3B~NV6It NWb@^4 e'ۦnASJu­af8;R66R &O/)sm!iIiv;SzuPQ$?=8Y7^ Lv S ۤ¤TH88;RcPMRҔw1\ d-r gQȱ`a$GB‘6ΰ)?*ŔB뷷`? J:LO:;Bؙr\Y٬Oh뙝Rt9,@*dd&\eŸFoY < nGr .!S NA.G],lW_+=(aYî{ { xjGB05jXhB0?oKy-Q{a/t_Xh!<ޅ*`K PuyD/_Lla Ư =A]򝇰;*=eJc*hSNrYn3*m$-K<lwtձRih$ ad.;;%/"weֵxQb?Qu֠$:܋Fl+$ S<8Iô8'"V_C$1{ͨ$ހ0y$RZLx 1H;:jzo O7Z;8[˯et" q0s?wwfH$t.,"׿Uso5o<1l;G\d=sdM 33sJ$ߧx"xsdΑ(,8M-9Y0(vI=a{}{)\IL,"*KX U-5CEޭ}{ID$e(ܘWxql2i8]1AUGٰp}Xg}$fi]6G4ܼ9!W`WSU$05ǰKʦ+77X Ɋ!a endstream endobj 603 0 obj <> stream x]oF=@ a$}Ei\8'LD%J'QM_3ȕvWtܵQش?<Ѷ쮺_֟_~YWߕuS觗O=G,M~tGg>~3 JO'*7,:) *\EĿL$REǏi% Ow,L(!'$.ΐv1e@*fRR C˖o$co!%۽.B`cRdVǤʮwZM=[(ܱ1o.;7^Fig|hsd6 L ,U [%LR7#t̲e1nr/OE(OGXUy_Ym#$MW3xf@ ZA/NE5p(ʼnE[4/sl}8j5*5KAaL/b#yq?ZtYO H9j[d`f^a4Φ؛#\V |I?=5;N-%8~dEP Vlq" #4xpmlfCkmīX=R63<QB=X\d<}[=m%w„B>I~5_,dX`7e{Lěg2/s.ObmWڈ1y j1>FbhCЗOx oae} ЙQ5{wAwA\\qSb]T.9ARPci$ a,^5-n-[p\Wம8#DcALgW*;*}i> bsX$(RӱpMz(| mZpWhLj+$.VVp Rs<6C˸bŖ .{>`\хKGtiǹ;Pq/wEB#Urs$@) r9w|yCԪ+w9<#<$wP)XQ}jkp߰ g JnNDP@ԂW_~r~\9a=\9 p?d܅+@u'd"*7z՞#C9LO眤 J-W꼇 ׾J hcC-gF=P WD ߍpm ,B :Բد;=ĆۛFdg)E {B qUb-<.BJ[Vw][V ʺcYzI< _xo7+\_5)!! U@p]RS"xB|"~c>]^$Z$If54.kxu}f oNo9YpYŗzhJ^l[XTX^F=|4/$f|/Vd1䂨@dZP_E| p/]\X#<7/8pYv2!3WY덱${ ސ_ ] SyVAdqn;2/7rJȍбPϛrJLֶ;`Yɔn "D^8=ԽO3 JD+7%=U[m>te=&FY(Gd%x&{70Vg*/#l;U2ޠA2ю֪,˂x VJ Dģ pfvuh;qL7c^"=".oռ}p T\C,p`\ś, +9}QM=(lWeJm7՜\w|WqD *7-b 9 Cx :5+hmDIzxI¹S^Gk Ȟ>۔H K^d_KS`tÂ6`*)n?& S9Rʢ1hMF3Hh,fր/0:Lڟs~D+P|moXٌvVS5y'E fx㠦ñZ;4 !bC%,={ $%O^*Ү41gH1oQ!/ 1mxX [L5j\LG"(q2^ *yv"ELaLC =$v%d9vF unԆ3Wc>]>2l}d{iigaj|\ᩳlW\ю,{LC[v Ʋd2Ų3Udo؜x/^cۙ+.IQ6~V;!Xh76Lk\dXeHʃq;1ڸs 1L19*]{ΝZTjCX7U*ٯdbU;6մȝG6HA B9fM|?rEftS!s~6q I.,̏SNjy2\8d$ItY^/ ZRi~o#37I᪒Ӻ)ELbz{!͓0ǰ1Hԅ3QEQ飇 uj@=@f7j05 \VT;)]^HϋL5m(ok߭BF}x y~@ΘtC $o`|MMfx]xiCOޘ J3SQ"8XX=5ˆ4i:B.?p)DJmth ZOLL#[jśjK#][n+] d<ᗦt]uo}顾Э@//us'2ِ`/5-6!o&-%eG wnje`)R/׾U-*k|bS.+K YH/ i$*P^zaʂzSFWJjZ.U2.C[f2y*8YU!\Q#xSo?e|~K!Zϖ ,=yr.^HLu}mh#3 ̮(&1S$&V?!#01řȈC͇v26<1fd|.)6Y($YeaEeޘλjl4Cmp6fz8_m <O|`j_>(r?òlh8z#whesIn- KplL!9P /L@EWԿK ܴ K<ISLY56in͂i4 7Myy { endstream endobj 604 0 obj <> stream x\s۶޻EHJK^ulM}HAqD7Gly[?,&e5uf& ;{jy1k?lbvWްf˲<(nhGӫs'g90铘Eo2FK b@C铈87O\3'?(LQ(# \yI |PH*>?{C4QFD =cn W׭G&"^0 c `>l. l=MAꎻ)ͱ,cdCQDjY.\k1Pr e?rXdplR &,da @a$pc[,;~Y-Ay D- %aSj^QsN'P֫d)a)hV*BIu>0Hk4Ziaͽy9p2Fo< ^e61r܏ ИC@QY@OO;#\Ox-9 }#`1Ĉ((~yxXn(" Ǐ=4ϳ&R{Јm dAz@EA44Mr#M0w@yql*d_cF$ R2,qnwg !{x}XwDEǧ`l19W9*vϛo˿۱1SлQc6=1wx([q2gq<joBs~a}aK}aHr$0G 7({ 04f4W*Ŵou{r oo\έ\Q]L´+$ h*ߜ`Uݠ Z(}>pW`;[ćxO`0C t 8Q;PgT #H*]aʠ\dP ʹ+u((ΰhP)({~WK=?zF6'4=A-6'4\: ^'FqY ߮{(c;|d])UUlگxNrLؼp fbOb4TSӔ y&OSF v\8$\ڜ^=qfRDmjn$Hs2aiɧЧ=:qQy} LZ3m8ІF|.E?\B&vpb:#NxK3щEpbЗTS 2|8qP2CE26LKC嬠K2o@:#Da.<3!UUR(:91~RUjzfK3R#ke۾L,R! Vqʢ-c.en|`jn b|Yw5EUQ1J1_44ښ71T%>@Q`4xd}/@E~tY\ 1BSXwLyht&@zkOb51\l "|C4w @B߈`Vtrv vV5+ؗ=qi ;œZsAFZ¸ :PkWGD}tPBTZ VVk^6d*+'9-~8ᩏVjޔhNYm|VL$qŹZU"˱a.Jp `9nZu$K`g\ש({fJ;!"eS|:gٌ+u1 HeXM +JcVPH3d=<>51Wjay\x{5wMGG]I`zLǁhLP- j[r]0;@k}Т1%MW{H_xKx=VNT8F,cY8 e۾|gq-cH/`o;w \,6m+߬ Ji7br)E=r\yQSg6s]n%c_eXg"AqBҏ{Z$oZ+Bvc98&m;j;whԜzCqt]ULsw񐨎<'gHX5"ST6T Ȼ  O߮>;f~b1{gni&f* IR37֩3ww匴7;`=;u^k.R-?n TբXun8p{bA]3RAWاd1ԭ*כUTbҍo7|{˺e:`u_XSE;%a3av3*QF`MnK6|9yM"r?£t&]akfDl0fw⦢k[Rqm]u0:fEFQC(vޠRm!&\e/B\)QJ|cw@jWfiOfߡƚ3> stream x\o6_ Ů"%Ih]ȉɕ3C}"i%5mQ6|q~#fʗ 曋M/{v{qSm\|ứuU~-}wsgQd)YXF,0eX' sU凳W vt{`fq5.*b`iRd٫?Z"R"R$Q5+]t2RX ]D({a,oLGekŠCn_/[BXG6E&, vquY&}qܲt/F+·>'5%ImaB̒0@q# LE/KqÑ;~i AyDpW0 ~5l0x T˂SegP-'Ь]1m Jsbjsank Qdl61vS}6o)Z!p 4EJp\~~:T.qlO1#P0~d<>x7n Ǐ$gh)Z]҈Id vDBZƤ55;{8mF6=0dÐFQ`0¯ݯtb,bC[%y(/e{?q"0÷P`x}9Mˏæ05r>"@Z [*I>f;a-ڨQ#lW55ZqQ3poXK3–Sdr'3b p=3B`jn1'<@ H9a-ZobNX;P,׶;*1s= c%;L#CWA{megM!SĦOlifƦBe66CSwP0uv|ô(Pfװ0uv ġ3Bdqe3D ׄT 6j=̦W"aik֞2xD 5&Yy:khNS$B d107`d{VԨj&+dBi!} 7?;:]׫U#uQ6αF(R [KV[-%~`DݺBep DBMa7J2q2L(޽sIzbdL X Rʮǎ]5R\SXokW~g\\uFv/Xd!ˌ6?^Vi}Zx=[ҚԞd˼~\F`WyUų@ -v]!Sfw u}]_-f0FX=V{/Hc=։Ŋ=}تIh^ PmU%ڨqC&Nڈ8Ik#Vy}G\>/߱O9`[woEޢ\O i M3h ,!߹rSMJVp$H>3{2(™wt ?V+V)@log .B~m5[)bB;Fmɭa$ycSH q wa,|ª7p7?Utl\mMyݬ Rf_t(@b)AS-]O zļoƤgS0`S#%HW"*%g9J.AuUUn\A9s@x!?cKE]W3(ʣéYwCnY|8sH.et̎2sc$:\vu5?m-oHԆӃ=9&{GW)PK9m Ddź2I4 ܫ!1M6=|>U+֭tIU4Hș7=lE:ܫAѱo7eQº!خlf0v !zf%xNr7!:&SKd HU 9YůHPpN1/yU6 ݶ{SXИ---D/Щ?jIz0F"¯r,wNc82:煈ۘGD< < =➵~ ڿ n q;05K2qc:tCK`N /D\ LIvtM.tq!nx;=4Ԯ{rLڎ4\1#Oyl`Ǎ^XOr`y #WM)e:bPiݺ;\jN>M6dmI68ـ #zr(fw?Ԇ#?5h6eBsRenfȒ|lSDY'P@2eg[讍 @NCFeE?mGVh<[F&О֞ڋ~Nd@OY3>+D`YO 31iGP\*t]W_ wĎCc>(Aӱn0WD`Yԣ9(^pTWv  zd_/ nn`l7{Db#Xk(vWdjիdɷ} j7u@N#$ߡWd]5}"Z@6°t%nPݱ<~R(~Nb I#!i kJFu#F-G(/,:}t/ e3*p,!AV3Regv>~ybn{Jmho1d4mf*1< K endstream endobj 606 0 obj <> stream xZ[o7~7G)Ǽ- Yݴb>(QaK%/ !)*qt,\xs!7i[__/o?ȻfmvyZ/ow߿&-./Ѧ3dqwyPCZ~4]^Pr./6E5<[)N1O&Syq/ϤL[.is|60 %dÀ_v mgh;H}7c 맍` yzx~k̆!d'1%v)efoWawٞ;bCL'J~5!o1*~{B}aIx6-  IKU뭚A6TeE, Q L#CyCS'ZyUc#żşŒqEfB`Xڤ@ -Y4?LݢdY̳e׹i3 CfigNZDLE G!T6d9\b,2y2ѩE-j}fT*mqaɚdP ڮ3g8+?,%"0P*< 8abT`D`kbٸhS>tjT~>f7ǹf~gJ_~yO18:ῒ.X`8;K|ެ]÷a4&At>n_TRacn:.v6m4pKK28@T!:e^` R+~ѱYIp#msZ`lGǑd!`L,Y ʦ5U:S{W3c4g\Ͳucٲ6Upr#v8Da^#ەm咞v6!aIY? ,ي - AVtS_q8}m/#XyO$=1)T7Hӝ83699'f.RS[9( YD`D4lDJ%KNc`" zP >ԣ,*70׳ЀHwW^S؀Ho*KUԗ@U׍D qٕHJR*<E~bi@H XT `IfuV)8Tnmؼ,, [Lu,3J\ۥtpzN D pu620{qE{CFʽAJ@B՜% $µ,#VFx?D?<۞vY] 0lD%Ca!Mn]X֔H.:YU"em*b**{F j"d\bubȝX!YpE(Xvњa83Hyghy^Wv]e" 1Nk+K.+fFrb&a!;@1XMN1,rop͵ l.U7!@:ބ8~Dp[&XCh'9!'\qCrIU9YZv:i1uQT {XW'w'M/rQ,(';(-`ȾFy*_] n(ŽUw)T~SK7+7K,{8*YV n)C줨0yT 'N T7'+8S.skQԗ¥0QEgkM PJ|D'(cȝ/Ps|dMܵڄN\ZaQ #\K41(9d|-x-QU^QX %W! :5/,Br`NW{Ci4UY{KEdߡb/VͰ8-*v_=i jf\fʿЧYX(v:]CV`kZgHUC[֞3y{>l 'jUDܟOBГ$8 ?$˾ zԦ6cCw2*pɖ EjG>/F 4/Dest[ 128 0 R/XYZ 82 664 0] /StructParent 349>> endobj 608 0 obj <>/F 4/Dest[ 128 0 R/XYZ 82 664 0] /StructParent 350>> endobj 609 0 obj <> stream x]o8@{Q+R$% vCmRCZ,[v|ul3CJlR9lp8/ΌHxrZG?U]j]l?^\庬O?Euz[dR%r9I(r"Utu`?_*Z>I~u|@LR=LhpI!Q1e dDhW=}2? @9)NPCᔚITLK>)͂! i_Mc&k=l, <|x̚!`1F!0u|V{ cFoޝFы wge8N]ʗ,]u=$!6L$B'NTÕ:T11B ;.ۻOq<"߯OxZx9y=Uvye9CHp+ MYlW%s| e.v˵Q%q}d4,JϪmǺ舼*ڝ<Ͻ2Rr)##S0fV& "~&5]ywcU;amI=/XY\ngC閘|];}֛\PI0L MU K&8"NńA'Sz6CM'p4^U'UE٦j9TjN~kQZ\gkDtۖU(}aZ.kbKen.vjcIY\p ]&D@(JO?&YݑUۦ{9 R.̜?A\ZϚT0OAg\>`d5X[z;3)gzB۔eߐ1t`{N|DA 9+[W^$wm͆,V ʹH]Uk 0,;)5>;=H5ONi'VtYt|U.)y:34ܣSt9_f !&Y>JЃ%ޕIVfp=9"E$mVl`#yI*S2A0H;S+ U7s/Dej^} _mff\&|)Dt`9OXaVa J bK{2^1E;Q4BI¸ Q÷(+OQt3mջ7 މ_JLg$p >Oc-(6~hOh LmAhC,r1ܶCg)HM7 ߮Z,_й9e:e ۘXsl$=@ղ?cwP=gAL.Ir1ڊ\t#iaZAF ^͈[p]FR\Ǚ w1(%wY9RVrE7ݡzD$|x H?b2:.ctgcN$rD "^ۨFu ^Ⱦl wmDcVe͢bjR骜l㈴ *ŦIZ[l>3iLm$`z[曎2_pЀ2ӷJ$ C$![I',LO#'0SEq$PIƳ4M{40T?ڽn 2.MmjJw12a8WaR\ FiHuPD5[E%4z'!ڊMH E^ }ց1J1,ɍ>k3r_ךK* 逸gIݘ]V:]NЌWM%%A|ie/w`F."Dz5V]cEBRSn\:D7X θU1"!{bզl9ޙxl7jtYPњ0o4-HcbW!I"F?xʉxH9$()ge7ȬQL،컴RڔCzX!eӍwQ-E: [`FԘʶHn}˕- zPa+ր#R9Z-mdC ,kW!1\9C (بb鈢r|ćjVxըԋ3${TꕹQp.)g|I[$4ad5$\3xJ PbPI|ks-ȸ|.c9b 荬dܿ#2-hyn޿,%7S-پ'zvW}݈wEn%m5YD_i qw fTh־6;}Q *D#v*m^4KGx+Āw -(ȳ2Vr床L/oNh%LLXBt.cE4W]CK@2Ӯz!HU롹STOрWmZ}Kv|:Mg--#3Rnz0NϪFzT8Y UOi$CTʗ$c \z) 5S{Y;wK{1a5&ZTa\yӉR4ճ"I,A4Qhn"@k6‘MFU8&OVZ 2{۬<)!WQ88YNv:}}*?K\1M=|_tJe͠+eIP.bs]DfN<L5A&L_2шE :C(&ScGoFv-H{Q W_Vpai_L5w\gu>iWt@YG%+GyTF WѾ H'xNyEC :JG{a?;1"xqF{>8#74`)odT96 3޾cx8a"XX FߨE+qaja. E$8D+C`Pm}#m h/e,u)pO2aUFxZwO'Ei7޳aqjT9:EOGx0A8 7?^a shiLwgl$Ni noŠߤܯ,^ܣf`N VJ^ .6/RP QZF{#0{HUvծfٱgVe~,ջrMn Z#o$mzZ']nB~:B/Iളl9k|>[{=^F>{0}lg૳>. AﻚE9|ӯy܍zId4a:+z "z ^ /Khzۑ+X~ԆKECN_㻼mfuSf6 k Qus5XuW#0d]8x~ UN[+5ʫ`C,{6<t7ِ^( t6WoL$F^vWSl49Vh{u endstream endobj 610 0 obj <> stream x]s3f" dV;JXAt PCNﻻHyw]'$E._Y7bڰ~xic9cnW7ϫU0_ͼZ#{sWIg Y$cұ6勄=^3<%ub5UN qYXi._; edA)wl;CFzҵT1x-\iH;Иp fzq|m{ipe~ ,P㛃^!0)2s^]t,=$e\Ġ$|vQc#8D-TkF斂%43@:NTqSIJuTZJI…fgpqiNo;M:bLNhy#a+cN/O};}CKbn9Uy}ɳ807y{J1La1X M ['1&Cx %X KOdcR;ig_ Q29$=H@D0a\JMJz^Nfpg D Q6m!¯tL&2V-9qlGcc+s<-|@LFO5躘idh-*OQpw] 7RfH@jBH>R{>Va)^ :7NZn˲޹v\0\[ֹ,sqWȔi̇ō߻$HCr79S_(evFA"< NC9t"dIpQbH槫ˋ.~ynx\E™uq]<:YcmI4Zd5v;=Cc @F+\1 Hlgh¤xu%; rWLX9^Q1\Wt`N`lc:0@Ձna1]M7s.$Ӆ3i-s ˕8[c+]a!w=Zڲ+L&upcW.$SN=3Iel-Ci :W`Pb_'|˷ bt$9:x CWr4ܸuv w=@w tan;=|>ѩCҫ"T§yܒYzv|wS[glx=Lw0 H,S./L #g20rG Ib]`*r]l`abr;sc,&[OK@AȂ~0flU)rYa ed"I`痓3}WոMS%̔ ca,zVy Hn)_ ~.Y.D .\=l,.oؼfzMl;%BvojMY|ˌ! M 6]9DQ9cprI&➮T)Dݬ}2C3._†&R<g n Le;2p^PV>PBX\^_P`+ۘ^W(Zo83hF`C}4Cewdn$؇6y{:r]ػ _N)̧xMdPѪ %,kB&Xg)8^BVewy(AJrhD +͑zƧ&UR!EÝnONXo:z,lD [=,-DDaJeSyL16/G 8ɞ;@6;KUT7ǐ`  `ly'xlWYN7MItMgij8v]< (~֭^ βN/^ ްaj.Z<9zZa3 QSy om"hay:8x}⃀stJ#l.OT,h.zNB~4 p$4b MmP\ŪZuG*lZ7ivua|^uz~G+6v؋;F_\@̞jћJݡ)'BFj#=X6\wqF-uF'72s؏!1=vw,p{kzy,>u9z"Wꑲ>2Sޱȱ4qؑ0}R(9И73`yMf!v+2H#ȭI 8sV+XȌopBf~7UJI]@Ѧ4Nۺ\=[q'c;> stream xY[oJ~j!hG)my}0Zv33uv *'owU&i^8>$nxZ.E2ϋKkjzxp|.8bY bҾ6lzbobAx{x0M><8E/aPq9-kPf'l>;< F("!#HJԿX1$'.uNh|Z"/8v1`4y\ ˏO Z8}ꖠn 8~8r1&fxk̻ZDzy19RޜjLN[.R(%,Ôx;@~x Z"4<#BW"\!-/U{xq{/EP{ZEOB v_Y .4;/K e{1}lCK6i$Y5$un?0H>Ma.'66^2Cd(A&g46{ؠ M4u1DfV#!@j~j~Ma8@/䷑fr>J|5Ƈ['{Z Uq"m,iITTFM_T}㦠lwz!@t"M9"j.QaSN[.(#mftd0{Q_e^YJ45mkkpߕ}io+ߎ F+@KU;*Z8kC9C"_+p4ҵ(h5?I tel3\W#}xvyNGWu1NSERBAJ (WBE2(Q.BPP/J.FPpp=cռ2kLto§a6v+ڍf?J H,VIrD%?AӄOƆ1O 1`]?q率Mu*"S;1Yovn,'`d94AئsUD5_V wdX3麆kA7N ]RRwo%~ b5 -[tߴ'Gwuԍ.*Q`M?i؞plQʓ.JM:tVy*A:[U'pE3zǍ=c\ph tRmes8NoG8P(oK&EV`)X^c 22١8cw&!㾹6 ݜ5һ(ԀK3!NW+Jɑ}+M^̛YndEٛG^eAapnK+ VQJu‚ 4xܷ1%"'EET9yQc\RJbO(o&H 0?e)7$!aƍ{ i<Vka͙' -񄭫^K6T_ѠV%lcpn(n7IhܱŪ^%EK8 DaiTUz[;A&R"bpSQm+c?x݋>SNwqIYz a dO_?.U,g,u U] YE ,!qL$K$\V m:DV3aolxDfbU3Qx|&Ci{{] endstream endobj 612 0 obj <> stream xWmkHn؏r9Jm@z1%*+8YY2!fVVuR-3kj_gQ\ )ِw]]EiVDuVy܏0Y?gxH_*4Yo>$3r==8d>@ KF`@!  $2A"d>{|3w4ҍQ`47VX6 4U0̝a u0%:u|Oc!%eX2"}F=M@R9E/s2$bTXE+B;d=zDi"z>aS8'|lӡmKzv+`JSw'?J9?:dțמLL(6DӚJ~o8*2D2U' FsS~ܤbu}st`|Es,h*u?SШO9)!+x{?8# ;{(U`o17!HstaT׻b+{yJ'Oc_m+Si 1HeOe1yrW{˅&Z,}琦 ^G@Ǫ,*l(0nȷCJ3vk*+\U1뎛f]tr'Q3 *| n5~k~') U}Ӭ@@OM@LO=yFRvM [RP )zc l6Y;SpAI^;ؐK,q-yt%?W.ǨTe' j]۬M[p|& 5@RyVpfm(|FHfS" DN!ļ5ҦO?">1@aZMbt]BS ѵ?DGpw!5/>M!Ww7ۍž0gIQh]Jg)^_ f \<5Z0BOͷ㰐vQlJjr@m&Rͯ8Sf`A endstream endobj 613 0 obj <>/F 4/A<>/StructParent 355>> endobj 614 0 obj <> endobj 615 0 obj <> endobj 616 0 obj <> endobj 617 0 obj <> endobj 618 0 obj <> endobj 619 0 obj <> endobj 620 0 obj <> endobj 621 0 obj <> endobj 622 0 obj <> endobj 623 0 obj <> endobj 624 0 obj <> endobj 625 0 obj <> endobj 626 0 obj <> endobj 627 0 obj <> endobj 628 0 obj <> endobj 629 0 obj <> endobj 630 0 obj <> endobj 631 0 obj <> endobj 632 0 obj <> endobj 633 0 obj <> endobj 634 0 obj <> endobj 635 0 obj <> endobj 636 0 obj <> endobj 637 0 obj <> endobj 638 0 obj <> endobj 639 0 obj <> endobj 640 0 obj <> endobj 641 0 obj <> endobj 642 0 obj <> endobj 643 0 obj <> endobj 644 0 obj <> endobj 645 0 obj <> endobj 646 0 obj <> endobj 647 0 obj <> endobj 648 0 obj <> endobj 649 0 obj <> endobj 650 0 obj <> endobj 651 0 obj <> endobj 652 0 obj <> endobj 653 0 obj <> endobj 654 0 obj <> endobj 655 0 obj <> endobj 656 0 obj <> endobj 657 0 obj <> endobj 658 0 obj <> endobj 659 0 obj <> endobj 660 0 obj <> endobj 661 0 obj <> endobj 662 0 obj <> endobj 663 0 obj <> endobj 664 0 obj <> endobj 665 0 obj <> endobj 666 0 obj <> endobj 667 0 obj <> endobj 668 0 obj <> endobj 669 0 obj <> endobj 670 0 obj < Chromaticity \(Black body\)) /Parent 615 0 R/Dest[ 172 0 R/XYZ 82 721 0] /Prev 669 0 R/Next 671 0 R>> endobj 671 0 obj <> endobj 672 0 obj <> endobj 673 0 obj <> endobj 674 0 obj <> endobj 675 0 obj <> endobj 676 0 obj <> endobj 677 0 obj <> endobj 678 0 obj <> endobj 679 0 obj <> endobj 680 0 obj <> endobj 681 0 obj <> endobj 682 0 obj <> endobj 683 0 obj <> endobj 684 0 obj <> endobj 685 0 obj <> endobj 686 0 obj <> endobj 687 0 obj <> endobj 688 0 obj <> endobj 689 0 obj <> endobj 690 0 obj <> endobj 691 0 obj <> endobj 692 0 obj <> endobj 693 0 obj <> endobj 694 0 obj <> endobj 695 0 obj <> endobj 696 0 obj <> endobj 703 0 obj <> stream x]]$q}0΋n*0 (; A7#z&rwwXEO*ݶ[-y支rY[t[o5ފ@K7 &;wӈqߴ}~-F !aT<g'\fXpA(ě 6 Bį4'.s9CL%@sQ ,\nf|4ko~۰oyL!D 7m)rb(t13L4'*LМ#hδÞKfh 4+=Y34t a @!<"{\NްTBH9CP mT&GWAXR # R𷔀8٠9A:)FJ\I9B ЬT[r*@^f\!3.1= xځ,(DQs]̌$2'@U*D fe"Hq,:[PXx {{D#($EL *D "$(iBnCTH 1X h"Y >HPa]P!bf(xDTӍ&0 Q!bPQ"!*p8)A : LJ O7*6VhBo*] 5k-.Pa%  )T^QVǐtA\s>!W h!A ͑RD 8ۀBAs6D$#V6Q !L[u%.qQ3Wf V!: ,xsNэ% 跍6rDY6~CW]CG6F;%JրGE8"9JASRJut̋ njawIaDz`vU&GOSO  9eD2+D0Q,Șr#L)5xHoCt\D \μ62}@m0o0[tmPH:P lč>V!+F lDO$>HDvN$2ۊx6ݚh#׸ D$ʹLԯF YPbm 𣤔;EC"^ +@6xACO.!#ADAU$qȖ8OKZDfPy&3ɐ98GX9 %Gr l PRJ-9r2Αt%S"^a΅5y <3=+*LQH@$&FzMAHI m0CįPӑuV}kOi,U"cģN&htZ@kLimI}`Rl |`c,E7t㿑UJ?(Go5SOHH?9Er$)y=uՍe@mƿkQ߀a`j sUp k X'ǽzKM|obdn D gcȞI;GRT7bo 0U@:DJ Hu5YCCiEjbS%;qkOPzgvH (YǓ*PY#5:ՓKPX'M_Ko|z?y?o{oݞ|{ |o~6_ɰϿ}WoWӍߦkϿ']f6-I?V1`+WiuK}_y/|?{~glKcܜ|8ȕ63*(bq?H۠|t O֥V3ڊj \IaP\Ł/sU%״PbsM&QE-Qj j5kBCM0F1FAKԄp`F^rMCM0FgfԸmX6&&aĆh͎1 L 88 wcCN!'LT#gDNjI'ȉv\"Ԑ Sؑ3qZ"'5$;r.qjIFęs9%rrCN>AN#!熜lDδf9!' '/rnFLyW!%rJCN9AN6#_"ҐSșbG@eҐSNSȹDȥ!ؐ\,# 9rbG%B!'Nؑ3,# 9r#!KCfQ3r@ȲD6 r~DڐFLjFNYц=A.693BM/Brdۑ+esؑsۚ5sҌe#'VȑҔmYvT_l_!䶦zYY,ΎDkqshY۾BmMr93E6Z"583rBnk1-i';DNkIXxۚSsfg+=è%rZXNboKbiXq eYZYNbo K:b 48,,'-d%Bn=d1e {9 !K!IY=t[Y=drB^备,rDȭ,9b!=di=d9!.r!Sα@CNCYB=4,,'=d%Bn=d rg[?=M޿魊~*~NJ^AbEٮ{}:ie|}W3$;?Pi8 ӫ>LaP9~Z`;?t7{2!gM3-HSZ+dX'86A=odŊfM4?$8l$ߑtx_!3OfMEoLox?!zý{ {cz߽%U/zs-9OrV&)'>Z^{?̇>4Ѻ)'9Viǥb0N|;Ge#3"-q;墏: G~ںA'9hiqp k>JGɆ#?adfH)iy'ENIɈ$^ZYPJ J//vXF,9o,G^^Nn<a"s玥lŒLn_T:\yKR1bi,XɻT:^yKR1bϱng޲ƒt,aycIX sɺ}rdoYcI: K˧ؿұ$F, P>庽}rdo]cI; KDzؿڱV,sܺ}rdo]chtgy΄Z4=uÖXr,(ZۿޮmfRVn>8l%[n;[>5v6#4ܺ}ҏXnΰ|tˋkz9#ֽcqRov;w3\^_co׻[7YqKsy/0y)O%n}rdoƒXgXZ>EK~%4FmAX1_*m}wƞ[>KŹ-vt;NJ=ɩG]ς.jz@0>#W$h[VgUjr{CC7PKP<4_ǯwpũ_e+z |hOC{  p/)iHǍb|!礇VQ3ݯPW}d[A~1#C#C#A> ~w_I=}R?TҀklT'57_D3e|w1-I endstream endobj 1213 0 obj <> stream x]M,9#Pv JHlF3XwǏS/,.ǎ#q%SLG8b r01[V4HhGzdѯS O蠊R>XADtHO(*JD# SGkЏwd  tAzf}+gTm83JĐOgʨ$YY*zU5#JЊ}VDR=T}YՕt:kgQ)3VXVϴgaێT"2ZZʭU06e`*xz)ڪYYh&WfW^6I*:0JѹgƷ%eRb3طsMhFCʹӘ[ttiEKU\EF/*8%N %CrEemHhƫ$6T+h,@jڳ4BOI'4N5ß*ͯ !| Y! Lk+i H̪Nf֡*$e&Д2۷ڳstp‚kdDKk 䆑g^ j%BY Tb1e@j <`Æ CYE j"0F'%Z AV [jҬ?| )K%x?S$Ӗ dBqUD!x@g Y-_G)MZ Ry(SkjoU{N]T}e=R#\AemԒ+h+̟ VY |'״e S)k5V YWiE}(<ڤ`oYhpKڪGML[ *1uV1^Ԧt[]fUq+b*A5նj(pHYm:`@!H,d6DB=vYvE#Cgd Kh86AHPaNOh&`=ϞE䉦*x*`Ԧym*M6 RO MHmN>2" ASt&P ߱`@Ҭ T@N!~SPѴoi2%Xf3bY q@Q$ Ob\P2 :9<LC?dAa(y C>=`$fP"(16C Ej&N4{csEQ &aX؜l2kHw_,i*@6}Ct:e2lH9T'!R >D#aOCے2,Uc`M VI WQN60T6CJ2< Hl\Ȟ `-"< DЖSWKL6BFBH/V 6a4!X5S a H6U\~wRЖjوmsХYe &:ϒbi i3i,0HT,UЮ6 gS-82|I,!CrIcaTX5AXh҂2 `poe VCmv if Lsmpׄp+gSq[ܪ5[N0&5L:ٌZeҜ2ջZK-mbb9[546HeM_s>0ɶTlMt֢%iMcDĤ3 0ϙ:rMX388twxjH1lj,t@@85Zb2妪ԎiEhIƢ ԔWXn*NTWCcQ>,7BTf"tDXUl iWiCLOc]x]Y&cЄq,ntYnOY&Mz\W[qhH0ǤMqXM$'x VAtY G[LH@I63:g^6aҵ2ͼkruXXlgⴓ>>h^e` \7y#(,>`kTs] 'k#Ă) D;Ѓ2$[X Y`R,g; TЦO XikRnbH0(p b W%b!l&L32p0^א ,iF>MhZLgML<ɰSՒ6#Xjr`:[) jӴP IĒI@*v!٧*Y> N2ӌ jb@blJXv"~:Ԧ_#<6*CJ=QQIRXTl6 ^6SJ ddWLhz[i5!p+-Y_ҰӦrk F ," J%4a­4a—0f?,GfIv2i*CIhխ`4+ن&Wԗh!֦X$K05oҦe'%JP+ -Ң]' f12pef^hU`AC=n蒡Xjte mc)6/s3?~O߾_O? u<ۃE~g,>skw#2!k#2;\=][r'] KɄr9JȻL,TF]hvFnaE|%ԣ#ܱ˄lrPKh$2r [ Q.d¹G3^(f7]ˣL ^&.\-L.%ܓC隗1X.zu?"J;RԙP=2̛}ی>yS&ݑW;Di(ф^Jvʵ{Da9\bfb٢Rq>CŸyQ!;DC;DCTvQۚ=Hla"n"n"n"n"n#n!#Π~1GD^PRI;{?wdw$ZHw%WugKvG5Ȼ!y'lsG.;ͨVE.zDME/wd9P<_x1kAsxȥKAi?ߊFQ3_l !Ĵύc[ ;.[vGv]_k ;<ۑ;|G6XNbMG?o Ͻq7sń܋ /_>5cG[zGvӆN?t=YSa\0Qf<& ݜeG}w>Nq[0#Wb9Fٽ8\rE>=GˢKzbtqka4Ƃr@|Gv%Ad͈gTz4/ 28aP\0(3r=q699S>'tJw eyQX:J>(YX/X\^t9J9zsѻ(~G15uEGS}\wdQ#7vW=WE({mvr@^hhX\gypѰz6{0\0Q7gzM͙Xqzv7Uѷ֝oBw[^o4#Wb9Z=(Yغ5'ޢ1;n/~3qǁRG5G tG7`qvŧ.!~oCl^螯k>F q9Ř%@V1f$w)::{GTW'I"2.@}^lB5Zv q,z#pG7C۝1xFi^6yZ/~$wtaE'8K-~Bݠo7`[s[W~B^֋ 1@|B^! !KajBBBB^%+!qF|'Y3jy!qT!C4 zHsu*"^TzK8pˆ,U"^o?9|@8WFȫze$2 ǁz;u-~SWG";[dᰛN|v s>j WKPB&}n)ݛrwRF~$5@nNJjtxGw\i?za}xOB{NBɴG;p(3]27}rPzWK `q:*CS;?ܱUGA&r'fRHSі{sw>yԳ^lb>/c>O n}v|oUݒ/dFs46&Rnz4u Ԕ>%Q$Q~ Ar>eev s#s )#5)Gxϱ=4T{;ْA![2 ~ت;agzD[Ⱦ [\l-emKڛEpŠgT_FkGuV" &t endstream endobj 1718 0 obj <> stream x]ˎH#v$$F3C,4B<,{"mӷMON2+3ϹKh/%)%J!-ژuqYRuI%.6pi]j),m@‹S^,TB])F;MUTjklX9ʨKCY,!ˮ2,c"ʴ Uy? tJD%@~RYjRj:0uiR!y%Y^XQQQђьD.։hѹҒ֕ED7!$MQڠ(E%FXX]:WA!7 *_ԂVz4fHm]@uy rJBa]5+gҕ3LQ4TbUQ#(%Ho9E^3lY*Л,tlD"޻ƂHU~CVRba:`II[ج2M+;\[%tLg_li}kg:U_" +=ֹnQ\Mf-_Mhڰ:vtTM3Oim-m4ېljBkwֆu,_ձ[6c妙4N5MjBe#ٰ:vtT妙4m'FMd:vtT /Sw]-`C >"[ֱrUSwӄ]-ە~_8|~޶@~>q7s}1s1/}쨯G|<9/k̡k̡)`r f+ 0:vBc]ԥ3  :0`w?"n+ Vx`ZV<3s@ s(_Bq \(s\>NʯPguB(z@)qN r,~Ntnxg./Ʌr(8u;r1]'? <5|]YϮN\).Ts9Ŝ*,υ}:~:[l:s]f9bc.昋9vWƇ1}jZ|3|L><|a:f$c{7ǎBeET?|zc R_N/FJ0_}fh'&Buj5 .+$ŀ Fǡ$yh(ύwr_sYcݺ+&.LH(W).W@ G[C< ~zȳ[C@{͵Ss\5{bowy^c}g< ќC%?:Pͅ2"Pq"nrq h8z&pJMi`Woz[Ҥ\˫U_o vf՗qe䛰}F_nDۍF:͡\UHu񺺪Hu>#8Κ~zhir~<'梁h`.45h<υsߞt̅s¸>:^ݞ[a${PǙ*PccCbX'\Ǚgc9+@ $ʕEJ/9X}l8It\Tl.*6EEss\d37ō%)*g/O`e x /sBs /s(W8eU]@s0SR~|?#\ߜDu]XF*P.DWi_7}axyY׵+t.WϽm;1 v%Gw-}Ei(6[ 3VK=xjG{ýw7{o#6TzWۣuu%ϟ̈cl1g+JHix}q'T1$[D}DtsUNh] endstream endobj 2233 0 obj <> stream x]ˮ$m?tZ`xh0d Y BsNVVֽ7M7*` 2*";R+mYD]7ٖTI%A,%%-5`ïJYZ$z#QN^L"2aZC5.1JljQZH2oh#Hmj%@Iإ@nԩ-Ap& _٩AQqA+?˅T2EPnbiVU#=RaQfHRѩE̕Fd qV+KB,y( k\LOnƀV܀&k# 0BP6100X][JB PP#eTQ &T^J3\o+oR*eWK )2r&\dDpFbTd8M iKA$g8{T hI^yPTZ5[4*. Ra )Qtlc3ܻo15Ř[PCЬBe9&ܢ&Xf?8m)D E94^zfj]v#!VM~0h1q3BG:z=1j{L#$=!ҋd V{ B PLi֥7[]# iYe"gև3 a9قS[dLgį%f rSFtrSNL7gu("0hSnpkM#e p.DL0 >B 53鑂|5ʠ"(,V0d zI_efS&]ݣe{L0FhAJ 2-Tc 6C- d7(dCWV $g1K |#5r (,YJ"gW%&IzsI\ <ƴ>IJ8HwMtz X5b$.w(ILi_2u ΔfERڐ2O7,H\AǴ)pVY hhE6!U,EpF["BT`LąK}R-\\/xdrຏNqGZRu>'YzfR$p| v#wPZV,uf ˹I`-4FD:y,c/H9 !A w0; -tXYd !a"=FiU5k֤QZVT F^"Lf1H@N%_LHtX#K2X\EF>A Zt#o*5 X9 ! Ug hX5XIS>tV W ARʬTUfL0ր֨pu- Ƭј@czMlDl$ՕY5fʬQ(3Yr5]5ad^mx`5ri=T `dXF˜*;VH%3'3zZ* 2ҵ"U%2tIHќʬч`*&ʬa1FYN RaI2kK չYØ@BqzARZm")MHYY.`Lf,`+ }e +@Nt1%YUmƤ0Vՙk!6ܓa(WQױҪ2k R03Uڗ?V}c~@Dfcu{sPZo,1+M"F@Q1ol{ftR2B_Z űLA-z(ZuV2 keZ'_aMla XuQQڔ 29cU9@̕gJ:X_>kO*,Q%VSX%Meh\kS{6ǂe&hQ0-,֓&uڢ>]6r`LgU,VA6Kk# r %ikk=]YzVT2@Ttӧ*p>5պT-lŌ3TfZ'J¢i)E@wIA`󒥃 Ec J $hU>_-Mjųǭ1/jƚ8ӀT6i3k*-Ԛ&hm]vDjM̳fi)ZβZd5=$C5m+tz|#L@2 j}J V>XC& &703ܛ6Ojil^EFU 4!2ɜiT2|t90mX~$? z&ZBp쉑ڹ﮵EUFҙKbSzgt. )M!܃6i`֓`.G:h A5b9M˜5B V#X8Y2XZaR 's*-)L5bg0eΈ09U ko 'G9+dg0m)ؘ52v(<$5tF쌓QA^.:_|~ݼ ~_o__,pu>/anV~?W0SnL_`eSߎ@_B[] -o|sT^3X{ed+-\ of Z9uBkggv7+g+Jw nqcZ8W^:3X,zB $DžtFzqx1/m݌RzWB3Ocv;#>ݓچkrjZk Vm %({@PS,msHt@t@tHХv6j5AWԮ.. a% Gω s+ýts@v{M6ߡ}o?|wZ#y2/G:qEַ.b?cp+[Y˩w[U]||\m.6WfK|icjz\S0$uo|)._q=J.p>PхyG>DM.\I-D9'zy[;^{1~u5c*n1;rvvvqvq~ 9l\kЕLq-=LT31~rUOs !spfZ,/uY)Et9 jE3]f߷xϒ,yyQ=y.]0caê'-Kbt9W1yǂw6yY4]oqE_E}%Moi/5u:JIOvY{+'QNko{9맹yy9<.[idjpDmNY3ޓJ2[}$swl&9m9m9m9|]<&| oto|`L|v縜㣝oХv.[O:j.Tw̅rMVfaIiףsJy? tiqiqiqv`L ~>6Ss| ..kwwÛhse6s|\a.0oVdijyVdSO.ݹ.cu ](spa^]]<۾Ws@dddd<Px/.waYIs {7[_9Kz9zUw:z ;S?lǞOcâߡR}ݼ|n>!ߝBڥ#ر>_d\{#2~ގ`' }l~ c\ Js~ߘIX-9Uڔg>V&/.eco{JG:>l{5Weū };1WK'n77$ioKp;iֳRg2oŷ>T2ݞx^`']ZߚW1vݛvmf-o7/:[G1¸Zǥ댳Z^h53[Qo3P|9d<UKR޷`;γ{ӪR4ۉ"05}6Nۤl8/nKvU8Ozn9MRћS Asg_\is~iδ/g怶 L_~zvsj]{s;M?.Vۧl ҡ|LgLb7Wn/Uq6Omk\/z֜'f?ႮW.!|_)Fϛ|zL>oJ>oJ.ozLV_i6`VP݅2jxPpCE5[Uﻙf/sLT.&/sU|3%)LNNM1y=4tCwf2Iwes\m.7o7 s|c|c|㵜z?^LN˙).'Rd]*&GGk\ܗIsLNN.O19LsL^c]P]#}s(4W44W84D?˙977777=Nv$j)+?|c7g5%޷&a32¾?`İSt ۟wHs3} 6υ?gx]k꿏|0s8~yyyyW)aP:abnG8eua endstream endobj 2744 0 obj <> stream x]ˮ-Q#7dHnu 1Q Ʋjg}ΩI;oxeㄚPr͇ "7_r'ѷ#춘OmK.Kr %lœq[)Bzry\Eԭ5i[(n._R P棣Bnl>QTuXVVpΝ⡌/E8Hk8&8L~dFq>;ui`4etQnXLrDA*B}B? % ݸYIbZۅɠE'=s#[bM{E-Ƥņ'ڴAK<^PE- Tү9d goI7OѠZ>J~[ *PuK:dTRwΙ+o~ZhuSu[J[5'iا&5iέmp,l칗yd"N1!@b.1CARuGʹ3;! A @sf d4G ѫe+.QA5!b~}p5jN!TJ?7CYp.YJ!Kű⸤4Y\,m,]CWDGX m$P`Z!~k0] A*TҠ*‚Kъ䌭L<_hC,.`~_x< MYNϣX @I5Ea)̎#D2—63pV3S5 2zȐ%;6;A- RuPH:K#{NBTP]@˒KӎeDEf*$/Jd&f Nvph$T>C4I萃F,^ى% u2J>HR|=G|sdQHR$lg#m252zD}H- XqҘKr c.)%IPYHìQƬ 321?U8ŌJՙl >R_9fҘ#8׵UFE" L]o1!}h{L (d&)2o'⼀5j3T E_oARL hdyñd[eZAF%ڮ/S'^v0U@d~hY0àL h%SZk0)*u*1vuz &dT\L (aTJ2?`TJ2)t} =IITJ%3 dRU;TћyA:L˨L_I&*dTnDI+ɓܕ|a" e/O=%e'eHNd󙼖%ΐԗG" cI/ΎeM0HKΗqa$)I 9v8MHY0PIrx~J6-~i$EpuT:{# HZB ҹ5"^jB qM?3AH҉hᒖt斡~HIgTz_]ydQ'B:ѣN,(8h7DACyt?8]4?ڂyj:Knu ;ʛPEk+F>Ik+F<:6G hR;.VP{G|o~@~>N>98Zs|gPǠOj])u edddmp2%P{fҡܠܠܠܠܠR\1zӎyCGz(րGGQ\`{`*P&CVgeڝ1^D5ʴc`h>ՋuxT5V1nˎ`2n}n̎n_׻OLƬ>nkq'!"Mu.am&O[y|C6LD YGݽGrz.gtm3wiej37F3m**y >svqZk؇03B6#Щt/tc}c*% X|wKX}SSYZ~E8<)"ԟScRLi1ԟSZMi5]RMQM1W@R 0mԤiE`?E魯l,\LQN3.uض|ޟ0|Ļ5T2L.LzP&}{I}ޤYӣ)#c4A2A2A2A2A6Ց㴻 ބ3yc`o|ܤٟ0#5&)UVJ)Fi)F)F)Fi)FX@'KNдؗq XMfBuӖv?ض?Pф2mѯ><ϛ K/OMq,<_hMN&k'S$&S$&Ӟ&S$fdFgS$fo;]UlJA$,P7Ca<=F:y;('^@} .}I.;fp{\Ȝu*fqf}kk?wr;[["Y@^sZľtxkϬܾ/y>ӧe8lFe|<_;D=K<51ϭ/Ao93;r޾A\=dAS3[PSLn\LZL|ey_?9vƟQ+TkC|VuQ׷*Zx3++gwfBT7 M3/ +v#C\7:}h7~X%WZ2wr wk9[S,̄޶Ƈۊp2:Rgj̝_4cݒc[u|cl8֣: QyPBo^k)5CwÖXC&y5yP{ok er|Q 92/GP^t -'~2,?yn_L=` xbWZ/ƻFL^Tg~~M"e?i<7wu=6#5~>dA\ ٙ7w(o7o;ߞ>w)k&}aMր݂ &# eq5>j^þj^d&VyKp-dLnLnlAmrdrd,Yþ|Kg8b|~Kghrbrb+&7(&7(x/JQM]M)|K}S!!5՗׸\|yI?*pTEi/L{3*"PՄ2mq.:7oL?6ih׀G۾;iMj, UMfBu *vBk`B6lXg.>;Rn:z<>:c,|2og:]m e={;a]~Rہ eo/bcoËkjZi5Eq5Eq5ٳEڍ3ӐWn _8_U;ƃܵ8}\ocMdN?fu&>ab䘆 D4 ~X!+MWt/4~({Qifkz1Hy9к>zwid׏ç?yF;[癳i_G9 endstream endobj 3256 0 obj <> stream x],m;\`x$@a{daF1YsU_q*p<$&ZpT#F!ምDGB"Y:|9 "G#*ǟ2 =47h<VGIq  *dKh;bF)_~-[;(8 ˪k@  BV`iY Ub*&#}I8B@ UH8Bnj[ȭ8B$iAXt&r@2L3~ e/&#8JıLX* &3 ($Mq8fGa>sטAlh+cy2=(R@=G1q@fL/i YP"C˃$>vYUY3T&26% NUj]& " @JV:Aa BD$FJXJPUŠXVq '[ "NHpƥJB|'Z/HpS.DNaH $FsJQsJXQ*13I8%΂40jU +AJ,Qˌ+%7CJP@İLSmaZL6MIMc e 4& 1փLLtk*A5,*KEfXPifNVM=1sĝօO tK+aXp떼=YI,̍Aqg,:#+Ӯ,OX @9@IڔX謙Lg7!QqĒ$p$YjwA2(su+*Y3`Y{vȂXq:g~ei+&f+&tC.% LYЦt`\Jk ٞx, r;s&=- M}2!5ۡfWrk`5)/E߳~Wpooz|տ&to?kƷ_ {ͽz4q2bMkOL%Lc[i_z>Wu~v^8VVkLccZn+<(൪ \ u-ٴXzƦeZ3-p[Უp}l8bƦiZglXؒip욽VxR0lҢ#Fs-ٴZglű<ñ5SǮK紣6 li^l<_3XؚcvuKð̦W8g8f5{> lNd[$Cc];Sn0upkR%n(kUg521_16֫ FǾf^C/lab.FmqbힱEn0upkZ;KתM24מLVNYFᵪtv&ZU^@. `w*2UGb>JZįJrq,z@nGvj2:ug9\sa a^;$Ocaْk,1씛e4^:O1LWQY 38[s,ߎ1Te^:i:r,,n d^Sm!ښhvq,Za'[gZY2/Phqhk]o|, Zagrg []E35Phqhk14e4"^:#f9[]E3;Pf\_o|,Qn"^ 1Ͳ6YE3APqv6W~ M[hGaCALMVt@C4CV ::e/PK,kU4? g'np}C[ehJmCFAL)(8;$ph~ [uKs4/gY[[E3YPcqvN`;'5ηњ(c~'1ʭ4j44\u:s-\鏱/5}kյڧrퟸW^ot3{3m*x** |J~ /Ǽe '9^L G<(OC=;9y*NfɣYqݰ6 aD>˿_xmp|LﻆNN<_۹ޕuQwMr%{&zdۼp@t` va7vaGL[H{AydGfP>C]~u3L`'Ma'݆S-_2agd5yvvҀ_1Fuc/j>2!dEHAxg8xg:x#%<if=B$v=M6wws뇧O2}g5?|wF^ǡ]d<2T}#Gl[{߷oMf[Oy&G,}4=?β^܏$?zA_=~x$F^}0hC)l+ߛUδ\Heob[_ GPip\|2p}W[~>Ѽ4]342N]kVw;oxf˿^ ;xH?˫{F'39[uٮ>Vl]'r]-y秂iʽ rheVG4oO&;g+q^2n }笥VTbXѝt>[L۩.پLaI?IZ\kIS[Bj2nڑ⨿?RIZ]/5nP{R0qߎ[>2<\2kFAE_4OLk|f|ޤV-5<+4f )nҗfr?F_$cG[jiRVIq>V>d[Yh[jN6MVV u5b:ْЍwPpP~g_U6om\7=ɍ뒽Ф endstream endobj 3759 0 obj <> stream x]ˎ%q?d hgx!C,`22;d<<|df95y_k$D>B+$Oҟґ\#Qغ# 8m%GaZQꏪN;iI9i|xvxﴬ*Z&AƲ!"()e8- A."ڄ*59ӶAUJ|d/R`(GY ~*TPBKJ$P G]'_ JK51h4R!Wt5]?^<:nC+:Mx*%!SiI@hT&)օE12 ,t%* \вj|G6 PPbS,Z֎z[H`僸T<2Yг*"]oDϒLhɮ,#Dk}r+<%9-GNjJNU۶#"M2eW\ =sYeܚE-~ OcU#^ m!Z:2%K%`Z0JV0ȥTԬe@ӕV9i@td0v3ѨȥH#Hld`?vfRα HET:,}:ㅙG`<L"Eu'ڃ 9G> YZJ$Y0%|91QH$4gŜgV? oQK5A&*$f.d~YZ=,*@k%z -%7fA5dR0FR! LP3 GP(D`Q"ebDB'YA^,cICf TYN) 3UD^22&(T+dBիKj>n?8.@rZ,ɍ9WUBt~NRoǕJAz&lۏ}?~Ͽ HA4v\_N;o?]l~u~W~^7,mo_/mߛQumsvF,4Y)s}lQcj %|6l TgS4xӦEL L,,`\6l[5C;O,_\XiC@3}EM&_w=|UR}q.=OS:{5Apr\AScO~֒DVW:L^Lf+br5sm&5x S']2KĐC6mn[\M}了as4W?YDi9;mouXO,ڈFnEk-׽ܓjn\sO .p=xm'MpuѝFܳEr{&Sxl2W&Y:R>H$kɛ$z^/r~ǑƉ9qF9x7XFսQm{#RpNRU{HP1-ӣvpG<>I;kg]W8?kgBz[]p<^uD(s=ĕv*IJgG~o'f(Zu5}z%ֿ/: #AʟQ0v&ti9Xb%F+ ;`Rݷ885+bl5+{sղvFטI^3IKS!>(Wp4H?Z>Z92B퍢CFDFD2y{wf zznl_Wb͡g쇷ߣcSe۶j"`]b^bqnߣ{+߭A쁆1\taބp2~}|EG-v/AגfOˠg-u3}j`59o'{~__ϴ{J\s{= S}'1b1nK&S#nn_WbMG\vtu^5L1(A?:AĹI3} 6Ff z꾼:XDzxp2>$=<{XjúgS3g3~u_^53.H)θqF] >*{({٧凓G^L%V.CpMS@Tl4m'njS׫J_' ?f:B،[φ5ۛa2Wo/ayO`1|OoW5R̤4Im\+3iqf #?6V\0^Y%} OύWX7E y`?<2m\ó7>=|{IKGuIo[~Z?k9.宋Y.aK边Wb栾ί:#\PNӹ4s6qO}Ym'G:R4aWog >wIjú /g~_G6kUyVQi&|m0]>c].8K$,KnMl Sl[5-׫yMKb]s vĶ0Ŷ5[ۮ7^ '/mRvmnۊv`ۖlm7N ٣{deM5Cj5.N3mt;M0qmk&ݸ}=>1{N^T3V4L_ضfkbۍ#'omRvLb[3ݮضfkb[R<1{N43vi*vbb[bۚmr?GSN.m {c4UlĶ4Ŷ=F7h*޹ n7[6,Wpflgvmo*4Xѱ%vLn7[n罉mym7Z|mdǎX;JY&D/7Λؖgvmo*4X!Hnm>nLlSl[5 OV/{-Aler>b[0.ؖضdMl CjyJ=x)_nM+LUl3|4LmĶ'4*ՏӕSCxo b]er>bymemk&]o*ՏӍSC?`o4Kf7db[bۚm~H-OV~nmCN3my&)ٚؖdƩء1ݮN3my&)-ZR88;+ yCfre_LlSl[5*unKm6Ŷ5[nz~=ZӍSCco]fri,&)ٚvE;RƩء14[]c5MmĶݹh:N7N2%vLby÷)-يm~HGqq*v Afrmy_J/Sl[5VtTo`Yn'LNٚ {emk&xeGqq*?fo, nۂy7 n ?Yqq*ֿfb7x7K_`8o߽t3tB7nA' 08NW,IKnopr~af_;?Yippl> stream x]ˮ%I #])!Vb3bhBq;vdOe.U8^uq2ݰrQaGmF=Y~41{ Cw<8qhiPvL S-̨y>:sk`Ta@2VO?*f?cŌ[]-^| :vRð:Ō|a7/N?vVs`T?\:zid~k̨ @16vayR p+^j쾟s1#j޽/&=zQ7UG,vߗ,fF3͘ф5jQ@E/5ve}_:85êw-P_Xðݝڏ֧0v;Xz5:y z8b[^Ufyq 3~'DW6Aa @ݷ)?zs>-i1#ߞ9$bǜ1#_bg3L F~sa8N#n5;C7^c8 SbnD#[MGbF\İhu?gV7KР{7E+K:Z[O`La0q?)E{hZPN'vѸbf=[fx/r%\IzFkih5hf86hǻ+.@SVnЩ ~f3>q v_Ns{ϯwGNq WuG4 om05ZaYqPNm 4k 4 ! Yr`9 =pj_ H:hu0@Va:o;8h8hCFsDAX,. cܜhhS; w7BpsF+La:h\hvF+LhF+& wm &Ua9quFk򺬋B%0G:u0gqk:u. 4hh 1S'dp"_Na8 ZA+ꦣYn(5z [aatcppi .*Z15>gVa0֝UZBB ᦣ \$'LVM"5 ApЇh8hChF+ V< *!>X 7 ?̸2-2 * 1g4_9 3kwSCf/'X37c7} V'v@K|`Mc' "hk6f</:T\O0'XDx׮-@0#CiDc M.M)Ia/Gg@ Wc=hyW]k|0&bRgnRQ}LS}]+☊;O LxqApA7Ոq 49:BLbل\I"M6Dwa'"7[L!Pf"~+ hFDx1sLba?fLӗGt1vu#=nup9`45JR?5.]o8Ȳz Uq "WZPկ$͘;dz托*H}nq8sv3brq7cPbTsa΂ÅZ8-s5@p7c%UCA꺛l(;Bth @7c 0ލ1MpF@+D#Vu3 X ."bWЊEj+"hWpЕAt\"n7pEݵ1"t7pN5pŕo +_AWH+m9F"bmVF.[ @ J{ bus#y\uD$oidD0o 10EΘf s3zĎEAheFHcA=Tglla0+@ bKf./5 IΓ#~nDNɉ~ro$ Xmg fm7`}v}%`KzG2$(g}vh˥nK]"JIYnK]z֗Gn%aKzU2$(%%S<4Sх\IG}W#1%xD 1[ N%%@٩qTmqI}W#1%xD7[ N5%@fE7pDI&41T6WBwZ6yҢu}WIi֢󺉒N.s%]{T:WR҉wZ:y⢤}WMiډO.%K]ADyT>WbwZ>y}WQiP.s%]{TBWrwZBy5}WUiE7y;\E%]{TFW潤_ Ö`ZG!Y u%-K]*JZIǥ yPIQRJ*F_h)DFIk)dW] 4!7p|EI)nr{ SJ*V_h9dFI)dWa 4!7pmriE \r**ʣ YY% -M:#]t𚊒U.YU7p=y*d%kdUz/B6錴BvB*JZXǥY7p=yJ+d%kdVz/B6錴BvBk+JZ\q&gVWqiBTWG5+dZ^!tFZ_! %-K]nH+,nr{ XJ*V_hli3X.uM"K]AEyTf!+Y#B[}aeywjuI]nU7}_y~%c6ŏU?|U^5WUtU\ ׷ׯ3_p=w-c}/+~%Tڕl^_/brK+dK_/hrelW]rǮ}M_<Q|<~cIrUע*xbBR;C3L$t{Xm< )aݗtHҭ]ouRIǓ܉P^cRoMmKmޗtHҭċz]ou2I5/DJ{s#r&'חh*یg 4=,NH]yd c7=;7"hrxmfn[ ev{}IgO$ċ:[o0Ig<9aYو u%Ix2n 7xUb-U&'',=c49a2Iwz@Xm{Xm%=t/Wl$HimDzIxbܶKDJت]t<91Rk;CkIF&nRor{}I7IxUb-u*xrbw"&'בTmaz@̔KHҭċ[oMɉҞDMN!Rorf >$JتWޔJ:)NJ=׽CR" endstream endobj 4770 0 obj <> stream x],m;^ x0] $cosX%ۢJxqW)萒CN8S9bgw8W#[!Ix E[Ohڒэ#ȑ [;D G%t!%mk B󞞣'c:u8ÉYs[ UmD_ )'trI '5ʉX(C R.tA UHp͇Su sT]9ПA*w u!u]+!1a|უ@ b ɳMJ LϜ"[ԚιA:"V35<<D9?N5<>RnFSzC$ '*&Sb/ 9kpAC_UuB_0xd @ :>rBEwDi7#Ǟct1b!"z~IGWxPut CHNdže9,$.F+2y9#mRնr 6ɶ X)sq]dA  6 ;U -CV%XYN!mm{6m #GmF A +tXad.@ $\5M $EI`Mch[ q\@w$PvRdъ)K 6 E=p 6R Ny %wwkZP m-AwQ*kH?o']#f5]=HE`#'Յ .{HQ8Yjʵ-JkGmiShP$uY,n3gQG@~ 뚪ֲhZ&8iFmE>FN@?F;EDE8\L4B̲dDsEĬ=pR|EZ(r}ԤWӴ}!0,u:S9t":b|'^T|H ^"WSĤt2E[i")Lk\iWu$0{A윶jyɋ`ikJ!DeVf{gZ$ϊ3>+=s(DPF^2{%N5r(YEzLͤp\b~#i!ik:Z):ZKRVZQ[i֘ "qN!Z2X(m,<[ ؊a(A[a-S[Y. 4QPul\1؄֒DœB(REd&K~UO~HNH뤊tNH뤊tNH뤊tNH뤊tNH뤊tNHIk>e(C5tiBN |j2gb #R> 3i?KI E^IR@埣cH EIH6i?g5?3KB5rDX+D8 #OEFun Zj/v_Ɓʈ P32 &=#2Ld%[:dR0BfXY;:I~W|I H y LP!pZ `$IiAED&$LH6UצvEEfHk )=`t. Dճʍԥ{ )`g"!3hM˭I0 &o8|XUa-vJd!r#= -ēqA!`/DaUEnX@5%U@Y^Aڠ4+YU*Ұ"kt&B(0"YTzȂ 1k@$)!r9Mu&RT*7z:@%4R>e!Ҋ 0VA 0A &)`0y:Hџ*r3Gr_Ibag0(`%0M$ b(ȫ,Qn" 3B5V|iY"wt  YCaJN@߈yyiTWїTտS{k [# -ΒܤwI>y/X}G4ȡvá/nūR |_wAni?67OioVLޛbJJJJJl-iϼשRwc:w"Z_?Wk،=kP}>__~@:u_OέO>cX=?W=K]kճ]{>-{lycPLSOjz[c~ >gGx}ibYJ=k?g޹5C;Y`X`|vp6*^gI 񐖸UZ.BCͰ\녥S>iy/fSs{jÀP_ww߹5fG|s3T;XGx}p#/~}}yXP{ׇqn<>K]S[aoZ]QgKʯ55SۋrMmo^/ƭޫ0Z-O'KNޭnWZ>mݮm؇[~-i{mzz]'Oδ*պo՛V Ool )殇n9+׭*Kyj͓m[67fmM_ܓ6@$3C_3 pF[7khRl<2濴/¤=^ba L+&dP<1kh!h~Tv+^6/wƣjҞ i)(դj-5Vm mnD[W0K[m^6*V W'E;-saI77k͝&fm=/JIw^gV L#sqE{QI77L9m~mh{^>[@G4aўs6F%&YвYѶpRݳGx}iˆL'91F%&D[rܬ%]X)#Sț'E&ymYmFېfMuӾRݳGxWvH{~VQI`-mnF..tQzh &!YLڋ&Ⱔ&ڢ8䶹YmKT҅Fl͒.gEyᢍaI77k;Cn5/ }Q\*ڭ>C I{iH{@̚hKÒnnD}67kyIJvrdzП0C ȾHC˳"ǼpF۰5f@!h{^奒]#/RI.^x^?4*?%@HW_?@hGG;}c۷:PO2"a Է~tUq:29m^^e=]ewΌˆN_֌8 CˈN e%/ ]?f9b~OmOh7舘565+>{uKao}91aWG5vY:*ėpQnKc+kSNkz^>*3߃`s~1oUd5}48FSRx뇿UQE>9_sfz{*`r}o' b^} f sJ۝;1TľSqnt)k1/UľTqWv[Yp/EAoH4hcoɑD{u6,5;V"W,n> p75Ynu%*G.$־\qW%2y"w YnndaE"ߠޮUĺVyT6M^S}['ƾ \yNq`1|ɈW#Wzī endstream endobj 5277 0 obj <> stream x]͎.m;ܒ 0 <Y8 '0{vp꓊"utHK\ЊaB/G= !UR~"\q+zzw9 q+qeG/~~B=Y~R__+6J5tiqMB~m6B6Zni_~"o*Z ׬M2 $u)B2z'QˮA.QZT0"& _1jw5zBG䣯3RM(`.f ULK퇍v?K3 .14 ҚM/a^ .v6gx.6M2 nQ3.θQLv 4&Ed *cуjq@0+b.HI3M֎;Hlwт_hT'v!>~0tBX':!jRMPu#]ĺ J ~X`:J`4Nԁ&͖ )[d#},p_C--l Y|>l:°մ}M cx:8MZWVGG3a6\%GS_MXV*WӦXQdhw'sڎ~Cd"e J>FLm:Ld&3,"mnѮW%[ӽ_M[EX`}^I-1N(fx!D&z5ILk|0aTt:o=_18uu#5=fIB2&H38v8Al[ a֊5oI4&0xl[ADP "G,`Di&HA'Ҡ *<441I#)| L1Fn&C!{No"XD 3d# m C[w3*<%j/2-! α USLث1ֵc Kf-7ш݌lټnT("Q֟ȮDmbdO l `с)X> }Oh6fϮt*C8LT8~m}6`Dc  l`mA.hfbwO"o DL&L9^E2 b "m` d {e60m0H)سh*:6]|y4#gŒ@`lPp*LH dBt3A spY/ @ ß,- ~U v3i0 ְH1p3@܈a[F bl&V7lFnܒ`@t?L<Mt3*&lP!6 6 2y(x02`ldikW+F e0heD7S,o`CGw|y?ˏ?~?CFߏ_ϧ;uGzw1?-@1 j9@/ޚmOO^י$,;^ޑ˓is"Lů2V݉ >5!dPd-p\ej p>N(nH GK$Xe8=usvzkJzA}c`[A')ިxǂOQ樌r8=5]KmS3x֑jWknm35|^Ƒhn;x~SZ9պ'9?y<+ᨨpKW4dmG8-E\^okXXv?y;{!?uL)jFYR^j[pz)O jf|ȝZ3$#S!#{ݖ\J_[P<o`qѿ_yq΁9eQˏw)I:uj%=߽q{E[.)ih_ejWrT-}CH7|\<Mr{yÿ (?A6vHʿ:]>vثMіeFWm?=xe]HHNJ n& Zq ޺ߘv}0ܒ8!Q,GhOv!d') ZnMVRnѶ?q=g+E%i!%ۑH~W'ǬhOJ~lګ)j6^r^m}' ę?/ 73Gi{/iEAjUJwCmmm[iAT2IJ'Qxp~2>Q~nB;1!-5[t7Ԧhk)dm{)n i')ı?/ 2"ʏ:.ivINZYѶLjSQ%զh)Je?/ {z'L9kgrWrų._^S;]"Gu[?Ͽg{}O)ƥM_H/b|qB҂H23]B!$T_f[2ۑ$-HLteu7۫M#_]=e%h5rS4 eW GnGD vO%_H^Kn۫MA!a'nBD!A:*DX)qHzJ)vm?? OSDkT>X̾ر+R|=3R~_kO,|\qB?yymb,m#hyi(ZJ_߿zT$4*"i )^_okIAW$ʊjkj7JQЏ.~Hݼ͵ eIl{)r>q{ 3zY,ռ4vS]Xk)ZJmem{)y+- yE28mR䶽ڔ Q(DB uѼR QܶWrۍvyhTҐJ9ybum[rOp{<+!u*lr Xr^mm7NRۓFC:iH|{x$S,m66Rۓˍag|KS]lvy-m66RۣMjY g-37TSmPŒjSnŧp;=ڥ4髦!Uo..i @WV endstream endobj 5781 0 obj <> stream x]M-U#-E ";3 AB0֮߳c{/t[vؕJiyR_\cA:iOB9|(#J!E?S;‘?$6UGڎ`+G$Xk?Vȣ͊8W|, _=(k<\D G=QPju@ԥ:ܨg= $jSsqTk>FjK}FջG?a[[}4h9S_vjaW_#j.E. ,Gen=Rf{h $oeh9{-gLpHhR#=^c8B! jH U,ՈG D0AYC`E2b (!Rc -d5cgdB -jW-?=?OC%?rFS4Xl f]*[.x$yXs -lf lBY <"[.ȧgOKT2]RcÞW S 5.cYJ1_5 Β)#g+FqVbk $`$т5+e,C1V(n tD<_{.CaL#"%W &hZ tZ4G q7@B?5 ^%%n&|Вi8h12͘!Z5 h&: -ҰlY-*"͉T{1k ,O w&S-QhKD+fD4r-Dq@$̩$7T]4s0!0X92ȃhj9HB!Blhw&5v̈́ ESP4Vj0FKpELðu>XcC l̥%f.#y#ֈf ь8\8-Z$MMN𶉑4ib}k-`853=q"D)ŜM$0I"\FH4RJ9]`0AD<@9۬6-A IT@<%'; &6sYh(h)p1 "8AA$i "њ-ֳB]xo5$C%"FKd'G&H\gES3PD8-H4FHfjbp8ʜX!+&8#T)& SZ$hj@2^㒩I.yM$p l=3?H4 ,`%$rZD MMrIqDf>1`xRLl\R DSR $S\"0%ZcDcʚ9z f6F.)\RI ,{F.̐3|aZ)fk h8v\g1ĞL$0H4"њ 6SN &]Lpc 10vd;1r $`*ac$hjl&6  G@oL!DqL RMvkfk:V1'}Y 9c&oHt'k`oLwszjf2O.dH El0%h0ECnI6 =D~K6!K.%D1Cl]CĹ޸5u'i! t _Drg P@9Ȁh##" "Lzh"H:UU!D!!A4zhH^x=`.(cѿ_o÷o?_}?҅/o~Zǿ5Qۯ? PPh/ دJ$aa f/w~q(v ׿Nh 17)X/as ޶͞;f]o2쒛K+eص*as&aӾ- K~?N9?d4 Xm7̞oeơصդ:îL땕*(aⶏfoރܝ]PS*w[mT6`}T_=;fw=]RSsP<5Q}}rƋ)O|dr T:>JwrC8c8S8K,t9({a?IcW&ļ6!UIҷV&4QWm &9 2wܣZQpѣ<]jkُ+Y&ִ`h2gy)]U@f}N,qORc$ j[jw^E7v֫ )a/^;*T;OQ}SRE=aB*ao>nSuj ?KJSJ+J˒>[;eIiYRRZ^QZ)ߢ)-KJ˒ҊOiNiERZ槔VVV$}J(tJ+Ҋ4?{ RSEi}-Ҫ0*)SZEiSZҬ}JF11! 5 *7!\zVm-jϖ;z'L[>gaaڳ(Ϣ$.},gaI|&YgaIz&YgaIz%YeWQ{_fؓw/پ3y\mlO#^]$~a_M5IT'Ԟv5!ѣt& (XjX 2\xm%xᕨ94)C p7e؉nA\іFmQG۔ְ:'"WoO'}U: !YMi/.~nӢ(OXmIoJMm t-\;n/_^G!$) Zd}r+-hrVGnNL{-|.KS˫$'K:ڦVF[65҅[)]_½4U_=H=]Gڳ/!=iCNRXm@p.H=U%ʄv!E( vmzmz!Mm m?K7Raϡu2>7=Fh˓nVFށSn[ªO7nt{ÞC.Qtc7 )X}:jh;ymkXm)]u { IHoN)U6'';Mְ2DrVF[Oʭ.vJ?ʔNoN)U6'4[h;emkXm)]ҥN?u'͉2Jrݑ`)6h;emkXm)]ҥN?wg͉2Jr]a'`4[h;umKXVJ;_dJ7'*QvàtkXmzNm m?R)t*S:9QWWIڜ 4[h;umkXmu?kR)v*S:9ѦCȮT24[h;mmkXm)]ҵNu7͉6Jr]`) ֝*ڜށhSn[hOڭo94Uп ў;IN_]-p[ǸrOduシL:tnV̇@V\$:NnP8}9 9 =!w\_^&:^8.= iE&Ӈ$qePs\rwJ9)=8L:t]ZpuJʐnvXbW܍wNKt ]B츄]0$qy \u^rS[ꐻq`Ήaҡa+ShLٙ\rz[Ml} wЄsj{ptx)4ΎMGMٹ\rzkNꐻ99=8L:t<Kz͎Nw)ƅG' 9=f'vpe8<&:YivRiFqޣq:u8j0O5usO0u!>wτ0V&hVMڄWm)ԭWk3t#ګ;n[w ^l齚sG NjR¾ՔAz ]A,x/쎂Qt~߼_IySLO 5\x}%.Yv,?9Iڍx|O>ԭBEJn)}i{zF[i4qcCI:6m%P0^2|Q2E]U[PwܣZ}-p0mOi$/kQBBzwo/*5yZ-U^rYV^v;6O; ?AV;gqYUc;Q®gnOٰz{usỎkLYilJLA?xব-zfcx{]=Ұ_ V :֪ ;75Q}mv2{t endstream endobj 6287 0 obj <> stream x]ˮƍ7\Ջ:#O ;F 'IA>\.{|\MKMQ(Hrގ&8R 1##ȣH9JG- D;jGka? ;/1S觝.g::NĮ,ȧ =ȉ5 w-lw`jd,7A5pX0H>-FBL395Ar/2"Ѓ%{ ]LTƂ X (N\LAP$@s$(2%FX[} (We cq9XA v`?nYn-?X B}t1+?Tp * b uZ haA.]z0`2\LI^a[`AqE.aIf`XQB ?0bX 2H׃bA P0`2 n n :?Xz0`TŴ;52б `H_׃.@U-a`ALF?`K@sݏ6ŏ7 ?(gFV^"@<i `$y6/_^(Xx6&S?jԳAhB٠V47?j,ԳA0)UlP%H,lP+l$Xx&L%٠KL)4vL ŶĶ=[m~HDe:yhShHV\JݮRlKl۳Vv>Q{N^'TR+u.Uvb[[b۞-Ŷz?'UK`^BnQkLb[n(%RlkCj{Rx v9F-3mPlkKl۲m~HmOԗ/ONbPmĶ=[mr?ʣ*UD!U2]lSvJMضgKMTyTtrh4*we&ئb,mϖbJ:ѦӐڹ-3m]ئKl۳T}T} 7oe&wʠئKl۲x vL~vLnb7AMضgKmJݍ`66_frc*7ԓb.mϖb۸R*KxOݮ2znb[zRl+lajRx /jĶJ 5Ql+lajRx njĶJ 5Sl+l۳ڟTuv7^ňXer5ob[)%RlCxRx %Fxa2wj6ضgK-IZgw%X 0ۭ2Zvj6ضgKIZgw%X4j6ob[:Kޏ|Rxv@x\&suhˡ6 o\ۖoVt>)UlqD;|i`{|":F.KGt>VrD;| ;sҵ]*ҹD=_r~pMQ:/dྗY=T((KQNהլWr'2]퇪|)Iav'tQ;GD-NQNDrhOX3 p"mBQn9p/E GlzD;|2 oC.>DSi9p/E G{9yP{ޟ/O晨7*y\{.OxV\oc}wtf>žW=]ݐ1Tzs=yj8j+u2+_q悽k^Ntit MQ5Ė~1}y;*O|=^9p/x%V|IBm`} |9\rKۜ ikNq|&D䖘5ޢѯs-T0p?ie> |?\^)vZ3ii7v[c]JO֧ώI0FA옴 o][^)sZn3i l[~v}c |.?_ kϤ%Rlσ3Rn0 u;ޔ)Kl۳ضyQ:A|ՄT>Rn0)u;ޑ)Kl۳ضyQ:A|vؔT>Rn0)u;ގKl۳ض^Us'<ȧ u3Zn{1um{ o?RVv-6σJܐ9"TYero>"+l۳ ڿsD2 d7! |DضgKm?V*UfwCҗضgKm?V*uv7dА }f1π%RlۏJ  aӍ~C_frA  }m{o?RgwC( 0n ChAXbۖmض O'iHv#B G?l)'?jT4~Xfr scm{co?RgwCԇ Rya,3m [۸S?Pt'^5;QqxpޔO2;Rlq0ГUM 7NiA<{|9_:T:: 4Ъ|&)m<(jx/Cw ::G 4誼,&)=fa9p/Et?~k~:tNhfVy=>MS~pr_rAMOVZh wv t3߰p\yaӓUgĆay=>]M3{t} ?>C넝J#Ty]}Si9p/E 'ξ4n>K]E:ڊP>萖7R"l~Rl}>F#Tyݵ]i9p/E –'5a7*Nv6$; A-j9B#Te.ў򉇴y#hQ ;{ :TIz:?oMI7i&m~ޤϛy6?oMI7i&m~ޤϛy6?o"&2?o"&2?o"&2?o"&2?o"&2?o"&2?o"&2?ozy=]*stae/ZtM6Y?vx>]w׹u_o|ꕩ-v@8O$ey?|urGDsDgEo{ܿ endstream endobj 6790 0 obj <> stream x]ͮ8n; ʢ~ ff]$hd3 "oҽշt$e)2-R^UjkW+!\FXФ^bWJbJR!+)~F^V*~rUjwxҖ W YjR5jW7fŵr!+ `wKMP+p_Iha(lbw ܮy4mf6 Kff>o.Wkf7W\#S5J}|wKRbwhkdH}|mkT o1>-z>$-$ר+VǷfQlp}m>rj}| o_[mjmǷ?-}|m~>6K_]bk9]F_! k׬k>j~7}fh~7fwU' h6kw>j3~7fwUc6kw WmVwq4RW-Px5_||آV]U6[4_5ƈ>j3TCk6W-W5zפ~7\6W-W~ Z_l wa& ۬7ղ)>nbo`L|.hG0ѕ+cmaWGwA>ަH} H`ׇܦB}CnDCAto`}E>U@L)&aonb!*_54Z>G0/s(կf@C\-I_0D@ plF1DϘDôh 6&"RۯFZ-ՂP?hCf"W+WQ_Gd FF6~ՌtA UCKR@cK$ kj)%j)~G.~h&@Ѡ `d&dm gIj vU!VX, b~ %hk]1UC3u=L̰Nl U@WDZa4&‚6 ,ob.f3/Rj؃Oo%GX#mb&Ă x[Ì;5:0S@,wA 6` 6]Q-& .H_ RQl`ejhjgЭ7aJWDXÌ`n@Üo˝c KAXְDZZy9Zo43@{a}Yl漅E4XC@ 'a!}YL17Z8K v9Xj|ïL&7&/6@ L",@ g_󄊶 "47@⥂M DD@MLX8@Mx17"? Xd?(HKB -? B uEpX5Fh D,j2A"誉 7>ز`Ta XbDc>ߌ!.M̽8 Z$4(+8D,LAxF&7@C1ֻ7011AlԼ!)1bE2jH32tfUrov(hz7WBFA&70F &zc[7& V4 *mq v0 [yvhh?4,YoQj%A` cР91-zFA&xߐ?Øg ?(?( ?j*к?(l9`4a J s>)`{vHIA5LPTQ S_2`~A!zf`c ;5"&:zCEjW >}%x5E"D@RI@ UwAL @pI B/Io * <%${xdbo//h70ZE3bHk hH+& Ռ"LG> c5ẑ_ _k/DkX*W7b&&*2_%(v4[w{`h"amD7#h-u $'U@WDw M*кOV4 奉@o"^&3͹ +!kCgsɩ99yD7BFH2VjoIeMGWcXj~/1o|۟~ʿ_~/dh??؟w?PF5#_|>=fm8/iNBQ+C m6=7VV:_\a(}nb:./+;ۡ`WĶ 7-f^B` 9O.Pj +n;er1{N*u; Fn'dm{XmWfN.mET i&,`)ɒf]i ӟ2˻ؖemim{Xm<7njS˿!)2+Vmim{Xm_VGQm'eJ G w5{r{\rz\Cx`[ Tit奇Y8,qtd=.e9=!Z>Z?Y^X$v-~c{~] .aOXŲuXr֏ =-*~] .aOXuXr֏`='XV{pOX^^,^%jx^]ab:,9UǺl|o/P%q)ɋ+/ÒS~ٝ=!6;R/"l|cHOx="Ev q RDq,ǥ,^Db ;,9U%֓-t&;Q%mqٖOXvXrvU,?\" >ֳ rQ[fkn8[`榌M`~>?M5>[Ƈ4,,Z2|?_5ϗm|94U̥\ͅsg5&G);=h5sz2]+nyߏ(x|=K-fR6cJ}Iߏ(>r 76/#n7 8,۱wk;w~_Y>y{eeDw|'.ۭ*8^ KJ _ :Su8xIItd[>[5tΒ6LWf>|ݚQtĶvd1{N4KFW_ۅ5n),mK`#`7f:Fi8IdmvtY ,keә*'fN>+f5$JfG@`Q.+n;e6Lf8겎p[qaO%#+n;e6L+'eXH |#I\eraÏ:f(2n IcƩX?to$L.lvt =,嶃$oVbkvL.lvt -lvd"1TN:_ EsCQ.{2+-]w+O3ts=d^p)c}#3<ώc Jv[=fd+}%ŮeDݦ"$kԐ͒ď7/&a|7/X3N.?t$S˫EH%ǰ˰I|o^u\]l+*嶲-,|<~`7/X3N.#Lve]l*嶲=,zR˫,u8ylSiHm햙\ŶFݮQn+KnRn!z҆6Fݮ.3mum{Xm?*UW`b/vvmɽmIVv˸YQuGd_~%9>CFvG$YhYFykR{f۫>esf^>3řh:}2ΜsTv.SN0ˢw[Qرا"b{Z:?yEW춫&K6ò/dkM2"4,*r/UZeGFslKCic2iX;dt{nz 2ZWҐ?f]ߘ}l<fd=^&_m*B "s/mK`{0E7cdDklnКlKfJpc>,_Y~Hg鐋/B- ^rr|G~,#Z~nקC.> stream x]ˮ,m?҃ `|a{d`F1ժ>%t#&H bfN Ҧ%SZLH2[HژٮXB\nfDw8Wjctu8k]/6?Tk"|0@ҌN< IVZJEI$9)- axos$ c;5+0#6la;0$I8(OHv*P0΅'PR+PD1=0#IRE av ,P*d("C)H!J [/PF$FkbhV` H`2A["kѝH h#Afk )B! {A҇Dخ +uMVPZ(" Ʌ 1P:5"U`hB|POK̔FPMN4dq' N P1JK겅%f0jC2,gψ%ټ% B|H1.[_F*F2i.]R*ڀ0)ـ2Z" @R!2л|vBBɞQV9 LL%N4 hFR+@ZVW*d@ BʙP\j( %$^R ehZ}(R Psȅ5#< ib6Lt1=`vA %JS/Ժ(-L5[jh: iZ}xddMF[+"sZ >rᔸz j3)ldZXAM} HLZ!IܡhF.DZ0V(.:>$ H(Ĭ.U>Iɕ6O>i'HL4b^HKM@ t'ɱ%GLbeC2Y .*p oK_AsV7LV E4DQAzJB%B28qA{aDP~ID La;[HVaVʽҒYI"jئQ6BuߧuBn )!™7J\kxS HJ^SN@P*&KIIĒ켕z&՜Ff͑)fĒOb +HJ&jBEVMbINfrDlD"T`y#T`X"#0;#TkD(PQ15*H"TI}Vj Elb;rPQ~  oTdɬiV0gJ2Y)qj=mlJU&J=H[v9oaC&CL'Q8:IWϾT~? hHFv|ߙ?ݣ =,h?ɍce_ 6w/X{ajjZL$5\140qZ]7-h>,i>W?V7=Od*{tHw(7~>1-,pa61Giሇt%6u͈{lilBSx7De P}i(5VuYQMڈ<x5xz5ZƮoņﻦ+joDht.td6qTbPW,oA*ioqf$vum.vla]j+jCCH W/Ƴ_[>}= s.ωY6?qhW;7Ɛ^L#&qz }Rn`Kn e{eF26sa.vrQ_EsKs2i (#ݔWf C.tS:LdԮKjoF-Bf׍:uhv:ĶŶ!]7^VԮȵihvWuৡ٥!.M+_Q{jFڤaHMCuEŶ444ĶŶ!!5ʒڛ6yR nl3[:+-K\r4scqC [> 񐞏MgxFP#!"sxtO@F[9yrsohS/MVdyo6Ce=YI޳g%yJ򞕔=+){VRx%=ƴ'{lǖ[b{n1[tCy$EVWϿ͇O}wEѶ7ƶ֦gy'|1###?rkaK j={NF^zqxo{oO{oxb{W{o&]QݘLfxsz3t3t3t3t$E ^>amJtJtJtJtJtJ,>Y%~^Y>~9t_j7{%[ju{M0}{le-iy4[i>J̬|{j>|V?j #\yۆcL~Ѝm=6f6@㑡13KĞŽʞI&lSNna%ppu&ǞelRIstHtlm19yVVx4Yt&gᙗKMC֦v1uu2vSΑ9|}u}|QV_IʙV3?9K&_&WčJ[דuCsohh=vLݚ7Jqi4~ rݑhmniXk'ڛ=cCc޾&Ei/jFWBcx-q&uZ?I!*\. c[˅׮?V|qaWIZ[KosOj+joWmLKbe bw*./w _m5O 8Z.KmE8qql.(5+ָRB Vmt>o|wvE,;"C\ҼGu|'=vwv9\dZwc7ձ,l%mCNz:OR~E'ݔ`׍~_}n?Fxؓ_Ko&|&Hj8Qh=9^:-zm/y|ao :H9]?x4Kr?CJ,]2$HnlCCҮŎme~C\{F52<̐2ܤӮnA05n&=;ĸrEuima :24ԍeҏp%}&8_IMҌE){lǖ[bXds{l{3fKT󭀵>𢾥ޟ ~J]{}l^=^"۞=={3\)Y}hh~$R-k7Zݛy\gmt7toƵgi-%6zm~l}VmMm>rn̷=K_GqO빽.從}j7۟}vyY endstream endobj 7799 0 obj <> stream x]Ɏ; ~qg8vnAY co+-(5c\fk%)M)Ry*uvS$#&1RLHBV2EHuI>#S:9aO,@X.NZ4IpgʀɹV@c29 14>L.]PB :ysUKRH(ʒ E@JP2c^:VUȱ8}J:zz9VfA(ehS @, $ks(9.X$: *.~ :#3DU@*)5s -rP<ːv3x(p! 09*R eZV蝎%@E Ǩ1f0J(H:7~1P^$-["W/T\&X|4v14vkø%@j>b@: wlSbUS$,EJBkPI@S:4~@P1mI  7eS_g ';,# \DI@[3Y*c2D<4'چs:xcQ(s @Yf9KaȀ  x :9EYR99q >],YXU ႊ蘛u"a4Ją7V9DL1A1X7O>ůI بcPתsW. JsPQ\&:U0jK1ʄYXP82T6&B晓>!U#f'QTbpz.]O(!))]&4JwHKA8EHwQqV=ϝ+-4KU.8sb"H!X@`"XXx  ;15O>7`QrT܊p'Hn,FX4u+X  Y2hnwkrQG=AQp -0LfNGɍV ܘPE [s ]fYd4 ,daA! /P  D%>!c%CX,G>CLJ$-v'+E2..E3|`z8˒Mq YU}p/}KUEgSԹ%XYU9e1sBĒ`* 2eUT&s:Mnɢi0jZ9!F$ `c=ZrfNMQ#{5{F 6΂YQPFn%jBVcA^(?/VY$ 1TdR˰RU3j rh PQ|&h5JH|NRƒu5JVfX)EaEc, 6pZb$cf`0: (̬`QY9!,G51jQpC 䖳Eq:J xI8 #@Xr0MUU3! R`|jk eAeς,3؈k4 ,E „ 1 qTۄB2 E(eX@&ıWF*ksDYJ. `0H*1j6 vR`1H)nV"Y)q9sɳYb,D"ߙUL S{>!dGx(CUV ߃;eiҖ1mɸ0E 2i_T \g%Vwc[d>г1a>ѨKGrUBrLjp v  Kc!us:  "8$̨wءdT#jpEXyh,S Zsض @Alfir0M49= G>j3A X+AQƬγ7 `QM\BXq\XAe`czܑ7H@>15NBPt,QM; `4`}YYTXI,5GX@-% d3T$}KZ Ych>M8$kcZYcW`Q>h(dX5y3jdn$7vB FCEqʍ GϠƹ1(S<}a]J t,R)Et::B>PQgY2g,&rkX)5,S4u5`352jԠfϨQ#5jVeԨYƨQKgɍq@3f 鲃.,+ g&f`! V | +Yp l2j )! Fc"uH4$]'$c63[#>99O}?O>}ۿR'J_ x7_OKV>=>z|6|+Yv^q:`hu{!e ޾ν-t\NoX'z.m&Xm=s| gbW}GϵgGb:A?j]e˙B_sr5в Ъ MLhr&0f /MyBJ7f䂉{C6LTX6XQa 2(M~BFF5x$7!͆j# "*+(QLm݄f6BuBчr! lٶ9lͶ6/(-6;/í4Z=d'{&cl:S1χ=}HS+l ޯy$WL4`pW;X'znm*4:5oJNT׫K9ڧ!V_Ϲyn5:7oʭL<`px^[X'zn&Xܼ)uISYmAb+ V0IVIV 62za҃6hgj<jJ݁ p$VZy}9g7 x~OŸb6 ꉞCX}=uKD (;zĸv,}=y9DϹM||_m~fƙ .c=׹tk?<7`]py/9l&-Gf[6nwgjc~+8q*i|)n &rZo"1*Tey6IlHVn{mn6FŲ7&)3Mk5mmAĘmEwwcT[&B-Nm7?[mڡ-6;lTء-[whcƨdmؼ@lqIl 6ۊ-ZIJwӮWoؖ~Gb 3~ޡ&x7WLp=عW$E߯Q;tmS<xPOr Lw79zrF? W? ).%+Ѐ|*Lju.W9Q}us9t=^qvΩy2n; +͖Qnp_#r-fi`m6Kkkz R~m`m űa$ϝPpukh]dGҝD#WeF/)jTnû&8ВV;.3\Mv&eqt:}=ewGb,-i@?"p=c,&Kuq;l (>N0FE=HxڦٷD)ÏafZUm_ߠ'_YDFՍI^QمLM4=7@͛׳dF>׳_l`gw߀ lll;zlhly ADnwqhf"Ԯ5>(k+6B]b[(M+f(#Q'rFNߎ^_n&#m(x߆8cK4q}}'G/}U_dG W!S2lj?/;2o uuq0E>gXq =}IWsq/gs8|y8SjUy(! k^9dl(wo2)&`_DUjo 0 yBzWA>ϛb+VӨx}}4zWA>׳CNoa܊n``hw;H}d17&Gg6BymSf[lhنVm\sigg4o^_vgy90~\=4 q#qo<#zkI 6JŸ<|5|jy8 ۏx J0m:۹k&mM^_֟z$VZpaF&xʇBQoѹm9^֟yw$V_qA}<0cćb1Ÿ{dKBթOe2}6dC6rTu꺾S]g7r$V?6{&BRn!".Ϟ61:ŮO|]j>#NͧwMp]?#f=14^<==lo."}6{y{z1HR˷K&Z1m]m]z4j']B.}#QTNe u˟<z|}|_0#zI dvp##6_W2>&g0;#P?EU endstream endobj 8309 0 obj <> stream x]M8n?x,0Etit.b&hI&A0YrU{r/|)JyH}mk[֥mi]jӒF"/ٖ)Kvqmز5q|)E.N_j Huyql\ein$7qlM_Zjx}mJR6qisJ@5v@ndkcg7l/h3۠׽VZXJYR_3)ڒWI66icnzZWPmmAuRa䢙(}5AO4r6ٲ妉FC?˶.]O˂ieˆDI%PƖcmHlrxh%A Nr ۃm] CuwP3$7hy)YO[%je)!P(y$-EajK#8fSxi-w/pҜ-wmJpORSfhN=/570nS iB\pDj5ETӈ,*Yhky@$b+TGAy+I!͖ eζ l堪FCޅ1lMeqkI JQQڮ`8-dOx*i@˃/e^#& VŃ6OAWpLoĚƈӸfЈ+#@Hxx9BT\H R:sSLW]UЖN1{@u6+6_%Fm^ťF쯉*|:iziQT1t2*.!1#NҞo$5ݪ 6&a:9RTђT!gqa*s2+;*{{D 7Bж@6Dʼa*?F/@1P*uVBmcOd".u(:@@(o hd# ȊYP Kȍ$/G\Y9@VRg|U 挬j֘`fHlh `܄*kRB&Z-4 )ruUSLVxtRzHu:LځP4 fI!I|@&TcCg[ɐsLP!T,7aƊ1yzPa$|/(V3f 0A5"y%(w 5X܁Tlbnr^HAi(#j#j8k胫13n_@-15hFqe_#x{;gVqY ,S r&H 5T78Iȍt $kr#jsOR6kjڼHڼKmMb3H '& q+$m,?K: H#Tt4Ȫ`HL뇖e0"֫Z@Lƕ>\NIb\;I=bWܸhX$ԌˆUEq-24bU`F*ͨBu3>ccx +U\jS EHrD6 F,,n'I7@@P6Td':@X aR/\;)ԀLd:*.Mkԫ$"*֨l'pd٬QEl? |sm%ֵ̀XAf"!Af?lԦ:S|R[#JmKm溊[HVq ŠFą6۹D0ppǹ;i\b*bUh*?TDDOTђTѸܠ`:LmŅ6H6qPNd$ Q]B[a{R{ eLۨe\nԦodڔ*)m\ï2̇Nse/n&Ņ6JBELc R)$TT-\̴͉XlRڸ);piR\j!BІ $n#8fBi = yYBxםPau'T|MjPaƥZN0**L0N0m8$.T52&>9 /\ If=FKcE}Bkk7XKmhڠaE 4vB+QqB@ʍm*B[0U* M` m()7f4V$Y˻5OV%ڴ;B]Im!HjkE\֫Іe)\1C<[QZs񂺑Fm}En%HN783qBFC~o?.u~o?_ /˷ooޑkL,rLlXYLcbteИ!6g!Y炬eF[ IR:~E!e{%:ةv_x /K .۹?Y,NŶסViq>Ժmz7}\ #u'j= kff^?TNnWPmC}۔';:bcSt1~ -B۵!0{1Nnژ ;2t|u1i>Ķs2~~ӯ'hrOHwݍUK$*N Nگ00}Ȗ۳\k?͇. K[/߆ZFjӀV;̚w7J4cvx;  pK i]ìѭLvN"kinPZ0k0ϘNê|Ҳ܎FjOZN䷁/}1ڑ7Q\mŶF^o5qxioJ+zܗ[x {( , 5 (QX[$F.$,V廱G[ o`Ϳ_My~խ?O p; ^7փhq^~k#c(gN9[y>G yG[+Ymb N1N uID !,7] 5ûy{|ɔ'ߴ(ݸ*cN1)'M ie>LI>9QM̉ŦQM̉YLYBn$_T fMqh\|W+(݆f?JϘAvysکG#ݮ?q}&y22> !zw0b&>Ljދ̘I\Jf)14)4)kPw\&%cdy/͗ϯuz-;=3"ގT?29=1M==_:ņSTIm!j / NןkNf&91G1OxDX}(8)tQp2H'z(8t1(1(AdCC!zä.@T~.E1>}KT1?]l1rlJspNsLlM ?]8Jn]$c+)-y*(+((^2N 9lRzN s0'7Y<ߒIbb1sI$zRb3]I᧻To:>]dL6t2)fb`1|Z ,qżb^1/ytoɽ%>#s kL23#-ΉYLcb-&c^iqN9-IT[iq.iq8'fb`>X+-6kHBq ;$7=dcSscb[L,>v'v$=|5|nR2%%f񣒈 $5)&>{Y1pN X1XxLYyXx,b_Ts?!矩|L՜ܰBEϯL[_?!?6Ƅ endstream endobj 8822 0 obj <> stream x]ˮ$q?tA H /d{d 7dC鉎f0Ȉzi۷sZ떒mK&m9[vqV8c+VrJ'c>qf8u33ms텄oO}u[w;MeR KKeP.^Raṋ"joAGkay 3s 3{fq;W0`}O:&e,kK0c/vl*.^ruJ :,ќ68.78tt }tR1xu+.^eVRAio,;y} y=*^J';t&tX:ăAxP!o@f;[2zp)jN STt-Y Ą'  CVŃŃkA'M< AAV:v4m1xīL3P.o:.@(a،kFk N/ p)j(cxuP]YaeX֎EbE۱RY~td?@L!M?s/oLF0 :6ߛxyb lڅX H5Z%!j>W͇i>Ĵ.tăw .\>+Ĵ'FŠsؠ!r-M&Q0grq> cΈ3@ Ɉx`ZP]Q5P s}dxak ΃(HE( aAk>4#tta1=l4;(g Hbv&.+C, LiXBv@0Ek{oIbT\bTa6٩¸=QWr ֛$ڈ U4k$]\g+p!_@[B*ƿW,!dЖuqͪԆ!ImĥKm,7616 $ewqY]QKII86S 7ڝN.w/7R;7yH۪TỸdzX ARS`trY.7 %$95d-E/po,jRSiZ$ҤifZQkFmEu-ҨkFmC4']\7HΝ 2BBG9k@֩G}Ŕara67zs 1p6x\B@LI2^ 1L@ʛUNU!lgws};kpjldWR4&O0&M1J cBREþ0 Bm@mCv(0P\wm暴M> H١r@9ͪ쀭&1Lvh*>Ш# p[Dp e^4d#5bq P 9w/ px{KǼ$)베$|;n8 N`e;fI2xu)*Vпq }03P~ ro%1ŘVL2.`u7f ߏX'YÓp Y0bZPb`ĬU\+3kx;@1RU0$F8Q}@m@q c`)1$1| Ճb˛]\&.!mA-L+]aI¬1T60g-(! mjj@:Iڔg@N.3 $i|q AqyT7OU\j)$´2qFCcke0CId 2dX+/$۾ۏ~?۟˷Vl~ )/o՘XYLcb=&6BbuXP:RcޫNI  qꁲbx@!B1m(1) zD1/x#[c<mmyPc()n/έPoox7Bxƒibcg~-6 ۚy ےbbAX \feM,{&x<4K8֘'9(GэB=-K$cXZ,n=fsŭⱸ=CP1x %=CIPc(1|qFYS|싮z~%S&ս/Z11 BbEkb1?zp.J$U3XXl8!Ib*-Jb*-q/?]I!0EqЯl|Fj8\R}kub$c((1?XoG,F]S>F.wMrW7C|bo%svKL,bbXg \.nUϢnV?nۤ[ӊevg1Z~-CŐl1[ %O)js)=WxT.E)9\WK\|/e C!KEI1\,_,*EC\1-J,Ely*vo^>]FeU%ė,ӇQ1,0!b,,,qc(J>RߋziBSh2C1Y b51yLb{L~<'I^~" ˧.BYch"OIqM2rc^Xh<>4o $k5j5{YX5CY7cvMr^kڥTkGϊ䑮D|V =_|IJԈeC؈eeCɈS߰U{߰Mw=@hO5ɘLwlMbb1)ְpzz>AήIS}Nj4՚U\kzmbÆmܝfOwiO^;jT;6vx1/ruNָ6U7{[18A~lxB?ULG@sF؅mM 3G^d^<~Q=?_ȽGKq 7 ] k%k~R|γ/\5+|Oa\j&ˊ |f<_5+veen{vnoݖ~٦LKjƟ\x)4Z4Kj+f/'˙mʴ)U'ߩNaW^j_Rk^1{=A^lS%NaW/;)4Rm~Im'm[Al3, Y@I3\:x{C/?xWh}i6ң܋6rD\SM8^XvZPgVWm' &]^\en}T{?D/ 2;OawKS]^T .?yo!zmaMSLndG^~L}*.|da(y8?ӏLrNB6BU/,y%6N8S1VH*?<&6 ]}sqq\\4o.&O\_9wޢ؈7۱yQ, O?*޺5?H[c> stream x]m; FGVW1` ߻ plM=-+z A5UE,(,2Ji%kKJ/i4}ɭKY;.ȩiIT,-Ӗ֍- |ŝXzoںNNq 1)KZX3[kc66gοayp֗TLcIr .e @9J :^ŃAGoqKVcxcɫ6WPNS^Ϡ4+N9'ْkAiߝă[aF+{:]As lGa=蝆$wIŶ`PZ .^[`0 e@UŠ_F]Ç(1*(`tRsJ[ጵd('/K\eŏk;[::nAGOAGwc]+kyik@qKm^W3b kE0J˚_K+4. 6&?ź@I jp<gs(o}Wv=.ekj!jiZ9kyZI!p*B^Rֶh|_sBDE[TD*tFZ_J+F'(p!^v5/^"7M+BԺmWc4.oWkE!Z/b߇Vv5z1P@2ꅫdv՗ 1jTD-߹wLFơelWU^ ^ODJ'xqn h]XRy9+t߮ₐ;6.Se[ يUxZWGtܮ 0f!Arˤ#AvC$CTpC4qgq]\j%oťQť1L2M\hM.>mRNf..s@&jjL ]JdNn /Rk )*.)Ze.\ Z墆@th d@2S.6fHjfpu4JmV4J&c5pCkTѵ*:11!L*jX_ ]2o^_& _&_94MIf>ydnqMؘ苊 H8N'7ҎfHqfMhf< f[Bn ZT!X4C -U8юWĥ.swvS|#],V/>KmPMR *Aj@Tl5045HN`p HN,DzԦf ,P\j]\jU\h0(B. f33Beڍ*QPa,#Xq2U *\OHuT`'I s*Pye ޤPm朔Km*ܻ֋Ԧ K˸ e7BEX6A.P "TtV Y@WY8ZzInD  cXш$Im|ȍ$f,ҵMlAjl11 @j`@B*AwM[ 4B{ZU?Q2blL+*ʄ1 vml+Vq_Ne $ ڌªlCU]XUYdqںթ Amhd-Ϛ-$\5f$HHg$mY)9GN8&^B&DC\U8,Wq͛֓M\jY\j..a>d$T`j}غs,;L?cEs9P$~KAB`h!3 =S`3 =Spm PGt b*5/*Ёjŀ Zqa_&!.^M}LV\Ma\ H l3q..Te#ІZD\hۮcN Y9.} HިeƠSJI aTA3 wqB-UtB1BS2jC\hC +.,4q " R60؄fSYdT#F(ImL_B qk R+N:JX fC[bf t7LN*' T0f,Av..1 N0 js$Q895- `Ip!*vBIp$<Q APCq..9bژ]G-&j+ĥ tB8HR`LmTteNv =sPy6hy4qyÖeRi.(wFHj(Ed{FG&$*k[6 dӼu~#Pl*.rInANv֩ Lk1ı[CԖDLb^9b11/1/1/1/^Fyթ೔~]IZک]lsqgnGP_/׈y:qz$+BZV/omڞ˻Z]Ih9_zZjOc^TLyj-l{b"~tzu^qRmm'= z5kS9[۵/AOm¶m8y{M˗vq*Wv)ݫĶp@vO!Χ Kmvvvm^b[zFuf@LvvU6t;Ķ|mj/&]m2۝r~)ݫ6zJ-̶6~R?_~=)#mE{V\Dgɝ-4Vz4a~q0cO?/!_Bd9~U"%DXW{ Yש~@d@丄q wX5.m\Bd={9lxx۸:ƥӮkܕ5:N-ߪZ׻jSɿ/l{_LQGHrw䤡{2%,1M@1sxcfN$m܉V1;ymٺ9YOʝ]cb1/<5a3&Ο9zLl9YS s/ϗnϊoIf^b>Tb>Tc>Tc>Tc>T˝͍[ƐTIT IrsaulߡhNEszq!t'5511V὏ c7'y!9-C! ḋ,CC YS0)v#4KMzoQ,&1!1Cż4?=_qz1ɘbc1[ ,% C<<ks?|%}{|B;'ܢ-ṱѸܮ\0LS̕k0YlLz^-y"0'?='߫_^0̿eX?i'%֍Y| OyLFH,b~b^b^b^8 N&nVp/_ wRazJ #4YU29ʱ*5{U2+*YxJfb޹W%rXM)/)/)/s*9՜F:? dY}rsNb|8o O$c3+91Ovlb^boyIy!yUC1 Y ;~`R2f'cvX4{,==Cg#/O}~.ln;`lc+7s\;}IK̂{BX̶&z,^c_o<٪TI?K1'i:ɽ3ܛcXLg&ߟo뤥09'1ytaB/}Ϝd}Ec1h5ẊŻŻ'b?LJ#Ј/'s=؞Xj11XduBm heJfP*%b1{2)bb9&x\yɇ#)W'%o篶? Ozsp}sn$="cXx _=fqkyfwLLJ nv d̶#f\ 7'b(py?%Vͽ`W|Sr͇/X^U1srKܜ1ޡ0^n[,$)|x&|nm]66|wwhcb#$VbN_b939a;I~xgjkB}nb?Θ$`ۡSELE"bXXKK~/3'F~i߿OZܟ}j'X- endstream endobj 9851 0 obj <> stream x]],q}??ح!|o!$1~ZU=Gu0)tiIZ}[n۾VV#BP-Fn)d eKU[ISۊ' $&?IjOr iؓ>!umm!-РenSK-[ȍe(Y-0.I% C|M^hcki{R J-ƬRW$Ѷ#R#Kf(;-Ѝ(tMbAh4C^OjNv 5;$iK~[Jt=\ )o)L -גu}KуОthB{J%}i;}߃@([ RS H1!'ORW [ED{%rcY8U-AzbR@2zC+!?L0sD߳>υ-R!Y b2;iŸB@nRhO@d\$0-;U"9BJ+Lhu$hu䶈9-R9W/Hx{8Q3'KNՠD6I2P_ˮ oU{RUq%EF8ekmg@ !xB!DNwbQ[3-3lHl'M 3e13fmOfc&p}>h\ uɸWE*ae]q6~6\IgaT }Eq Wآk%PliXuWܢpQ@fekgGI@nx%hc5DFS줇% ĕdz⊵Oj̜ԒIb:lOUFYgNz/jz&KJ9Y*btp!XqƳii8\z|Zi;Xn)y@)r l-g-EJ ,E;-F#R4ʚSĭd]=,My ҃YiB53QQ+1>Qge+cB7M\)*{,`0c3.YL,ˋ@ h X=XU2 F5o'5jFD{RYVCoTk1&w"'DW[5nV,)k\U͞nS۵MkgaZȦG -omk3 ޖlQ-ۼ&%ۼ3S1=q; K'",:"ydFֳ522+EȄ\(2WWEiNYsY3E_R;b@nQ־Dc!1[`zjz:1TRcb+ @='ϔ CBYL] 47ة`1Q=>XTH}wE{-'n/x;ڻL1A֨ ,$V&]D2*g#c7 j>r5=q[4=q-XcN'nnܭρ`F Vk=W-w;wr5=pLO\ːm쑸ƞlX6/1+Ĕt? l=dk(HY m鹛54 Eh7>Rn*d~`(]?Py ؚ˱J[UfzfeTșs @sRυXK諮2MB\ 'TF(mj6v! cب~|"sH/?ӣ/7-=M>~+^׭m}xsPyve9k܊{/GWv{ϝ ~iԜvAԶ{!?aɝtMAð}ho\*w[?CS~>v~u]+q+gɑr ^<)N;ڥ;OWe:R=~)lsö)0=<8q94=jZg.i[7vCiΓG))!OO/e7l_ki.ǭm;ȩ4GЧci[7vC⹱2G/w3pdn?]1@Bt$ vy]fa\sJ=t9T52ȔF»$7|82w.yT+33O;'ʙh yp}!nsNsvhiWFug7"ǘ{2WF ʨyvF|5=<8?N)e%nANxl<8v*6Ȑn'ӑiJ|iJ|e@SKS㥷a#O/Mw2${i|oƕM?i´T%Wrc7$x2Iܗ'R}y}" yJyZ0WaKB>(*d=NFyA1! pFuX-OL{I{<2-jpExGo+{ǻ{nzg{5^| yqQ3v?Ñ=H>VV^Ҁ`7fmwfܽ3܍پ]˴e]^n5ZKx6Ww›zolCP}m7fM &NC}u;gU~R$~@?H+y`͠훒e0eﯺ5~zu=}?)##od }Bjꝙl(q΃E<\\EÆ :toQ[Z,cߋmb[ (e,܌,fFⴰ^ka4+hᵕ}cxGAݨ|Kz/i_D{ c|;_+n q~0o;s=m|{tz_tz9^OO;a/9_ g6}J;4DaΟsާ˵ڷ oiog[aFi6̾]!O|훸 9yy~{LH< g*90k3<'9i$1[V(H,c"{9ϑ 6 wy,,YJ) ]_>]ޙy!xѸ_,Z$> ^XV$_/{{p|}StbXwfR7OeL결'88qqy~xٱсve]?rtि:ໃA)zgxE"^n#fWЂ*^q-YM\v߼Cb⽘rfbQ]n|>_<_¬𼑿h|fe}}3<_3E j?-!|ף5gDcyW+QoN+s9^^)Y|Q}q|q|q|q|q||3||Q|Qn䦨5rd⌯עb)ޚY5YwE_<Řϸ<^T] \7777ٗ@_5kfHrZŃA| x_3. g]f}f?|wk/!R[ _˽5K_ϳ/7Ikf()()()()(_/J%E8r_/J%4ZFf˗F607*K ިښ/k._._b޳(X3볐X3X3Eɱq,k_?,:K }qz!5K_Uho/˪on/˪/_-=طWššݫ 1_AE3>/4:4̒>_^4|3fT,6ןUɚemmmmesJqUG~륋/>3k>2{kfg g|],_#x[,s|W+o-}˾fϳ////oƋ>qurrݕ] |ޘ}9¼pRzSkf3>3뾈>˝EKy{/_\ -EEeEeEeEFYϚէc2g=kv7dkc1/|yf|=?W͒(7^mE3ߌ 2edXJf$_<_<_<_<> stream xMm9n?!R၁Nڀ̂ FgJ>޾V-v&U,ė^R\Oqտ}\i5N?DC2_Kʇni>Ƴ單Ǹ yqrqGKGiǴӖ9OzߍYC]m*1˦<.Z\[3-s*iFYY*#Ok3h9Ok 4=5J{~[YR;q!c{-j#hq-giF-h1wkj<5UN.hMǣ9HU8K*χZyZFXj-KJ4k)FLZoRpZQ_rZyZQj:W2pm>JJY,i!F"ZyZk<`5ܦae+6f̯-jvv*Fۦ|<_]jӾƝ~mmK}:km.ޗZ;^ncm |~Vl8Kz]/kZ!v׸qjg[]°%jk{__Bckk?>;9󿬿}}qk\m/V?9׸)cXܑ׸gKXQwn/7;v;EU$sǒ׸h\rgyݾF}/DԎ[q`d!;Xo0Ve{u;.cYŶqN:,p5ցX>ֿ4ﰾOƍ=}q׸}}d𷗎y5e-\(S,O= Z纸ָ`=.g6J^ߵԅתqRLj?wX-S%y[Y~ʍ(뒵lYƽLN/9O{{(txZkܳT3صO=m;5}Qϳ勤^ǒD;귿 _n;s^("~fE%{5%qٺ")c;Jw{52fN@XCfD7Ŕ|IQ~<}}#׸j6J>XD_kq$ָqXk<@>ƝqELw++-9O׎Z;Q{4s'R|.V-33su:-OZƳs{kܩ}\tlsk:ǜX,Ϟq󳼥s8n;[;WiEyyflN]#:L.xB^\~icF/s9 K `._4l\h \>w.XZh3H.2"O+7r@Nki_ty_ܱG._TNw/_T׸O.9O{[鴏%Ӿ3oτb2%o#|NVfJIjZaQ$Rv5<|Q-j3s{j¶j*]X\DNJ[NPӻZLTX~|\^zr{cyZӡZtթQִ\V7V^߾6 {;\/>wvBz`92b%dEs+(*g>~/_?rr뱿o~S7u^ee?l,,DԔU˫.}l[7qzo^ϞxZ7Cn-zz=L~U 8ެ.\>yt+ϵdK], j9-pUUay *i[=gg볇ٳYa}…{fVB#XAcQCliZgE=V0XSczD#׳暽n9g3pYVܼ׭g%G"OݽXYrxh{ݬ@^gJRi^:YoNìi={X:'*^eX} m|J<@l(z+=f˟-V/Azfluuzz&fn߅ :&3/ÄO-;[ٛs͹P[[!zފ0S^09c[=祢y=Domx=+ɞdJ>66z8i6]qo떽nj^׭iZ[qYD{V]u3E:]I͞ʼ[ClaV|4_ktnm'^y?[=A9UﹽOٛ;}~[o>{3zY6E':(^]1/–/J >{A?{=)zxѳYI$zV=+L7V?-l'LRds_o~~@}>i7ފXoέgFѽn-zz+o"g%޳ϴ:>c U}O˷>{Z/ki¹pQ*vO׼>ʾny[N f̞'%=_p=g)D-v3j`n*jO[Z$MS>fފ|D-zn=ފ{g%޳.::OL?Nʖ."\OV|D:'jS4qKO5=>E7)2ٯg׳׳3ٳ3o"&1j=M_<-]_] 뫡7'Ro7{zuGTrY׭g[qɛY ^>Vϟ13z={=DgDΛS?{vtٳٳٳٳٳEg/ojP^un+-7]n=C-7:X>bz>#YoN['!zz`=4[oŭgw|;Zcf7{~NO?ӟ*l}uO_o<֯?~O BȏK%x O/0U~s~[϶ =ٿ01o7?|InLw2nIƤ1l{U1D}OY~X)RaVKz=s8w>Rߞ\I/~잖QG3zo%o!?fӯ}+7dKl`|37o??߾|__9Wi?<_<|yV]?/?ߥo}vrkCy (!8B /Y@AAWkF9h4͉Ds9ќhN4'W/|"\`/jx@H`yYgayYgayYgayW^azߥ} (dyYgayYgayVYge0^ m<.WwVN/  1xKο'?x;@Îx 70 o`~70 o`~0v8Áp`;v8Á /0?_`~8+0H# d#`-1\ [p?| L+0_ Myed`oݼ%Xo ƫlh64Chv4;͎fGOx_| XwBCzf}u`>Xw'BDȞB{܃,B^`1B:FHǔf,y!/#ei`y!/#e2B^Fy!/#e2B:FH!#ct%/#e2B^Fy!/#e2B^Fy!/#e) 4BFH !"\Ja@DEȹ9!"dO"BBDH !!"$D"BBDH !!"$D< BDȃy!R 1l"BBDH !!"$D"%B '{R ,TjR-BEH!Xxb؉a'vb؉a'vb؉a'vb؉a'vb؉a5p.L!!@ v$I`'N[! v$ICO h; v!Q RlBMH )6!&؄bRlBMH )6!&؄bRlBMH Y3!kVT>gBLH 3!}&τ>gBLH 3!}&τ>gBLH 3!}&τ>gBLH 3!k&d̈́5fBLȚ Y yU|/3!}&τ̷{I 3!}&τ>gBLH 3!}&τ5fJ&Kd),%U| /{VRZJJKR)Y*%Kd,RTJJR)Y*%KdēxROJII<)'%$J`lL^lcMƚ5) %6F O0| `~@s9h4́@s9ќhN4'͉Ds9 ceHARP!{ )(C ʐ2 )(C ʐ2 )(C ʐ2(( ~Jxx ؞ b b b bڀ x通hY Ȣ, Ȣ, Ȣ, Ȣ, Ȣ, Ȣ, Ȣ      ȷ~w~w~w~w~w~w~w,qxR@(e?AOp>Yܬا} ا} jF(`*`✀z,R,R,R,R,R,R,R,R@DP@$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB$tMB'TL®$IB$bur:OܧNJ'w]trW:+ܕNJ'w]trW:+ܕNJ'w{IOR$?IOR$e?ɍFs !5BIPR#%W')I~RV4+͊fL'I'I')It*J'It*J')Is✤&Ikꚤ&IkꚄI*gb&>#Ij`F1az$Gz$Ij`*$y"wAYKR֒fy?flC 6[XAKI(ĥ.Ep)KLB0 $QzM"sr9IxIn4'7ɍFsr9ќhN.)'or8w;N'dQr8a(n2.=89(A\E yC<(bZi)bZiq:܃NA'(gXSYJlB1%SB1%SB1%Sr5(aF(aFü1\%Q%Q%Q%Q%Q%Q%Q%Q%Qr5(((((M$lr 6pMiupM ŔPL ŔPL ŔPLׄkJlr 6\M&UI`r 6r\0)Lr\0\M&`kImaR[&I`R.T &UI`r5%Z Ʌ֤0))LJ ¤0))LJ ¤0ٚlMJ ¤0))LJ ˪I+v%ٮ0-Lj ¤0-L.fp¤00Ij ¤FI%i6UlrU6lR"&wf;ɝlrg63l%ܙMxڄMxlB&mB&mB&5z7svuɨS_d^kE.EChhP.EChh ]4k.:Egl]tv.:Egl]tv.:EChh ]4v.EChh ]4v.EChhڢ]tv.:Egl]tv.EChh ]4v.څUj"W[jw-rEڢU^j\m-rE "W[j ;ea,E7*83hAG :Zтt-hAG :Zтt-gA> Yχ|χ|-C|>C|>0 a.sA \.(tA Or"+r-hmAT Rw` KZk\4%h.As K\4%h.As K\4%h.As K\4`NlX{6=֞ 1sKΆ%gÒaٰlXr6,9 KΆ%gÒaٰlXr6,9 KΆ%gÒaٰlXr6,9{}|D;QTRiC#d=dr-`}`&.(tA ]PB. < g.\$CIt1dC>dC>dC>dCIf]Vͪ[ iuZ-r In$Ir&M$7ML7n2dt&ML7InLZeWY$7In>{In$Ir&M$7In$Ir&M$7ML7n2dt&M$7In$Ir&M$7In$Ir&M$7In$Ir&M$7mo5I2]Vͪ[ iuZ-r I%Kr.]~vo.]~v۽&wIP+ǐ.]$wI%Kr.]$wI%Kr.]vo.]jvR۽wo.]~vo.]~vo.]~v^$wIo_]Vͪ[ iuZ-r ;w!+!C$I<$yH!C$I<$ܮC~;w!C~;w!C~C$I<$yHx!CL2=dzH!C$I<$yH!C$I<$yH!C$I<$yHeSOI>%SOI>%SOI>%SOI>%yW!ɧ$|J)ɧ$|zu>eSO>eSO>eSO>eSOI>%SOI>%SOI>%SOI>%SOI>%ӫ)ӧL2})ӧL2})ӧL2})ӧL2})ӧ$|J)ֻ:UVZVe$yI%˫%KL/^2dz%KBѩwoH蒷%oKx>{)[RlIْ%eKʖ-)[^9-y[mے%oKޖ-y[mے%oKޖ-y[mے%oKޖ-)[RlIْ%eKʖ-)[RlIْsے%oKЭwuX5n5i1䭤rWY^9+ge%C.ey,~%%o%oy_W/_?|?|_~o>~黿=_.W:7>~}o?oPo7_ǯ?|s?}Ç~7~?]ӿ޿wo뿟=׿{8oӻZ??^ד{P?kx0#z:,pz;[4;K_ƿxAppp}^F̓nmu<ܯ=ܟ?܏j<^#pxn5 #{} =xCK{Jv}5+]~{Ѯu)kUjp{qkfҨşnzz.055]5~kyuF~^PaF~ނ^~|5/4[ݯZS棦$w=r&MQ4;ّf?kjv>?fx}kj۷y7~SмPh>ͣN7^sV5E4\Wkj^X`]jL?HpoH#伭 ]:mh'kŹ]/5u]?5u- ׋׳^wۛ^[]wpݾ5u^|6]\Atto޹l.5t.(VYa;K:k7lsIg/,-&ˤ ~c:5LoIuM|#t}zҙзJ!whAH{;Qƀu u 8bzM&+eFt?`mO,*7Xf`TmU[e߆I{{V}k>_'~fɪ;yζr>-'=]^ı.'֒mr9lˉ!d[]NwO rlZNneq1Η/ n_Bڶ,YH?c^"mG̢MM1nEb[cYm6>,Q&]m.-n{g?Yn#*O<='~pkN\LWX\f[kklwb \N=6Afv,foֶ-7 0fƛ佽7 dX3ap|ppn7Na݆ߎ-9rs W6mNa`ۖ‘];lw d}pnO5ƾ5'vm)BSllOOayٶӱ==r=켿Jv6~&?8M?Ŭ}?E~/[tķh]RhnCPaܞZN!d/[u\*v>FלXnl{e厱ל{ oPpDoPnPnPb\_lQη=D8mDvŽnıEa65Dh=nQ^mۍl8oQ8;1vm^}c};#noi}wӻ]ظHpovB};>6samXz^nGυ7be;vGڎw~.ěi,gtGxs|ӣOwݤ_5]5[5Y4N;~tr`C 6` `[3r[zݵ>jqWO?kʹR9}ǟkN}"mq ;5q"uE`tG"}qBNϼ>n>n>n>nP}~ q;3MqRsψӧg)&-d]&M5k2dL&FPz?3d4a&{L(P2d(#ۦF32[d!"Cl2d, S?~1cDT)#=&z 1cbb)xvT1cNRh1cǜ1S>|#; 1cǠ9c>| M1cٝVpBC/x@`,0yU0Bʋ`Ue ;#?/ H4cLji&} 1c@y;u1cV0Y8&q 1hcƘ5 ֘9S3f11sOC3&e ʼ*0Ǜ `o1yc͋Bӳ8?M m܏S?yU7E/2Tdmaي[Ƽd&KƗL/*7EيpGcXʬ)QƣLG2QX=nVRBnATs`SC?8{86;H lwߡwǁw\~|^̟8bDE)xϭVoMۄxv#< eysE?c endstream endobj 10852 0 obj <> stream x[r$=p l_[fV|lV"Lf0xM/a;m;xm?߶s̷};}xcy[?Q[ͶPļu8mbmϨo]Wk_>owyǂ>-?z5-3m?mqX?l7ƲMۂଢ଼i;W ޾}hVm[乾}\Vkj6Iѫ;1ikૅ^|t3ug}֜=0sܺ֜έ{ǚՑ]k֤k",&7ss5~^\}}üUzkΪ[x6/m]npzmu'վu2\=Y ruHk}aֶkPzumr-l.5\cTz[3ynm_{~c5^Z;5mM빺Wz}X؂{ւԜkbےaY>Z5GkF8ގ~5׈Z붿h5ַqs__/عڽ=#][ IZZpݹ8SO}>Աs~ 86`H> _ϛV7nA\@<>gìe7-I؍}߃~E S.L]0?a+B˩?QM\1111*/U:_{0p{`ҦMK6 mc{]c y>>>>~aǿ<u"0? 0%)9MiNc?MiΟgྀo@\@qmc ߃W ~l&To"&nbO? 龀 Nx݄Mx݄Mx݄Mxr= u#n"&n"&n"&>y"Яs&AMMMM_B6B߀(7r(7r(7rW܄M4܄G`.x58&m&m&m&m.Fo W{ ^ h>uйoטCkvivff0@n[m-{ݦ+w{nm7]f춒V8vư;e6ݓޟ{PwA=u{/="p\y춓vNvn;m'd6g<"P`6lLap [E8~& G<¹1s K\Όp0 Nwy8o`F36߰#^8.`cK!4Ky/p #DϏ:#w ~ ̋q&?a{$P}"p<_$gG 10??p 3qfL\Oqfw )xw )B?sNj ? 0cx)(w)a )@p_Q%q)xq)x~ͥǿe {)Ț"kQBlQ~Tz5.`H8@{ .EPK,ĿJ+QJ)&,Q ؾ _e E; /`{/@ſJ+ADfJ(qĉG . J*ěGHE'RBH %`PAˏGݖ]eύچ6G r+mlp{~=yuc`.x8_oԂS N-8_3qk|H"UT-RH"#p Dgv,@T P_O-J=UR-J(C3l/ ^)PO~ 8_l?(vbh?(vhgvh?(N ~9K ^@<{8l@ pZv GqHǝqyE`+pGqGq'qqqpI`FazOPGDpG | >[>~ W|?.P`{ ?E =`EG|DG|DAP=[ xۋ ^E)0`D؀ /!"!>y=Oy @t>DCt>DCt>DCt>DCt>EOC`>DW4p~~8~ ǿ~~#_@Otz9^s29?gApZxE`.@#q9ᰱvÆx$P@텧#?>=탧 Ӗ~#ؕկUxE/@VNNNNNN<u"0OƩŮŮŮŮŮ~D6[BB/y:nRb?ϦnĮĮĮCP?O(v(v(v(v(v&vU&v"{kn+V"bWbWaW!dB%P!Tb{%฀H7#݌k3M7>`v= s:z Ϗ??^ܫ܀= K˥֩V6ֱqhyLɸx,$x }r|l< 01/~CuȾ!:d_ǿCuH~ yd tCuHI!!  I)!:XPԋ@_ޤFRCjtHѱ}%C~Cp S`wˑ9!G:HlWnl6y\"p D!5:FRCjtHȑ>؞S . > %:$B/‡=8 =wg]RвgPSHm M!m)d4yB2OYe;!c'焜*ReBbLȇ 0!%dD$$$$'73$A]@|>8 $!]$$䐐CB*H )~"ni!#y4r9B.GBq`(*R=BG!"d]uM-!8otF/#^ԋB>ny\(LM.GMRGT8i!#y,u*KFHxleб؀odhPw$c܉u xyu>?>U=8ԃC=8ԃ # N#[pXX0/X vNX! &`B 4 N+ N8HX! ~5 rwOP=y1-6` 68Vt^/`^ 緀 ^ =WwUS;US;US;US=y1Xf;݁ixC9Z.|^q|Wp}=σcÞ,ς,x΂,8̂,8̂,N1! " 0@aN!,̂,xʂ,xʂ,ǂ! ͕,ǂ+XQ+Q+Q+_F`zl_`c1jV0jV\cTC?TC?TC=σñz3O]8{[NzINrd<q_u wŦϛn|j3 I}|ǿ*^WN봀VG#|Wtq\Xt\\Z.o[7ţэqhytpC7Z>ttS7r%P 3$P%N$CNzB2$CN$Nn} -nXAkI.dUI#IdIfdINdH.HT>y.E"y!9!m!RU"HHd Hƀ'=I%OnV8$s'-;iٹ[AU +H^@7 : Rs$a* ḥ vw M')<xNxST8i⩶q*iT8NRx4$oS߼{֕MRxs4$/b+HOlS$0lS֤')<0MUI&ꂦ*I O?3 )|{I᩸g*ܙ4T2LRxkiIᩜeē JIO"S$ҐV 4&MdIKXR$'%9)r}7 %]%*h.LHDDL'?G'>?_"_IαcOzl/S .H5*@RRwRwNA@$X3ǒE`pN\$4$4D$"<@vH-BRԄ&$5! )y= )g= IMHjB_\%! 8^g.ς̍PNHbE+Ry3ObE+F\l&$] )! y OW HLOGJLOiI IRHB$?I / Wx $$' <ۥi*y~noP)$P@ gWlZ޴iyM˛w-Z޵ky]__ PlS   9c$MT4rj9P)_/VGk~t}uӾk\<.-:vhp$Z>]||,]%!^E*%^%sdqv"{HD"{,咜\Ԯ\2UUԮ[wUu;UqKlQJblU2[KiUrBhǦI+BXŠV"!a M4]n YϊNVtTϢ-cb}vYkpKзvUZݧb%Sb%SbE+X_{ IcE{IJ"eE,+bYˊXVIJ"eE,+bYˊXVIJ"w$>ڱgH)-)EG+)%Kh%thEG+EG+#nEk+Et+Ek+%ѭ䟖"ѭ[o%n%o%#$!n+9E+z\W rTW*WrT0W^W419yE+r^yo[yOZъWKK~iW"lү-p#I,_I,_ymWWV$ulʒDY"}E+%/}%TE+%)~/uHS,iE ,J`,%o_j; X" V* /$ldU})FŰ% (E(,)}E1,BayL+a ^J_Q PXVbXްR""@n)}EU,bbI+bI+bbI+()}uWOEEE%g( EH,z%CdEd (!dEq[axiq(.b+LQ,Bby?@QK^K=t%Em/b)^ŒkWRn@/IuEQ\8ޥw~X#"ٰ%$U4ĢܬKZXJy"!nbI*BuxIEZ,b)\Ţq{E+R^Q犼Vd"`E*WU$SԮSd"rmOEo*zSћTR1O%i$)HQE*RTT] "Ey;d E)jOySAR䏢zգhE(E(GG8QԊ"-/~ _JBA '^€P݅.4vxF6mTnrqF6Yþq,md"76hWlb74~6Z}>|pϧO.> b{L+6|b;Viy{fo{V\laciy{fo {R^3🭫yظfoF*6/CPt s~+[io,e+j׊5~c){w`)[Q /^Ж]gרF.p:h#9 5-G#и}64ʳP,\@cg<[F^6o/ew2wle#/yfoe+sת5k,$b;leZuR2w\@ˡKXfo,e$[ufod"OZ-[AFE6K7K$,]cв.6K,flb7 [F36vYF*2w]lbc-{"Y,(VUkb+s,BleQߘfoe,];-{q,lVVk_q{[7nfo^z^zfov5ZzX#HF5xk$^#HFٵ]nW#蚥1uVYS,鍩k]7YA^,kV|1uk5K#ZVjYS,VcAx5K ,k5K7Yp텴k}m\՘F5Kc,k\7&pmk\7&pߘF5Kc٘F5Kc,k\7&pw&7;ck |͆XVڪ \Xo תUPkVpskT[8Ʃ5vje|d&k4Y+]&k4YɚYߛѽd&k4Y37x7dk\XFx5zZjVuՈFM5kr3"71R͈ǍjDTfVQMܜ͇m%B#ՈV1RuۈfmF{mT6ic쥍jfFD5g3g6Ofc Z4FjQÛ8a@D0FjX p0R6H  o'n0R7oDԨ0wFmQ6بQaP6*7 QaQF ^QaTnl԰ $԰ 6jTn$ r`mTnl mQr`X26Qa0V6n`c5QaU j55A iyx`m݆mF6x rhpB,@;n uFA Rg~smvkY_εQa7ù6 2 f8FA (0؛\4Πqm8/t0A bg; vCah ?%y4.@,pfXs˚#~QחZsϰ h0@@7 'mfaQeE;l}`|˓_'0 l>1<|g:x3gpve=|">\lx]X`;=NvzÆ:ܧUgtz׃x; ǻ(ƻ(=>TN3lthP,fC, u܃ܞ~6 L`lpn|Xǫ*[>w_r8`m=@<)PD<4QvhF14|KnQ bZQ b8GZ CplO)O4,Ce*xkP4 G iL=T2 P4^2CwèPA\@}5Z 7F}bd~x8_Lkv8Q(l8޷3tơ3>q^)0Ep\er|W wH%H#bmHC*+yFoG$?}"p<oq/ؿ)O-J~X\Qo8C`TVQoXU`8Fp y:*0#agyyՠ=p>Ͽ ¹l5&0QqOFǑ5'#?kT|ƓQqe edOFEQpXQF<sσW`3SFqeYf䔍9o$=`ckg{F6fsCg~E /8'8 IÐ4*8$Cp |6؞S $xհ #gqXFȑ8b#gq,:hٱUlXKF0=N:=@<{ 'Ca'pFu9G2(8RGsnYz|ؕF*k @L\c@x( _BaX na.p}KPރ%/-^PB} +-|| (칲+[UAhqcϝ3qCt6l8P|ܪl:t%̏PA=4`s~ɯ,~\񣈪Uf+S:i͝p 4o-pR\DW"@|e.2+s X_;t Ph% ;_|/)D4:Y=Oŧ"V[9H  p#@ ~ր-hMA,'>v!U ; "C` w=AA `cBCCw7`ј7،O4`2>јt_=(@uP8XX\sFH`Z6eW `.94-mѮ_(9[ C0 5>Pl>-{0PpTP^Tw3 a5~xWi _7n|7cb} D7A[X70`ƿ&s5[ 4 _40TD̂Y0rMނkf13v VN aL3% Dx`B L09ooSoL onf~jLvn[<01~ySqnöqS=/`]\˝kmlε k5~nZ}Wo-Xm2m)m)|}=س=̯}~-?9lo^Q{E Pu~,eگ{³f נ\~5a7>7Ӈ}>̥7sx[= phO#`5vp33)D1(`Lނ L09 [ @|@$9`L;{/vP~i p l0fɾ0M0 &$T-\ POC;=/\ aG$1M|nbAL,1! gppvP~K0-U#DQb"JLD(1%&A4XWbJL^y%\PhA K0-p/$(&䢘\brQL.E/(&䢘~@0/7N)\ Cs ̗@ dD Q'&DubNLs.@=BϐbԛDb2ML磫<@= m )ZbGLI1#&u9!mgBH0ĸb2VLV1*&Z9! Y-&?Ħ{l w-)ibRL.E1(&䢘\{.ʽml-Ox ,VN 6KpbNL‰I8قa);`tpbUL 61%&$dLb)$&_dlY;h^;Xtpt1 P 7447P*Q#?jG5+E *Gn(TLyP#bj=șBWTR;B}CYQDL15"F=էSPS#bjDLSƉS{JGil(45F(7 oǤ?&T#jRPJ5BF(Ո)TQɞoTPP*U#jDVȪyOSjh{EnH= /:BeC5B=4B3PQ"ZDQ(S{Jhl(kQ_-jE=էԾԢZtSnj<ަ-hO),:ҪEZH"ZΞSFsCYeDVjySԢZ (uӢi47o#-~EUԢZMjiQρ6IT7F H)"ZdOi${*O e,-E"XZK`S{J/PjӢZG P P r =o6E~ȏ#?zG=G4濧"Iz$ H5K= GrF4ԟ8L ҆R숄#zDBH =GIO'(]FeCsK`,=I.yiңFz4CRQ  {҆|"D~TPP~#vzN;=bG#+464 L@Fa*!ʼ\#CaDi8L0 S$#8yzao8BsC-_f4ȞR= ߠ4 m(QP3 jFAͨ4nf4|LI(rfFn~46Gx5nF_ͼQU3*hFh2>zJeC0ԿƆfH9KQ_Rԗ_MۓW:Ea*?@uC)vzLy=HDE"*Qd}/*Rއ)oŨQNFojlӈ?N?= endstream endobj 10853 0 obj [ 220 0 0 0 0 0 0 0 0 0 0 0 199 319 199 466 0 0 528 528 528 0 528 0 0 0 259 0 0 0 0 0 0 588 596 540 646 568 527 0 0 320 0 0 523 0 671 0 0 0 590 481 574 632 0 896 0 548 0 0 0 0 0 0 0 526 521 433 524 457 292 522 530 271 0 0 267 799 535 507 527 0 407 382 345 535 460 728 0 460] endobj 10854 0 obj <> stream x| |[ՙwڬ},b˲$k)nlq⬎C, vl@BHpĔ,,mSNw0Ѿ iڡM"w$i(}|{9zFqM.=o?3/c\4kſ@x( lo%3yőE_|MQ6y[J[]~}'@0޴f H @5oMߖM_fÎշv7p\347V̇pFB܃X.ڸu ql{͗v]7ooCp)Y}7Vcץ}x=`s˶lq$ߴypӏXU'S@|wmmĭczWŎV}^XPMOvW&+T[>~&Qw@&t՘_5/ۄ[ %wIA'd>LղH8i˽ 8%-v.4I0}q'%KNH]qf/qC[JB:GesH/bä=3\!xB)BpR[Ot0l\ zנ]kyl۲'vxi`1W7'J'hg:MNaX8ym:M4'&~d 0#F(l?"'w#ǟNi:M;"yH܌`+-罦4tNi:M4tNi:M4?L;coEs6_5ۓ0Ff\-W;*|^)M9d XVw-@ka XBۺ np쁽p3> (܎;Cp?},q CVj@f@̆B &;<ҍik[s[l`_(.t0_?L⭟LȜ/~T+/K.7kYɶ֙|KsScÌD}]mMu*+C@WV]%ENGfMF^ըU\&pe [[o:ޖTޤWTߛp{x$Uk%Hקi&R;s sw۫c>}¶^!e7oNk@-Dۑ`a/N]Dw+狩ԅ89Wےm̴{ @BtG~/0F1%Ov{ED0}/51+.KxiQqeAm x)JJ!6gT͌aU3 W#|vz}ix՜?y*n1.B "\kO}㡓#tP5[+>lpHYPZ I8^!ewRQڇ\#Xmx&)ӧTL7u=vAL};2n[ő=..wRQlv/Άk,LM"s}}.axպݒNPэA`Ocʁ:u}t\#ŭ"n վ.I/`eCs1Cv 82N7.+έ#zG|@Kr\eI'S)wT푄:L0ude=w/mMbkaȻ,F]]R0{ Npڋ9Ne+z;鑑c$=wb|xץWF6]3HbC%%C Ct8.h9eUk/k8Zz[?f_J?չoqm*NW55'B8]=UY\В^ԉ~Q~bA.΁j8Mi VaA^ԛ-`Q#Ac֜טК|DfZ1=YG^+MpzA^c8\u+)kA#-z+肂11ئ3H5-3ԎI'0ct@*wb Ars6y[9g00taȶt/-g:^9sRfA[u.3veJ'ErL&3&L8r",Se2aoI QUӊӛCޑ(:l( QB6Bۻ A34i2~2 crj4:n^fAXS~>U-GF w%WO<)\M@ov߾zCu%=O,zMڏv5C_ o7mex[űҝ ^a2;׬x29v_^hbށo]N&\?Qiq Ju>ê(6(Je?KN(m/WZK}sVIؼⰧ,Qe6h;THX1-|w_ %N{,7ww2vJgvv;Jf2x+aڙcjg*>F4j&70n v%߭6>%uf[\c6TqʬQ3!ldd! yaA- K<>i/]bMQx 5+˵@PPjJD *ER%UaUR2PR K*d+yV%QjA"WnŝڟqFhymBYgU8f* D ܆xCFj,nt4͍FmQHqa ]*|.n-T ) ^=w-=inTDJ5  4v.J U4(Q^"m ~$m޷^1"څP{oO >oRls^WfJiR-l%JؚU -p\A7] Bo+FX]V_ɭPA}}Yi>l~/{6yA`tUZБ7A7~d?so̵S_KdKyu+(ж+a,ǥg>ŅS8i:e10IR VC)VilU0A.|[83 ,p+:ku獴JQnU WA,͈/$l/ݸ^n\8M9rJhͼyS(dq{H Jg:5YrhTtp b]$=G9B5FIJ5 -ZGPyG8/RATxeem49eHD ĩ~ QH/^'q,ĢLMu3[Lj}^ykjkUŬل 1fo wI-Rϡ슖ƛ:Ɛg3gJIߙzZ,er{$vuJo(;*|MP)_ͼuz5_m;~"H2PbضuK%6{)H-% eRi-##%<(Q(le1ڢbNoƒzZx&l-x"r+ F[9yRo`\>`)w]3[S]^IfUFuLXZe|5^vLY7YtPY,kg?)) *v1{SƸ|<|~_.*/H1ɴB߃rO4C%$g9Z#ı/+k&*á.&ZHTV&Hb(*GP Q o1%-$UDItT+ ƒ EPhӽC7;b 7]ỉȻ'ESBeЋ:c-gy**abWjKvweڔ>_%\d~wK|9록 [ʊg_`i_wn^澫bRG3b>kjŮg+9܇\VKѸv=i^ht(@܉ u0C4%D29 kLZcuت!QjD S4^FJ bPuo^? R D#/Z'R׃B\]WupG=wܸzMU}܎{/[Ry99;+ק38mk3H~D(ݞóBrs cw%Y.&ţj^KEݼDe@Euӎb cVR3'N'nz'ͬI_*Ztu޿o,'Cqɒ]HP߽NwoQiGu:(zأloh2ȕʱdAgQY AeWQsYNNa绮":sn#\f^fL.5c$OnjOs3۾QUWbcŁ&kWŦZ̩Y7m-s3˚;7ٓ"XEDc3g}T!W%v ,.sKlW+kMm _s;f,;-M%/haon厣钚DUUh85Zb310,d Q>Cd#L5O67x L6+=צh]nt752TaZ\(Ub`RESMKxef44K Dpex,Y990%aH`0OXQɓR5 'd!*.u^Tx Jϯle>8Ev5ELbcaZya,YCOS]momʳz?G2sqM|?ԙ,w$w wja,ǝDJW#A,"FS⧄)U gcjjIχG,rfK%ys.ϳ Tx#e|^)W`e,xa,# of~^WKk{%Jy!ӊ~% ewϼus ׶61uL{Ot3ús&uD8bS*kvsw<^b4a""Er-юyMD 7VS7{@OAb e~鯜p匉n!xOHZJ'K=x.2:=sԪ.DBx@q,Y`CmQp|ݪh (}iGB嵞 E\S݌hZi]ߩ)TdnQJ_#t&B:/0wD[I[wu@Φg+$-7LeW4zr؂5ήmRѼ뒃[ gWTYFMJTU1@ŝupbM^PwPġXX~p silFNg 1!^OL^1a\+xRUuv{` kmnm}aEZѕ;:n⢀VMr7l;ğKo=4sh;/A^r^_"]_%; 8nN&wSdI&c><;T,k5G2>y餯r.".t <~0l9\='1(~/Ĵ3$ePYHF/Tͭ2 dq7j ״%ޡ&c/\5WSJ,L쿴J^eG?jf~ۺU׮8m(h_氜UTZ\T5ť5贓Fnw(ģN_q\.P\s& zߨ.JdDvLyZI%|D4g9f!v)Dy&2?ܳjcrWjwuMRUqz+^)Ŭn+ƣ"kecǏW=|l/.meU-~Z޲$]G^{|7q!5=aZJ)htD !A09Kt6뱤 갧~=}!`ġJ,}DRL3/\1G4.a Nt.~oS 7#̙ÝM};{3 mU>mwqn^_'Xm,%hOQJ@w#uaGl?0Za*=`%-ZXR+ԼZўҞ O)G[G@K;=G:.c 3Ϝ~,{ {vkK( +l5JjdXQ2t,i)D)&.1nȜ'ϼİrHј^\wM(׊>F[x^zVx2t7G6Ag_l.^<0}CS]^:>׀}h#4cB#|tc|wNO6pCbjmO)O$[ϓ)s:z@HcNAŸ)IjQިBݕkig)._?'Bv"U(FdBŠݗ 1*RTigԄ&=-oihNNg_1 +E"*LIGM=b~)E c[EeNZ7jP]x̬t]FӴ f7Mʚ;kN8r̴̻gNk|F;+qg͝3is ßo{JVGū-i;, k?C`(Ƌ FLy&ӃgB8=0׿zdM&g=S[/8ά4o 4zl-3Mw,Ws1Ijx{H)!~{'X?D, 1l,;^yD$y?CW z?oF28jetkBA fhGwY?͌Я4: 3Rl:ރ S\_hXh60RBBwKM~,,}z8c\lre6c-;IUR(ic㢫~1:;>d^ɉ }!6p825a[QM;zVF+-{hkVΤ VMZyjީNma{{0b!׀3KSdՏ6WxH`b}wտ[?{"u$۲1͟Ec^=/S6FFD5꤀$Q?#N vK&ۍZmB&ZD1A )+(@^$^9 FM*(oj{i=F< q ?]Ps8ypvrTo ~۝Cn7jSa}sNl?!*3U fDj`CSO: I ҆'d f($$cFxmPD#{:J`ҿI޵ɕ?7ОN0y->|Zݴ[da0C߆isڟ3^zϊɿO;^o hYwmy4ls[޽f=҈?}Ňʿ J 5Q0=2KqN4'4X+sAFN >ThV^ 7b&\duTTԖˢ nA]稇_b@c@eӸOBF@Ƹ!{s/Lpφ\r$I!#cTp M$7SI-:T@}d3%.qL .@ƹ/C&"!H6Cj0/ cY/@&YMr u$k&p.1e:_Fl"̥E.a懾!5 Z? Gv~dG=~d?tn\> d55$בpɭ$͙ / u"%@ )0I>Fr#H֒#Y.!H6s 殺P!   /BF!>1dfCQ2j$א\Gr=XDr3%\GFE^eѰ;`C4l8&Ѥ3tFh m!hx df,ԸAtC&YMr u$kv1f*%\Gr{d=FX>X\6s A~_B$ 'YԾ y2%VHqr5jkH8q Fm\nZu$Aֻ?lF<q%F)|8= d!} 2N=!W&Z+plKUeHnZu$G&rFd3k`Zȋ/odfհ2$Ϝa$א\Gr=n$JYdf. [C{m 5oZj$א\Gr3FDK2֊# Au$I!fu͐Qrd3d PI lMTJ666jJj\\j$א\Gr=n$JxN\G9+"I?}_A&\Mr Iꡟf#Tדz_/|O I^B6BwF縚Hڍ$7y"dih" M44&DHCih" M44fLIC3ih& ͤ44fA%|O1"Kq m1L8ː q!JY*_c R5z/`f+/,(Xt6"P0A*XzTe\T`61ޱXn=6^=+lnս`ӄZ= `*XtA*k/BkǢB+؟ Qp;V 6P:ܰ̆=_e?Xe?Xe?Xe?Xe?Xe?XhXfgJ-rd4+a`+B  hP@{ \([@}yN6岱J_OMQ H *z\-`V-TFuחF ,Ed&Jn7JCiFH]YeMQBT2h o .~]#}bc4,AgN`nM1>iY̞Y6h804S<+h,tYs:ʊj']i90{^`36H1`,>\MY"m,u!rkL>Ys|=lP1Be}}W9:i/ȳv,%{'S  E# jeu39PL%&GUkYI𴖽lREbL^ K6{z|r?tS;,Xy~a"% ؼk$M>{E}mJ/HveoJF+R sOyrM)E7b+P:rEoF{Nt Dٌub9goFs>M>sw(ғsԫT NTYW;BV,uw^BߝX@73{gQ+9@/GG:"n{I1sW+NZ91 i=}-|9#b̷d 6J}/\s:B9wS9] Pڱ&#|Fv&_I++ϥhFf(y8 F]n=򊘼){$k͡澈y{LϿ5ĕ{:O3qu:*`S7}bo=gPVysϽmc]kW=m=0R;E.x0,v[ajn).q9 N\9Ta1JLNf(4;-6s0m/vM[d+4ݾPl*KP[\cr& ,5;3 ]Xb0WTQS6nZN6je)EZlf'dK sTٺt9tb %veBgQ\S NҰl@9Ls*1^d/w\4[+fX4KE2lZl;,N$XKJ4 JLSPL,_PXnb%PGj.5۰"CQa)5sf,'L*w*X`*#'u1`Dw]G(J9KBncw d,1f%`-eXXjNNCf29VPitģyҹ*1 hS [.R/Q`1 PtݪXr"wU_X]y9GVAv oqX"e6 bs9y &KۄdqCYn o0a*4 v^sYuLo]&x2 6ÂjGYLFz6 nR"gU6"+23^f4 SYɒWoS˱Kx(,LMZ\K;g接H,Pw<)OZkydg`uegtݴͽ'MWg,in&*C^T`LZJ8 < |Pxo_^~I-+W_~|X8ڀ/O oAx pm$;)» Q8' g?>>'D jU5UkTkת0A(0Q$G Ui'(}#}z㵛bUѽXT/Ч1s ~xExC? ^^~P> o~PǁO*S ~x}xC? xC1yA끐9J@CCYďω??>/B ŋ_/.~|Y g__E a)xun=^}>৥K[V_K~Fzt99(]L t sse?K+\t KK௤KׁoPD}+}PW7=R;Z%7bJ-`Z,%D#D֠$\TGG1X8up:8AN֫== jp: 8Y K 8E[p:8MWputu:p:8S Vgc؃(QR Ar`IR&i$ ImK.R '@l#HNPd ~hFjXW9W!IfgߕOj,P<1+[6{β+GA'$(!W'Xea;&^ v5 d7'( )i_=`aX}靯 |=3}a:ڲsy+otعqgo\_s{;?9sc>й~\ac*ϵ QsB&<.QA,HRP[6\K?SB ̐GȮТЗuGo'̈́[%uEAL5MV )K26^3*1/1?q!jK"1r- |~}fb^3r ZNA =sR҉Y&6 T{\[î6MA{7o/>;_9Szc28q*ld|9!T|pa-ӕ4-+8ެhw;)r+}4gdNS6`L9e0CZN{5 qofhW4,3QP W-rIC!} x9%]uGy's[j{Kgw) -1FV^p%$JL㛧;"‰uNJW@/Sgv|p"-<פVr2rͦ~MzNiش93SΧ"g\KSEm<st@-Y;QCM'ַmGu G{9j/Ɲr& 2~̖O3NsW֯h^\éB5; :{Bx)N4=Q`|$l)$ m|<҃W umOls' jyLS}b^C|r=wGd9//?SgΈ['M'ΡNT'I>*y~z<|֝'p ɫA8Aku.*2V ku#L;Vu?[ޒiyN ێdʼ*Zm*sE!~UE@Ԃ;JU>yepO`A8KH{I;l+Z#׎ ;y)u!/皧zr:;zoy`ϕ={-}CvoӗzNٯ۟M߻󘒹nҺ2[^bu끎q [S8Ag\\s7 +ޢToc3v  3ܵLwm>61i!61fs6 ]r}OdƳ{;;]dvqmBg,Mx0 ~\6 |}BwLp! .[ ݇6a9za0R l0k. Ujx) G&CЧ>5o|k/?w <|xx2x np.xl)OܗV~l[Vhc%V>l[V>l[VH{tZB:!!x* 8ӡ]cWP!V }ΠIRhſA%JAjD{>r" =.3cPzPz,Gцѣ =~9q4BmVaH] mC.Y+ޡ3X5@ehuZ1f2٬cnjCoW1ǹYd`uGNoзzϱXÚ%O~Ng3##wg?.8`3\ .xB"om`; 0v]rW//Kw{O{76oooooGG >~[wC ~S_q [w࿂o–e?g;~"xC #&z"\:.? v`\D%G/?Z;;Owwk/7_71PGu}| Ļw/QA%ZP4*^&hF/шZzA+ŶlO`{hٶŞnb-hAw}|yNi|g`!qΆOЈKp).hKkЂ Xk ."DĔDe"&ԎU0S nJsɚ?>a$Δ>G؂ȼ%yNVe62]/+G޾?831K]ٹWj\h Q}+qڱ>j-zBU2JFTM:9jMIrS6bob;fFa ([G"Ӥ4)2ML"Ӥ4)2MLDe"Ӳ`f|ӢgKN֕a>3p&gl,BscE. eKn~+鈲1``H,Fg1: vQ]T.Zb[c@Ԛ&EIQkRԚ]+E1[ sOv_ėp7V|Ͻܯ׺Gl?^jG'=i[B]|_H9~~<~_?0_WO~a{?OL/ { 6Qߐoh[{`2z.&YX 8ƣ*zuNVɄ3t^ QEᛎV8islY'+dElh0~).SD(_=[6,{3YSr׮V=V˯buw5}߂cP<5eZ܄[SmwK r<%}o[ Va`x\Pk~gxGPm*Z`Eele3ʾ\;$aYIkzS~,r+Ver& kLN3\œVjlFRor˃۔}j|pgG؂(.UWу^<'-<`j0)9>(+9'b.$ڠZKڂ%w(]C (sp흱kPݱA ]/Q8Z1ퟢzYJe7b%nB;Vf_ su'~U_x~XZUs1iKW~9'B~DZg 7Z堬Lekl?}P6L/{?/@'eSfe.6aamo" D&)Ŧ}i')~A<o% o%-b"Ȃo]sob;f^#lAro!_ *zbeL@V[WcVcVcVcVcVcVcVI}j}z~ϯP'PW^X11+da:QX&+ӏW_6sŠsŠsŠsŠs̊s̊s̊s̊s̊3iřLZq&)ˬ(mAuv7,ƥ JmGۿmᎎTllvtW{Bۄ&6 MsMmq6.v˽v K]Bb&Rk&RjPԚ~~Q6 ?G=Bj ORd9;v*N@u텨W&fҼ4<~.h%r4 \% ^eshz@nʬMh*܌[p`x+;NUVm~.܇ŢzX>[5|p7Iu{S6bT*|Z_oG{7"ꌷ܄vsl`2W+ wc5 +sekm?n|7e-?O3 Z<eÎ?7eJ1vU~R.^Tь-?KzEXbhڛ+zAU~觜~ǬVL s_D} if_1x+}T3KZM_{kW_i~:R \~-ǿ%1GɿYWϽ ɿ 3шvh72skfItWĤtbLڤMҤ+MҤ+L}RjT'hhSESkעCsoF[E7ۚR-dvŅ)gg ;kzG.mLs%J. Kuoq6㿶p;Coi͜~ug]?w?~ug]?Yϖ=WӸ4q5i|q5i\MjWӸ4`{5mP5mP5mPӆ_a6a6a6a6a6Dp>ph"\F\Ba$}).hK*ZNb?~5,}ZQ <+爟Z{qc/8(ǽ׊fD~@QrUG-;1ɔ :,gpB,Epb)|YWbLna)niKryMW9,ɓ[2clvN]+vT{D=ձWI-B)-B)-B)-B)-B)-BZ(Oc.NgpBq"h*W¨*ZEWj\>r\+`Utnt+qڱ*7(i.U=祃zmP mtθt-$6GŻFSNjJjJjJjJjJjJJsp-i5lI5uXO/Y1Bk1aʿSNeU02cQw8&לT^֮E(Fi*K-!꧸T|gvwlm}?0!8aN?јcAqڈWz7i&~2Ni'8'n8 8::~G."\yqr4FTڈJi/4˻Jai ^|_ѽ? bGNu9v}45ܷHr_~=it370Ӫp.ShKԽ͸Nq=VunX\C޵[U4Fџ1A4AI?W_]FjetfΌљ1:3F9htFg6?%m,D/{aGFk,G/H/0Z?e[38e#&& omIlƻƒ]y%awO uX Y8Њ+FWla Ѽ%Q*vU1v-Z)b`_VG9k'?)MGˆ2/ b~{ G:P?7#E悃yGz by2\&e2\&Y2%I$EHtq  #2BЮOƌј1nqhY17Č8h$fl|yoF-)e>N4'>7}/h$Q"?A4(ќĔ5a&bQ:FxԖHDReʔ+% vQsb{ev;Fab'ǦFiҝ]2+2{F'7]DM}~y͉qrCszSl#)r_%c:5Q2qg;Q_bn4+1/8ɳu%Nq^;-my4q{R⌨'q=a8۹_N#\'=_]9.TE]\rʿLioŞR<+!Zx^x171Mx oLb3{xO|-`^~.j/&j)mJ?o Q}hNQkXz].]u^Jߠ̍ʬt^;VEM7G DKoUcp{{;qg\z󾤞QXzD=r}ν?*} V2k٥_+hY8:.4~_FVM|Y*qF,e`*֙/o/b%E_YҢURJVI*)Z%EhURJV]UWok)K):uNSҢS:w4"CRdH "C,2$9~rUr^ΞIΞIΞIΞIΞIΞI;9{'w-G;r^ɝ9ɝ9ɝs;'s;'s'wNr^Ν9ɉ{9q/'ĽK7sNNiNiNtnӭt5pNt}.钜.R.8:N78]=ktINtnӭt5pN8 t ӭt- qAN:9]tsupNtm3q2rszUagpe 4':F~N5qaNtCnktpaN:9]=kLp1N.Qpg:ot=s9nurun%9N9|N7 p!N7pN9n6)n6f6Mܦ4p$IqAn3mqAnmM6&mڸMgion3mM6 ܦmqn6kM6n3mYmzM6ܦ۬6&mfYmz9Wnz8,27>nwSxREhn6=mDN>(s(<;x0>T '񷂹񷃺;8T Gl '`n(KK䱠* qy+~J6Aub[Ƿc;`Gv jSl,{8sRf2{G})3wqcG;RZ!Rю*;VǩƱ9'ڞ j)) :UEQUAQUWPT-EUS0EUPTERTUAQUUMQ3)( ,EUSL:* PTEQT-EUUEQY:(*KQ5((RT5Eͥ((j.EͤQKQQTEQT-EUQT5EUQ(EUSL:* PTEQT-EUQT5EUQ(EUPT-EQTEͥ* j))((*(*CQUGQUUPTEe)((*(*CQUGQUEQUtCM#o\PPK]]tSM/P ~YmFVi^3~ꩡY3zzfPQ ՛՘͡vNO*llnU͢= ?]HnO;@qrCsϖw8{_)(G?F^?qGj!1׺x(duZu3fsmusa6Wo67ꚨ1qX,=Gϓz ׸P]$bi^*2.WO+sKԳtˇfrI l 5*E,,kq5Pc=5VRljE _f|-,,nU΢w[{u.uAyk_G-Q*ǷORR]کnQ(e(mF(F)lF+C]5›ҔG=iGi~F5}4?:1w|0o |njuz|yoi+k'i~ҦW䈞L1?Z^Z4h[z+Fֈj[ziD/ꡌj+#`݅GAj(hx3{(Fj:0;5jʪٔ]{Meͅ(TCi1޻:fQ{cv j2hjGQhԟ7)oœe9Jmމ}R9JFÔ9J 92ꙸKDr9XNr;GvrlcӰ][ߠr,*WyJ+eRf e6Qf=e",ٔJmZx2)^2(2)2)2̜5;>'R\jGU'9~2坢ޭoPޠ'(I$PPf+eM3(2+ >l&rʬ,(2s^Iݔ92)2G)2s6L@(=mˣՔAyAs>VQC*a>tn;wμ^r,*OflN.,ʂ2[)3獝M3(<yGf-TTEߢl l  s*l*̪p STEMTPxFT8L)*\M]TD T8v p  *a*LQj*&*lTOTTIMT@3 oZ0Mi**lF*E>**lۭL-, fkp p { p.!*¡l Pa p 07+o*l)C;켅 >*A*.*l p ST p6PPaQa.T8DT8TQa6f(}Zc;˞ .DrcPAvJ4HH?%Ut|2qQ9Po{:x2$]MXg^+]!])%'KztQwqruǫk ..mDr_dWaЈK!$#0D(fWKt5"jģ6 #A -$=4  NwtDk=<]O=~Nvx08!|s<3c/L,Ar㶸b%X xॸJI9x s2`Nɀ90'd s2`Nɀ90'd s2`Nɀ90'd s2`Nɀ9fp,ޅwc8q"Nqo̺L]j2Zi|PȼA^xqhgT&3|:OOi>] &eGœgWx9l q8|NdOq̩pFf{`{3L{?>_3ACYOb[ӭ'OqCOn p!b"\ q).C'>qD>n\ 'XOi^ONj >"> "K2_W _p- lf0[;اm/f4w=Ye |F +܌='^S ?ǭ~p;z+܁opWҼ w#=~Ё1sgJˢH(NYDž^&DHc"}L1>&67DH#id"O[VV㛩^+X$2L* *,""TEP"BUDU*"TEP"BUDU*"TEP"BUDU*"TEP"BUDUY᜕ i=|9]En{9-A3Nr9 wiQwi7ƻgLO^ ~ɯ26ͼ_ۿk8~C!{8~v4   9#R,pŮ,S XVՙ*\([-V\]ru9hϬg-pтl+< gniis"> "K2_W _p- wU3Ū\3YVfU3ͪPp'3 whP4X(, DBn KT( eQ,*EPʢBYT( eQ,*EPʢBYT( Q *DP BAT( Q *DP BAT( Q *DP 6~Y?kgm6~Y?kgm6~Y?kgm6~Y?kˆqm(F#Ќ,rN oxbvÛo?`xoŞxގ7$xl\n*"Md=cǭZPD*H%$"DTJ"R){c ^ޯ+zޯ+zޯ+z;GĝO}7; h{.nJe+sVlw; U9j,[e+I2Z6_or;G"~)FHv3KN$&ĀP ߬~z?< 47jOH2!(NeB?|O=<𻞦WT5~NJ|`yl;B57p)&p3~[#%9GIQs%9GIQs%9GIQs%9GIQs%9GIQs%9Gvs;xnV7SA+1sqlzz8_oz9Α'sTvVnDB椟 `-*x<8:<&TY#N^UXw6m{]'^hO#[N%~_\iz 7:MXfGg݈p}`5EaqD>n\7:MXfPȲ׍,Ê:aL\:ކixa[}N^Wfg8Ll|xarq9b.a>.XK75#_35#_35#_35#_35#_35#_39 +3')~VmJ܉_7IӇUƃX!ڭSX xb#69<^oя10U-5zM^m8»1 xdO.ͬ[XX3O^o̴ff=~*Seprֺm&QZ%w#L'PDJjÈoD}wF|oZ/@=T4p(dqޏ`&ٳ! ,Np9k^V;7IZWj_ZW`+`oMԾ7QveQtQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQdEQd'[y^05;E +0'n6q!8*<{"O-$bEH~)w 6 I\uT\R"J(üunj4w3X|:|:[3T38Ay6ۼwnm޻{y6ۼwnm޻{y6ۼwnm޻{y6ۼwnm޻)wr)wr)wr)wrOD̦ws@cøWWuu&/Jյ7T_O-K랔|޾&&R-H_diq^v n^r&wKBxwxSi\׵-Q1PiCr)+tk ]G 9E o@1<1+fUV֔uYטu]9דㆹQF4{v1 @ɉ9zN >>-Ŝsb>6# ;e@UNWآ{)bqWD<3|2n B1G7K ._#5m%}&3*QŸ:&:6"[c?yQ81o>gP1ൃ%>:eary098$쇩Bt=*QW)wv|QCc\ƛjUqT5Ƶjya UcMcpcu۾ L v!sUW^mJWeMx$ʉ.G׏\ȲUtDirK52/ tY.e(_:M} ב"ޤP=w ժ5! e^+8Fl7`>﫝5V+z)m}zH/H/D4H)Zi9n5^>hšr"w δ}V\}X+:0!]nq÷p[AK?^fu&GAA$\О; kԵx/_!ce|A%|-W5gO%Q׵ץ~K6r|M|-+?a?BO'ڟgyu涡j؋;ovU Zޣ ^m{vzhhs' :)l?}:|A;_憱)niJ]m8f_ۓ=k˺kʺk 4KܖDxYW_CT͊YQN[BVtZ4[Ba"mIT)"kd8h%kd=/{q.;r5T͍6 g=6nyhsnh{סu &}}0 ?w}xYn:S=׊Ca;ڣ<>kNqYC=9/"\鹏zZl&i>d7[!Ql]a9n[]VDWdb W3ΨΈ Tu:[%yOgiDڱoU߶VxGzGT{A/Ake#0'oxkO m'ci %0ܔfkdeqitKM$L[h #g>mVny0|?y&I'8V>"mG[-^w\FtIb:rh[}&$OFp}O4罾>VGGfy\#]tWm=ut-oFyV55F1uף✕TVRJ*ZIt6dϫ/&뾞]k灺~,{t42~6hN'Vw5nu)m͘'4gFf#58ȶ厲ʹ-~觃~4/?7߼oSq~o>Bߜ~sϻyw?o_7o|~oӻ=~3gQ㷿KR#|zUeÑsG1kshU咫8*ʓk<&TE*[J~/C.[V :\4lwW~c85WkLH6ZRVjJZIF]RU\y[4y 2\Aq3mv[5"s.^N %wvqg-8[ؐޱIq\̲8f_''w 9{Rw~~ ]zPw].|Wz4F~ s?ޠ5AEz`kWϭPCzQD[(V (ڡRvzg; 31r/ 4u/WJ9k]CqH4ygk]Z֚k]_zji ͳ6|0ޘ>m=[Ί_\af=ֶGl Έ769 x {{vh6}vuּ_{u|wyxУ/%g(y綝[+ퟧGnAٺZ;ts6~wk<晝\xy˜kz֣^?7٣ytGxxw!}5$Gozo{ooIE.ݮ4l,hNG /t~U; '{UmFА< o7L 3`J`V_b00J?Np1 f9Ͼ#Ǫՙ3'dNӞxAC8|;- =0pAf vWxHqZS DfOevkuݟ羕-W·%Qs==?fZǘnc |8J~6\~_6܎^Lu@0qW$8Sq-^cDoiF֘sn7#-2ߢpBhгo=%ekfy4+AҘd6} :B ߎGOvL{4yői_`=KYjdۃ흮Gw=QY|n`i8s呍cmq? o`^'?3lc3v3\ gkwdn=e-%&gmwvgmOμę8s;-qvgowvgow%ξٗRg]KZgYu֥4c;%ϼc4=-=޽4{$͎s33Nsz;tvRY'uRYg,l5qUi Vfޅwc8'9ckf 1q.\+Ѕ*<5bcBV ooE ~)XjM4K9RkcEÝQ5[88 e~ҏQ1j!.ǭT`eӤ`VӾϜEz^Ez^zTo,Mp.Yz;Ko^.N=Y䌋m-_mxv-bO o^`LuB<{tp2NB<1l@mԾnjNx#ϖ*GkeIV [8ZE{śp䗱vIg%ԻdG wvV{$^*wNq=bKoF`XiVnRs82`װBBj߀]Ŭ={S1:EFp3V6ii? p!b".2t#ܽ5~}wln|_ 2wS/6p;m1sv*NG!f-4v*j-$;--ҖM6)Ph-Rv* dYYS((AE₀\Q*(jAE6P6- ";-]({䗙LLsgfZ\=iLSm<m {nR}$^av{Nt&OUz&-jVܾ׿%Vg3 ֛jzH oANHա/f*z;zV45tud4B%}=!uc>$P!M$ϓ؄jyQRߤģTsЧ- ?h.Bi0DE(ϲ q9;%-"#SdSdSXzz9-x yP[*jKu"HeoѺ~>t)] -͗zJuͫUHAZڀN">w  C~e,{E4lTw!d?`ml:͵i՗ih4FZ(;k0A1216XCw{k%_{f,A~^먖)8=mD`zǛz AO)w 4?t !> ң:?^7\,8A&Py&Py&Py&e&@b&xA&Pz&Pz&ا^Z/}b77rD7X=gT{3̃Mߢ({W3Ы=0nACѫ+ۂpxyd'#?!}~}, }p72+}bاgjk!@T3w'a>X`>X`>X`>X`>XVʊ`>X%Ui4<[FFiQiiiii)DX bT̎QWf2`3 Ll&6 Ʉͬ:+SӀ++YA5ŕQiiii|l; k,%4TRףl "|ny= k]l9AW[9s39Xy7]sF(ȦF$qElm4bk^NGͿ~V(M!6GO^q,$)ȟ8 q&r/+8 /BFF܄q VJ1IVh~t3_ xi`pj1h+/^'zK ِ%i}eH-W㮾(L[MS+iT=PZFYg wzw"X%a $l-N @dJJ]lyfƧ5ͳ1/oGOGOGυGφGφG3d C&<{:<{/Re|ͬ&{8ނ{85hکWv3V3ÐRaBHgKӭ5UYb1-Bm1-ZʇV bynWf? c戮 9o59Vg<+_(=LY(YQ wvb>|h]˂vh+' 4q55 h:w튼q[Nۡvh=]'r{3-nfv \o MнH#ffxj=`QjԳwYf9V; ̤~?vT畺V< [@`{ l(ӄ W*ܶEfܮ$sFlG?,w^>}Χil=/i?ßaE-_ƗUf{{=v_?fG:_|3;ln 96?qO Ґa61Œ<֨hDFkUQǨud~ 9d]s!?<}===`(Xq?w<{<{<x>=z>3<=_YMbggg'W,=g=g q6xضxh;V|`WkvCNvX|i7v[`wNvwi}kN{}m_o{-"fQco/{=Ci϶gs{p$Ke`/+2~~MF+핲??j{ٟz{ie-kod]G{gVT&[z{{뼃eg T/x!{ ' E =zV :uR.Y_O9&;+Rq?-.'/"A!sV:./EvN^j?^Mu +U}. jk-Jq$d8/J^^ky9tN Tּ9pus,xuu'@^قt\^Υu)pTGWH5 0*PssŽBڎlgm~/V} -tn'iܭ[p;FRړn+,x؁oJ?ǽZyEu gws;s)H(oZutI݊y= ܋ӕVr>F͛_m[ٌ]z}囍/R249w}Oe(taP6pY_K([hL;(+s~)|XVb"hTzqܪ?PƼ_yʒW)o.֍gS" =8_ܳ})ݣ¢ GSՊ$o.#W\ju;+9zR zHAj秂mϭ+ay{)RܼZCL:e;NfI'm bVFR8~#պǜv%-3:J9?;?'чKt߯Bפb7Pl w<ς."Hg r7xVǽEֶ=4r#CWhfኑNgi/&3P} )wӵpv/-o\:sW0uy"=8fo Vjj,#W? Șq۸ 4.IeZ ~d.ZR 3CQ\)^,v̿b3wy:4*Jutҝ~y(fڊ+J{waCMa\WjUm_}N)+;8zx~$pש#zŢЛCWO4Օƻ|puzs|~<^Pc#ǀ[*O2HSr׭#?.h}uN j$P֣nwV6+wImҙ<\C?o赪zt%wy(L ^GOu;erszhZZ{<(| mq>Ϡ^i #WdmTju {'N<9y*dpQ+8R+8濩PHe|mJ/M"XM[9Kη ZSѢok6CXr.Iekd)l^I*)–ZY[l/=|4*Mίt=7(oV* OOKn]Fz_+<ڜeY˳\OM* -p}t{q)sXB^Qr︹xYGι0OR`OzJXky,cq.McbCLYIV˪-F ylŸ-d D}̟Sw|#`9*pMߑ?r@W+|稯1|*?O)0?-z~F}1Ϫ/rCh-Jب(OFبmUX+h 6/Vk[}lW[XSI$c5Øn#3wL1˞o?iG #^JW+}oij܍P>UjJȡf೚g j$Ę,B&*2$y)»`(E0:C?(ˢUb2a1TŲXXUgYejͪ*ªԎUcըΪS-vM7%AX25f^ՆWzСa@l(nF4p+ :dC: :MDɨ>6NeSq46 .fh%l ų%ǖTzue{>~b?G;ʎ5,Rwv8;_ٯOq)v:43 ua?jvEOc0#7AMHK.4fJR3]f1s ij4q$Lfr 5 CѦm3Œ+f%c89952[) fWjon0sU2GcnEzy<4ZwwSSs999 5'Q4nwP!z S$Kȣ*j/(B\+#=@ @Ɂb ҃ S3R3Lv+0j..FTO&nCz(1Zb4$c -]IWbNj./ b[LD{ŽVkǸOgs9Wb3"퐿C줖?Cl=u@ڋ\q 2~A q5'Qw;jΠF g`ڠ@!TOzTajQ 2 g+ʊP*b_MVG +kȚ(SKւڲ֕u/!t} %?PK24M.o-[d鶲v1H}P시r0\/oD9(d@6Qr-279r&ϒCl(5s|V.^2Cf D>M^/(Terr W@%&_u:Z)W7(|5-qRدkȔkZ QZ+DE倨K,(\E WQ5K,/0Xǂ{T]f9 !/̑Qŵ1䟐'PI;ʟQeI*0 Z{ ea#fX!$-J0+jXV8Yȴ" 06ʊVEqmZ8\[ݪ+(Y˪ xHg5DFV# D[R9TbuEnVwzAfoUA FknRujgb݂zӬaͺ gGZ#?}F[cPKɷ[CNN\5zJBR2PКa͠F bl{ճd\SNYTjp*5Q8N "g *U\=*5ZmEuNP5GNoGjDM 5WekQWR}|[\u{#0O htlF4Z85R#Զ5Z#vFqV5E#TC#H$V4;ԈF4ֈFqqVXgL֬fƚ `Q#oXs.ChgF 5l"'iB4lqgkz!EH"K5<I`#!@H7NMN]@&G h B}Z ܀>CO#(,z@P %mDzBflhm ~Z#$ډ@@{pvBC`ߟp?S6~t8qt OH?>gZџ-s+>o8pskf0P sгi#5bB%iQrF5J(F5JQrgc5J|q VdH9Fp, 8 kHbm#X{֞BYYG gX';nHwghþ/  9 ȹ݈lxal8lpyP%tl+jH{ٽhI@핁C;Lv{6MG,Q]~_z?ׯx}5^x5^z/}x4^i[>x=4^z{P t)GHG(y4ҕx%Ϋ*$yu^+'DMx[H⃨/߂}O#اtb?XP /K@r7ؿ(FZVA OYo曱Ʒa-v|u< !RE<(y@Y~R ˰ fanSm#҈Fu:rxoG~#rd3Qu~~jcL7f`?7+ΓnS >3ľGH޷WQ?;ge'CBSSD"H)MR1EMɹ܂)ER~4bJ"i #R@#R^>3  ZGw?;3;}> @}I8<)v]).i_^{nm~-Gz_㜒>ƻg!u`ȧҧ33h2i/ iCC!݉wSH Kq$F)KҩG@}>1t6} &n> /ERL1i 5ő ]aV[EWF8zt2'UC1dl 9nqǓ}ݝ06&CJ_t/݋!tO4q|TGA0>=dǑ|4-{0>18|$ǐ1丠G8? ʅTqG0ct?3_A0 =X Ilmq8ƚp..|Q_?q_ί{gdwVU:(t|󉯿Qǐοqlι}9/3PW}Cv>k7 or ^|`|ڌ7 v^_۫k5Q71K8K!<:|O4!(EjKmY6L.6~˕u,,;u9^Z)J6[׼m쯎9_ W?|&JfG|clE~7>SސGZ]e`U9wqdv='o@79OxO`䒦ww /նKU3.|Mj/Z47a\ j-Wec`d@_*2Ð\IOIկ5|] nc݁e仜Ite|W{z{vqyL:yWU߹^}ڍJS9fW7m|Ί4_81sy.vIy_SdDu#ov뼕GJ.]=練:7\j\7fɹ.7W>wc}NTΕ3ըnftUqۻ:Q_|+۳>'|tB.VH+ow{gw;Iz%fo|u'Iu2ƚ޹s\2os'${>\[Lܾٞ풟5tf[bF[+s~}a3y'&{Nrn´|?'^ {. zͫW7}|^9`]5ȸ{75fcאb2!7\nX2 rs'1 PA_"I 'dh7DF 1dI:I^>rЛdyG#Џq*,̱_̺XK l/UXRH]$nBnn09 +>PvJC'T9aۛV9jؤSS3M0͆z|rg4GMsv~(d;t EUr +)B ۡS)Բ:gB=ۡS&K Yz%7v9VImloNۛS)Q:@;ۏS)|>eq bq $ۏ~$}'H6 aa $yInCI=%pV"!1("WWՄAd(JKm(HH`%x Kd<ޝ2ezD.cLLa$.٣P89R H \\)(KQe\IPƘɯ1N)C2Nc5zq@q' %kK8זHγ "xM[M/SU˹AM΁a1ҝRP}0T*=ƙCOa 7=?J֧@S^pQjOv$qvH;9Fќc4\--R Kcқg|d6Iw R:$»JbKG1C0B:.'I$?>B?c) NK1{1_ҿ` m݆!/Z> T۩a0n x@<04)G>> QKi Kc:sD9O g4L5N`z'ni4 B{̻Mpf^z/̤x>zL(Δfl;@a0Ǿ;5Ρ?ҟbӅp+%b}sΣy>~Ƶ.K0{d`=qH00H?Cy:b3H;Gh"$sHO9}翏T8} 翏dwpO~翏C9=߇r{KWal 3"L"?ljar -b9Zh1E G82 3YdA G,Ǐ?R''W|2K d9d+:+8W!J1)ǕWD+  Kzr, #nD߃hă~(pǕWs\ƕudsѥ7Yғ<ѥ]1b1Ę߃4"o??cC^u<(:Qu&4f3Q'NGh:QurmU7i"H;iG"Û(7Q|&A$IQ'Qc,4bOǞp={"8Dq칝bOsoΤϰ'Ḏ'cO(Ǟ>{ucOo]o>!"{{eB?(`0#y u0)i4HTc*8J9>9y&cb=l| ːi=a<))t/p^*TiiM]8Jř~m֘@yo4 b96cX 2 K00ǰaAWٯ ɬj$ۅg R[%Cgadx~Ɩő7GxΖ-x$&vIR+OzmR|2 Fq.LzO:~Ʒqn0ǹ 9p 9 0n/y=yDEt1#AED[g\(v1ǹ!/!a-ڏD~nphMh1/}h:C`8cFqt' ޅ $: ]}'^CtS8_(ǿAA?J]}L:GlПH9.Nq/~2؇"E\dȰpi!->P>6s6n/ٸQٸ!wAO=q7 m B?W"qly2Z([&HHu\u( Հ>/Gr6ÕYk-NV* cY ރc>/|V_o'Ggx0Lcn}| |K|}|]1}jY۪fk۵]Z_)iq֡]PosKs IޝɁ@>`ڄj3jCkkgֆbG-nՁMcq󾭵)j?}Jyo uJ9*/}P@_w3fb#hH>JOWTP>j <zvӇ]3Pۃu-C7/w7kkXOgg4<-ҮlQ(˙Dx=K=P [o1ΠDc<( õRs33GiS#OU`Jm= 0#070?(ۼԚgkkvv9@6!NЂ^ nH XmSmYEiHɋ &؛nLS&*KIZ"R.*m**,UUl=rzL.BpL3zP="ǩԳy 4XPSZ6UmPdŮ+g(Qr@|mVj6u<[mT)JC9TC)j)JX-yoD˕(O8B^"ORX_Hk>\V9dz4ٗsx!M6tpdr@ Apr_C>!72| 8iH7L ~Ct2< _ Ⴁް.Ye 6Lg3Ƅl C0!ppVV cs`c0ˆn|pqIaW_ ӌˌbcir!XjӍFU1c 7Ǎ ?~)!2Bgτ")Z9D:O4K!B n"GтG1B8xa Z;Ägtsh<*Υsi.Z@F>o[7څE5!LZ}>'\oN<'L7=B_ "m$zA}~D FdDM Lee̠n6d=0a#AiA% G 8NH) zUe_~r&G> TBl)Jz2@q(E9f5YTgLӈiJ EeLU')&5Tu3:DIQwYc_9/_Ĝ1i^ݨnNU5;D-S>Mi StQsPu'Iy&{xfMZv@k6dmvQڪS T);rOaI䦚arLޡ(J2CާUTl6jPR^d5[.VQj#C>Xeߓ4,2b{d%(x% [&Cނ=V W4˕he2u9VНhIxZGRTYPר[ ZjvhtlZT+_Fm O]]IO'ɓkF-OR+O=9)SP/o|孍j} I韃?]Zdxjx61cx^36f? _đw/W1ś=G2 ##8mq&\HQ:(a`ڥvȾ Abc! 5~25>.ߪ|y ZsV;*Z ѢtSc=z'W \-jBg ڴ*3ڌ;;Dy3),oG;EC^erj9؍J|_T)!jkFrmx,S_[m~uR&_PТʓXOLSݭvuNUOUPW*sh_n:5cm8v|jNlEA#-q$ JZKX_Z'gjX7]J ҕLTl/ۄ8x,kXZteb_l|Ϫ4xmQ¸us=J2 `o _rquar-圲fW#q OUX')yY8HÖRs2:TPV \5[[E=mʌcVa}ەYsVE{nR]vuZ*m|UE!Y]6,22]6$o"9-3*2ڲĹٕfwpֻ-Ų8-]S,UnνcD9]%/%]]S,S”HL4?c%nf}r?ZR ˊjYִrSYS\B4wxY+r;Zyf)3Jy̒*9te.J,xJcs;v˅pwZL.KFs҆gkwM9=FK x, ι3+;[]twvVB\c]i93-~{=MstE\TlY\hhkYuv6RVZ/vT48w7J{{CvyLGsX2[Њ>IJVŚE>#>r>-WkDltTMwlǷ|F(s{=z"Ӕ'jDRLG(Ohg3sGY;w +}zwBetM~űHvmaW[JƧ e rَje;T"+\B&y5Ϊ.`2^PVbx"5KN.)5/瞄ԚMeM3dFe@Ix`G1&a(8ەS)yt5`cfm O^&Je juǖQtbrtnl5\\+ɕQ[>l첸Σ/TLe&6N6Wj<:@׆+"&NҚ|qu)p}5vgEGrש]s]W.rubL6gp\fWXy+rܕw6ZGk:*ިf7뉘>.v1l=܊{J9h?Cf(4NxIx Dee AxMx `IxKx pX8 AXzC!!;; ##[׮k>WwLw tuǡ ϊ-ss!F *V-DϋC{-A__M|W|b`>ĉ0P<)A)ċ0XDOOa$b' IP}( d}> Їa>B#HHGa>FX},`~~ a>ADO';`~~ܩ iQQw''@>MwF;L6:2 (eר54z^bpX SiF ̯_\7'7o<[oC^.x4Wa.X̿ ]ɿ ?I("/?>TtC.kucQfYk{qTcm//-ͩ /n-Xo+l*^mX7[lKy-Ӷк0ھ-I .ؚ+SVdL/XUWcLi5Yל9Wsf?d[o[[O+Lmm 8:֙YTbyaQ|bZa^ꬳ';w$/ju)qw*Ivff'8Km gscUkauY㲉VWсjKEp `۫ױgP^e-\^%3-ǪwZ]bul-+8,GI%Egj:ˡ:UN:6|e ۪O9vTLs^j_tOP8Ƕje7KjmG 8VY3J+,;Yc/Wo,;i_S=xwytqCq}}vI]ʔs5#+ 7:VYc/_4io9 u;-g3nV+Sl͎SN(U5ۚq l.Sa+ƕlwv)*=55Ƕ+׵buI+2\cYt_)KkZU<ۖn˳{<% hRq)VVҹukAZ$Cc MM+Z[`_wQqu*ADDEdaň\D\.Ht闂4UUF0YF&fYYdE,0DdY.6y{f{ΞgSpy~/O}~ziȩlVLp^Xʥbᖻ.xjjA Ci#2J Ԯ_R< ruSHW{|Iwwh,= =t:O"qԔwg.ɢ&ݩy ACʳ>ܧ6s"^;F ]#|KueFv{@Dr3ܻҵO5Ҳ\ %Rݭޙ[rI݆оYoݻnx98];)wk#BQ( :Mf{R\=Wqfpx/е'-+e^.8 }9=,+A<,GFmh 3EF#X06 >#=@ׄχ@,ɹpI2\n ɗT;v9N_™Ju{ٝUR), o+^|d)W7 ߰_XϺ7Krb_n׼wлٻW}ؗȭָݚçS}}J˽ U|$!^04u!s9 ^#eHjw7ꙕU`:n enG4ƠBwFw6|;/P;=ݪi[S]} qIOU'7RO-8EJR:sb."_|?Yy@8&~VI4Y7?&^Q?uSg u%:W!u⥐:ޤ2@W__~=nho:+n +n +n + +KqgPp*8}}Kѿ-.zU=X>I@zſϭſ R IPW_G/5kuu|\}C}M݆O@ſzOgŧQ=Og×W cĶ7$_=x>k@c>xK@oc1cCbފs cń?1ݘ1ߏyhc~Ldllي9QHv(s.Bu(29.pC%@% 3TJ:oUp$ƹssD͹[ DsKt$wD;%ΝDH|¡Ejbh.84q[A 6ၬMp 6!h>'DMP7;HD4\!zAK5U}Mhj/CW ljB'4w4Nk&a52Dӄo6!5>bF5Ĭ+?'5O/Kb]]@Hgk+y[FBH@EQ{ʢ>x2ID}W_lT-w[IXr0VaX Fty籨6,}5$:F5/cQ\%d}U.-7E]?uЯRaC_PIOe+ר9:W>V.*i=gؚL)5ENܧ9kƛ+>8Iw4WGoշ;kjG!ο?\ du@Y@h X}@ZO͠5nK3.#|5s'A .YI\%h%vR|p?;]EyCuw3p_ l'eE E_|NpN{5Q_}]Yπy= }WDI \#8#N ^[ep.A=pw ,Bp5 ~(x!(h`C {QjomT̆%S~հkF~jqY'4욡:bJ9%gUOGՁ@@V 4|X ?T /?l`S(9?r 2p1]9 /L/39y㥐.*jAF鸧8ͼf^eryw_t;Bg\A LV{⩵</|{w% >O}w#Ƅo=|_'}695gng^΃VU=GϺ'Jm@ȁP06/ Y02AF@gI%9h r Z*CSi0_, `_D:oy,3ks|׸KN4Okd3:K(Y ۨ8%DM*"mR: 2̃d Uh#(' O)ʶǧQ+9JRYF'מ[ptrt=R"+$UFQy]6#yu"k6!F=8Aۃ8g7b8\ Oaњh G FD7X+W2R2c  {/mU̷Wdamzj=眹VV+jd#=1f]1Zp^:a]TbuY)v[tgDI,flǶıM!ol˔!XK c.\mY}1BfǡH7n^rl;sgqz7+ MCXgsegπ`1_’!fӳ1V)aAԸSK`@ެ SdaC=C [b#Z%7xfh2.y!q>䝵 5A8=u̩V~)S`Izr1˅\¸w՛-[^z c]*T>]Zs+Ⱦg}2e-ͤlٝ,p z0%#l4*w,X)9%m2J sϐf(jYw%MS2ӨGZS JOeyd%EL@,+Ɋv`SB c f.r]՞%ɱM ۖ$K,.{;} þϺC/NSkȷ5+2:޲#qwlj:^xge-9i:Dɤ$K}RH6R\2& bq ٱ'g(R`M[`-ŪՂ}HvJAւ59lii͙+ .aZCs`!kV@Ҍh+s`,~d1<MCR%i-67Jr<Κ eם rTfKcc+g{IR֋($9޹L륖2Y$LG!yNnQu&;riȾk߽s ,)VNocărC%aeLt. ad<5~t6ص5LQʚ 2w"X*R2"!X@fűwm8]<邝&YK~D c2mQoRs\!BIGT}X_a"⴬q:r\콢gUMg[[֍K>s 1¸#GʑA't'kLeN۩j%S.;cvd,fWeDUcX#Q$%Tشǁ>eXsuSnϼG3R-:F>]1kIjuxr/gu1Z(>fsFRN8|0O199E:XftIt ɘI, ?\X&>*oްv@Jk?GJ7? : u\gH>T_ RKXYHkԟT[װԯ@e@exT։+". ^XS%"^::Q ut VSa5E\JXM7`5E4j*Dr!1?'|""qiH 'mO!-?#-|i߁381R)ϑ3poJ>bTzTQ`M~XSEÚ* ~;Q >j*VSQTXME}TSgQ)ZՎ)PVW|q_ CRA`e}5V5aF#$,9Nr w;cݗ֠;l [!w?G#<$؇&9驴,=6̋Y m LrH+I{Y(&l!ѡ,! ,9͋.mS3~B=w+0f 6αXnW%v)DƤ;؊H0ڶNŔ8"锝v}Fck:Zf*wN>Zd.1UW|< >/ A,?B"Fh_`m:B P/ y;f*pBH/b~_d>?qϛTktL ݵg` ipWt%0af9TruϲvHW btѳbs۳~)i?l)x6A<vterDx"pO +{b8 7Yb(pYTOI$[[ZwЭkXO>q;xMbXic*݌5ZvĽ᱀XZU=okwOci<ɞv=▮G5NͲ;:Ætݻ Z֜I?/\dO'ڡH)`f)fYt2#OS_g-.uRp"$DF(#kD鈂3LDC(㈂s JDU" FD(zD7 nDEw$>ȷ/E|ևf|R-YBO̚T}R-6,{;^Kt/` 5ZtG;tG #p `g*N%a>LBLaĤ)I?41"&MCLQĤhǧlb43I4Ukx)-H"߆4;H4N4'O!?4T;iqد ob#~ܙ}O QA*Ḱ%A@$ QC3lE3>f6A$%DI|r?+W(#LKEZ ]E'^IK9:{*.˫f hڡN[ 2WkRoŦsHXU2XWx|U~mѮe=rMMoεVM6%/VN/iMKΫ+ʹC.sѰdң-ր1X^UҦ[֘1=fvfb66U6|M׸R0zZ7Z]|-{o`Z%xN-XRU]?g}ҘܒѸXߘI ƾ!㈱кjbMэ O' ]}0ަnL6<yoyF=i\KyڲѸ1km-ϲSqx>h۵#MD R mtqU!Y m'"zٖvʾ~ji<*6@Ϸ..k )kc V߁h-7hƺ*hͱɢq1&FW7:Bg qёrIl7F[XR-ˠge~Ƥ4w$ L' ]+6j25 ["h2dm#tИG?Ax }N|c<}$4ƽWT:z eé 3FQ+(G@Uu''mjFMѬ-jheˍI% -k5[1l-7YbmGRr*^bS74 ʪ3>K`N Ɩrkڒ'dfkO +d-mA60{θCfS}՗_YEs 駂di|!(2t0V@6& 6QxШ*4޿Oke$! [Cg ut:2h .I!Fv q>hUxBu 9/]d:޸( Ba}L}Ѧ1fץH䕪~=$nQLByts˿zؘ cL:*lbg;VHZ#ojcdB!B@,id<2 ѿc/E1a0ŰEE,KXxa0,׎2/NUjuۧs9stvL;FZ1j7+LU e}PpCD -:gu0~U9ߠl z-y^{M+--kw<@zm]2tVyoMx}ϕmz~dE~+`[*C[S]W!xp|~]㶸v5aVȭQk枱f-XroA'8؜-lKl=lݿg &yAQ0b0p4qNҶA@Z- Ai_} Fx;q#=`Qq7"a݆C@_cpnaaPwf5_wp\I.,?jaaP -63_aްs?Pϩׅj{+/-kLƾ%eB?ϻ\}+Pc(WR>;*L ڀ.t322T&_;^nފj8 r\`!hzX 6"p"y0߮̿]"e%<} uV"{L/+xu5=O0n'gˍk'Ny2"'ڥ[A]\oڪj+׋(5eC/il#?ye xJ,eHShb5?KM@,׃v vږ'eC7ck˟?W.-4L7jɶSɾmx鯩'ȶ-'M҆ڡg qCzځڡڭڍWr▲2yN}^k45i-) ˄4K7Kn)Mn! g@"T(\ F/9ehL)&Xxhi188 e $0ڷvv )`\ IEB;ߣ7>??/HߧLgrΩоsEov4t9'蟞:WvyΉ>Ⱦ ^dݪ•>> Og"{> #^ScW/6qr0J삜B<'X'^jXHzN B/j7V= :)F֨R]vc ` N1QWjbŶrTP7`: 䊉Bⴄ(+. L'q8JHk#pnES^*N' qe#A՘RL]>kł!mT$&ebX#6g@TQdE3uKѪ8P#BP0TUlWȯu Z ] C@5Tɾ*eK룳S޴YX_QIۿRE)Eku.T)ubmnoK jqmo/S ˆH cdM: .oL uC| \bBNQLJEkFmB.+x@T 0mل.9XbdF0k@z[e7r6X*@$\rD8΢5m譡يB&AQ݀v!u#)% # '[!NJI\UlZ+zޠ8%e L]~l<WwHԼnDxݜnܟ_AږA&3_PCYtG#2D*#0I9ð"Qa? r>A~/o CaĆC? _q؏8##+!O#_PG(uu:$Rǩשu:$QSID//u|Hݦn#)uRB FG?"l?Q IQzp'G#ipyE/ӾdҾB "}UDBku-`dZ2E!"}Dɦ-и4.i|DEˠe j"ML#4)M0hhrDSH>MIS"ijhyHAr2REF"QkQkQQȕ }g}g}gٳav~poYݶgcj'霏=Q|`?ݼg{rg zw`~)zk=@uy]_!ͮ޳V9ECE}Pt?L;Tzl8F!FfP{zhzY٧EbOP)rZ@i~,YtVͺK=o7-ȇcE[=E}Od{FE샢3O犇P4=QF) B{W_t_<,yLx^ǻSE|Ѿ8ωg{}*|!eymՔד1yz69"x'>P@k4Je~u bʈ.("mj:jju|s",R@ =eݝ'n}:׼OU{g5BFD/*}Jq"WYzEȞHV9'V;D0 w^EE^[p/?HHE5/]#%H`8v C ˵;jljۚ2)P9'PH@mN۹.h'|T}d"l/S(JyaCٜRRK87dD HOdFp^BDEޡl>s Q 9'%o-IȪlisngsչ==83Ai̹J7.8AᤏCBL2ɞW \|F5\ ]ʼn^vHTYnaiՕ| uSn#xsr廊eU*zD}L)(샜qtp2׽$KT+s%:^%jNm)d照1 lN;J}'U.sz]Crt~^?gn;p9-tK]ծ37o]]#u7lRn?|F§$Ǚ\ C#nd{5rQy-n\04!u@dFL-ݒӴe@S<;ȣk=g.'>EʕdkeFW6e^0҆Ԉ3 \B}ٞ"त JVV!3xT8s-d X'SA@B?Aoc@K%|9+q./8C9 7&@)3ng 0>7\W$ }vQ4(Rr7P}_K a,.ܥ>sEX ]R縃.y[87K$uQz &^"{ h46}"sJ&`YBZx xLhdAgZ#^/s\ws.g@#>]G[k1}פkuuMeo-ė w8XapSrY C&w~HRȥO%5>rST6mq i *ddÒQ:=`l=,8C) gK} f0mrxSMky)L.qDqnl#Ya=̞P6;H7 }U(K%& 5Kn(Rn 0.hjD{aAӜɳ] N;I{\J+l?9r>N!%+3ZQH*g l]G+]v } I\;$#$Lc~dShGP~9IeS^@90f=TYC@s b@zZ~n|*nRY '2ip$1y!C~1Dge*Ccw:3uҌZTeL ir,d7?^1H> 6 {ʹtk|,Yβf&!sRbbIq]H<-guuu9u3ݑb,el}aMfu$g=s2d<5fێܳb9So: Qm8dcq|WY;`TLGNJq`CG Vr_m1>V$d~U1-K-αIJ*~`UYv-LĘ|r)Y6V'~!~E<*=F"2Se&k,3dwo'`o&[nMc'~4sDR%-p[$5>1Xށrs\c.'9V cݼ(\Jl#cZTc9xwJ ֐!dVbc"fN%󪸻댵z,WNsbEr4ڙ4N6&[wKÓz&Qvl  Q + 3R%G}!ѩvfu1C>aa=\~r|߱(YO'3.Qw OqY쐸E4o (IM#e%G}g4wˆ6c!yK+yR04\+v<.~`zf`^[%^2av(#Ķe#מcLٟ|W2#aśQO:Q%`MRG'g8BI݌` k7!2I~qrKҎBs1p% a$rX0:M,(SȮvTaAG9eb")=;E#r-hSEksEVqobO- K텘/Y[K$\aE,tvBntɼNost$oYSen+>`ˀa"{!4pL1SOvYnn}IphܖCκdx$Yը.ͬ.wCE!6"Қ S\֬ Xʚұ&೘)'u:*Tnp8N2S/&82qcϑmq8村Y,)ұm<вMFa 8 Y˕I%`ifUcm:sG۞YR'-PN&%v-DIgbmqnr($=Y ko7QDYVt6y2`,1ܧIs5L m%칌-VlW2z]²d۪mwm,VK"¶3z+۱TX BnimC4Ű- 25͜u%rWI[M`m!2Y>ۈ9h癝n0kx"0𬧶HdݳH}]>|O};/q~Rvy!VʒAN)M(/il*8%Q+E-@ne_D(72u9Xj<P[r ƺ < t9&(_~op7~Ehk|{Le诟Kcƿu]-7W||~> @,u T"c+ 5 (/5@n<_@s0 ^#L X @M@Xxc@Q[Ȁ Bhp'}B&OC OBO}BOClh 9>A T>A .B\h4>Oȇ }'@BhPK߄QJ~sN}`՛sOޝ岿 |5g r_:?w>m-M/ %y;jG~݈&aKpe^D8h~SY$Wdx2}d+X# 4.~#S _,-;ʿ"2JCBVc+`lL[Y c+K`le),1[9 V0V΁0 VVal\[9Vʗ`l|[2 `lB[V.?%05[Yc+c+al2[c+ale성q[^3kƿ(C[௖Џ篑 wt5~+y_*YoϮ 7L)Ô1 e=ޜr!x~2E!Co`, M>`+z@_^O?>'o =| G?󎶢}s$ ( 9Hd$EEEFA;0!&DTd0a1qPЁ{ڿ}fyo;쮮]s~9Aܫ4#aw{yd';$ƶo7-y9jCd?{w8X34 D#'Jr{ rPvɯE+"p\djD;#{FryŎn}dk9yw[9Dv#Ǻ<<'6IԽ9͕O']Y||~x3Փ;hbk\_'rMAUU#Wĸ<S"Wģdo/ +7+ JD9-bkk1-7|][ VXUn+|.^nAj37p^C*e0<:|s`OX/p܊27vfx?G Afp,Pjl{H&L"ʜ@нaauXVm)5rx/;!Q8 p!ʰ^ j7^ {p*< Ηka!l`VE6`]=\Sr+86h,<vKlMZERͦm@FIߣ9sl*p4/932"V{jV{& H{W eAA sAFܩՃ?tBÓiU3,se/BS EK׫O-?2 7}{r>sxhDm.4r4-wp-ѳ{jl4jhܛwRf2s# [ &<+=5N1|%YMAW T Gp6%A {yjQ>>~LJܷ#/8Π=W@{{|<|[3aWx -\ E\{Xې76y> 9G>f-MA :fg^G? 3:9,CG 2r 놠g}e%Ѵd3aîvSd`^jI+oyi`F!ޠtvS(ߎaY\gޏ+ї}އ'C?$~x8wǣ })?9 U9{E6m&q]N+`{3)ވ&-^[hGݑGƒHt/CBF?NϨl?<=Zˈ(s>H-J'DFɲ:cL] Q׃MG" 5o0jRcx[m)U;`EOKD\Z~TJ^_#8%qxon慱 З*xBs aqAءW: 8ngDʀPNOH-f8^W/h:9 VBO%x[0B)tDV/ً //3' $JbX#BzFA7"=^S3{ň,=p ȴ3ƽ^F7q2#!=4>} Y4⦠~,?o?P'÷WlD9=z/Y)v>"PfWOV"qF xўx)5<^?2#OO:,kO7 wOѨ'9⩠m=љ[4 s+G|"Gt;Om B@@,4иY9rg**wƿ36;aY8j؄\p=$GS+("=OF|k6$Xrw 0Pj< 7;Dۄ?Þpk"χٷroar숦J<<V]p `'^τsakx:3*8 ߤm(_46J4ka9Hkȭ7h 7jCV,D~Y-/->g{¦XU?"k?0f}e2"r4D3Z܃ܥifjvq;dK331xL¼7ÕhDpRk Iz|i8P+ڑ7Kb ^m cΓ˾;\9D[RGl}VŒfJžxr^ xA|f0 >Lx|#|lTnC4fȯ+!1K0H|fCFSKږAy-pg 8mSN 5'bw1O;f)jP{GPρ{qӻ@ ;i3Wy&-PCMwɐ;n!\ Wk?gp''E6l%oH'-)Dwl"ޛ"VWK 5ԗ!۔E\/]McmlN3ˍL$;`j,⣁B m;}{ѶYT1 (ZP$ Am@D/ѼѨ8QW !3U1xkE.Y?M CEnR["dAg{$ۙ s 羝s%lPooZzuUOq v7|=N#7!vN!c>AlבQ\7W1[ pmg :KsNc}zQCة78&%\ >mAGgXN z"'PsB1HJ=)-) %Kp-AP+kꝔ'2 љ.*eFJӔY"ըJ>z,9p -)ZBV*Uu<~xD w wTcXj>>VÃǀ'h,DGG"_WeyDchswYy%؜6S33xJFb32^)~7T%2 lM6^4wMCg l|g$ļ1+Z xyx}yɊ"jd|wݔl πX+мA_ ϐH%ƹK8.=O> iަz7@<89(czdxM Gl(>ycLHtN6|ڠ>Ʊ?E>5}-*Prwl >82H,US2! s#2 #4H!Z܆2[S??`KRHԖ#$ڷoѸ/71 @b[?Ī2^-{ /Abp > @bZhj{zxr+e=b7׎\x)ن)=:gk.57pwݐwx~3TגɎVgGk4Y^) y2D¥`$kdZ¹eАpx&x}wMYCLA8K@}-whXu5WQr1v7oq,G}Kɟ)BPPROBރL/RaJLK)ҌN#ZOY7;N|u|46L'h@~_Oo@p42'3C_v$Km9HOF/qђp/LF(o|)Qޏ-y/PQԣhVOKXP 2suGPUW\A/ѕ'(NlΡz :O z砿y G'~7.+A?o('Fkl{@mLM>#5D3~*@o q!<'00<810s)Y@^%ݣ)Kݝ2SzBv{ݕf愧"ρmn,Z3'O⎐ѸXɽ#9S:ۍl hsG#]kX ^GW7{L=ͨgt[a&d-5%,ue|ɲÓН{ 6X7߻Z1 .߂KC)Yv[6׺K#'ђd[bYo<|Ko 3njDY4&K"ۃr~1͑3yw!kCq𣯾^eόwd4#m$JjD 8xSpϣ)L-yi:}(df7 g]cN`{9m|C}BW k;Qqȇ>S`;q&eWv'"551&r^=d{YY+ȌsX]ᕹC?FdX{ ?Hk{2#`{Jmfɬ8.c=Vj(w9򕌩^g֘#d8k!\r;Ob{Ċk? Vٷ7\C&K;_Zn&K u}"qa}XUZ7k]B/ YȹLG%HIΨ-MJԹ6~fc?ʏ2{4CE'N 3 4^qg1s] ^V7AJNt~VUC-}7eҶmSjv=tvR2aᱼȣJ5Jɰ[9r0TF.{_KK!\I8kdeK?dkY5q!0F d4Eq'!F}w#z %gEB ۈ[aG#t)0ƭUiXh&3u+#d:w[xox&^ܓF \e&xtpzzΥȷ } s|?N(_7?y6'rHy_5^kSjn/1Hf\!ٗ&9nWa2SzKc3r>MKPyGlAƺ"/#S+c4*ֺ0)QUa9kG 8gOftlXfHn3&glF=a[x:}~}`ߤU9ײ6j QS#*x~*/Rq(jٗĹ_Cw[{>$doFv2cx_4<̋\ Vf0HTW=N֥O|Tץj;B,aI1S'txgRrv)2?gxa Ll;x^&NL[>%_!Nx:?!soh V 7&Q3> AD%3Q hl!2ߣ|U<wR}N]r#|uhþPB'О@tl7ё܈>dOU65Q)cL9>ybIPOiy{I8Vf(9Oi?'3 *-x~M3ؘ1XOӑ5#? ~u-Dg!!vNP}lMTp ϳBJr΅g ORVe~H,gx$RBAff"Ul dWfYxM k,`8:ɴ{Z쐑zmk+p%d*l} G~@3BfE= 7cYȌ|Kj&>,tD `' ʐi?T(s5Y6ĢB1,OsV?XdOڟh#{5`h\GW24VƗljc|ɃCr#%wxj䈒Ր,gaa ˹lHID |V}_Yp_HuMSۋX2W͋r}ޖ$Gz8;]줌r6^nF}'=R&%;sz^:5Ԙ^JZ+M>bK)kRF'\WˆpмLxړX~ʕR&4Fo!F;TK[Y!%0#?}GuL6& cW 8>%1p:Izz&x# -l u/c D yB83~\G)ќЇ}wp֯W}9Pϳc.xPۦe:#S{T2l Éhh GkSuB*U}QKX!ɾ w{eUײrP|^C|dMگD-G7ͧy:4zQ [6,!{~ d+s UC:Ƙ;XOST4ؒ { =ȵ|5[ \ φ|KJlEOr.%|YFy psҰRybՙ)h&l Xx6R}iɳD߆x|r5'7fyM$7NJ%}ζVV- l*Ƚ aUF* dSou} ߳rqTWmdx4Ǣ@smt=] M9}ZWKOh~%s2R~wP^Mqe]uUXozή.l99^=dm>8.oZ]}ԏkg(em=AG~-DxmGsmf5MJu}?9}GIg^:K!lOaG؋w Ybɴ;] e Y?7aodEWd"Icwy"c5يfan6.w7z@٬¾?ѐa ysEѠߢސ,?iL1F]d.0l$Fۧ]U=lcJonHN3MsCO3̌1tsi&c*jQ:41-Yo6{| 3۰%M9T7556l3\`mFqfi.3ګWӡOs!tjSxL%s)oꛖ1>hfd'sGʦFifZv9aKyS:nbjc3Lxc36}(sj.1W[7'Z8Ȝi:FV;5cf+Š:3b؄1<v 8rİ$8Άs|hĈSRn}0&O `EXւưiFllh¸1B>\&͜my o'L1!XdZ`, *59KNa vg^) 'p6 E$Ka> M<p7|cSw'xH:Xb udp$j.>st\ p :#@ >w=->]?*}N25W5G[ū43U^;ױtRUtvvCĹc.v?[sog?. );o汿VͬX{WeS?*EDzK~[ƻ|<-ɦ`ّvgٻCyps5\Ss# 7-swnw-~g~_KK8*T uBpvV<6PE>(>GKӌestВm?g~}|ђ+ѮrZxEj;fy;pk+_sE>.WUWP,HWy; ſgZ|TxZ 7iE>(~?>ז?_7(Ʊ'swW_#an4pm)ŸE>(yCQnW6yE>)S n~EGㅷ+bE~*yQE>(dGQ{cO1cWB{^޲aV8-+p%e1ͤי16ߜQ[֤+<4,jRQ"T3-vq|sȞho&Q*mwr?_ܴ^k{ӽ/-5q83rUyr6WbG]lc=J{oxo ^3Ӣm6kj4&j^ Q(ee2Ja2XFY,,Q˨eeeeT ¦h+bGD*Q }}>jbSG.q*Q}4>bG) h}}>N>Zb33YG-h}t`\;2ΌkƵ+*]xW͋WhUfYl4kz~7tz|i`sen}&_E[ɯƯίWWVhwhwhhk\%wYZNֵ5\{޼:Nu5]wݼu=n`薸g^Tl^t/ڌ{۽mܧޗIQmƕY}r M@s)67" """"" ?"( 2 21;3lUYQ_FFՇ>}BF5BikЦAʺ*tkХAʺ=*kЇ$aX\ea 2L-L2Q9`[ lV l۫l;l;}d'ar ,#!UelT6xmN P]*c,W`O R`o Q`_mh\pfh5;95'2*2U&78\erLnpGLnpGLnpUX Sx ާ2 *2I*2)*2 NӚiWtv 5ҬƔPRN9jNMjMXeKEʹh3TB[ҖVZJKQ)D;v :6~@?@]Cԍk5ư1N6G=D6 Tͦi{B}ٟnԟB gqώ>vN&|) ,0G #EsţxxL<NJb1O,KX'9G>'<g1dq"&a59Ԅu*X/`X a`3,u`' a9xA8GP8|S)5_r<.7&PB-^z M''hGЁ-ХrA7}=}Ktt5QiYq\W \ׄ)98L`c!7br3i /A r7hpv6&iZ6jsk|m>ܡ-׵ڟnmv>E.IiAQz:RmBZh#ZnO&ZN:v8}U=JO z~_ҳ =Jaca4h)̆a V`=:=({}^ev}.9%ibCz/qOBWx _ ޓ$yo>d?AK6,iW9D!r179D.6`d"g,D.FDCJr\!"W"bʹbJdLT+1I%2VI+1Y%"&DF%"YiDtT"b:+1]JDLO"L1uimJDL%"f3XDČIIIT3C2UrT!S-L"5s!r}9DT"bz"fB$fY7"R7H"7!rcr4!rs" sܒCQ9DiCY9DZ)͕9dZiCM9d,D[Z({&e: _+;x ~$ dCvBnC~4 !x(=xGx x|'Ix6Ŝ"'7ZxJW߁` tDd ȁ< A pᆸ!p2<xdP՜lNa n}mz)lRYK3x=^+SuTY|+Uc{Fg5Y5$+im?e*JY>g^JzGsg!@RYS<?|8^ "uWLa >!L2~YHQ -qk\Kq ½q<ƒiU_pŸX^m[⎸#`r<{]άѲOOZe+ 㞿4֛L}Rz&-qKzk,uCD^Kepz'IK&֛[Kd~_C()w z+";VvוחuT zu"wVZ=joE鄼GbP h@ڠ:z``F``&$?I4,VUa5X֐|ֆu`d-$gɇ7& `C_n`c6,l[baVr[a)l'YMQ6`W ;axd:=% H3C$=p Gp?c88'p NyA}P_G@4 FCP4 ݍ{4Bt/ơ>ɞ&Ih2 4 MG^:xƘHVD%91D&a;v`'va7`/a? 0HqIŠpF2pu\CrZz\!IҖ[I)iGړ#D:Hr;)#]I7rN$=]$Ho҇%$@Ad0Bao 'd$EF1d/džl gl$FlgS)9;;`gؗ~BT??O_g9~AZ_ҿ/K9qs.MnvNn>!1^Wy ^ڼx~3/ y!7Mx ^[V5oKyޑwm w;wrS4ETfh!EKJmD[Q"nh/:,n]Ln])z?$?#i?_ t,H:L-{1R2bWxq &Ib"ۀ ڐ ۈMQ6n3lfkm\ W,< kPajMW9 km밵d*ږP+U[+Y6*<ֳn6?6@/sh3v h%c jG'C>w8Dy?J^W>>X>{LreS^/ ˛3\Fwl1o&q)ogʬg2~`$2vɢJj![: n@7[-2f?\Roo .͢a+ʥ <|>##YYc|^WmN"mz<߿MCz~<(=ޫ') [)VJտe҇~ y<{]?f2vxŊTĠ62^`wha/Ǽ*V`>f>G!|(=|'I|2§ >OG\(|䗿Ozx]_l,}fS^ě;gGY?6_F`Pߍ vJƱ phey؉LBMP 0D usQt'x ݅z'Qo,5-XJ"x# i h AM&B?Ե+5ȩt'Nՠ2*E0BTuZ6y5܄Rؖaa:ґҳӵp]G_+6>c l2ױ |=Ml7 b}@NF >rxROiPJC5W-!fFQ1ϛW2y drvkCܙpfI$Cd6y!Q2gÇ cp>|.Owp|.O%a<OSq Mflk}[bV*%Ý [+=rYwdW1ֵ+j?[Q)#!'Wͨ@RFFWγ @ge`vKHo zS9- *-IꌌϤEեE⠦""@]e;v7<-y{ڔ%2R++RMj*Х%dY-ټ_JzD,9iT;鷃ꖴ-iZַm m J-[X֭h+m[(ݫU߸8fI^ٗKV~픊Abs :`ﯮQƢhk,l,4?CҎX4P;u<R+%dHYԲQQKM+V_.cuKB$%^U <՚l||X}̱lL#w0jm /Π@Ytk:ՙ\Rz ^K^dOz>z___ѿӯׯs!OO xދ}x_ޏ@>~/>>A>?g/O)?UW#$GH]=/fD%1i/ʙxFJ=(gbc=!ye%'n2VTv_>33?ac%iy@2LH[@:}hl'D60 {Y,bX ,6C.^2!P3i5eA()}#($AMaR䁈'fIJ_@j4PR?hf@ZVUi !jZ{jYvնv; n,Br##VXJ]:V to=?vv'{T(FѢŴv/me Ýp7 Ã0?'SAd%YEV5d-YG^"Qr''Ir|IΑ%r\ѤKѨ|Z@ i-%ѮӪjյZhZHkj7CaiNk;  ͮ9~F9> ɡ_ V=O+ȷ|c$?/ BHj%KFQ fd0b#5rX*Vb b'#8%5b6F5>>߾ȾԾ¾ھξžþ۾~~~~~~~a:܎#:j8"G+G1111111ױر̱ұccccc9uuIgg-g=gg#gsgg{ggwg/0(x lA1 L|"R j:N~!QIe5=YO OSiiYYYYYY999%^uzި7xx%ގ2oo pX |"R j:n>!1Ie5 E}Y_ _7777W[[[[[;;;;;G~oq_ß/[K~! ,<"2JKm=CK7$U6.^aQKm=Ác3+6Ѡtx0,{'gWwOO/PHCP8 U 55 5:FƇffVֆև6vN΄.QX;p4W  Mpppo$IGEjG#HHiKGOdPdxdLdB"23270$<*6>)=+7r r8r,r2r&r!r9r-J"h:Z-Z;-6GKe~a1I9%UѵM]ѽcѓ3 k11gұjڱXAIU},V[[[[[[;;;;;'qwh<Ϗěċ%xxxE|f|N|~|Q|i|e|m|C|[|W|_PXdLBrZ$D™'tZv"?Qh(N$:&=}C/%6%'v%&$'%N&$.$.'%IR$I2L'%k'&dIc,#'9(9<9&9!Y\\\\\ܐܒܑܝܗ<<<<S) όL,,ͬȬάllϜʜ\\͢gp6mmmmm];ͳMv{P62#SsT[(%%S(C$*Q9fB!ﳼ\7s]u{^zg7qXY\"#> 7ϊw/ſK-B"tHJzJ<%%C%$@I$Z2S Y,Y!ɕI6JKJ%$I交ETFʑ zRST,uʥ]=QIi9$i4]+-nKJJK^ޔHK_Jߒ@f*e2C_6X6B6F6N,E˦eeeZ5lH z#7Bs B)X dseKsX/seї9YmG @+ V[Ao54ך OL<'PKbz7K⁑2Ɨ%ACp0%,!Dz&r 㥓!jMj`y°wa74 =O,{ۂcu%G^-R]R_BBx£(`ـ2xĝ ΀m' 3gB҂ D;w+TA&6q χf>? ^o/Vw>PLل0+`3x$Z.F^ iƶt%+ʰ`Ð,J ްM5!UM89q & ^ol,Vw>1\ &ÐuxԠu`و 6AΈG0FQce0|S$XN$9 XQ6l!+(@~ $aMˏa&+v< @h4hօlSN= kA6l1dSȦ5#6@35Vf求# U `_:"656s^ z5>Q,%<0:X#2"k—&r1MAv%J=22SCГlWYnZ֠d#7R,+Cn _mP5 `KjVF+j*@.K1*c6p29`sBnKZ"["'D%L<۲e)-?Kp1w $9dbaIbQCPfȚm䌃 r-4i!C΂y1v|&rڱ13y(>Y%ZصD6DM4IةIk&xIkLVCyB2Ec1|-Ƽ/N]ի~ŌY";glsRXKETt*Z,a񒱗Ҳe 6u:Kʐ[&2P&'<28$/'u9֙1 4 #B,Y4,''d6ZK\ȹ4C'rr<桏lOA />}V@{dAK23xQ_[&C}2F4Z4[Sُ d :u A6l9dsJfd׈ƈLjجjqrqrM}^zudmSF &c zjBdؚIYCk \Av4yҀ=C<gu\K"2, PV,3S،MXWn|,e5H)jLMt0C+ 1x {ŜܶRڢ cZBO!A?Qk>ٞ`c+P;XL>|`0,`CHN#6Em-hOZfвŴd $y`>XfE`1HA6 nmm "^{EDh%B+VDےEt":BPDG(#avFhavFhĈXňXňXňXL<88<8<8v@eX  E^E^V? Q~WAWAWAWAWAWAWAWA7 `~0o"pW[Wkt\ 3l0< ;~[hkhNBZ:Zf2Ly VX=@y<<cD[Oږ0x` \ Bp-A2;ވ1x#o7bF [n7`6qo̸<</d_E[_Kk :pf "6?????x7?xGO~t?GO~t?GOJħD|JħD|JħD|JħD|JħD|Jħh4V%UIcUX4V%UIcU"V;;;;;;;1b C(C}(Eܡ;}8VhVm.H gǩnE` \ Bp-H@;qG #wndV#%c`5X_4zF!;!b`Xȱh.ku`& HbI,"8x8x8x8x8x8u]8Fqt5kG(Q (k5 bFX@1ZInʛ;ooqor,x6<c<%/΋E3qjj7ɿub|y| 7ӿy9|uu [R}y1cKˋW.u//f:+b֥Wׄ_]_^߳r9m9=8]`^YqS;SɩaNӜ$oG)OQ_|ʆ?+X(U Wݬ6Smb4jfdJ/揉y!40%4lRH Ӎ\( ՆWN_f+ofyroX$ƫо} \\ p \]%pmcMb+YzM~r_٥G& 2w'qm4͝zիbsjIwmO 9in@뜆]N#;Ίdl} ;r]>!~w79ݾAsZ W5Oo/QO¢m1Da~%rsPT߂^-%1r*r>S-BGF`To85vdzsy: z*$պ6J';"n9 )8Lݕ~ˠ{^ )׷xr5"yn<<{΢\sv&mvoA%c]tdUPVĖ&=f l [+’G|aKCh zTD.kfAmL8~93sJ6$>zܯ[Xˎԟ`B}#[buݾnQCLڭfTF/W=Xx4Spѵmg6wQkYFbmw3Ƚ͸ .|2[kwiNr͙?St;p-'O=m-4]ԉy[9y=^ +r{,n[z_p]ۋ۴gyo=Ŷ8 xwV9ƧLZ_%z捬6熥Tf޷Z..w+p-蜤8:ENtFNQёʩA1S2ϑQwwZK@~<|dPEĭ)\{M)3%nƭ¶ോ3'~-U3{Cr8i}prQ竵v8~Tt^-n6v ڼ:_}ue?--:nHlqǺb`rצ3U(j"e- lU~uZn9a]b{S)'/l{櫱OOMV+۷%dD;CqzibkM;ʶ߬Zӆǜ>g{k H_R:]n]N\ƼraO \qn1M5[vѾ. ?6QOť+)[MWݩ*oL=vaQe-{ʞ,x{bEN'{_%h;mDā#._}|hy⹦ nT9itpfx|N qQbku:gMcuĤLʟq.n/Z씨7tgne% ߜл@e´)]j2fՏS}R({>6O߂I%G2W2=ov̌uod;z˜KRged^Y{;m.)@EnF<Ǘ3y e&4TsլS Ը:K=2J|X-Y~ٝ[߇~xU_dJ<1+R̔L飧o_:{ŗUTG=ViWCfZ_}`b֭֜^gHW=l=vZ^FnSKmpE#c׹jonj)^),Y2Hh[68yŜħ5{k+RZbQ,Pl>mH.O\zqZ|-x nyq'բlY̭éc~;jo >!} M5II x^OkbTfm[nƂ䦟DOr>Q^ݜ]=u̟6bwZ{iݫ1t"[dVa3Eko^&l="cmv|{b贇Fѧ$O}O;*pζ#B"L'^wـSm2{7Nrv?|Au0|sJ.Wz_O2*a|Qr%-.:Zz>+|^6Xrώ.KK]ӔOGd7 6+V[8dik }ʹ oN+r ݋Iۂ6.x<9Y'nvI^p endstream endobj 10855 0 obj <> stream x}TM0+|V06AH9CT큀"59#T2Rb={fx|ٶ(CW(M[]ʊ=6m jWB缻G{ڶ.X.E*Vu_PۡiWsxwdQDA\e ɘ j{e{2r_&ùa[LvƔMD IbWr̛7݂Uʁs%R4wAcPY,&^r?Eߔ𲹣H)5 H+V@b@ P EH&%($Zz/AAf1$!MkF~l8ۤ![P^B]ddPsLϕMXphy(#E.!Ao`9xF sAJY%T*Ɵ #JXJ"B*\ANzc\ּK\]UI[ -8SF6U *N U *t[t}e8spMkߧtI endstream endobj 10856 0 obj <> stream x} |SU9&MIMI-(KY.,K-ZZ6]3*JD+*6:m7t73ד>y{{{9 ?gqѱ%UƽILuXұ%/7$˸]2,{bqᏧmc3:O}˘jۊqST-hy6y{2*#_tS)^΄om3n̲mHu틂_xo9_ La.u0Ǵj=uKqb fglcq_._Z} V_e+x|M(NUt33Ķv}TSBc0ܤ,ԝ1Spx4\/V] kŲlkőVMY?n莭/Ff6j/{eYӱOW͚t5G>6ڨ3bZX!3{~3~vc'N[l fתY1m8~XSdR!ROJj6H/ou#5kgc)FѬrveul&kf2nPgq۸ ޛOu/E|_~9i ^m_mGw#w;cWc iǾ@'_[^=jA3Yj=K]R.7иY3gL WWUVL2y҉'WVZRkP-WS+R1nQkU[V37d5WO .P`Ҳ≎^&.B2jvxQ㽙~eHؘc0tFŀKtcT/b7F xe n4xMjXC5bn- WhO;JQy!",2c zc|WvQd(jb2?v&xqa`l2n^Ce-mfB-K}&4jFyV֬Jd弼zl<=c[Šf15Q+ ck[{ffUUE/2JdZ}cRfMmi6qԦ.m l:4HxHp1Rxg>{"hy\dCS ׈ MXCTGPLk##5j7 P7YP-g{c>Aqږ mob+/xjI F@QSֱ*,u:KM^ ` m"!~6[Rmk bpo{Č2A1\On*Xe`N1h'# 8@llg9-]yWn_^@d]XجhCdzn!Αl)ΒbgJ^uRb8CUR.J)VH\eR,b8MR*)R,)K1OȒY&)fK(E)E3.ERHqӤKQ-ERTH1U)RLb'JQ.D)&H1^qRIQ*ERb!)- Rb#.Eä*)KQ )J1@|)KO<)r+E)zK#EPl)zI"KL)RȐ"]4)RJ"Gd)pK)E)RؤH*E &)0Ja"N :)T)),&xRK8(ŏR ߥ^VI_Kq@/>)JW)"ŗR|!ş\?IJG)>c)>C)>R/{R^wxGxK7xCץxMWxExIxAxNgxF{xJ'xBR<.cR<*#R<,CR쒢MR<()bQ)ZHMORl^)n)N)v)nV)nb7Kq7JqKqJqWKIR+r).R)6JqK"ER\(R/yRȰ˰˰˰˰˰˰˰˰˰˰˰˰˰˰˰˰˰/B?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\?\=\=\=\F;\F;\F;\F;\F;\F;\F;\F;\F;x}nٔ;+1rgfX@(h j3c@ŠӉV[FKcAFUJtJ4t2DFJ@s(LD4hLjWODӉjjN"F&&"$ J4h2$ʉ&F@GAʢrPi{"h,v!"j7QTs$j>hP!`e@Y>Qj׏((/QD9u(E ʢ3GANF%JNyS@DIdt$J$rPF"+D&x*3)SAhJHGQ'bN oODRُD}Tz@7D_(h^*+_%D&rQS#'zrM> v4y-7DJU^!z/HT9g D#C|rO&z#z=L.6r zh{4&MEOtV-DFp^{; 6[n!Lt3uvr# Tv=uD]C &+.'RDP͋)BtхDu7΋g%:' :謨; u0gFCAQn ꨻t5_Et:JDˉQKQwhuv\Ht*)D'-vR9DTh6Q#Q,4z 4:꺖nTCt w(LTUUUD]!ԨKaJ%ФDRN41B\'Pn<82E]AQLPqԵ46XC"*"M@QQG-h$шC,DQ8а44 DQGhu :'OrD}D9DACxQ̢>33?#ʠvDiD^TgY$"7IH NFQB5TDx"#(jꩦ*BĉX6'akۚ}?A?lo7(W~`{/ |cG>{])w}o߲{5* 2_EB C?d3}Aۧߓ@s7Z,=lY{Ȳܷ hv el;lQg7g^j^b^ w;6V|f蛠on}]E_v5 -]n4wio%|پsB9wvxC-gׅoY6uu֬۲u8-gOrz!|6W9/4*rˊnk+d+l}jY^^ei-tRҏ*l)7u޾ԛQ]j- / /޲(|܅1 -ln*n,l*RQX.\[X> V[U-)ÓaTX>qKyxb- ¥pkcsϱ9?csϱ9?csqpgqpgqpgqpgqpgqpgqpgqpgcs}ϱ9>{cs9<rl_Ng5l-[Y֢d_ggɜ֔de].dj..f9_.z -Õ*]uq=(՚:vkF]͚v?|G_j>\  6b]Zf XyjR/D/3U[{׬7tZNHob7bނPBY7uݬoc;,Ҕd }{^mgiO.ZYmgI>v6kedG,Can4O#-x̺GQIfz^d!v}W Bƾĵ%1o`3TZSDe6MbG$6.)13#4ObQ٣TC7zU~ji{G;)=hLLOr; ~O8T;ЕjEkLFEזI;2s4Ӯ3;$!a]2|w#'-΃zbAv.֫,v~b-&m0C0ARʶUZk7yf>W ldLV0ݢl <x%,KbzebXfEEEÇ;; }xn= YnnvRR5SMPYalFnEퟟl7Κ[?OMЩK<\5^O&mkĿ*VWePc|vXqXpcoġީ!88ȗ0rt_/Gwv/z MC*OSxC:#0f0mX%㬱΢.=̍y%7^~ܘWr Y& 򼨳J0ˆk4l7 |=dm8wl ve(bbY, Z3a Mڙ'וyzUg4MY2eaC.>iY`{\}rշ}-?m&8S]iX3q @.*Kd>vz((;qtaDLlR71ߤVLjlŤ|0~o,ф oiH_)WD8юXn iwcƊ{ֵ.\w;*At.qğ7;"xbwY,YDYrJ@B[|cC+xk)[r7V}vRt&nѕIۡR3<).2I[P>ŨnRj{RT⤎/^ԝES%,Bs!\b.dL4u Ot1ͮ0g5r= 9ӥ93Կ A E(T$YFa-G"bh bK<HJr2`U[ouZ1i>ǗhKL;z8/(8+ݺ޵twjuj-KZ,ɲ-˶1`6[!1H@Wp7ΐȀ o2!$$ZwoUuk֡Ϟ^{֟ܵxݧ6_]CK102ύ%iUZV]V]V ǃa F0AlЃF1.Q6@1GYO1v. {,N(uhE*'V ]~`Xd7^'Ll w}B/nєiQ\-8:PX^zSdSAeW?74`zh' Xve\ڈ(}#b#R[#DU q8ՠ8ՠ8UgvYȎo$mnFE54˜\Eq*y5ȅ4q!D/Dfh,-SA=m {mM/mY61H űТy.\cҔFڸC3ZksӃD"M˷uvlnkK^.2ti02ct9b#"X{G,PUԡC:NR2+ 0 gYˎׅҞe-.Zdz(f S 5Br4Jz5r2c.*1fF/8SI|c9*p~&6vdǶQT7i3]r˖Ե\~P@8A}ka$̎mٺe\K6<<#u[jڗݷAa^N$]rhķN # I099LFdH"H0 2fm6O&Gc 9C&4^K\Nh`򅍄Ƌʼ~|F.kϟ' :*# ~؊m>m0Y}"u"ǎ@ԠxDXJ$v?:IՂT HA*T- 9 HbOחt҇gəfpQ/,08`!h b5qq&9DZ1??M6͈ ٢)" @OHbHD$ jQl Ē,f?譓L)J%{#'UO.Iao j`}ih`J'=GJ?j9Z`N>l.3I00(5FF著#y2`U? qEJd@e/U[LfYQXrQVMz x#6=uđub(pRYm#tw5-ZAf@^{F<Nר!vĔpTQ m*ψ2o%~BeSLrL:eq8Op(b9|V1 c鵜_DXi5WX&a?EEE^+ P9gs(X7r'ǒ 0`(cjoV9Z9X|HN9csx 9@.: \ IH,S)ek&˄trd^/g!Z-2dgкz{WH93Jr$Q`.rhT5O\V8߶Xk@Ÿ-4ӵiobc[` 鹴cp{'7R<avx!PƥT!3 jkhՐIDhPA5U_赬eM"d $+7cpŬI՜hԐ |謒b l6μVd']VhC4#]}} wǟKv;ֵ}Eԁ.ڜ ]AC5i"fM!veS_([:46޺qPc~X=va@;vs+ \/3&`rt>_$ k.jOv/J#c^ÊV`=]EqqȬ&]v-FsuY}i54w8gtD<Ȯ[u&|xSW$ɐF ?]u]<s*H:y4D "'Sa^JJqi BS*"MGmAC6=n~MiBWZ@s h7\s@ow'/WIl+ur ZIC0%Ti(4lk M@5H[JXo>=֕nGcrj|jck|TTxy@I@oיp}l`eSTMJ:pkAV(C9l63FO8=~usomuLjwn8 \ qhhi߾6"MMu`uۺhdr KSZMb|R_cԚqqkG!73sh!facErOzNy,('RǠ>P$vMz0 JJε5{K_NŽW 8tW,|ev(]zz)o R̊OBám!¦b9LYoc >ܘbUV:AuEY?g%hf{J [賢@jy %~%c5mGhfJ H9a*$@FS,U#0I:˦i(㑸h0%{)+YEZ(+5d[=#WO!&-C@k*=dKKyӞIF4AYR}E ա^9+VG/ժIor=ǰ _.5ᴥRR"=\="3[9!v *fw5(j 7sft`}y]Ъ5KρF\tT R2^& QK5sgUch:b&w36>9c{dUX}e;.\ eqF%RT%IR;k"J|zm*H/)$0}bF/Rn{) ,=bj1kg7j˗(ZʏSO!b1Ԫ2}XP*h,]n=b@`l՝5Jna{M]5ljt7<~m7cCy1+LB^6tk|9`;(D_t4.2ȢWϲ$̚IPJK._˪GafƁ#=YVz(C#=QT:| ju8܅ ge@\U[]MֽjKuqŒ m@GQ׈!*T叿 %jë}okC~?Ƨ\[w\-}[࿶>{^ xˆ|n-C܂j kP7p-QX1V NRaXPd/ZWX\5)W73ՙJi\0 a+c4?{6I|YA$! ! _LR1V\㊧TT'o##T!RŘr!0f}+&`o^ӳq{S?cQ8iX|sym^u`;ȊeIY,4 >'r6UNz_Wf9,5A*8cA8 B/_"k@F D߀F7ŀYɚI9$rN;J&g*C{R * +/N8ΐFg;Ld%Be'$hI|넀Kr MR30翏Ƥ# _SNoAC=v=zaxj5W 4c$ D 17 A ZR=V0Ītt\Y?kV/3探2 0ǒغb|_5FU ջnxU"%49yP85{4EtED^@N$U0qa ~OFgWO) 58"x :Z!{ж0̦hS;glazCN9ZCFx ~%w `=BpFE4C{x*rj)aacjRF|xd.3q's7MۍB$2k Aьad?eX7'G K(rπ#㴿g__ؠg)2_ZU;1{F/13D(٤Qhy'm;)8Q[r%F<nrYf~!&-a, sLKPf,sP^}_.n܃vGݥ"we1å~5LcjjH^jt 8$*űSkaØ$r R>pp«co (@@LUpwxBpf),.FA:ATqNtnpOm39Cr ~@BOc^_49'`=G.3.7v /B'ʥY?k< _8/OGLIadyQ8myg˸hn?'4ù?Q%7eD:}H!Pt,&P~i=FCnE"2C46ؠ0 Q41&鴟pj"0} jk(P,k.}ffkx,D_}P,(} 1[".yj7(v&(P+AlyuրhU*&lJ$w(#]Wݶp&^Yp ynE$ns&:GRk, 6eoRHΜ:JƼ$ -J$>5{ʿ;AnA?yۉzr. ( e&Xf'A\6[5Vܼ,]282,Z!PMuf|:~e;-5Ҳ|;; ; {@K[]tOm}1c&uigbqm^7v&;`Yݡuўm-V&&V]C#Ψ%qlt4]yM<\554Pk:؜m jjI&%)O]֩xny!ybji }|H_Grd~{$JM&l}}ֳw|q_p+?` ;ִ}pс?[x\C{ED8Wr;z 5du/ElT2CШzL3gfT U&Z rLJTg}m_{(a}݁䢺]g7]=oi:9BlMgbQ6he~kO޽귋׎7hoY|4h4zdpёlȦ/سM vH<f@Mk_Ur۵;& dtL)7>|ev{ssضsǘEě :Ŵ퇾/i^KGP>F,{9b k9/Qo:;ZԎ甯rYTiXpe>^3sgy<~_~믉S}eON?tVi$5qL/z۲"C$L\xNoR/~p~{߸_/`O>,Wzj78wqM۾e76k3m|kf0܄"D56ByaŊN9(gnr&͒! H8@]C6M6nFW_p9"$szι'YvIOq~[ צY օ|B>k!_)Kj㳲*yWWJ^b\^ʇwF1"i]/ZE`Zt|t7}\ Bt+NWf Daz^i[bٚwvNYU;bTn4ǚ V|eCXzt`S=iUSV.[1y{a{A6E+WĽ[͋&I bMVGunۮs=r/7bm|}wfe*.@ЕChʬhʬh MRʂ""p| MR&NJ.;"zѝ 5ᐻ+$8qs( ,%CFsU|IIVFu Gf C,cq ]5zqPgq ӎOjZv|,Xm*sHv^|_3Ucg:SUUmڢģοsꢺe6Ní[Kf Ou,j֜E7|e]_v˖== '^R=趷X;R \~]kϐAxfv}mBq/ulv(z2SiIuLeC3@܈>df9fV,gIu:"Sކ۳5`v#z|s+^TČFZ!{Ғb58kYh<*SzMw6.2pPi +j͑ -5%:R6KJ~^z妾e .K4iƄFnx,2nSˎ?6]mRYwNOk|d)kZP+,&[tE?zf1ԓ MK$-$`kje Ѝ~Sw~tVȍc9?6r}EN"N{r?WոyPV?2_yt[{aI\Xػ4t} 1l=oEaƬ-f /%ƔTu}ysfI~6]uvJvŒ]0cvcm.GJ$1ivъ"\gʛ$\vNs͊^r5z2©<)Y 5%OI $LNU>ZMKME}=\UVfҾF~!@'|@i;`2UTj90VK'lq髶f+p}VAidƖܤ }쁧SuM~rJ/[ŋɉE:~4ޖ`Pb$Tu+'xNS\v'9&%D`Jrjn4X0b&U4MYЈ>`͎JiS_\^}d(sqmUf*ȹtHڥ*`Or}aSe)/嶗"=͇Σ;Wz@yl79PIx%{TYchc슳O6[dS7y'rb&نGl4%:9~6e6qb"S&G]ؾB)3PD>bid5mBdb42,:%l0F3~WbcNiv%=$C%VؒbQJΜd9\5V$$%+p^Î7#w"&;q`ٯkxӼ^Ǘʡ)$o:;}ttQ:O2ɺʈ Z#Wh;^UsV_kZK>cXizDiqøBڛ#w30Ez٧lZJܙ\»J. gMf 4NU*?$Sm.\&kʣց-11'#5b&Z.sSNE7sVꎫo?{k5[N&=>GHiSn'9g'kݙ5\FxȡGi=kV/Ιt5k3v&WMɛ5ٖW[43'/_}qӌ+.rͪj[1gcuv֜s6W8j3iJ۴H_K>Ļ^!xi{Dr L00XR2SR2kxC#d3C,~K u̦\%?QiTEb~Y%)q|L"+yl[Ӷ|(&b:1dg$gۡ&JWuAi^’[p)13IG -!`w:W] s9GbK`,Af1t&onQx55ٮ|<^('(?7F9sJn.dHN!(bNdͫRy]2W/ߋaO cBK&I9 E1۲ۜ^oOiߒO2?"#2*W, 7'sƒ~ɸXXD#`!a5Kiڹv/3`XاTG;^j/3U~l`V`#:`v?M j3U{՞a`vاw ~JEM,~ R#QlgVj/$`"Ћ`Xا5]eʿ8 GljXGI8zZ:؋hC-2}'ʯ?#uFxlF 7QX^0܈_!Z6俲!M0>o ,RAxr#CalF G(mGHG p!=Ҽ(\`"j? ,_3K^ؿXƽ{)}s76>҇G;Zyopv pl*. \{=AX؎vF/n~P2B{VcLGMnDEBh5@C`vСk7=hEM B{>uB4u7jfV AaX~PaX.Z9&BT! 02aСk=0,M ra, ˋ4/Qlf0za( D(#:p=_1vg^+S1 "B8Q"buv`k`!a66ʳC%>Mkfh@#z^ߌѦPo|c`a?A1`!>JPGFؿ{F- 2Bv90 hgDDN؉Il" k 'hC D>:ϝJF ^,=AEh>pDRF׸@7Њρ{/ä^~@أ@7?(3,A%8P›Q=g ;%"YC;ĵ^{ د8@jG,8b,(K.; .6 :n=4^^ x6|gI~xtD8ǙG3Ig+Xp .bE,"\f }Höׁ6y`;C{د=AG]ioq?&Ɇnl&Ɇnl=PC{(G/#?c?|<.]](vQlEѵkE.]] iȳ8'_{8@:Q`m7b 1]b 7ݤ{H"a=ڻap=HvΣ@8 < 3pXx؏d|j7rtAm@Yΰ:s;2P 9+80@$ -Fbۨ׵]҃ | 9Ee#]9 >pjA&(y~#J}jGP~GM=gC{؏޺__1vGi3 $E9omh(y?Gъ8`=S;Qj(b"gZ1Vt5ɨԊQ.u9 @h.Qt_(}qrmß]pT% aY,e‍6kݤ{Hj866)j jCZ70eq>C4 J Y*df | ,PY<0Q{ XHX͒6zmv`HZO[*WQWQF؃`|`3ln=RԮ+vVkw Y"Kp Ϛ!6FgڴہB^Qj/2K_"xY=`"lnFu7zfԘ QvM3AX of&Oح!HI.#}X;!kuhf ˫<&cn<&cn<&cn<&cn<&cn<+"z̸t#FtK1"z,Ůq~,ƺ"zЋo;QӍHo7is7NX#K DJ #GGNÉ6NYKڲں)Ho#'Ñv◩TrHOҁr䱮HZ2e;,5vQ[tG.k N_y[P}$;# oPΓot^F0B*J%?tGoɘ6__%H ?%N5m{| zt"Ri+GSg O}}@ˈ.v]g8WZP`kع$ [¾@gs\9׵ڂ=m޲%-~ߖ 9[o[j 9oskK ;C[6g0un 9n^gk  9W[Z3w¨54h-]! Evvw3Bή`vKQlN_GWKkte;`q}+չŷ + ]meH3 CΎ^gk7nGm;%Cq`KKV!%Cp Mjqh vuI7aX[l]۶nKph4YY6{)N[m-Қmdrk Vu6` nwQ= ý]m@g8*-~Kzݡ6T0m^^2kYêE5H_[gbG}ܱu8B]~T }!C+ru˜Ѻ Wl":YTg4-2AK(2V hY5d@ devt-+- ͅ=6uZ Dmk %u}ܕJv?fĮiR"wOUsQd~oj _~6o7oi$'w_*w-vYKue p/dg㪺ck;Fn6]kRv3bu!733s( ,Y^>El'?+[Vn!/>]>3_~+||R|SG|*ʵeXTV b2*6*DhR_YDc# KaQ+YbJqTkķō:}G@X$6xX.G 񁪊UcuD]&>U׉T:W^uzTP7[OFf/y< n^7oOŶ&yfnZM'\nn7{cip9n> =Jp3n# pxX="W3M7p M QpA}TnbMnfEf n^psn߁'BpS n9777͓p:y㛕8Sҹ_)eYn\f+ K <n7ρ7K0j' AԈb &w]~n~ n7Og0T\5jQu qHߦvK5fps77!psܜչ uaȰP]j̰S$pSnfMne6ps/yܼ n7kpS,w7py~1>7O_{K^x=p)f6Yn677} p,y7|Q!f Y6ZȞp% n~nGp|Ū;%RuYn\U' p yܼnb )#C0S|bX,>57炛6nMe7FΧ7f;npy|xgnp>ί7ro7pT\Q2U)6/2Cn\nn7?7߁W%L|@ݢJG,Zƍpp#ps7yܼ n фwaiVӄ}:q>RD>Aѧ^n.7ׁ;ͣ9p*9 nKd0MGQ G‚AP6bT",4jZaDD!(W[k#ZKZk[]FQM 4jjIsfwAl{{3c9s<:۬ PnE6uȦe8N[m R."6u)#Ra8A7qL'S[WB\mc8;~um;w> kHUT t)sR,!TW*d"^Wᄔcuېi_HuuiiQQ*ۊ$7q,Ӱ-~-ªtS;b]tRV+p[^wJH)uz%rP 'n N(Y_T-9WXK<^LPIn',3) D,ðLW"#jSz3`8fu)HStdCѐ 'OHKP# #dM&IF1Ķ=guEAPJ'Q9I4-GO*$jZ5aVFӊg](6虪Pp׻݇$fRϔ){M)UG2k9+*ZZTY^k"&RQU3f#V\\^^I22.UڏtuSMoqlpӀ#/ 3BVWT܊ '-uӦ<'7O"v@m]x\i5Eb}L$V,3a͵Sot5TPQ& APRe*S1U۪a+N0Vڴ&On`keckU*,*Wᴽ Udh8^} YEFX,QYx2hF+6Za1ZpX֜XHpbCT\Oؘ#di9 G'D[d.[ U5O>6a̓FDŽ锌 #iFDŽ1abA&LR&̿Oe6%k˜z%kTwVvHVB۲DPSܚQ V =!–vLN:d)%z ;kPT&sYOS"9ܽrR[LZr:F*Qg8bc)>%Ң[\Kz#zhwu+R>X3=,ijZ SdlZS,l#L=VT`Ģ' RU͘Y*j93033.34L#j1l9vy %r hB_Mn¯;&WZzm/deh I "g.7X4.ȸRVkjV5eM$!"5#.QGXH y1*?|˺ғ.mNu,mN4=Dɞ?=vAQQYYmd&IׂM٥ޯ2Uj$BWen$/94Y0. h+V;$i ӽǺ@hd4bEdD'˜aj{ϚY]sMf!Y#KU*3}1ŞFUUqzow曤T*;ޚ􄓉/*dmoшF_K($$. JɨmDfJC}&?SU^թ'X냫eػInz wI=Ɖ][xU׭ή93}R2w;w;ՎkJ?jB5ajn/=`4-V#fMn2Ŏ(@Vc?a zD.jYbjztIEx2\N{/v{Fxxh\6b3RIt|wT,4!f9=z WW<;yu T2bډd3XNpjHsP&~h1P;RqkY&~Z0 2OQI?n[KDsc2W_\Tgz~i`TbUNt3g(#:F@~@S':XY2"qigod܅>K#磳e܅x@/FLE2]2#k-o 3b=>#1[|5}F*kcV%nҦ[]jwυn?.>ĭLu?.^L qubO^ R UlѰ{wS[Srw'Dw,߈[ n+;閦[vM߽{黷R{SM݄sXԈ4YLH-dqA=xFUK5:4(9c]=h%S*Xj ޝIab1b}[ۭ殝v/l{mIUAqA?;/)((?ǎXċww/P$zBXZ,BL0km[`Yܑyi߁#;s+|%:3F~ь1hh@oYFURQQY$}J۰4OŎy#/J3x +Uiɳ67mMw7 |1#@[ e/{?w|~I,'QW}M-[~U;E汵Uhatw;}G~2WI0?7nic%m<PE-Ӎ<]x|TW^ 3T=pUk-ˊc ԐiB47%9/DJ!b<`^(dt;Csk|hbHOrӗ`GgeUTMϙX hnXu\~MGř;m_,i.x BYu Ǝ7Q2JԸ-sS%ةvKoKiTj+y!n"yYbmݦx& }^^$4W^N!xg|Zg3jjXO_Xڀ2EjRm1 ХR,ZUEs˅3~53E|f4_7,Cϝ$2QjH[po0l 7g5vX\X@\Q܍́k9E7.j-/UM'Ÿj֔D>'c}<}9>cq>^7_\WQ--h|̣HcTrebȿV֫qzER=uҽmU[M$GxvΜ2ۻ{ōXWxzONYݽE':w|,N#?n)㲒kE\M0e@Zx8GUo~j .>^j 3rUzW{+]tw˻9y+v+ Cz-禎yo愣$Xl("'naӉ!oo'ӡ>'<"A+O"}˳aM ~ONNx:aϩ-#Oo@ikr;i{Pпl(M' :\Q5И ~ 8oJ8N>=P: r{ӇφfeütyYc*v31g=7bٯph6r葇Fv¡ݣv󠄑y朣?_L$}y#.%LU{<0q(¸&ҡtxGᩋ?:M&&&>:it3\r-nwSN-:qi#t(vUVM{cմ-ӗLw~E%a r3cϴ83¡3>en^ ( |vCW.& ߖ~ʬ%3;f9ݫ˯i//1xn }hoZYUY]\B</!?"8R~#; '^^{_Zpu/,k[S^ܕ_V=:+ttnPYɪɿ*_$ѵze%kmz}ꈳ.ӫ7e;LWV0:%Ϸ :$WdE#f^,k#-r[d51^wUC2BV]:V>إt[1k5YIUiz=G^RˮצO 钱r?[?otrU.]oaٯ1eN/"%{ջY{dxs|TR;.Bb\fs@c*4橾ƗceuQ7F޾䍑7;wKeFդA0: e/s{yTv}ͥcK;|*6ͷ9Qvz-vzg*GMUq'}٩[AȮݲg]r:knX@-5 X RSԯnHCjq%̂3@͔e?p \epV7 ~{%X+jdUh}O{/ZWBUP+@RS|_FZ} {oYwcc16cc-`=j=J ρHBXw +1`|RS m7xc̅ypܮh=2㧢OOm#жh[5v6mmK.{Ϸm>m1@+<>Mw:72꿃/dnك[vemokT>G-QKZΦ[\j9ZΡy3+-=;TPoQd\zΥg,\E=di:=-{GѲ?-{Cnвy;F^0l}[}<}u.֋jNE۳+߱K70%rתjnX@-5 nX /xE =셗xa4xz -pދM8 {cp:n? i m0ga_3w^5*4>x M'pu߆Whw]xo>m vh'N `٤yv́/EAI|).+ar㻎uM7`#|͜?O8dd##n< #nA8~k_K+߅Hkp8;>N9sa܀^_{.S݋^-"Jr|:G\Phf3ٌf6hf3ٌf6hf3LдN4MD:ѴN4-jEc:И4~qE29h\ iFkњfiFkњfiFkњf$ف$;dRlFH5#fՁ:T3RiF͌z'ɨw2Ꝍz'ʨ2h#(63b3(6_ٌdfw|/̽ڗBx=Gߥ-3jj?Y,O' Bd!~?Y,N++3gFAl;s9ΜmgζO1g3g3g3g3gߔ2O<=<9G0ʻ_T ~t~t~tY,w; B|g!Y,w2333{̹F\#s0>W+Ŀ +m̕BoDF oG|#:ߎ Bw}}gzw#2AH IԵh%+nsLjc-'6PU&){/eT6RsJϣϒs99UDg~kI!5'PjR)5CE>j1nW"X k}eO}?_vϗ=ڨ^fF}܎axX%s*q,۴(>?_m֔CŧSuJv6V_ҫU>-DѲAl-DѲAl-DQ?%odJުK-*TBXa Rt%=E1J(d1J(d1J%ǦK'W8 F8.;˾p%̂3*----OeGJcAhy0 ΁ B10> E0>a0&A&4%p)\ep9Li00߅A>C~a  < ?m3x ~$Z~9;w}.=/r/ʗ߱ha^a7/yB}Cp* Ӡz~` #=G~ \7MwY} C {P,φ"o=]}> HKC A68D!y} vCo~;  ߡwhSCa `m:;\9aגp)\בoI|7n'm,}\D~ @_çx#|w$@oR`t F`t F`t FǠ-~p Sa0 >!B `8#ly O#a0΅b8· `,|.`| (a"L$L)i(KR r `:\3`&Ȼ$Yp|gZ pa%TסUpԂBJ7a| 6·A޵]xC=<0 ?G'(? xRމ!``^D+rw3C o7=*MA,^xA,^xA,^xm< < w_owx~ ) PxIB}U$_EC8 `ZkwZ8&-~|2֬4b4lf6[Xigޛc8iOXK_o?Ӣ=O^{7{%ثb֫ܛg;g;5;-~eyfZ9gumY,Y,Y1hv{ޱ@Bw  g}& P1l(pxWꪘPQDŽ a@b)_ESa0NA0hC;NP p3h!J9%pOя0+\g&ʽΕ0 >wwyy, a_ͽjo{߁o+dO vw<7ÆO5,$w_bڲ§q8u [ ~|}`3*vxh;o^ دOUgFn[VpN[;}koӷvN[;}koӷvN[;}koӷvN[;}ko=:; 3vdxG$;ҿ[myXy~o[V))H-r'+noJѮJѮJѮJѮ  $GAhiI-i2>f^.oC2Ðιgh1kuM5Ѻ&Zׄd HfYd ۽]uMڙ w \d]TTtWeuE]1{)TZ@[ A)Jm- P $m.ihB!t2Mdl9\|4p3 iLg84p3 iLg84p3 iLg8 d(@ d(@4DB=y (:UE?>OW!ǩ!ğV^mV^mlj̦lj̦lj̦F=5QOzjSԨF=5QOzjSԨF=5QOzjSԨF=5QOzjS1111Q\qJwZ#Dx]t6g3m:iYKBտٻĿYſY)NwSﴎN贎N贎N贎NT+ GƢsc.F>7WWg[qnqcx1$_R܀ 4&|7CoLI17&ƤޘzcRoLI}1/&ŤbR_LG@I=k/ϩݪ=]nNnN欽d%k/Y{K^d%k/Y{K^d%k/Y{K^d%k/Y{K^ڳ.;ygU#/x~sun=^;k*%Q{*%Q5^L2-ʴ(ӢL2-ʴ(ӢL2-ʴ(ӢL2-ʴ(ӢL2-ʴ(ӢL2-ʴ(ӢL2-ʴ(ӢL2-ʴ(ӢLG狤7[x%Ÿ-"WpPErHN8 ofDr_,mmmUE(FQ5QTjUE(FQ5QTjUE(FQ5QTjUE(FQ5QTjU:xX/.껬zCox["tgOxZ"D5|6]^$/n =o=:))`tWcˈE)tnǾݷؽտ ۤ6y*ގ3p\`5\Xp5B\p=aq84τŖ~ǜ/ĮWcG"Zc˰M = +{" /%㘊iA-cH":#q18x 8'm89iXaEiXaGBk| )>OӘ?Ås\ _| qkWj\z,D4U*7ȥ¨< .T80jj)q^Qr;LSÔ0e;LS~W_~W_~W_~W_~W_~W_~ԟ'?A OP.W˕re\.W˕re\V[nV[nV[nV[nV[nV[Qsj-. jQ{GiD&>[hGbA__|hCFb /.ХT@ZzIo5:x&5GMG}.Tra #\@suG;BPweꖩ[neꖩ[neꖩ[neꖩ[neꖩ[neꖩ[nePg:#uF3B::몿`?Onŭ\JMuT8gR _|&HZz8i=NqZz8i=NqZG_`UWyUWI[t2~~ c?1~ c?1~ c?1 (X` (X`ՐW yՐW yՐW yՐW yՐW yՐW yՐW yՐW js(ϡ<s(ϡ<s(ϡ<s(ϡ<s(ϡ<s(ϡ?^kb"v0uN  7[sQ+)H 8ó*,ӟ aWlnu@4#6RKfܲIha$x-$y@aO>R#RWv@OH-q 0CaLUZ=~~ K[1Z=ֆr?]~F ޺Bx̄aaYZuU0Vw[8PwáaU|PCTTK Uz]Tf(%G)9JŃT,QD(`(`3P0K)(8D RpCW^rC+QDJ*QjR(F)5JQJRjR:TRC*QDF3b%᧔j(Uv9lal0<(?3i gxMN<&;DžE_3\#ψ'|j 7?xz_¦/z3vBx_nW̹ O{|~tZc{&yW^^޽;z^kY['OCw>zkw^d:UOi\v{WUnNY&߹Yf=-2E&Mn;^ٱWv{eƫ2UY8 +Ȋ2"#*2"#^ P {9sVSc]1X0AnzRׇ>4ue3M1+;T$^Q,υV#U w<|n.v^LMMf/RW_#ĄODX,ĴLjdODž3qNęYxgܣ{.g5穽>QwLQxAQa)%VPb%V>jOP{OQ}ZJ1-MՉpujۗЂm؉,^\W}ƞpu]~]7-A-Nwlաju=ua%Ua]q?7T* UFt ?^i?LaѣF=jDcb=,auX_FeDo#zˈY^1W#S\_qN&<^m+>òPlV&, OŲ؅n[{3͡rْ7䶈0F<Aojչ3:wFN;F`kl}*œ~NyHGh"zlzsmɞ;E 睅w]wpn/:Z-r-_|G~ _Rϟ Wٵ*㗠!$ZSs1?R%Tȝ*,Y.K˒ ohf6|+݋_}ü0VS? nL=  p72pf܍ Hm^Ǟ M s="^X ga;vx}fsY޲{0;UCQ|=u}Щwjsnn];vjQVޯk~.o)ruPnjyZ.ʵ=rm\#֠#ȫv9QN=jnǠc$ J;ɅOݺy|xTmjν[tnnOnЍw;ɑq]6fNyY[tEt;uьιCGlۨ{Wlt6Ml^]Mkt.ŲXFkZtS۩[ԭSVwNYݩEwjѝZtRVWJ-QV7F;EgYC[tݺndnѭ[t :CͩVNrUWحtsS*S[T~oSm*Mŷ6ߢ[T{VgU{Vjb*Vݪ[w;szκ\ETQ+UԳ|^jV-yuOt /b c|,_ɋe"+|,_)k惴ZG>Z铦O>i惲 4Jgޕ2b|.&cEɽ^ DvE6(aQyX]յXkVthЊAe\J;])J9WajcjVrVWkubZŨ+\99WbK^r\իÜ3n@xY/+veO]:n|Ɏ[UcP {GT3ݞ靼W=qwW>41("OꓮT;^W2gvU^c.zpٺ펗]1~?ZsA?Mo ՝!CUQkVizO[['WQp'[JEdTD-{ZUdĸ[Ÿ-fN3Xy:G-\nys3 wse{L]T5mDI9!!+~3D]eCV8D]TE]TE]TE]4D]E]E]Nd +]p¤t0F^poĽt0I|RS)ㇿ#̛Y;^NӍ]ތ^1W۸m6n+vq;۸hg˛=vq;͸e?Ɵ#q|OS4fp!/ 4D'LUxz3Ss،B4e /MS wL}?@2:7iGVN3eO3eO3eO;'$;f᎚s!\J, \ ׬5aSOaS]/p{}X^_v0kƱ/EDŽmѱ1'.w7[|y\d 5aU:\al^#5yomSo ܎;p'ݸA{?kmZ7^Az=~Oϋ#M܌o6nx"z{K]k8k8k }0,R.R.1{xǃx?a~5x b6 EG΋f>(,E:|<67\W+l1\cnLn -MEwz;;D/5w_s_zMtԅz,b,ױ7F<ySGGN݁vt]`'؅nz}^dѡC/cM%%e޴C5qȭcp,9a^ͻݞD3y5aDX,? TrQT8X-ViKkDG^eX;ptiibʹ[ܭr֨5Cь"{ ZZ;91x 8'm8Z[tknO8gWu).RocƔБ8\+7B$MB$MB$M6|+p;ěwn܃{qV~|X>|KqnmM~;;֙Τu&3iILZg:֙Τ5&1iIkLZc֘FG1 $XeҧU#'ĮR][j13ղG5dMY@5dMY@5dMYXX@$7 My@$7 My@$7 u9]rNP0 p%cաAGQu,tn:K7MiB7M 4&tӄnMi¾mvwnnwTc cx":I=[Eo[Eo[Eo[ԭ tQ>0"c# tE"]}L1g3}L1g3}L1g3}L1g3}L1g3}L1g3}L1g3}L1g3}L1g3}L1g3}fF3|?໡Nn'jۉDvv;QNn'jۉDvv;QNn'jۉDvv;QN,vxY)g%rxY",vH;K%S^SZ /G X.b7n?pllnP][vؼP}61;\gxStDm;ry\<|_;4;YdS}GLM1--2-%3g~Y?㬟q8g3g~Y?㬟q8g;ugEꮞΤ'@}{뱮z*x( *rȥx (x@+aVe=_wuuOU=_++++++++++++++++++;8NoUݍZpqs'nввв3WHa*60EL,ږRSRKDKehgw蝠(!xHX|!_bX|!_bX|!_bX|!_bX|!_bX|!_bX|!_bX|oh,Zb>"9]%qMte>SvSrn'W诱 3$ '2_ϐkE=k.!b#>s(DGSє~sںZr#0-Q ?-/t=rΣ>%?GE gd“st79WO䚯*bN_"ۗs&GHz,:.9n'E Xc%A$vt};Cv?X3D5y~I~(BVci4T9;JOТlV~ɕZ&}RIZZzsd>P ) RAb TSEuZ/I~x<#Q0 'bz#"  DA*H5A2AmP A#4MA3-A+pu.Kp{}~x<az3'`$I X>sGtZޞQ)@ϊѱID:v!:V,'fN;Xi_'F&׺I{>SZyAbXE&Pbħ}p' ` /80^Wk`xLoIMx\o2G`|>s0GOl0 BG'Ed_׏~:ǚ8 'ss`40iO{|A$x&?Ld;߃`E~z l[V й* TA PG/RuAbu2nw{p<g wIA+x Ћn\?` sSjpd~0R@}8MDo=M 0ߣ(=|2ߣc` 䍎'`$F` x< 1 ^x=)h ځ "p1?H@p7 !0< 10 8x< FQ`4xJ'Ң U <֊I0:9O^.Oz.K?????q8s9?q8s9?q8s9?q8s9?q8s9_rD?t4~hιs;u}?䭣l!9K4b\ 6n >|1pppg3Lq|8>Si ~1$c!C (Yollll8o7cƱؿq8o7cƱؿq8o{{{5Z b~5MDZ7؛)̧z46hlʹؔs:? {|6mnVjʥknj7O{Xi{/d r}D*ZKc"A4sf._eGRudsdU"G#Ir8zt ,)8$!hiK ٙW+ǫ9B~Ћ wY/rIB!u&)3IB8) EX bCMR>z.vw^ Ɲmf瑋2EI^o91dI^#gb8W.4{7(`ϥ>Nv-WɮVH'Tzjlmf~֖32rv'uТU$]:NhF` #B$Ew!Q{EhaFik\ [c9ȱY#ystr$*+/AG&wxް +c0c]|G3~92 us^ n rSZ|]䈺$ׁgGz&Jd =Lk/QzDHu)R6M~nAMK'BJΡy `WEAp>}Vg}W|EWlRPK)G!cuJA) J14PrDW|EW|EW|EW$E[q-g~?gQc5j/"p+[G i[NehY" 떑&km흦zϋXqVhYƱQ N=D[' |RmOꍛ׎:ލ/'Se&Se"w';k\4Gb:|ezyG$Vk=qb )ЧSj~."w1ܰG"z~N/Uo%LRc~&&jn+Wy /EMjdm5ԒK݊dr"j-F3KrSkt+x(R_RR1-؆!J)hJȷu!w!Op0dXAf^Lr73H_A ZA֌Sv/EgV2Ρ *]J܉2!\r\/FĤH"E!Ee^ʡƋO1>6cKIjg{u0SwX1HlGGGp^WIC镖J !Hט4M@SΛ9Z%Z5)xn!>WigO _`U-4"t8WGk8vso\`yѓl BB'=Jq|q8^\&.' lS?`q"^7)bg."G:zb9Fu:JBRt띫Dܹ. Mb-;OrSyO}U53iv[;'mݿg98vs9g8q/s;8gNιUUܛnCcPw>rǻo:}ܷ/|g]u;oF=w9\-ttK%cLw2Af,gl":esY([#;y+:Kg>hh_oJt75Pu'ѯyxtIt=+5K6Ki:"uldH{"ϥJy%TaȷّܰC_-~Jxk˯ þa_V?| Cp*> __ _O LJ'ogSsÏÏW~p>pe.Íup'DLcny1߿/bLpNx,+V"0kk??'BlP1ؓSI11gccbb粒iiii5gHn]#Dcq6=Ekq:*S$BgNP~z^~yl{:OTlOS~ 1K!Բ ϋttᐕq2S Z/c (udU@W'6W}=K\S'R軣DrLocROX,%W_/roue,4RN?~{_q޺rXzBr': R齊~BАdL/ZJ7jD(ծZ_R9/qsg,f_r'T8w m_OHb5F;V2o?r2 ُ~3nW-JVނ*POzQE _ȝdX=rO9MZУ-\CW[ZJW%FU9O#>GVqV_ed%`m{ܠ7`2Z?n/7ԟi:۬{_\. _..43$02)*SM]t%<1ޛU~O?5&-F' Ye].vXBmqɔֿ߽#fQ_/W/,Agvŕ>11|gFNcN Ib/NjqstC2cxq{S܉?P p+]n/r׹ 㛋G1-r㛋7S㲑l$FJ*cjx.IibQk_9ƧsO'"tb)>b Ӊ|ӉuƧO'vN$upWNjƧsΩƩNM9Oħ7 DNAD.A9W5NVP۹> ;7 NϠY¹%8=h܆vls٣N_9O7>3 _08agjzy2|a| g5Ep~42k8+5&k8[?)6~ꪴZihδݮyjc5EcFQOcxb^5V oG>d}VEVEѪFdT1Ǫ^$~ĺ+c+ѹ&"OlboTl;D3OsK-Da5Hi52=Du'zZLG/sE]"jK墶]!+V_Y}c,5]jQSb e&j0/8q=h)D[] _N:[-\o'|/ߋT*zۼ+=h M7j u:KS0"̇9_OL[V(NyҌyry/fْj9Ɯ$JQMuQ]D uE5,rE"Wu in%6upU/՛Z>|;3-֏\Us1SH3H=LG:T %fFj8iW#F!h5槈I9ϩzqjWI9AM u5o7Iz]59)T5/K5eVhI@PbT4VJdʧjh֫zrPRFܦquNIv]["UDŪXT{jOyUh`؄=l6aM&a {D8Ck8ExSc8EpJEu,B,E u.J,Ұ ˬ5U*WX&\#2ü0a ׊px'}aXHFl nYp;iv;I;բXP:1Z4ދy#1_bKEEXj,a,&k5Ɉe,n"vb_/V4 cDFq145%,֌c }}<{Z@<.62_"j6ҰnPTL0>Ҳa6Mx <(-'Ohl @)%<8ƜJ{><(-ֲ%<]p_6W˲^eeږX֫kY/˲^-2ܗi徬$qr\8#d [E)RсpSj=<}@XrSG>%\8z),-T̒ 3%) 1lDt#0H:a 5ccIc## րFIhB ;-wTQrG:,e>{\bH?H kz8Ot؛ǦZٲ.s;вW;\Ğ/.Hzh^*ww-.xW߻R|<_MvWJϮqPvg'Q.w sߣ6RWڢeҔ7WظU]*ߛӛr+BVz♙?I.weY`oVy3x= !*iJ5mzViճ芟]0[.c~WԆV!MyJkb|Cʕb{*RcۯlJ_~X7.CM,5I/8!*n}Wεe_bs6>ĊO8pI+I™]CbntO˯o-3qyW0\+? ]?-9oY`Rk|>[^xوyƲ?\2F/qy\j/y%\VFCyF뭽eɄXߖ%{AϴC*ְ8Rq% s>uQr׷CW|^Yjˮ۫+ٞKYlg6fjͭt1W/9oP =Zxۀ{%!{>;![5az߄ }KZI(y~V]q sZ6T/*;+]P_Yb[FG;"2"{0OnGݞ,ܻ-T Z/Ꞅ>cVыOB жl_(9jd~VfWY2sXJڝzW bPV; Ju2C7.~__k׾aߒUz*zW-O;:=l0^{y]rݡ˫z Bǚ7ePMZ=Jd92V5v}dLנe6wɨdTɳUm:}P'\{6@X} =Q߮o8JƇ$oJ|ڲ Vz87=0aw~ cV}{}*nH9gyS,TJ,]{yWސwH}5巔gJtշae3J}ldI?Lh$ q`[˿ٸʪu?[uU0ܱ;ʿw?5Ja?muK)a 媇IQGna}ղx gaCp_yh#vϊovi37%N:z`Q> ܾʳ''9''B[JZJ)RJ--Z+"yM#i棣Iz!2DDƐ!cX2dCƐu"2D#cz{+w眓&ߔ;}_{b3W+ɩo{ڋV/$_g[Ҹ0W^bגI4VM:}Ms鿸;l)ȏ#73=#{0f~8];_*s%𣣑c_Ty{ekx<yydid/9m{Kk3Hk$"<x]䥈σ`kyEĺ6VD9ύX)<*ǃ$} K |v_|_ "A:J>n\&DAY<ocϣ|xbEwOGO얿:9$|ӟ?,l§ܕM*G 3&\l_+VcH7di!ېM54j c cC c C jmP-0&j4L2<-2|avfph Vpw7}i'q6i;[6ڴOOoԾ¿}i$Ӧ}W2G{iop6ܧM}tܧMwier6`Ӧ}t#+Ӧ+>mrӦ骸Oni=}tuܧMMӦ|.kYeMwY5p5k.kD!QD;1%1U7;鼉&~SXFg^"_Kf?Z>ci"0sgeV*i@=C<WDIӱף釺VY3N@ u98S\l.ug0G¦*,]Id Ad;Qs#cE|GjF".@-NZ< !`*}y ur1Ѩ>4O||4* TgXf96V U{UQTGQ.B~qjwj[{5{8ͯ4o TJy p jD5=j@5=jz*{E5jz&jvGaWFTlT几'j}Q x*~/YT߁aT\yT|m6fh3X  t<~ x?^r88lVkcz]'wk'l.{i-$tݺuY U\ln',]Q3:+nV Sx_&lOFŠ]3."$==c"qdGx,OYVxEzA³T(mľJ}ObkغUڊ}_^G~3ߔv`ϥ] i7+؋_B_c~i?2oKoc7+|~+œwwpwqG#N==6V:*ž(t+ }>>jgsG鏘̹"])tsF$ Nc%}6HJiL6V?X?*y}~$/ s.V/aQQY/ƜZv7їqqq_J}%=43bΙL@p& 8 g3 Ι ΙLNΙ3 ΙX:eysB s`N3'6 J@~\~U?$.cXB, 3r B Fϰy{WUːy^ƳN^.Xδbqi`Z@0-'| GgŊ8B#20vAcаt 00=P6lX!X1$ 迆dC2+53 ПUR l6m00tC:+1d2؝AA3 8``l2d!ngnv@p; n۱8=viqӘH#MGhܣgd!TZ&(nb?9k/g{9 deQY ,-[l2Kņ()~le6]1*FvbRL,[WViP[ ?<9s9Ӣ *,G)6iSPT\, U"~ )>`LůP%0II̜t PYAq%RYTV"JY/*/je5+s]F*?R~juˈ{yEy[_U^nR~ fl}Mق+X77fÔ_*{0-e/U~ 3)poUaMaD9|O99ǔcq8y_9V!V;b9WfY!d<Н{ y>+Hx:U„&|%,a#Mxp> 4+|r>Χ@i4+">]K|Z &73ljď'DbƓ3Lx1Čӈ#L="G="ߓ@="#OߓD="<@=OL!ȿ{24 M&320X9q5hyi, [vh<>0`Y%ӈsF>yV.M gZUsl,Qb !~Xx ¿~AbaHGCa9 FC86;i1yHUU6B^~1aȇ o os.>T8$B]Z4X>@`T@ni|$|nYl#I s9hmq6=tŹ܋y#/ȋ6G^tHhI|3~P|6;~R7xsM#:HaF4A UPԹnJe$KbСt õW"ӥR>Fd$' TR)Õgg0듑s2l}d8 XaOR&_R^reRBd2(( DȊH"e2I klQ~T*[1 >K}RTvb("$%I*ryLF+(`&$%cd44XI)"r]+xX@~9<2)0[\Ds/0 /0o'?,_;@(` bH>7i &o,%O&OHLHB &O w#2{ `.y `NBvB6r\r&f60( )1<Jx m>0R_IwMz嬈 +s\r.L΅\G΅\cA2 v1L ÊwVŘc12k0cl؂c^0b`B`? f:MCbA|" 2F"F*FƐ9ۂZű)OX} Ƥ>kX_1cV4ih0">՗b˱ZtYlH F FFVtn09wGz]2Us=D5Vˏeԛ3>l r3yuZZОؿXe/@\ۺU_b/&,닗Wkk퓀=:&tg|_VjqjnubV{C7wQ'gSgs}vzXV:zLĮap!poCG;Ot3^ݞ'Nwn'Ujy\V<ҹ[a*=qs*5 FjZ΃'Ry y8 0j{u/^E\虁[c͖i^Mh{|ҳVj>{^^Zt#8qu߷Vkc_՟a*VqoX>Tj[gcv3GdNF1m1U6ֵ77nn ;=)6Mm6lpO|E#+WOh8۾!:;j~m)s4/n־=F} 4v_֨x`َd;NS7Ɣ k|9$\;b;okK`#_cr.'.K8:p#_gRm8rg:&GQ s@vQ ~nk:*6:(}0PҨ:Y,މ 3yWr5ZڸaE%P۸POm`r\zz }70qc?4ѱ!0qcO++XXﯣsīܛZ[iZoV>_UjdoƸ͛uFTo9R *IX2[1[gs!ǖ@sQcWcos]/:|ss8NB͂\`Yv\ ,5':t]0Nv\WͩN!œ3gj`1ϙ`,tQ̹\>s \,l s,<93s&<9? κ\N8 8kl1788mSf8kv9= f33 QRBpWs ps9Xn\opKk̼̫y-i9v]68wSʹҹ׼ɹq΃]g3w8s'q?vsWszWq>7\"W?Jϸz=2weF%W6ֹSK7\&$XeMq`iS*X_Ztp(6e&Gxp-8p&DhivM:۔u52gAkSs+I<]јpYSˮ4պ:+&|Q\s Su9MS]! 7Fik~4]ԢfR ]+5PW}p(6uV4\ G(d5BLh r~Uk-i`>-*g#f[/Fc; B/,p_Ц*S-/(,C,+;d0 V˚(YahyúTe}Gpcǐh:˖hl([vuGfoGYˇ݂y &\NxrcӸWεVWGu|n٨ƴN$]9 W|I+YlPLQssubyυg3H C9Fp$ 2/ H_wi=_<)kg#e.8#kLj?7/He+8-o^4-&syƶ9^ފl]Hdĭ쭀G?,~KhM DzPzdeEv;Bw "{͌G~*^*#G٧qX9"SM lhUhE5TCb1\B%jV_ umCGeEy䲹!C][͚,Ih&+t(r:u/  H&t"JZHMDйA!7;ߚPCBYr4O ] kC 6t3Z.BUBCD h95 \8Έ*"yF=\%&7\5 ᪨M^=ẨW6Et}!s8}BVlp$lk'ۢas@8F 0s:$\ u°.wG!C1; =kWvI{jd=#|Cg'tt^K\ޮg#,Լ5ׅWKvSN9{c]4%{S&djn˱Ңw춶n.tk^[cnlluC,Vm;mδtt|i[ۋwɻ~ݥm4z鮦QJw =E'IqB9+zHJcw|:}(H>&l;緹WNo\~mn뷏mӵl ,yYd!o%25Ȫ#l2yMa Oq6}<ϓ'EM鄺$#6 $3ћ#Y?HksF6-m7yS}ҥ='.h -yğ$eԉ< MbO+/<ԟWװ*uȪͬV5fmj/;ؗ_UVUK}/'GS)֣>aKK_slV>7lzI}M"I$&=~+ٿMO;$=K'nBrד&<'t'd%% !/I3 eI&T$2^k$4j~s ?N;^N"I6xݨ K-u$n%-usRS#JǤqT͘tVK9a!W7^>4,r_R/0N! pY|fM;w(]ǾGMT5cD_==O;c؟-w8kנ&Y_$HHOH'KH 3  Y*,;*7`%MůbO@T9ʉ4iwvL89.8.9.;97%)d)U@dKyRcA*ʥ*iT'FI2K6IRXꐢR4(JC҈tTNJgIiZ'FiV"]iId8:Ӝ(ͿPY꬐YqSwHN꺜-Ns6;a#b57Od%, '/DRD> !@*5QRC^Ƿ`uw"M$lJÑ'F|ď_\no-  :гeAo=GFr'GGr7Td+)$e br~;yza$RƬWl_ ǫl9<<<~Yְl"̗3´=Kn;HĴ2d`t=dXϯb7Af| 8ycƈ9p柈g柉$v_X"i 5sk^єTj*_S&(߅4fWHƢJP/KGc3I f/1xFqV"^%wCu929|GQv8tzFG!8\cwpvsv:9gS󎋎9UǼ+5R.eIRT,IZZ 5H6K$Jn)(K]@NiD[݌|G)OA)I4PQ3P3QʟA)B)F)8JyJy.J(y(@)G)E2 Tzz1'QKP_AYeS ,)G4_02 TP?]GҼs(P?Ҽt` t~%:f7߀>P6FfJs=3 rL1SK74oFMk{Δ>XdG rW Tj2LTOer֙+=UZ:ebqp{B4xL? ZGl4#P+|*q3%e<p=f"y'G^ߗz{_ۿAe|?+}e]F}QJ8=x{gpxGL|Vχc;NzO9x>IT<1ocr]q6h'ۑe9_غϽ<`|ЖMw6S_ԫ=L C1yvCK7|-_tTqtlgo?,!j'žԶAޝe1vMq;k}\8 v6 KM;kNη}7nmgOs sl?3ge΀_Mk;=Tw}m-I/}ѹߟ};ώ3֧2<a-s^)k: esb 8{:('<>L7|'cp?ks3FrK 6 ĞcZJ;o+}xuZ^9p5 # ƸDrM =O}.xc iuW,/M ] .P:^͐};!T:IecLKfJ܄1O,Fm)mkP_˱],y#b1{жh<xǓ*ݏa<7 ͓*27Ơĉae,~Aוq2h,ʸ.y e|dlFc\+.Ƣ}{ieN-?WzeX.KQ[G\(O1;@Pô5.k"^\FWP>c1ڭ3ɀ&T'\34l sY A[s=Z @KX0fם@E+ƶ~j58N~6kM Էf6-jҀ"} OV:=nzp>ߺ19WkK`_8H (-c~kg`'p?pƀlsTyG }t[ZWц: k[Ʃ]j[US5)s֫`A`1[2ctw4uk<k)A;= nZi nv9wqPr˂nwe0z^lw܆`ﲬ1ywCpqo e%G;HȟO_Pɍ{-ɚiͱ[ kuZcYo6sK2Ys(-V#e[X;=~n>Auqz:xzz:e*qzњМuzzzצmY\[VfZA ɶ٪DG&FO lO95nlzASI<} AӉ@D424< }OC?9x>yx < }OC 4E< -З4tn)W4OC_Oih9%4P%~D?gZ<~fI gx&<3x&3Q=6bbf&_3<AӿG>}҄goL-UkČ4آ:>@D]dHtܓU rrrrͲtr&^%s\d$˅( rnA BZ3o83%*7K 7/+rϧCeE_ CeE:=3 dǣ(xND!d'* @=4i[z1X z? +d0)>+ǼŘ'pE_u&+Z/1E/*'1I a4嚪(T=a)\IRb)oRhJz,uL\퀒Y@6JAL%7Fܰ% qBҡPT&Ǎ|S]tUhHdȶh9ЙdLƞe?i:%+ZfYR 8-W$ƒ[™Zd?cY,ڇ/=HIߝe2q2idZerSK[\&{3#nc+~+ZA\)R-UzyD&Ku W YS856Rfq2Ys9p-%e[s28ٷŠ|[+QvkTƬ:*Mی-rV{$X喨L*Mg( WpL[ݠ;%0*k2dmYZeu'{غcA[z xIܱN@Z(Ͱbg-Qa^^∰+tuF5&Arк>mȕX7ۈʦ%Rml[rLB[ W[ hU5f5I&Kf:id¶[Բ֧!۠MYӢe]2mlCvV:`+jO)ۤmjr1@:J\+Z$Β :W:`E;_W523koU6oxWM R~ @m+\3Cx wlyAu~QGg싖%p~gS2(Kqƶ, ^s^lbXj+jPj9AXmQ{5e+ mM:.2"nX7Y!wo[,'|P) KT,ŎOۧN։|i/Keᚰ ܄>NB"Լm'vϞ &trTسA~ye6m/`X{ʾ6i&nq:H%ےkCaG}>hek? ؇FS/y'jHy0_aI 0(1qx[3o͘MeeԝxHLs2t~H/<t^RpY5gT B7 폆`% Ԁc[+G  Wid&Uu: 2֛U`au[o{8`mK 2L84}&} MA{W*Z?Gc$*\釃*3fԏUtJ+U0yҥ^{б\'EIYpMsY*~4ץ@*Ai]?]>h*VAx{E`~$~]^Mqs>-۔xaEψ2$_sm/vIIN+,z}փOǫ?I%mAۅԃ]z5e~q faHVrVѲOS r qߖǂQ|mV*Xϭ q5.c!+벿l|e0SR[c`?  6tZY g ^Š^(zTh;Ρ}Hl6pnЫ}Y֭^QeݏA ~'Ul ÈrG٠v|:>biCmGӜ񀝌q62bN<FoP(6tiLD)Y1@1%~aIclEe{fsOK 6)]>z3B7l6mmmPg^(Y,n޳ؖ1*KJ;/01;LIۢ@6 ߧ\/`lv)eUq[+cA*Pue\8b1$6;j?:iwXfޱ9Y[Ize6/X׳-ZWWd6\W)VN,)GS+FEcFx}36˜)˧18`,RP* mBI #:c}A=FYߌ࣍-A=1=牎a-8F{fEeGvb(l㲜R_h<8 R<ࢼO0^8/70ܕc@jc>Fm ȶ)EwĠ,YLP Tǥ5 h; FS)yEIon)Q5oJ cФrrZ()7fM%`-`4llpJprv@0 88GXJ_DӀ 9%{)5<,p Q/5Խv>7?z/}$MN_7Mzކ^}Xߡ]!~LRF?K;֠1h iLD!.*5T 5ްQ?hhZ : =~n>Aða>f725L. W q1Řn2 2cqhסɸE4UǸxH/+thq ȟS25Mm1ɦT [ Ņ5 ZŅŅTŅ4ŅtŅ>ѾBѾ!/k-Z֯m#zmv6&_Ҿ= ҩ=__8q&q*c-U%ZA]\&w|AX\`us(ulG߻tqV%/&...]C~YtSw[Oj}L }>CσB(֗uUu&q ol$hKD}][KF}K`:ȳZGr[[IK!q8)о}Γǭ3wT}xHsQ̯+ꀗ%˿~ॉ|{_|=IX^ra;RlY*ow@>M#X[>tabU̗ɽUmg)#z ‘eǞ 40y ^%x'ޫǒ1Ǟ<c̗`TU"˱,G*^-ūV}Dk 7<8F⓪!,yaǰM ˉf݉l!IuXlXD C)3`ױ|sXGPΪ~Au>_cMSUY!wQ5c;oϱ!~ 1)j-*:}ߥLK*6!J|o)g*%JLYx;ȟV}WS^8sU55R 1{/P*Wkvo`5)|y/rzX4^Œ,'1{ǃx0fJNXW1_̃bN6ImI!$Tŷ~X0Jfjf̆n!jLd[im7qL/1XnӎEo*h2d3ij\f8'gYq_Ym5fp <l._)N=⭄4Wl6(g ;JT = bfwy5R f 5d{$a9g}ϞVb l:lkspIe'${$\%rXGds^BdQ;*xG+JZ<Юͽ#YUg}<3o`yf J~v} Ow9rw` E<V*aafbו2v劜S|^ \܍&߾B=¾Rv`5K,^hI ~p؞y#jl q e Dtk!Rr,U|U`תgo*JaY?; gT,*,).r+&˰ru]LBE֦/nh{b:^D69X'%;<=rB;_SUd2LC5&ӷ1_ w!]yP| S\!cjas}N'>c0F!v5s|7Ztd# '82|.rƛ(~fNzDh3h%u|meikMlKpY%rzn<K}ꗭoGbWs >|; JlLj/s7}}v0y\z{c)X~.90_Z#L[-݉Ys)́m,{MwwPxo<gR`jZɑGc)81߇Kaނr& ?felx[AΧ~cå0V׃+ȉ KS,uc?18,8S9lHUTB^MiuhKXD%Ryֱf~`gGm<yl`#ONY<[mkOҚ:aziE<$vqacr:6ޔ?Hl>|Nv.:h|uZ^}OqUd<ٝB3#491G~*)Vzh»e7Ey7\&ʝH$#v\L~)yOҩKv&&,&u"zL-o,riƺ(D'sf:bA z{j9=&:qgY(Wk5P]xTAџDN^3A(}y"qs^UvO&fٗY;,guoL`O$繨<"ka>;N9!o|(nk3\g '[}bn$o1үq["砏erF6U6m .粗݋z›rd?;#$+d^^?= w/+Gy"Qӑ'܇lF ]sUr_ #Թ;M:2fW_B9;E *g/l;ֳjF],S&¿ȹ@>)ur$`fO1'-'[ 1-Og iݎN)/gv3cJK[9"cː.םrN77Z@<$w22%3a gaRCN39O9؅yyAfV^&8r[9,,N:Te[I$F,pnCG,9_~4s};}u(9/)绗d+뻱+.J_TG4Sśza63nF7̷B3F>$gO?gm|f4_r"vTr$?;VaWr%9Qtw_nە୫ܭ$*_ZOQ9/>3д[9ۗa+0?f0)©7UJ3l- 'a 2 !;^bd <ǹ^ҏ9r Au2vCDNlo)$HrlƸ\m4e1/7S3 oQ.frȓ9ҫ2Lc6H`x}#,_cYYΖzò̦G *1ÇDo-9V(/|]y~\~ _C sqpY]+ ~/zݣPވօqNzZ dA%4C+bY~kĝ ry<{9gᗴ Ǜ3XY#r!j!{8]!IX~%OăI4e&c-S_#qlc=4vs!nnWt_4ޛ yU.$Ƃ&#҆qؾ;Q4xJvcs|.%6,4gq40`&lp-W"ӓm-{!_Nw5)zNRNߟ#7GOU0B5.J"ۙW]f _6b =K ?c/rCV]SeL7Oˊcbjiyl': oDc)賠)ce7?|&^Z u  /`D;fy06+{Hḓ4 2 MV y~"VL#ohe6 K tFBB[WN1+ p@L.=ɧ:Ũ+-/2bhFɬuGIGi-'1XMkZGù. TiVzdLDVe<<$v7Z0 *OÏ w6L"ow{ 3\e7zV?Ž6NwYnʿ|N/aef ?wk,Sx۰YV4dгRKlBoPͪ=S־^QǢDz|/z˒w={)fHYS{o3_kyrL&Ca7t;ɳ!9.%?ˊ ;߄xmIj;NnajAβC^Wp)U>IXonGMΓ10ry$XgNe,>龎Զ -д {-U΢/Aǔ`9xXBwL})=vc3xӘk-SoȷS򝜋[)r>w gOPy͜mnopv?B>Yyꫫɼ S˿GY1DRBsU%kzwӫ0X;'>~x a/z~9ˌ$cf؈ȿpÅ&ěTۄ^e BhG!\dQঢ়Uй}4< 9z}94)"K#ZhE&A dҫU3sd"b[&lu(DZY`&neL{[$Y"EhO_AZ@|-ߘou3,[N?#~L"u-~T?j9Io{`O5u3--Fc^Ï3XW3WTw~^_)kYKUeԿ:6rY˺eBE>2,!I!yp̻Z 'eȽ@7}UOe{ykˈF;sa',w3a) e#M >?[D'D_PJi@.Ӌ#_M4֏v˅A* BçvaZ+"0 a"ruZ?h);iG%#O,-o#ogD"}axȌGL<14`z5r;J+瓓U+&w͑A* ȭy͔v8f7_JYC&'I7k/i,LTD!I8凫_O]NDc"glɶ#dRŬ/{Q$⁜1P?wyHM)Mx/Ϩk?O+kK*\ܚnݑ% X?bSJ\˭Ċ 2qz9*Qn%rBexA]ȍk B?+A,d2p썍gUZZ̋)d>?'w{kw\dg0Tv;>=}1uͧh"ԕa܈cS yhܼo@Cb6a>]TTdMԆGdz=ydV?~95?臞=gͮk/fP?nZ ً֑y9y7TH- k̄Tob0T{H=ްGf&Rr 9 TڇOp?`WZ+#Da4DE~ p7!S`w4BhuKZ?F#Yp)[FoEψE:o;9+ޏxchjvW ''W`Mo!65 X“>OazzmD"g"؂VFїf\=F"t35 Vc"|25pynBzКR8 6Lyd*ߋM<C]Z6WzWwUOcGs Ƀ_ƛku+ B(>!ߌ"J˧3\iVqW 9]K뽐Lr\>Hh3\qzP[|p9R5eG78Qž:\*S4[ru*P4ռzla? {tH̆&y[(喙m.}im ,'" 7:ۤ`S^ @Z9Қ|֗P_7AEk|c./] > rgY[ мY@^ |дќG߅p)B96^a4:f#D^c3yS 8rdUhNFh$_a&0#D̑i)T_w7xChz_-)UkEkkIKbP4ϋ$"{3L-)fZIN*{/g|y4H F$&\kre4H^7$p>M d`s\OT\a0m W!FC2,E:`CURL)ɘ(wÉp r-RcIyy%sF{bЫY,s0IМux'va\Wbȣ\%ϖQSAļ)TIx=Pv^ٜ*m@ ً",Mñ|Dyɽ0wZ*92_=e272+/-4ƒe$ɿICn|O;XKo"79xl5Wn7oZ?oY~۬ʿ#PJ{2M5G2M=HpT+7"_\/rrZ)&N"%GAv6=`#,wo$y.E!^Lj}%֌`H'{TdQXJT u*kT3ZuQۭ!5U RXXl_B%TUE]&KuW&iv8cT34@]Sm|꯴YQ={jz\QsT7ݘyC{s5뱡jWՍSUKRt5T Wj}.S;U;MVO/Jx=w`WsF}p088qiI\•pu<w½cGy0<Os0) %aYX6 Zl[};P8op-p&|΃b`%\7mp'7C(̇C4XրYG7h`W -p 'lF<.+:ٲq_<6z)x^&4L٣i0fjc3h [v i\۽'i:/2$?f`w ''{v+s/gw~353W?So7$ROWZG{*UHޟ*W?VUUUg9'g^>mwjZ6*|/ͫ5yo7[6{{C^uEUO3\T}L7Le.f&fYjנ\+լV",_}vޯ>k|E^?寧KKN+ZNE>+xJsE>w/KXxi{u~Zzl_EڧYag 7r\WU⟇⟧'Z-㟝⟽.֌KGYɥ%/ BVVύ|U"OF~UeVhVsK4-h{"Yl2=zm)Rg+/(\ S;GhՄwJyiOODm6ʏMm/KV#(xL ۳\ƞFFy*W^!FCN=-;l)+iL{Zh`<-637'-]~>hmvRrgch[[s?sey(><[- ەxo$t&Z%N;p'e-{hKV mgYq-.KڬY5R;ڬo6ƴf({7L5livT˽d/ݫ߳Grw7F=fg9Kjz;UyxRyPSuzQ_Pst]FjZ_^5uM5O7|=FUx=^m6zڬӏ-zrEU/6SV4VIִSi3?A^V0$5 x^`l0ֻ69^b7,XqKLmL-u~KojEFhM##^ьhi==eFDϘY(65ќhi͍ky<4Z-0͢BBWB$E["D8u A䡃#"OD9zfQav_. =_='B??z  `/ `80 Fc `f_`l41Xs9ޜ`N4')Ts9ݜa4g9\s\h.2K̥2sdn6[mvsk7CaWy0O̧3|i2_o̷;%,-uźj][7-uǺkݳ[#zj=[/+zkE[^2/ ս.5U^?777 {xzy{xzy{SxSzSyS{zy{'x'z'y'{xzy{gxgzggۧ9.|"Gɢ c<"LԆSg(mD8\C"FQp25[)oݠu-B۔!jy hn0cnJ|1sc3v/yVuoH30?ArP \yd_񇸐܉O>e'pi3QOAbTco^ycQŵGcEQ?\z2?G[iK϶і%p`rsmIx>/AyEЍPp+ C<gy;w2CjO2\6M变Ysf9f13 c6y iv-~vGa4+FakaJ<^9 Z8&昈5Fmuv\~ȝybY+ЊcŵYAV|+J`%Y$VR+JaRY4VZ+ٶח(C)cU~_Ci2wS,|)yμ!*{UYn ٹ,eYZdXUHAӲz,2& dcX3ξa-!k~ܬ#6 4my$tQt]x7{>|h>#Dl(E qEz)2,Nb2Qhv\z,= ҟY|, b ]\?DA,kkK2&,ye,kk+:ĪzS3k Eޣ6.s|l, tl;; ql;;m_?c{_b{EE>w w ]]pscUU!w w vc#ffhNFSvhnDF`bȞa}ޙܬͥY7&Zy1|k-8]@W\Κa\H&;nŮ*N?bee2cr1K\ʲQle z=HO'ѓz =JOz=IϬg}zUƎ;N;ΰ;.̮n4\/+ZoEx'+4tE4Ӡ+Ģ ,b4iFK˂ōEP e(jAzXbC8h%A$ā]!1H}4,1$c`IA2zj ւtL*֞EAj։u>ݏt'6ҳl0d<2a^&l'}ldr.CNhsaۜLT"CP19 P1eP1VUP15@G.T<ߠbk1 1Ø lc6' q8 A jfgH٣'302<YǏC9ȁ ~r"_\ 7n@[CNmdǗK|ྶGW±F ]Hˍ[_%b_czX Ǥcrq Rwif4Xs|0 q-=",TۂPG8$b.G[@CGQW"P ~\+zq?gL_dh{ekis>L|ίsYqx !xH'rI!7x 2,!E qI6"XھB1 #&/vN ~j:kj3/μ/.ƈbz;u1hL2&S4cn0v ŕPҕKI6^7[#xg7_!Ps9a4GJs\c5י iy޼h^6͛my|h>+֗ yG+M4K|yyst&dny̟1חB]'P`)0 g l8N"~>sSuG숅f=Xs]\=8Kh~8.`#qy=G^-g'G8^yLxƞ r\~{ns cN.\~jqͽ>clrdȍ96.q9πyFh 3sM' D=~NzqɆzIz)n.7 .g?1J&pGܝ 0O *=OKl`9^zz7v\ށJĨ34CV~bǙZCC?s 4# >RFaAiFH0 4# H0 4HrR"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"#%H0R"ȇ||ZHp=Wqy.I>{pQ\U3b<.=9}@ eUc쳼N'6]$8hP:>Ǔd:tv BC|FvMjٺUO+e޲uľ# Nfڶn׺qdҢ۶iݶAd3F _2{t{xDfMZQV*Zؗ87$$˖5k0[ȹy} WTOvug?~{Tw\o:Jyb[ϯ.>l[S>'*L^+ˢ-,:ЭgJ;\̳C*W7f߼9+ GMQzĥ ~Q#< ;~o۫6k)4A61/WY}ٳ*+ӇnK Ɨ*cVEi6iIVțxܙr^$/[b!|)bͫm&z[45YVCFE?>_FI'h}\7,xjB糫Ezunn,5bpQY3w.[}[=kw`ajʻPN- u[iz2SÒ>Ňڷ5W QYqqtϮH&k,~tWٻHw6U=\8ѵo =7tT_J4?0?!SܘP-cӠt 79RaU/OU)Ƹ՛7K3,ښcj Y!U&]DV1VFĨ$ U!QJ}BUU}ȑ_bpث䖨nCε>ZtP)/bxZEɖlw _tJP_?N-./&MU;.~p,rۜ*mSɣIr H>6lξ.L][[_y곆ZѨ+_kDDE+4\z`갳]}\S r´; n_uS5Vؕvam˪ {WSަz~egcɧ-2jfފc/J_5{eKL{O`x7qp?JǦ ӏS֏n$m?՝gXSǓHHo N(+1`PAޤ"EwEYT& XBEM,{wO3gfg~|8N~~.^8W?6@E%OJMj)aʜ)pꆬ p $/ruI.=\t?;-5۝qD{X@0`uEmtڠūӇP}g!&~&˶Dd]sjH3MI;+5ԫjd&^va kFoCBmpOa^lRo0Uwy '2 9ZY{གྷ{RU9DʍGbdz4olo.'c"c ] ZC0{"SۥU96}zFR GC"z,甮֞ʲ#5B"!ٜӸ&5osH2}!6&s7_eU*Ǹ{6@!(i~ }`[IBl7)Jlkh,HYz2"2Z]j_dЧ!kRXt">/*'_I8*|JhK؅fw)}[&K#|ul5\-O(} @O@h%jOC\ٲСXw搩Pp`g-'~mHܷB?75Lͨv4aEastdN ?0yS#gj-'I5rz EGNeUðP &rN϶E0!7swݜVsQhd!q; +!eRh %rGBDIBR(^EH|[@˂u/f5 5nhQJ_Idfgpyse)÷7}5,NGNrl6}^%sBFDߴcdf9;oAW>S^k2;@"@deD Pj]>:L[ j-U(g TG"*T`Qniѩ~bm&`@Mݸ0e j>]5{k_,m;d4tTd])M8SMi e(Qfհʒf:1\:gZ r&7`;I󙽣:Fvl;S9xxeɦ_&[A¹U#Jɇo'6.|G?Rģ: A:נk˄7u }*`oQ( cִn-/fPq}@K endstream endobj 10857 0 obj [ 0[ 507] 3[ 226 579] 17[ 544 533] 24[ 615] 28[ 488] 38[ 459 631] 44[ 623] 47[ 252] 58[ 319] 60[ 520] 62[ 420] 68[ 855 646] 75[ 662] 87[ 517] 89[ 673 543] 94[ 459] 100[ 487] 104[ 642] 115[ 567 890] 121[ 519 487] 127[ 468] 258[ 479] 271[ 525 423] 282[ 525] 286[ 498] 296[ 305] 336[ 471] 346[ 525] 349[ 230] 361[ 239] 364[ 455] 367[ 230] 373[ 799 525] 381[ 527] 393[ 525] 395[ 525 349] 400[ 391] 410[ 335] 437[ 525] 448[ 452 715] 454[ 433 453] 460[ 395] 465[ 422] 564[ 564] 842[ 326] 845[ 463] 853[ 250 268 268 252 690 250 250] 862[ 418 418] 876[ 386] 878[ 460] 880[ 386] 882[ 306] 884[ 498] 890[ 498] 894[ 303 303 307 307] 910[ 498] 918[ 221 401 682] 923[ 894] 926[ 834] 928[ 507] 951[ 498] 1004[ 507 507 507 507 507 507 507 507 507 507] 1081[ 715] 1085[ 498] 1089[ 498] 1092[ 498 498] ] endobj 10858 0 obj [ 226 326 401 498 0 715 682 221 303 303 498 498 250 306 252 386 507 507 507 507 507 507 507 507 507 507 268 268 498 498 498 463 894 579 544 533 615 488 459 631 623 252 319 520 420 855 646 662 517 673 543 459 487 642 567 890 519 487 468 307 386 307 0 498 0 479 525 423 525 498 305 471 525 230 239 455 230 799 525 527 525 525 349 391 335 525 452 715 433 453 395 0 460 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 834 0 0 0 0 507 0 0 0 0 0 0 0 0 0 0 0 422] endobj 10859 0 obj [ 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 0 600 600 0 0 0 0 0 0 0 0 600 600 0 0 600 600 600 0 0 600 600] endobj 10860 0 obj <> stream x|y|T{$dBB 3!{Dv@&N Yl%.*T%ZTnku,V\@ryg& W>m?=ysY9&@ UP61 i3Q܃E#GVn22Y p+c[?\TVWDe~S{&Hu/[9ҹuwƼj}Kyty˵DyYr-(YՋP4A3Κ|ݑ?$*;CR3HjcAWlb=oO{ Q̹)^3귲U_[=#Wϫ] "/p/ZܒD `aF[$ѕdN%d쳡a6Us[PK?xۅZYAUDhT|2K1n РMA!Wi5(H S `8Ai^,{|lkR.kru0-%͒ ҇BTJ>X}o _)NQ~정$G5ɥ&6mƘN~Ltj؇ A;@@zI"21w3ym|2ПEWsן+[3|tg‌@c5'b}KBN|+tc%Wi$5:H::c~O1|ڏ)M B0ϳP|aFݷEK\:Ъl pD\苧0R AR('sfXcX)?] %BaI3=s!ʧaCǘChe0f|c皇8Vc1/a40։ٰq<s-(5O,x{ݭbx7LI@h<-%AZcv0;|e6=E/Kb(Dq=f\%}QxH(iہ^3edkpS>5݈vSԋ&zzq3.OSe8)dm׆;>z!uu2 "4.zBY>uuE8u;aމbR.)+e@c&=s_FJ\K{(pVFtD* kQ`1\ [ psld &ΐ/J!q(nm qϕwY ·µHj˒œmdk̷@lYN` >'m("^4)$pm+"($FFdJy"MtBA.c }Vf~ܘ }d8+c:d(~.-%"rqI<'N4'4Y!-=;{(wn NpOqiyވgŷrCr[o8ҿ3SN|C(V0݅;wUX[wq;JX:Vtª@J:k3*[b^wqiyw.ƋG!#GNbKIE ٱ#IV "O=̋:|Kh9f+^i.Fߛϫ9j.B7*u\G?{+ =Li߲E^zLٖѣ~H?'-|{" : Gz"c7.}I-/ܱCWu%XNߠZ[v2lYƵD]nac^6L[.KwC' Vڞv?_^Lr>Þ`;94U: ֧]}O-Ĉ]ۺ7(4[<(< ܣsXO.n*\1J0m'쬜21B+;y>N%]yZB?{}ձד9H+v؁i#6m8ȑM )w ۂ3z)p=R`˭Ѱ@NW)(7礯 0 +%bcɘ6#|D;q**ýpPxa?S;Ab=?Og#@bTr]ޅ l}37a˦G > :3?Ew7sRK<E 7~ ԕVDaL/` %O@*W`SOryO)Mݘ.F{y2j=0b'|7yM?` 3o=[̉X'*{O|Yvi8-R[:sg.l pwyb_bq j̲ ӂ6Fl|s >GN]o+=w1kYX;D2nϦS1~.bzdT ]JcF/ ٙ87! UŪE].ou 8qG?H>Q$ n1/ns3sGhꊳSOaŽ;5G=ߢoc&f3,8'|%7#,~z N zAr*YiWc 9/F,y+E?M(ܟ`O<21ZIOlat/*%~_$6A\5ǜOC4\F\D(4|?1ڧIvbnlxs)c(c.Bp0y?q+W$mz%lzt\lئMg^6Mަ{~6=mz%lz$HMo/ߦ'MOf6=mz*_l/6M ܿem{/rEZ و`X|X(5X m Ux',Ke ^GnƏKa0f g>7MLT_8'4xѰ,E TgYo;TN_Q^V:yUsF f:d]e"3#=-5%9)5b6+6gtݺv1FudPA֑. IQ2廵"\Q#;.fӁ3/tFs6egf f@$&DkYc9lHHX,(a.]`ք\\:Uy Ni= EJB{BZPZ d45F+WYXgTefh"uF<-*P>тVc#C3dkMJM:CosG1m5qj]a|Ŭ5lj\U($tՍ;d/PY}_j2uY Yg]€ӨtӫtBs]yբY z7vb؎).lDDԶqPqikw Y#hL<ÌTZѐ!jP݌!ȆJVav/kAF,aح_~1h03cirhJۛ4/qw3MÖ^).7ңB wY1}uC Mj2Fw+mD\K/.Xi.sÛ/}Hk?u˯THS93qrkfR3)$ScyftqUrS{m߇uxP:6$);Vt-"Q KĬ"\n:a@ZY0VTT+Zy,Kv)۩l]딈*9eE1GZa!{p[̉S2[xT.Nv5º$Q d?_(陨&Ɛ1;ׅ&|_R銫+O%VTjܽiFՙU'VsFʴ{ AM23IV FNJ 0nHRդ.iUWY&׹jei25sJB1yGb+i5sU7k[Fk]F-(tiq;0/g ; ByVqFlbeE(ƾHl6cX5V tG 夸fZN5phq8A3_/l*C2'rـ,@P. BϻO " TOo@p "ڲS~"E[h0hIYkTANV:U BEP 2? ި'7Ѐϡ 8@?wƕl{JZ@NM8 ^;Aq9.N@kK8Aak@dew0zmgۀ vPsx&l꯯_ƕ8x3h:C@b + ;ksuyܫeOG~ߟg~~~?ӞitK#))Q }L=h^ F }/RU&8mS,7N=r?O IzЀAOXWsC &~ `@M(K;Pp؄y mnBMȻIɌz )p99,<`#`MU_PoR(S<5&iAOG :YGPJA#,MU'zSOe1E^C|>fR>2|P0!yȑ&QZSJf+i aj:v5~= jdanfI&-oo}EdUhtylX+{V(4XvsvR{Qd5 @ʷ|;!vo|;!o|;Yo|n4su(C lP`X lP`+A lP`c6(A l 6e^B, ^B{! ^|/{! ^|/{!(0;0(3P LId` 0c&@0cʀrC?Z7z7Yz7qCzf=nqCzܬgLSD蒋eP39}3 Lr&rLP*4McMNhrBU MNhrB59 MNhr&'49 MN&'49ɚDd=9c@ P i s$`201J 1e@9Py7X :laA :lac6A :l6Auؠ6谱/t:/txY:/B:e^B: ^BWPVǕD/X-jhٌR53++$+%+& "#$%"ÂUbjWfALȬVj؀nFkP ajgY_&ꙁ&މ]jiAmJ#6jL ++&1'@PdY@2$f h\ͺv uT+8Pxy=]˘01=K"-+tDN+*Yi/h #o^9yuU#VG殎:rHfFGc[2gTlf3sDRX8 Gx,Nx_z,mXvɂIlX"wK)Y@x3=+y,rdY etrI 5="<͜ɴВnj||^6 l7eb2|1º7fGWB]!Y!!i!I!}CM!}Bv 5v  5*ڽI?ȐOl^AFEՃ RDBWe8 Z7X).T<ݬ}Sfm&jA}e 1jeɕJ2Y!%T68sk3ǟe>J(_2BK/_K萯RXhqy:i< ckZ[ K8][*KqS(-VTrʙAmu9~B,),Gr2)u͕J]NuΑ1']JpzW*/ڸ`/aq꿕:Wi<-I2 _&u'Ŭf{Fl'ŚGX?z n1?.㹜H_S8/𓾤U #/J'#•pxEYJF>[@XL|AA)Iq$c [_) }TFjPK (YF72a˯u~"6z\tO> ԛPM|fC=)@$( IA"tV(H]驾Õ:Pz2,rBzI1@ J2EU٠cXeXYC$ "M8D(!q\]BͧBCS qߦ B3[ @yQ-72|oed QhEWe:@-Q'+z1aaGˀ{Eu>|6}wdlB"B5 ސZ V)'֊Z xZJ嫭h/mMEY3$=#=yϙsygf' ^/]@ 4 fz +w ߄gq ~([0'qB`¼IUft;pChp.h|_@uK 1W0^~~?Vw҅ zrqAWN^]}&4 #)4˻a6cNC-0xo? CObL3Y "Wv WM..|{\TYWo|b-y&_o+h pA/ o +8 AX}<~pGt|^3}!Hہsȯ_0ow+ D f1M'̳/E7濗_/~_NvɓÇ@6؀o.,y+-]hοhЫwúv.h8!ʣ/p}/ tz AI;@>g,,@fBX+ bqXcK'<¼CL7اi}܂i5 Zuz;BC+hq/0Ӄ,\~ua/}!H▨kY4^5GTQժ,8u(Foc3cMӇfǛM(4Dt~C'EvIIB"Ċc9U]&tQ q̐uM*3X ǧ|/?ʫAܵ3g=3pc񶡶#0WF}UHdJRR 1>+ϟ:?~_99?p/s,a:ŎZ&-[㛣?Tɡ8'0L)¥\CI`dv|@c_b"Bv"Zޱ7EkL4`)͡h c1F*:h2[x^lac;UH.4f5I:(4@0TTV Lnja?rG9Fe4G^Sh"7WLީH~at:F 1dP =tĪȩtwd5@xY"|fz0̓tL,W3=rΐss>|Va=_Y~lgbC=p!rX6Pgښ&`>^ؿ/avi>-"略4SNy\'*׉*uJR'zZܑdl^\ >oj45=&ZEM|7ȣ Ű_CNSaET8cU^Sc`؅ys&Ӛ˵?iMOSlZk6d!ldd HQ "($^cƳt=^h>y?X*yZ &oM<%'Yr?ǯ"h?N?|[2Ƣqm,2NeNo$ jIdu,td(Ր3Hc"+p+.Z.gARIU Q?@ Ŧb9)X CS,[=Kz!P8kC,VJjfҒ[ NC  {:+#!Z a>U CUM2[65o,2FQb̸l$V(uq|7[pagx[kN:UW}bˆgdv8p礕1L񿛫.:y8ζ\s'n58# ue㾉-n^!|C7KZV˸*b:DڢNsfifD]ag98Fv Ӆ{,֬AmlŚ``kjAԇH:U2kgKT"Ũ5gEY[9R(*ϔD@f-pwD"Z dɗ6k A(Qp5eUw^eLfŐ%ڼ`{rFg}NgK9-%f{^YkŒh4}~eݴ&nc+.A$DvD1H%/NkE!%E+DTTxo%'LMm]`} ypá'tL`򶢑7?ͬH%=# .V y[ua ¹wrJP.LD>17NƠ}-ŢüNX IQLH$09"֥뤺Yu TֺAlۃC0h:}iIںʬ>oefZ1n-TRq娓\r@Yc2wKTt\X4]4#&+ r" " EBX<:BZGHY+raT=iI \j%WH}x [0)-LJ &+ "%lj@Q EUl*Av1kBMv"{QF'%R[ +e5$xgοC ዄ\1qZZeε~2ɖAGG%-Vhĉ)>`, KLM z4AY3M#1#YHID8 +żX8Q,!:V# uw(XX>I,_H.>Ww#?\03  O3OÂ˳3#?WrbN<^Ao -[AY8y͟9ddʐBR(CQu`\J 'F1ү !3RCeGi~M+D9C2+3vƳ{k퍵RMTe32fp\i+sDmagMKYD@Z "`,-i.%Af=Z͙Ǫ*Zoi" OQ^ 7;"4ڬ ֆmX$}JX[9ً0| Q@"6Tqۉ9?g'.?! I "@F & !_%# c7X&RH-YY1Ny.ɈZld\a8J5˿Zs-Zm~kvB >5:;Gt> ex '5fQT6MȁJxjnieKɦM4fjnD5GwQ,TX[3Cx9]K&ff8W**wf1cNb. [!!\fg+ !l1(SBȁRA%Y'ZY_+p|ޏ%3=BAܸE=Z'5{&[ G%`7Z:5" 5ɾYZ[1qoӞX^9dy/]Ǜ.5PI<"XRv1Z;V B*V\bfb~'>NBJ F/гA`ꅊtP*@!ɞ XT,Ib8ˤ2 52* ^iA$3QcPC;6971<Aи*ye>2 RկY  FFM!F"ʌ!(iA,CGrCm>8V[,V  dV˾umNIF.vVPwTi3w;~X_\;wygMmM{|ɃYњ\dȤr7wk *rS@-,.dG.(55^~g4HRDrJ6.9!ltKv*Ph4>lCD4 Oi  gj{޹xm "J=+1Vր @@ȎS:>]nF"5? AjoA„ـM;ÿ(#7bM 5${gd[8i3"T;LT ӓG Tl>@֨t>X,?\\m\[.gV9+9+%C\J8pT):~WN ݥp-vB$|m]Z1Ҳrf5>w %d,OTzKTR՝HK+m&N_y4.1eI"hZF"v!a!ԺCHdܧL;6Jփ d<qQsȭZZaY]S]n)ia?~I7ݹܘHcbl_qy3QSL4R~= ͌Z$//J|Rc4SC7|kR͛x,e%'h'5)]J2)(VD,6D[jy18,5hޛ%w_^l ~p>BĨt:IդZc"]JGӱt(?!B^ 4 Mb0@rxF^yqHW}Z)qo*Pk!|isslh̵~ ?4>lkԔx鄩4LkY_hk`y1Fx#~4ĩ w p8 4P ۬ۼ7Ŀ[?Hh;۬y׉VRm/GC}j]'ۋ Z]Zdz#^.ˮ> B7Ƿ[>/ȷȚ]P룫Xkc6RsYqH֪gj.Q=W,"J CK %rK!3sotcQ2>dp%/6}z^a_j#(N 55qsgYqòDl 4o h>Z*D*.V}^Zy1ü=[Q?ͽ yaxGK7X&@%tVoҍw B.9jIA8 Bd-EAĭU );?kK/+nb^ژX! 3(URB8Yk޳}'d_kKDr| ,8?(Ɂ{+d,a@Ŗ;T0yJ)AkV̘7|" (FߎGѓ°x2d%!s He3}I%UQ&SQީ۴%^hJԧd.,bf?O;Ag/ɆIlzeZ{&`[ &n=1~?w 5h P@HpRS|5k9$*j0F A bMiWEiXpU!mkIjDȵ*%*ZyGqfm$|ܱf߿G*gȂg8R]]h?Ɵ+Vh#=%b|[I'zgčyU#PO[3cS~Q!\N5VAL4pV0;idi|O#̆Af?R;zV(]ժ7h!6,_wD1~78sۈ:Mb/d}Q;ԘE ]TgX1UV"^OZ¶j'zO 'ZheY_?Ӵf+Xd?j"=i ~wu[Kk&o+S"9ŌG<1l?7_N(G7dxٸŴ$ 뤳sXKci,4XKci,4XKci,4~buQ"e -K_4ji琈'* = FkKѢ4ڦ:PpթnWp ܳ NU,ʨDRp2f+Tp Zt-so+U} nUSc^fPD UPCWCZWpy5אyӴ*8̕&Cq-5C!lqye\_qye\_qye\5Spf% O] Ρ~+8K7OXk ΡJQ NڑKj sSG;C?:Ayv@9^ArJU wP?NqYS k} NT^;DT IȚTx̏ +A۹^U׎׎vԸ荣荣X\HD4lZ: zP7h%z)\坔"IBV$͆%P-gwJ@IZX睴TD3 NJv;_y?zAD-Ң\83] Bz&߹JST"nگNJ<D( CbjjH":>pe9B;It)_K珌uP @uD: _AH'y{y!罴5tw[0uG]j'7(ɵ^9]^Al{<y{u*-,Rꠐx E*^:ugiv(<%sעS{я?jH /yT酧j"_2@$]IGqBm3t8gi8g`Uo8@gOwR%\t`8cyGʎ䤞⌎kBqa{5 {-[ktwt,~zVt@˓GkbOW{ʎ夵duX9sQU*W*AY'Hs\]10?gxU'qrҿVN pX4@FrEKGՅ{Q׊v:#w.V',(oݵJ;iH}.Q%brEdvGݞγxڃN@5d);=vw,}SB0ۧVg@ceBk#:&AO5sR sR,x+g>{B(Y WuB✔.jsٛ 83g ?HQ~4Q:.կ&K׻!?U/ˆynFqqhg]k1繫ꅖyCyS1uۤ5c, gq$ YPEhWEW1|qN{<P 3@gꋁK%(??R})Y/OAcyc&fBٛᎂ0_X#Y BMS5,9ʡ,0嶬漓uEM&{O&k.|E&C3tRG ?\3#hr͍PÌ( +6##$#Fj|.FW3 'ݍ(0`7 QaiaIM53|$\3,YG!BN87_|WOBhNəK9Mds9<<\fd"_ǣ/Z|-fK%RlbYdYluNwZuBgz8gr3}+Mk0Uy?HH (n(b`j "! hLDv"lFHF5 7\JhjQ5 q*Ԥ1EZ䒗#Dzi=&xm<;*GF:t a'N#C>$$& #!!~"V 1Ha,kH c.Ɲ;&h?v#(#-SM10]Tf8(.)>AQq];֦qqLNrH%Ǟ1yGf%WB b{޴E؆|?i̻ ϑk*52Pr7^{_|b-pQ<%(+ڎx_*iHӉ:.)kH rXV\4'psq^"q^"UъXΎ_׼W*3.E{\=7;b7p` pދ"[b̿8˓v$sc|(ڜ D\~u~R|Ү i}N!R》#Cac{I3a .⺾+*wQ/Ph߈hw< :Ey |-WUṢZZ?=}UtoϿSZ?k--G\$舓?]WP<߃r$=w%a |:+@6z ^G9E+Nm~o(Rjj*ϑ{+D87.~}N8#J("bӳzK_`Z"ֵ۳ ZVwobG\>j'0ŘloeOqĸUǯ;b%tvtq}-R0>EEG(!o({*.9`|U^E퍯J:Nt$u[b%맜03e$4G<2Jwc%e9RmlsŔb>>1,a20{k1Pe_UV㒢 M{k; 6! r;U|]?wk6^)4-$_i"XhP᢭h/:hq7X/ |V,\{^˸GX7[/z#- uEH!MBu ו1Ҷ ה6\SpMi5umE5 ה6\SpMi5 ה6\Op=i;1Qՠ *wg$pU`+솽Blmfn ؂l(m6gL޶@ Zc˵P:oh(^t氞etm=ikq[]VۂP:`=hY/[t޷nӺk]c @Zn zR& FD{nm<_-W,'vHHH]z X#X"Xg,3 e@tGLg,3 }Ƃ>cAX_,/ rY7PrrrrrrRc5>Vk55cuXiNLk5ךgl-[DC?3bЌHxӌЌ4i3 iFBEoph!qFiF4#7k/Ci[^Hf uC^nIZ#m_5FoEw: 7. ~s inc M}鹖7h`LL t141}b>7}/$4'ZZHD/FX)҈5bjΈʈ#x;jFtDjĹxQ,Q>D+iOrZr/jqMLbo' JvutBZzVz.o`yDJ\ߊBL(H ?DA W='h򶴺qkq89y>,ʣ*Fmݼ/jwTa__6]L_C װc8L+jh6M;^64šG[EBV H\ɕ:9Ovjk?wf/=~׶z=?ѯ_8E@(:P MBoB$ _C_ŚIk)y]O$JB~tãVN9Bx ɫΣKX;grquMBl?ۆc}]ko*^ 1,ƻ]ӻ{M{7o6{/1'êtho.R"MA}o%³WTnJv! ˧%T~XRXXXXbNI*iV %]KY}zM"+4mc=TVOe<ýyu]k]wc]ԝ:Rў(n#:UZhiprWGq5U!n5罊?wu^8Y!ϩ=?=_1 gICgxh,g 8+V\RA*ϕ*"%냽6ZZqS&)^GU.NO3HuNު_m'mw6)v_(FȗO% Joh$SzE<tj\ߑSYqE_LF>J_jɾ2]qH*U9T0({>KЂ'^Jߎy9 G+J6SI+t*U,bh%#H>:-|X5;(:#|+Ʌf~T<ˠz w@ƍ B#Ptj޸>o/^{ihkżHLLuXF|Z]16wx#d|C6v8@-\ђփ>0d ּRZIE$HRhxԙtMCwj^Tn'_ϧ<y w){as~mct-}O[:JƄ`smպLϖ.+Q\mIꛪZUB_>Z}-4므Mw0雍@}Mx%%3 lu}շ"z=|GoB v`ӳ"=?O'S|&͟ 3Y?|+W|??_7;O~Eh o'&Q"l&+DHE[qUt}E(`"Ce/ˡPa9^NST9]ΒsD.r|Q&En;.`aւZE(Йp6bY,F8%D5k`2 &{ qaO'@'ٓEffЀ=ِg-f[ƖA[V@c<{jK^f/CS` {k e;co ށ=`~d!}>9,K%XkC }7oٷВ}ǾXFqx@ L99r,|X"\&RBey<,jxV,_2|VkP."7R;yWWX%ߒo 0E2+kX2;fl[JV6l+vJVjvfGqviv޸oNޕŻ>|e|__7І'3˿?줐,R4D/`.@9D"9J9Mΐr\$2RV5r(7˭rT߃N (itabA1S(>(>yS|$)>R8ԀPCCQ 8ԘP š&(58LqšC)R N3ŕ+W(DS\P\R\Q\rŕWb) qx!>@O$'[֓ mm 7o!o%;;o' w"I( |w&|w!|w5@&!5؍؝؃דMȻCEMC%MKhGhOhЖGhЖOh@hHhDhLh6v?m(m!L=G? fa7x֊}ϞbsB {=^`?ٛm.}>a/W+lmfO,B`;O+}Gar|@>$Oȧl\( %N*,_oJ\bO!Nwᄻ;3#}(B_4BlBMXBGs } DB_o mm 7=!Bb !VBb*!!1x!#!vBb:!Bb'B❄ BbgBbBbWBb&o == tϼ9^ބ>t%MKGOGO@HDL:z?!t(!t!:ZHA-"$B o8߽3pN9;׾Z] ȸOؿa81y<',\ %p,PHHb[tKCniL閲H}?FZ("|;}#W[eȻЛHVHg2 ٩ZI>}{O)_6^s=MP;=%?(]p~B)wiYޕW KtVTݹ>rWiOJ(i>^x1?K/+i>UtMK ނ6`z'VhVV׌z&=4B!0~`~>HUGB1#|Ǭ:s,~ө$΄# DTtMx*%eZR/ :YZcn!G>QG;1n2'|s[2'9 M_qXgbDB u5=rhm:r԰я$7mBbbBB/)!1UD+}M;Or[g>p|L˽kg>e=˟)49f;9}N[ :r6]o Ydu7}_˵Oj17WX/4|}IakJƯȏ⍃oY#4uѠ\~߳amo黛f;^}rқO F.jwL)^)!>U&[&5]ضvM?)~apo6k6~ҳ廩|δ?qlY9UrKmrDNՋGOgq5݃m/5w?5u/6mkvߊ閆!'h}ۓ4~=/]o|+9{ZB7(+V9s_緳s6md1WK5͞y[/wbc`oAL?z[@E:8^qQٷUP) O<г/+èP2QR=_ژv]_uT$$)"Ho &ԀФޥ"mJABPR >MD%qּ{zde9{wͺD Hɔ mdaAͼ눵iGW/ar!3gvcG﬷::ߐkT ĠK! ]/5g~kq3Yɀ8K (5h A#D6Aѥiz~n{>vL%]JI]\qhFHb^Q־z^w fPTR'(U8`x RZi_S i|錾&!J6Ig=#o..2ĆQWFX^{cQ͕sC]a;'`ba-(EIy q]5D@; A(`TM ނ I.`ts'n~ji!Q[hջPREHmƜ+-ZcUpTKĻ2rT/,HscCA2D3{ݜ`(J@ m.;} /z%ܑw鏾ɿ16;Hݰ9^~$G^RsǩXiVu^OO\` ?6vnsblcJ@a|AoJOim !gcZ+ףKQL +8uR_U `ac:~J;FO._+ Va 1ƟOVH;FOj2pIA(i2p Rd F8Ѕ|nN= U1r#:j,(d623|ע/_i*tNu?GT>s.;K{P@\Ð~tuؑ6*^kbj=k<ERu׿替Ѽ2NCL_b{JeuIGә'SAG8С4 72Gҩ9Nh=v*e19r6+ Zon mT辙Gس 1{f1?SDa9{wDֵ֫ǹD '?  7*:O.O&R괗^AR,y%pn.x'Gr䧷{JcI'A*?{H%@ @"> ׋ʲb(RN&g3rbZ;)C6+TN(i̅QpF[k;yq0a%SA XEa5Djш n1n,33AB Ny ~C0R|߰L0t1PI.=x'kLQU! Jǵ @R $[SOV16KtМv4Z^vWc^7j@'>͗U.|5—w7Rޛ[br{GN4xPzUۅk%6*fVrxFUU1ƭd5f…bw+v0۝ծ`XastEsN,=A1(Kusu[a5'^*atگYCDQjj*5njůfuW+ xhKT P_QF>i"Ƌ!S#/x֫;/{SXXO\YB>*h& u/,hpz|6zaJ `#ap¾xFK2qY(VTqiRT'b6!T+@.9VwIzȥp՛Q:4RŁz~Aco樼T)~9 8$]+[o(%/O<>cX(VWe&;Sk{@mǘ꯿sڌDgU*x mTnkj/f8{BfXJA)dqYm^`ԨíTY-G?wی)tj^@` :hѹjq؈⴪*DG4ѫbY<1קjEč ?x#4͝aU`= 18WT=M3.d(X0l\H~|Y`$li5dP vs'yբE2;kX#IJ+ ^{ˆleb$j]^_0*/,QwsƟRP0FìmA\)wEGQl5e񵜐0u3X NJqdzVX0VȽո(xY{U0hQ\M( k%zԛ_ *.i_5%:r`NĶ+1/DžWxW'DŽ @nVWmCDJo<)4ۮ~ %/ u]M+ B!_ #Qr"N)4,Ht/50nb&? }dQƅMl %;3kU>p>P!٢o^p\_F&-0G5aSsԲ]u(SY1ᔟНsi S/Eav@`n Zi\p8{G%MV8rX?K cy6sJ=0)NXdp 02V00d V%jJoz">HliPzp~3C`mvM[PrsuU!6^_ߵ:Xq-~e;г6sYVο endstream endobj 10861 0 obj [ 220 0 0 0 0 0 0 0 382 382 427 0 205 332 205 0 554 554 554 554 554 554 554 0 554 554 0 264 0 554 0 422 0 623 611 563 662 575 537 611 687 324 307 629 537 815 681 653 568 653 621 496 593 648 604 921 571 570 538 350 0 350 0 371 0 488 547 441 555 488 303 494 552 278 0 524 271 832 558 531 556 547 414 430 338 552 504 774 483 504 455] endobj 10862 0 obj <> stream x} XTsfa6 ð 0 p!* &,QAF%j"&HVibRc6}<``n&dmDjr6Zo»|﷽3*p T˛ZD} V @L@M훿sq8hbӇdn&Ɖ 3ZwLpkWB>m]<˚v#<`k>Ju=@ @Ӹ} K,N| `q@/7q+Ɨ_blgv^ӵeK`rp|>qcKw_:9 I=N}MN?e)0+]hnڿ+'P_ `HK_^&偹:_aYy7%_YObS v|oJV~MvH++ ᎓N9, !Fp V)Y;̈܈+}!iW$Đ?,-bXEL}9YPrnPjn'ubX@T:WnU fX#oa -*Z fn0qM9u~\;aNf)Lg n18*|P> 8~%Lڠ @Rُr"#}(D! [+#53OROAyW/kiDf3D?{,Bz_K-[#|;To/G ~vۆ(D! QB(D! QB(D! QB(D! QB(D! QB(D! QB F0%$[DRq-*rGػ!JaT@+̆nS^?t:ǙPevXrn$93׈Uly"Op;zg@}2/|2q3[JPj8Р]ZЁ `HVHda R(qiK~f?_ĖZt = [uJ]^M J7| 0z\wza =u[aۡ{^xv.x;ywwOk\h;gխ-MgNnIkUBEqcJŞ"waA+/7';˙Ȱi)$lJL0:m&.VR*8!OfT&j5NMu`n..>ʚE!D֩ڎscJ{P̙dw71n'c~Oi烢v[X3Y&#Hg6irrFiGߧIOD0a@BC(I[$_$A$h[iG.bGMpF4v>=|&E:M}qՎI}q \bEєI`4556$2 p,%ZTB-zDlS[P[!u45|6M`6Z&>uuFM4" .1.ig#/FsG)"=5 Y\ES>6'y{poޣ5cv0?8S em15yq;uf1߳y5Wfq"pvKSM8 v{zjA>l2v =բ(1hr; *2N=mf{88TT97* |]Q]z+7X_7&` '(՟S+qcTਛN50s.842^Zuj W7:jzzj|mO[OH<wi4=+jx?&nimd!Okvf0l_{n87uGV?zz6 N6^5xCD}=hЬ&<RJJ.nmv,j +3R<"v;=O {FS<[?n汍 =Y[97́y5]=KWoPlD-c"OnbmLDbl,b]xEKHc7f.QQ4h7z^uLr7ێ G!Q/HTxJ;k)sE*m[Aݳ!zZzl)͢͢D^[u74"fhȑd:)q^Xkߵлo9W~ n+ƦHlEL]\1|FsM3/e*i #Z?#^NRH.F`:cPDžu UX;1MLzPnniks 2>(5bc~稢 TrTaQis l0- :7]T:F Vj汊ฉP=Qhv2e]>Y9 ,qudQ+͡OԁDTn]tӦEtIq2+"nn1:lj):7RFE(il͚ARivum:,k kS˚/a- + J%q ~K^CF22]-MC_xJ*㝓 ϏCLkH*+az^hFw|>ha !hX!s6^R_~B8^18U5Vg Q5}s$J,oeoWY8% 'eϲpB—Y\>OeY8* Gd=YxWޑdMYC[m# da,lVYhfYhFY+dNB,ɂ[ d!_Բ0"IHk~%S=)=.c\ISGP{!!%DJ$A _HtD$OItDwKtDJtD7KGwJtDH)|Z'[$V$:C$*j)UvpF@8q9:ĻF܇[0=n؎QDD|)\ՋzqU/UW^\Ջz!m(%8G]K@:cē,萦#V E|sũO8<8 =|d0f#GFNp+*c9'=m#8<yF"JgDž7[2M8Z"64e]SIm%uE #+#ETHO"0 G̖?@rfM7'.߀H.Gdٶdٺ뒻V%R.F`MNZi:ɾ1  24JNfh6.=ff h<%#9183G?s/mvR2Y)v127-̍r1k#F*IP .~Yo}`~:n9jSWV2B⏱@["nt:Ԏ"| sԿYs=r_+#|Ad\ra_ʭ6 29\ f&Ӏ|3P1g@,3ƣ܌ ?C["ځ+Gކ+CLbl_Z5cDU,.6zcVPOAD*!ލx?43HGa GڮÉ *lP }L2i<: XK[W"+U "4D8%y/s#<ѣ =˰M ]0V& B1y fb a-hm &'ɱ`rb09LN ;p+#OƕR;0Ɉ82zFEj+2+¯BNnsD#KDN'_b|_Wa$\ >tއ#|߳% *LKsTYrNiu,J !(C2!(G~dw8ELjOfcwp?\wĸxߋ >tI\v*\;{9דpf]«ݽkS^FaewpSOOLw~5@b>>eAVB>)%p!΅/(+bSs 2E3uF4 ?J*Ӛ{ kKx͞A_3Y$~)qs4BW?49٧4/7t+PU@(;gY}/#赺Cic{}|R}>L08aopzoµo-^;WAmD%7IKovIoƵlUp;{7'Y'שݜ$F8^\nt3üfbvc?MvLܺnA'[Lߴ6"ށ܎޷~zvzR'YmZj21KL:ISlR{L"6A4年.]CХkt( ?A?guzFQb4,Bd+.txS~SAlzvR?-h8t6oU%Ǜx#>çw~ۧNVwv?K⠂ ş ?OVoj_m$JX~XM}lkFl(rd֦D'-ĺ[]T1Hh;Y,fg6GrkWvET%A_NVW.״\V!<>2}..ʈ$A]j.x=ВV\y ns.K'Z 43$׉ubZ}k쨪_Vi}qT+EWnc(Q"imm !3E_O!D3 _"s?E(E|-7!F qb&č[[@CXXF,@GT#¢7_OOO?~4x4Qoo_<|%Rp0Bc=m-;낷g냓UAm=ۀb+bߛYPb~Hg'@<]1b~d{D%&8Pk#:/Û:.~x* ~q`n;`7FԴds`\ {Ȭy(LjDosrd{p`wSprEoP.}%ziŰSN[a\be{ 샧a>fC!颙/fI~tt+.?]yl sN`ٶsW Ej^C8a'lD?H>[p e8q{ #Z_TCbnC ?ka5Vmuy,Zq9[JI9l¬/P_2bǫ l"V³ǮI[K}>z. M m@$^}z{~? 8 !&)\x YxwGXt-8cb>MIyZwϑoneRJlu33nK+LfO-g(=H3np;: (?)C:dZ!g(b mF5g "9==SkIHc^AOV#ILc FJ˜ax]x F=w.|"bu{F3x=1 F%;ۮR*MfɎK$eS=V*HO*k&2"F72{ q(\X2E6o/5?4>,I)D- A XNa^>zX;?|eK ) ]mʨlaG[L{ e ,rҼlv+vBEȖ5qT֍uUw2Bsl&;M:}R"$5ћ^\y"-bZ}#_)!O!,WMtfXsj8njYRN89GP0|:]fћIZsIuDnE=F) & ٠֫ V[ mq+%- :}V^n5'܅7z'5.מfKxvygVձ&5B#5 |$Z=zJa0$IP'%%yql6ә7׳70bclĊ$]yle6/D-^덤º'tNqh4ؕ4'Rj!Ե2#d.TdJ?p$5dY;{rBhݗY/;D1r,IWĘiѬ~$?R^誏IM K~FȐҙ 0쩡k^;t' zRz|t HdYNaSz\Z5ðVo"EFQbďAhz"$z#OcJ0Vu-#O] Zn8~1a =Uh(4hHokh=-eiqA@p,+(|J(}#L`-dfKWj;tJe&?$.o~sdd g<o+&˱=uIw<ݱ|B׵L+xx|m%`sBa^6 ݦ(X|*WVXӒV D'l`b8HL[z3Z;+g+ϐƒZ8th>, gJ\(Vp؊z;m2e#4:sjovϡ,0/hZ!sH@dXg[̤0_bov<:*{nӭ5OJT%5o" 090 (D'"(N=vkmhۆVu?n}NU[Vss+I?ce*@g!YxV;v[SVƹ+9+ĨM!-;g0$#*P2lD% 2`DS] {*)xY BHc/j; \okfoz ;Wj[:^٘^sֻmxlC'QfފԖ SV5֯g>-}>oi8sjV^P^Ldi?+ &#JUƁ3={[!ϯ28"m .H: %i0c/ƒ-43޸Gܜh z)D57rntx>ȠN1iѭYJ)JlR#Py~^-|EfNRp.|1ǃ+B(0XR+;tvo}GzڔI?5Rᛡ,Kp$x $37>#zԭ z$JzU`WGvatA1e v\.`eeIh'i*#"B6F x>B%r gСT@ZM:$N)ipxuЬ_}['5b1dn&/,P%Iri8[B=p ,5i\^T#9=c/Upb2,2faް Nh"i8|6*0Hŵ?T S&e]$$n@wzaܜ㚳sR(AX`qŏk~e""&Rĕv$'g}52,x!эu*kJ{G"%BД,) PP}Iu& 2>aިXkЎG:8#Ph(^OWEڛHD@xY,*LV6|"})M=/nZKbJPH|"Qi`~g @U(.4-皒h:%֗C A>P1azE0 e;ʪM.&U=0LeMCi c(Ia7P;MM>Ui8ˈ?E77GZ7IRɸ[6z&mC ;ʡH1BO:v\muIb P(f)F &ȸ&ʪ5X ˱ X5\ngԉH󥀵袒ϵ#i|fF _~ D[?Õe߾Q iw;sU/ȢIQJyxb>xA?&i&Glyӹ?Y+фqxNUs\c4f>#k4$sqYeGAOH . >pCgX*-X-^0! *rSª~"- e"F|sI: 5F QbAڶ j˂yp"WͤIژvL+a9뛑#s.o[uk۲M>xG2^n?k]iBomU WmۤCK:\Uh[QOcL\{(:.ât:7Rm ]B$گ#wi][ZFqa+gaX!ylBk :5?sϷO1l z>-KФտcs6\IUU /R`rWbbH g>DqPVǘxτU%&&1Te2 ذO[KX>,<6!B^WosQE;dD61vd ɓHⰌMA 'bjKui/xX:n^޻ ~uw/PmT.|uoHl\ ,X bx G%mN8A(-/)9#YD!){*T 6$]x;>H3f8Hg@&L NhU +x/mc`?9VIҿГyCۚ:B{b׬Pҏ▩Z}ko|YS ?a'iX$oƽ߯2w9X;|NVΊ =h;,jmNg]/LuoVhvZIP=z^qtg%ZWˣWޠ9ۅnN,hfc$O1,S}jRq$&0}30>=;鰏^yDO.끚!Q!K_zIki[Υ%[L3 EtJʊE9uiPߴ2!W\Kg+t;w.kjHBUH زief2ŹmpXL(krZd-MbUmmЋzEGEO9^@Iiӡ)sM *lTV*Tt%aG~ĄGDC2-ze5Gӝ5EGd Hu}NΫ*7" yJ\>5߿t154kD= Dy $c1ȔȌ$}Pf<=Z41 4 sx V_~}J KKBR*"gS[qOyה\gM!]K&\56[vtl|1{m[{=2]6j;+;K-~4.P `Ff'$aw#f YʏF"#وdHk抨y)bRnoDݥ[.9cg_WxTebP?ȧV &Y!FGMյ[9QGǵ=ƒIiW/Wc1Y3S1nP@m:r&% `a*9୼X}Z W^oo$xe> Iu5u'5H;mihp|+o}[=m/qifU9uCZg$ێ(8J Ae=T=cw C #` vc"]2G~!X2*U(p:-VUڕIgh~b϶OTeoݼ 3oA;[Y;q_WSiRӵԅ}z-Z hg`(ˤ>1Ό\qeT}j-o7xcHnRtx!_ݤOב&feبˢFI+1Z׽ƎVY&^?;֮658RoJmM=&{&FjzΒSB=SZhNWaf:Py-:4QJ֌ZxkL2^Ti[b/YR$r2ʇіǡ|#/DYgtf=Q肉>塙_  Y/Z4'1Nht?5B#2) +4"@Dcx%%; g|rk΍MTarUwsNX329eDzbL:h_"dۄ 꽰i,~>,i#H,3ff[٠.Q7*S麰ՑlW:~b05fX-cX?,i jDT )t$tj34+ ?=ȷ@MVئnEln:S<ĖIsٿ^=RTWTC חD|ŗ@w/]3gGDu"JбOh4=]b_|IĜo'èF\67+vd;_7)ٳtrdbOzkd\\l\gj=3KN{1؈ + 453]5milzu$́򪺩M.kY];0p>um;f6Os<쏥O+DR^Q/e\eL+!fbB jFf)%M6+4fov6Œހ tÀԳu4yx^>R1mɝ~|Vb'OSOv%T.*d2,V6"Ç\tFzO:vCC!=}TzWdX 4)CTS'/הH }TjCI#M{X}8rM9!{K2Cy_C+w2==pE# YR7ʵg"#2tX˙CQ8yȘ听zH, fd86J9vwJgAU~pSK{ I/=nؿ嶑*ضG $:#E %_0wLk.O#_hZZrI ׼*s@_J;Prf.f^;\r_ |piɖ{oA1V=2 Zk%<{y0( BF= ;-o5b78wAK1?帮oNuVkon.df̪4Ǽ Pww⡝][fdNΆK&TåWoi̛+?U/kl$uɏ6rmPL%3GrJo*#@!6dhcD.hs&=RɂH;YT*lƲ "pV( ={|O=EO_߽5rCZZ)+Z\[dskGn{ZH'Q퟇V[>V nz0K{@N,kaq0r @n8 l2D`;hw +iߥ Pkmt mCf#Hr{6#ŗg\{^^۸d2r \:n^5s0z䛇4z74m6⟮[?wR]+]8ckFݕ7x[{堙ęYb<@e#)L,rw [wy0E&B8pJK>Twɛ,7n|byTz_&8Tzefp攕-ԍe})A:W&vX[hHx#Ɵ E/zsq2Jd˰*N1cEϑ |݈7^odصKZkW GfE܅_&qCsCbrQZP߯)<9?yuwu1ָ#r 3׬m٦~mHE9*@Kt)wxryT-J-D\tz~mz".RT"HE*RT"HE*RT"HE*RT"HE*RT"HE*RT"61]WF2-è0#Ͻ \M.p=6Sn͝nnϝ};Co|)C^z}?0s?H9x֖[p6.p\Yw|+!pwz'S~d_Ք(7Sn>+9sgc6.pg]7Aj7ν=90J ;;(MR/9:Jc\a=p9\GONr3r?>;vwP~=/}{xSoD*. }j*G 3p5臜w+p})jIÐr\W{уWSAjrlxWvz<wуAnP}zx~?a Taհj 57{_uy_0[j⦔¸ԥ8IIJ(ah˲l dKdl |ؘcӔn:iifS~٩Lw2uЌ!҆2_}ι+K0suy9=繯`]91? Q nƱfï_BAM!/Ast3z]Ō^1GW1GW1GW1GW1GW16klg !wg߂frO}\gy~P.2l.aKJؒ-)aKJؒ-)aKJؒ@v.dL`H<,d9 y=_,Ϟ g‹Qfrw&z?#s2'; 9{f.Cq́wD`/^,C’Bz9)KJ90#ȔG,KX//AvaƎe<y1VL$ǣ?a?y ֖/e4 qω QgC^/#=sV]K0 b%,K* 6ς/${X,r|ž̂/4z\?#sNVcY qdn~뗁l iٰd1a6MCvaƹ̆4z(͆$xa?Q 6֞&ٰ$amEk~ρAY,aY܍Us`-},a9GNw9$6;g!9}H;b%,K@ijn=,LˁrD{rCq^gZgZv@g9r DB9i9PL>rlsb.?Qg,1:B\h;%vq>Bϯ!)w!!˧E))@uYR)Ӎ9<=lЃBҳAi .npBaI,>TgI\VBGPFR] z2g=b/m^k/~edddC w?l#rq~`~k>ȖdK%ْlI/h/h/1}1}<9sC<9s1$={c8 ª"d7{aJY`ǣ$9OsƹGdX2 9z\frqrz*Hc19_LAt r/Nd>ݪ՝d]Zݥ~V/Kabi8˺Y%β.quc%β.quKe],gYwi@uED h~?E\3!ZDuhŒ6A(cB_F5ZZCkb67E+"CWr}eDk]Eƣ1Q+ih,g4|~1֐i*n|MhodM苡nj$S.wٮO!@H__O`#SJ\#^z;ZQ^v {顙ajabXe!#㻉gVI#}BV^Q'k0֎iS|/(B큛쩎~2G++kVǹ<{:' e#!-m7mX#DΦ?/v3yFfԚ֨e\|s.HoȎmlxoar o4~7x&C3yO}ԟS#s}ad+1ǘ<-\slxgw¼m$e5ҞnG( sN&am3\J6mSD-9m u ϙ%)GZ9IKgP?Q&&*AHq`-ٌ Ql~t3Z8 \bt497ȫZ53RMl-l#2(֜C/s19;%J.3K>3빣 E;?/G;𚈘,s*1J՘C%Χ"yGx-n̷|-yH$MEByиv;q&v#;?LŏA0u-$4kYV-Yp rn[#Rɽn[*sؼ]\Q3PσvWxM5HYҖwHJpVNQC97xbt3hR;YQ@~&=_[H ngW'B'vMLR^S:ZHl2'VjПmrgɜ0Z F7Qp-* Ц=#J{GOɷ:f\ɍ[Ĩ;7ښFo" G"͑HX-576ж`|+m`b<jl#06o%5|&zb.eĭSJH>OoDȈgD%f߈RQ£,e,sϊre|QRDJyLVvneQDZyZQ~ *?O*?]qP5XDX2ÆO#Zqyq04㆘4CrM%)e])^7.K K 1TYM3vիnQ?vN^uN}\ RcyXr`U-ZUXzX X XM*6`U>V+` XVC`#``3`O7$f `X-Vuj=0 R : ~ NjX35LU%C]NWc,`Q`u7Z V6`X6XYyXV_`tzX58V}i`C`2z XX"f*wU-jV{ zX]Vj\_:{ w'3 _V 1`V:`uXA!2qBC.V.V.ueʻ{j#*5V?V?VVWǍ&\I!Vy>`575Q f(#X}Xn`uX}XV .T pF> > 6mj: ^V?Vwu`uCUj8Vj#* z~`uX}X^V XV-FE0NWf\ 992 VG&֏jZ n`u`. .10XU{z`V `:V?V27ѧZ!uWտGTV XVV/s*g4ʌ\uv5fSՄqn|Xv`X}X}XBJa!`X}Y`ߢH!)[yHLW zX X] 11ԈYنc.j\ՏnݣiQQjZ<~SW,_+z3z!x8llG1qԘnjbMqb2^'LirtrtrٴLyS35%ԮL;Ըj}ji6xLh_n^FumjfKu|0ˆoњ)m͵vͪ qǯ{^KjD0}rnjV;8a;ruVč.jtk;ikM㱺˼Ig:YﶦGy!7t @:qiW[23.bx~91ciKMluG{d|QMd@Հ'_C21cUJ$a^g9ߊ~˫E8tIIZM8 ^cڈM'7V+Q|Y=rK&GCԨљhڠ:HwZ6Y=Ꚛ+6brHRQK7$͢l2j1$Y]gR.cL+uutDq䷀ y`()6ȼc{|ܒ)cZa3k›͌͌y^X tW1HWjZo 6LiH dGNXJqʟD 虨gWg\&*h&RQ[]]S'&R!̎_&|\-z]#c-SpLET$gzR2 RUV֝MLTމTD &-aTT=mb3&dɨe,$1=l;YeBZ,enRI$%OՒRS)Y⼴ۄf;b9nQq`'855][WMݪ5+%Gm7j|=_M 5>(Yk)wP_ݔWA_$曡\q];/dɵ\Vs%/dxkhXW'4jj65≼R#q* 6RLx|Czi$ToBHv]q߃T>/6m& IR.65n1+N$s4p'nhܞkWtMn$)zcT'0t RWp8hX.x}ORUb`,f4'؅{b.>R|Nr9V ZuSQcEq(74cY''DU@#ZҌUU  xW<&1 dPH.qMl`ڸbxkvؤKK%CFe.Jw\b\rqny#W-sѨ8̽xajO?VH&6Lj%PZi5 Ll92I{-TKM4V-3@.B2F'tD':a_bbrjP$8ͿQ-Hؚ$JMrMq8uR)$2)IRN,6W!QsK! :< s%T`Md@5F>LpN1+HXƇE9l}3P\ :<ɧ4pS#"G>X2pPd}fJ( AM ģ@4jRyt+s$ySªM`9U "߈աX򙈸Ȋ4. CHd!ͳd$h ?Mެ^&%}jdWC؅/)2J]{U\qN-zI &=[Qf&2*&C18rʢ; GY9i!9nccLDx@i+&JӌscMst 50@)\N3.ӓӓg3ތ~teW\ά'3Tɝy#!X>>XCP\.?&0Y/E؁oգ/tY=7hEҚ^ͼ|KKvH3;3yQqGn.sge>CjP_._.}XBOE.3$5{:ZڀzԠ<#lHm=[[׷ҷ""ˌy"U?OΓ`S؄U{:&qYL&Z4v8llf)&D&!'O01J*$=(.kb|9Y'ZB_E/_tYb(!>,vN>&Hz&d8mv:=zY}ټ̹ hXoJ|FU72U|r,{5WŧGiMgd]f^uc}x.yg2;VyI]S}#9 9N[pA0/yHEDKa൛6$lMҫڥOd"F),m4t,k1r#ΎusȴT9W a@f=!N)lE6k }wז橧b #WEЋ2"n穬l8sä 61W, Ӷvu":ujׁEd-7 r-g/& ,.tx b3Tlvz*/gzͪvVjFjRx~X%ALzY"%Ϩ+,m0dY9ѕ_4gt+Q]5\j`k,,Jcbi؟h,P cE6"m.}kԉ~Xnb6oLDȋ9Y7!\fhufnDe7},`o/vgY'9ʛ[7,Ye%e,ksr+<2ѿ *x @yj0OgW Ux(Nm~}xIU18rNZY<>]%r^*_G4,dP^?{*a8i' ˻ 5mymP,RQaTȖǜ[_(߶pS8bX]8~p|p?' ǿ*[8s/<"lmF)yS 噽Q2G#tt;w8u|;887:rcͥ%Wbery^+zɥ1N{e o dYO~[t^iEҪ2Wmye[{geJ^<۸]PngWe0oBü)ʂT^z/ϭ5ZYn-WoVlX7'+x }`B6hօK7\re٨W}dz~f(EN]RoUWUF˞osU+ֿWګ[\o[ _?#&ɪ4z7"hۈzƂ81I|3+dV~Ic~* XC7֑'zזozx}k)Y\ۋvv#Vj+Thn"^ tq9b#J}Gw?f8{|} 48:d yD̀LXK`S7EOxv{lbAD9(;\>C=?՞UQ=+* Z`_/]y òaXb>K)|{6q9=0\6Q;1WFx>-Fم'ޫ-ٿlC7L;hN8G/Ux+=\aM !4!DZ} 4 eFff/U3gHyN_êDY˞͞S:% J*(MPes{ ?3(ޢb2D-HE RjSJU7Q%Q jXKZFmUZZJ/:m %C4E:6Ӟϫk޳Z3QEx)`B6 8p0&8'$S048B-9sEq`..Eߥ ޽^+1:"pQб HW]nrw}9\9~>.P7sq!.ŸuKqs.G=ZW)`K7]! %8SC7wEx,dwAy,O9a}%*e_lXp77-1<~~jgx?3KrVlw:Uw1 ؈ފG(A CC /ŷ1tw'Cy'l\s<rۿUNg ~`{chM } }׉7ƫ? 4%&)WJU<"q ͉F\2yZ1tTr,m6ab'aE:"}D'hkObO^Pg]o( <|pE5d|GhL18S1 x`&8 Pqf{sNyq`..Ep).7WJU pϸ_˝O(P''Fa/Oa4ӲX3K^ `C n 7c1n܊Є_vR܅qE30UW*\e p0Wy<\ GYykч:wsBy*q(U:/]+p%!0]f<\(,ŸKp+ng-]ywb)ݸGݽhui܏V<=mx8pe'^'qoܽڭ۝V&Eh?\vq..E\tvrN.:E⻄e(ae<$vuݰ;Jg&|^g%(Ŏ_JJb73̉q8n!n3 Yow4$Zi?wџ9Iom$3d_DŽ{CbW9ހhwъ=|¯,V8o;X͉&:%>3:x}tyh|A:sF;gt_|١:֢¬:Ikݪ+~_V o ;2%?.IDy;^| 7fYb, o]wg]no9ͅotH>0g~'6'2w̝"W5o#sK0'8Iν7omw1 z Z!#ovvvvvn[yngՔ2^fW~˺*ŋ%ա<<<>Aq{7#Ii/=&%%Yf+7SW9x1'jďTw1\XTLW*ĽDg)gJq/~_/r̳EQsjt uYt_ڊS K!b^4<VxY/K4/K4/}CM׾O-wѪ<\{ՆmQd{LxC'cَO^gxF X_9kr~#?xu/"KxC;ǻ]G=5ʫ赽}5wsoM[x] `6{xcMٙ2T+k2Y侐)Zm|hx{hC۹o!aDJ6zCy/4|(4baJl+ S~~eOhS ~i엡+b~ 傪k߉Sq#䈪?6Ve/*ŋ% 4(_4yҞ*>**yNHUCfUrC:~'*$CQ0.eܣqLh3_qli8;_upc'dۧ`SqspZ~ҦgMZy>_B]l{.jtM|S%TopF܄ر[׭ughsܟ[rKZnI-i%-AeqqOI]U9sYᝒ)Hz!8ef݅p[7Mx|u P`_KgoZ_))#0~&VEw4dhX^2"Ur$>=1 {ao| 1c9WG_\j` !tZ5~FX/{޾{nֽ[XuQN878v#n­Ӵl֖lvN]Pr$B;5]6.`Da]vҮWJ^i+z]P9;Pp4 8p&f!?.%p).9qtqR/uj}k0 èvnTڍJQi7*FݨvnT k k˷ oovðKau|WmvamE +wֻ`{c4ԅ6Q!=14ms>)qUPE;U'K1O%}l>ްT$%G`2IILI|'qN)8 3p:f Y0Zs0bB\q gx&|\YW\NgXEǛ(]o[Dݭ|ݱ;p'j cG5KbOU忔hlhl_zKw*~}%~H|{bDG$:\kjq6l>isKq.GϹWb>&wQYa0V2ĵIh )u ]Ônabr4039\u{`dH'?͞ڌfkro>>>3ݸPlW'簿u\ T$EP>0sg͗qdhKLqmuWOu|MLxM<1,K伓qϛڝ y?Sy瘅Zfks.Sk\9窿PEszJ|%i|;xq|| !,OE(OOm 6ہ0/Re9uyHۿ"Ԧ SU48@q6o:mfaXZpcHn Cujq%욺Umm꿮0%ugZ,usEKSToswշ@_IaIj6%Qا"Wq"N  p5%;H٨/@el ޖel2QF6F(#edl$5&<۵E\Rp٧[Y$,}>d.٧K=g839gz+WOsV{/ދ8pk]rEg8pg8pp g8p+pE7˭80ܶuп<6mv]ܶvq,7fE7{5qFn6f-,2,Ͳ,rܬ=Y72,zYo͞fMܬMfܬrܬ5r.nV:Y/7fml17kfl 7fuܬYpܬq1ܬr^ns&npNnzY7[͚Y#7ͺY7fܬ-fMܬY 7[Y7kL wN 'E$W,f'u;2ʕqJ&_JvUpG8>؞QʽSڌӎ>S~V6M9U/;PA>ŒTIm-UaF.aUEFub?1_aaծk9vZVEW ׹uYnh$Y}R;R-Zc'(Oᦱ۾g::duXU |f6a_k|[Ϻ~Xdf?sP/}}~_5ɯ:vC}O>ߧ}O>ߧ}O>ߧ}O>ߧ5%;x=xףI%oD5%ocl K޳&fC#؞3O+b_<~^ٟh<u::ʘM1f8~v_QN Ħ)׾FyN)9gg?g,B^/Γcؾ8nM]J;~:ֈ!E 9-X&B{5c]T7=_&O"+KdR\Q+qW\Fbn 7ےq Vf&֤GߏH>|hthN&2?“vk?4~g Xy_Yo[G'Vx#?Og._W^V=x'*z}x ?RT*JESh*MT4RT*JESh*MT4RT*JESh*MT4RT*JESh*MxuU4:LNSp| G`2jRGc bWqN Sb"%&R`:Ni3p&Fjjq6l4s0"\ zҩºTKX |o#R|*pxY,Nkivqz&kh&kh&kh&kh&kh&kh&kh&ڶ0kܧ3;s˱qK赒|=xkPQx?4|VJ6au,Əy[+*Qi|WY2+,[zbIώTwc+r9v5VةOk?S3p&Ҧ64s 0b.Qa{-*䱅_qcj,Z[o+zu`C4ÿzW_=ÿzW_=ÿzW_=$j&TOeTOeTOeTOeC{W5 {tb%<#VUiZşVUiZşVUi/>LxuuIu hD((̀ dݵ]b @\7.9ktҺmvE(H0JFCtI%L N@ܽΞ^㛧{{ ԠO ԠO ԠO ԠO ԠO Ԉ:^}Ta:"131 /Áp0:q a8G‘8 x5\E7q8qDƤNtNtNtNQcN ^e2q8u:.E4-y[H=TK5o-6T݆PuTE[TE[TE[TE[TE[TE[TE[TE[TE[TE[TE[TE[TE[TE[TE[TE ԰j LT߷PA{A?CgIO5%~0̽C-"-pUcW/..EvXl%RCapUԮS~ոƱK<񠋳L;6iRfQA7H.cSIO:BS~ O!)d?짐BS~ O!)d?짐BS~ O!)d?짐ërxUU9*wW!>/K2 +|_ /&ǷUmu;}mYns:꼪:.:Q>Gs:Q>.EVȈȈȈȈȈȈȈȈtJWtJWtJWtJWtJWtJWtJWtJWtJWtJWtJWtЗC_zK}/=ЗC_zK}/=ЗC_zK}/=ЗC_zK}/=aL(`#B3028Pq^.* +kZt#ui׾}Dߠ7&*Ġ 1B *Ġ 1B F=9]qGwq]qGwq]qGwq];ipDn$n.˔͔G{ykZQhRu^ʓ kCf"3vȬ 2̾;͈yfCfCplXOY0;?Iӹ5<љ'"ٽZA;h{mu:]u:Xw9Fx+9ƶx'>v_pk6V|\,Ӫ:O?۾s`*k&k&k&k&k&k&k&k&k&k&k&k&k&k&kf\Q]ygy]e?O[]e?O[MuJunWn5e  h_|zVنNV=wJ T0|7t݅BB"\䘋b/~߯ ;#uLžp5Iy VZ >êϰ3{x]}0 JO^ Ƚx[ Pm%^ rp%ÔxSay9L)0|rOn >'7|rOn >'7d.,螾 16c ( G] |t.>G] |t.>G] |t.>G] |t.G]>@ tG] >G0TrJSa*9L%]. :J|nӍ~O#yjAH*n)[Fy oVޫBCiH7 !ݲBCiH? !|Nϩ9U>T*9U>TfjVfϩ9U>T*SsT*SURwIʪuutYc5IGM룦Q'nM7y&O䉛-ӧeL~ȺR\NҼB?b5|wpLX^k{~VZ^k{mp#uDґoM%٪8]_d|\5f%2LIgPՉބf?C >?cCjw2Gɋuo6it-8g୰za=YaEY8i}#EZ8Bʴ0Xm ʮ!5$̹.s.U5d28ø -3]`x"$)<G_Wk"4 l#/_$߁}1Kp݃1MIY'('07k-+4yo9sBϔ3eLY5lp,y$8 d7_M7Ȳs"ߖnݶn;|(jhΆ-l4ߑ #pNv{6+=wTVvf m?KnB;ÿDV gэpSo}5픳>g:}ڷ=n,wcn(#qw0"o#9ۈ~<ˆ7&(z cxIҐ,N A8v⓫qyxJ8=؈GF<*%.%~uBF>ñm߆m߆mXr5\cE.uFIbSXT!gC9槠b*fbd!Ruavfwlvfu,BuP݌En67o3ƹ8\p9>+ BWVweuWVweuWVӡt(C9ʁT nЦz47]c4n5:get܃=ӿZi~QN\_G n6SKj4FWUt8_>L 2 ^%+UuzSnWu'7LNr#r,ڨ},#v$UijJkkҝFI&Ġᑙ=Q<5cxkF>(YHg4o$so֖g'#rrDN8BBJR(7#rtDh}7y";uco?>J5vtwrS&Z&~W9bwVXcIOeFG;{Hu0~ng L9Kwppw61,H37%%o>7Ǜ;{3m]_MwwF,z~i~lRer'<՝BffdfF7G{q-ɋtКXf֢sKd9F[j8Fc`mnD%# פr2ikߎB;>4SO˜wUtmcxS9ξ;8̃́:<&oF97c~nqޭYr,ڥ-:Y[ZJhDT@+>v54"qTE\".U\9la#n,xɂe}cQBbK(CK'(וצ>d7mw>9+˜ȦMx~᎝wTY$&^qzuD8&xA^25UԤOSZIrUկk34-c=lp~cN2lZfrTN`6[fklm;dVfgӘӰq6Nf5\dX7exS7exS7sdGږjv#Oϩ$r1 _ul+RaH׹!P΄_/m6^im<78%(O[V8 Vq{^.ƥuG=o0m[m6~kmwYL*JnGs,C-#iP#{|?GB6Ϩ|J?,(˲-U*i0%[ŔI9bS.qe\UUŲE[dW5St %.@9]9k'lsצTSVYKJv<<]Q]fk3pk=9\3Wɛޜ, >I-t^z5|Q :J˹; jj &6d^{ԑt>ޏz0ɿ!4}FWۍQVHlxUfQ4;yO^w4*퓤U6tx}]8<,WȾERlv6up3e^v^V(ĐܬP!*1dl5YZKoA6v!xF0Ǖ 9dFCfC53mL2ӆ̴_D"5$R FrO(5E)ΪYQ;,Zhw8ܐ 9ܐ ې ې 9ې ڐ ؐ 9ؐ 9ؐ{ אk ֐k 9֐[ 0J) 9 { s 9s 9s 9C 9;KGnz=ZvtrN-1]76\^[;>-Ƕ d2Q[K厛c*v1sdA֍myn^փsbƻnƻn ^J!1wQv067PcZJZVEjժ bq%VVau^D͝ӸC:2_>K8r|KgpgpgȲoYs[fSzSڹj{&Ư^Wu}U׷-m_Rױ4Oz,#~;jJ"ycAο7m=mmȞ3VXfo_{k$kI}n'dc:ͣtܦwGz6ʖB\m=OA5}T/N6UyIz9"(y0~rIrW^kKo{ѣ]\ld;3;jģ/'wW9ɧAo.: ^ˋ;㿱X~[_n20ׂQwP Dpbph4?5r}Wnjxuk? a䊅rp zpzpϴ}~eA_So9൛-˧]+N!w`I bF|Go~W]aaƙxOK>W}׌Kx!qP ~a%n*"(lw/ iowWkƹzͽSt.z"w7bǜKۻh0Vg=}֜ێ$(YA zS 7=)dePfxsV+^|gw]RB \ſ~;Qǯxק:`V3{ 1fIk(.}Qq8ü`^DΝ?C tw|\+l@>Kяp%*Fy7z~sn Mz OҨ(YXR,7oί n<*2 ו?d؀6<0M9Y4-с}Ҿ G5x=NFrө&Q'}o 3hEK! C!Nة=883m_`_;^v%euxR{vڰ53_,ڿ(u'fPÏ?v5?qO?J܆Up/+܉_u˴g bs~9>o "T?Fq7C,ߘ9-ė(Q g9>CV|t8dg Vv%/+yY]=Z8AVj1,zWQn.WʙKqv>~cafbʺ6w׻]jcخ6Wgc0{i֟6.˒ީiw*{%j;]i>$3cr[7ƒ_-\jV+w8z[!~+oŸϜŒ]}2򼳷ϕ^pYMHq7S\?A=ۭzĻq3ug!Zeurg˳~=r}Ψ҃E݋ Q[+Q[1v/v]CsK4DkKD[KD[j] R{VX=-=-ҟc]jWs,PG7KtD7KtD7K4D3uWL^}tN>:Y2Gtuu}['KtD'K4D#K4D#K4Dc>c>c>c룋%X%XJd.n1hahaha_бSF1], Ea(,qK^4iϵ%/̊ Xzwޜz>3vT]3ŹY^'FrgHfJ~dV+D圻S9W͹T3[?ekf]>E/u܍Q'i^:63_5:C-CxWX-;rPM[l3`œ-FvbRlu8`ؚkπ0ܤiCF{Y&*#q\;ШlTqvĨ6@HMM4]F9Sg'҆^KziC/m kY}vG'pi?Z:X׽x_V_^s%Uo2甥ЖgN BPeDzCEDEDVE(Uↂ[Q@(fT6YBAD@e'9iilz䗜;,o'3M111111111111111111_`cccZJjz/uOs$Rau^¯3kHKTFԮfadadadA-VvPJZ!qhTXahTX ; Vw0XahԀM 2Z%VIEURL%,0N*Z'IE뤢uR:Âi*Z*-hSX);2hTXa`!4N;vX %VY3s V)X(/Gx+IUDhQ")zwup吣Q[T%zC=x\:Xh{vUȬ9Nnנ hY49d#[Nː2,CoYˠ?Ѿ;d';?v~ ce ē)HIL$ ?v zvr,L-z٘ \i,gBca&h4 Q~\hCwQ:4 BbzJ8 B!1嬓#'HM3aeKbyV4-w*UlQڊo 'P'P'2n> `omR,y׈^ /8|-?XL (HQ#!/U&yOꋙrA)t>tOW$ oPzs0AMcd5pOҗOO1Bo* }BY5EI&s|z5Y#Z͚DRY{f}hKg.vB߳f:bolBl"y:l?~d0WbMy(e-xu^%pΒy ^ b)˽ּ:x֑Ƭ3oYOɬ7OmX_ގc#;lʻ+xOޓe<|ȆA_l8n7L6ocw;n>ac}|?Ÿdi?˦%6|>_Ȟ].K2<9{+|a Koث|Ʒo[;-^2~a~ca-nq BXU٪ZU0Ϊay&KZ+˶bUY N+jZ~gk5aְZksUU9L<-sl,==yg 9!BPVq}q@c$1N'b"$&bp1Ƨb:.fEVdxp}unr~nnwsm{0,q`W+~i\v]ێuvK7Sv;jp۽¾¾]ΰrײݱM-8{}=՞Nqg3ݭgm9KN+v~~~~~^b/q/?sU{J{=lߺv{:ߥ~}}w2|w ]=w/}V߿ݓFu?)+u$Wc5{~xzJ^t)]Kg^4gO9HR\AF::8?9y:`;N>1]g)LհXh>J'N#&EªŘCF^; kX=؄Ӕ)J#$ϸEpZ1y4 u#͵Kؔ$g?9:vܑ5wnh_雺{,#M^q`,N&n^Zg<{sPxs9w?4^;<֕>+PCp ġD&28 lW3/JNcarl(:)Gr:ۙ>RHؖY>Kb9e#B} Ŵ?9KJܐ?-`YSMsu??3>\=Jn;!b·>Qڦb~qdy|]d{J,i.zlM_l/,gP:^ ,ens~Rf"k@.KuheHXB?B6R˹ԩ׶Ĭh쑞1"'RiYq婁:! 􁹅Ң{vєӊU±+WGj[w'ē;DĕKKJ\;p8[4n)\r;Tv]꼠(<4e1w;?;G[~am1OS2xt;W~ M>0̨8Yb9you:(=;5(jѷ@YڟS#.?YouX>&͞>c/01uvvuϳ* 76oi(K,/?8Gu:W0 FηuNG%|=F#?+0=fQY}S?8)'9QXk6K;68y͜ ;g#N;i2<4H&@gYf5n`H?J 7t!f -Ug.3w<뵒 ^R$;w?ߥE+SGK*lpc))?˸\~g0U@)=-7ioێa%w_nLem hӯEyWN?Ϭv *zs֢^e39GAUPf0~b%G)'y%f&ţbkCP9 SIZ;Q\N)=Ej[ Qv8QF~nl4o ʹjf1+-N]OJ_ Ξw&v\ֿr%g."iMAo퇔;. k%X:/,Mv;+%s"m[IБLo)㔲߽D>_C}E_?0)Pګyt=QvҼ ƙf}G ԉv[v^S4xǿԸ ?4crLW_ќG][jrTSݽ*Wj,eKS?:uv2 \-r̪]XX&N9HWbi\NF5@߬o~YG~Ŵa:,s]-_]B (S5;(b?^7vgt+l0w/L8t+ͨ5sk=ߌ^KWu;_oHgz^%S*UgOWcOS[!i]hfWǣ͛aa}>Yh5-s2jXLj+׬GދeZ^VЌ[Z\WfNs 3Cmᗟiaif{FV |y_oǜqg~џ.`s*y8vVPc`lVog(B26iۼ;2${w&lgFqDw-u>?=%ڬbΏ\= B:/ܸ(dңߟÝpC&ƓBJV=t] vGEup:錄^s:]0Gh}'7bD,8 Q՜j&^״EkWQh}ۢ8?d+n[2-r"ɨ9ʛ9!鹪t)G=iMM4^Uʥ,ה0N[UVUY8A2k#֓azր]nbq,M`l6 d;lddddd~fGI)o&8L5oBŅ1,|TR~iuWVgEnoV]z=r[>f''yJgøLǭʲ(XW/nTQ*TuUCvX51_1_LP)uj[..1_0_TשT5uV=fYUʲ6 &5Oͷ6jڪZ[7k=Şjm{J;MEz)ɮa PwrGPz&AacQ8vJ lͲPϳ!{H l{\25byԘe`;vQg}vz f!v0?!?Ž@ Wu4vn;A]o7~gC$s;fN]- q7w#C+!9981 9q19qjyB<'{V{S3O]ڳxv{x~%7f2".BLExAu1 JJ(lM"FP=瑥FAʱb,8aObr1_R}̗SNSxXH6 7ʍa܄6H :l[n[kDHR#B@TI#Bj!DCq!h\H>iũ-- QU3 :U **BaS5iRTOEHȣTyjHbEz>ETP5$aǽMTOP͑2Q%R]B$Y%SjZR h ҷRCkW(n@Nj._"ewQ"e2p ͯVCu_v)3-d[mEj4Cj&z@MjTAj*R>G#?&i(q8r#'Փ()f\`ej2B`ej_ߕ+)ޗ|*U ]4C|C9 tu8`n$@mnvw{ ev ] na[aT59`+0XY`eʵ >6dbqA 2N2ȸA-dG2K:IålPr[N%w6(yA] JNJ~O\4ͦ MR(SZܜܼuz#t R< `(77']xB v#x`7)l!~ `0`FƀEDEC=.QpP%l"g3$0p3 2*6a C gp gl8p W0p 0Jΐa83 0rp x5^0Fy|o{=4+ jwEU|3Sj =_/5_Z V`M <00g xQwxC|guj78`V.0+m!ʞccTss +S0J`b""*#>&`eQ0aeBDZ57,AdL .w"X/1:XH4!L 4e8U7æ RMu3l2lϣ w WN _ 7LIFT0n .3\B0GM|!@nj\gO7| 7L&ܰ0E˰>3쥖'Lbszʚ2$E8F6$ )xXJa)u Ki/[p4URUZ!}k0ƒhK+0v`S[:jW8ņ$ƒbK XR c%y^ cxKS[ oiexK- oIW˫qf/iDk嵐hpK俐rQވ'If"-[學6y$w;jlNv ۩#' Gsyʩr*$sa>I`>ORs| J y|ZeCB^5R./J/z);}HG~0N)u6LiaJ] SJ3L)0)u6LÔBg͑zi6#%f8R'lx߁m۩-w#WE9ROÑBe;: Bّ_!9&/iTLtC / IÚdk`MaN;Uw * J"͠"WKZģ UU9UTU *N!H5Bͩj8USͬ" *I%tͬD UmU[5Tꦺ!ͩBBt0POC\Pï" (B]>U į 5\+\v5˪aX0,KӰކe5,6,.͵Z ײ\k:UaV5L5g3TG=fSwfS)M%j;y19($zduGdS|oUr{GzGRww •ޕ]]C kk_]O(ֻͻ{pW1u gs-pQgϙD${VJ!cABC%B.g\FZcZc Xk,5c5Zk9#IM%y]~=9s9gy<f$T TO5R#zb)=N1fL~}4O>Jq8Sцt'xXZEԄi#^R+^QS;^QlB1  e 1=cD1=1OA;`}w`∌~FߢoM!K{ sXzӏH/ I2O21!3q11ycL{" G1yw3qJqOc, 33➍{n[W-^\c0$1Ɠj5us4qm>yO\Xvo6r}c|%,N2 uOK1<NO4J!> /@Uny׶ڕ=?zsk-aEcjWKbaY,S,֏f j 02Ua'(21t:nM7q:0a{&as?!l|d<àՑ>{eek7Weornw#DSV`9rV>K ̝=Xs$z~ܬՙkԘ~ug\]<޽f#uV_~qk6Z ڱqO wml+߯p[f@$<&0u`gg߯Xt$X0|ޘ_+77 ֣)l^Qv#J_Tg-bb."Q<%h ze de[(q싐zoG_ׯRyz_cWkWWDܔ|Ů%XC7 uػVW oeOMO;_cj|ԗ_+Tyo56jl/%h"ޫ+J7[ őu(v!JH* 7O0܈``4ajB'+Ӈt>$2exAHe18P7B2ť0^\9z2Bm.}3$2r 5gjN? jG#]aӥ0]t$Q LLLnc:zXvi.#j ƝuL5M4m8jX,' M-[$Q EfZ7iDuC A~ԽILӽ0ԽG R_/ajcL3QwDkY;q4j&h&aaaRv%IobEW!uia:Ec!5 4 ]70ǰӼix3c; 7Ļ 1Fû 2&I}>ןOcXJK1ƿK%t PEAOkh-t9]AW`9+J0Oh#m`@{''a}0b+pC71}'2o&c͘0ocf3݌{cf1o6cf2{'c3ocw2o:cf0$̘w2cNbLɌ;3Oˑ qYF2N"tC!D 0DB#} bDy^A42Oǐ+x} ^?CA4jA y_A%Wp<8b8>!xg|51 x ÈD$t.pjjZv'6҆#ڷ1^mf጗eH=md0:l$>wd?'+ x׷3N`x=ᵑ!GplxQP;E6? jc0v$"jR'??ccXww NQaS@,cEǨTW{jbw,cH`ac>!xjj8DbcG4*=x,x :qGT챌W]82P'@f a30~[}0DNNcXG099 +0&aLH!\_Gfwp?MO QQsߪߊ_;1cx0Ec]Q G6*ب0G!)clj~2OxjZɌwǀa 7]ྞ1 3=37Tb:C|c10P~=&L9BM1>8#ʧ4z^W#/a}ރ) '0.`<6N /0JJV_p֟4+y;-a냛x鬼Q#,6Evݷ@}g=3K~"1~2Ƈ3b5c|< CSW- FvzBBݡӡ –?d \T , bh/K _ї%^.±@0`}VY/ e:1B<$]$)[ڊV蒈`SJb/Jv bxS % )Tihϟ*_hbwֳ{YJLcv`( :ןO R$? Vg s(''ԿŞ9IL⻵r)CZ,Y$F(BHJB){EPv]' X[菔[[u-B#y~^;囎gJ[RaG]p Eb JQvv k}5!mKXXP@|R(14)-BUWІБP_r6T %}ݟm<8"Pa4 [CBjXDB$ʱjyX!,D:"HZxIDJ r|'ttVhrX OI"tB:-Hr%ls49SΕgMzqC^h yB7IUKrԍ-Yer]0y4>pNNMr ed"2ŷ bg {|i[>[QF<9 aFU6xjOugs, pO Gck> fas~>Җk絕pN[Zm-\L3о=Qp'$en 7YO¥)3I;9$\.Nݩ̶2tt \.=b]17ST{X|][U}KצWen]s){gОц+D}jtWco-3mNOs?@{cEq{yM}K_/qU|Nnz~w4DC)}6#̝@Fpӭ鯹 IvI2Dt?B{yI/п q*2Y@2M{4Q25oi WWJ+[D']X qdGFts6JS B`daW8/1QZqC<"^Hz)Y4GHERT"cUgW$K1S4}bFJ[^dSʖJm^\LBRs F,ǒ{XntNrIscr f9]) BҎ䕛e|J*Z|>/їM|tSބ}d,;|D> DZrp^N>xBm]U*q v^X'w [iL狅2.}Y)J#-UYfIepFZ!t ;ĝbx}*f;bxo/[h2E#7C\,JR WKa^L0:1C%1dY-GT#HY( _^Α9R*F6c ,y"G3^_O-"BGPLEʼʗ'Ky_o}+{`֠oh/k/e5t:Ѓ~Qx[1xyS'e3 nG^1 ={\}\Ꮖ?r rC_HyJ#g fzCbS>%4M` %N~_.[C˓LqA lIB{Mj/F%tY{sh+ cJJ᤽X+ݥsM\h՘v XX1ݻOn zN=EkE-0wPb=)z:xJܭJIJަVq:>Kj4IEG:Z@])ۖd=ZmFi_*|kPT[J\,QmE+ʄrŦVvKrG\JA>My~k$Y)/NO %M kBz~\S7֠|6Yb*Z6{TS+tߟ?}WU;s|9~'>>JO+|˟S=noŻ(D4u YL@i+vZ2Ff PY0Zk B*.F[;&-廼1Nx4:zQQ3f6qfV˖5uY [RpKsKwe;t|cgV^iWc9ט[gamb+&6Z5W`Z[h/tMh}R фe]֞E8i=15'7i>ҰĴğ,*vOٴi5^' A|K˞mV~?SzLOiڏqO*O2lOҰa owލ^ow3_wmþU T9lSZu;{R =̢O7bYnl#bj·^[' GQ AFIx;5lw_l(gnf;BSCnC_bkelor7Ͱ/@'m)W* I>kXŤbknZeij]ϋmB]4oc}u#dȖ,:Q+gF=[M|'^)e^n"sRstyv6eyv{5oog\^>z3ssœ9YgrIo,޼sUy=^:LY|>{ ,PA} QuPs5yڹvn 8m㶁{{¸׹!{{"r![[P0w> @4ܦJSAL؏~~S  aaG¨cv"$ 0CH;xK S] K\QTljjW])uܧnT7BffܯyLLŴw';k%&ˑ=ܘxim2mKɼij$[W_2%t8-&M[U5K-&N˚ 's;:9gkO8j/rKs-VqU-5poU.K_fv;Ϻ:/)OoPΫ?ʗ|Jc5z|.Siִzy >*~}ŲR9vjsf}j|+f.n^lkPUl7T-l^XjnkӼ1ږ`<m1ْ/R7m5rrpnl\ӵnEѭmpP>OXVg:R)|ܱl}Ze^T][eʶi.3ͯ.qYv~IB|wL5&n7*=,ONL'sUYj{Q*̓ਰ̯->W]n5sw;Ü'ܻkMjtq{DκmI^ǺeQzMem(I)}A{LݖVg[jǰ#{i ʽyfG61R;!0Gd%9  k:Y9c]x-}U(*W3߶zX^^\w9ղK]w̝h-rNZe.]{ZK+i2ڝ,a١էMq][\Y,|GuFm{ jb"˾>k_\Rt_$*3k.VYk7_i_ϲ_m\+EQ-y26ԡ JGNƤ殆ӎuN򒚎EEXwyujosch拎3$YŎuU˗4 J,[ީh{Ms;ٝ\;:ϟs CFd2\dbf ivi/:\DDBMEAdDdA""rd2,yn͸/UnlS;O9}FZj6-jyrK66 re9u$LoMzK-Zok0Mi@,=O;Zގ҄pֲּVwhtO[40N2V@sN.hsSη Oމۖ6Z ZgRZo;9]H Sw VvۮViy]Kn]j]Ո4j·<ǏZ郴pn $d̖ZJ /6[T8mq5?jnii/Y8\.))qOMpsMxO2ЀJhL6A] j;}x:qz N<vLN.J~3zx5u.]x7 4_eჺle+haH+Huպj|k+xI|LyoLSqtNSt >rd\|V]xF{%BnWw;gN\.ƙ%?k|~.Q\ⓐzBHħ EzOC(>/qD٩5(='>{v\mH쏉p9Quvqu:„:„:D t ]@Q *$p8\/N4_տJ4u3$$hk FO!x߄!oBPD!Zz?Ahk.I&EO[D\G| 2:ϐщ~ zxWAb@sWC|C߫M}ķL|(]_:>9y@k%eω-DD").~~u}8ւuwR f+X5V0Bu9XJ}(U:cQ (㠔r[^", KS{UR%Z7C~G.D%;abFjJSԘ&JjVV紑^uGZ>Ił#GOSY? :}\`;L f"`ut9918>~xw$83&l_*<Wg6&W6KG fpmyx"(cg7w{L1Ԕߪ>״M`<չ^i^ !B>Mz?YK?W~_ Ņt sPfJ\|`~h"4Vum^C˷#١@z0WBsvhot4E_q&MzOknРU .iMhvmP,v^TauItHMifHeM,5|-sVt 9갺#0>K@:۲) 0#[}ď9ßw܍%Ec>;w6t6' 4Q 6{#N\6ŵ$k5ڽ)u.ǖI,wX'٢m'ޚQIӚ8͔.#[$NRSRrNw=ӲpKȕH x r>{;- n&Vݖp]L]JnZ mfu[ gFsKiYcsINrg9Gm'ucjlSu(܍óiTwK2@'{tZǽʺZIv9Հ~W>lۖU,׉'کam֩G0kqx ,ǠS6[)ϐMQ.3ҥư:ɺS7S][Ng(zR^ީQǞE7-/ؖn˂w5(Kuܺ]Iv [,֐Z';]Kn]r= Gщ=Y r3_2{v'6]T;%g'~H'tivAݞ/ykft?Ǒ~{Β{@y&+juDʜ<-jUɒ%'ђ 2>3٬ϔ5QHyA:Qze)sKصȔ4Vyݗ2Wš*7u¨`H&w¨t뎷fp_ykFܴ#rS)UYxC\GYLEy-)Q"wy{ŗ9g⑥u (ɤ4VZ++JbMbE).w4,7ÊA5WJ9Ey"c./PȲ{MӞ r3 L|]M-e5# u=Hnzfl'OˬeXvl_!F_群a$kCErmq9M3K4gs29(7 .M4Ƶ$XuڈkϲhZR|45767Þ{ZB}6j ˤb׉fYxރyc2M*G9iNZPSMcPj]p-aLͨ-YjXْGܗmz`\3hw7>[JBі hqeX]n: O5 6/3׀xTB>aJmgwPИ)Z9yգ\M<.ӮCĺH^l>gkvy]ͨO ԣf} n#ݖ.R+ oQ}r,PX@io{ۛ06]ԒUǰw䬳%˻f[5l}eQ[d6MM`ƹx@nDvA*ЪEA;Ī>mO}}af e[Le[x_ܻR3 fg:s+>7'HwU\|)֐2̂ldG!Mjyڦ4HKҪ)mHj1| !! L8x' cuDr0Ɵw c|?ҝ]Ɨ~@% _W A8"kE'Ax]ס CUE|Pp "> 5Q=s:̉P=&7z"*z"nADs^ 7r?\/BeD|C*ß ?/>!?|_G~( {&go^A.O˽ =?={?Omq jX"^*"j@m%U" ?*"CUUU'k@|&boďKk si-vuQXF>x&\Bk[rAyPr\Q;K]%q <.3 J7")=(ԌRqhWg;Zk cwoȑAESɌV i`[llMKtYoc"p.RW(#1-ފa؜[wkN~!Z  ]CaVx.A1O,MC aCs9{+8^G ‘s~OVR#9sNO8H$.L_:a= LM!M_,~! #(ktI+KzPIJR)U.U-Jr /ד[&f^q[1|LyW6QMlV{OUU—$"?%f!ZdGAMՃ_M(vȵr-b.wɃ6Cs#Nӹ9:q e:{Zwʑ=hp QO@Qiw/T%~ & "kr,SL.Z֩-_[;u YUJ؋CR$4S>Eq߄Q'NΡ* ӑ/^Ka8~`DF iB8& ^p>KL-1D@4?į ODR(gF~Db!9qA\A/O1OzAn WZ_#7`3 􆵠I0UPCފafPKHf+XoE2an ЅhӦ+KItZ*$T/U@ЭyE~mлOb]\c/ ٺ{yo[L9iMwuFZWjvo)|.OoIC9NIBҐ4.MI3B(GK'( bRΔ)Y{eB&iDZvJA'j *O˳R)I{99M8'-:ȢGSzޥc\DZlSULeR7ʳn(\l1'\c}k,qk^[P\ A:~ozHS/uz=b_S|DuQ)߸o-^7T-3tg]}coW>d VGs1wxڱV~`!f+cBL]I[Z.+85NWqULyek}!H׊H#։V| R,uH_C!b߀M"B/ᅪ|P,흊< }pթSqѩS:蛀t1D8[mHD7xT9@Ѻd@ B#PS5 G!P?A<>yuWu %O#ǟA?9|">BKȻ?Dw_#%ȗAkRZ7Z4ȗG!_/ȗE^Yߑ˧䷊:`1:<:,¸G (z,~'u J0&j(2[6WʊE@ G؎ j:}N5=XҩtCϛ1zGd1sILXuV]$jNZjfɚ'ٗEsmCTY 7=’.bTYˆ7EE ┸,iQx /Y1</{zgI3v mdLh6d2C5[:؀blslo6Y{ CBRp 䱏#M7/{LO,j3E9Kt!)[k0 ؎mjÔ.ܾ.!5 S@:Rd8I: 7čp$naj-9=f縛}^TU+3싶DUxԼ%Ln' ;i5NѝL0n5ӑa<$UcdSP|'1+IWӒ\OK$CZ)<yґ2QQ-MT`p%M1v%v `n#)0}<=klX(SkciƮg2i==Q Ғ@>X,t~EsE3=:nf2myXS9og[!?h?]5g<1W sOg*H6|_5bT7ȼkYƝ9|c/u_3-h6js`W9aX,r;43ͬ;Wgll%la{~/Ijjs~}Ϲ޾?>ڑ/$UU[7:갎6r!6]֘RQkHX^[\7_rPNQ}~N;^ `/mPk'-ST5i.sjpf踀-`8ޏQʣ4R[lk[V j0SFi͵7ЌB' ef:ȺFuS}_Y{6˴t}̺Pj_~dEV>lת6L"?PִFY xy}Kco7?ot::˜롁OR} ;a`03ã ힷO>~w 7ևFGOQ ~28-"^y߇~]Rߍ(sޥY_*EYWcꊺjD8ozwѯ[͛ѹ/?.gStU;Gʅ]sժmƴzu֡vk(B͉'9Rs.lo%[ju,_&}5߶OhZ^}^l@)/W[55't tVku`bX.XGׅUݪݪ-[?n߂ݪ`g`jVح:Dk.9[!l!;g4Ng&Vu G׈}v b~fp6v<q^<= iKYhKY8'іpm) O>y[xO'pťhkZ\Ix"*zEƳϡW^<^y|9sy8 CrV8.*?5_ss9$V[VV_mc~f%ւ+kGbNǺb](X3 coB'.c#BȥF!ϥpBBr!.š[Vi4*/|ߛ?ZNWWڴ%eESEUXTUۮM^匊Y[9b+ƴd =׾VufJ ȇ!Ɲ#n{].cTtTE*fVU-Qt *f%:2X$hZF]{=nב }ʨj;[+yҠb+XeUtt~<ʛ`vTrAuAf0XPsRS/)4/ -J #64yZRitxQP<+Gn{%gHKfP Ud=S_UGF-v=Wr\3ѵ/Q(tw6?'e>Tܡ~~V2cVbvuϵZ8nE#ӔhUMƩ͋ mohzdv(FHNP/4u||&jkNa(iNaBT!5D]!icAeBbFT]j{}_zܕӒDf|LJ(%CշmLS Ƕg{u;>цc2R51힦AJP,ɐm\vNiۓav]݂$wa"ƴ C`>/:s)츚Ke vr˥m ܢm/v ]4Ҟ ժ$`LV,\Yѱ8j5ǐfj5z,ǎfr*8 kmb\JξDy {l9_|ܑ6y>&5|C%δemQd,L7 qJci7O6nobۇy͢f=92{Hٜ6{K)$$f=*jϱ'g{sɬ|&j̓FT8vG)ҽZGeuHDdulRhO88̎;MgQ;G]t j?j{{{ν/o־/P!,''iD%3ۈ" FW9BG}2@>D096Iva+dZH#9<滈Sol%Ҟ3it'Hi/OH=st+geŒM@>q|\M vsA\ mH#et*:řM~ϙb#iSE>N~$X$7RtD J:o ZouYJ[e:m]nZw4$@^IU[T( AiQJuI߷.#ɨג;bJFr"H~O$'J"mɉXY]֗qG6"e!k=W/{LSt.K`uTSKT9jQ&Tk/%h#|_۟)|r`7mRTfdҤpGyWާhL%-Ir/PI,[ST]+h mJD%}]EUyS[u)gnnkiI/aM+*n&)liJaMA_.i o-=D>&g _tѫ\Q$m^'Q,JSV=9RR9?QeYgzP6R I_S.PdL'2m=wh]I +J*Er;|H[yO JB teH076'?o ެLȧ{ 1&4?ѣ}|H>?`88O}lT!<4:C+TVRH=o~G?j7p ؎flLM񥶔̻^}~P,Ok5.%r)$5zR \8$ejWfJԟ%rfNQhO#0qa c9}7I%eZ^Rx6L^%6LqW b#Ԗt?C\P,s%-TL jVn=Z"J-\!e!d\.+P)Zj-mB,¢&C0;+RT(x` %rK$iSf #[b2)^fʝ~Pcdԇ Y:c1MhTĈͺFwUԑ{XLw՘땳-XiԚU.N!F"qGJP>]41Wj%*yBfl*P7U0^,w^>6r'Xp*Jߒ܉oIc Eq5n&:,h|I_7Toq'Ī0n R4OD^SxHz'?c;HToޒENGFF8h\%gCKLe~$62.U#NL_J(_ J5)B1qկVr*-M^幼{xECTBXTq̊[g)O\ЈyHclECH=!JlXlqI?PzvR"Ύ6sSj^0B6 [C;rBB,Gh̞=.eV`K ᢗ)h$GyIVH^KTܪ{pG(^?GƯ+/Tʉx)nUۆtYJ~rrH*cݦGf(19 +`잼MF +gE^@v :D^,N71ݦX~iAh 3+aQ7sřOe]g tOB wITi ODo)aqAqi JV*ͥHKb |s]jƚwvc7šaqobo'qU}uc!eUNCI>>a4^iY1kh0M;4 Nߥos빇#1 ]Xnפ{ƈusC*&g+Fvz+n#=Al0m.-(AC0ix'y!|S޶R(xq,=A7oMKlt2' [N Aj5dr"e2߽d6u$f 23Sv X%f؄{zMSYbIJ*!2˽c4.%mh޽ere׈}'қqicoA!IyR~aB;h*GkD_2p0N̥oe2W\6*Ì0Zܘa6Ptb܌y<PGmn8-u"0ar)GuRc s=az|aTؠS"LȜΉ 5%JNK0kL~!.zc22Kb7SL/ '܉|Vj8R-OL:L_䛱mBTAy餧IQ$?j1Z&Dl0)T)N52GԻUҎ-SH--7SVM|Aa!zo~;'~vWlXHzD2bFOyx˩-)KOy0teLՇ#jcteČ!j𝽺爺҉w3G*GG? KO_F~0%2u׿#MS_&E>k;tȷuCn]aCâ vCȏ5@:v9uBn N gWP.+݅|C)Qߊȋ}Itqt5&r}@ }-P}xP/8Ʉ=t3W~_E kc_ ~,Wy:"kO?_{::rW?vߴ\m !#qjv VS (V8:Y:V7r ͢G5b!M;+X q:rw`+""[[ p= ֣nz2ROYOk͍E#>5Nm=8U©Z8Nm-S[é%pj8Nm-S[֋pjkZ VZ8 ZVNm©޶vq1~vytO^7ᐄWC 43"/#c0_yMQ8"F r@?ynFc[P|+:r<(ރ Ͻθu s Xgq``13&ud˘ v`1 2J.9w?-&tF\8 |6`<|<o#I|:^@j)>2@-v%x!<00~06݀Oi ^!"@Gb `Aߘ]t,cB} y\( ?|&o" /J2DC B8*BW$<2fe`@5 1 \(jW=u%?!rc:?!| p8'djC{8_n0-_|^ h#w mCA@; d.`2߁0baVa@Nqbb|Ff?;(lW:6vEr I@2TI$ATDGLG1 :QLj:11az}ԩ+SݻJDMrsA(] 3b8#O ~<7{"o&O!g[ 8B}ȃ4/' n*|!Xݎ]!pR^;\ʽa-px*cXB@h8 uJW%jƣϳnG/<}w= ~/!Zp _B |#xS{ 74k!o e ]NHԆX8CCҟ n$=<_? y=ݑ:"ϡ=b@&?Bgy81k %W)a|@l03kK̽ԩ@'П TIn@5x^i/,v|}|~m*7.KǡCHz1GKIq,:lG@>N>4"k rV;m,{GZN m#dIt@<cJ砡 wV \#HioPa:M:hoo= ج\]{vw*V/Lt|8X8̦^/K']$)df']%,$7w2q k 9~@=xX,_F,♇L.I沺G<", $gC7yJhl3LRGd^ ];5׸+8-!CDSM, }̆K-ry*Cxd&F'e<8Բm&}w&J39<'-swHpAʒcFఞ6\6˘ǝ 'p5@C#-մ~v-Ì9l>/t&֦ZhH: P[}3b@Cڷs)Yיzz+)NßL '˘ ̀xRdflvΏsΥ<1R#3 Ѵa @FBjxQxc4W,f4\dM,+4:.O ?A&͞`uhzï@؝8uzed,ᷢIN %߅s`=꼌ѯ #3 ]`tHدf}PGoۆC^g…\=y$<G_aBr3?:3r/H^Sm61Gvڏ'fGg(JSܙZ u+$~[$:~ֻ9ch^>GRg3N u3-[fd)ỉ&i-AKIaPh>#W=}ŧO|kQ+z;F~*|Xu}}b^ /fhBU#[/f/6'%It3! ꇡg>\fF%a/0Wʞ6}VBGvCqKX"%} 憠L|R&/dz*1i1Ԓ@xLQzF?^>5z{o {m> 5_V*1 g&Y#@J 'S|RutYCzd,#ְ [Ķ\VdhF7G<18g982zjz.v+ot/)d{.IaY1S!˄< ߢg!0 :Ӓ~u`Fn/ ҮQ RMTA,#IRB2BFd.z| Y5JJH`,ᨭf!!@[YN~q; 3Hu.QqR6Rq_퍲zu4s+ϒAܚ[28 DGj+~uVje 5q#N__xzSuCӯy}0CTE-83FсՁzmZYR4]va C)mx%KzT!&>3OX<:jPvc)W:1氌м^Ґ'tPGn$ȳw6v<[Z|._f' | {3p-tp2mrb;y <2ԅ…ܻ>FߏP dbsUm3 KCͽp`#h[{L_" ޗ+eoClD 4-U>IIڣY4X%uьA g5xP*E`4>CiƟ~&]IhVxRȗCm*%3/e Ј^~K%wq&0U "3ZOµ2EW(IVdO?'uI0Rin p2G p'1R8 T!T{ߨ)Dօ@8꺪U #cI.o:bG<{Aߌr2/;4мAzD οFWw߈f4{RM<@GB7k5l@7vB(ل *)3ZƚZw<[ e)O~ W߂+%w"l"d2\ M20 X1Mlߢ=W%!ׂGц?yotf-- GIs󖗧wyp0ďǡiz8ݱvS}'ا:Fe>E>ցӈip-)<~ǽGY 갼?wdF㾦a 9~#a.HtVe'G COwyQyJP3G (W}u-2zwӈ=qN@T>?PACN-qX7]--'El7x$b }7h6⿒0̚1r5Ѹ[DlWBt\(~_UxBm1ec3q_۝Hj;> }JA썵1hZ#9|LXkH:I?m}՘x(Ќow4۵5"kjL?uv'RG~ޝ ưE9p)7SJȰ{aÑEK;]R➂saIs,R&GBkǴ#m 8.6qy!?壹9rFGX;OӟBQ|ԾHl$~ۀ,WW U: Dl89?[XvGG6-1kyNo׭; VsxN|y7uIU}WnM<k_>9HX_~Mǜ ,+^=!LYFJ5}؄\X5s!\L+OlKvD|/˾DFV7K醌5e0zft?`ΊT:V*1d^?em Wa (\Ck=<$%/9osV2˰"$3Y"ѝBS,HʙӛWG~.w='q+"s< 9Tsk/fR72{MXM˨]a OW{N ܭV /vtwxx܅虛;<9(~],g았Ba:\H;5%|5HI`7b^X_é?GO[@_%ٗO_!e}%+;F_XO ''l$@<~)+|Ԗki'siuwN-]x6k[K齕{"zDml;Q{H!|jdðaX㐐vetg %o*7#umCzvJ!㗮)'֯ݙ\F֫3pw=U)>Ln̔]~qv91L%šcV c S1.XCF:%d%);R쐲zeا})'k]\8C{[Z4KFL§ϕw >eב#H\S 9Å\W|$$5<MShH-b,,KSp *4qp2n7q+W?oOфÑh `x'wa hb&%a 64MRGќթ0P6h=5kjߊIw +T2\2\"5ԠjR<=%3{o#@JH>$9ōhHs %0|1}Hk u6mI^BC  26[0}A?RgMYx r%K% [SYXfV)fTz6J}t:fTv=6xkg3v1Iݬ=ԯMNEB sZaxВw>x7ii=] / "\IUୃZH:=>X<G͑%wEl1mF &Qcu|AL(\ ~3z.͙Yf[_eNnD[T&[KH> SvGgha=w|G)7uDN~6Y#??OF셾_*vSBp^/-;01p 2>EH!9s,Om5atOS0~H$/ OP@gInVO۲⡲A0p]{M' ޳?`xֽ vXvY/|-hM0r6f~*r[Go@>nºo7 ޢb[$_[yˉ]O=)S<  D $S+-{6JˣܵE!G<#JIȯs:bC6h5byZQ~Ƴ_S{p'qOG<:ҀzJ=) !Sw5 fln>9/v&ĠF)J.do籔-a="IΖ[l$w_!=,3P)17j_կ0alN$i dvF4U-c'gSⳛ=-R(g&oۭQXwǣDLqoOGkG˱ŏm/[+(fԳ7Qo9۷Q~Ǿ忹D{كޝΗqUYywyx2l?N1lýQFYN{OOQ>([k:Z 73/ܞ::lF)-g:iX6}Ub=F˩Yod<9'x<:ZNh9+sƣ3 o'xq~'< L,,3'IJ`#aWkIp9WD8 Ά 2rȂd\/W Θ=%ncpׂYs=Oaj,h*=ւu`}x,l:>pGGIOSl.9wA^7 ΅OUzbSǖi$y6'5DJU?2?bk(kM/>gUЯ1,?l X/cVKut8v񿤋M_k"vjsh0f6l;N*n'8#OC]#q#(\׹ nM}g?3~_g[@ꅦsƅlé1@[VwI߽*qwV&Viw&~X;Hջ;5kw;5ΦbjOTwC+>cXߓ*>J?V_:׿yl'ժxI+֧ユ~{vZ`|_!_ɇ|5283=i?]ɕ'_)w;;te Wȕ{LjwڝzB<(C':zVrوs'35m&U%5uMvXIHrWգ9!/d~m_KX9o[bVX5ob~;noW Vߵ$I&C*I[+TI&$gW/k+_[O|0k-߮=R~յ.C kav#īk'.(Q8.xo*WkW^ Y{xfE⓵kk/][8=[^mmfevf--ܠllk78> + ϞNΞ=Ít RwJr76;۝}97>[-ssqJs.ܤ\+)ks׺r7is[YnvnSn7''ۛ=t[VGoR\S\[ܰWܥ_|u5~aۊoKo//+T|?-[⇊+o,}{Toթwsӧ=N !hG$$'8#!^2+D‡p#BA Wu]+]{=vWS=YNs=r~;8e ϜOk54;ڇ=VDk3{٪}sqqlMt|t<[nvujs4 ߕfGh|mrrc/]r"5~jꢞ$}O6;#%bUf"V9o\&G\&s9@B]9q9{rn^MG)Mh}rim*Gɑ819Lɐ"{%{YBP-{{{{K{K{K{ޞƞP= {B{B9 H^BJ݀(w"/jt(yH`Qt. IfLU2r\efHwȭrr*#r;*#wUFUFUFUFUFU&b'XGd\G[8}[#R#\Arr{z!#z!ߓ|_r\/d\/~^H\/^ yP2^#^H\/!^H\/d\/Q^L^rr'z!OBB#LIUv5/z)ydS֒%KZJ.9VrLK%WJ{=^7쵼qo[z㽓Ӽ3s K+k[۽޷G'gW}>Ǘe}Nnj_? 0p(_7777Ϸȷ̷ʷoooowwwwwwwww{a3 Ww/______o???? v@8d  t t TF)YyEeUu ́m' V0+]݃}C5`}p|pRpZpfpnpApipepMp}pcpKp{pW9x vhDTlBrjڅ!=䄒l2)-#Tj5fVօ^ m m  ] }` t81%|sgwxpp]x\xBxjxFxvx~xIxExux}xcxKx{xW%|0|8|,~t\bJzF+d"NnHȠȰȨȘHC12%2=2+2/(,*.bdSd[dgdo-r(r4r"r*r6r!r9rU'zMzNQ߬!z>Rt3M^ J}^ߨoѷ~X?+ucx}1kTnc/WqT:]NpF;xg3͙w8+gM<ľv9;sESZTGQ3F\hў0 :Lц mѝѽѶUWsݰkq7Vܮnwq:w;pg% wnqM{=swO܋'揙x,uuUccbb3cscb+bc66ǶvbbGbc'cgbcbWb㞸7[x<wwwG'ŧgėWǟoooŏďO/ůį'< o"D&QIJ%'$f$f''$V$V'OlHlNlKLM%%$'N&$'.%$'=Io2d&YIL&㓓Ӓ3s K+k/&7''w'ےo'%O&$'/%$<)o*RT&UILզRRRRSKSRϧ6vRRGRS'SgRSRWRӞ7N[x:HwHwMwOJIHIפGkIi5-]S 髥]T/uJNJ{V+T:tx1 SJ*WtYu/n*Z`Kϗ^.d=dl2)-#SˌL,ʬȬɬlll4gd͜Ȝʜ\\\-#eezS,˖Uu*V֣_ಚQeue˦([liʲ5e6m)^@eGN*;[vrٵ-ͦ.ٛ=dGdGgS3K+g7d7gewff۲Gdz'g糗=r<^-K={/\~OSg+_R|]ʷ(]R~pg/_ɑ\q.sr\6W둫 ݓ[[[[[ۘے۞ەkȽ;;;;'vy^;d>wwWG)YyEeUu[;-ci#?&k!aq2 `;_r1|æ6J<<BU?A7?f/xx(`Z G GI"VG[:ÿ.?{G%W:PނކlCvˁKrA,G~O袕V.ZC>}4 MfVv>~[wh π+ |Wx99:^?'yBiN-roVxke+rlVxkm}~>F /BEa.~1oAx *>~[@60l>}~z(1 sN^dC&8Gyl퓐+ |)GTf@>+`,S=ͳ 'b~(5''6޸]Y=|qԃU8rM@ѫ<al* |B;C~SJf!,eU(%,e,m 'bo#ԁ|='VVAD 1sB"a0j##d*xE-( *sCl ;/ 5j |P"  \.`+sfCF;S-]x &11urgj<|%r*ߌ=lxbJyNbOSr&"5l$N͞__{9[!B^ y1䥐B^y9ywrPu,hO㘵,0 lhfc⼍'r9}8wΕ̲1yObZ1_[dIΜ`.Xf΂B0-A^TaʾoU>'(QV0,}=Q#QDG\-Ce^c.GO#*+YrZ>/@^ y:KyP 1">P9ɾ7\@p C.%3x 8I{'NyDj̫i9$OM&d مBs;ɶ<]#0EYrKr.8cii'VRq@_} %rl-ȸ(F'liGfRWg 9M>U~$ʹE#"'; KYr͊ȍGkjT5d0QE 2ѕ3Z`+s[4SJ -#M@N[ȻgG )"&L3UZjq'(Kww-6NrwxH.DPRnUUvU6E» le6idFidFiFidFg`}͠U2h f mÌaF0zQ=̨fT3ag3z=vF;AgqgqgqgNETO%TO%ԡuȾ!:]a_zףhUVhUh[ھ ֫~֫~֫~֫~֫~֫~֫~֫~,`ww-@Q 5fTԌQQ3*jFEͨ u!.DԅQ"BD]Xxr*jZVU*jZVku-EԵQ"ZD]OYv?C~L}(7סv \yp?~8%Iٹ2~~< <ڣJ^+ DyP R(eֈU9ЇZEl}#DQ3;Ilҋ%qҟ Y2H_`A*HJF2XH-~J^ Cȋd#.L^vIy#@$rH&w2%'k#9C'gIr^ SB`V16s]a{v=s=^`/x?,=?ڧ<٧Ӟg}>y`yijI8 Nlv* ҹNgŹu7hn޳ipR\R|T1bbk/##_qbϢѿO#V`eF\Oۮ[\`-)[`qf@7X` qF\kq#./0ZF\-0Fܘb$^`ĥ)nD2&#IHJ1V*F2b\1S#JW#7ULLGL'LgLHW##7)FnV$HAdbHȭ^#Պ;##}#}##w)F+F(F*F)FVseb曊!aȝ`rs y{5z~Huƴ"ZPh5KnfuVƲ ~ƳFc6Mdd6=Ħ3 =C~@(=O^bk RH{ͣyHNkGJ4"^ͧO ia $! a7ΆQ*JX/NVqV {b5f%{b?esl [ֱo8􍕮;E S&ND~".C:[/NDd)J(_ϫe)~^-ۑ Li^ ʒ[aO)-db-eOelc>il__&NqvdX6FQl4ղ15/')/7>w|ʇo{y9 #|$ſGx-u^ Fc>O}k OM|OQ>?gl>OyI/?K|_WW;|_E+??w6~f>.X.ZY'gUsu&6}A;d툭ۆm J-۶;jv̎I;eR;cYٝvjfdb{ڷٽj}keߴCo߶k#{Qy@IQeo֫43u &8 0d8" GDd@CIDDDDDUPW]ל$"ID]HWpxvyǟEwͭzdwC${^f["DMfQE2jDWGmvQ(?6]u:E. Qƨ[TGtS3Vd!7=݁p`4(hHtw44 G82F1h\tO4>7M&%?O~K`PpHhX䩒mjά'՞ԞQAjGc4F0'&IZgD3ݮ֙~֙PL?RLwu:jjδӢux_Q[Vڶ0 kz-"U-M1EHnK~(& lj:<~j,} Nq K"X#lpwȭ e 7&[o[2{ # |>`^2Ef|SYˋjD Q{౭NZ|GjGyQ} GGk˴`/4;*)B'C*+=1J"A߫"(sr_aУ JBcU,GŸTկ ]-7(k]+)}m Bd"Zj[/ۢj[[_ܫh,lB+ز6Qmt5}])@4Jф ESіƋ"fO( !Cj>8A U5L4ib63Lv>AC3RJ{>z7J=ݛ%L{5?W?B?J9~%_ůe,H~~u@?X`՟s7h+-6`b0X,^koOkk~Ѐg3|hP8%|Boul!/(OtGזV<ܑ'%'J.Z\Gh}>VOm߫OP%A;SR{Do}_7&(±9X-(pԱ`CNv.Gq̐8ʬBXjïwa }9IFCi !&q E}h=k8mbMP1* qTVeTq6l6TTee> ]~!M {T3ՙU}&|6A}Da.}w31h˪h3UTY*KT**gG=ۨQX&սj%I*k cjsS_u jijԞ,|MH0 +j@b5#Oד,, a,Z,';Z-JVF+)-Z'd[TlIo Mo Eadbm]*jbV529T֯WL?ϥ,_.)o~;b:UR*XUTe2VuC5m}+SuYTJVh^^6UhuEUK4%ШbYU>Q]\!ĵq? ZH4kD>J<ڡ / a"B? З. k5ZaNX7E5 ow4)-i*dy#+Ȋ,ȪU~v_!ȁr)GB9Zc8y.gșrOΖ9\$r|B.qIz9Y`?$n6T;Ư*1zu|Bjv/xKW9%J^?=%R'22&DD2Q2Q*Q:Q&qqn"nsݏ='~3{=u'SikW5>znr;]T~J{"KDѾHEq!S䈪PzpykG[wAoƈ b-扅bxR<+^wZAl;__ȣ- e Wԫz#-MCy9ER}R_.m~@?c#(fF0eF]ha5:]Fo1j),cXl,3de6Ǖe> q; :4KfYլi34Vf{ռc72c 4s9\h.145_4_31ךs<|gx|?瀏B >x?.0c8O#Rp~͏52X*Xu:˗2r`e|y 4/b gg8a8#Gc_ӿr1_g+*?/7c&|_w8^~\ɯup57. w?|:x5>7ZO.ׁp\Ee3';[=p+ov~w&#ɛ][y^?NSx?s?s?~1_ x'0xg0ΑW>~O{G|(43 4߂6kNu̜Bqᔙ]t],ZE wSt7Lu\8F]C(݋-p o%],`i7˸!x+ 7˺%L7 sKY.4_2`yb[frrm ^ 9~|_3'A/=Uh5B-u}Jr5jES8΢H/Н0 VUCt3ACլpg *zX=h]@cas|:6qmMݫtw)v=-(V9ŝt'N=Nt"tJ:Nb')d9eL')8N%r|M-0\v nbQ}=)SfPSURR"K NLDaꫩQz$(%.I˦Ri:SiӐI [m?{ոV[m6k۽Kj^WyY^WիU..jx5Z^mWyy^SkZy6^[>qWbHbhbxbd01&1.1ޫ]{N ލ^N|3vU5^W[m=k]5ЏYx^%W.Bڙ+/]XG(`.r{~LC΀|o8b,zO6dVERe!+ZUA[qC~WX~6sr" RV~ 6ӢmEܠF;$էFȳۨ{HGhrz^70V5^1~{?ŸY+Co{#chEl*z_:E] endstream endobj 10863 0 obj <> stream x}TMo0+|*xv!5$H96UD!~7 $&~f<^mVDo˭ľnޞs_Z LTu9c#o/7;  voAl_77:=wݻ=fQ{{(VL{Tn.ώUY!̔meO]Qھh6XDI"wOئYYWr3K?Q>x[{%22E +;H*4,Fq$@#0+Q$izhܗ!-'FDМ hN$RӚQ<64@#/ZFz emF4_}kی/%sF&|iFv8L'}eMY˸ejđi5/U1.r["#^du4Q"kvT{T A9uWZ#u='朧qU> stream x|\ŵ{$]V+Y͖%i"7W-2J6`1@B t0Jx: iIA̝UCi3gڙsg `UϘVf1Gpo*lxU@U*N#iUզہfĴys@k[4>\~晷<@͋ss kױզ7㵚-Y؞pۊ6ͳȬ6^w-,7B,o\v {֕-+/ _Eݧ`:usʾ^a}K\ٶ~CO~ `xo'$75k,ߍVw:֍7Ǎp1ol[qSf8uaaR ){zS[I ,'> GշwB@n!A6d#Bz1*Qnb)p1J 25'.]e(ҘX˥V?&3ёbސG 3 A '"C_-@L QPwnO[*KNknMmOj+u!2N~/>' amէ^<›g_znݣ $C(3oY?~e}:M)߷_74~|RJy m}ӾjLJ'4 }Ws?dp7g_7Y.k w'Gh a4MڒxZLd0Sv`zo7_Qv}~Iߣ\;L?eKٯ-ܺfrO~| ?U>9 ?oQ(~'J2(EOLցSZ1Fh a40Fh a40Fh '$]iۙ1 j S`,% mKLx\Uh;$!I [@"g|&?,C9=7HGɄ9VI'?)>m|__ pd&0G.6G7JBX - V~'ሁL2,$Kl [Yd;\F.'W~rIb$LN$`"1Jz~j3l(۰?d@^QZC5Ke?-d~Fs^tE #ys̞U3siUSCeS&OXRvk̚v(KZY9*%:/ c %Y|\qX0OWB"tlkjFNa)_RQav5XO&Gd;Z?Q!3/+6Gw7u6;BUMi-d׺v6ڔjHMCyN6=]~rImW\R0r ^qh*oJüA $i9JiT d9) BJ& :+938 Lt4$9[ŸV-tzklhjq*DprmT_Y˩˘^N \N9tOh> *–"OчKm1HTĽ_vӨ4zZtfGhYE`ƊF\Ɍ kP%j@j ]Xh NT~'&;AhdMQꔥӆr;GAM¾A}i<Z ?fhǥRiV(DIdQXi\3>u^JN`ƨ{>ĕ̚A ZMm7vZIQ]`F3n5JGhueZl?}9Ѕ c"(IT|7-R2K f8+2a33iLBR=ldKXϰXpf,y* 5rDk,aJrV-cXKB,aX̰a!C#Ca|0CCC-< sbI,5a& *cg&a*C(A1<S&3LbPP,f*+b0YP312eaeAVn bd` V ʥ2KeHaH <1\dy;S gf01 z1h4 jU5j 9A`&b){>` a3c3=8û 0sGf̱3 1 o,KS 1YL,3 O3q_"Oe'!0fx1Ga8dfʇ0gxaCveLaUpka fv^+a# 2Ɇrko CkVXͰ*f݅Xҵ@YiLML)Ƭ#Ĭ"Ǭ!,& cD#C$fQ#0̏Y5O1 IC=C]̂yRc3^ωf1e L0aŽMRL"f(C95f B1S#,fZ(e3:aD)(bD645TP3Q3Lԑ cY_rYKcX22X' i ~V YXD /k/!Y&1xXq7, vA23X9#AϠc&ZČKq)B3.C( r%ϔaPG>d/(_@?Q@ܰʧO -ޏQ>B _Qg?(aߣc]wPFy M7oʫ(WEy%L|7(PGy(BLﳺgtcO#경OI?[ ŏ֭>k>9򽏠B9ֶyֶ{h7{<1dDQD(t>ޟiylރ[s.vvPnEًr (7ܨހr^Ow{C^r (?QzJ}J-+ԷzrG|BRsgxGx{av^2煷>;|NCܥ$49|V疰źe-s B[xp[- mvEۄIѶmuwȾ6OJ52t^X)!sCxu3kW[;WWWvW/77/ /\^\0sa8^Άp}qm6r#kl5؍v%U2揗:O6؈qU^q&v37p!^=G?z>ϟPmyux{HZcv^CAp2\ ҔUT49y F 6o5>DF}P t+u5QEQrI4PO?C KֽpQ+WoE{@yrM4>-&#!cP\ھ=ܼ?oJ"[h*H}3) SfX֎asrK ?݁L/{G;bWaxÅn{>+x{kwu9X'=}tC4Wc"1݇}WǍ}r3:e~Fz'24'};;3a4@h0eĿ$X `5יzU6&hn K#Kυ0?IazBGy1KR$r+ʁ'Up-ʏ'8`z&Y^ Oԭp_7̖ {6-s[jy+< zvcOA? qx  )"S^@BSo>~8+KShgcא2Y#v!k:sX :%l钠()t)0ܣ%BGH^zB^m~^cNe,x=^4q('%3.$t'%M/pw(d_K]I G=zWhUdR/:%/{BLWҠ{.A(ˆ{ ds6CFo~nؽn[^)@| p esKpg _1 ^=/۬zKM`CG(t%1㛲`˜㒓Jm{(L9PUSgO6S-v(ǔ7T_@ؕ. ]E}ŹWѿj,l@1}`rඩWm${_(sL$=GK!n[GVYS8:;ExX>zNZ9cCÄYl-2iԼ Sl[+W^9gMOncaa+M eg^~F#>vnŚwM9}ٯَ o\-OjqB\+M\h0T7Z p@;![r}ܽ99quN0eRӵG/z +r馇~vb7?y=:k).;3k,4iD疎McˁG!Fͮەn[8c$d fdFhSґk}! [Qĕ݃[V#z@; AcI+bXlkZOQGi}srZI9? rٟynCٜn \ 6Ӣ7v˦U<AX]OwǔvӁ̾4 6툍=8ZqwŒ~W :s2ѽu;vC"Sk/#Bh5KL]K4TgsSTUrmM76۪R/2B\&B5M>ڟ nnSpj! ‡ I$ IIqzg7 m[H7Vs Mlܴ߭_c6 t`\`^Ll@eJVa( o 7޴kմ@a% 'VTZܔR:jƆfzŻ|y[rR@as,%;!{qnr 9dT8N&][*?S@/V[GS<|RHӨP;ԥq %4@nP4^Gݳ{(( 8}Zп6W);(x@KNc󹝢EηkT[ą%}.,#YDcdK+}?.'qIr=i4@i@-Ȍu`qO/,^:`t,u?.ޤâQgC')W{}!rbiK3]SŒ.aYz}Msr猧Ӌ24Jwf%!ӶF .^t' ;s8FwX#ƒ.Xdfs0ZXYޔYff\iu8Jʤר _Gm!=AzBSb !v&BK96{IJ=I~FۻS9iW-ՉMNڹ"ŕFgT!|K~{ɦTxש{lo#\J6 & ҃NJKd )1v ߋn[ESZ">.yQin^z=n3'vQ|N}#z\Ǝfsjxe!sr&jvq\v1Gkf&="3lBQR@e,Yb 8sTAg?kT =bgKAuX I"S[qs2w\\̬Tƙ$zӣoFWnH $&0lZΠ{)Νu#'ãWYm ˒e&Dp&''O"fIF7dM)3s23KINrmӍFLӘƂ #N)CPS 5MvPoN׺Rk]ayc5qSM>t-[Rt8$1)e`wqwLWQY7Ɩpj}Y8x촢SBΉ;V9mB3~}9Q@33UhUڈ/kf#pppؕZY&ts !]AfIrJ1deJ]LLJErp(6%<6NgpJ^9&9U_Rsb>8[ !=csǗ2=#-\QʼdZ|C} Zk]m-}t*>)j䍟_}}fxӪV.N87+on Kx>K3p> &ʠ+ eSQfw#~IF QiyE";_K>d yG|iAOe}v4~GQ'&z?n~I/( xU딚) ,.f6ԕeT_p`5 ݼ\ѩyӖWL/WQvGKނR_I'Zw;P6/]^WPR _asv˦bFœ4{܎Flsp'v\0}iUYV>|H{c1dw܁]Mh[_;NSji jG:7;+/76Ӧ}5n<a݈~;mv:DݦxNjn^3ˤ+O6zݣ7w]{}LJ[Lujv2F'9!mVZй_Q${l ::'䡔Un1$p:vM$Yˑ9.=etK2r$bi vk즈c0OL~oߪ~J2=M˵)_ ,N+ꯎSy3~B 31.-W <46__0o*J 9'ԍSLvr to84Nݫ=ƣ%xRuK?#ܧSP'Yܒ2&;ƭ%jf{xM~ѕeOȇi^bIG.hT\ЛT<2Wfխ֬7DA)*gגKLw6r_sn|HG M G<4q!}qUw߹νwzM̨ծ,Ҩٲ{6"1YS$$H 0`B"|‹ $,d_L m^KAwΝ;}|9W0+^5<],HJS= 0ADq Gk3 5OFDTMxjZG=/NP-tTxG0{'fuI$n<4NJN+k:A;+kPl<@2J9Po Ax8lX.Bd9pJP݅Ot|C( muάò͘mn9ˑ+1.-`Ļd{Q ri! ۯhowB(@g*v"~$EJPr0yR:&_ s{_A ׎ÇiNљ\pׄaEؘb$n$thqj&m_0>d)i\*ei {kF+e$ ~aRxL7tg)ǼME'J|򌳿]jG)ڟa Uoz'BR.Xmr'MGwV "I) ,fI}kU"\2$quW'qTӁ-,<d+ۚ]}eV==u+_Ʌ޽mW1Y<05]jjιsnW1 Aם3G%`:=TF0p{}"mb#Wl)2yEcF8ZP6> i¨՚su7*X,t(1*{]FD=7jho˷ +kfֻ޶[_cel6x)w67e@G[ZҚhwtWzg;t @vn ߏHdKߋ#فC;GJLnk':6]멥a&n)Q=U7;Hߞxuk;7v&eC0u?R;|+р6ܻWtn/| u=_j5UQJ.:`i V%1!9_T)aAĥ\}9I}yt&,֢|V)ߐϖ- m mMj޲e5SHӆY8?[HH{E=@-=/|Zw߽ 7Aj7U&@㘨3!35->  QijJzfd? ;4+āR#fȦzg9*DQs [ahԐKzM;2 &ķv-k?mš;/j2+C=v%U*dxGYyݷlO.inpϒW#+;*O}'з0o|koVk^o!$p_Xk|K/-|p8L+#Z,`1$Mוe1v9`֕V̀b8eb)RmU^N (闿n^bOu&GѴ Yd[?|k:ܺ@5QE6f 0&lZ['9"=HLH%Tx&ݪp.?,F2ܺqug59yɆK;EEq)_U들@C5ˮ^XUVYVkUwzՁ@GvE2[<۸׎;P=Xw"VG6ٹzTE57;HF0!OâO1q;/9:9v~$qUD_Е5<`^vhg6rN(gs*gݓ iYY+7ϲ92%twȡ"ӈ$s;i^m9jvHާI=w ̛Cf7^0d\YI;DQ3<ECXu#qD>̖ǎDNNb1Iiɂny6dlc+ΐcZޜ0 Cup!_9\eX#Jk(Iɞ )^ O454˫R>r#+yHHZ߈A Eځ$= $% +N੤ OWRޤ*dW!S/q pXǝŤh(0XO-US-2G$ J=ZW59qmɆ]sީ9ѻіۈ v N`G2xM};mEȑYfNWqDB5\#3zc%N)5Sy 3@`z>$U5W6T4YViٽi bF= dEֶ Yk K x +kw>ASq{:YyWO5+(%2{Q_sOI6>M%uP.Xm['MM5kn;Ԕ^súeMT~ہC͵˚m_ ,{Wؒ 2 44B`lb"e9 v?$!5|,TblaU[Wb 6<v@8Kw}Cl@nZt=T)gaYYoՇݭ^#l#ë5\Sw[S,R#^i6mg5d骩ꮱ7,۸iң]Dc#$شii~醥 oVq ]sdecVgE7y.UH6Q}h X9"=6'EH ^K4VRML'ĤR&[ ,kl5UŤ}z`Z{M /2^34ΟT`ә #Q,'2AP+L Om˛]I;xWR( ~#Qbk7ץ$ӴQFYA#~4oXKk$Ҋ1ّlkm6v:B ٔ>!r&GXZWW;^\!]9|i8LM' ۪PVX4Dbg\ƜtOQoPr4Gz<ҹ!rA:[A/"J@|T3t!5:-bVJNC8v2ZqAoFQs:@%[]^3D~q_s<&WrfZhZ`&<'Ư2@ng5cޠdNϳH .>I`U褮|CU@ t|3*Qi++5BGﻮgt^#eg;45tB㸄@WÄ5V 1tĿLs <Ta1S3 ;M./ .N n2{ВQS:tȨCai9 Reru.֡zz­1ۯP})zfEz(؝HրUp߅>QI^x(=> b2* JV" LD'a C&͓ĥ03)f~fjz~+ ×޶0I)ΈR0?0]LKV0vU{9şsc D453XDd'=yIUUU cS轚 OmD- VEZ?(W~^A`ZyLLDU0W )|B(mhU%UƜ)fjS8B[mivmVffGnD◐^#BD:EO>u iv=&M{NcREM& Њ#<PLLi.Qbn>ttO![k&)^e|\JgDUr/ݱ;[޹cÒdwM6j 4v/O%'>]TL>MSaא sY8ksq",Kd8wH^/3Ec-W̒7jBbuJNWP%_BΐJɀ'.{s‘@tXDdh<#ہ6&ڈ.@Cmtpiq?O)z)+VSu'$M8}FʎPMh~EH̡U.L 7>S^DEbH.ދCH}1HxI}Ya<7kZڽ[_ɫIQ) >4nR|JQ' \<{d6꠿~Ϥ$AGTt쎡g#<&IVWaDr-4sb4&ecрM`U'zx yӐ^$<'ΎG}])>l'ǡI>O/ |G#TL+YOPl Dk"i:>߱ X&0SbQ1"" 0?y50~JK{ |i1] Z5] C$AރHA{0pGu[(|}bJѳo>~zrFccaSˮLdߣ5 :uFJRc9B_]tJl| E3_#<#4jc<#i:goL$1Tx{ "z,> ={ H7Ϻ[-M(- #֗# ΢a*Zs:3E[>,~-۾\8Qxp   FԊ&юX`@/^,cxxDFZb%1Mwa6aNWF{f4;ye=g*i&￱NJT)0Gfr1N%8]N^y\[cdeNOSWTZ7{7jlN\Pglq D[LiFjζJX,fnR1$^ z@tD  {65@t9^6Q\CmSÁKhK\y oHl+k3K>{Va YdK^H5ẍek%ܖmqgq};]c)[-m7(q\~M~Q~.P.@ZbxX ׌n*MEc@#1>sxSC‡?(=kV}Q' $ɦ4X!S8u>2IH g%YPs%{v_Хjv0EI>|19DLB$$t0/DM6ɑ[ijVl550"LM&ǗC?sp| ]"tp<E~zB<=QDZ銯PlWJ}lA[&D(#;A#?e:]# `l)"2 O2]!p9,~w 4cc mF3I}R\:\.1.('`1 D E /ZZnY_Z|[7߲2͗l3~ eWX#~OԶmk#jJ6]XOu;ɻnI ks碔(!J0R!N.1YhCfNwL2Y"Nl2{)sOEqQB 4bZ3N7Ս*q4:k/~ ezʸpB2h2A@/)FAaIYСᱡIt.]Xi n.C;~(ͮ cY4ûVM0T JsᠣqTbG\] et7@:deL HX&'@(xB-ےB'ns-p*:<ΖwF0)W88P  yrVpVDUz,[;۫tMXFRoj<].o5zK dz]痗H ~QvYuTwXeQp|v=,߼c-unmаfI]ЌaMGڳ<Ӱc|D֢0(hz_MΑH{˫\ 𕩳D?Vu`B2[dRp|M=G=+d,c+sqyIT.10ڤ"`T&L؋\xJG0ħDE 53e,0V${X҆_-(h=!퀉$2I\~'Mt;s8XRyø>i̇OJ75&r*%{ݲޱ:Sk;n!ozp}MsDM/D ᮦŻz#{;GWUoZ3 $5w_k]u}L~ub#`w~sdcDH_:F'osH7r${=V 0D>S9 ei^^(͍pAxOjY:˪%:=:Ʌ0o\B'VgѐMHN^_#Ӓ8j/Áƌj+ny0cC67|}d((=A3OP>=c]'ҬCz1W6jRW9XudO`]ԟQ>Ć@ؑ E`]/F?>/'[f-@"Q];?ykkmW[Snm\2>ڼcp<ݶcK:زiQ[}Sӛ~N8O"*z؈?iə^?sAMӵhѪ qIz48иF2&iQ㦦S?'wrv+|9l"^@h3~w옆p'1WO!'`yjTQyR+wb:g޽:i L؝]#tמ'BWDVu%?O0iOi,˘ $ zi1:0Y|yX'6a|96LͰ!|XKگ|9֣(oX[}cBz[J ʰ`ES {zHeΣ,1B,,b 8/a6/ױ\Ɩ?؆<"عV܃*?ncy>O2)U}7``)X} ),Ka + M 9j98Wwٷ빿 W@3 ,`~ X*vz8ncy4'e<`8i)*b5OR'rqpvfHYZN')h5t;u4l6@^N^us :D̬oZ0Yo!wmfOVmg8ȑȑܒ\ȑ|Rnr$!l8 Xk{uX/r ,8nѻv3N`0q6ng9N6瀓BQ ~*Xm/zP 3Ig2g:jnf9,GMk$7E3Z ۛ,ְٟc˸GYͣc,Lq 8e'E3p=/։zr"0n76(aZNw=1_/R xw 0ڒw${5, p;,O;w#y××ɗ|H^$#0!ɕ? k#;okX ˸7(˻ytqd\֒B^$aH`}>w$$û~vp) <,`,B%$ogy7{9` N(d?Gc?[`5:ԄG ݏ{0 $ Kj%`;v?_2n?ey7cy,p+~I?'N61Pqʻ~`cQ9sKug1^ <"rk֒I$j =% X>8a8Ce8 ð `>,`qp7"?kLqM8p{e4?&K"{X"<θq> L'Y %`V`}3NtiAq K$UT'r3l,?L 6\d ay;`-3޽w{x޽w9<^sc vfx;FN/T(((((1hkڵ:QD6xҹC?DC!̀ag3`Vg3 ^z#bKB6)Io 3) dB й XXJA*y4^ƔPX;o_ÌE8 E2YGL`/p?wVrd_&ْIdhr`ɗub Y2 )z X.Nѓ O,ۯtt`8jB`) I; {(eqF ۸g|/6@p$p)cxp` !v?0iT-[`}/pqJT-XorAR?6u,7ѫueC v倶/WP\m\9GY\9W| >ݮ 4WV4וu^Е}b+nW?Y+(>O9 +. a.ώώώώώώώX7hM".u]YgK E7c=:214SG5xHb]k f1acF;ϋwt5N\%cvAuX+z; PMM R{ќhLWdsV7c֐.Wk3:=i xO%\ƾ|A sON~4a=1GNz1cݮ]g2ڱ}qNN;u wS\ɪ̍b$_y89l{WsgZzCi.emyqO>o:1w%@_Mxx;'W{^8'ԛ9(HsJGs,MN9_FNcAsל;g_ς$QJm͜O5nwgfST;Љ-WW`F(aœfw)bInxmeos[j_NװЏ^b٠(5Ox5oDP?|-Lr'8'&@§{ni>,6xֈ[ll㽚8NsMsp=as&y2 siuFʢq'[KNaKfY.Yi5/v7ͩ==]iNkUSx7s=:3o m< 8o%BwgkC!9{CKu~^T0^ϛG 0_<^3?-x,%/7GvCbb(~!6'Dxu̴EBDR&21 WAY-5AF@"O}UY#oG]NȘ|LvՄܮ娶P> ǴR9{zҮ69ImXNih˵o F^UMMڃNמV *_ԀjAPYLS]nPG՗uX]^Uת#jzM yG7G~R+sZu\~~;o? ~o??O_[ ~B{WMv_ 7߯o{ci<}J_?gw 8~Oqe{'!>~_p?e ~ 2{% ~gw9,uQ/fgpr}w~~/w][ cڙK@h߫ ~1{3~>~_G#JW0 QZ&JթJU֩u!. ߃A8} ~^jF?UQ?SoWoW+Z}~v.]Y"{./=A }"ց׍t{]~//6;~ ~gOHYER{m}w >>~/wdJw*jR}xjw׃/[1{>~_Ƭc=Oݤ/Psԫ*uDnmw~~oߧ;,~'^o ~w߯=,>,}^ ~? ~w;,ς#C- # EZ9ց߭:;~owq2 K/KZ.U nq9-_EѦ)],b@&u}3K,g5LY](Vղ]m1%N٣ {՝rG k}[u__ Sz< R9)#\ImPZ=6铪NXOw*Qq)j~S=)s鉪<&ϐgLܤ^|_ܯ^Fx?zsԛVJ>}'x69=g>2,XxGᕆoxx(]x˪"etGGFfxHCG/,' 2rpF14i>=2Cݍ4_gMWĈzbu51iquQ/Cx64( ,&K,QiQÖ5So"555^)-K*kc% tӊv%hc:zS<FR5j|8`5JRKkr/x\4KǏ㴏@Gضv)xs+Bn"(7Cn FQy7v@yUV"G|@T4=֍ܜ'kw՗KGOA46FfF̑ȍۭQw2÷xA~~IܜjZzWxs+>6r&+y@ugZV}Y?ʌ,uBz{|įI'|bY0p&4cq̧CbOqiֈ#R{gSK_WS߯i~7^)ns`SsƸCbM0_>'V#VPa1ͣ *wwta"vGS@UN 2ObMG/*tݽkrCHQ,ˌT|Lgw>%5\TU̜׉87 IQQ\Y\t_h->Ljxܷ^Y~?f!L ޝxC.+XOT:.\P،ňݚạ ̼̼ GhπiZ .a<` .D"/v66O{W0\XbALg Xvh2ʿsh1iyy}dOdZ+8nZϯ bX0ы5[?|^3*(Tnn xe!%#}^ (!4Mwg*\Eĩщ*1uKwf0d{`@e/jTpf\,SEAI 8gEqC| QNyj^ᣚ] c95*ϔR2#8VTU.. TXDfR~<"|`xA!aeDQ_~Syܙ`0*zgXa#\Q НЍ_qhAZ[Чýbp1_fڝ~  YeG4Jِ)A| twށtIɹ:(cu<@ T}1bY=6TIW@ %5%555㗅2Mw_W銵+VٚfjEs9 \(Ѵ)[ԉ[p%a$4*W G C]a.s=G/YkzL5[Ev%C& 39)>iskֲ\$Wg3" ͈I,cppY! nfU|2dVe8]E ܊FΥ+-i~#TT5sZEͰsu]ԬH.斵\(nYӹsSӜcz̩lAݭlAl ?fuG5_/u<=qvxqqpK-m0.wh\ݷyHΘr2Psk~k~8RixPACN'(r*zRU!Lɣkcyfw0 ҈3n1Y+V %He݅dr/S@*}3/]2y,=̑<~Tj 'ED0W CƮLY\Š8_PSvrau7D>Yӿv,ɐ zy=51d`3Zzz;\<ϰCU)A#K9ъRΥ+[i Rz%o+yHP&hF8#ކ/ߊ ΎY6V>N%uKNE%j$)ٷV˺YB\ip*%Ja h%vAQd8RZțq7\۶'gfː[/CzJ\T8$")/Q>=(~*V.Cn<] ({]9 Bʉq8Ww6,̓zPOSܺn\i&PYQ*)9,6P@Fۢvy֚T#Z*\ ֈE젟Ct:PyV~(RF-54UژI+֏Ahx`#zVK='a8Av g_ZCg؟yxj>Q "Eg-?ʓpYQYQŅ}bSc?y22-)kKQkvТƃͥƥf6oٌ;gyVB~\(8TK\gS!TV{36(%8tPX ;IǞO=8ݘ JSSy0'W9pV)kॴ Rv45_#|Rrtmyk#g'ϣV:(`*-0qw"+LbΠBF+q]R@ ..l+M NwyzVE`?iB5cb5񖭢<Mv+0"?~@69Wܹwz4W|W$y;f&(u (@PP8ΑQ*8EE)Qq`āAE#XED0 ۆ&)%-%%Mw)m u?k^>y>읝^~wX]vDza96ufyߝ?If]2_CSÔa 4gcx=>#byQ}##Ly9ݨ Z1qe;4j螣^u>3^}٨c"w+8ݗ@z>\GvX"O]?Hm1k SG>:;uajzm٩iOh7ӢiqiI61yikrNNi_1}_>}G<#vF}g;cnt?Ow=>󑙟 ==3ᙟ5W^$v5^M᷹\hVׯ^2۟]qՔ\ГZeP.Ϭ摚f=+[Wm^]xFc1gׅlS~=gMi֘TԓMCpQ6{ɻftȗIM#}3_;ϐ6w(mw[}E9ثcVJW1 oin2ܜ.zɹi^1gǗ9];6<} s^,__|2o^_<'_:{^RM^>?j\5$߼gH|{0_啛5|7pthLNW%ܱ\K\se"W/ʠc ș溡\YQ)=K^y++*W)3FfWye\͘GΔu3^ =.W>JH1@OR^깰=gZ/mݩқ4]1*Eorw8izMbTl*w1U.Jb!I\ ;!s7Nܟ4܁"5wm|%=i{i{<ҘG1媘ǔ.1+ir;]5c3c7{/M0;eW_~ᘇߕqN]黋ɲeP?"oZ.Ǖj@饞Pz§o@䮒枒6i{=ʝ宎枎3xE_h<S9W)Bʿyx^]eq@x^ e2ބmx< e|>tR)F󣒄S-$Ū> i;r3uxC*v8 ʠP/@1hP jNŁa%EYq7rU>ϋEx f lx]7$MtN2*ۭn!5Vb_XO>kJ'EdkKk *I-'*I+=4c̝1@ߡIb~/1AaP88 F6J PNjrJQFfrR qJT&*6lQ,yx^:Ky}y.Ι^ϓyR5OI^<%)yJ7C(9Tbf;ѵs*,c΁7-xށ0Q 9 yC %rP ep !8(uT0D"G9-*?hpNWSqܬN!ˆ= P%JС BP ISPXbρ[[\&YQk (>xϧT՚*[tx^UŹހ9|6G|o%r}Ǐ9sW*7|Jk58 J(B TU1`@X@LJLX0F8 B)#,°m_rd,ЎEY3gEUY(*9FndxwOjSjDeQeQeQeQeQuEiQEiQEiQTB1A19?o*-G!cƏjƏjƏjƏjƏjƏjD2B$#D2BDO"DOD+B"DOTDÏףx=ףx=ףx5WCx4G#x4x1xяfj_6%akC`* ˕Xǿddddddddddrsj7n䫛|un|-!_K|-ӂ|W|W|܁䨏=JѣC>&wW0we܉y7y7y7y7y7y7y7y7y7y7y7y7]Ǚw*-Rim7rIۅrFۑn"kbwǝ><̝ӹ+TɗfO0~S {VQ6}gU@cfScZ+WL4OLxR>mOiT>+̚UuV-WƲlj#njJƦ+m*2cHO`%ç>_5|`=| ;䮲rO]^)ȽZȆV&2k?$\-ڳzc#]~ʝ~>淛R,D:Q2uLe(SG:Q2uLe(SG:Q2uLe(SG:o#erkY:Pg,BӋ:Ӌ:󓨍Ɂ\ՍZݱ{EM쏰Ȇ/jf/jQ/DmzQ-l{z\9ދc(_G:׭D7/^K6 EdC9PN6dCa5dNVdNVdNVdNVdNVdNVdNVdNVdNV4zQ^YKxms-X_s7VQNdNBUro5V@QCfd*o9kSEYe(˸@/ }z  n0 V n;`0w `8p0{k0 f7` o}{>,`|r!> j C|f1k+X _7÷.׌]p v+p ݯs 1NR9r/k:vhV! \@݈ `7%!6s:B\ W) q'n9UA> *2"l`q^A} J9/cª( +D#$ ]tk:%z_YќYќUteEWdc KRh` mlf6۰v5\m] B7c16c16[/ }z `h^dum}g[ |-|g:Xi|^ȵ|i×jPg'V4$Z8LoI8Nܢܡ\.F7Vs3ayΕ+\=Ʀ O;"YP,fq8d!ZѢ˨ q0~=> C"8Š>(q@ T.g7- `[0W[rofCE0~ç(_{[DyŰރa)|C3UxEz ސRgLa:>߲xJ+yxx;a+1111DIԜ9_zƙHjo۞jBQ tXϕk"ZOD]1+ftŌ3b"$N"$N"$N"$N"$N"$N"$N"$N"$N"$N"$N"$N"$N"$N"$N/qh"ýÛD֊͵:ZAtNSXXXXXXXXXXXXXXXXX M\-S+M6_J͹ޡ97ω[6q&n-ecUVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`UVe`Ub%.X1+ƒ%eJ+,l.iS>,ž,ž,48gyp.OejXR'_Q ,o)o.eJkGe8j |kkz6w=lM [al,pqq J- WfY*-z˳b9x2^'Q.q8jY,%Qg]FH FhwC Xx&0&dxxL')`̭s+ oco6sȧ.,E;5|`=| ;6&Ȅl C`((^<,NiAFHq1"!B,I(hQNRL""R.˿X9_̊L5Zb4^'Y,iDmE?QE?ZGMŌbFr1#\H."."."."."."."."."."."."."!"!"!"!"UD(W*\ErQ"UD(W*\ErQbVu1U]̪.fUYŬB*P 4T h@C*P 4T h@C*P 4T hT" "XOE|"%r3Ad[o-2sDR"XJK`"!~'~'~'            d%(D JQ2A d%(D JQ2A 'J~'J~'J~'J~!J!J!J!J!J!J!J!JVr}v`]՗(ER9J[POD!J"D@ߣx7wx7wx7w#x7w#x7w#x7w#x7w#x7w#x7w#x7w#x7w#x7w#x7w#x7w#x7w#x'wx'wx'wx'wJY_cgnY G̑yFy ۂvlx0;lv J J .u_U_U_U ?Ab ?Ab ?Ab5BG}:Qtԧ>OG}:Qtԧ> V*[o¿UOG}:Qtԧ>OG}:Qtԧ>OG}:Qtԧa~۞#j͟gD be!; |oc>6𱁏 |lc>6𱁏 |lc>6𱁏 |lc l4F l4F l4F l4F l4F l4PP(, <+g?3smZ]]D,>KD,>Kϲv{ nVy_2oW,)|/d+}晴^Q9;imTccC?D:kZ}g`1% D3<3<3ⷘаK. 4ҰK. 4ҰK. 4ҰK. 4ҰK. 4ҰK. 4҈KDKDKDKd9c9c9F+MUբZTUjQU-EUUբZTUjQU-EUUբZTUjQU-EUƋ*,ShzxO|ac ,[MjZT7hJ~w%?}Rwr:nh}T \V|r@V*T% 3OQ6n\!"j?Q7qJE&|.o{7r$2awr-=p-_4$("cHB !"* ʵӼ"be.x5t t>n0 &0Rap θ9~JUSx47 f5ެƛ ,śx/xQz$<O:W\9 \@PPۈuj[h5j71 PU[&f-󽸜}N;КxM9O!&'xr4ysv3G.( \ WPX +TQO)C9e( 唡2TA5TA1QE1QSR(%Rʈl忻k"cTlx~(vM WbUy>P}i2/Vo$vlXOf^v$>Q&9vdFϫy-\GГ^[K}.QuU'Qu)#7qf(樃8n Կqn/M;8=IJZ:MD5B7׊tJr0/։-\EisQ܄}|r!ܐtL8 P\ӠGO2&JŒ*tAI)cұ̰ P;Y,a]𳘓pO%dp"޵+cY,'6\k pR dlp N^ Y'.@ ]6*XfTT4{@/ }z &Y]b6f6f} 憐{a,`< ' + + A{k#(81}ϧ<)MZ{j\{NN퇀r8EJ(y_ʱ~7 gy_!)ݨ$/QI6S9N+}AEcM*Tdw&c~cdo6Y[L~E播K5L]B6>Lm$edv2c29@l$c1\_`>J61[Y.su;u;e5KE2ڭԹ f̽'5L!}XCmk"W1T_bVz z PCcgW;2 r53d3j<`#Wwru 2/!v /YKV0[1[1cx1NfNJ#44VV4J6nl1݇F}W+Gy+'?i׋k 3f3C+ juf7mv<Ӎ*n܈ 䠹yf:ˊJ!ޱ"/rey4A34S@u/P OS (*CΡJ砥*FEQ L#MN#QQ5TM7UMtS5DGtS)TG7o~TCˡ|OiTZUV@UˡPrjլjV@5ˡP b>X<@Eʧ"DUKURyT|L>%OE'n&nʑOTDM'h#UMpS-T 7MpS-r9T*\=gL_"E|Z)XR5yX^,*襊 HS|DEC@1䄐d'C}s}oskY#9 )Bd=dY/ C! dBf (0///BL 12Y{y_ÜaEyk 1?6⧍h %3cs+DQFGߒMջ.5ptU3?/CFnۃU XԀEXTEXӀ5 XS5X+UQWPTX|zkz+Fz+zk|QzmQznrz.r|Fzorz/zor$OCz?=71r_ٹ&ijy~Y5%b-9HNW=W2Tߢp. K'Bty UϪzrpy%EkQV9rx#,$wя6*kٓUx<ŝd^,ËeX;=GhJP'ObC66T`C6TU)z ģ')qaRXKc:{hf-ƬŘnjlŘ-'Nى1;OcJ,># :#3sRɜT~=~=W*飌hi˘Jگzگzگg+WSO?S/LFS'sΉk@?UFs.-Jsz9=|FU&Da"CGG||q 4E詁詁詁詁b╡{(7Pn](JE):E XԀ׎~kGQ1c s}7p'zs?4{ -A(̨x=xrfT0 SX ;밳o`˱(m l:"Hm f/Ǿ I"MS 8 f9<8̵#pN8 SkZ0` a kZ0F 0FA:&-0nv` 4IۢmUi RmvW_ƻi=xp-jE#t]+tp)x@z7,œ s`.W_B#:j%DGk0a #aǷsf1g4dqkDAg5se)+:I mh =tNld3&1ٌfLv f'>N'Gg _>OxPm?mQ=t 2rqp7}p?Lă0EeDnf0}*j|4xfL"'$r29~o.jxC&o2 հk {U`*X VU!(8>!'|BN'h3*๿b~'A( 8Npy,n1v޹,޹OlxȅhCo#LS!p! Ȃ 3 b)b|21>LO&'JO%ΧSE,~ %x^E^sɆj93]Ό̌.`F0 VdV1y }vic0` մ]_!C$ܪ {w PsdNi9 2A4Ȝ sdNi9 CT!a8G A5Ԁ'v  _. k {`/Pi (}"%R8epʡBs2Dr=]ҽRR E*,̉׸V8 LZ W޷e C .0.8T*CxQy^:̦:̦:<*5T'P!TXnܪ|ujіjѕjQ-,fy5*Qr珓g jP-Cp¡Z8T jP-PjCzQ5F=ԨPjCzQX xV ~]5 4 4Kk.9T#jPC5rFȡ9T#jPVjZCyh5!گP6n u,q󲰥۩iybO)bFs%5z)F}k-2vHshKu^.9SpW2m,) YCOzhaTETWNy~%]ad珫Zal,!*GTNX/ ,*KVRTk@[htN@ 7@H`*^kOX/o`!/+:KMx ކe\/E*/V"G<n͏h-r/,c-Y6)[i9-϶)[TlR@Ka KنrHh9`i$3nO⾙*xfls9<kU Oa=lTe  [av(T;}"Pa(PNX2x1;Ka 0R/Se{Ys;+>Am3K pH2pA3|-TEY]t>ꐕ }j5UX2a M6Pev*gU\^Pι .ԫPa*MxTWH#> {g >Ab(0(PP *8P,uI|› `9lU_$n\;`'| +ȃa7쁽 >AC)28Pp2Eҽ' GdQOUxJ֏+Y?dJWyX_屾c}Gvj;UuN-Z9sjYԲvYekݬUvV٭Q!ȶ. مVyr{v)%%%ڿ_Ew硻yhەhٕhϕL[jѓkSVEh5g{j=hZ{ eo۫MxH++++''\u;S'&P¥ nKu&4tߨDM' 1Tn+^q7Zfk#Cb0~)fFHj{unNci7T<ŵ'N j^iD:3+F]i`iD>A> -1,/Xs_Q˻p- jɘOnUn㨌騋-+& ؐAH\Hсuzie$|Z*BֳgYϦMg=z6l:tֳgYϦMgM+W:ktZ鬭YGJg݄-q[U=1*ѻEq= 8c)`;p-cOm}#3?kk(D9]`eZMb{䩾<ї~03Eoz:GSSTN:_zleLhJԿW:' D:< Wvo^9[@0B{;(3#ͭ1*sq cxB5OQy衵 |U?q; 8FsG}+›PGycƴ=yQ"$N0ckWF qxOZz[Z[罩"m;RZ~,Sy{Z[QUwo&@ۜ@;U'.cuw*&tO#?~o!|=~Wj1ν-\ݏ6jWO3;MZlm'iՌ%M=-B3sz63 7&l|aTosX$E:LW@݅m\\ɵrܗkFFGz^2ў*jtۢnՃ=9o}9O;ŒYwo-v\=jtL',zb_[R8=}9׏i2lmal*[.Z*Zo{@uδەtSd{rSʹ\4(G M`tDZ|vg/e='zoH>܃4qOo?ONܯE{=ք#;oS8N{ cC?+BV?Z{Oٸ[Sb-5D8uD-9<"h Qٓa՝ǚ5GtM!2{#-g@p9^htni ?W4<}=9ߋzO>S?W4 HB=#3վda䌝ԁd&gm>cYۿ~,kR2xrYOPy*yԎSwf^8Gv }b8s6H)xc>(~&nSkVk"[lo<_,%lxO4:Z7R qDGGji$m(&cs6]{J֞*5mhV%hlAm[Z[9-_KWk=uZo}>\뫏ӵ~2}>Vߦߩ]iWkm>Q]O'iSǵap}6B>K_՗i;O?k K}^֖qN?}gsZ]I},u)uҒzJW˖2Y$ʶZ(jeMʾv&k;rJ^}-˫rV+7rQ'ocb9Nޣ A/ZK9[Z|A5erkZI~*?gYɽX:F*0Tq~1l4^ Zcج1|8/0 / $66zV}Q`ా.P I}KT[}k1pV 4sEa_}>9,2KA3"3GTڬSfyi+rVr9l Z7X-mruu̴CzzP~`=l=,lM&ɿXr\c=e=-?fZ3',EZh-[WN kem-yJr'OrgϲZm%V%K NykdUfZǭKñ-;hӍNS3Fg{͞m6.3z_=RbcHߵ5ߍg@{dڹ`K{q7؅uv]d\o%p>dOQc]o7 v1&aX- #F&JeܖpG w$ܓpqg ㍻Lhܝ0)aq_”)Ə3~IpMpHpm0˘819.XpCp1%1n n1~a<s[[ny[VwC8{̼ۭqO'ݖ#sB҄'MN7O mWŅ\p-ݺܔTpas$yIG_wCK]n\ܮXoݷvA)C_z$n}GgK҇cI/;^*W[7H.c6.Dpj<1M^f>WxZi߉71ބmXŸ/װ^ȇf{$;K$"R(RjUw-BPP?l `HP H֕t Kpl30dvlv3q†>F@{?8w̙ٙ|ޯ{f2(Oaz~N#;QBzy8 JIuz'ۂF:EOQ~I4E{xsJ|ϜSY/rgn-N㴃&hvR'Ij.z*4Ii睻xC'd}4^>z}}>E7?Cϳ+.OW"/%t -%>g_G7|3[軴c r"mѶxoJ5N&hv/ҼH"$5hW|[)Ei> ^ݑſAr.eIW5c| 1T>PQQe4XFce4XFce4XFce4qhG8oWjU@&kOghoTOJO9-8hAs7y/0=B?_У4B T$cA`eXF`eXF`eXF`a;a;UFW]etѵ]*ҟs<E._K/KݾԚi^ rzo&ovyBߥv\wy\~J4FVmo~g=oyzsg4mxfy;VSjۙtV|~l:''?ei(>OiI_[J+ᯄJ+ᯄJ+ⰄK8,ᰄK8,ᰄK8,ᰄ&FV[ l5՘9sj0WY/rp̔0SL 3%̔0SL 3%̔0SL 3%̔0L3 ̔0SL 3%̔RK / QF %lpQC %,0P@ % 0a@  _%_uMx 6uHtHtHtHtHzT,;wһC#*<#*<#[ޚ֤9"!3qy'$mSIs$͑4GIs$͑4GIs$͑4G<# aC|0$)5IIJMRjR$&)5IIJgwIIJMRjR$&)5IIJMRjR=cOؓ:=cO| x>1|lcxy-x^yug5 R6ϫ쯇Aʒ_`|N00! a`C00$5IgM:kYΚt֤&5IgM:kYM 7-ܴ&5IgM:k8КpQGuե5aiKCR[ښ֤&| kHk\Y]X4פ&5쵰7;$&5IuMkR]'uI]}RW'[9ͱz ulֱY.[eCPfE^E^EYXב $4@B $"!DB !NzꡪZW冴֥ʡ*^y(uuK]]^.lW^Y++ye%(ia0 K,R(K,R(K,^*rWʫ\U*W*YZ%Kdi,o鑥YꑥYꑥYꑥYꑥYꑥYy,UjG/[ 94E{xo?.gUq;+PB +PB +PB GzGzGzGzGzGz>{>{>{>{>{>{>{>{ [ [GzGzow"t\^@뱟^^^^^PCyU#=#,#= #,b,b b8; 2Q(=#=#=Y}}}}#Ghuo-2|)PRAKrZFtGtyDGvDGtyDGtyDGtyDPGqyQGqyQGq/ː P ;ڂ#;n#۱ gu}/庾\חr]_u}nemgѷ}UET Q5DUCTM_|UTePAUU####ɯ'QEN=aY!Hu}Oɺ>Y'd]u}OADDl~IWu ?#:2zP6e |V[[9SL359PPPFnոs N]ߩ;|:+~;{HJ3(d}z0;{o=5| k_tɺ.Y%d]/zt+F]XE} 9CIBzR"z~;)N7:~㷎:~-ⷈ_:mGmӿju~;w~;Ktɖ.%[dKl-]Ktɖ.%[dkn c t.[9[`KД<(E%21t^KkHQkɀ |-%/E]%3EZ:_Kk|-Ѐ ݩ.G:_Kk|-t|5)_MjWSՔ|5%_-)WNU|% ޔ)׀|k@k X*b"*b"*b!6Blb#F!6BjR#FH!5BjR#FH!5BjR"u+RNDNDNt c(CJQ:q#{*******#TFP2Be*#TFL>C*P*#TFPr'*#TF܊ʭC8*Q9UTVQ2BeSHUT& GL>QHP9*#T&2c"2Bd"#DF!2Bd܊ȭܺ/DN$!qHGV$DHGbU$VÑ8Q$"qHE(G8Qp~S)/Nrr('G99QNrrUQUQUQQ5Q#5Of#v&3={{~@.T˦Z6ղMleS-jTfB5qE+R]TW"HuE+R]aoC+]tW"HwE+]tWxR[jw=mk;xom&om&omۦV")HiEJ+RZҊV")HiEJwKn)- HhEB+Z7*ZXPCMiHcE+X jJbE+RXXS+XV$p7;"הŠV")HaW^f{n6j㉶ǩķΙOI[wķ.sz[/8N}OMpbY#x"ceTj̨ƌjQ1Lkj=M6etnѭ1mF.etn%313mFtƌnѭ1ܠcFv.$>2#[fd1,xSFg9t.}@_^yG>|74ӆfLiC3mh ʹ64ӆfNh'4ӆfLiC3mh ʹ64ӆfLiC3ml *ѓ vSԤ_Rvi= =K {Іf}Coh ;74f}Co8KqpC#84f ?fa),e:o}fЬn~f0}7Xh= lhС:LӟR_|C3thС:LpMNEO=ݤ)= yjޑN>y=?}M(EY/zQ֋^e(EY/r(ˡ,r(ˡ,r(ˡ,r(ˡ,r(ˡ,r(ˡ,r(ˡh?P֋^e(EY/zQ֋^e9PCYe9PCYe9PCYeߠhPCYe9f)ˡ,QvPCY/zQCYe9f)ˡe(ˡ,7KYn^PCYeYzQCYn^PCYe9PC(;eG߂w^7e 5P@Ye 5P@Ye 5~o{PE1?}T('w۽v.{w}aTèzQ:}vSfE_} 5@_} 5@_} 5xQgaTè;$k{rVqq3T .Wgp>s=sKe =sKe蓋>蓋>蓋>蓋>PTUAPTgT>Ŕ\L|Q*_TUE/|Q*_TU~JT~JT~J姂xO*Tg5ƫ|5ȫ8\v+dOvdOvdOvdOvdOvdOv8YdEN9YdEN9YdEN9YdEN9YdENgC繾8>nn_j޲"mFlt }nmuXm~@w7ZLwnC}cic܅.du! Y]BVՅ.du!+yF\L*Җx n n ▘z =iBOZ1w=sG zFh6SJڹcTTQjqZڅ.v ]hBkZڅ.v+x-bۅخ]H||c֧B:EtVBZOHퟧ/yn[wOkt%֗Х{,urepUJk~-ߦߡl[%]%]iSBxJ 3i̤uc&4fҘIc&4n?!HWW;i줱HzQ6pMzpM7%]%]ioi+Kx/%RľO޾O^o^7ЛWk;H[woMM:Vp[pZpIpEWWk;#=MUPmh'NO#EE>K 3_i;kmmZmmGpyr>`y[mSmSU$#ias eΩYdVqڹ:Msy;$x{7}[`Srzprz0>%}j%9v=KxPN]K]jɱxrz#9v=؝M_.oHߔjOߜ^Aɱ멗%ǮN?ݟzyrzɱ37weS:^ŽWv~ꌎt:utGxCǟxsѩw\qYuJ}㡎l|G>?&ǁ'ǁ_דSx SS?IN49:pr|uj49:ULN%WթթթǓSO$Wv%WcS{cS$N/`[sqm Ԟ9|KzQz#|vyՁ3Kro.>rI#<}Gzԡo}}\ҋ]3}xv}rbʓ}G:s,=r#^}K7k^{A oZɲ[G3gǞ]f&t§o ?|پ37'˫v̶,>~eM3⻿ޛ,f/۔,KN˾}ٷ/xp nwMW~rL/+7|ʫV^r_quǾWm=3g+xvImˌY_՜JƏr#}PN :%:O҇od(-'iAOEq3NK BCq3 =DY(Oaz~N#AsIVH)CďBjͥyNih>0u0~^A+U{#ԑ:Ho7ӟgVz%Iбtoꤿ]E'л=t"G'^C7wt2}>BOԗ< OWi1}k.봄.K2-iǽJ(u#D7 K+{M=KJmt;Gߧ~Akh~ҝ4Hw:ZOwӏN'SSﴑ2q~_+t>]@_5.ot%]EWӷMLʸ0{M=KJmt;G97Ͻz~DнtO?! 4}60;m =HErT34N;h&i'qz"y^{>Pmj<6o퉛v=v=e.Lh> 9]C:¶7f?61OgtC<"}LKr7_ڿ21ގv^>OonH-Ky=B3((mEb\%gW]s&-~媀eA*+(+EJCKItWh !A(HZB;MӒI&3IiJa]LbIE~?ǙLB3996lj؁xov ^aY53!8s߆vcp47{^c'8';,q+?Cy~rreo_FuFf́uZ}x5xs1ֶvm;XÛgaP0,8` Yw'K{ao}8ZKZkIk-i%<GxC(cN 8[$-IpޏqNƿ[?$jqf7'g&sGR~$GR~$ܻ$~>㾤5ffvR񑌏d|$ɛ㥓?xxx|7!gtjR7\h[o-%7\`ĵ za?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#?2#s<2#39J>L~|]bϢ/őyQ }>x7ރ`Zp3E>|| 5|'\ SPqh`1k5l7/b6c x Elcv_gu&$ L$ L$ L$ L$ L$ L$ 6`;v`'^0o|@0E/LLI$ %u{:f`ʛ\ak_n1qc\u3|~ׯ56` {}GCƯVS^k^ĕ?B0^M엙2_f~/3ef엙K>ܼ G_mb:f8-C24+C24+C2t *CЭqWy9K#%J2` *e@ 2_ˀ~/e@ 2 +2 ]0fy,OYc?(<~44|{Iqqi8=t'l/N;*ⵓ*z[֧k}S4 o ˛򴯵<XtbVyt!n ^dE}^ "l6El8x;yOռVn;xT:u Y9,r`SYUXajjjjjojojojojojo}={}.޺1zj:j:j:k >8`iZJ)J)J)J)J)Jb8 .%ƿBa #`%r \-`%^_9~+<<_c>7a,#_z4Q414wxOIO{ih~DJ$kJ$kJ$kJ$kJ$kJ95X<[C?>;rA*r!;r}`]K*rA*9 e rA2Qe q!2QjxydnJ1 H S0z\>`ɾp0JJ8 G±8 |_—q!B*S\k13p gFM1n-anGSg#Η܉*܅j܍{p/=qOI,X{id\q2ZU˸jW-e\q2Z*jSEmM6UԦTQ*jSEmMb)o+T-mRVJRV((GE#Cb<ߣO3h,ų~WWa9RX# w܌hi100x1Ni)M2I4ɔ&$SdJLi)M2I4ɔ&Y$ dA,hMI4ɱCqMBvYi󳋓aðP>#!&q_ [)u=v'-'g&.+}\j\-ϙ3$xCAŃ H FGшЄf_{xaH?py.Jpijor:uc"F>?FKn+ b~jew?p 8zpގwxp#q1q>|'ޅcq~pqũ(H1H_qr>~o-ۋ}\>FR`$c>'W뉫+=?SlV lV lsRe9kIn:uxTxm*IN_]nW1>:/ƏN馫c'|R'|>r(Cxc6>?̈R=g<'9I,59PNr:ӡeuUByP^)@: JquΊZgEYQ`3l\ 6sf^y]#kuAb|}:Xx]H=ݪz;UVܪ[upn:UVVzn[Vzέ6ZˬeV2}վKTKTKTKTKTKT/R\Kr^.˥zT/Ri.åzTR=\Kp.åzJ7]ލxNq"N8V}U_|‡O8g#0 J(>g|9|<|>w_%|+*1?YzYzYzYzYzY8'U\\\\Xr_䗸b.ט jBP,",bx|&|7ރ͏Z-jisÏxޙgylw;5f3l晍\ıCܲY:eqf!;8dܱ;6rfya3/l|6fy_,|$85kc7sfN̩9U3j~ w,;5NͲ;up:Sٮmkf;wȝ6j˴N]\oI~@ 7i&ߤ~op#5ɣp4;.wL;& x?NI8;Nw<-Ӳ<-<-<-ҚByqQZ/_ˎwT:h!Wji8(\ߵϢsWyZ{c-ݲ-ݲo8h6?eأt.<.]vNftNx⅜.Ҝ.z8]KT2';D[VmUnՆ[VmEnц[m%8=848|s<.E\;Rx&\ jµp&\ jµp&\ jµJmx6<[ ֆgˋE"~y(98,6@%~8I4&ҤStJ^I/Ӥi4et&ݦIimt&ݦIimt&ݦIimt{^7H) pN 7H y$ommw] uۤnԝ'uIn-ugJ6-un햺 a,ތ90Bs@ I6)-p[xy; =Hp4n3_v;X^Bֶ햾ҷ[vKۥw] ugJyRwԝ&1s3'1s3'1s3'1s3'1s3'1s3'1s3'1s3'1s3'_Ca?#7-+'r+'$PtI4LF!(LŞ732\]l67MͦxI$_a0W+l܄x[p nmQJ?œq!X<~.ZI{WUs\e>WUs\e>WU&1C6N{4r.7g߃w]n~]n~t{.7w;N{1כas{4=qs҂imhEw֛v&ڱ)~Yo"^dux<މ^=Ϭ-3M 7 i癙p!4B!4B 4 B<_?˂=qC\%TOUJ>˧p=SUrZ0->aH`G}$iIG8G(cN 8~)wJyI3/i%ͼ{&&[V?O5Fo쐵UJV%͋Χ?xx\]N&K-u~T0mQFَ5ۿ>|ۼ;ܽ27\o_ǛiD픨S3ݠnL7h4 6#a36#a36U ^+XqoP0kSgoo[PK(b+֟U^0?雗y雗y雗y雗y雗yZZZZZZg⾒6,R< ˑŠ:2&HDHKKKKHHHHHHLJN?^Ry׼tv q\(Hq浣F|};^3GoGcG}nې!~{.a:%L0St2 aH$HtH4K4HKH$}&TϛyS=oMi13y4τ'})8Lsp^~_ƅ3K ,Z=zč׾ތ9Uq"~_j?/~~?&V| 1&wq>S9ƏZv~&l>S6Lϼ>+xE]Wt.^+xEyz^Q8U.}K.}K.}KsLt.KgҙK]Rԥ'uH]:RA?zYaOV'+;q4nMҸI7K'_A<`sI$xoM)xPVbH*!bh3| K`R\_J1 H S0ӰOے}8`C6=<^,`i04E" fHY,z~^y=?xy51z܀Yq&T iBuP&T iBuP&T iBu%'~Om8Ur'pq7h;<'OhhsqfաYuhVUǫv|y<|o>7|y?t鼸z^_y}=z^_-imEZ"mֶHk[imuZ[VimuZ[VimuZ[VՕ>//msXHa:2:T!*dP A2BUȠ T!*dP (]/ЏAD؀!lċqؤ-6iMbؤ-6iMbؤ-6iM냏%lUT.Z;DŻzZ/(jB X^;֑ˊ" '6\ Ȧ%v&̙مL@;$7<|^̙s}?_ =_ߛ&oVl]u qR\W+alq-NIs޹5NI=tsdq9Nuzj7W1I9 '$d   ]eőYvKmMx-o[~&6x,{ߋn= l`߇~bk}>׳myn;KGmq{c!Yߢh /+p q8>gYz>zc'58'dSqN8ex=ހ7찝%ogۣ \{}|.Ӷ w;߾Q.rtw#_ױvî{uOsJɈOF?i뢕o{߄nD1ҿոyc3{z ߍnGh{"F\ӑ>=͞ӧ#}:ҧ#}:ҧ#}:^ kב~#vF7H8oWGzuW"zL=SDOd7&D֛zs%QA3&>Ǿo/|=1σ¾q]*8u;ۯGM(Sۦ]So8M+p5km\bo _JK)/{#n 2Ou9& n{?~Ih·Sօu!zmGS;=" O"|&l_9}_]&}̚Ys?kg5>ǚXskcly-<[`ly-u7&7keM1dF01N<,bIi*GOY2Af9, drY2Af9,c1e,cf1V9*XcUVXe`1Ye*cVʘUƬ2f1Yecń-&l1a [Lbń-l1f1[bcŘ-l1f L`6 &l0a L`&76߆߰?O?:/q;X ݸF6Bs_kۼG(0φߵ~1 7`o 7_b/f1_b%/a K_%/a K_%/a K___-o`ҺYZ7Kfi,unҺYZ7Kfi,m A6Y Kdi,m^복~Z?[gk,3~fY?#gcl~ϾW?g_쫟}_$9$+f\I C7[fKl3;fG%lΒY KcI%Q73dFh 2AF¿fD݌(nx d:t3lM7f6f,дt31BYC7kf ݬ7Iy 5L [d l1[BXB` %(M!f c N {S'dSqNؤ&%6 FHE,bf3Y"f1E,bf3YEYEIL"f {(01 01l!N Zb3)$L!a K(85^A {A b, f HX@ ˚B"/a xqjKpt1mas1G#sxgMaA 3a1 0f bA 3aAg~A~KM+=}\C#>#>#>Mx6]7OSϰ?/•Jr%c\ٴp7Ưуp?6mo?^l!c[0<Ɋ:YQ'+dEuNVɊ:YQ'+l>gk6?mzU^E|WJ\щo|aa:^0{fua:^kfkfkfkfkfkfk{`쵃v^;ʋ6fifififififif],v.bXlb},-qd#xŸmy5ocX6=Ml366Moc^ ^=>1m {ưem營1mm>ۏ+*R~ֽugY?;ii[ք.6n[ȳ1:03x8LJ4O4OGv'$STq Y@$5 dM]&.@I$e3 Mћ¦x]|/֚  Cgti:.JBOt=׸~_a_Ӵٴٴ9ܹ:+s%ķ—kpX^E,Ziq#y3n,Z[=?wi4yt<:M;#^ݎ;pnF:#^f"8W6{E+_WĿ>pEaΈE<,a#v`'G18X]`8ti:4uFֿY"_d55555)kjʚ1SӘi4fj35MM=ELOMOMOy!k1AL/P*asjm{N1^8/  kgڙv)kgڙ:sN)8tb2˚̲&,k2˚̲&,k2˚̺Lfa:˘2,c:ˤ kSWj56 }>SZ)˔eJJqICވ7LnTck9ɷzlzrp7FYMxI&l2eLzY^֤M=QǬ}"9 зigZSd1EfLSdfc.|[n"Ⱥ)n"Ⱥ)n"Dzlz,˦DzlzǪjzKƒdj,Kƒdj,Kƒp)o \óM*L9`$3 L9S]T3Lu9S]遦6c01`c؁xY؅?gPr/eTP$P4f[BU6AMPeTU6=MOeST6=MK5RʹT3-LK5RʹT3-LK5RʹT3-MLKS)Ҕiiʴ4eZ2-MLK5RŴT1-ULKRŴT1-ULKRŴT1L#5H4R3L#5H4R3L#5FѤQ4iMEFѤQ4iMEFѤQ4iMESF' =a COz8;g|/cxxxxxxxxxxxxxiњ좟Xj̼k̼k̼k̼k̼k̼+̼+̼+̼+̼ȋȋȋȋȋȋȋ{q3qfc9fc9fc9fc9fc9fc9fcUf\eUf\eUf\eUf\eef\feV|oojxpgó~~̷|̷|ˬz묷zˌxˌxˌv9ȯ n _W;p?{λ9m1-[[["[-2SK K"K-231 3-2"3-2"3]#1"b5&Zk[]9aoN7ϛmͳul<[1V̗:k~+ysY\V7eu6fUv 3`uw@͚*ny><χ<|xy><χ<|xy>\u>\u>\u>\u>\u>\u>\u>\u>\u[?+g9,NZNZ9YuY|"ge.Y8q^r4mAFdtAFdtAFdtAFdtAFdtAFdtAFdtAFdtAFdtAFdthAk^F܄f܂[CC7d|C7d|C7d|C7d|C7d|C7d|C7d|C7d|C7d|C7d|C7d|C7d|C7ds2~Ns2~Noze|Qe|Q>?'do ヌ2> ヌ2!2(2~7F#ߌ.SqN834TBC%4TBC%̩90QW yP s*aE0J*!J*!J*!J*!JX**********TœmN50򪡡jXXT· jNE4TD0!ͩouUEiE]a_Koxe ږk[v:x-saKKχ֦pKPmlS8&Lp&po98o C+Z/pφȖ~1|g/¾%õK-ql}%}<xvc.yYKÖssֱK_5 ׶o  k}>vC]>nK}}>Nu0|O$lm()ƖmA ULb*\RLXn;̅]gWae6h(+Z֗8DŽU +[_$S2[z3pfXY8۪|ś=~ ufv#Nq⦓[tZo^7֛WͫjgZTCzH!eArPtʐ2Rr T!rP!>$;ʎ:RCSɎ%τkPA5\d2Tw.;̆րր;++t!ua<m[5XVZ;Š] KKK++++_ϝ?~jjXjq^־Աu8 z!ll8Mx3[o&kͦwSއ+?`A|0\r.Q95>+8>a]֬]֬]֬M_pK3zQx^S՚mmmmmyӋcֱn{rrM&nt[s9ݲ6kM}_~0e yy+bΊSjy\>Facu}m:˫ʫʫ95WygʙaVMLyYuWy5Wy5nr?/rJ筎9?%׫;/*;/ry׼|׼|׼|ѼѼ}3/?3ڸ\gȳg3f\ތˑq92.G3?.Vx9/yq΋s^8/y1΋q^u\\u\\Ǜ:DdDDFDd+=+ID$&VDdFYI^tVg%yQ+J{Ei$NVt%"U`##"4{62!B3!:#3":#3":#3!:#3"2#/VQID%l$VꒈN":$NVt$"P"BYʊN":[Eg/ȋN": 3(Ҩ(R"J(%RUDFE,QMD.acDFDoDFDoDFD/+zYKD/D^2LD0DTfEAzPâ(=Sާ|OzگRUjOzگRaw;NֶAwz]muGê߻z 6eY6eY6eY6eY6pUj\;˷ T@ T@ T@* * * ,*O-,UUWuݢWu:U{u^W.:{u^W{u^9Jί{u^?!'߫t^W-{u^5N:~VY?-kBVYuSR7%d݊vhuuuOIOIOIꧤ~JVPvޫ:{Ygߡ:{ޫVUjPc:{YRgOt^l5\j)Jg/;t^W-R*8'Z|Jg/e5JMRjrªRgUj\g\Wu^٫:{UWիzUWU]WE'U]oūxU777U5Eoѽt1ݻ{/̖[5EӭuU-Fݹ{Iw\͗|I͗|I͗μCOU~_'*uEgAoQ[uD:}pPueX^աGEvFTzW^Aacq^ 8X[[OUa{FdϞ=pQu9!8)X-ql8=FQuQ=rw^pv YUK~nF|a:-rŝ\⪕߻;/u[)Vlg5]v՚٧rzka'}|,_϶&ˢO>Ǣ{tOM/6{.zO f[G RXЎlo67XJ瞀Dq Ni8g 'I|  3Ƶ|bZUgˑZ좵~qzlp=5zE`3~ы-w<>caff~b6Lfk}g&܏^=dV:{?~Rɴ޸*VE~ rsuWaEE*\נ*?WJ=^@v1\cjTV٭ P2\%fqdҎUL(+Ox=2x6\q uYp} ?FGql&̅*϶õa,ĩ8 GgWLeg-s?=8q8 8d,p >8#3{ܤ&57IMjnRsܤ&57&sl27&sl27&sQs3jnFͨ57f܌Qs3ڴWҴ7Іq[V-ކa8GHĻncOx{qpˉhGޏ$|'cX p!.Ÿ2t 2ʶk۵Zv-q]Kܮ%noZ~A܉;S܃{q6ȉRU;|Z~#HG*?RʏT~#HǨcT~ʏQ1*?FG*?RʏT~#HG*?RʏT~'@L浼2iiyk{"cR7gr5IeM*kRYʚT֤&5IsټIM*oRyʛQy3*oRyl2'92'9IeN{,'wRʝT#ݞn 7ot5w59sM\3=|; 3G-aHw'$̄0fBLH 3$L.-%sߚM'w/> /['llcyaTb^_kO:!1&$ƄĘ}/ޒ.V1ffZ-Τox#ބ7cOx(x(qAhݛe&&^f'xaeS,hxa?~Ÿ}QC۞&zbfO٫pWWM6e]6e]6e]6e]6e]6el3:l3:l3e=`0f{l=`vlvlvlvlvlv0lv0lv0lvYS4)MaJS4)Ma7~7~7~7~7~7~7~7~7~7~7~7~7~iMY/Y/Y/Y/Y/Y/Y0f}>`Yf=`փYf=`փYf=`փY}p7~{p/Æ]f ʲ Ȃu! , ʲ Vg羇6܎5⇸>|,,a@> ȇ B~*{zn~'|ۄQٔX'+ʲ,+Ɋ(ˊ(ˊb@V ȊYQAVYdE,4)bJ,GC~4GC~4e8 IC4IC4IC4IC4IC4IC4IC4IC4IC4 ^ʂL)eR)AeJYeJYeJp_qص.['c1Us$kr,gr!gr,gr,g r&șPayS&f~r,s2,sĔ)˜)˜3 sʭg'cɽM?=aC6x:ss6o˶~{gٸ~6^XX[.njdۣS{gw?6̷(Zi4VE+\+Vs4Zi]%)?hsZ\y:W{עZ^jsƹZ\pv7W+jls3WMzդWMzդWMzդWMzդWMzդWMzդWMzդWMzդWMzդWMzդWMzդWMzդWMzO[֜l9qF՝s63$tjs7܍8w#RfaԤJy;u;xKҜOZC_%YH^g`W=>əXs\49dg"jQE(F5QD"jQE(F5QD"jQE(F5QD"jQE(F5QD"jQE(F5QD"j9` y^s>\p1. kx UZ\U,⇸?~2p?@̪gf?p6,q.XoM9IHF5D$j$Q#IHF5D$j$Q#IHF5D$j$Q#IHF5D$j$Q#IU#j$UT5FRH-;'T&[r|ے- tss%Ϫ9s39s{/ș.^7Ah8$;wf%w$+p]n¢}ԓsgc1R"\]Kݾ{w  -,n>7::Wrw*GCXUjbUMU5EM,jbQXĢ&mUXmB#YȢF5U5ljeQ+ZYʢV㳿(jeQ+ZYU,jfQ3Y̢f5E,jfQ3Y̢f5oͪy9wW^X^_ E-jn1^x^U]F5U5W\U{[j=X8zW,ogq&ِQĢ&5EMU5&V-Ȃ,(\! 4E,crLcS֢ rAcZZb!sE-jn0qGU>jq64FWF55aU-/jyQˋZ^[g2ufnfnfnfnfnfnfZ"kE֊Y+VdZ"kX{q|}HD'R? pm ׶pn>g 7n>g 7 .0\`p p p p p p p%+1\J WbÕp% .0\`p .0\`p p%+1\J WbÕp%+1\fՁ n5íf V3j[p.0\`p .0\`p"E p p p p p p_5,|9Wp%XM^k6y&YҲb+b+V X1b`+V X1bKXb+XĊ%V,bKXb+XĊ%V,bKXb+X1b`+V X#+ ˌۘ12ca6flc6fό󙱛#3v3c73v3cdȌ#3gnffȌ3c73Ff12c3v3|ff3Fflcnf12cdȌۘۘEfό_d6fόq>3g3f Xb^f10c`3f 10c`3f Č%f10c`KXb310c`Ȍ3Č%f,1c3f Xb3fe3f Xb3Č%f 10c`3f Xb3Č3f q:V3jf\͌q53f 10c`#3f Č36QbK10cdȌ3f 10c`3f 10c/3q-V3c`Ȍ#3ƂÎ;v 1c`;v Xb;رĎ31cd;v 8;f;v 1c`1c`%v,ch٣G=*Qa {TأG=*Qa {TأG=*Qa!b!b!b!b!b {TأG=*Qa {T*L 16&ۘ`lcmM=IEn 7o+*܂V}܆۱&NK^^^^^^C}HI!>$ч$Dv[MJI>)'%D}e$cʎ*9ߋdHuI6)&ڤTjVjVjVyюvVfiVfClv{<;=sl&jWͶIHHHHbCRlH I!)VmFۤ6iMm{cI4)&Ӥt{wba6Yx]+ox#ބ7cOxς,xς,qAh'g*mnHU[ensVjVjVjRmRMJI)Vb)VuliUT ?NGt_BU.s5_7۲IITD$Q$'*"yIԩH:CR"u&yM{c?8m8Pom;qQx;;G 8Xx=IQ2%CQ2%CQ2%CQ2%CQ2%CQ2%CQ2%CQ2%CQ2%CQ2%CQ2%CQ2%CQ2%;5qw2駸⾙KLȝNu<-9dNZlye2Uɼ೚bd)dj.b-?$;S()U2x ^xv. >G(s|k1K&h"&h"&h"&h"&h"&h"&h"&h"&XX3]sz)ՓZ]bsں wΣȶ<:̎twケGك+3v {b/}/KvKDZ]{qpND;:pcI'N'I_I| g7|Hz?O% q.:$,l²*JٽɷяHNJ܏ *x{0WZQ\K=2ʽ{͞s <;m8xfA[(w9";q\4;#w.̺sRɹFrekrOdw-[?G}86{(>prvo~AvK4?lqt|<ۘ3gyl,/F75_E}7&=W%{oqV]xO`#6a1)af-oYlͮoY˛9gBRh(.z{xތ={V=+| aqڰ4[S&0;S֣ٚ[dkYEҶHg3XSqJ"NI)8mRq\*Kq8.հ@Ja 4,%аNgK)4 ЀhZ= NY*1RJTbcrvSgRs_ ٸ43?ӑJT&w6-۲p/^~;s/#S6>ʞ1QϘgL3jzgL.ζ.?KԤCHX`ډѕ z\aW簫s9J|Е+qؕ8=aW+rRWRI )WN:g+˕rtr\9].WN+˕J^}*y)^o 7p{qpND;:pcI'N1%_%|6^ z!W/\0Yыo7F܄M| Q)~wŭX c ~!='z܅S܃{NS!:uNS!:uNS!:!_3s0D؄QTi֣g=zFѣg=zFѣg=|)_kך|)_ko7MFSєo4ߛ,{)AdVgVgVgVgVgVgVgVgVgVgVg X-:[`ulVg X[uXuXuXuXuXuXuXuXuXuX[[[[[[[[[75}gl,9Xsq:Kq.ER\n|_5_;^J\-[dEȊn"+EVtY5kC܁a?Fur\.%򦻲UR$UKR$UKRԴ!;~O p?l,9j֑[nr7}s ןsVy5ssp;xXr\t=wsL*z|~f{[_n7aclQn{N=4p57-iGuec5˿b7b>^ #[#ބ7cOqAhJGIX},Ͽ%[+t(gz'ޝ5ftN]S5a,SOGGd6i'O 4>lYsǹ1s.rK}]_p"} p+ZXutkNkNkNkNkc^'cu+WYy@;ۘǹ?;up7dLr<3 `.3a _5~ _5~ _5Oj~]ïku 5TO5TO5T_5q \5q \5q <9պ4|_٤/hK4%ƿD_/hߧi}ߧOk?Ok?Ok?Ok}ߧi}?Ok?Ok?Ok]]?Ok?Ok?OkƿR_Wj+5JƿR_WjƿR5iZ_i4u:X5aX5aXghiiiiZ|߫jZ|߫jZ|߫/i˴eZ2-~L_/iZ|ߣh=Z|ߣh=Z|ߣjZ|߫jZ|߫jZ?jZ?jZ -~B_ůWh+Z -~B_jZ?jZ|߯kZ|߯kZ?jZ?jZ?j>kZZzޯk{o>~$IK+ *@GNu=aEP۲*TK;ֶ̋FN B)B "f1*"zsd!3߮v *J+ *J+V*Jo[V*Jo[V*Jo[V*=H ҃TzJRA*=H ˩r*J/˩r*J/CTzJQ!*=DCTzJQ!*=DG#TzJP*=BR俷*ҋb*J/ҋb*J/ҋb*J7tJ7tJ7tJ7tJ7tJSa*=L0TzJSa*=L0H7RTz#H7RTz#UTy+UTyx5^AQ j Tb%Vc|ը|fDQ|nSTo1[LKu%D=v <fɣf><,zӘl!OA a+M^+.׵r;.4gzvH *~ҪlX/Bx Ex(A)a:|cE(TvʎRQ*;JeG(TvUg!1 ~XTk=vaf߇4 D!k}8 |#N'+FƨbcTlQ1;XPGkRk#O6P mmpĭ~@68ΈtY3q)wE8 8(s9qE@7P JOgWJqn ܈>9gIvF!7(9~ s "b_RLt?ʬ')ҕ^k33T|)bǎ&Mkz5 jnMOV> : Y}zꫣg$ŊQ19k(WG(b^L-iq3L=5WGQq1*.FթA9(:N]YVVr{ ߊ/^I|8Q@1 (F(z2sʹLT yMj6h@_ÕkZxkq A(.e(?B|m\Z˹@%VʊjQO<.a!ϬZ( g{9ߺٹhmw~ZD;Q|ݜ؅NNNNNNNNNNN|Њ'-[j葺lA[9 la' { ؏8/фfp-8,z6jk.4>z7]v߁=kwCs߄Cnaw g*uZj%ʹ(*ʩݍۗp{xk{~$;UuUE]Uv=(z=ueaRD*\p# c[-TU UBUPU-bUTUJPU *AU%Ui1^ZC5jY8y0Yˣ1@[(8'ynժXBx Ex(A)a:|c%(啠WJP^ +Ay%(啠W¾@\k_EX',Ň@r|JQXj`=6`#>&b3"؂uھcv@ZЀ8FėhB3b8VS|q/N)8_S|q/N\/]xGK%qq,yq9Kἤp^R8/)=f:H#e4oc_㕗PC?(xǽe*ocuZYv{,6{d>'X se >{+ ~+y,D_`;vr_=߀8Fėq 8ϲ Σ &~XVGMNq Rd2tE79E큞X/q9 E~\#k9~ Q|q/Yq1N=Ʃ8ؤ>NY>}3b: ωc\-&cgY༯rާTbs5=,",k-rk uW+oE Ђ$W/E=*vj$1@ ZuZ{ު^`a[/^PRpԦ?^EyQ㼨xoZi`>X-Zߓ?FUcQ98Gj|]sv1y`!a1%Kyއ@˰+PX V k)b5)j_ ؈ϰ A[9 l@v{Ѐ8sq/61ֈ|ZpSnM)S7eS:eS:eS:eS:eS:eSi!eZHRi!eZHRi!eSEieZDQEieZDQEieS:eS:eS:eS:eSpQujPujPujPujP^KzS/uNԩ:R^KzS/ujP:ujPujPu::KΥNRsӹ\t.ujPujPujPujPujPujHu*i'ZEfQYj5EVS*J]ML2ͤL3)L42ͤL3)L42ͤL3)L42Lk(ʴ2Lk(ʴ2Lk(ʴ2L(442)S2)S2)S2)S2)S2)S2-L("ʴ2-L("ʴȾFb-uF c63lB-6#-ZjPjPjPjPjAfPjAfPjAf[FaW8q 8op PJ6@(%dl PJ6@(%d煛Md_Yq|c8ei3΋46SQIfRB pNV8'So҇+p7A7s|8FZ>Vm=/xa2tN%STr:UF{b*6b/U\TX(c26(c2RelPelPeS:eS:eS:e쥌F&nb3݂UDQ^KԱB!N!Q^ K!{)d/lP:S^ yr5ñql9h`YETN%TA%TA%TA%TA%{d/쥒TA%TA%TA%T\*y.da0YLs,t& BgЙ, & `0,LV1]L:ӅtQtQt3]LLLLL^ /STe2UfXTib5j,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, /ӄi4e2Mx&L^ iBeP&T iBeP&T iBeP&T iBeP&T iBeP&T iBeP&T iBeP&T iBebP&T 7ոp-17& -a[1 qn]=~<1xxA,",?`)>DBX0#@%Vb>'X7ؤm۱C:~߰2ܾS%lKn,!+תZ&aS YWyU_$loX;~ÊMin!kiHG'd3.AxCuhס@_Õ^x]Ks\h|.4> k_[6v ؊8v7)}w YD]\'&FkmgOQ cş8Fg q.OK>/DzO4Iss'I/4M#fJIoץr>=KA>;%#H!> ZiX,U`yD&kQ(||X+#'+6E3ywQ+/BlȟzyNy ‼SnyR'68dd,Zl+>⸭8aoZ|kdQ  Hۭ{hhN۝mǾHrWث~O;i4G'G'iRi#K8Zqq|N'!y0qKqH+.(JW9](=IJ*IW(#i(e4OMyXz]y\ɖ+Q^B̓v)W!UUޕ+)A進HY*T)˥RR*騲VY+}(c&eUJ'/:)SI e$}RJgc1M9|+)tAiS,[n9U{#[߫w4jZgyvv|C)zk!Z__P:zy#HEP$߮kOwjY]7wkjj r#yV}*?UkM&Q-EǴϵmXmKʏkxvP~Bi_Oji ڏڏ3) ' O.?rkʭs)+ONy yJʃ)y)Oy2}"?BBq'g6)@#9V*aX jTc{q-88~Y!9f;yƫxM\Wڋ+Ƌ!eUylH9!x>۱}/_c+xOBK~;vW+;;lP4w{a_Cr-{v_Sf mپ䑲^H1 }=ywlNẺS zkiAyggf{ff\j l_o ᕜȟ3`o‚}WMK#YKKfQ2uvɣFx7KrW%5eJyɤYDzO>|~?x’<֥%kryIpY0k⚣WMXh_niҾdXYc%ÒϚuuST(Y(H,3s~)KM圮牒5oD~RUrsI kגcJϚ-avZNIG)9$oV:S5uCJeS#^<ޱ:gHAoi㳻sF]ڥ}ެ^:Z֜Y'šWzyw ̹=_+*w_҇X5ydVuQqduN0AAAd1f","D "f"LKꢺ4M4abf<"Fdò #ͲY,,Dzyye6:^۷oݪ{^ܾlޣG˸>ooha[N r˅ 5-3v}^pj4ց kYQn۴c8=uѠmbo^ xq ږcx{I4b6R/J#<.^jHF.ٴ|nA=FbvnIRW#[]׮ۥ F\۔ڵ%cx@/u\!\>@/ &IC ?` X[8*fH$`4-Rm~Yq@VNIsKڊq@ri RpX=Y+mCA'Cbzqmm8*UOixګ4@#xzINc9x#G[xݑ3ٓ9R^4ΊyQHXۄ'{} G(8ο|roA?vEL;dYƿf\C~tr\|Ie:yo~5 .h ogȸ<A[ ێڒv c KɎ); ]y)q0`|5qKO5nR%`c`?㫴86U8nV< xܱ0$`s܅r@sk3 D@LGkZ7irb:DSHNQINX74錜鰽vBy@1]^KӰX((5eڦqV>0]##O^M q¥5=¶Ὢmyn{wsr<"M@gmsIu|'{ikҶ4/[U8j)+۲7PgZMMwpӰYh@fqrcN9E<%ˁ9K8ƒ*'w*^td]GfU xޏ‘:4\&%y5p .Ȱ7\bmMvy8"%v]*{W<\`} 9#؉-E1]s qq!.d;G ND1?8Ip,9R\u.կ-pY8Ipu Fp-oN2vp [d\kY.kw( hI\3,"Lpu>wĵXZD6Ɩdk%[ҸU?L;P5Vצ_g%`|Z`QD}[ 9EE!s^UOj<`XM(Vqn)%XAaP3zO<׫F~`K}F]ioLNS1i/n &-mm, {en<Ú1vOCh FkQDӨFoj GvưO7v/g ȟk<7v> 1b GBqXxrxj_m _5^  5.+!{ FJfd߄v*pmmܸ^w}(${%AˆSd3 {!9~ӗ B `tB( YÚ(ʵ~a-Q(մD!_m[P3x[Pc`O ;G|yn;DSDPI!J>U+߶j픏<6L͊1ߪ%Ym".)kL+aٱ v0Fl-t"ʶ^oH ݾQ@^DdOp ^&xEMm3 ol.f^a7xٷs~ŷ#@p Xq+ִpݷu -hrA(;xD|Wč[sjyK] <.5xֶpP6܌ʴȀ]J-nAU[4n ZV`irT;[q_]x;k9OZG[ E\4NC5K:2lIR'Z^"~rjgorՒN\,t˼%[maSZnZ--eꭖu3g)RZntV(Rn"1RC;X6R,PNnε0-6wV`ܙ, Z|>?t-b-dc4DC(K=̍aCNwUt YCG,=u7e--CnOeԭNX&!eR m}:d̺τD˜\H,χePr}1C Xe})mvOz*}-d6bMv[7[歙ۡAk{=4bw [.[ BW]ho躵ԸZVxBK |k'%Y;QOzhzܓX<;VγP6P) 7z ǰjgYCVd=9֪|:8rQ3 c!G "'CէR[Gq|o{Icj OjOp3;7\e$Z:OEvS[Eeyj5Bo-DS@:4Zt",z~NA{4,ECBߢ) JS(mwO#J=?F z_uЕЇ*< w M{`o"oSt(!г=:9dB_CC(:OQ#A??Q3^9Ҩ\@UQ5T-R锅 QyT:KSoQ_ |RtIt.@ua(MݛO)tߦ!0զӽEH#S$68nYwSm/ݯtzu;u-ua{_j@W׿L_HF}5}%W_/:A_tҙ&}s~ Z?G E"ݠ_%mm~MF{oҍ-}گO:bcbMߌ}16ج}c_-cĺX_ޘؾ<;V{b:G1NMLzd^197cSo)41l{15OSl]" Q;:L&aWV]:-*ք a3+¶.].ڋ_-+U^^iOx꫷4{=ǞS-0}07~KD˜ɯ\={Ob?D{ȯ\O ?]Gq"gP}7_ѿ٢%P1J蹘=1zRcRbR{cRcRQZ 1腘ܘ\"%LFLQLʌ))F)yeF\2dOb/]e-}ڂ]"m1O=5kyTC9hE1C O"8T 4*El~$} բDt$ q ȁdr#z55Wz"&Hsԏއ~4y 5H6!ߠ+~3 Ї"g$# ]^F@>FT,*'Qx4TLePG^^BJ'VW'֢2+}g)b(eCQNJAUT#@AC6%kieD_!8;tAMP$5IdC #15,d3!A6H4 *j$BfАlȉOבork.:k{mC|h6h~Ѓ;ZA|6EakZ6^*|;w=|??O/5~Z0 B)P(J J8*N',xM 39pA(<10rU& 7ma]XqD3Ƕ 4߯%,O$,=Ʉ@XNXAX>L,˳ ?@XCXAY<#\(~ ?FGu$8S/R{"Of_H~Ä͟67 4QM`mO66WP_9}8`͕U,𸚺F]C_0|MTc5/PZb;S<ӈr#dةugmBVҦYavBͣlZP mqE`65u϶yǂ Σ% :n:VvNJc %"glw{J>9 NYtzx''r0Q\cfVOS99_;+ng|',?>y߇/ V\nTw'%aL.zD*p`wZl|BM2Uxl{7*v,UdWaYpKE> Jwݹ|N*s#}v=|O<ȣZ <^y .=xB5/|w*|'l8C–4i*+#oۖ _~7j78 Ii*>4yӜ΋B3cjqwHr&cK/: g-tN {*:}*9OAgP,~B;KV{s>;2UQd?뺳&sty{wn%;t۱a+G܉#4]# s޵ {vQt85%CJe?`þnD}X9dSJ헔2<)OWj5}^9a7"HpLsxN<߃JSD%LbO4>F}b݉)X F1E&+gwkO2<<61Kub.xep aЅN>h?Kyg2xGO;+<>'?F}C= @qN9r݇%Xqn4wP :DGZ:H21SOkvMhN8>A|8om1qmup ]VV!vx,v%fѼ <;9 kaw7佢]4탉Fs1G;q{<8炱9݃Qsݙ]ŹXT9} ^_8]X]MtN-?+ Zp%Es,qɕ*2/Wlk+)Z`kr5]I9Uސ5jhpb~6乘'І.Q#Vb\*v6mPܵ?ZWq5\8D#c17H5JsMqo&] ن.E =ņ>rÀVÐk ?OBN0hpma0<űaZfUCÜ@kQMnXV>aM԰ [ꁆmPbb͒A- ?g~(Y.GL8晔(*> UrXH&U!J=-UHsRz^ x~%AH_arc^BtZ*QEspHyzC$;>Wޖu?iL+]RIS]Fe[HqшJMX@o5emg;.c!v`'iYvev"vn[6Gs.K~K2.;r\)d} X 县ձ*q'>y8 q39\` Wb)SZӄW=?@ o0'̀dRŧ5g`^ȪaPYL*duȺDV4z2 r)V4u: OV#dRE24YsqaeslT[}\5sy0"̆y˶v>9WVHp=̔G3=;;35LIQgԨ;oDTRwZ3$tGwꏳup퉎d嘾'!f +3a=ƆIX#w>s4+ܮE=͞'g/ dž g.A?SdU(7"Gzcdl6#Y-#}nO4[^`rM6H]rp2鸸.K3H9Wo+#v;1A;}a%#"-#bN0}P ΂խr":8󚻹:\7Kly$"\?7a1n :X 7CO,`䖠nmr-ȼiG[ [kMudX!Ke?q!3i9qY"aK9z;R ,ŜԀ2AZv}3Pg12Lo~΢Z|ɨ.KɥX2`6 ˤe2k"[H?e2xr˲fٰlY,A+mWG-kfšy 8iM㖬kSi-d^ 3ZjVᓞ &fG ޶Ȧ2}60/Om veualzl}ېm6 e?ӌILC& I"$3wDY4}s}ߟ4IjPWc ]^46TŖ;"M \/iA%YR ?Lѫ%y+wp5 u=MKj&+/1/9~^㬚yke*+7kw^sH;egdY#'N~P##٣u1=A~ȊȞ=Km^va%fо+2d5hw-5ggo'ȼf약3{_#=>A%mM'l1-Ks)9sI_v3gl IN?Sv!iR, 3#99=sܛ30'[DC!99CsF3&3%@Xnd2J3=kΜ9%{"bsa;{ zY96gcN9s6f.9stpnNqNh9!G_p\Kren[ {w̲ րVh@+a@$OEE4wl@3׷_ /@J~ hol:Ow~-~ ssk,567ˍ.s.]*_r sɷ:7K\f sw3XB&KK{TϘK(u|JTPfC=Bj""P(|v(5R4[(^>Bs࿧dg/45@c*xzJ+М_FB -5P mJu(]vw@:d(uuo+QS@ɿ{ ZB~zQjTW("PEej(-&M~\-N~^R/,(A,GΈs8\xVyJ=MVƨ 4"}gx|^|<& =!4"৔$B._osulŅ|_srG|M)_=#tObiO&Sh1rSڗB'2LL+͘q3"3L}h=> sDHoCjS)v%"R#⻈!v{=Or~V;ƆEd Uq*:\u,#"c[3[A Y]*m.B2.ԧUc} {Ԍ {`|, >eߊ R?"'Ed%u o|>ojQP VQPr SX1*r.N/ּ\&"7E-3IQ݃5I=(Z+O:~1scH=>OCѿzֿ+P:YVȸP#ĎA烶FKO5g]o5JtZǂK:&kgbSϢ{Wp&H_2i.^Tƛ=HM= gP/&¹i:c,6qUj3̹:T[.1~\30[O+/GK/BςEuh9x;wFf0¹KJߔ >YnIE[J3@zrzpn>IoadfF|f7fnCw~jY[V\P}B̈́Z +IPLN~BBYB ="4Bh8 BS 'TBk6/Mhо` g_ HO ZV+TY[|3IP&]Fs|gTB}h-/44?RhPDBӅZ(Th:BEBۃ  >Wk?*T,T"tڒd/|*I&W!TKE]3EPSƗ5)UjPGB^B}r"4\QogϘ6'm~´i+Aӊ|?m{iҎX?R5R#R+R7"? #M#-#m##]#HHHοGxI#3"s# EGEVGG6C[#GFDGEh8M&GGGE[EE;EGc;ѬG#SӢ󢅴/n==2z"z*Zs*Ǫjƒb bMb-bmb䧳ʏ~꿕)?>sol`,[~ghldlL 61656=6'6?042.1V;$;C%+K %%%0:!Ppv83<̺2hxuCb}xi-;V&+=\uGxOջS͵FW W_eB|~weȲd5H6_#Y|d5%x%hIFd))UZF"V {oo8Cx~֊pT ^ z Nxex^~Ϫ~?U]ͶTy՚Ukf5l=Tz{a*1J7-Gg f]MߛcQϞrĎd`?n=(o򎂝 NEg>R~G>9؂6Pten#;=]#t~ocz)_9ɨtѿ?'`; ݿv7 tw}C_#tUb;#Vq솝ު 27?J٩{“##|C^!WbNT#DiD0n ~ ||&`!X+Ւ'oe*|{/ @ ͓RS$s̺+j ,A f Yl P2~/e NrH ,ѿ ^ N pXjx ;  _l3|>pؼ?f б 6h!)B &'ȝ&HV͌jo#*) އd/]וJe\>6T{SWIp7}] p+qynۼURx??VMvq8)au6{X=xו-F.;&XWU8? wGxJt]d}? k DJ$Yq[_ԫ"8dzySEEuED 7g/ӣ;jv}{p~A][z;ܸޞ@:oeŸ+p!Qrs \M5rCD}C9QӬWٴ^Ok-~!ؕg2=zjdj9'7UtF"yQ1vց;]'9 ng}λR{~h'ٛ~ϩO~XzDo1 ͪ`k76:\`!X7.WJb*%*qj.sΜ)ԭOw Hu.Gm+Bkz[!rx5W{_ ,Ugz]|\ڧzi7G8(=Y{һ"޻/ `>x QH6#yZO뚧^583g2w֜isfH\ #n'7ճ ԎۃP{e3|>P:{WLk^؇Via4ٔ !`87#t֧x`A/yq/ ɈjqGUՑ+࿆wqV޻?{xCb;iZ*ZM-mV-]/.\{W *֟5TGU+ uux:Z%uٌ͕T)XZ#zgwӚѼ?aT%p) CAnZCaYSk vұRd-t'čaB1.wNFtW3zp^Fm]ݗG 9E8џM_ނ:*9E T:/k] _l3ԭ{[Cȹ7zďRW߭A ޕ=^Ɖςۺް &NוJݢ_ٻDZOsDքNוefԫ&jPwܻ!?F ~XO1;U\=\vi{TYRkd:ERgnd$h騊 ,0zh=ԍw>.:ӑOg+qW0+&%SVg(:w*˝{ޠn뎹N>51ĺ`nDK-OjO8't/ە; },W<1u|w .{Fn#Fx7p㍅wvF' -{$FU#0/ps˾¬otȌp;]D\Myo7Q'{cQRK*7zpskѫߝZx"o3~-U_.AFx?؝yu졫&q+h/B8s 7<7ddn:V%rD'STB`X聅Xf1wF*q!كd;\TpSNq_Zs{AJ og Oݠ}NODZ\X=]<`vٮ l}3vcz3 l6f#fZLW]j} >Q%O|WOWQ.HwbJ}ﰖJjcD>Z}Y4;V|Wv*[ V)R)7Oh_ O6<_ak~ZE=mBq>]?H-j->g`keb܉u輦7UXBl\sDg,?  &57WWܛ9O+oԛ{6u5%N*nBks>|Lyў"C7~[}PH߀m^Pv=\,$ɂ,,手ߣ([N/77OC^pbVJ4-E'9p>xi7{#|Hx~[~XsFY Y |7hŸKZ š҆zVd<[U$* 1]Gïc^zXhv{0S[2ρKԺ@wi}ᯀN):WUIm;<`vŋhvSqJ#QwE0|8X1 K3h.d& Fhs `biG^cMĪ^ ߸To 'f8E8)pV=) `ًm)0)tt\ɸZd$:+'? v*dxR1QXNUĉ o'C4u8^gw:/S[,̌juWhYA<3d@tՏM-Rߺ; xrJ;[/ȇbwHf*:2H<ۓi%$=0~'UKGy2vtF: <`o~76g_<doȩcm&aegce$o!+1ۘQZk3e Dҁևcs|3,$둛0+ԁ7V~\VjԮC"S5A֧@N-?uql.nzɽ3bO5+TE lb,nzen{*^jNT'fo}ǡ„^"5#N_$w󣴾 "#zeEղ3E-p2 ~?!Vi,lHy|o/1.=׽| \f'yqx=y;V):kzb 75 {Iɯ5Sͮaf`X(+s mu'Uhx%*>bA &6I[lS1\T oѪ3| |!Mk.VrHSL#{.&G7Uo7yFPgyC~FK.Mܣy߉ZoN~ |My]^|wvSKuW{k]ߝ/i8ze*z~&\B E{o&T{=X+uEsfLR}cN1fEwyF$ 蛤oEGk}E/F}`8<7Dy3Bǯ%ĚJx}[Xs! ZݓoW 8uv4hRtWÏW~|x$|~OO,Y|WZK Dy *My}NQpWEA{=h6Si#H_G;` ~h0d 8\1hv~L iW` rf䜥| BݲT vTt(. ܣA!Jk= >hAW:ZK/G1$c!FkGg2XH&7o3#,}`p-OFƳ<% W+4_ ~&>Y ? ^O+[N)ߋ<d.N赞&1B3rҗYk{S?@3Bf^kܽ06YG>1P MAz9t邅Z'2ݝ`8y֦3ȗ!'z=YX3nbCO#9N cg": Ӻ9_?"w`{ߠO_UprSUl?ӉOЋ8L̛E23]'2fj`ӌuw?1rqz=ixr EΚ:뇜vJf!]SIJnw&^6⟵8fP֊0+O,2+6`H}iOF,ϳ"4xbޝ;W%)z+MOB>G!`WtPo6RO!$&j(-JKޥBkxg2bpysyS(۵*S>t5W/%#Po֗3HS}TlZ7Y{ ~-^4G÷=zCRXCrTGj fк i} )_F!>7cP>Õ/YvRF9!3TfFѐӉ4 a]}}0(=+7otd-!!#iJs8:fgѲ`$JZM?CjcЗ [O4稇)^jMxo:+ʯ2$Na$I̤R?k(*փ$H%-kLvRESd*On0iIEc3FgtVx8ڛFzS."HllUmÑjueй7)T jˠd1 2*$(GI~+7)%*Q˩L a`W־E{zl !N5a }}KH(,;Eӹ)T$YNT>|bMy9T9$|Gf\WQdh+Ή- l&ݦgkTCh&~Lύ/@_(Nn3T&tl 7J;d2g'R6SZӨiQnR-&k)ٺѶ5hBd%*3{#o;輻E976ݢEsF"c퉔 gEQC$SF0 Z3@˷LOrWIJz@$He6S<%[ő/,p#d-a6 QHYv; :Ii֧娞ATσMw·_L#$@ȳ#7p75R%lb.Md+ZHe! ,W"nsQ5}1C If|]Cgշ~K:>E2 /w D>L2(Gs? 8IE&QnA I39o_L݆RIB/Z;2/Dc݄TL# )FwkPN޾ BBy )PZ@'uC4`,)0 @B>( 9TZC?#!Cӌe Sv 7u#p,Æ5N#|p6+o.?Wc DŽk7 <@x +ed^'h4ac6a aaaa’SI56 lJ 4v&I؟0p$um N'I8pGf."\J,MW!\Op;.pcg3F4B r c  %,=jhPEF;5br(p4x©3g#V #\@pa::ʡ̈́;#[ײ?Ȗ>5P1[zblY۟t-k~جbӲߑy[lFhc=,$LmhZQiAX-a*]FabY[QfI^5]AeMW-5]͖VҋdKϖޘ-}.k;#)Sjʢl+ӳWg:+2Շ<26Ox_mK0\RF@KB}w|JB<;.KX.egWU)i4zjA\+X&ډ"^1m O/1"qxFiQ *`+=J0!'-} ;yeęA hq+[m<@W0~pLGt1y_KP%10]Bee傒OY̦)gΝ9~ 0ZG-%'r)'p;c8yp[CE0FW@_>Ec 4`7pdoȖM0^ Qyya$آhjk3giLKos9rS T!N V!^THP0ȥT$j$VhȣƪEG I=|j$5 cPP=B &,B:YT=b//P\ށ].TURV24SZV@9ҡZVCNjZj*o7PEmWۡڡvAnjj/T~HQAP[UG:C]uR{iuꩳ,Wyh.P]VQk4VuhnTR42/|-inbCk ΏEߏCj'V='VuVupty/s_/ ]k]~UWCw_zZc Ώ)I>ad+SYg`l(L_3F Φxf2b5xd7a6D".w%瀹<'jq|DOSa?_|6/`_hUD:͸/3a6 s9U2Yes9U1GXUs9U3'Xu11Vj/o g#c=o>o5@j$b5DPCP"F85Jj#C!KSDƋj(jȫ)"IMUSE>zRW4Q@MWEAzNR QX-VED-ERTSEqHPODIR*JVDRUQN}VUTP6QQ}{v]ڣ*j'ꀨC::&jHQ)QKQgDmuNuuAU%qP'h~V?ꦺ)L)Um&/})a?,{}~?hs~/\-y~?O ~!󋉎~eW~ OSD_Gt1>.-iZSq{?/i^s6(t:_73?UDc$A 4:]`\t>9l=sëA? F k)\[G 0=U0\6Q"5+Û)LopU ӱ6 Wpex;(\UXn'+?P2n W?W"w 쥞0?`@C3F 90r"`dȩ#gF0r1`rHFȏ#WF>F!F.AF~ 0sȍ##@WnG!ʌ͢<ʌ-Fی2b(#eG(#e*ʈGc9F#!͈1FQF(#v|;!ʈ+ʈ;ʈ'ʈ7`$)`$_H#b)0S4`XL#FJ )0R.ʈZS #FF*T0R-`zH#Fj 0rOH# FroL〙&3Mf̔'F#)H=)wVu]'(ŶEKZ`1DcC1ALO1C<.GQqL'IqJgYqNEqI\GqE\_@c6kE h%Z}E?0@1Bb -FCXcq%x1^WL'^BNBl8QQQUm7 BFaQ(f7Jaҳ~w<(rT],HD;p6T, FW( Np8#H0rFn#."u߈5r2aa65 hq18'$h98"\h~+pOp~pnA&D6*4my;~?oxGމ?;.+ƻ'{>/| !<pG7.{>!~G1~')~g9apE~_G~_O:7-#6A& ),mE;qh/n%bxB<)/_!qبeֿl07v?co0q8n0Nq8o\0.FqŸj\3~2?7-#ӈfl)dkF|@ve',Ȯ.{Ȟ-Ⱦ/ȁr,T9T# xcX|X>"Gx9ANd"Sx<%ɧt!L'9K g+_W<9_&_o?7_\(ߖ;r|W.K{c\.?+J.W3Fտ,/zAn_MkYn[7rVn{S wr+<(<*<)O<+(/2C(ȫI^?%3-ai,iYVز-ro\&?yY^mfڟ_/{u>wp9_: F+gluq9:۝Ns9u9ǝIs9u9 Esѹ\u9?9םMtCt-7ڮnƹnMtsyܼn-r˸ n[խtSZnm[׽ǭw{nmp[z^W+U*z^%WūU{5^W˫zx^Ȼk5zͼ^ wkz^{uzݼ^zo7 Rw;Nzw;]@[(DNsϢ9}E-|~&z࠘%fQ1W̅cُ:A~$SN'p<9€rSU48LOF+Ά.S]?[Ügr|.DJ{S҅3 PZ :%>2(@$Xȍ+_1Z t[@B9"9bne}kT]ujHhTkL9 fyr:PN,9)a8v5Zpޘ 7yk0nٙv&HS "f}L9J>H{63;7늞e}Gjiwko?<1oog xŖkC;Ζ]wX!\u;X,X&jmZ/|hVvp;np{np7simmZ6]y݌_]:zr}.r~ǪF>//y笾wn8[<$ı6=7%YwʰlTf †P g^F67Лa'd>?)x?͟y> ^w/9=&\ "AEYQEhk =ݽ443fC;C m3ŒB/^bB/¡CoY;eBjV+&5 maGd4:+\ZQi a/岩lV[í4ia_XY xk<qXGNG8M0@^y C~PvLY ѻ4_T EiC16l3i4bϰPd3,W㏠<[Bmdmԩ ͿjnNϞӳD,O*оZW'd\?V_FӜ7c;׏yG0qBjon>gNNaHt9 :(d~J8 eU hՓ myTC^ U/5ND^Rк'C-q"}ɟ/5yM= #z^g/ r# L_+g_A}ݾyrN($;U_婧j Bmp^uRx}g_Q!}Lʔ;l1^gopP#oĄAck!Co7F%n IYdqL챏Lu;u$P\3qFȀ) //i̗Ә~_I#N#F~5g4kпW[V\tpE'pm.#\FO}} hZ؊a/u9ֿQD:}}TE.nPI?ﶏg ܃׌R׏")hgM5edMYSI4DT5ȚɚdM.YSE'kC4iNqdMɚ"kK{\J16o8Y,0+*ր5g`jl ƞcol -g:mC!v@G.3LC$ABAAA%# i%(A* %)DQAQ0"*[P#+2,ow;u[3t{_ކTPЀl؁l؉l8hD64!I3#m(!+aɾRxJ&r fr(r(r(rU(r(fPjP7mBEă@DBFA<<<>yOx=`C?eC`'40,yL Ԃm 쇊7g]z cqxO G6Cv2a`٩!3 a82+Z ܐ$L#L#|GxOd1iD} }d)((SQCPCQ&=F5/5z ?3_Nt]PwZwH~(2l(}E3GYt2烁00p1;}lJ1AXVHbaM1XŽ'G‰p&\q+F “" BH?b"1D&?-V >Yͬ5:Gh|qw$@"LL!DJaD8ADQD4CL#b!M>>>vA< 8C?e܂4  EX œBxJxJxʠxʢxʡxBGT@TDTBTq |̀hsge.2Q>W#;໊j';"=c1(k0m=T)ˡ[1Vgڛɧ.>S4.Ƶq}8N<'33ɢ* j&5MͥQZHPT@mmT#C5S-A:NNS T'uJ]nR}!E=RT?|qǗ|Y _?Wk|:_K RQ$Go y*O]}L?Z-__}nO0ɬq:u>z0gX+N̹o 쵾)-?*@/}[rw% iP~T`mW--w/v֐H>;H}5p[bhw?378=uBW!p$U-( thܥC̘ 5֋:X/M ߛQWN#@4\uD#@4D#@4D#@4iq$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1ɗ;}ߑ2sW>9SE>b9.9@)Ucp_>"5gD0z..)CZN~] -&Ҵ'ytMz#L:,0޵p^9Jno5ϓ!Ajp:/ Yڣ{s2ǏK=1qxR~u='mAmC{j-dr*y=R)._f{d(T_^Zt^sunq-/vWWmL®u]<^-%4kvK69aěmWҭ8 6jPQe/UI+FpY,ZYIAC6V,k&&^aI3lEZ>Scg'#ri?lOz73nCm~DVR/[V (^g&wswWiɴuU^ј(%.'%nz١l?~ĤcOO-`'R5f/)fwXrќZF mёb*ƛ~uuEyEu 5j?Ԩ/QZt5?(`W}ߘ#aJH| E00MVBB}Hg5_(=ӢZ}LRtDQQ1qps;#A0tD*?<"aDrjLX?UsG ;T:o0o֖gvhaLV|Eɶu`?WbKbl>b$g(,Z[-}|Va~aͭ! z3(gxk?ia~([-+m.8%q}qXCE#$VPh(U9X}z" "J$UH*eTY9S~ďpjVZ9zrKuܵߩͦ_춯Rth{V;h~Q.wz!iosR~뗌%ycGe'_?}aÍ@Ξ.סqzT5^#l=8\7yPlֺa,9rW 8nXv^QRurNǯ䥵LVlq4>/8|[{+cZ?5=vPkQnSqgthm*+^2R/d+Rw@Ic!PY)5T#zاv{;IL"ca;3%:19&%M[ L(B2h,Ϥfg~Pt]I0nǟw~,ycd=&Oо]]|lƸW=ukZݦ9_0ƺpߑueˋ9^^ossht~ ~(L6qAQ>5;cL.+>Lѿj{Ml~G^dO%K uMbA~=na>wyPG`o*.>ө֖MjKYf"5SGh>d,hh9&CˈI|E l0Ù|8#8VQč:h٤b3Fܨ:Ա~zEȾ7$nhgڱ¾6g̟o'fT ashf`?m N'akc$v\OGu>d$nU9}U;I{~K5.wtcH5k5x^0z@҃Z*Vͽyn_[;9{J{D*ncekVx| y2TzڵTOT-mۙP}I~pGW&߰Z :2LXVruUDegn=RyѰGͯ\ wft=xdݱ-Yz)bݩD|wf25)Rv-=2Lv~}dȖudq{jp,)͗sث&mkcŚʗV.ebZK$T.rcy-wD$.e9r?kSI~?9~pegI Ge?D"Z^@g- yߧy+~a(sJ9d_ (zໃEj.>unMNs3|ѾCX %ch:K40_,KKQp}Ec镺:FSғC5K"&6Ux+c_}^(Ec_Yq'ܶ!G#c\#?nI^y-'Vr½/ck٥L۹ :4r[ƹ_O^޼ae< > stream x]j0E -E,?1$/n?Ʃ,4IZ*aj.WJjhf'с<]z$T*nw1$^-D&8;^Ngx"ɫ`gy|QFJAϽyGI[-kX P9E3b0^Hiu&UA|6vg1H- YTD9i "eY69xηwQŭ9(qDFK4Z6YC !pZxtXix3  endstream endobj 10868 0 obj <> stream x| XZ}"DA9#pFppĒA3jeTH=%llph^l;(osխ.ow{^1u'gҨj6g$yxDNKd cF䏟sDߥM1iȑz u.F hdJ~cV5Q=J5%J@{ڞl_xNU̞W>Q$"{K1g}uWFVYYQ:O@.De@{弅8AEy֕Kg~eJ]`= ףw*noLѧo]0jaK Xg8TZHԥǽN:k2|P*7MH4F?gv5H€';ɔvC&.JHЯJMXo,n2@-HhkͶlg-Hl7a]%gJ~fOvIp $.ְvN!^#];N2{0JifQKEEQ/Bj4 |*b(}u=JAeqBNڋt+i-{bBi^: ߃2ah_4 -]Z.T<V|5j%͙'c4@_c'q lЧ|0IrԓcZCnx#/i(ԁAN:0Ʌ*MR]邸w>MAa:#\F3݈E)X'sO,ErS2؏>(ބf^-&R+D=ɲXɓ E4i]opۓ~HO@V+7x)rei?b? 6wvdQf)0qaUڍ˓XHaI3VzA4 x 0Vf^6FY4ϟp(<7Y' ː&u~Ûtv'=ʛnї=؏[2= V)HMrU@<THכHvcv?M/Bsىŗs^Q7sSQ"Cm/0۞?ŧ`?~-_zrrwxYA3u7GY0l!s赊P_r>4lk[%4/B*MEXpEEĈ.<)U/m*ntR%Wpogv-tr+DrESJGAз >t;!7E,Q XTةWjG:b7}ݰ*=;vW'ۡ7:wNUFaY03k Ȃsw9e~GZ]֕y@zu*o}-B[;>"#mK%p=vb>7Nt+h)F8fs%0HOz(1ZRT  :{1:ylz;afBvkUΠ~ϮZX|T{pX0ysEaGF!{J M3P/3͝KbPڝJ΍ءk _-GS n5n;˰Hm=Z;׸53_~c#)Od3[,=iAso~Ch--P2p);\-[3wdHVBdOC̵j1F y%DUXrɧ@kېدΦDBP D2P(Ǯƈp5תv{_/݆䮓w0сMGsϟ +?J5 A&<X6I CWNo>}sx,#iaGItd(׎!CWIkYf죃R \ mspw%GfУ4#)$O3AzE^,lGt0knH:DS eg5zZ`^iIC`]A[cgQpG"M)VZP2 ZN![]q銼T9!R#].-(<0esBj+1˒Z[v c ~n `]wu_ygz~I迏_z/g/mνD߀~qg?$o .Ê~%OQX]@iXeX4? 1Cq 3A<|ч~YFzt' xҞ|-5PC/k*8.2hKtecm؟ ["A ELZE;m0Nn%Gػܫ Q~|BkSLZnn.U㜪ޯ|-W–^ xXTY27Q4$N+r5c4SIQ/f~BA{Ea0C=CZ=0Bu+@V偄;}(0I0Za E=Jq mcQb7tP' +0⌳u$ ;'{ndrSwԛ}`?J4 @N`*hv2p^װ5Po ̤@E(0gSp ~A(8i c x4>I@nDN z9 8Y5 ,TXD#hi42S)` 8vxC~848 VlT8 Opߚ Jb| }*w S!p#؝"T \D+.7cWR*^O_ \Je?cVl oJ<++h.] o~@5;Jh>Z`kyp5] \CU@ Vx-2&,Sx] \OGpJ|nnP IfZn-t# ƻJ|~|Tcx[OЭ'6mؘہO)J5mh;zhNa=i9SӴxQ,6]FԻ^C~Cxq=yWa=`'Om?ы m |^-WFN 7A= |[;K)ʍ[NGb!O.)!2Yۅw)2stLخq6;QĤ=ԫwH8(mpЌL7lmN#G3v 'L2hZtط7.D;15$}pڠӻWJgĄnv[\.1ѝ";uf m.d 0`Ju /yJœ7dԅW4]xk&7jMjlP6.m^R3]&ЛXQT&g"g_#W\a99*k(Dxhuhw#\[MAɌqtu8'%l]P_]HHEk27U,GmIsJPF5i(Q3+2]RcM鲾ouj4q拋SJ})ֳ$ROZU )U$0k1fԔ bcՆ|ȶ(7o^2x'zmTSO"(9MeN?zSmsBPko+yyrkJ|+֚͛y:dj11ʅRNo-,_ yx PJ=! T)lbne-\'y/^ D^Eyajj;lkJjJ2i%m0v _UITr:Uа:6ͷMVh^.VTy6\*ZSMQCYe4U{yJ3Ә7ͪݤ5On@ap gf֚hx; X’`Zov~ ,Sv!eRv!eR2bYqz} ,J\} _aOk|!qYAxg h涱~~*2ȥ")v %.ڈQmĨ6bT_n@o@X5ekXɗHE+Ҧn©ڔ~q{Jhz-Zp +\r|*KJ&jp&hU]Q*PG!Cp5msĻ Ghsd- 's0)B)[U rAJeiYFnIܠLP(;\j.r'dB., @iK&zW2zHR;ڲU J;*XY5Ν$vR>\-v֛C"PN ^ 6S7,2E6^thw.W? zvBz@L=h3XÐ{`=0U[X@ui/ 8X <H01DOTTX%˘T8p6$$- uP6 ǁj|j^_^7ݔrvC[0L iEPhY `d; ; ;{#'Wb5x;ؤ5zAIn ; j]zk@AwjDlwuSNݜ=uojnQ *%n uꄓ0<e:M­ VV鎞rrz+Cr!㦇 {zH#!:C8C8C:CR!!=!Ya\S)W8La? d7C9qƸSn7}+Cd3q}㒽) ޠ9-d~N|5pF;pp`@G`\`9l573[fsY7 3#nUEXeKU*Y.`,Zl4<<7iy)a-8SMa ϣaQAμ@c'͙ /.coq6dҊ6s;b|aQSXwQřQayr}Hb=&z-#(nHss 6ZEZDn)PlHi$ T9rd\W1H\WUEssvЋ̾lUf-coS&U{+d6Ҭ77h>RD^JŕQ2PRV^)Ҋ>d;rlu8߳Dfvђ܂º%ѹҜ#J{n,Jec=e_#DV=BUU5=BjiaEMUC[%1a 26G-٥?NpY)Y)Y2 Lf7B_VԲ!]/ˊ00ʝUUȯWUU˫dU-\$L0v|5y%xZUUBRkZdk %\h5-sU[%KN2Z(% .M#4CrVwQ ®ZNl2c20Q.)ݫzCIoCZ~ 7"iL\H.4vzdLF^ /׳ipiN4cOMV hEAӰ}.*׵d-7e }AgN-7+ FjOk/}y5Jh݀T&:EbkܮFBҿHAzN1s('q5ˇLԼe1(3S.|Fn,sMӶjG?i9atEi>}Ț1YJ14TeZl$*g3tv-Xkq6@vOohX< G)ƧIiڍK#xxPMz1̙pdv--rE(9(e¯ͥ4n7S;! ;x"OEVE'_RԋCS;Oշ5lRUa O6V2Z-&Wi"YqH|ף|dS€F{Uאָo2e}c1L@&[*ڇv/9rSK 'x'#!c99EI-v86 w뵻[_u%u\N7G\@ -ZrZ涬lrc#k+c,R6C??4[B ƈԺecc1pf* ȿkpWu~WiǴS;}IrefiZg`ozy5g#.X OЮ-h?&byz}+_d!vCQD{]D5D!)T=AkG _uiQB:'FBk1C۠ߥgQ/$Bʢ,ڽKWaRN2y"ĸU$w`^i|E'Hkx߇7LOhh!Үy減AK՜4&nsamYk!"[.z2IBsp?No@//]K֤IT& J뵿#"SV%󺖳zk0L&)V2XQ@~tkjEe}1Z錄u[4>N|9O cF$c;m`<.n*#'@/}B_߀-t=@i0έDq 9gΈ>ԏR1 _"hi i ,]zpBA,U8e*؀u(-qǽM(9}y oח$܁'p<zw[] 7NGǛG_ ٔD=Mo>$F lv;I,&D4(Ӟal}s{f8f\].}u:oӚλMtlzicɄ(ƻC @ Yh4CEwf`KF6\9pӡQegNmhW 14h-f;̒l4pMqfpc=f_D5D :lJR{)Sr벋&UJJZb:޼Md&g1OY*0"8DuKqv/4?^er''LL7_r.퍳LF):#R.&x"L$qXs>8KS|"PD`gH J Ѵ&&e)>Fvl·kATD) J64՞{`a<E]>rI`EH3רIJds9uoUZznfQVRC!XB?s?s3gL쟛تپUxB^pbС;n=b-Z@4>t4Ǫ^K? ҧB3{pc^>Alu\@hUѸ0fsL1[l)VBլ920$}TA)3S+/ػ4F"{Z7-'qyjVp~jv|:c҉䀿iG&q@1x;_]^݌or6k}![ [i M0~"7!㉧tj9 1.<.zk '*f']T I(exmWx {H,Qg۷)ϦV|RcPrH5m~;gg`m ϴX෇Q<6P' hr`y!xi[)mWF\=xE8hbg \NգYq)N`/cI5Ռ-VV`ըPp֘P)j8G4SQ9 (h&UUApǡ3h.1P*Π讈ARӠtEh|4 ^&mЃv}tPTfhd 8y57tx;D^PfA&8; \tI*!2iKO,J᧥Y*{V-}ѼzӿW%ȳz3J6f=Hig]6{X ]W^rwLUw=䅿*qyxnH0 =Ib}Cc4^$%}O1?L=V^xc)2b  ~o3I>0ۑc AMN3B6.W-狷_b_\Z/u_zuKIfl0X&u&0b)_Ҩ̤؆$.Hx7p_li;bwF-Ey5QPA+SBC(-aňjbGNUWģ!GL԰;԰]V 4s#"p} U 9e4icУb䬂^Yw_P}sxV(ۗZrw<&[hg[k'|Ew[ػ  7/"\'ŏOKv| WFVw|sǽ:t eq{(muFAqh4[).D<#%N9T9rCjw JXwifW7wIaPZݢt5Et@' g&C1.I6JR7yBVjo-'cH4Tj8^V5j$D+Ofc5SK@/j=tW>RSXq?)nAp ~>(ø^u18ct Čv 9)|s)\6%v`q8A)':b kǎ!@ڻrhO=;9H.E->$!>!=?}~o?yab21bt|q9š@=ɿdޭqn1#5qn[0a0u%JSK !킒O0 O &ȨVO!$QJwv[7p~oаº',\8b*HvƢ:{+]?r'jGl.⊰ ҨiB Bn}@9%E7_тG>%P$Cu[l0Tb^f&tTt֘o~Ƈ^=q6\0 dʨl11Xq[l`Map" |NũeM;2k~*D)p\A9V-6k¢qS* Mٌm%{i jriHvs6;n2LS><;zIw&ck#6.Gj(C7^5z>vcd[lX ^#%@ g@hGIG_DO Ӳ (x|vg&|;{O[g)V $l*'cTtxchS2!4Hʦ46֝NCh ՄtZnowE)S,-n\74v#xh *S4%_Ht1lP k* gh2@ H>4y$ _$DdVvlf I9kM#Xtw̤?|Ҷ \/#+W>B]r?|οykgMpw.>sxpHܧM,1eQpܨ報{كͭ(4rK.s&ޓ}W0e;u}@ijְ2R/uNW2YnSFCp ѐp`#) HRdMà(o,c!8A_wF!X׫ΖyܚT'F?۳yi?9ٍzS^uz#Zɖ?fgEߜ%BjolׯyM\D8p7{ެiYг^+F6Jo-&dv`0VEQœB-kP2gO>ƫ,H;o  {_&767^ ?!,k6KU^[ 2g*X_F[6=:2ԬD̾vhN:\ KզtY$80 cЂO1qq3#RG"Y$L?)7C>0bSO!agxOEB3Wyp R=_(4kz-xP\GlZ"*уi.:˪Ws@ ||^,70-7̔0RQH@ɪH^gڵ+tPϵH{HN^j|B"F7TեZ>k|>LJ_% dTt뒅fEO9T Np+s%K.٪Q,~?ސ,sʠަeD޾)r>yw~/ gQ&+`ʛ!MmQo۰--l0R,MjKFUә@,h}hl)GCْ,;"Q?:.Bև!JB!/yL&:}>$A*V>A8 U(pJ>zWx)34 ooDb^$=Y4WD.8S8&2K@1 @&)NԺz`⬾%n} _6"G,MzGbDvy%KlKVJ[al;PYήgFT;ɧPXҹ% 3FG+ /uU_uw.!Mr'9`7!ʲyOo i\RO !Y/k\n`~7D7e⦳fkԤ [<'$9{ˋ7+?X M&*0f͆'?f΍OU6oK3bi_4e. Y-WIW;v^ZZ^.6.cp2G_ے[#T/x uِ+V,,n68*RqbÇyr )wNNd@8ސ?Zx+oH&Rt1:$D#9^aW|RP/͐zrC,D&P Zg}ŏfߺU%>5~IםbN3XSWټ[Oۗ;a(cI-54ҢŞ%cg6 9k9^gS^wx[ R\yR2YU CCx奰jUo B/ea*)"q.n/gʪZ@y!O "ʉГ w(]KHS۴F>/B:XGZqz@B?zxhe6xb|,|`Q|ǫ -=|*YD#:}X u pvA!nj9_>Bi8RcmQ9ֈ?ȦA,R]_jģ \2$5P[bg>;ϼk{T 7|)bְ- bplrU^\33.mmk1,)_ېBƅ,5.u&\TERE,rKPq%|۞qD&ZoTuNJ1Gإ|Lք0 _ 66{ڼ=rK{۱%=F.YM籞=mqZ>m;<|s=/+-.*X=/_"Tj9{ȏ-au8dRB8>O5q>7i r",kHuʫ!Il a jmLej$DHEJQ&LLͤJ) &A]RjKD"y:.Z_ҲJZD*ӾAaTmxT$L, x/1ix=֓Ů.E堗,8*:*x*0Ft"kzYSȒA ҂]ۡQqq*sSH9PXrha`?‰.tuնK0OW$}q3Qg?PڼJEe ~.0%eǖs2]ѳW w%Z2"}S [TpÜx^!){/>@o'W88@=)g k:>@hu>sy:6A49؏s%ɠq4'끏mN[usl `%G҃}Q*Vфkinikn.~Ͷ0,k`f{Bʓvz<.gWH<>ۗd6J CchFa Ĕ6؁P0t?g_Dy?&d&lMdo6+Kq@"QZzQP_z T~(mPڂ~'$鿭ygޙnfy'p jG2xâ="@nWC=NELET`06Ѩ# S_H̊tF숨"R$HtY99%f|9؃́tI'}ɐAW67Z&"%Ɣu)s5,!߯ fYP@)a_Ϩq̋ 9,Wk \ tfHYE8#y$?6F^Bq93hW{O낪K#5?#>y+X-tnލP\u,d(m6[Ɔ0A8MTU/d$ ecw; TGOȅxV9pa{P.L7mq1"|7ܕm\9K#1+љX8P'I.te-MWV܍IZ# h)3-{U%ggAre-h3`)'[[&ɶ|d@,ԨO ]ˡhxpJxG#q8~}z .qRNβ儍xT8)ƷoivٖרzmFbl2tm1rM:[;2Kk j֥vi-bHb"1:ְ0QُnL-avSHL(YC!RTLlfnk8 Go^˳"kf\yc=ymtphT rlhԕFMּOKf#Mt 7Q l|Tq4R4r(nZnLc$@.f0(&#z1wlwq7^_IYҗx4`0S7?.k녖d$A;&qti}aW5ֵ5ё/%zN=QCfDB @&ݍPGῨ0_I6"h1]m8Ay~pԏ. ?Nt'T%7C ЃS'S>MT2 ңi98/CvZ2Y=[y^:$u^ɢM ȢM^W*hS*hgƒZ: T ُJzT$9HmC4fuS'MFڡo=4'btVαrC/kE ~Gv,V0]Q0S'_->j}5Vk+& qͯějLwN]k}ݯknH'﷾ ]7#qww6Z?ԁDЗJh5M%''Z花47axdRkRr7#JBm&{daU@:F0~ea\"xChCC\vB1UӀMH=>qUSO_ך2SD2jaa8S1XOO=L_BGY{{n\_?lks|#;sNZp!  Y_ب9L!˹u_1q$O~r~Ƿ }HWRtT ԛkA"EN[Zp^2yo$.;vzq K5bPFwFFGFG(*UJ. ʴ}Jry> =}\$72Jf){v6CS/qL^h\cqO שzS(ǀG'x2ssqB]88lL FB4h4J .IFGr(ipb>˾Nq80ۛYRHxAf8d])G1T9#䨑'9O'J%>Ld~l_}qhc21Lfjpk74(DF]lOC8|U >8;]Q~# t""7k :NwnN+WOYlju6=FR$^VEux[hюi`;qIǛ.XrZJMc(xL]YoZ±z%7 "U 3KtO[t;tu_PtjǨ"Nt 8y0}$$vkH1g8N/ᵳ }O%/'bv Qp~M4E}t Wxx RxK/e|W CY^#Y^,UYUKWSUj;~#,|+ 9 L؟ Dl7c0jTKv^a#R*:TU{T%x6zQ(_a'꙳dO/vrGFu0T- j _{EZtbvg@jy?Z$\5U CkL/>UPLzXى͕Xކ };8x0 =` #x]mV#Cb<cNeAqR-wlV]RpO"Fw--3N<*Wq/-o%!*[ZC0wpGgRiz|V/Y5t1c_VV?;P\^>A @Ȝ_Z*UɊDCs1(BY+x#Ktg Xu)eK"Pb)Sj~7aQAwQiW61;)Ty&Z$"ywg-"A^9]V8@K1@ z*2Y-Xi !^Y,߼,)mLFTGE9_b C v`/'^wFIV|EDwMXrj>Q~b f%j0aq~ AOii t>'<}SC!hesH ÒE`g<e;gg|O2] В>kz"E\ K)30K vcrSRO~Lnu%\S*(M:=ou[ pp0S|X@e{*G @!p|F 'Mx~PnшlV{? 3m2R: Yur| >SQ[苈. s<{:IζSWsAfsy\jMέ5v=A >oNޓ\|ڼ!ZkU>9N p@T#Z'`uQ@dD]8$MwWa@t /JhXh>A|bs֗SזkQ+qFk#XHv`1,_^ZԖ( t;慗^),.!B~(!J5>w_G9湏LZ۳ikͷe.soΛXosUoqۿOJu4SfD5|SԺ*z9NI*%;ME6>eyp{50Ecn_m#jt`wW;c 1Π# dQ^ˡ=dOu ; Q̄Ð.\iC:4ꢪyUOև^[ nT#?V}d U2ދdUAS0U 7o[{)9B+r@U |Ui fg0 ͂!5 w|ms>xOy;^_/i-ok Ogvl7XP񄔀;o?9;$o&dg''F& eEkm4E+#'*({5ԯUڠH[-<㒫QxCbw[KݿuAY;V^>gDE(h+DB;NY۵xv0s:\>xݾLb+n`Dsx7o-g.=R2 h\)9^=P zx:ŌFJP_~Eu+J>ȥ;pe< Gzp`_MZI׬ V,}W?AQb6WlTe ԕQ,CI\11~x7J>^ު_ޯVG~r*d[u%7i8Hrt#Ie{ J2zvsmo>xw̝]f:] }?wZ^}QeItUk_:~[=CC VBgs7aaǒ#o dv0{)"^=3DD'.! ׆QCxS!0XvD".TCVzYͩuZ}ʢ#*ɔKEv X*Ș(ŴPGd~Ȉˆ?s,4⮨ꭷ ;2Lَw-h_.+c˯^Ɇ?5[<.]eiA8]GYϡdF J5cE N pp<2zUM[3E2Flvgy͸Y9ЩTZ]ǼO9Y+k>.`+EW5_tݺ:¢C u{t*3+ArGpOPX %ÄUO Ȥ˵#)ގc΁=1mmw=^- m QcMV`'UxoƌSsY:S;ŭ͜(|=~Ik'O>[߿blpL*✳cOm`f'ԸDs[1~Q4%9t}ĨUpLIkp3,y1t>|ůmZ8.JlNN7vyG?*K̸ڿJV#Ve`J_K\:v^c3QScFT*`d*;ıkxxh[m213I0缥*/?#\Vlhe=VP[ss37[UYxީoX*e]T9 2VS"N3,ݹta] "VYjkj7Un Q PU>$Kfy!mfv}gIV'h{<$ y6q)IL???Xӈ}'ZhohBa|ԩ.,~+ݕOJWɊePwjyۊE|U2Fy:hC2l,1p2VCh>Y4̷ΆǙ_Ȟ jM ̆: 1Ō*6܍~>F*[#@;UgdkNgL6PY 2fA"77Zfy\-!qp4*p( sY&mcAÂ-bTAhv.؜4WW'bfB: phrnpƴ(ەtvv"k䩷>t]:ui!ź4` T{w,i䲞xT߶}DWFV3XP}Y#ه=y-4e]>P6p22Ӛ!G]DAm5ZWM*]]o+(^!JTTDEO ~4. K}`%2m.> ~ZgH !k84jvQ (+H9k!0NEĩ!Ҝ}0 1RT"(j Fgg  WvuQWb4-M(diѢθՓ #s4sis4UZ[?JσMiTknAS^? &{C1hhn7Ӵ}2PT{7K+*gSL:k@[{MSj@vuL NGhad;XɗK],Ξ=^DDbZ?ߊYX=D+?.,7$f2T +Kv<݈ ZFVX#AE U7*C8JF|@R|3:}J'lKnV(@,|8^)cOnӠ*w#Kz4e.75Ȯ}:u2RI?r9BõM3]֜I.vT'F<~y3ڱcϙ޿Yv ^@Otr0@)_| pT__T=-Xӥji繈5jf_/؄nǽZZEX>;no Lz$U$3j^ZLKaa*\lk`8\H ĸ4m~AhAdx" - d*![E8߯wq-rZ*(p.G1ۺ*r .k/Y-k|iD}:ps욤կ׼;yc'͚3u*˧<<Xe2л-IjLєnjN }T+I kEZg&^GaMvh]v9cNn2Q-SM~z^q@-CD?J Ox[ϵ>Ov ?ίW۷}Ĝ3f^Łji qE x`݃= ]KsPO=(Ks,RBWewO*pX\[=۫Gj=mzlm$~rg+mbwy.|Ck N_Q~yη97|衃o(wbObxlBwkLҶqr髷]R;ѨY_3:>͊>1$%s'sYh!bbIiIM:$%JK O63ϯz jǠSt?-c7r{A]NWۑAZmJ\;[NK3"c?4u#V񿤃Cn93uVP8i>yS|I Z6W>אc,5جnׇsvayϜg+>:n`\g;}p+^L伥rvdQw+k˲"=WԧW~o 75%)6U+)6d{Fky-;ym*^kYyy,t9∁wR~Wz^T<%xFon{e\;)~@8l+ sY\u2w50E*s2P;MJhmW%k;j;5]յK/hUkƲ#U)޴t`.XRʼnkQ (/ vjVW9;,_?kwғ E'] O|dCRWU*Juzz+ŗcoz(tȢa.|8_^ɓ3}Fvۖ{SVݨY9p%yzQtjJ^yRX1[Ǜ#͢lwKEn3iM6OHfH-qH5SܝR"FrsrRMHZѕ'[U1[A̽$$6؋znWUi /X}alZxT jmtS;TatiЩK,dq!R~]n NPø#ꆏhdž̓r38{jȢ"x>>_cSV-U*Vn^)Ͳ7EMNG4 :,9-9,'C{Vwmvk:>O{>c!JID8 h@># 54 R as^_cR81,dґ Y4c^Goh#0thY<?&PcyXnCH~tpcJFD v?4lU4H;߯FWeq y]ߘ/m RJX(/tHΏr| V禀ϳ:ɳ ^/:Lr'G |MLv'aa:D!b#n״6AVw.QBnL&I㓣:ⷚc > {@5e{S$'㓙LΟgُmRZz>eNN{̙6 O{tu,'@:s t;,+S;2P_M28윙r df">4ZS@wH>SX΄5x2 ޥTCh(kFqcDSH;/ɐ0ߴN0Nb޴LiU&yFwuLƸvr"E\\9sLx0g|4kWc7?KvimV*^dV [pCFct`P9Z|D]ZbE\ F;6lg '@z@%8mfbS$e7Lb[R\I|9 g_2/期B*i]O3+?͌<~"}&#_P&+?6,7o+$4\h{ ǖPJ!eWߞ+4W 0ϪW/:lh#̅mȼw\5WUs\5WUs\5WUs\5WUs\5WUs\5Wc$o6M>K,nu\Ic`^VǍ,o$7Jٓ:nF:,ŝ`ܭYu\bIˬĐJB鸑n$6#ļ;:nFOՆș+2ʲNxmDIDp7zF-+-T'5ԫ-- [-m-m-!uhS:qVC\ubu-qwsZ~Nmj66N-mj B-ۑYjb J(r"~}բm-s[f@#'jNSTvskbm66gį3#923hp>LwaJ1YZ/(Ǥǀ8!_ҧ"reln1˒- xlgݠxd(^^`*}))P0R+QC>V|2&X>Ki>GB+w_|B E>L62nfd׌1|q5o6bll4fv#c&c99iqиwmWZ&޷&3nMVY{c Z$k:࣬kֱIZ'X'z=O ڪdg{Ң&u9ڶP?5ն77N2c[e+8^f1v}>6^+xI6^Ǜ4ȇõܔ*MSH|Wmˇ] XXnlD^ : ӀQq<3ʱZ/w& xW,J,BCaS\й_hVO S-Ї)eZܒ TDɡ-C p*J#ĻW8b E}J6!/ $0Ǻ> 63 VXLpOhsOnOu|7o.-o(1' 87Xo7CąDz䰣6@{8dK 6#MIJ$Bkɩ(pQ?jr }2^/uPѕoqUhdxWBGZF'L 3k ~>ҿޭ d=ORe+C[uIL5[C?1=wKWt] bt}绡 {K~ 8b>d9dt3db$$dcL!H$qy6i8,Aq%&? ?'%)a[xY3[ GK%G?l,_VTYT~=ćޕL;J}ЫЫo_^ JC/ = , 8 ֿpGɎpp71j=n .uH6:. %zb:܏iL D]bNxV)'S:MN/ 6 gi\ݲ5BH'bϖh. / ダqС:m(/jMx ƋťO<- -]_I+!DZgL# \V>0|t|LӝNO& m]:~n_Jb t!|i-33\Ɏ{KKpKOo.gL|9'$>a \[֘>g+IX4~V4~1˘ۍ9|qq:8or߈uYV>cH)]Exq~@jv@I s Mz掽p0cӏyK||ҏy>.~: pw#/ Ɯn@` 2J 6ΚZʖUXC=Ͷl/;ȤgB/; `BG0)~aJ }ZhA؇ÅB/ςo;܃0wO_ 31x( ع `W_ q^>l: );- 6NE')>3`o5wdcdcXr?Xw}B^TȈ>?7K ? TWCfȈ Q!;*Ju2BnTȍ 9Q!/*dY9X3+uD!X6֧`c-; v)WpP >|`cP6`KL o\Y<;<< > tV3F(#Fz#T4;zdRd'GrkuG#A^’8z7K*Vw*Vu*Vw*Vv*VvAx+nXdOC+I (CdۍL!y3XV'3~أ2Wi5Ji_FZɦ7YWttLK71[54eNNLʢ}\m#9Ğ j_+QHX5ySuV|ywmߗӿ__߀6lsʯN%rJgk= ݍ00Az #&bEElxB\k]K{f4控WOIi3H|Oಀ 0qu\2ENcNwDŽ ,-0=hQ"oc O1YYUdi5|2mZeZ1o"ӗ$`3aI/fkKfe_\=w\>O~,JFBiJZh#-L~n)HaȲ scs].G\ļVg/l[`.W<aOPi] #THIfA 頕7q@(s|`tb^7]4ng%r8HMM^|N5!erb$IL!ԏS͌T^eS i\H+R)>_˅gPjAh~k?=&۩qzueM /T.Z|D%Oq ;#V|"m.ٺh\ߧOwkm//jW#lz6Zwt{h{Vȶ]]'fmŬy樰=z_5Lt.+5t˶IP^s>dO#Tsuƽ,)]qX]Q> 98::t7CS_`~$7#I&h2?Ƌ_HL nf& Ci* Bh7y TIaʄ.3m h'1>#=,mZu-)dIhϘIz7KoJ1>%͒wwX.KHG]:.GĘZU|n-P_iE u_I}e?+,{WX:8coe7,tip,r_7֍f h 4&y :>;0h'hWՍvDEho<\8!!CdCa6|nXn+G~K'$uqMzD[H-Vx[7ʙ0ݞ)'KdWR 4SnLOI.%m=8Oi4LRc_i_XwyIG2-`ziYt lnVm卍=/SI'-i1AVmΙ:[ϟL4_+fT<]=פZC:9Ȟk(%l׈_&z!F Qe,SEZzط))TęC*(T[ ?)p"żU/Bț`SRqg*lJ_PV lSa9ٌlG^+ledFnʭFg S GN)UPGr{SE(*UQY¦{O_@6ՐJ#J#("4b=N1W^ۏ]乒rh{{oV^d8S`o1gZ i|X,lg+]P*8oV&{mSݖIOg7WʭTW ?Dmrd k0 7n }g`xQBU\\ؗ=G}bFؒCyKd}SDCJym?BbJ[CPQ:ߣA8JwS+)=TJ1YŤ:,"f+l)HL$ #JQ+R9SčM3dgD̳#u:K=x,U^M©Ŕ~9sV![Nj^ 'yT#DouŲ& "(9Ht@$+"DAL Q@PD  GQ 19'YxzwϺܳjwOwU_Q5(0`ֈ^o 5'h- m#։BU+e#8V#< ~m/ǍlЏq;v`A7 )i෍un{yȹmHYƕ🂭⭰V}F'ۢՏ-Kt%}NRAGDlT&T~|7,ll+Í;ʼBb-~8|~lԽc+P.O + N_+1 ςk= " jOk!w ib;kVqXCD>@&񅄵Rf{C~Pv1rk-.o =':к-_?%!L&冁Ȭ"wufArQ ftfvFhyBAh\aV5'}G|;(UsP]ۘj5Cт: HmWMyM-"jUz [K! o`7 bs ]aN_ǜB (HN3[#4&XJ) HLC!\KuO l)cQT!ё(?,26[G&E`7h;h!'bBC"Y7ޅ.Bw[Ɋ~'ۏ%&odcG,rc[y|hn[UϬLn\ɝo6a٧쑶rrg?niK>s<'gHBFBVBN[̫@S3(*H"_<%"? ϵ DZ-*nH"o;(J||j ;z$pW( J)C~U>??*@2 Q]lK` $ObJ¨s\j,n{4> ?b>)3 qlD?J6&6ǖ8 g\gyx.Kp1^+Zo[6Ļ^|'i|_M|?OsoDޢĔ&fK G3B;AFq$HC$H&2L#I:$3I#R@d)YAjl%Uԑ}d?9Hc9G.!&gpd\Nt9}΀3zr\oΌYqv\?΁Í炸BQ5Oh4&)4flKgyt]BJZA t Nwt/=@Qg%VlhbMv6t.blFOܓ"Sl6f}q_vN3q&3L$spy8Q< b Y<Grx1;p.Bx9^:R\* )5x Rzo2ތ7x+ފTwwޅw#5G0fZ|G>9|i"WUpw~  ?C~p3nF5~zD^D+EĄ^DFbbN̑ ȜXKԇXkdA=KȒ "q%Ț7dCXǖ_dGFQȞԏԟVҁD4DhHbY9ēxDHDHr&$)MLRI*r%iBfh( h"YȍdlNrI. $yd6"sYKMyh8YD!,Ad%YH@#Z"[4l'Dcn644 rB^C4 rE !WJn>RMnprG1y"sM$؈/#P4D>|C/qxND8N%p?(9UΜA F'X@i*A\eh%DjZK?J@dB0 & #U$4}:$:tHtHtH t 2PW!!UСnCA@{A{4@{4AW@WAWt@WtAW@WAWz]1M^@|o ^ ěz`X [V@5Pnv@=P(;rG| Pʝr|0P |à'yyÁ< y#Q@h o 6hmぶ @[m@[ m@[ Md9JX޸~x)^jW\(> 2o{_+D[pClI2d8 ~d OHHBrڕd&d+s#9MΓKI)yIސ i-'9N3'7;Gi(1tL4Ρbet5]G7ҭ:e58W4;MN ZumO>}g}F@13L^@_oO }@_ho-%0h Z6v@=H$:DG q $D q0 $ÀD7ho݁Gxf@ l6͑NBGcб@?:NB@ 4 BCP 4  B#H t"F1@h,xZpPڄvtn F,dl$fX5>2?32;dVDBbE1ۛa/"|  "dA!"B6wx:/K&wx?<<6~cs!lo[$b*FL)"IFx}BPT5h:)\Kwk>?K$ <'l\<'<żetxg;sa+ KHH=\Gwrf -<ʣ,<feJG޵zwknvx:I yV;گR  ¼li%[>+w읎Xw>=[.\rV 7!iIM;V pp7RjV+2?n[QŬf^X p7Wŏ%X ׳tߨR`1!MwCaTd 9kXOx2Ԉ>l-7A>9Z?QJނ% H)_ ,v\G“];}txx\*zl~\jkXwYqkGY<{"K fT,őrX؍ q 'ݓYVBG-6)EB#C ß' FLCQOS0یtg:viÉFa˳D ,r,~4> S-xb#QE +' ll:^/e!Vk54k뱢ʟ%i9NNKL**kc%63ߘb3>fe t~>,pb,hƣa)O+OR䶺BwŊQL})7JreUJ ҽn`%GX~d̎Q=羅[KIتҸDP\iU7LAޯu¤%מټnrfڇ[2ZJ[=$W눫UZ)9Uՙ5 v4bq g#VzP>䪄7u1m(xTZޕoVғmjy5rɎǂ]n7E/x㆛$ɬ_|ĺOȆogu4h zZ ]0[Sꏾj_vX'sY]?=PzGߴ̤Ջ_TyqW}{ӱ/C*.Jrڥ7ZO_r/ێ }'vx?D+EuW {᢯)k+-\|9SqvkS^;j/=CS.1`[L̙ž?`*(( ) G); ##"cÓfr|Аؐ;&vLWݶc~^˿ߪBU9TZl2Y+:Oj>܆[.<~eHtoNPךMy9G/AϨ:Ygfp^9] <PwG>ܛ"f]/սJOZ8%dYl7jT(>irYe%v^>*ün؜w̯YW~,iz-h9Ol`ʳCs跆[>EQȋHF,I ;A1 r"eRd?vk<Z=(;D ܟqˌ=ޜT1 xrUnSTnDH{+t:r"OひzWB/+VKTe /_l4Mol[uzr)Rja~}Tgcgy^ђ 'XϿ-!{|\ĩ Ǩʺy'`o5ΝM-n]N4?]AV²̉>6r[V%S1aNIͪ5'7^ڹO$kg;F폿vƤ2 jט@ zH?sDTc͔ܢo_^pĬ̙+& U]o>z#Iز_F.:xb{t,#+kN n)sh$egA#>n.7ȳjՈ zj_Ȝ'=$=;m{Sdݥ GzRuuU&ktكc;j2N*yRӘ{dߎօG 15L}DAaqKW5-W;Eg'ǔlB%{׎y7y^i=ƝR 4\$}x[~3ҹB|gkbsn_h˹ OO=Y"tC]W"Vk4Evbr}"m{N ɧnmybo'Vz$=d{DzXk0%%&)q2:\}/112vG\SOܵVjQV{z+S;G)zk w%|wd0>"{^qB~/54/!DuǠS:2аWђvK5=_zAjx|UM)&TYxa&yry޻ewI6},]!+D'ɒ\4`M)ͳ:̯]{c|Q|?_(Y-9~ 5[(S2)eӦ>rugQAO_Rlcf)6[XXcodLhbR`Lk_U׭rk/v)x?6E>W-2ܹ0䶦WΥO͓9ZyqKd|;ksvzotQ3' {}e3fJwZoX)1ՆdwꋪNT nHyQn$1\+jH%FǦ~ҕ&{pħ_Y7YYRҸ-R @m`{Th #{OB#y_&MfQ}Eqf{d o[ԈucX;L}/ƿLi*ީW^~#WO7X*${mL^jx~3sOj9E4UsiNv-]ux35Jz&;yo&^SvrnAqF&g|_6r@~U~J]R俠mhPl⪔9^= fFkR$Zc7W 6KMp?iq䨝-OHYVU}~[tFr+wmṋݩ?(ٵ]:}9nFi_zJ?=ҏHI-ֿR+rӷNʚhʏQZ NHջݬ6Z-gZ3IѰjcs |?Ԗ ]jvѕeCSv=4:{A gݤStu2g.T_GopĖ?,nyvF[E/ԮlMu7qeEQu܋z/ 3xMa+LjN%f\xQ'2 ~!'8׼?M_}9&`W}1뼕8l5cgws%wx˲= 0w;GNJܕ#*;vUYBMqg3ʰ$xF\\7lkY'w@KcZ^;ii)V܆wZ`A t)&xd|DtO!FqGy%7.}[%ze?y~A֪ C M.1pwe;QͬķR4Lv~P )gZ'5[SU.טN-ssZlV\R uʹ{*$ejx{:?˾͂{I}0I>pȨӃ#TuGNpy3Ck?Q+ endstream endobj 10869 0 obj [ 0[ 600] 3[ 600] 5[ 600 600] 8[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] 36[ 600 600 600 600 600 600 600 600 600] 46[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] 66[ 600] 68[ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600] 94[ 600] 96[ 600] 182[ 600] ] endobj 10870 0 obj [ 600 0 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600] endobj 10871 0 obj [ 220 0 0 0 0 0 0 0 408 408 0 592 0 337 232 505 592 592 592 0 0 592 592 592 0 0 0 0 592 0 592 0 0 652 651 573 705 578 551 646 0 350 0 0 551 846 679 695 614 0 662 513 639 676 634 961 0 604 0 0 0 0 0 0 0 535 591 469 597 531 326 520 597 314 0 592 308 890 604 569 597 591 461 459 365 597 531 798 525 531 479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 851] endobj 10872 0 obj <> stream x{ xTյ;̙$LLdB&!BrLBBx4CxLȀAy bGo V=Xph_o[Kڪ^쵖 L̄$E/;YkY{3 "R@{xV`pNڦPlx,@ަ3>f}2`g]P^5}Ƭ50:[I?yP;">pmƬ@ys?? @UXLxS?5>O_v^ U+߅k[|.M#'}zb,ԏ}H~Ow>=}ݸ0] E7,G=^Yv}o;N=Uz֮0Jis~]^qjھE+^SNVo|e+ u4 r}[{^yMjDq4ߩ;/4ߣzz[~ޙxyQP',&q(4Rb)`EP,H=mpx Q /@'=M9Vg~?ʪsU( ?GXQe1\#oUVPATS^p;,UhS't*s \SfSs0VGE )Ǡ[2{^QqeBi\hUpܟd~^8Y NEp Bj>X+cb!L2Q?s=E^i_6 !+ce=qG_E Da0#+(+w}X+ce2VX+ce2VX0ɿ@Kk ^|¨?=&zvIlv8 Snk$\ !SueD7LF aXߢ(5ئm>L$RvX49q``;/=[hp5ii$06[cr]=y҄Nٿ{?uvP?8Re,nyiei)?kn5Wiiq>҂8VXn{bĖO8(t:Şp$IJvCіh8q']%wTjdsXIq[GWS)s/1]?r8?z[8@#gBFm +Khg!cdyD}nWh@ϑ h.Լ;"q>R+kNSkh3DhNqO5'}}{[:F''LCN.݅>+ۯWfN5l۴dVRXhI1pfԟva!>Hgv%yX|Ā-R-ٴesehxT@9fnFdˡ7&DUK͍]I'Kk:?:R`5A똳.sF uaD}Mq,D$bt*w^C7 D6aCB9|dT4LC nvq&MqB#mJ }3ݑZE,BJ\VήIkRVFI1ʲ~@Cr|:G< [Ln ]R?5yy9eTskFzz0:,3dǬ9]G9~Gg aau1 R"}qF#w6˭ ?! 4)#Lƥh  (YEE%cH@4B e 1Ba¨%($ !Jo]Ej!SW I"Ԅ0^ Fyݒ;ъ`H,mfX4CbVI3h3`fy =pP/k Wα9"EtѮ%t|ETĜJ](0 qJ:vŽ@(SEBR{l(mBcTΙ,S][$Ιle$m)=r='_u$ؼ=4ܑo(P:JqtGCX>H7-Ϥf)ڃ'1> )Buj0ΥItT5<]Nh; ֹbO.jRhԍS3!4&c%h㙂bTZ{vU*JO\Ohd *٩=U*TŘRTEhSMJUB|_g2@gdOm!_dE c2~FƇewxdSƷx,-2,M2Fϔq[eBq`Ra6!A1Bf ,@aCx! )kɯOٯ ц/ٜ`}M[h]ns^| Y7XYhD,E}VfeotCPl$dn~Vq/ $we܇Μm^0Pb\o Т j[1~n_X>&9;)OTOES)Nm*MĿ_ߚcoGغMYeuZ+ !hM/jYUeV6`R‹ݾ|}APD Q_i99R y#\z>`Z]ZJIgt L LL0X{#]0ҠM460&h#lv {G{?J$O4$'áʰr ’;IOub!Ѐp?s-TuEuu:O]^_s9u:CNUA]{H6h IfBRv;rm:LmJ<;%< ;5ɤ0R[tۗ#~i月TN+D0a.)9tYuccItiItolu\STTJ5IM=R}BxĄd $֠VRhMrH R;B&lJYB~|ލchժU E*D]r b$!`C0! :-ADPbc>;{;F짱Wc?;{1BXcݱ]حm[b7Ƕ66cc3cXK/}%%7R@98' {*Q<;5uxG>6N<W& ? n }vD/WBxRQ`')CGu$Ca5p>?)[[`s@3'Le6:=L̇0µނw- Z<p} ܸoipu2r1ճanDlAHZ ~hZR-]"1\,#)y*]pߊYE+C6j|ѭN(b( (Րyù}5/}jSf{;Ý!gƕʊz yzF-T,w1V >Yn*mTlEiTϗy2ѺͽO]1ﳪM Ulυj[[TmOfWiNW?]_Z3+wp9<\paV8K w\t+9֭56w/^5%Dk`Vka-8~#TX0^G~ jʈ#Pn]Anc9ܿyqU*nuW(Ѩ] 2Y6?>ۭ7g{Kȃ$Lߨ(s({ZPVP )NV\}|m(*-ʝZs&HGQoaQ5hR:5l^ئ-[Vf+d D`jl`VCK (Okj , V2軲>w٨I (#XQW6;%+岰F-(?2>ƝG\[UJY1y~S}sl&kC-v1?,>:! 2u4׽k)R=ױՋ[iIEhsO'd*+"La,d{l@bDdqf u@ERoRMQ|k35g@%9`UШR y v8:Wέ\x'qW^qdF?rE{LzFCS֡eC KZ;-ٛ-f;YC ajc~~ ߚ5ϝrDY,wV MnImjLt܋ w;0+gKeKRjL]^QdH!t~mXRl}S( NiBaJE4ډ.~[wOR#$mNIP./=ShY򳮽"&p;;VjuVj9*F{0|^/8DK*I)(i\;>xs%+F+CC12a K}YVAwʕy奛WVYPH(y 'TS!=ѳK@ewE?2*V+xAгkXK_#QYPَZū°y)DʄzjT&)OڻkºHWΚgܓq{?ͿTtv量o[7uo vWK+Ma!dG 'rƃa.f>Woi `L22*]!oSdWP]|) W e=m*B:1iyǐjx8]x8rYيpMiάJܼ-rܐs`DMAb4ч-w !BZl!%$ M>*V3{k.癵*֚?eM:}QEVߦU)aBۅ'NBtS΄0`[z/7O+u2gj ]![2%[_NJ0-ݗ/sy<~XlД5yrgzPdoJ3kd S=*iC/)$}D8Pfx}_3䏧22 +>нKYB kb9?muJ>wOI.Kzg>zr5ĬvνZh6Cg l?"J9yRe0*b=& s#~Ro;M[֘Ӱ/s\}4;3`w'7g{u$cgDu"ؓ!?gyk-jK[ׂUjԚa)΅[ɨC޳#/lq9l, X&W/AK.L kN}ؚW5> UmȄɧHKK6T0y:bLrfluT7b=ї{>`Xώc<0ęURo ~,g寣kR?KR|!)#³e!vm|rA5&LZuΘkY_ђߴzᔞY5MӅʪZ}e})]w^m w+vօ{x蠮+Z_g:ϲ?E?o&D[byB vlόfbiЌK(荫0o\JJX[bt8 ݛ9pZ;D lx4 .-\| %_xK1l)/e++h^b'S?!ϗoUה.#_iX3d _n{̼iuA4sڶ ߉g+.Q];{f'{6RA#:_@Ҿ}&@#c1Kmh`0 QWײ$6ͺ\\#DdYYy~ctN7e롞8CʢgRfx1)?U#"s=a¥R9XbN!.ҡ]nzVf{Ye3nWq^:gSI3UZ;kQ[`л\VgY wܘw5 g2LNi֒`Od}` V|ƟϘŠtqEFєqPHm~л3wCr9gȁY]X|` z!͙KQ(P?,vwv&c9^rS(EˎGꢪMGLL]Pѳhᡬr}USȠ|%s%ʱgSm8ʹB>QLkOcV4kdeuXn |0 'A6.XKaVh-ަnXzI?mcadf3o߂{HLזx3WY&<4ʎ'G曆{j$&Piig殿i~`- KNA|}Ҏ[- +ZmE|dS9C-5C"o(OQz(E=t+Cjbg*WTZK+`='8u6[Hܚ5,WD>kRos4Hx&4+JJ/n=T'@ts?y}Ǘ[l&ّ=Wu_UhhZ[!:gD7~/P:;^ڍ]pCR..ms58P(} 'q:yOzGr4ᗬcd˶dHZm{<|0tPWm ^wn[>ի漨)q绩(\9._p* yHR TZ]gY>1æ3 nRG'Ԯ wC+^`/;WwP?B4˟7HO:"[i*ϮZo}o][Բ9Ảʆ9)B"aE'z3:{Vyrˤ"_퍫%K.Λg22rfU4S^v3+HΝ8sJs,jMY@'3/{_Vq=mdK,Ye[ޓxNHH8d@ Ql-#qƱ48q.4J \RARZ-(-[K Mw%C^|;|9.ZhW2^Qc\ 2 g3$Q&q(D$@/DTIL4YSžDTeNe`i2݊C9i>9ry{믻1ڊ+xik'͉ Ą|/7L-HNr ֛ S:+ߪӝ(nAf6'O:Q7 k۽%5+*fTT1u)Cresi39%i9C0UM"Hċ?OϖFt$e뎲2~M9}JNAQWzi^R']a,ci9yזZY~*o*еpI(EGRW\Znoz568-NXj0hXwr1G4>|to쨦$h9-#Bf5v^]XU uW啼XX{իO]mJwMX]_\Dݒ,]IwmVmmֺ5l~}Ȍr3Bi҅ܤGrO҂s֪RU#ʫN?:2Є_\R F35|wZcAy4sFq3Vˤ^k(^^0,\7i,_UutP|WGe֙WU7ve#0b$LxC$q1P}≠arK ܠErXш ommG^abVpf>ByѹFtz籩%wWajH^"U*z]"hțc1eJ͞)r\.o.1˱ Q1I665g S~'* EI3flM֬aփr\~%jr)-[]3mv??-F{ ?sS5ξBZ"oI,e>')dO(Ԧ 3$I! Tty'MJt^vR!v{qש1rl >_5cIT՟I^|ly֔٧Z5)S*Qz>99SM>8ik+_ 7bo~+ɼHg{,wAJzn=d5rlK%$ E;MT-JibVo}S*7P.lTkW-W/Ybcoє'/R;fn+܋y ?I/MІl'V_IL+?U[N|V]#\>8p]!3[edjƖ%K,4u'7GgZw9y+e{(X:ft{],I7<];`( hӕ7 hGF)ƚyl6쬐"Ә;` Mjd'~bfnŮĚ^;҆K3V _\pRqnѭB{ Q5j>bSS!%U4T:MZ#]4zT\L%o&*J(4c)+QS^:xGZZE33/0ȝ%67)?bitpk)5ڹ\SV]ynK5s~#F[-鬙:řMJҝK21M -*HE'3(Ew!wTOx=Z1o֪q͖o~=#3pG ߚYP/^Kh'g9 &IBKFnn٤b QhUmdl3l#)M٥hN> .k|^W?F-)UC{:;\֑\W8{i?9ҾWZ(ϛҨQ Vh5zT?M51sjI/uIL$6[POg®Fr5x_ʧ#' 4 ^ȩ(/L;0BUmg)T,&]~CWF?W_+TpԌfF2ԑ(/?O/E e_Zo Ľi~DS t9hkۿjUȫe.QDk0bW/2aJCUgґ''ѕ#3A̐xbyR.~Yz\ُG|7Tr/S0doBJZޡ )j/w*w{f}qbg;99Y]2uytiυ++xݕ_l];7(-ڠKqtx, e4L}KYĴ:`>PyŏkDOE]*B(U+7?RQ8z'$AeR/c\N5e}ŭWOREg͚ &<]Ǿ὾~ժzi*/7{$ZUފu& o܂•u +xM*GD][tӦ-2OOgOw?5wqɯ~kmBQ/TWUʘ&પ|:*6(F2I9cڛfC?^D^Ҿ||pG? Y3~vQFٕFy$Wv'ۘSte͌ˋהwFz.}[w>*}ߢy[Ws +Eija~v(|k~me lyʶK\;({Rn7bYd3riwxӰKgALWU¨@ ٛ(ߋ*f/]&2FHؤ9/={gp}ezvs]lQFHyI [N͝@|ar~:C"Ѱ0VUg6&iMlhkVU-y#_u!+аxeev>>,"r&n}s۟P˼p)wZoxm{z <꒾xf-/[E7n{gjQڲ޵v}+K×/j ld8(5H <{!gkI_b85;*Sn% 'r̬ $IB7N9d2k&1دu:\@ktzjט쪯߳xJyubZpJ?]ϩ79vQ@J(ܴɯ~~gm-=Nd מܞvجmN z'mz$׊_;<'Ck߼;M}v`ɝv꜒WsLTbA{Zs{lޢbU޴bjb˝x_2#\.6sjzlU}[bTIaaddMֈ(Ռ ^c,dvfkf"p +IBB-%Zg0=^vV{Qt^IuqIW[?y{)%r:TUfZLb *I#| JZ~%֍ciR[]C6g/Do}V 20 +$FxRI׭xԩTNl`":{VR Rr^>O0F-b}w{0RA֩U/crIi֨ ?TUW^]CkU?hk>MLG8R03*.,?g0y1\ +wzf#YeY?ʶo BS.b.b.b.b. /ӟdS c:գL4_#coc뀎@g, tݱV`w}`a/aa#^!CGcy\8%SIձLTȯF@Q;@ 4'cw>| Gcoע;aAڟbZt?zt>Ptp'ա^} @j%h50IB#5q`a/.Ԙv i?(~⃱GG= VԠv+h!܁p62pg7^>ApSAC8qG)u;4G}jG]wpN^>BnvvtHs50h!Ct03V!%[xkGOc?PR#hQ:1:Ôr32X*6Hs"˥A)'h!ȹ 3BKж\9ׁ (O?vBg?D郱.Ʀs<<~<Ϝv #=jbOB;z=qfgV`a/.س zP},!~aゆuACÄ[4 <а ZF74M~wnhr죔~~wCC>qn o%c/nX>)>@#(f}Ԋ}4c#'Iir49@~RzqG}y1Gy)O? !%M}H}t:B\!n=4#p~>z:@815=@磐k`7l(d'v2#OGOcoy <`d>!% A SKaj0tZ:L-SKaj0t:|G8ޏXƞc'235+,k,0Saf\dq(NRX+}tRKZtxԇ8ֺ]J\}J\I%eulaOb /+qVVJ&uu:jtk,ӼB|W#ޮ5oSZvGObyK;uXqj7x]B}_j˃/̳y2r\Y;Y;ZXqkBv| ܁! -x#6RY^Ϯb2lhԓ| D'k H.8qglRk9<x"|J]EB"OX[)6 &6&jH$_8G#IR3BFr]|.oܖA#r[E-"Z*é5*9މOv3Ɵs"gP 1fr. ehP('/ن< [oEqMu~^Gv݃+Y ĖWͣ W"'?Z |>bAn~F*å+}ܔෝYY|l'2Ǽ?lbkTF\vt/6RY05\mobzx3k+fE"k#w{2눇fJQ2@Z+2p%BdcrOmV!}% J%ZHGj^| IT\@zGzAs2o2#:lR@{äoXPvT2|mc+Rf36n.F*B#-Qԡp3xbCygqPYҹ]coWe̯3's/<7WՊ34f }lDىG_'| K[WFto6obSr/|0^OĬ'Xq5WhW֍o[J`W7 RL+Mog`ܧ&:\vbgi! "yPG0eZ[=+-g?m7m |_سo4Áv)K !_{'<`O;B"pՄ2 m7#c B7r|v_+=AHZ|PkdhB4:hfVO8 7@@ #(<*onГ$l{y"->ᅂ|yl ԉmp~F x#$A |a5D!E΍~ * Pq3b\[mvta 5|\yGĻ*uNlu;_WE|yܕsG@4;#mi[WBAϕH]n D"3˻5Q.ul-o4aJy5NtVnP OmWqVRxUip*0Nns!4*rw5@vEh4j;k _cŇ|L5x|wWB&s%c>|t>OWc_,bjvP\~ ]|};6X8-3QxSL 4(-kO Iۥ|OuX>__=Q>2>>>x|H7{0}UEchn1> >σW{,;.G:cX>ւ6| wc"u,)cǍ 8|||>>`V!`vtahas[15Wc [W |?l@!) JTˎH ِt-;*ȎI=lXhTjKʓB*V-" RCڢU'ݫSzX ӱ|XG6>-%83 z*Lf*4q7x|48!gfSwlڻW}]J;XtKǻ;2# 6dGU16bUӪ gT oǢA[TI3)RD}ԥ>(mQ?(mU?'ݫ~WzXd_TyXGIɂ[٦MMMguj|??ZzrqÖ ώ=6gO9:ө@?Q6$1: o*\{m;)Zմ=^}hmNt-O?ǐ$vf)觖}iӦ9:lh6y7!̸m* ȟ;fi4Lrl$ Ko.2ρ3 \5j%knVfE]ܴQD6()Q\t5*3k.o_QKn;l.٨)E֎X,~׏s|!RN7tHWtprhSU0*ڝ6R"IUP FcFA!tG*E6QRYYnZ#B64֧UMu!9~43Um2H3u]_{p2D㲳oK.&ۿ+YK f &%hI6"8,`%%ffczlӞFnIn:\5l05*޼U+K C.;TIv`'ztW|T̮LMOv0ۣ8fI©c),Ei/jED)݅8g?GMuJNLRl-ʕoMZ~ѫn[8ݡPq8800&7ĸ8bm:UB댘6VUnuʈ 8e 06Q3E/ukH>W8=_d }Dcb@$.+k7&9Oӱ{.DDԘT5ҎcL8iLѸ>c/TH@OzR*%ޘeIғT<6&{1B=eW#jL}Rۘ 3bLkbmkrIkr95;]fVaK50t!qRԞO*;P(uEELJ]u]WQz*)jUE3eU.pp*U61A z tŗK޲Xcz.UxU#fF ՌΠsxA+\+٩O٩+I1;:#Ja3GT]sH!mUǙү4s2֭R̙Vz$I s/Tr20K<#jc+7]꧘ej`bfpxgҒNp+\Y`l]u\su=š C5eG:AQƮU%.6qLϼ 1lE;k!W\ԕ!U4>+OHPȕ{|$i ң%>C½6ͥY:q6[ZVt˵;DdSy\~\~n\ɸBe\۩{>_GOS?IhR\rvƮ#{hr/YtӎEƮeQrX8O0=%Ѫ+<*[DfnEF53;nm)kc(Lt]!H81PGqsŴJq:l=qNߑ,R⽎;{ԓ%Ew}/V!T%G[$s#ͷzI55 jH%g83/agx^N:~sl"UԉP-y 5^%:: n=R[Q%=W=﹔J Oy/Ͽ^db{nڭ']+[ډRg#yYOǑq%Hm*-}0Rb=ΉN̙9]t[8/M]3y^6nds@p@pt03'tvx]c9|(1Ɲ[Լ!f1"$C{C׭yܖPX~C&r[v7Х 1Zev }uzK 5ojGniN)_EpW s9e/@P,  ;*zu};Dqd\_<?:M uf8jcd&cCto I193<H{BD |OyMzN`DTR:lo{K$-ٕ>(7 ޤt6:}_@]xB99}_99!%'o%%K?ޱQ+-9H *%'&?njdjdGk ŇWsc""clYfSKvkb!!"2RuU~[eV0vjbb0JnYWutEt7\bu?vt;M+~4L6²O,9z1)YDD5yyWn.S8LwUD=g'$F_6ߑsfU ?ٳ>+gV5s|NxY}Z>Yힻ;!A}zgTgߘ>'rLP=z6(=93V)zz_95OdƥoNƼnEpV\+6bhݚGKrZVUikZmUۭOȿ5j\zb:j Zoڄv:}+qvML?SO?KRǗ47g_4K__]?~OO-1__?ړֹ~B8&qomf Xxz~Bww;5Sa-7ԨR E% N'JUg,l#ac$ S3`kZ}Z0mK]im'ju 5}=  [baYc'A~l^ju}%vѪժeprESe;Se8kӂJJe 5P՘՜ՒYVyv PƂOrl qoVjfΘJ*ЂHȓ!wYjb#7viϞp vu*{pԆK^.vrU\pF{nܾqݜۖ1OmT0rҪ{~;iy&giӧM+.B .Ʌ ޕ=cŒ30s㴉fnPp0s]3=3w(UXs{g%4{=?9, Xq_}[4we  .89Xu+g/-_[|WW -}z…_J0н(aQꢴE/ ,ZhMؽ\g/.2;/Xx+a݋?[ܵ$aI֒-h%K[~I%%K*A'Ud3ļC|gӏ"v~\KYk|v*JX,*C^QyY+[|xӚ1]E%}jEäJƊ<\}F&:VG\2(_\I½㘼J<%dokP_{2H_aJ a<.?UG[eVM͕%僇W鳲` FfVzX<T|ã>~zϣ χl:҄m)j*2{KE< ] z8k8-WRw"#CZ=iik.z #Z/-}6֒~VQyeEWj3ZՑק"# dxsVL앬ru/I~>="`_)OQkJ@m7GjƇ gSypy#iUҶOkWF|=̕}?fgP~8) "- ΃!)3ǎu8& *џ(ӿv}ڗeūhWR#z4qBl24t:S s]H9[R4riZr!r*gDOeإRV$ hDCU@9w+%U*ҬwG+̵`E2լ<+Vl~qEWn#G>ѝ\%VzUp[ZggUѸس)ik&G|W[5ՏOPl{Z}e_W 'bZɳ/z|JOT#GUwQOL#eT32;FFֶFAk,v/Q~c9N^#9beX͎ u "GJk֟̄3Қ4Ԣz0a7H!Aj Rحd5~בNK܏3Z"}eD`6ZxYRRrXX=b0sy|8Yp6bȅK` pL0O=p']0zgwS^@1̆9PѾ0Ja>m]C9{$ (| @7 =`/9K%!Y?bȳn<!Ra `Y ( Zs&7 no>ɽB0 {f\XA+WJ9TS*)qi=DZނa34a_`|ayw_>]솏aB>>V~jxVY_s4ǗFW+羉Hج*aǟ:hb HHp|(h5ìVqUXDeL8i0 ~tr΀S^6VyǑp.?ȁ a1p)\p%jp\yp#L`"aL|(;q&`XP cAa,(0ƂXP cA;X,hT`A5XPxq*gbne©0NaCCgZ^˯}  G,EݪJ >6t@'/+Ֆ#Gkcaa3u0:Xg c5Xg Ycz6x J|X[m\ƈAXsyڙO,nXv6k} ۙc;slϷ1X~ca=ayP ~?eC)r3xT~9մQWV1x iq /yX/ Z/5^Uu=4o! ϰށ.4{>؍^ xW{^aWՀj{{*S~q:9;{A.zzU@{۹>;rxDȷ^ ͤ;5l;g%ɽ [;m- Eb%ت}.^NĬl 犗F/q/r| ނa34q w`+ eL,<}k}Hv!ͮHWZ(1%</mjׯH[x׹i7ۤluP>6v^3{(e,Ţ):Jx^Di^cv6L'iHG<Χ**(| ?vkGQv;FQèW;%Pr%d(a]{3d8Y͎)X+wD@}a{ge/,mգx62W#T8f[xO5R_ݦܩNRPo~~Zx3,a=/Q+W;x&l.4vG:*ׂf V[p×a;:d`8 Nt82`d©0YGm?p:dp&C6#\8.K \ݬJwsZ먞ƑM?C4·ԯSNz6qztѩG.Daa L;=Ξ[gϭg@^@1̆X=Zg~`v̲r9YZ_k97[Ap%<KCF]aoo(߰sU帊 ߨ.kOXa#ijox ^4D!VVW[6en|+wއpo;줌B |# B|mNAta@@}; _7Ѝ'h'H>fОg<x^W@[xi 'fjك5k橦vi;jq y8..",#.Q0e||vm!uXVrKV;OiXLݲ>օՉ;w[.VýSyۓIN)0LCs3lҍlO\ʦXY'V։ube @(..CK\r_A;] U=|kԠ뭏\/@ׯB= @?G;])՚^?{$J|u͚w3K*g7Z꾎Z8dwOsO[vrG6m > ,K2:~< ܀Onb_ |/6/jA ?6Ϯ`W0]`W`+0 va + :~\g`uv ݂n``u.~O em? ||Ǎ &fM\_`|a'er[8~# s|!K}㧌Psƫ vvH×.8 _7#N ֣~`'4=CЃ:=CЃ:=CЃ:=, P@9 `1pBTr3 *XNG.K%蒁.蒁.蒁.蒁.%?G$Ci:mKu`MhM2$=#=#=#=2"-"-"-"-2"-2"-"-2\k=G:zG:zG:zGQ5zTUGu葎葁葁#-[#Уj-Ѣ:HG 4@ 4@ 4@ȇC::C{@ 'o“7Cx&Oާ ӄi4}>Mx&, j¢&V`+YibV&fY 1+!fYhb&zDh] djn繴ԂjWmgf^5Oj'Pj;]$i)7ƾ9zG~EDoj5զ9nB2'Dl|lYKkXkVQeTjZFQeTjZFQeTjy<<ʻ.Krup=y0na:,t̅yte3اW^S8a8b52+J-Rˬ2+J-Rˬ2+J-Rˬnlap7 0zVF֟79 o[a ;[y~ym]}V]솏a?5Oo%gk-V伋tGʵZvRpZbj̿c N9ϓ N ґ 0Yp΂!΁p.0玟p:pZp\p%:n<+8&M0&Yv X=>R2ӂT+h m.ҪҊ~? q\jν5v7f]K״9Cv(  PϙXY׽}ݽ<3眙|ߟ}&\im3Z\e.SWzιƱk]k}ڛ}(r}Om腑LsTGQo92L GrvXp=džۢ'.K” 4D׆D۠[lס+mryWGáalwy1g1<^GJMwl}V<&\ )\[9Vb]f^.\6ͽ4:ѹ7&]o{7t+i=d #Ͽe{ s& 'x2"i<=vxpn Vi!'-8K8JIAr"-rbC8D#p7q7q'q龜龜N봼NiS:_봜Ni3:e9]6r,fjKapvW}FT;>}ÑjEdg5׾ܟ+kas~}7 3H8 9As"vaKl^26C«bھͱ''9Ꮏy {b cGHǏr°)vtr+Mڳ†9Yut;׹w:;v4.vgyu-8q.w ǯt*s?  *>_w]\.=p ~އsBO+_tp4%2^_ 7{ק{!|{o8ٰ>}m?>\X?onȼsy^[<# r5LCRWLSR6L!SiT2L!SiT2L!SiT4:+q{)` MBiS(m M)4e MBS志0L!h q wo.>ŇC\|q!.>Ňi.iNAg8q9'Cxwr!N<ĉ8'Ns!NC8͉nfnf);u۹n;Ms);uT \PuQj\j\m qZmj\ur6TuW+T]mZ7Wkj9Vj\mj\- \zZWKsnVնrN6\-zZ7Wj\ZZ/WjiZZrj\mj\- \6q4WjyzZ7WKs xמMmVj[u4W뮺Vr\-\pnZZV]-պˮYkwsrRK^k?vadE&,9K"f_v|9)vo0ݾwؾ6ᵇ۾9q{?Gٷhc𱎽E8޾lO=;޾Ŷ؞ۥ4|a>bQ3 =,ڕ7<ηm9~9O3%>{c-_+*۫͵⭑p}>~m{t,ov;9nm׭s߉[o{=^ѱ{=}6iE{/ye|žۯڦK{n7l{#GVQԘtP=TuoP(*OQ(joP2[u Z[*j[UOQ(EQߢ|UQE- W(*_UԢ(QT=EEDQ(E[UOQ(EQ(QT=EYE=6\>!cʦ+SySu@LWfyZMˌi6-KeiYædڔ̘ih0%Kd)10{Mӱ<MŴ1`*i6 3aLÒie`̘iSd viS0m fL44%S,Oa/meLtuL.qS/SzթWvæ]ڴ˘vʴk7rrr4K[nqS,c=`bX:SbK #VJ|yˆ[͒,Yn8b V`f\uY*Y::3VPI?oU VT.zy;$ zU۔s术;"ߦw^@vF7NoU3wy=Ξ@hgIwZV+r=buwjԪ3{DWÊuvbk߽{d;bUlMVq=bE;hn-Vu=b;pn-VyX>#=ʷT]VES@ޣ3|3ˊHSD?>&*ISI7SIKuR#I5-TS=BA#4R7j ڪG(iFw75uPSM{euPVePVe-=G:w;Pڂ.&KS]յS] Uu#I?pM.zevOt1YY۲윽(CvP*jQJ%>NB8@8J(WQ%S%R(%vRJlUx%Pb{UÔ8LPJJ<(qG)7Pb+%(qG)q;)q%R*J<(s8J;VJ\EJ\EJ\^S%R*J\N9JP0%W(WR(%V(WQr*7PJ;:PV[EyMQޑoV["Ph4SWuחLMx9Vl6PeSVesq1.,Vt~3w=>'zT$=V։ wEp y;p~0uQ}Bup;\'bl4 x$4D OcnY9</%xpW#a(2,q|+p&'q6 wX5)j<Y]"z ^ 7׼f붿EY MxtQYѓmک֥GW+ol//^h!zǫj}ھ^b{i]kj\kvhnp^sǷٖWΰ#k>^6ڿ 77}xY폑)^V;aV;(>[V\6\Ўb7tV|X;p'pևݸ~>{~Pg HSgUXOb|kY\Kь\q[*\kpm nD+ݿQCgs8\b=ro7qW,\\\\\[[Ej9Q!Z/ߋ.gj>S~+x5Vwj~a:yJQNx{ ۹.=aqm.xʁ+j<+=oĹyʱ|oeҊjԠF  hǍd{3:p+n󶝸=&ط>ϋ儿 ,,B퓎Ocgd x_/} x_/} x_/}+O@ @ @ @ @ zhzhS?S?S?S?|'; Nw|'; Nw|'; N؇0$A 011qpxމǻn8Ga!1xxqp2>ſ ?9,\aQ)J#E (IicRʘ/m%$d)=iJOғ,VJXI+b%Y$d,VJXI+b%Y$d,VJXI+b%Y$d,VJXI+b%Y$$WwʮKy 7J=*4ctrҩYLi< jl,UM5y+^TKUWz^5ʫyh5-TŅrwP5)Y<+ѳ|O+k<&]6m}˪\nzm%nM,ϒ,?yA^oێM7Cv _vb]8QIw<]^j6^C^C^x]?ut݉…TRB>`#l䃍|6F>`#l䃍|6F>`#l䃍|6F>(ˀe2z0'ˀ2 8(ʀ2 8(ʀ2 8(ʀ2 8(ʀ2 8(ʀ2 8ȃ tt_7W3`7d&ăxpn<78ɋ8ɋ8ɋ8ɋ8ɋ8ɋ8ɋ8o🡀'O)L)N4v ,pI8I'$uq:NR1Y$&~ G 98sq0jC0P aގwHp {^#qhXpy72k'(z[}g@9o@9?9ƿv!]9f#q'd`^%Vq_UZqosy8sunmםiٮu.ܪ3ꈵ:pJGܩ#e< K+p\ZMTh\Yx}}OA>j=ű%8||[}ѰW A^5ȫc bg=-='9IIzNs$='9IIzNs$='9IIzNs$='9IIzNsg FLo8 7H o ox4PMHi|ԄhpMQn5Ͳxrwqj&W9i:i/r\+=q Z`%Du $D4}q/31GKtɚ...&IpMH zJS&)AO 36AW JU6 8l@k 8lY8gcuq1:Y8gcuq1:&&$ф$DhBMH I4!&$ф$DhBMH I4!&$ф$DhBMH I4!&$ф$DhBMH I4!&$ф$DhBMH DhBM譄$_ DhBM资$D(@ 8PphBMDo=4+*Yq>152NJIQR dr~)g9(ߎ)!%;d쐒R\'%;d@)@)!%;d쐒RCJvHq쐒RCSޜ9Ρh飚>飚>飚>飚>4eӔy2OSiOgYG_2zF;- ly? geYmVffeYmVffeYmVffeYmVffeYmVffeYmVffeYmVffeYm6pso7n?4ݞs_3f}͘15ck^Fp>p.ħpWӸ|R4r\+q5kʕN7`Hyaj9j9z]ϴv=ӮgLi3nKQӢG^7S(dXR|߻Kj^pԚ>Go>dZW]59Ȓ9Ĝ"u>9sN>9sN>9sNFN*ꛡ_)HaE*HrS")H9E)RNrS")H9E)RNrS")H9E)RNrS")H9EU_N9ۧw3N s^)V'nSm깭KͮY]f^须=/^]@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@ 4@5n [p5n [p{6}M&C:]kƭտ#*kguܵq:+{ELaOav `7f,f ؃^^W8~+=lbeTrbUX-VunQ-*Eeݢ[TvKe^+? :h6|>xW\GG;| ?w?Ђ<$9q?Vg(`YyQ 9|4a CCv]сpOtn34g pO[Zyv,li wÔ;/pϼE̼p<. wͻ4Y}(,sd~z~5͆ՆW̋Xq8'xJT{J]ZV*?5o]ToSmH8yh ڡs0*f]ŬU)!gE&Ȥ*sU>wߓ#o+ s&jrfw.QT?sfg]"(ZE/ xux Qzic-PoR-7jS7X5*4V *((d !1f"Pv̜9y~9gfgM i65Ԧ|@u %-PF'hNP5LX#Yhv fS辪oo6q{NNa>+  {z{y>"aީc` i%hj HDU><z2u57;[SSBOBմ`-F >bcZx9h+$:[<xQül`88͹<#ٞbc21I; t'$BRhC mH )E"_CR]JKK6Қl01(uv.L%XI+ ybCiÛaPpEC{ږ;7"0;E 0T6!fkДoȇjJ35:P/h4i5kLCtoD 1~oޔ0 ("){Ѷ9"8:ᵔk۔ 5 Y/DJʱr= +)G Coy%2D Bd9/DΕȹ9W"YyV(A\N蝧fy7[,-;5 a>(%xI sDw({:L[&/ X`E2I( ^d;8Fse-m&PY-}ùw."ń#%\_8A4!ۥ`>b1XldDf⬢L\,?x XKr=Mvg8 aFkc%`;;SsZ}iv.@j ׌v6r|)X>FZA#HZbRjjS#BK6ql;R#<9˳le9Yvȱۗv(8sr,ʽIkι#Ѥ]A#?A`#x;؏+Vo2 Ĺs'ĻS(0CP3 u"m`=;g #`0a0Tƴm%дhZM6 -U $R݇z%ʑ\$7#F"aBBXHK)!:zl)FbK 0Ha>R?a}HiV, nâۈJVZFe]e]fn!s>3?[ MۨZ vFy h Fj!Tׁ  +ĭ#,n(<8ðmbNcmsɿ+kZ2ݯxi<-XOw.O8v ?r9)o)axTFRWH[j#%(q Z~ ػA8Z6#"&_:_-aOkeSM]^'TgH4{T_#\j}:Ee_޳%|5W,!8#UGWnSuy&SkԍXNk(NW@ש0 "OBaq(y>Joq"}Dozl7GĽg>6M:-J5zR/R Unĝ|cE|Eĭjc^aeXA12"^/ |ۘ[[1@'w 1|fxp5x *qgU| q7(ܽD7"?Qǰ%i`ğ&/Ygw%iVQ6` ]xS"!PaM Ik2-9`uCx( Y) 2x j| yn8?W-yQ0ev9%r(%jl3hBBD(f:_sbfpMTKhL!P꽇><"Jb=/=Ohp#qZ+W_3qSHb1T7A'P"8 N1/%ǀ3lp/PSj]j m5EQ ɽ f3%8|ko*K2 m,C)A%0ڸڷ72,uTQFD{W{UR4_EJĞ>g2fI+R| @:TPpOP#mhZ1_o>K]OF#(Y'p*`SL?$` kuz#pntsV?5b%tVcRvXQmtQpT-6a+h[\>h!nW+dCLׁ ^)(gΝ Ӆݙ6Y5g'^1_Ok§8p(vt(umf&#.cqцצqw'r& R2A)NAI@A굔+N^S؛ː`- Tk%h:%E;{wkgil r)`%|RzIWoWkė|e^^g\V^#rz_#QQɄEqP15 XH폄vFwI7wJf42aؔQ#9_.F)3=e<3 L5<3LM9p7/q2b  I0qOﺔdԥeϺtLIwfo1ϔ7kITFi(Ej,l.lI.tvQ8 Ga\8&΅sa\8΅0pQ8 FYضTPL[1ºm¶Q6 Fa(Lisa( ®k.52}v®Q5 Fa(Y0kVͅUjVªQX5 Fa( Fa(lMiɃGx0h Q4 H%B PB+hN\#V}褶 ݣLLlCVTiIרjj'cHOMZ}7ӭgߋ}#0Vfbz~UlcS(QN!BF92b`ÈO!#BFFF| 2)dS7v勞ildd#ۘgY2)Dȡ6Y,EK×Y Sl22dǖr[cq5Ʊ87=lSx[ٓdI(MƱot [cq0Ʊ8va;cql0 }&Dg.ecbLh 180ҼX6.]KzxDF>ӪXGC1Kq8 $y2fxr?3+cpe epe'C>1ʕI/4yy33>(bit^(%x_O>9t{?Ϊ^;=$ÿ%<Ӎ!=_uBӑF>2wU5Fxʌ|)#|.kxqN!z8mYB;i8g*8SAVv%9t=3i!4 IB5}/Y5S3&Z+J1Su I{U !8=qBOxmx+"j@5Kc/XgYgs4fkj]h]˹XYìۭ;Q?YF:Z:JeXkZϕ햲K)%2,dߚ$wXq9Pݬ֕rlMȡU@yu"ClJVQ.VD>Ͳj VbmLn5S*Ֆlvv?;`Z_ٻ{X=}N{=T2`b*{=JR'?ُڏ}9^h-WۛP[rd 'p<)0!pU`J GXX39Q>.u'SN9WV99˿;9K"3љ(_t~L++K e& Vg|˹͹C:r_=SAg\<̓kNm99kAZiv68_ڇ8MpG}>ܣQ{(2x;l=kOvǻ׸?uuϻqj>V53v;ϝg/p_v_WWn}}~߭w%G mvWwnv;{D p0lo _w dw  "qsrWW1p\'85x[$pz4xW`U:pVK7...\. ~ pqpi@a_$Po~;wjW.Cx_Gr SO񡿆z"sbSICɡC3B/j97C;> r. ZCB\"35eӹΓtnc/Ez9@VoOoogwS srFy{_{z'9S| oSżs <ENww7ɻw3ڛMw^p^JyL޽o׼ragȫ*Ǽǜ9gS==4x/x󜏼WFoY-qVyz:c5':çq:ǻv \:K—enNȇHcd;0.ݣo1߃ jxqlQݿZzzƝ??q?ٶT5g[]˚VB&2 a7Lq].jQ+lwuW&SJc1y3׶e;hҲRM)TT>KN?iD]b'QI$%,2H֩9=k⥞Dz9u]5Q5'jg.=Pqvr 5ń*N 1: cuMB+MY_LIӭE]%WR4qP>TgfR3I;:g]1Vt1v'~%|:mMݿ!5^-Wc\ٛOo[ur׉[HOMh:O_Pˮӷį~ME/IBe9jJk#}, .j+KoCSu-YHwAXsg3Lm5󛅁gQUGס}9R횴\dFt]>H;QT~h?_8i@&c)O9c=nL~]Hdxi 6vLu_+2ʤ7iH} }E%tUkfOlTj M,裌!}svS˓)n34{O'Yjs. XZƙ:ji͑M7O^^^Zړ &3^#䝇:d)5/gvެ@1zQܕh;2dFY=[3_aed|l_~jYFSx"Yv$}Yi $ƝH)W;++KN-8N͐3iܱs iX2mdE걘 vͶ3' x̺a1 ~ ^=geyEoqtQ7Mlw;'G<}l\%oL ?xO-6Uqr!oyg̺˶2htg.C($oRqb=z}W>˹Y1|gIjWўoos Y!,~jbdzYb~\AUkNƹQ,5cfioE^="u)vrNՙ.s۩9l6ڝɵLog*z>FϽ93BUf6gNYYѮ:=QGV au^W꧚>I8]ϫ̻fR ſ?KHd;cU]O 6&zyR9srrsG9IBt5LD9lYMf6#9+xrO6թ#z~H;Wm4h?떖Uh3߿j&}vm3:uu2x´3=ꓲѣO^%Js]*ԟj3u̽RMW+72=CwcTH5&N.*ԥ 9uK̄O@힫ja&zԽDԌ,9j}3RJξ&5u,֑,v3Ї˘9ψ~S!av~fcd3.XiSi3hkr޽^]Ϡg5VnUs<1]l)o]k|ϘZ VӆYLPg k򰝯o:_b>UnU^;n}='PSw\̱,<~f2c6%ewZ[6O[~ss&2u,>7^\-4'%]G1*ټYL9vp7SoԨ)y?i6uM2nm6Ft3# ;Ț`~Pd'].}:$\ܹ vOoklHFwIo/ܤ䳂>Kɼ Vu.Ɗ/xhq-cH$X?--NJvݬ-aζ0uu5šjne 2jVX[-n6o)5oy 7ڼdyl~ ^{u" 70#syg<9ɗ9;aΙNLw bb9ҹԹA2)8;89kmgA;e~g|]3Bֺk7]~==Zom-r~==S~!v/w/$v}}Vs̻$ƻOOSn}}]h+1}}پļWȼW2--rm}n¾ʼK':Þa" `=;80]fq~]a?~~s~s,85x#00<6|N`P𹁽{ i}ıa kP̪fg13+:]v7ֽ=݃`ĞX'D֓8@˪;R(HJu84+ϑcH%,ƈ q&e:[Gw ||=eA1Q&+)d147QE1e=feK*OU۷:@ @!@Q@DDD57 .ゎn!8!;.o7דUVTZ| -Dʧ됲z<)nDjA7!EHHy7+)#-WouȇuH*H><#uRg " R' #QV{^{=<ԜFʣU898kГgYh>Gu z6'"ѿ2&47&JѷYfaՑ?DߢoG:^I*(_(HL)[8¡B MJx<"NSH=l_>(D D"REHt@4FhH"URW&ҨTt*D#"L=i)Z\ԑ%ŢWC1}E>T GOF?W bp}",r1_)ݫ5hwX{eN<]B,fbJq(W/b+v*;N{^'>}b ~)DW+P~s8$Q/0ߊoRGPբ5*?$. nȖ + ҆ Bw] û@w Bƻ Ǯٮ\q[Vn/cܱs׃NdwcjnnI9V\s (]LmE.()vw\.NA$܃#IKP{BpOq_yRʂoA%==ݕP||jm$xˬc[{Z=ɶ* rnׂmY Sٓ (d SRcTdQ٥ZYZB`M<њH]I$puj;ߚBET_l]L.!5ݚd]  <ӚgYpu5Қ᮫kRuu=jFF\ɺ =Yd-Bɟ?ΛQ_֭w[Yvv;;UeU-? X Y!hq i݉򻬿Bs5m݇xΫUXWOXO>m=V^@Zv/[@>Jݭmvav;vYOOPç֧af}Z{9Z|cR5C!ja0 }Z 7Ȇ:dCE@6Wjf*NQWLPT2Q TCjRU*4*5dLԖpj f*UiZBʥ*OF t T*T;)RE*}TWJ QC3Tj8ej4ơ.j5 E:UMC?/QBL]9j0_]I݌gu+tꬪ+SB?*"*BgZw;Q~ڨj96%+ܫE }xP=!I W#B=Anz<#RW)ygv "50HHMd77)CFCw>TAڪVvԹCnX}ghe_}JA5CvXFϿS!VոFՐqno[EYgm|m{lձۡFf3vCv 8;kJuqoNSQC̶c7mKv;=lS=.fw= Kv?{ ZdCgé=I(*Gۣ{,5Jssqu=$j5_h_֧SpEEh FTM@s)Ͼʾy(¦<>깔op6rlܠoVF}#57 s#M;ttA o*4ț F kZ^o Q ޞZx;x;R3o'o'tQ{oo-SGo RN/o/cތ+c,ހxcr. kY {2`T]Qu%I3=1zn蹀s>gcb\|+"uېC2.b ]s7F=2z.zDi y%t:}~P@Y@ҫAʢGi5ǁI64vkF@ρ˳˷vB;i8n "H=>R/R n9R }A v/a wHT ]Zʄ/.B'`z/cx`z@"VANv2vgeؽczbއ{_)S3׳Dm,r 8%|.jmE; {ȾP3"`}/~ ~W xQ*J)FtQ^&ʀ{Eȕ/b!b(a,@=#Hsy,A<\C PG\PO\,.$pig?$2p%5s\<%K\p E*3 /3 G, !_'5(sa3QF3s8fc9fp312s,f#9 g0YF0sa$31sa3Cd2A&@+BNddL2M2yFFdEvA>RD9$9,y49 \9- 2H].ʑ+ $Q|i\}F>:jiEInB|]rB jjlrkXW, tuեƮS]ٮl^4Յ2\s]skkEȟt=ܰrz35/Jtw Q#&3MrZ ))塼5R;;A  rWw)2w{Mu 6UNL^0+l&B>]])}!WEAL,Ll:ޟ2`>V|{{7,YYn8X8 `qŁq DaYkշFZ#34fṢGgU<V U|0)gΓ '9L[*gқyK%~[0oIcfNe1'$:l[[̤j8b~XYʢRf)eRRTbU 4bҖJp*QuXj(!J*Uc\ Jc3\f,mt`ҖKWf,j{ o)cޒ+jf/tW]Thb\J)Se=TSDIo9sJ3d<'yNC6l'Nf;`;KLQSPE`>m|.E<@ǰԣl"/s')Ϭ Lk' (7L)e)y#5_f keM9v -c @2`P wܩsDN;aԗS sT{=wUTfP)GK^KŐ(Ӟn_ 5Ӟp,HSSlﳿ;b!)x^Kg{|C3љHʙLE8:"y9klfοiٍ=||}>,%j-m`h tN:Cg YR\nTRc])[W j>4PWJCwBwYͭ'.tQ%P&qI>ߡw}jOš_~v7j_;Ԭu'c_4NSm}ί6vTO+.۲Ӫb\I?oS-տ4o=Z=忧~߶a"u(WBsSS:jGC"OFyHj:W[kNP2} Wl_sO!ce?:s]9~qiP 6ٵc^/4z쌏g.i-̐$̹%9Q,+sF2\mβ iY.)V)N)^C)r4Օ$'/9WR9)͜MrArʐs4kS9]p,T\*RsyrIœM-r9+Z+|7 ˇuO5Q>+"|ȗT,TbۦR.Wn2|*-#R.SȽr? h[-:ۜMc8奱XWMpqեIDWJqЅtW#jjFS]]?hɜL34˜Lsi9wwUCK͹\ <{esEsqrm͉ˢ, ͉ˢ9qYt1'.snN\=̉b9qY|cjqZ cEeqNԩrsʲZ7׹zAw7s𛓕EМ,deqGz'deqg'bOTT抵oO'e&FGgmlѩxt:<:5Fg!c1F;jZ#R" mYQ&`;uΗd/c.f]rF-φ(9 ^1r ϑcawn¶0# j(%4b >@A X 8G tN\ *t&2c,dl Zqenr tmۣxx H!7>BW&V L`PBGlzu_GcÁϘr'r83V3Qb@8 .GLubvFn"!92#!82!8RcKbK(%zCu;rooo?/߿ſ/#|;}y8N|hTmLP4:ZPqu"<) 8.hW͑ȰȨЮT=pϐp0|'~T~6nȼ2%\\\܈+UȽCchqfzy*zɏm|k?- yBl_8To?Wo<)h 97jjxϠ+Z^mEC뢝 hj} D7EDwED_ hf~h45+:#:? ZkÛPD C|_S^o蛊sп?oP` ˾}K|}a_~|o*huL;1thUdvh]hMЖЮ^=³÷෸7BFxCIGDzGN E. ?~o~shOxlDͿ^w|(468!\Zgts:|c$&0($RiV- /]9_o?џBJE!ǂC0W5?0>f^ ޗG^<QOdcp|$y(EH_ lFA(.8?! uH/O6 494 vw(ecTdb.,=1& ~<J Ƅ&]h41 1&EGDŽ+GћC+ƇvE`T=]]N3~4{HsO6 Z,).\n]e"f^CNe };@l}&cSTo7/}χ#n 7$.^{Kk$u-&7{`DJ' $^Lo"ЇH x)>EJϐkFz4C(Ah /i. u5xe(R,P1NJ,&S/1ULbE}*ŃAHx,4 Ã{Y)0a4\"Xogn+7| mHm7U13Z  !Qp>Vh+yW+^ʦW+]HŴ==6ЫY/llz=}56J7ַxE*K9>^mSi*6 R;y.UnUz'/T՟R׫Z^2+wDY#U9Y#58Y}#G47;uDUfȵ$Vv+cIŢԾľDTڗ3D_rr߾ž#sb}}8~~I_%α_{IL߲?+==}}b$+Q(1鰸9=baV6$MADh'S pV"[A. %QbLj z/^Փ$/Yȗ] &z۴ ,.XR%;߷~S!CCU235hiBի?_{_/ڟo~EU/;}aq]k{&r#"bb4"FRDF P9|L0fd2_9LSL"FD)1ŔA4##rSÉsv}=iֳ֬c{V6*w1kJO'O!g@OzVtXYO%JV (}QeT9[)ו P0kBz(˽kʸ2J--rWkUfaC,)̚;܂'7|vz۽zwzy<PB{on$ưK*Ozaw) RI|ZJ 6nc:H}: 30.&=tv“J<9@SsB>)?>ѓh"}3^ۍ } u@CVHnA1>Nf3>,%KQ &{S,:JNDN OCD^@ߤRdW:A9~>Ei#m mOOoC%ڏWz4Fg 8=uOe7Ы7o[ڷku:}Gz]n-^ԽՈvBWw|eWЯXs5ɝFI$EеѤ9ۤѽKI*i)i.']&I+I+Ď%Hz%vWM ) grYBr|Z'L,K"JS 7bJNhV1)]3/ɕr|X$$nв~K(!u5_>!m@_Z/*Ur/kakʺ\ )ye^YQ@ڟ{@on`P'OoCl2٫(]Y|-g dJ^oRYZ%G9!u7@+yrK")_ vrا(M 1J=% F*o/+z%U> qyN0G9]7nC1y?Z&wDz8 a04S*=$l(;e{RJoKWF)eLْW{.nh7M(CJVo<HhoT}rm`SQf DzkAzr%̔P6t⛌lyQ" /emeb 0^n;^ѱqe|).,ĚcLt[ns%!noKm,c 1[t1&_/.9r\/wyqyD'y2򖼭 3_A*h.heP_n =Iܦ̕p R<7^ f&^W { ˃rNٕb9̀씗RiE (Hi?ƹXPȋ(WƕJ}TN-`Ɨ`^g2hZo7J_YVe9seEAcen,]zĒȥX>H v4`DGCsxt t2e1ۊ L3Q_= z>ڡ؀8,^cE%-)9r\$7ɍG<))Z,IH;Т/[Rwr4o5~*%|d'%@lgy蛡d+J>zQvJ[B.kUð8y%z-RX3!|3`gxew:,r5kY]AVJBiKFZJr"nإ5nv6ZA -TAbb,v362 6v#GB4o[؄ۿ0+F}*mH[y^Yo7zl; r__|J)lm\U!E~+>Qxe(Xӑh?xUt XucQ17 =N.bt;v+拱B_l!"9ߌ]݈oG"`;#cn;NB5NءwE,Fz҃o$g"ƉqD$")b iEWWxx 77--D%*zɓIҩh/FOt:*w;ѧ :әt&z΢P Mgл]hCG\:һ1!!TF?L?>K8*?A}$ITAgD zLCY8\w$w93:Vr;9NJa`y.Ytnڽ8O@++X'聆|Xg|ˎ-O`piH H 4;`"!]QGnt;;!- J|) \)=e 2>4 ^Iu">3lny~X̂Ł`XWc dYWnKp"wUbrdShr{{2- |bp8ӄUi[kx@:ۃpP`/Nh]`k k0{s RCZK᭡,g!дt&XdxI9-t7q JyJɕȩP_?JBl WJ ΃b~Os \vK+žK@+a ȵbjv@mk,T x;;ĆrC[BV@8=l IS Bk#t#tN} .P_h 29wPҚ4xk΢[lp n'쑦Xmbw2lgk[ [j) ڈ*c8I2o>oH }@e 3UIHY*W!+V]*W*KN"? "^@z Q:8?J:ZD }VI] HA5D*`ͧ|*4*/ҨNY/`J31ҢTY0e 0}Cd= !A Q32NWTN5i^e3irCy HxA (OD*Ex|a{5'((((!DfQH|D9IaIT`I|#N#Nq5*N MjUIQqb?]C]K J7ЇØ]%:1J0J0W%JESq4,-̫'u7?Gτ("-IȰ@-&`KcK|)(xNW$I i+F%/kL}J1mѶq-1}N;HIE9Kīڗ?'о}bkn7u׾߰Ol}}k]EDFtG$tfw'in]7Չd:^ԽD~Xdݛúe2Y{|u1|2y)S&HH|#]#]I51L~sdMI?"o-uIIS䗒^J&ME`L,U|lJz-5_^OzlƬ45J1+M~dKnII#4⻈$|<_O=EI~^O:$17ٍ17ycn҃17?/ Y}n! ٣L_AF@2B_M>kd H>q9ُq9z[6ޮ?Գz'_!BO!+3_D_Ue_$D}y=e"|m_߯>Dv 1PVU>pUTf#&Q⤸"KZ)W*Mb>tY.]ݾ=}NR/mAh}~KOI|3QG0!\6e(%u~YHZƫ[nΉ0fw 3s.\#;|0ms ;]Y*,AGOlr48S}b9]0s;~ʷfm^G~?_/WC5[wt˿_w!)Hdm\|R?g8R]+\;1cQ $ss 4' ONtٝR6׹m\;W`_g>q%nKR>ѭjqTnTIA_&q\)I7爔--qR3Gt(* :_0H,FZ%פ 5߅57}.;N.񷅽8D+•%*$\p8X,tUxGa-K~x߄]E g.mXX6nғ]!< ݷnM,Gr{=Ya5neL9mX,MeQ/yr=5"HlM\;A9RVo7IT ZM"Xќo?3m5~# xq֘|>_9갦eK#e:3նÙ2.\`ׅ:s{2\nmna7ƍ9 V>]Ox.db3%W?ǏbN,wŅc¬%?g]!tPxGM] !x}6me!!T:Oqp[0w1_\ F?EMp!ͻ<<< sT.\@G?[eX<~Cg1MEmK^m窩ͶJo᮱m5YRͷ<1V{eYcr}c*n8bg*&nu~YqL?彁 q"wxˎAsf>ۥa#%\!ݲ. 6M`Y̷L5:3ioFLT*to ppٚӾvmsGmFs-SyuYY!fw܁:quM={ղմf3 v?WY\imh͵ŭvӚ+]|5{Ț$q>Rbs-xG`c,7;K̷ m!k㎩̘&A KX]ζi5MΨi}ڴe@+ҾmX3yv]blFAsx՝)îH5کFQ]c-)궺VZFk kpѲȟc쭹Zګ=x҉ šGJ=\ܱEs -,yX׆ Èzض50Lޣ܊h0Xm9{_ԃ7z lo)xY:f`V;f-ֱ1-va7kݶ3M&w-ŸٲMxkx A>ϼ3v`2w<^i1X(ASQjkas k`xC̅Q$7^pssrq6RϭOX0j];xmb`y-ຸuŬxTna.{K*e&>f0a#v𶫖z9Z ,#v[϶o\寷2lraem@oB9WƱm S*5si{#3xӄ2o~i V- rY\* Gh37΄ B&R 4/օa~ր,9o>7H>oWz1&Xkb\2'Km65e^V:,a:`-Ka?k9{س[{gq6 f^6(LY&;">N죸d4m1v$*lfME30{˴j;dnM`%vmfO+ ʬY+95X ocx6S|3Z ͼmE Q}ď[(f`x,6 q[ ZslW bLi;{ߏli|4Hs+pb*3GJCn5fz|ХtjKX{.ﶦ †j/Yͥ`9"eh/p7Y>؄ѳ5XQgJg c+6zjgeSŜ 4\ ,c 7io=s-zywɤ3|f [s6w 2!\g(1k=u8ǙL#vS捝%|sq+< ,)\aY3DEoHnͅuރڛxuq&Ų>v.Y#L´mEVmax޵lsC1j;kʹgS"nx#Qog%F .ZjXsFIO@#d)DCj4z*xl<7 K{0Od@{@)/"MGp|D<2_UѬ_Ѣ?* ?THY."n ʴ?1*]oʷ{=fbc&W)z]LTү\oq$E\WߩOqCK;?'I̟̟]N8"o:Cp E>rd艬8*=OlI$n݋IG@T{TeW*#ST{\eUe'Tv59oWo=i>'gq)ѓs8zTIy65i!*?A}Y#gqQ4> ?Ɏ_? :p/̳[HȄ8`!Bh`,c "zR8󲔏y}BqXq9^Bqz K8,KBq.8nggn殶jRWWO{^y٠Z@-(꾓vqg:/?˞D'|k|H&ͱ8]n37ɍ91APc+`Ԍ_cDfc9W>MgIr.'Ct|A%P1v&>s9/r"Pȧr^w>x\?c ЫC(u^#;k$]AKP󸑥EV`]9eNf5z kwCnG0W.] U՞~lOi?CVrv 6a XFa2ssfy|;%A`\ rkka LѰ\\.7ЮƸH{C;',^ j r@o_}mx^i;{yEmSfllai$lKE"}l3ڌ*&<䔧9Ĥ#xDiA[ad!o6*9N` ɠ*1נmZ%Bf\OݦQs(&KpE{)~J9\Hz 󅿵M%󩼆/<w LrSMFxM\ p\ w8 +g| c*V|<_N]Y.Bqi8 armNa}Fjmm&h%](5eñhd;`30r-@',-X5@ vyў;s,:=C/pi!vMl,ocz>l1 vʶ`i02 $@?"̝G#Ch ̴^Ԯm׷W6=TE;m_h inGV^}A{P&2{ :J:6G-t^µl:s$Rاr*F8j$zA+d`j"8cȇL<:J%'h\t1uMq6^olu>r>LT79ZRJB-FV^UVR {fa5 qq4&0L2kuRxruz/bMzЍuFo=za2Rq0H E"dKPozSDzSEez"MQ"QWDԛ),D{^DVz"}OD"Qoz"굈NDV֋A;] ]tY|)>SM"P,]"b1ʿ$F(P,b@W1(*Ii)Jv"M1D ,b/4EĠ4U|#O|C#>Ñ/`PT+>QtՉ1}ӿ&bLYĘ_bL1"bL?(P){1s1?E'Ĉ'п$b?F@7WWB %o RdJ@,FclrYODhùHTmX.z8>g@,@Àj=Pp\8 (kЋ0ZCAi}bc3D0ʎQ׶9оs6Å/÷#erxm$l>T&,áP$:|0_K/7H9f$τڡъ7LX7궰'Nvڦ Re3]!3mBMLQ==xmW >na~+"+&Nb7VIͽm8{R1:7=Z؊ܑt.d\*zr>ngLuUU4uɂ|j5{X&Z`ۄmYL*j`cUB6*nynk;p/CpdvSܴ%B_[kۖha9KdžWCt!]MUH#p+E~p~lA>0GWCjm7OH WГeLo2}l붿 Ew-Pt7Z"&' {^c\U-u#̩*y{nݤ Vej2ym/2um%~:mLgOۑIvnVs?(GE9ȹ^MvɔK,w{L&0{m9 ?|DB-uG`gh6X/?CqxPVxE|L'sRéqX _OkUp9<ԆC y2$$:2&&UӪ0"\&Imݑi~`+тϐdǬ{B1>?ŕb K[ &^j^Vt٦܅.վk{=Pi7*f_;c0 ꎨ8gTvz8e}n%wkhڱJw gRL%z5j58Œf{\Qcl9Bt@D pR<x:VK&\Jh&.:AO2AR!e&]A;h+Jׄ"`czTZFJ'ө)DR15k*d[N*a3,K{n<IJ0N>]jnkc}wt[T}䜭;Sy=_7\`G=~=:~߷.osq|`5u>{e=n~y_|_U( zhؒk&Ũ!Sqmjܺ8}Zlɡf 9J $6PctUמP' ftQip I 0>EZ_8C Жw,6ju_y8W6;S%wNy܀ո SjԤuW3%Mۭs㝵}T]GO&n< eT-^d0TW̢;_'+v0r|S̶4&1gldLL%D%]^/Yt%;!#dR&{ ^Ű_Ű_ŰbH윏{G Q[m·z yWGжb}fޛ/B|-*X@׆ $u<T{7g'GmD5Eu~tsQ\ёFr7TkNygKfIs|Yl6[ ˣfyZgP5^ak r9jag6K%0 &AM4 Tj"逥vAXCso`Py,ZuVi˟Okga~ߞyi?_jKi;v*\mKmFrp 3MXكhR»~L[KDit[G& rk*n "ِ!¿ޥ`մvmLD<< 7f+]z;/WVw*pv{ ՜)5PZռ,eڲ5މJG Hr@ȭowǻ0xy<}5ڴeȨ<.uƪuޥJGvcZ6tU:ta >@#57׃7lp#X Gm6?Wl N2:M~6 `S`)i^?;lt/N۴_f l+jeB!b UumtM4?0Lm͒ 3w,ӗ{1BcnmhiX`M~o>;|\nKP@`,8L <aa)/Sɏ,4p &OOݢ2a ܇,ZHdXۛt9N(o!]PH7,{ o-< CMZѧJQ{[E 枲I %"v)) .ID`J%JI}kZI-5 uu@|OUo$yI~,1rKb$bSS_I~ o W3\ -yb1gķN D!9!zJȬ~^Ȭ&b|b49&D P1Ӂ~Yy7c4O11˨:1?Dc~#4'/cз +G@+E忔'O~G/I{lh^DEG,IJ+5|qɜq!]E.. ś1x$m*Kvk4X(\:YyٳW-C=S~j ס;T֐k_ؒKZ +(]:.}d'ow[t=Wh-VUk|z,'N$7; 4JjzqV8~͋C%]1M̕$j>#Vno*AE&yҰ*!pDl[Įұ.xPWa!]?#HfQ˫.^G9_0WC W͌~,Ο׹v] KǗkWF*K; 5welPJ١,[/{n%s%%HAN_\]X@ ۈXZg cD!QCX $O#__SY췉Ks 5S#IOM~`h$4w`AKRɜ?"8h袖X2W-5i Ec'gK{uz爹'E5zt=[Ĉ\O_-%MyHl3oVHXBJg#J^Gֲok.}'c`8~CDs"ED.H4.#1h n<*+* 9#qQWȧ~$>Q?E>Q$DM YϐQF}|6Q?GsA rJ:$B>/#ItIIǐ/JǥH%]]tM.]# e##tS!ݒn!i"g?QH!rNDIH7C$Cz$=B"}!}dg[, WNN e} Q>-4-3H쳲"o>'+H / e_De_} ^Ⱦ,2!{yGvVv)Cޕe2"Y, SʔHL%S!%2Lrd9H,We|bb"R|5n9n[[A.E"Hej*WHR}T*:1S6 [Hւ⏁T *|Krb-> T>OJƏc(*c/ֵUpJP_0Tu*ITCrJ;J]\1F(+3fjX6~#p^ԞUbU;\.oo6\Z F_w]L_pHSrT_W -~c̋ͫ()utA ^X/>Yǵ zLM9< '+ǡc 1&ұ^l^ݱi܂mc{ :ٴǝͫq'gݙ.+h0?~.ş5,c V^|Ӡ)}Ky^Y_^Rnu -zͻ-oMRcw[7sxIVգ$d} ֭12VwۚgӨ:x=46OBξN[N)m?uY@a3}lob<+Z`k lmx\[(p+ .P{7>S5,"Q 3evuq,PG@6 ĺ`#ZmA zx"i5E7F?:>~Ge[qF7 *bBn )w 9j #QAB~֧zdWg(wk"IMjizkޠyZrZe|m)*}SR{~~>~rվeH:J^^~ێ!1 c0 ܻ\i_?{k_ګ s*=9j̶SM+N "j=\9P]eo*_=*KVmLXrZ:ΉUr*-J 83MNw;a%]G'+ɰsy8xtKA& SgsعqF@Uy#ёur8d>l`R!`̚B5UNRZ;vz'9ߒ^Wl v{thӞmJ[Py]ۺAFoU b\Џ8P$구 gzv at.hn#ñ}о8%Z@ w\~-PGwܵ;rG}F:s-šM Ruo8\Cj(v8 l똴¨R *h]=HH,ySH'Ԅm\jSY5y[&>JVGuY-֗o"-=~xFqj V[8گ;'Iӎ'NJc:ˉQ)=x&[x0K_ڞr,87vzJ=SEjXJ:O.d-dѵ +YA,ipSi™ vhq`q-IsySCԹ

s8'+6gN:}vƒf3MuWS,vv:Kvɪ{+(y\竹^?.x*؋:%=>srbmXW(ʎlcPԦiQq;84]}$Ң>6aĬUQ n(j"AV =ߥHL)UJ=Y3YkלNO-LȝȫQ7<Wfud/HdԽiȹTiKxUuE5\ϫL\4L cc)*﹁^WN-El |uOzy 6-y^K?T{`T Wsb{bKWo}X&?'""9 )K If 3I1R$RJ#ZR#EH)"bDQ)""RDD"E䥈ܽ>+վ}}s3߬YgZk-,OE)) }"WMpN5הz &ۿNu}Z_dl5:x0>~yJm6l~U$+wd_ufqƁ#9W7 ,ŷ̛QnĠxZ]$H||tg>RǷķkU&seDfIt^*T0Cju}V&&GgJ^>2<^>):5Qߩc*:Wv}a6}Vƣ;NՐ.ck]%J*FtZhhVZkZy=rVG{u4<ּuEFCoM+*XZQ$~(3O'-SVglLί8$"sFI@|[PcKĸu /H[;32!9mmddϽɅm2M+2e빷Cj䪬V 鑴hrSb EiRpeܣy[SF"雋J:919{3I)Sb;4dK~m~!uZ]2)w|[lnnunǼ #Ow,/T]ޭȤ9Hmnh}@T9k;gd51UKdLFVκㅇ.?sZaZ ][+:\uHR*X1E#cKKgVRGեNuEe߶dW+}TT.G&ό:LсآB[#NVʩ Wl6:b!+S*/[g[=L!57Rc=ܬrV' 닲OGs{ZۻƇoΌJǧ]Jchq|gq«؊{mGM2vT]=rWٱUY?mg~U]b&*&w`qzYAevdg4Q3|_LL檤 :'"Mdጔ3ÑHUؑcɉնUOX~d* K'Ks%Of$'s2-±l;FFgetz&m@Ue rvuٝ-cE9g3r헿#mNE#ڏc22bn9ҷ笖1,/cqEvoƲ;;GsV +JɊ *˸?-YQ.[^unEYŌ +Vd Up(mtn9Ӓr2X-FHD$)?mNAGru2$mk'9<$w|9ڳ,qCbVbnbZdByLyFl{rmrU^6M,HnI.O,-\Xf糌:;t;1\^V4b]Ƃ,;O*u S2FWzY!%Rœe;2̟T~k~0{vS^7=q$,c}p]iܳ:<،,?=ceboxyĮQ] ;iQ/<ۘwEg+wZVвerl. ψ-ܓܟ(w^E G^[bgmLI-̋RQ~V['+s6ڑZS9bWQ%3{.h^nn^2t;JN8]?jvή#v 4V?j+6WR2s{W,>2sS΢HհÙWNkpI|]##c C#Fd4fPeUtKz̉vs vKhJ%Z%Z,lI\^ݖ^R8|LXKщVFF7؏6dCMT&*/NyzVFEg<^?vhxdMdMa(;_]y}'!y{DYps 2fFƄWx{l_Mz L(X?)>Lny勣+ N?ʯNhM4 {D4{x'/T=Wr?~rog"·o+˷V-Zhm?yJʧ~KZCBi~-a?]ZٯowJP* (qV8~c};sMΘ3FAS1NpꠐSE:ĩbNtANtA7NtANA zq7p/.A?N\ʩ:S8up9J9u0S/z16<5\o@ʜmVb췴k?&_o%6/l <Fe_ <_Y~Ƈ|FVr'+Te Z[>G˟bӌ &Mm.54IʎnKqvPhR`O:$g%x6mOirt)HG߾_ E [c帀"r܉μ o9[o9[Kxq/rܛ-}y%o9-Ǘrr\[Ax0o9-Wa*r<-cyOx8rSr\[V3ՌftmՏuڿ4v<=WMw߯}u}W9#>eSi?g3͙̲T~so3t/E8fjZ|Z]W17R/i,K0#5&o^px |jB]`Ws`2px$MId腔0KzX H=@ogX gJݩt-y 6GhX {Y'lDǠC}[;pԭn)ୂG_%Y\үqH zWBρ "߽'YoTL!BJ7IJa|\ > >@&rwDhWd=0IY < K 2?)qs?vj{ E[gt%|JҊSG&-á%K[5ك В@h*WcpVAq`*{Hy !xi7.{v< *Oӳ.=o/ zU=н ;޷~T v(<hA}9ve ݿ: ,~ssX3\S )y뉋|=k_F}p?:h+nF߅%.o;A? n4๊AyގnI l^n'rt ˹~>@/=0  ^H/ m5Sr_+?$hQ1}O‰ZbU/tErG&E7CׄR GuU tҺ)7@< $ } 8|H΅>rAuW G 8 a-8ڃ7'P k Y0y0x/z-;Z #4HUv5tIY}58)OI4y -_Fh Bpw= &x+ 1Ap~]#trՁm]{^g,2'7,8ku&saI\]6Z\Д5urwb8 :,Z_Ig iX-.g,vA8ՂΣ\fB/%*pi`My%T|7/WWmXYSvuh_ ZFW_KN̼Fo__e@^/֯a#A E-Wa"ǹkxؐAF] WzOJRJޑb:f0?o_kx^s 4vzp9Y.V7܇*C߫Ѷœ X;q?VP.8L 6=4וnpx ֹ7Kol&,B`jgtTFk`,%~`_Sl^sb*W3AX.V3ܥ*P$iK˅|ͣ} pԪ!aFRu -iɽ 6)>ѪF-:Cڂ:^m e6Yeji*_~1x)Zܫ(JeV 9o2zZz{RWQ =2"?%x{qYP;GKU{_G=2< "ͥ z%qVFA&ёJt %S,#ms4'nU`lVuJW]"ܵawnw8Վ :NR-G5p?!ůb]k.xF-gƸ\ьzxFepQRh,3XejJ_cyï9];т[cPp?x߬ jIއ>O 쩕Fm9R0@kEr~Xj7ܥvi x7ԖrjQAc:j jcS`[!X &Gb%ڨkNWr/N5\?¨=-j`ݍ ֵ5Ӫ}v_Bk.b\;QZqFXD5;؇ԣK,)b_yH8^+;#ev^}"K"1ꪪd*+Hk/QhT9DfU61I>x;C2q']1dUutXoThukhJ1x!prd5l;1j_+c| Q;O{c tcF5j]= u$JaW11)0c8"]1jpXJ4ZLÎE?M}m aZV~Zd4>Sϒ8,-y  Noi3OuZcK[T@- teKwP06=,O47\JݏR^jN(9imCyvMie zl֪:Lqt~Ov kz|C<ھd2 |z/Z!_55e*h_zج ざ[/l) vۃeU$x7Xms1Wrl`RsC:^&45~3'phX{C~2? \Da4;Lg}f:%@o24 VZt? ; %V|+_s1Hp-zjx$4 RY;VE0x | S@zrٙcI` #Z!ȼ~ N!?684hy*x/@A1!hx:v`a]8i'=!{߆8w!)>łrsEINhzll6 U:j̜ͤBQgҤr/O!ep^Nj|S TQ.RjxrޅOo#q;tTpLl(/@ۍzFaӈv!ŸF8I{7 A'_@!46ahkF9TGRܑsD"icpƂH=p 8 .ݨCyvr zF\'cp~ ҿ.D]9 }!4v]ij]rtVk; _u ;\-IDL7`?T=h$`9|n 9_%ݧ>vWx 8|wi})ypISZSG)|F_DjkIiCse2w[IуzjFHs;^n٣B9VK#rVYX^ GH?UNwIJA%6R+m9$/ 9tcwɩ*N'' Vu2p))gyyRJJ%zPjK/SO,v3W h` oQЦ9)Z\.ոEf3ݲ&ΚDKrfbk\K,.Zc~H=Ag~c?W1ClL o4f[PJuw\Svٞ"y֗!oJ>gqm{LvЬpk&[4Gb+Jϲ 43 uy=>H-oy myq5dp_@b}nh"TYzH;Rww[NLt/O]v);)}?CH%7+-$ {d,KED𦀬n/;4{kk,5ujvÒg@i;}sbyYeGa`\kkB^H95~uы'H?52g,Zɀe3 OR.f9RATRۨoD^ׅ Mʉb?xX!VUػYzĩ|VT"?ͰqtW5*mC?0 {KWԓZk5ZP~Qճϓkܿ6MRZ#[陙E QJhݖw['rN#}EzG[-!$:a|gmZQ w()CgT|[C,Q xH/6D3#qWQ ɜp3HP|[mh}|9''2Gut@ 2?B3X_ڐskf#DtWic=5n6XGX3@|a w3ӆB9,%7yRlN_qy1XcVzvґE|=Ʈ гʩqB[gtcˋad~NG~ѱ<`==5BCn|v9Cy"m\E5mȭH k̽Dg<$R]b3K!b͘&!䇈Ä ZB\^92,:5E^ZcX±Vȑv]COaOǻEWv]u5mH._g7>GЮ V'V8WBߍФ)~x?{s׃/n)k7MȜ g"@{sksy˨]8/i{HH;X+H0q7A琖Z8r4ж.-isR=E5:=ѳˎ;::^еUMWʙ26}r\5Zy=%V%e+Z7CO5#p4e΂ A)L"A2.|}ҤrӘjbrςKmB'*%t}菡U+g!8% un6i%bQY$t3T4KHa%Aprđw)gAP!̄x*ę 3]B>NRйzi¦cKk Ƌs/|f'e T:_=2+d ACwlNemA'duU`% zGS_={1X=tT3Ug $,Jz C'Rz es@4:ђsJ*1=Ics!ٟ5iyl>)}=]5|V eIaLa~h֑QJc[L3|L qvG6sF'+9U0:\ SOPkJOsՓl@n>rQ)b\vf1D<`^K@b.@7| !H̻@ u#zp?X >(-%1wv4uou_c7`8x/| Ы[? KRA@t;iU;II| \TS9p |e-Uÿ< uw?zCk{z '} Q\2@$kGn>\ ^&ˤvK qUHs˳rVǬSy|<>5U¾ѧ9fP>OC4'.r>Q|@r{OOp i  ~?H3EB 0XO.qB¦{~YVHwo==Lj/sg<='}}FO(+ɽq̰zM[idiPBȄ\ Ժfd)уг˙pKzpVTUWuu iH#9Cd C 9QI"*" "*EWYVߩs{ӿ׭uNX]݇6>fPL}֥2uhzjs#M HdȝmLȚHߺ#_οϫY.ܦ>+1&9p+?뺗11Ǜx3/?q =##/uH\PhNU]>KY>K /ǐX֙k@YC*m%=Z| y]hq031#QoFg%bUC KuGͻB'8;/o7z"̞3s pvi1?@@CI(Px1.V0&AE10P *Ч@kȄj90& RnJC8!46.! 77΄kޙбoaHZ>Y-%P jC3h  =͓ a*̂BHG)Ua!/heZ@{Y èՠ/y`̆EɳAe(%tp:\ a"L9֟+s(cX1bnΤ&ccƶ1͙1Zc8q>R+ss'Ok2b<5edƘΘX6cCcrrU[,lQ24~lv{'M5Yb|I26ij$㇌Oӗy,yb  11O`X!csƶ捚e1e̞c8qlƅgV2cxV3O˸'119ww ?gɸQF_|O4G\_ak4{ }$}߃HtQm!7iJAPQg..h|XWQ}Kw_,ɽKj,NDP"Ea3+`` HxnǝxZ*2D}^#EX.ş'*L-ɹr$5yBU**SeG_'xM_WP^@uj{'Qun"L+Z97\,e[if9,J=E v-4BՔ'=?4gs<@ TVTJl#Fd iD̝\7wQr-N'd?$[&kg7ononx+q+o7A<4>MwoF~7 K~zw&d; .k6|ݨj*ڧf._4wi37bnze/<sM"~9~30gsF9#̜Q90sF*sF挢Ř3Ҙ33g`(ɜQJݩ$^qQ,G9?2?.aQ2G揪՘?3`Q6G揺?34`hш1G揦͘?3`hъ5G揶?3t`׵_|]uڕ˲( 7g%p%mKa%m`5o*pmj8@p3] 'zp-ފx8fr o[n-[96߲[n-wp"];EkvDx^t*a%/G1^׈pTPWūhG#ŗK8Z|!!\~0wa0B.? va0".? ua<0QS Zb]]`w7\`O7{1>.o UTT:auXu2@U28e!. uYep*]V`*#]VuYep*]V㡇8֓q4| . Ntfp6]Tml38eOSd)bf3Ý%r@4rk2{hyF2a1ۼh^sK%13<#\Ig5[95ӂ"A9=Ԓy` 9/l[-rA5&%{`\(k'}r]p<8.> >a#yC.l'7]®wa0Kn}0;̖Cárk8<.E]{G{\y#ף g1LZ:I1iXMnObL|iqKJd YK2,<,'*X8 eT ۨ;FNTT\5oTUnrɸÛMfnow%Vz+ioyov{;::M%u)]Z2(+ڢ:n(ƺ꾢/Mth=FtdU}L'j>.'IqL#oŭjxb)nn&WjVUKyL6wV|eЯg j9ƿB䟶wvʵ"5.ר+vhϩ-}Qj_/mn_o;}u~ REbꁠxP\ JCAT*GAUOG=dS`z: W W=&`:BU9*M#*dg (*:EE!NQQכJQd\4wSG%y☛է@}5  3/C4U6IrshOr I &wNx t7}LQpW(ǸˇǩErWg.wOr'|ˇçMq+|~.rp{A.ws;<.BrOA% &|7PC$e^MR$e^OR$eLR$ENR$EKRII|$E>NRD"'4ISI|I-Ii0E>d|)e"{"gG"_')r6+$)s.Io.I9 DH$d"JP$L"HdE0I/"_9NQ$ҿ"Q,A(HHT(Ap"QE D'(LP$*HT:+Qz2Q$e&)S.IITHR$E*&)R)IITIP$ETH )QoH$E')R#IIJRN"uH$E$)(II4IRi"͒iH$EZ%):+miL$e')!ILLLSܝo c?s-pň@D\HeS9ND9INST9MNyr)gr+r77K-]8<'"rIz;B"#P -4XA""E(\*(,&*ɱPě́*ќhvJA g<( %oҵI,7[y*jy%.$9k~A|'@^TA=u; #w$ٕv*WR}qygrɽHV^-kzyN^/7FyJcnyDA ҂|tFd')&2Gr-ȱtXdk!JmcٞQv^v]@ɮ+x2Kf=eO0t=O5Ɵ8{ku{UjE29@fˁr,ȡĉ|6{SفIvgL:{7ٍCÈ|goCg@gϤų=\EnGgHgntƞtM]@uƵp߻o/Vyty\]xDY<'t|XKZˠ 11 aaL"XaXKaiL2XQ|R32VX SRkamu)jO1KCl 6f[P [cl(v.]v^xlp08 SCqN.88w&DDp: p6?sqb\Kq.q/ C1V1QL1ULE!fYb#ybX@"X,K2\\.V5Fߊ 6J!TғZK+Hd\BLEdQYL=di"(Y" .~e%Yb.kN2UWMuWYzު.UTu@5H VCP5L W#TIQ(5ZQc85^MxkjlPߧNޥw=a~T?O?'Sz~ZY}@?!>vi;_կM~[鿺xJ)1m''s7Rg?Wk}VQ^?HKi6ƚ&217))lR)+aJRI7eLYSΔ7LT4LeST5LuSbZczi`FibfiaZVicښv`:Nb2MW,4Lo5~ 0fd!ffFfkƙfh&ɦ)j43܌09f5MyŊ=W|h>27wwIS7 E2*Ym mm-d T[l9[V[Vmu[ֲm[ֳm6mSʶml[ζm'vf,l^j2;fہAI4h4Z-VAM6h:NAKt ݃G3opi/\ pi0! #(>(B  DT'S`zf`n0/::}G? 1S1/E9,%9 i;,Y-?v5s[;xn <5-mnқV|g_=~WfbQQXYkF_I;ʐIBa'2AB[-7fFmb刎WBEݙ Fےpoz'hd 䎨H^IMA#o@4##ǣCMt ɮ%TZd/$mpwPPqԮtOUxăd7ډog~Q_'&d,ޣl0>g! l[²HvWl?[2C6ge͊lFZ3dy _x\ɌN f,y 9_ ą&;批͵h;Ǝx;Nl;ε|.Uv]eW5vڮ7",e[Vc{Y-fls¶g;;ֳo={wOnjU."p:!x:18S`$[Eh E[ .7\)~^\&bȁEȅ-*_VU\uW,5 7@Dfq?i+gycXD+m(i,Vu]NӆtGL {M>:Wz"YI6}nw{.3L{ 3 7s\ie\nV^45Ϙ4/w_2'e8yol<F7?tH ְcQlNDLCexErq^MoQruZPWJJVkZuZQյ:uڠnPՍj +*\p5x5kp=^ox#nMx3n[p\%W˅r\,ȥr\./+iߕ*7?[q9lRY`o-}K~!U幟~+ToMIwzВ4gm睸]HuzC,{ޘ{YR' ?>w (Acmj0|Bkd+9r0٧pl"x5p<5>sWp?wqRM _t;7'Z|-F2E|kkHO~h|yLLP^7't}W'_JAyjVjPA ҂ #RdԖ,y)E4Z˃`Cpi #Dyp&8(L KeÊan8l3ÞapP8"N ¹pE:\n 7û]cprF^x<<φ#Q(-J2Qa9t,J*ƪS>ˋ͍-mmm{ '؁˱7bŎNNU<xxv|X|T|B|Z|v|a|y|e|]|CGOƏďߊ?<~&~.RtJR"lJŔ)uS/ݽf=a"*8x A!# *(" "*p(qE! Q$cSq'c}]ZjժUի7]A`` J0V0I/H y"ABAEP%%/ -˂k[{BS+ B.l/ v  ÅXTap0M!K­j>a^xF$l^^>E^"H.Ҋ"?SE, FDcED$,Qh(K'**DD[DE{DEGE Fy%U ]C1y}RZlŁn>Hq8N(!+N/ ť5j>q^|F$n__?%^D)KSE, I%$ђXTId$M!ɖHJ$uJvAI䌤YrIrMrGr_DʗzIRT+5K=}#1i4Q:K&͐J 5ҭj>aiI*".#/}"˼dB\Ye2,X*$ EbeSeɲ9tY@V*[#[/,*%/.ˮn˹rO\.˭rSE,ɇGʣc$yQ?C?W_Kkj~Q)}UE]G_7xAk0  = }  # 1C!0װm(46 {  G fCቑo2 rh6;;{G#c18cqq1ݸȘk,47uSFy%U ]Cn6MJd5.`S)44ekd7%fRM LY>>>>>Þjϰ 5j>a{~~~~~A_*bҡwX#s utD9:&9IYTG#Q(sT86885zGqqz}߁wku НŝfDS=! O_6i+/xr.l 7yC79d|AV""X"bVbԊ_ b3߆Ž@GWVV/%$T/%R/%RYH{Th|-Zѡ_d>S VOOMX 5( B[-B6B[-ҶQXsAmlC<9h|h·|XOSHH,g94,9EbR bbR^K1chV ȯ%+_ ~8e轌!N% VGǀ'R?Гj t{A 2^,~8dn}|Y1 m+Dh; 4HBRV RB=WH*XPR }!}ї}ї^mG-ZiJVZ׃_59Z f j "Cp!G]$3]N bq[@?n!݉RY Hu$XCG=JKȳ{m<k٪qi--yW_^^Sl'+ [wQ߀zO.OО Fozk m'vIJi BMu(Y|_HBҗMe,~x>8y& լT+2 O>F@7Tc&K@l6i|W;~gzE VR-}4Q"C2,h*F)`# <lXJ//x؈UytxH5z}!kHYl6灴xrWb;F[ 9t%k){P$5_/3Ag] :t>BЅAªOlf⇲ާ{g+]8V'* p2R30xi $^ Ww.3;]>+ 󞅕W3Jg\\vxo)Z,L/E\=Af<_ ^Oc_ [ڵ:wIgx ]xiLWeq?7--G^@--tw kLJeA2;-q¶67ۀ>vzm[FZ@r<8۲o`}>tE7 RBHSEĐC/<;2hHJ`ԵPAYLlA .D ta/%FkES$TShH`hV\]+KѠZ12::-3 2ZXѵT K"` 0X ,)݅`8[JJB,baR,cK1`!Xˀ#7z#7n#6n#,6b3͐7CތњʌVf2Cml[:B3;B3;B3;B3;B3;B3;B3;Bk{b%`) H-b+,b+,b+,b++w: >=  h돶QۉR`5U ^`mAOAOAO7 v~ b7 v~ bw4w4w4w4w4w4w4w4,\\,fWWWsyt x:^Ȫ@el-2-WJ\ŖlǖrC`kl !2VB! PȇblhVhm(ۖ3j X tv†a l†a llsy@ČČ!?@hCa4 0D@ml J*jZ`.0Hmm-#?#?#?#?"-"q#ɮHv=E)]OzdS$"ɮHv=b`_ 싁}1/b06cX[cX[cX[cX[cX[cX[cX[c`+6VmXqncƊw6b C, ca},ݱ;q|VqhVqql 7g;8vq8qƱcg92r`10H툇;vxaw<+K<%$; ; !ɐ z&Dۙn&[ RKf’$R-R-R-R-R-R0)5JaQ {Rk^(FQFQFQFQFQFQFQFQ- ٲ-K2-Kٲ-k<},K9R`壸%lYȖElY–9lYʖel5T^Sk*zME^–lYĖ%lÖlYƖ^kzCy5<^./[H6gA/o) xX n$F1}ȅRK :Uҧ[md/ 6n>.7>eK?4jʀmQۖI/<h p'cdlmU<9+ _yƋݸiE:QNOcK\-5  pcqxnywO@c_vxAxTxИ8ӈ><__Ѧ b2M3@Dq$.f7i6HOhbShfHS@}'4cN2MsE/1_Ѽcfߕgs-L+.$$fr3 MIy4$䝡W'\);G4$ϭb=y;sO/r_߹lgl>jB\Ṉla~f"ʅAxQd"Ax.^d"Ax.;4&ߤp̀k "d^'y"NY Me 4f M#g4~ Mh#4 M#j/4Y }0bl)E C04kbh6|¡1H ͉OhH ͏Oh,I ͕OhЌ֕hJ ͞O8=/0b/0b/0b/0b/0b/0b㱕bh^xP Oh񄦑Q Oh|QR ϡ8xe!\"ڙto]xs&+<ڍ;gһrlG[OӒ#=qƓXH^p&!r8M)KɽӤӣ5e 5֤t5<.zu$:4zZ)8۹෕%$NNloB;c@]C&OHJ0)/!)cީu ^IH<9aji< ƾӓc&'v>ήn_P30JHN_%L/9sEKoDH"z)zsܴSI&!11fJԘgyaeƈL%Z:a8tF!|/n:pv~mo9gd(>z|'k7Xv n\~ʝ5X Z_qRoV|hP d݅/mwwRL'3evmA5,̭S]n*C/8qzݭyk޾Ա󽪎z?>֤i>9q0q΄W=gxa?<:ESzZJjOY?bG:ꔐN/wOt_5?i͟Oۼ{n=ݦY巋?4Nnho8;BqG- yݖz{;޴Nڰ{uwx¹s~9r17l~r> [g{}ݹ,EOXZWcXgɚt.~ڿlS(3n1o &gHGBf=fcƳ{8w<셞Gnd7tFvίJ73S%`ᐥ2,|3qޟ˽goRﵫ&WuUۊ9+?ʌƀo}sÎ:/pw/%;,^cy yPh>r{sGz~cCNCN>jߛ9 x(~m,||tPT jۿ6e[n_ԷnGK//S~y#;0[nr?)]{C|i֝٧O))꨻Wv}B5~^GB~e];ss9=Ŗ}{ӊg'7G t^~ۇRk^MNNѩӄS]ÎtJ|w2vJLJ>!yZ~du$,g3 h*9sNLzNSn(>ڝ7iSj5a_ꚲ꽖}gޕ 72v&m~gOvG}xħӧ;Lҿݨ^;;ѹjgfu\U[w;\^|99c"^;lf{c7=Mb;?>}n_?׭y\vz8O1}OLjÐ~}i0fV̘UvHSb9f4Yy|UVcՋQ&%rj9>еڮc$!r;܃=Ng.g]ӝ|L~uʌ ZwA©a eZ~`}׵ߤ3~dF/qJ^ ֤Z.FIe3>T.vMڇIm_Y7CfZ=JyּҖ#|>x̑I*{\X3r2_oe۶AAv\=w~/]<<~7u/xJ/1oˮn=Yco\Z2bk;:]^НsrhxY.ض|Yy/m7?cw O2e~WZ:._׮ݡzF˗/ kje6ri|]Rs}/|ٌ !~=z.syǑ7FxQn>^T-E?};3[n3O|^Tt c-2s^Z30}: /H u>_+#?R8!Ôg'p\QΑk8C898I71rFrfs;?Pki?]ɳI;%~:)kL_˴թU?Cd գ[/!Yj1ұ3>Wn9HԶGK殜{+rCSͭڶ\$jnv_k8~:IjjlJK+k߫+Iؘy[Jz~$Z@',+\fC^Shv`^m&7jdS8!yn^ 7?6B[B[ؑ|?HK/ʺ1O۫4J qf{bD Qmvhb\k þ@;2TT#`}+&\˽{6d}1h(d]pL=@WKdX)~BI_}^ϖC|'r֋A x|KXYM:dq{ۺdm`|j1I%F-6{'%.>qsM ].+v:mԞۖŭ}oG̿KWp3oާ¯PbD4%s{ʹfl[moJۖhܐ1K"5,> stream x]Mj0 >)Y=c+,rnB6}Y=u7'Ǹ-€'UWM{Wn;$;j".78<0ү=Mp> stream x |T;{&3}a$%B Ј, PHYA{E1.X_KZqRI@ UXZץu9w Os7ws{̙${$h9}jIx)tʪ}yr̄5Myh x>15w7Luv53R:5ښLk;-e glTæTpO Y w/l Y-~`cY%V s!69K~l/ZL[1w;K`sg@lc7ϥ?M̹ /@iss.<ߠ<BMo?EAʗQI?fLB )ǔ;nm SÑ0[mo|Q;1ytL~n7݈籐gPF&PCFD. &@ZC0H': I Q@Z!bJ:B #BQ("-p #HQBZA *1 HGT;1E('=CjTJqY K:kc58L8)H0^@:~%=G BڈIg PO:SI#c!:IG<4.L*?HqH/f]c`EOz1_^|t I"+qWڂfeXL,j\DS]bm/Rkq \Jz.^+=WބHWbͤ3\M? s,']kIT{.܎HWUۉ_z;pt7Jһp3ݤ^Bz׸U{_V/H냸!N0~I+$m#}XCw=[xj]H;kҍtt ~' t݊Ha'(SxL{O#Di3>vN{c= xEl } %ݎҗt`U^^~? jwF:xC{ &!]?IHoSO">ûc'/K" Iot=}~R %kzϯ韜k߻kk׍5}dM5}w5}߿{5}1k^}M߫{Yۚ[_wkSpM+JkrMk)]rMktЊ 4[U4*Eo%2&sȭ_Fh6&jTFk рGkǧh NbjzΊ^%FD"H$&&Broe"H(i1Yb(&rL PR`?0Jv|J+}zCh H$DSR)a'HV*Q*spYlȒouDT[E]VmIL [h H$D82lN¾T 3Ac}+tc+QDj6 .:(gI뉛8+O6A"H$qzcoǨ# Aķ16kn^َ,ŢZ̪[QO[ N䇇wzmD"H$IOk'p)ߪV"{ԷrEF,ro%:ͪ|},juJ+}+M{!oMH$D"i[`:[D|;k~?AY{Q6fYk9) `أ[E y'[ D"H$=MBSA=[WMFQ"kg]Xrbb%&S2esDҷ6 o+}BIȉ D"H$=M8r?0W& D ,x'u!)2\-)6|+cX{,1X+zUwpFۀhp_u(ɃmD"H$IO6_ſX-f8DBsI su8L4Dkv[uh NbjNDMa6A"H$I/N$f8 D|x !>.g$'MNiv:ޔ":[f=!z_On:iOIVjzqMH$D"idX,?Fb AGI.Up6-)%AZIFFq.'|8 6%Α/UIߪ;$x.@סz6A"H$*Q[%ɉG|T&&$M]qYVqoOb '[J߳P}6A"H$: 55ƊKvYq'vCNmMH$D"iLnuqk@dT'xvY|}%55)5565UVّdOMs[uO 7M9+zӢmD"H$IO?;Xgn.늅 A> gef(nwvKsJu^TܓmIV3a̟m$D"Hza mZܾ@AS3L_8)\l}`MFFZF##ҩg\#=-;z_O}6 غߴHiy6A"H$)^Ng|r;%Hn d.ljkt j76 EzΊ^xqMH$D"i*'*1|GDE <`P^pp7UꛕE.c7>70z_:֎O)m@48s56A"H$^URR$<'? 9yP%''\sJ !'kh~/LO䇇M Kh H$D? II);W$0 %lUIe &2ʀ9$č9Iޗ΢vSh NkC{Ί^h H$DL\yR=( H$5j$P>(.Kّ( ҆=R ʢ302D7sV:buDD"H$fs;r("Hyl0bd8[3,VYQ Zٗ.< #*m@48{̈އ}s6A"H${@ n0=(B6R1~ C10c&l"\Kpa[AMx6is+8PF o;6:|결0#"]tAObӅ> HOztiy /sʪcƞ~F '`?TMtLk˂F(^T8tHAAwZv +dRSǹX{j1U @CH ǎy#4SRۄ z3-2ndNo J{JMXG+==NO߬*yn7Umjl E5?ڬ6J(J/jcIIUmf;JWVR‚U8;4ab]UeW?*fg/9r&w2VLnzo[m7t81!7fv㴺X/ʥV.ݟ|4KU]{lmZ<+zCwM;'ƠmchkU@`GfupH25\b;vo<`#j=lQa7kMlT`_(SρzIRxVE|P2Iz QJ tmB*jRXCaQw,VRo CIA ҁSAa%5z;QUR8[ hlc8;m]wv}871WnVn6xHx@y8[Dlo+KT E? c.%! \1vu5[L lxm kˬ\b]k{=|9'-V ;(`iEN.R(0 [)`:;b}UK)p/6oiߨ'rv%q`&WHx$Hxx0v t ~z.]F)!.:RBk)Emfp[Yt./Tmlɡ3:/Ӳla-X=\Zrke-n֒Ze3+S‚&X#XKkd-^V J֕7#G>:>>Z 5 7Nqu9ecS)z. *@O4zypRAa4 Fjݗ _t R 3(\E nA  L|L7l`E?E[_|LwαJ7sdZ/﯈8>2 $oW`6{/Ҭc`YY,!p(owOn@&+zm|){Mo=6x^w_y~`J:EzӍ"#/MQvϕ"=s[h WL3)03ƫti R9p 2!7!c3'vU:x0SgMi>8k1[fѬ>`|"2BU=B,=f8xWהжY }V`VZ1Y(յ塢6)T[2MQ]c7SiOںi/\oLioGrEɥq\GW~4tiQKVUԅL勄^_8ld`*7ODT_QQ5I+*;jG3>E;xv?X˲Xv*ښ3*236I^4mǶy!dem[&4JovS ބ­7qTɔMv5.:}O ;nc}}7.M幹l݈Yӄjɡ^o۬.o,0s\76MYJoۈiR=MTWaZUm]۴`Se*ce1"2[ "5[ EBB11 umf56+׆4_}ys(}%_VF.O v *,LT{JT Ϻ*MlmW]r.^ҼU*?-^"NxXs "'y1PʩlD BGl*bQ(DY,] _WwA ߼3b4+ZNKAm Cs=`3eG2;7<1 t8ܓ49%ʍ4 B!RԀ>D9O@ԋ#lV<QXq T;p9nŵ6J$ T~+Kc ڞ+ ,YWaZ; 73%](ę8XVݤݢ݇_cv6bm۵ A9n.vqi/-W*h_>\L6lϥћ>Kf+4ʽZH{Z1sP6 Ӵqv$>Ҩhxii8g=^f۔:K,pYY|!Ɛo.^G |}ί*uVX:/?gl ; a=m6FIh;{Շԯ靻XzE%~3;57>^g_ʭoWMt`nCű"6ekl;{}x-?T*(OըՆk ?|󏝟k5HaYsIG;me>6]FەFv[~^^a{ه)'-74@~~!]a;h{ĿTJ2T)Qꕅdյʹ=QSF9߰ʰưI!c'79+:Wuw ^C om>ޫh=X TF3`l)ɟ׺폲-tdf;w6Cy9O9_@c bRlCIPr1tIY\RBKʻ^34ժzԾj@UǨ3%i 5Z ;U(DtJOq2Jy75\i>leײ gG,Rtkg|2U]_3QD} -tl/K1J~vFN2HU^.fR_T+KbO u)wQvUk 4bҺPFg,*Tj>^_܄v9g8ߘcL`yj+g gL1Ote  KCb0Y?S&m.1ԩ9Pdiu\W}_E4Z6л{e8*Is&͋ɴB6Z'TA=~6b/cw`!Ѫ/vNT~ܮ-ȣZrq-X˖w^EJE3 h-x _uKg;%o=JQhUD J?>V1.XQ~L{lCAYM,݅Y1W;6hʥ8^ M|XiGa% %\GWg1>ϕEBWƫl&hߘBdJ1+ڌMXf.1Z-jGJzmj9VۋP)%{c/Zeo+߳^2y㜇ߣ+u0agI}A(C /5<ª:7y۷ [Qu[mX>"X7kC"7ohD`}l1d.:,-n+`1IJ)j gAkKdabnɸ%ùKDua /S t9{޻RֱC:? pG. Ak|8`&LqeZ{UaׯnHu~6gݗw )VX`4іdl_7u˲KGsYn- ۇ~u':=9!",QF9'C;)zCO_o뉏Ovzbyq]6 3אmI N~x#/]engUS_wLV>ع]MV&C6!ЧXBLi}\H赿&MwWBi~> ^ c4eVa?ξNڷګkz{zpFGTY\@P.`$ i4nDH@`I(h…B$Fo.4\%y95 1{=קgN+}{+.=tQݨwsٹ;f؄0>W>e2il֑ `hcrnζz]\++ybS]=O+o t}*XMMΚhjzDwk{!% $UA΢Q]?kbJԠ,h`A@" ᴮ;qmAp㰸hpjm584ЅN'_W/ݸpI 0A .yb6n(ֱY3Q ҧICq].73ERcg'/ ML_#Qg̉OO~_\b.ދe{?Boa&uLLIr+neu`0p)Jʊb-A{>,_23` fEa頋؎byHP>g!+8qh4j$VWCVq0WWI9V.\ٻ}#_W_.“_ԻT*M:H_^1zmG`F- 9_>>)DaDh,y?SYdNg%Tܵ^)k<>B- M p-d? q{O۽y}\M͈Bl"Slj[f챎3w]ÿ4,o=Oye+4HT3`d?T7*z+Oc8Q6 _eQ)Ҁ NHtʠ5m}؀d3M eUng"6h cn,ULCtK{`_8np?vpU|SzW~/%M.1h3[ n ~$y0mU7ؤ*%\U_*t%D8JȩGX9ɾ~MN#` |E EE6 wvQ7%LW7јv˳]l !jWM6vs_y녩իl}ǶO Փ_+NRHF.$YF ѷxC@7 }CZ@.N麔PWZ,N{mJy&==份`K[xz'bm+ ',A:?ʾ^.^gόި^7c= d9/z_k ;ouLc]KLUh/M=/q_`Oސe1Pb?UON瑶[y&V~ŠX'.t1v>^QI-pQCb-N eJ.} KhxA! }|@$hcsy Au~>7?窙w(^rWekMϸ޽ziOCݥ oRxIn(VERA:))B[.7R$B:Uc"& *I#TM5y> H1Jj F1 "%؎I\q_WBok{?&e%3&8e0XQY@$ oa#6L AG\c%P Ӎr6<d={uz babVf$QXglWP˜ VO h'DS %$ S';)裐 UF*9 ;&ȓٱKC=H7r}ͷY4DxpxB֊JVK$-nU3͹Y΢:Q֬/4qM!'PF=P"HMQ^ ݫblk8 !wl}9Μx%{斫;z({?>q^z[^/6f;/4czd UoڔgX"d)Ǭ7 ()sDiEia|^.ǀthmԬaQzbsL-n_A0^`+ʎ.2-'rH #e哎z,BZ=tKP1bg7uU >0'( ם+h 6XkrnmTYB&kԵ777kPf\%I,ja>{V#XqY^ o)iA"'vs]\lQBT7eYw~ϭ INк4nF4xo]$-X?xO/FW4`bmmZ!?L8P\zeֶmƶm{Z1k^679Y){P?k/~wģ4j UrZQ߲?IS@UFh4<,,e_&SAn0!g˩4JLwnr> {JB(%z '2tj!_XY0_a\t` ૘>mj/*жx!Ͼ%%Yy1KXQ h=h8rbs*IРMLNUhF)ʡNԡm5\вMYO.cʂnyd=7H#?2j+Rq^)^baCF}Uk/ИvTÍBZ%xVY 6IpgY $t^a=C( hCN)V NJ|9,W8{nkuh=t {:a i@,PF#C)}gL3}y<®c9uuUn:Tq{aJJe[Ff`0c Џ8JGM::VX? ԭBX#p\Jf-7PnsYzp*^<_?]ˣR=SS'[L8}^kOAVnCg M:s縚|, 4XPۿmsHӢ$zHYIJ'+<*sHP@m#(!JO5vŬJu:W] G:&`uکev85V\d!%Y=1Q|34I҆!5-tGPO"U[(5ycC=V-?1D Ob#oD'~Q9=4Jt~c=^ _D{PaWCa7c0Iu$LᤓLŇUGM:w qbI6[C71Y\jM.s&%.Ms\Kl<邊Q5k/HS+.poȨ傹/}qڽ=! y_ =_pafSܨ˲'Sgs³b7跘[7-S3+x$]vLU|Bב<%!yfE>I6ҵ9 Ӄt:ʡhZK ;(WcPI,<NJ$WSEQ>9(=eamEdND$dk [­iW,kRfs*:R$b:vYZb%jA% |L/-4/@f>{KcAsfvlPZ;4<6-G5|sSw<$"a';b)#nҧ^xJ]xw|^ve~u-#߲3yKϚ?r/κ3\>q΀6,qX1SE [鿋NDK l>?U:^^d%lG8*o }$Ik?N}6*y+\Qd`n}O-~К!FcC RRW> ֨}3&ț{2tFğ&ϗ/ MIcXE%suG%oч} S/f$eGFG迠|6@3@_<'pzN^cE_>U"i氙^槿5tl}շ(t"gn-bi!{f-yyy:4bCřQ9lY5/nz0ww.n:&of;9>/xNl2s=9xizB~dˤhDiHmLLa6'@X1bA◕8x, :\E7LS HԉŨԺ^`bYxՂ6Ed%P]FI H,Ă#A*m4,;hr,"E!J$p14EYڧX0hیpuB.dF}@.ܘ*x*=4I{bFiL/Mr?:kamFmԿI#G낁E111 r|e#5Wpbv^si=i a җP# Iȳ[&1"@7:5ӷK׿YuKQ\pIԡ.>uα!y~~>ş `zEW:}@G'Ox^8[vK~}*+&z9ڀ7lȇQAf eLP?o??~z_@OaWv=̵+Ӟo}TDQ:ωA}v|z:s5[ΙnWQ\6v{6R-)m7Lky!_q?gܒqaCO:}J{1rc>|8 e pǟ}ЦT a1=V"hf, TSgfVdSC EO6K̖ӯ1^|u"gz3`6 m+\`NV?jiVEI(#")C1E̷ 109wNXNWƨr"0z.*ʪ_@*5q/W";Q9xKa:+R˱l7J$|#Щ @8A:HGzS=0܎ ?SXk y M$bŬ1d$ч|V]XQ ;Pꧻ 0t]Dp8A@ "]fD2RJfl5 UҐdӶ> ++fCm?ϯk[>( %Þ8|J)~yݻO5E-g?Dq6 $:ay>9纷wyN9)>cS`y=7#u9ܜ$pQLa2#<=՝->a'ᯜ?Anf2Ҙt [=mǰR&W럈% D8CL9d3tH&$FXϯ7*l?d"r&6%@Nv(Fs "*RXd@8>OI83uapj%H$9YLLBES kZL$} gnʢ X҂,Tn?PX9.Rj6Չ`. ʐLlTP#N<ܚMZ{Z1@ߺp=HcX})lkZ{[˅/*hlemR%ƪzDߺY+Ag={ U2yd ȀҟKZ5]אǖ}`sB]CtX!f!>8ƟҞ_>@_qV7iuN3Sa ωL0 pC.d:b >JpcMQHeV0$]j/\̕T>3,n=_E5҅T@Kw z5@xEW竣Ó5#)gTQ{AҰaumѕ.ZiF区ZۉN2/f d]KHFs˶Xv:r\g钰둍dcdc(iã{l gA[ouA,0I 2 )Sa~d|l3SO r:j&+fLTٌT=ƝPrHѨs_sIj&܁%jK;͍6f7~T}u n_3µ^ Y! C4!jI˔!,a F/4F#vK/Fewt/阎Lx_?Z|in{ޤ찜.n+T0yōra>'%cD[[ [ߕ${"Sq؊JOaKGw|*Z PV*kn#"1JF,V+XUr RN`Z[t|@ʤM9~O瓬{pulKfN?Չؙ#+r+slqFnMlCO* i@%) )Fzpt v ˭H$ w$ 7H"S'1GKHjpL0lc5^D5{}g!s HR $!IB@i*VEUbZ⣢Q-jEQTAr'{~df֙=f͚5gn߾Ɋ=F'XXi$L ''4p'ԍ8(_E,QWNBK-0h4dqJ眝,bl|,$?5yO,IoII{st~C !?nHX۞p!$rsGÌ3^O(-Bc>==HT]r'UKa6V9ZI1,3wVPǻ̧w {㗴*ީ6~CS_>#eJjBӻ*z*E\SiuJմ"_i4q\%$s}KK&7@cber4ȡKW\e\zRb_k>Nav*3RIuǒd,14!vc4=d')mg70?}i_[TC1WbIi<u,dPeid -aad':&Ȍ`4#lL0XG5ZxҥgGlo ]\0gXa[Ph\aAG٦/%^oaݸ'Hy?pꕏ eH_z^z_ VXtgoOdl5x15$pPaE-mVT:=iz"m<I~u*53D g5;[=oǼ4"38v?zIK]xE, f(N+}8oSoI6Hf/i2;!rTHnBɎ!CbHV C!54# f:;ʲdUes>{s¿Fv;RFV-_Pғ˵rG^,w:G^sչrb3VًE!fTu{]6zWyw>ifŐ!1$;XUcEPcRcTPp dҕ#w" RYdM ]z,ɦ+ZuT "eB"[xK=.gi%ID"إ-T%+ʰ`pް{ k y0gdsKnI^iK -4 ywA601d,x0e Ëެ0I9 lK[g}uY|[/(hb}@\AJ b&v \V1 b fTȷJp293$e qz%eȧ@l1*+X\7*fKOq?/7o$W4ݼd{֌?3y°ޓ[]mG^] jޫV*ΐK=um~fW%-[<$-=A;y][a$) 沦|Q!;W\r}oX>31k8.Yno_kͮ0 ~oﳫyGJi[VO-0]F{7cmg'vo"x(>jc}{i{dz c/ ORfN\0wܙP +K Ota}A_S,E, J*FBbn  l-!%%$:C~llbl|$_sD#f1I4I {`GO}f.IAmYBhZKEBd$iO4;ETlK-)lM(b]i*].@;!w}#!u |H-۬NY#}?4kq!1;tƲv~szb~Ti+DcJ9Ey^'bR[21A6: UZ˥I \esv9M_~]vMk3~jdž1S/&^rϨaF|8uFcY͑5'ZF )p_Ή$tMTMl:3W|cQߌI,_O_HG;K #cpˇCLGVNK_?d3x]CY#W/ail@Zi R5jkXjkҍfM-_?cOط{sٛ'C$Ӈ8z2KY^aaa lNQ#GpK[i},DTT(l.ؑndx6Jl vMqACg29NctH[5Ud\YZ86/Rwmڸ Xaܺj:cTU̯ٵ7#\9ѷFFsULPu?W/W:-~ݯ+h:̊9{QA=K en9t]:>3c0h4\{=vͰ=h='v{4[kA$ŭqP4q{|G- xʼn3=x疖4ٽ[z8stYFn~E1/5W>@d@'qphVҥ艖&{5'=.`y ܆=1yyhv>B]Z4Άf `[Җ3-6aSOB0 mG m4@| ]Gߡ&X 'Ʈ@ @ߖ Nn./ @t.z$ڿ.Ҍv?:Iή~Cyө_zW3_WW\ }u ,(\<6w(\b-G=ZV!e0M|a+`U;sf Wvi!o@u p]ШwS_I GVRwxfi%u9{]$yğeG^$ hZ =tTd]`iI\w 2 >o=z݂USJw\n5?-'ùLŸ&хY_,30Mnpʎ$f6 wsUW9t}D'Z cwѢ5[7Lgפ5Γ(Tf~r7GmP^.{UE)beMCyD:# )&-q͐yPg oS2&S=4q39`ح$UM43D_$5,ߥߩ3A3ǺZܜ0DہrәN7&EbytvK9#R/$Lcl(AX)},i2(M_ABrˣK٥ jWEk.^N"\:I)&wbWGL9.ee W# p;[1GcA_v[gD]8%fSp (u WؘK9b*$ 1q4Y]b,-]aʒ"^Cۀ턫 v #dh Mܔ24q%.)C7eh Mܔ24qSwo OOf7i&DtL<1.lqf68PI,jJm{M;Ӵfor5+#: 9l(TEv |gӛp]FЛZ<_iqm襚 Ar\MSX3J oR=B"ēJSe J-{#b;jhj*gf-$Jp0I| ow%r T&- | _h sn?(iuv˘ܿqu$JbA,k%B:Բ&TQUT;͖k;\]=&1|(=f1ʘܾʸ9hmniLnh0֮io3VUEVWUh0jی =RQYX7J,L9jUGCEtAU q#nj6gծ45WX/HEgm*cNuu*c1yEm1veMsCEp㲊H c^EGS%HcJ&.j0+mUF{ xnnj7ڛڶh4Z"\7U+ڌHcm{{Ub-U ȳI A#B-ʎ#q9mZQ y1&CN+E#UmB3h]@%ʯE.U "ȵL!TE(Q3nTVbF3%4c3;6AEϹVrC±gfK-RG&?)? xBUA=U]uF^UgP#zJ2FLU+D35VA D_؂96da}kI\R/ʤ|\HKHI[R:(c)݀1 k)|f[Ⱥ~>/i^HSLgLr)\[*L'Wc*H8h> *#m^FDԎvAmOX]UVѺ;17|LbiͅӚ57@. u۲ٖ[>ie։Vi]or \Ljjo ~{w5u.j6V&y[HBIEJai"@zs^#|o (G6y:)B%ܤ<#Jѫ*8-c{>drH)]liSX@v {&x?|<`&hA{F3&#M2s까Dyl!!t?B#TS~)RaCώ2]P>@dr鐆GߔF-&Tk@'"?4i"/D ԧPηXk@gwG . ?~*tCSאkCS)~T[Ĵbżo C<A x 0o}<TKN@NKq}`P=C2sc?.3р1=gIs?grlHb6ZGRM~! <ay#P6Ʃro:=34u-իпvPvHOߎX!v R'NPHoA>P BB'xN։Gbohӹ4),m :T >د^EHq*R EH"^)"^܋{ ڽhoMKkC.{1nFUhv-^\Ĩm$~!+㓣G%l_bld.$qwK"(LGrRGPh/_a/!*=*C& ×!^5 |mF(7rDNȥlS43@UP\  q^ ~#kkA_ Tn^yw#d)zp[5% !+O5$#Le/pdy9p_xiywc6-,JqĤ<՛o!#$椺Հw9W/K c\zgE nlNK7 6l"ܛQͼakCX1J3"M`}[IDC(fУmUBzx1Mej~3xـZ+U&ޖZ7@y6B: c1.XRdI|6 SKB")N+M|%JU t~x3@XYRg⬁f'b-^h4jB4[ `ֆ%Nz,)wz--7ҫV? Gݏ2$xv.ڵ˪͖nk#,B6Yw3 #%_8W"d9[ħv*˛H{Giṫha z׈O!;,Gϳ)WƑ퉉4&V~(< džX0&.cg%xt#+"sr{Ǟ ,A%bϏeIߤw"}%}ҥI1fml0seqw\^ϓxC<ĆT x& l4l ʇB^ X>dEw^'b^ƧI|.eb>|_f9Wb^[0\װ~7*g5LR+-bNJk"ktXz/ENP Imr :6lgRnO*ZF̭^l9i!:U<6+\Dnjy$n5+^5:nc52;2e ۑ #,l_u[Ȳ-e-Gte-Z9y8@L| c)7Eu[s#L|8^֦ENX٫ehm m!#2n]mmEL-,ed//L!Ø܈鵼۞B۫?}>^ R4RJ)RĔR0Fbf)R4FBf C6EFdcd#ƈ4ld1i44M#H#fi!}gy|ιu;st҂[jۿG;u/^l(RvZ b݀r,b1Z*;a{J#8B t^ %ԿiMW䂿 Fl }[ P ꓣ~O&R.P29Zk' VCY?]ϙ]=}y{߮Swm̗/GA|" #,`nE!;|mFlrub]^p)v8 "rݝ'7߃>+AoF|ItƧ&'aDʖ|OyY3LchlX6j>G|*2[ 7Z;0gK϶2 VJT. qaq3L6r@v^aYlS[1\8~fЫKLȷ;Dmf3|a7<%4'CCffF a#(yy21A3x (Q13%2=z?y h#E/4̗CW WטDיB0`rf= /(-m(8](W_G0?@"G̏yy}1c 28 **g~d^g@Ư̛ȼż>%f~}-66=͖g+ iQ3g35l5[>naAXP+kfVfe[٭ֱuֳZY+r lrlrd[ʶ jgfݬ}>Ū> ˆݍ=ED=lۅEl7ۍ=e{ї>c!h?`Av`?C`au{ vdG7أQ4Ď1h!#4¾Ⱦ74w=?؟++h}}349z}} d_g_G/`NooooI--o/__f߰A-:mmt={S9?D/i+1r\<.qY>>~ M~~t z{D\s\6-&nE.Cos\>p{n3-sܓӢ?r[quT WS,gT,iT!JJNu_| CQq|ƯQMD>zOⓨ >OS*o>o7RY|*J=§iT6gP3,jgS9|o7Q|.y|>_B|_WS~ )/QÛy3U˼L[u)3o孔o(o䛨fw;gNQfwwG"j;죟=s;Rj] Ԙ>A\ p[}\þ;0F ` aߘDЊf'>@=6 T '#' .ԇ:i4.9t-S1T"ʤ 13O'-wʗ~*P<+s@)9(j|Fv@Ycr|(<&S@AFJʢ X+WȽ@rT|@Ε{JrdQ(*MwA"fxƲ,@r, rK.@]7Y.@]s-rP'i9 12.eYB@1P[ 嚼ZwZ.[- ˬewӱgk"K~o/¿'惈d̃rYGV#+:u!g@ \ZyYg7wy|<ŀ2@@04-; "Δ<Γ*ʵX퉖 ޲fɴLY,efb[,^ȃ=Zz--P3d9 e q˩@ !}=?-b-8bXb lqȓ+,)K˃!a0y$ᝄ?' lq$ !:vxgVnjm25_ooD/!-fm |ςbلo%| q w=TuSbNڔH"Z_kdg "7JBAuغIAt :R&+I@OqH ׁҁ9E@@b] 7@or>0ȸ ցݤGi*t胶~f Pӡp}F#'O~]tLJ?$-Tq\f\O);SZ]Rmp+p^}vSQJhYW4&>W碻'IEDŽ:W˶.OzBz ^= 9`~_"xKaq̞K&0-y`X8~z3/ۯt__W{ A׽j~[?l_V@6M>9QZfU#J^3 Bˆn6'_*;)G׫:oP86z@z #ݍaĽ`)ő+]wT7^q;8 kPZwcK1LNzFk>pҡ YgAcЏ&p"X`"DBe2B / e8|١lg/7+866;JCC3X<BO P4齮f9O< `Y̾@Lۍ9";F"-oS@ogȪL>wyާWYJqR1DVo!{SDTXma.'~N@5Bq VA_S1{:> 0t.T[aAUcE]V_Oh=ƾR&b[zǙ9;>0&yv>aXBBK_wwK,Wmߑ9ScG bATedFoʠM~Zm )NvǰC=c&蕖ހIfU21V ʃ{m-?8fM{!D_[&DȠz1 ,qlGDؽ/C8:9S]9X<ށ'?O::1ݞN,xl$-Af\HQ&n=_q-#LC=m'ęw6mA{uvH{cx(wfzgJ}%7f^ԶL|^V2fIJ:t{=!QBs3ЍR}ov6NF6J@m!gu$ٰF$2NeK.!8 lKi;kƃiaSžl[۸~BWzOCښڇζ,g#}Թ}p&̀ I3Jt}z=C˘fWK]it5?=dfJ~>O6JK0.߆%ަ>'xcSɊ6M a %Tn@Tܶsnj:ގOR]vRG̬ x#D$|#*;lùkD+w2tĵ:JpeΆNȮ1t4Cg)2tޕ; m#U'YR]UçQWo6tU ͺ*| 9޷Zpm -̾[pU绣nt5cB;d|WLt<<;6mM -uŮC~:~bPj`3OGESןٱŵߟajwԹ:UѪiaL\yM4Mì8{={!oj[ IG5 V3=ga>ߢTdET>u/Z4LhFGg$zmC- - ZBBmMmBGuR]GKN]Eo4|s0O1'b^31P11Ybl!;A=Mp/Rf%%JNs/SOs?bc茶`l:u0X?5M9~?};~~4_ǿD2u)7Mt{BbPBr_$]| Яp7Dїzi&OJZ>@?`0RAvD;=jR{F;^^^ހrI{[8!QHR !GlqZDljq"yG2Υs7ӛEňB ]NkQ =GhkZGhϠ~%s%џ?m tn~{AYh#22~ޏfe"Y2~#RۀmEkzA^mvv@;==ӎkOiWP^. H^H6 BI4BP.TB]`jYB`3]HnK$%ۑ)t }E $ pmQ0!\&3iZ. Wumn(b/'~> GFW'5HDGP#hKc?jc}I!Sl~l>jb5H--FOǖĖ[6حغ:/ꇙX3H;LvN]buBAH2B' BP!!0 uB,@ ^!( !; uG1=+kB: yjhiOhOwvۦі R!)"&$ <ͱձ㱵8!=(zo8hE&( 8*At)ҍTi|ΐndhRk)0%z|EEқM)+}z|/+J㾣t)_%'z- AG4Q0] N3ثmXTp#%m-5ŴyEѾqiTJ&aE2:6-!?\z2=ʛFg?cI\nm搩ig-ӑ;c練w+R8ֈ~zN]ct,a߫\]Ka=r⻔Xϛzj.,ort`EF~tf,=1L'I?Q6tQtv_e$fkL7Ǥ|1JS8Ks|A2/v5q\kcС_[v|wכ`Vt|Ϻfnjm\$51Da.oJN򊮢cQyiM}m"3Fiдz-6-֖nVWt1[m6'57h?u l063k[9D@ݜZAs굴vvbSk֓r?z$]gvlj}c7Ԟ2ks`K潵W̽7C m틮){kkmzYWۻ}AtD|*_/Gһw\_=b=Λ5h*yV+tO^VVʵrx$sYwtI> @ Y8K|ےgٸ28G' ߒ2q=;dDN?93@e3!=|Ґ AtR: zJסVe Ζܨ:_ujto\BSU UUTcubRYL**nJL)kJ¢NJbXQ4P\2AjxlY\5KzMWTM)ю{& yuq_@>P , 61 y< IU_T_i3ܵW V͉yz8PuTQ4,C᪋Qqjaw4ڋu88Ud.@j -sotcx  v&+SbX7e&qx{x]@EkȝЊhh@7֍FW]wuw9G M`+yc䚘K/B^%^:T4iJ[t%Usr]X4U@jdhUk,Ć˺VkRӅw sN]7xY'Z v415 ej0D #b: Cbq|0xm5'Lcߵ npap=e8WRr~߁uSrMUTɬ??I*Ƀ$ȏzqzjiYyE&K?)/|jRG W>SO 1OM 42B&ː sܐc>AZ| b]7NΒ32CA/.T1 ub!XpRwF7 @eU݌$?\~ ݒ6toޫt qD}>Ϣhݓ>C ni 7ØwŠ]b ay/z1߇}G_EhE3ꭺV}\SzU;Qж+<3=]ؚءK&z9ᒡl"Vx<.suηA&$ 1a^oĖ`uMògDFŲtƍtch6n25ch4e㦪^V!:덍X'o3)U';d-|Tj!ʣ<;)y|! ui!|}/b HJmg#b HS0)""2\H-:.R)K"2aPQJZȿ2SjSL~{yv7oݵg}g}=?ɕmld[!jTV mml[e{wnx^g v A|])q[kYgg]7`6Է|myh#7 muwvBo:V'j$ȕI^GiqG]fZ]Ni62III[ۻO龥ӥmM3si}Ojokj4ڐFIߎv6ٛ&Oִ>od7M?YJ]RV\&͇ 3YÖysy>V E_Z:mtJd;~FEOiboCP8$OZNP?%.&Kg~F:8}Vj]ISNEPrbdkwuXi1K I-Ê)BӅf=+1\<5UzZ$rlz׶Ή.2>K[{ؾYzbS.o%'-V}igB[[* zbAc<-tVcKPEd\Q\?G}yy'W8H{$V{jp nC '4AhTB =9#iͷd<.uT>7_|Y{>~.v2m.hOK3/ʽiqc= zIKjrm \uD >p쵷__{;LyD[x@օ H*O\tԸSX~^{+ kMV MJ -WMCBDžNg {bVg4*H)*%_&4+Fc:? MmAS>3Kg-WZ{ŗO׭6m[._Pt] ,P{7E-[KW(!6CO"o!ՐN|/3|#:H? % r _) | dx{[MOcK.u?׊;֖=$ozHnhFW=$z9[( u;?zvնO$.Ȧ_Mn×c7c¼ɝ|3&t 16L߀)/%|_yﻔ_뙵fÅg@WI+wĕ<{i~%ySIP6\*+)-nW-iXLXUm˝7C_c/ʴ?aFg̭:X/p߂?WM" اh]<:6~IQfd4|ߛca ;vXqlxЀv%'"yz ϋg&ބO;Mdg/̗ſ9vrni'<ǘ+X*~N/.ϚÊ7/~Ov-/PKx=(]PZ|@uGשʋDMq]z-UWxBqn]MطOk&T5"4:E[7ik7cCc]K-⊮;YίMΧ4`{rכڧkaCWuď]_J#]G& Z^?wM$>!>㷛x&3~W.dg3m?w{IefȺtٰFG[9YBZN2SLM._=ll02e3|?k/,WߘĻ W,8̐4f~'lϒѾGOkӍL%dz)>dcI`C>\?kh+3[d;6g:J5uKK|,Æ~i9>J&\2>hqFgXLM|3֍bDNg^l6meSigeS(QLe/ l4YyU7Vplh*ʛ"Vmsd{QUŘlUP^R)Z3'ڗ-[Se{d3f8Ufx ٮWmuA6cinM,MYvffYIZh{bBb{͊&ęĹ\?7&7OP˂ܢ^}ܲ܁"+ʭ̭~dY;I2>)Ybgg|ԩ$JԌ/̮8,6כYBsyM iW`1-^g9x3Z~I}suv^Jvo}'JJf?_'o2Q+&o7=2e~?,6dٜYeU~_е<_/JxWIwJ# יO[k!ym2'#&3&DݓsQ줩l.;lNȯ -dLG!lq.fGXwM0'{:pk?4Bi?/N{i~/ͦl1j׾V^G-kP&,|dLv`gHvP";?PPn4lȾVCeK|DhЭƕ/}+ɞ&6fJ:Yv웨{+'f'>Lo4=&6 4도-Q,$䪷rǯ'T!4YlgmwHN;cNkJsuKdk2ghÉv'9>["#Q(F/nvD(Do.IAÙUwQ4IpnFۊ͎2[d.#tW*]+4ԕ#\vtsvfc^f̲́Ue̘1[7(+El%c2[6)G֏)ԖSY"%j+cfFmFmIRΨ Om+f999999990!Y T *)G͜BS] !ڜwfxtWے6{-mlemҭȶۖ#:cڎm;ߺMi;$bhaOma邝2U%4Piѣm \oc @w"MS?9>㌡sDDDtXu23G,gp]D{N/)&%Gƅ۬g!WYDTCsUAQ f߂f!܆^1ZӴB3lj+)j `-E3o*F"GJo4 Z&#7 }Mp :Xpm5ڍը=2 im@o[sZnzeZ(y6Z)\_*uT>7R$=W+,kߣ蝂VXdagʛ??IQXz<z9+zS +xZ&Y3e[M6aF2 ;?B'UVahо? IkdT xUx]~A1t |G3 ,߆w*.E12;#iqʃShϧ"hz)**Hԯ9]EY'Gbs<^Յ:z5Mr\z~ej>׃_ QNJ2_05*R'(Z;o ~%X dGOOox(XJi]uϰow}%So'/_(:Sy ^WWW) Dgl 7hB]=e/`a+dv@gxb߲lϳl^ۃ/ %r':_frGpbQ]˘7^gjWj_ ~=8'W$}J046yu'zNً~ Jx:Muv|ԯ5qwe| ;MqN|VD_5,2r$pvS E[z$JsDq*ۗY8FKȺ>8&'r'$[G)KlT @ygbsa/*@jAˇ_(^)| I'IYP >&pqk\㧩8|pbj'ˌmk3丮gUѼN+\g QFjkÊ0tFE`xNjљTt2W{}_ Qx2|`Q8G3_ + 3Y<{)ouMr*E3|A׳[oIs/U{Eᇁy`>en&m8VC1]C#GJL}KᝊKtꍋlSMom4 i@- 2(%zV?OUS&̱VjŜO_-Y3L_&cFG'/%1׀m<ޫXsOWse6 MZ$^/z^VVyEbg^\ Բzuδ%*i8t5K;d<#8& Z9P{Eڷh-?kSW8'iWkSR;~ =*c9^{`C@s潂H6Q[U"+nTGeϞr_gjj=V%r,7EQR@Qi3)2_\GD=qɀ쯞:3|\Iu =cng!̄*sJU"3MQ}ke/7zČ'YPccVZGj)ѫt1\UlpxhgW `zCkFsqwҖ*F)W# #?+FQx?5Z9N*)`$|4#>Z35inHmyjew=zu׵X8a^w?+L4/~- ^N.|desEUh>W3ZN>Y4XO>V_l[zvn )d/Bx{7Z}'O#iW :#Pg*՟ _#|Z6ʈ|rɐoi J="'crE 7܃i裊>%dr{f||𞵦#:kCYEGsڭ! ? `fEԞEqZԆ2H~]go }_NAA<&y/o{ } [zHm3jJ@<1eHɨՁ#|Z13 b1X}!̦U{| f|cG1nvs;\ '76K7Lpc݊NE$@'r/p3X'w }0d9_W y @kY'v@rI~xQp5HnUHf!`%4>@z / Cx;^/+0FA_pc52]+N+fEtf|$ʟߣ+ɫd]d#EɢJ+ƍǬy'C~#O *84~ $k"{i^Y ʵa, $5W j4Њ}d.lzJ C1ω6MCuŮ?^ް-ik8ض7=ih͵zM׌3qZ{ 70 xxHmxb0 \W⬸j9ĭC;Ms_A+w|*W>:G+J$m+*1æh_AT#&U3k{ N.Wce;S;1'60.3v{u~'|z= D䧱-6+1a+}|xAZ|+ɽY(%"Y`8jڤe<6p+}o~=:wFg }ɇ˘6:$+,HFdFF4W,slo顮xu7OQ+yZ'gP; "Y ,؅]'PRѼ:uXh}xsg]c)sb8MuXޅ`}[RQgh1Z|K5`L%0Xn@dw 5zAYY ?~5/U2 I kA0[{'!K;S;rC_@ ?ڡYH͏*OyϷCd&I#"eb蔇u~HLɜSqc)/U~ojȍ#d7}NQ>fBf0/ >!>E| g j$Gg1yC1(P 7"9$,Cfi#GrazgLp0̤̥i]0!qx.za{pvWՎAގv{-5{pfg«z:ogKkER[.|63jS[vhw:sߥhq,b4n6,M"~l1* `d-=؜J7k 1"x~= U=6Xo?VkYEu~ { CXcX,HN3K3BR%,w's:՝Nw[hdd4u: raykJ[Y7q?q>h❺0+J,$W v2_0y/b$lsl0G_E~=U>Oo%w}ӈ=@3՚8VLj н{4Jez/ki*k+y`/pS#{³ft4Gr=TB5C@jǿ[1~I9~E܍Q`EY p57W?%`%VoFfDjDbT؄Z[+|~|,7";|Z _f*XF$YM$aݍZmU\^v}kb֊|}ξ_Z=8m/F2;s6v4]Y.#+zCmQpS;oi6zTWwƫ2F':Ux}\h%M ע{bybqZ+|7XOl~ %}xK3:P{j{5?16|F"9`;h yk;h&l _ٻ7jtv{ ǁߢ ap=o%OAsOvjO +O(id48QkQ q,_d4"~Y۬H~QR9ẋnft3 X\v*1$Cѧ:q;)& yKlV6 hc~r';k-98.F(Oܝ~{=qde&|˴[ƛ[~Z}4&6~\s)fڽqTe)3G~MigrMY_e&aLojIq5}1!;l"_,.lref08\ .WOv~Sn1rtu=w՘=QԁGkƜ}ۄ;L8M=r/) ).Br /30i4rt3L?3Tafk&3XdLD_K0X-#5/Yv7W.2^_dl_/uW2Жe?); e$k'%]/}" ⿚p}!ZGBCjTkMen2d32Jjܬ6Fa^7!sܜ6 漜:M(&lʵMEr]t oFPH\%uї/VV_|6rmU)E]FwȯD5g;)FN\t/DnNkoP>C.K^*"g9+"{\dw9"kigMM߸tqyťEmC."︈v9BDs9"[."IDN"rE=."FDefY{ɈԻ|"rEC."߹9"{]d@4缋'..M."6"2g#mDb!H,mDbXF$l7>S'9eΚF2b6"LXH,F$F$V#˱%lDb6"<eX{XX͘62XG͘X'XgB+\\ԞƊ\\tuqfgGt*"%."]Dz\"R"ғrE\D"E~."_rEDEEE˘.2M t"3ET9-3A/٠)1}$^f_M kf%[kCM- tBJ7۔x 3c2O7#YoZKvCIt8ґTKG-e'fwiKytR4G U Tzp44 `6́p,j#,`%w*X } <  x^ vNxvg9쁽H"\+rChB)h: G1hJDhZ $@(eFk:MmE?ݨ@:)t5˨ ]E7-tG3ԃ^wh Q%CQ)%J ?o JҢFR(=ʀ2)2,(kʎr\(W* d~nͦ)ZeaNkӣh=ڀ6ymCδ;=@:CHZ;(9ԡ:] ,`x0,Db0q.\X{c9pJ^H)p#d`ppO򸷪j0 ^0>{ {0P½qO*7Ux^jq϶ ܻ@p'½|h6{ (>=| p hC`=0B#g L408nL'f8)^XK `3XL68AEh`f=J@ %$RQ*pB ӵe18e pr;N\>[Ob0'p),qWo5'rũ\&d?M`"Nh9) pR8$S{PLmSqOs`r3|n0t]8߷@]s~DGFOS^ >ޢ`& @0 0\|̅ ِI A)* bV@*&e$Xibb@:,h[1K0A ȠL)SIS@iY-e )GPΔ3ȥPc@&,cBR*˨$* pqBn-qrbL,R`P$JL,XVc*ZX aJ@)&Ǵ 4C36Fښ0`3&n=iOPI{` &lTm`v`COHǬ´?PC>XWµp ã Gؗϐ>Ch4,@`BQ$ERPJGh;څ8KhtDgE k&@G)6EQ|)E)S% ĥT8h-JӴ4-O+*=6h+ڎv]xzOSt8M'DXflb3Hl!BW11(1181&F F$F"F&F!F%F#F'FR FF4Ii112q q*qq:&6HQ33z333g gLb1)11911151 1-11=11#1131 1bWb7bwbbxL 쫃eBq8;DLhLhBhJh !N#N' Zf$a3M،!l63 لf"aO؜CLMhla;ټK̦!d t]@`;@F+ BW651hfw4-i[ڑC{^/lXHr*z!!Iȼy78/^A,9PixD-K*/]B?ii=iWR|B"Q{Ғ̯%RRR)5',ӯ`}@{(@a?Qu4ܫ4 V-f|OK B8ۿ6O.mn2C(= = Q2}g@f+ŕw.$|oJ zA3˶|U퇤k5O?wl;r4y *vTpb9q߹c} YȓZ0|:#>3}+a Uc,ˈQh$d+!Q)%b8DJ `O~'p A<)Qh~G8*f=* K6\bM12\gW-p%' 7Bɱ'ከaɱq 1)aIaTĄ/&Lt`JnIj0#Y,%p8[bMu|7怎ŸyMιyjYK٧|n7ت]_2{î~gtF?Vos>mK/՚h2JOTP+ݠ:Έe:QsxV^K!95Vol/gnm8>;y*wF2zb^˻{"vkίP9ߞ{bu3YϾWkqb+>v}oeS5қSoąi2\fEth^(͕{c.յcZ+Ӎ:2[7g^fQ롅ح+Е3 j +5WԨkdFhKro:sD/./};Z3$Jb, 0 ą rgDpxX4X3f±df .ggۜ[e&_ERS:''Sn 9+DND؈r<"npS#`ۖMJ<%ۢ*{n:Ϛts- aW&C{.bYWE:Lx&/:)MxiJ0Uó,7*?b;߉nzJzIg /Dmam/2)Y Ɏ>^ +͹nZkF刊c=wPNC#Q]=ٿqa[Kr 3ҷxgOYvlZšUgyjIc.[nQNei~7J٥;J#Eg7>dQd}ꖎFlO-tdn/%códxP=6xO͎JN W:X% =?kVOǀUG MN?ѬsDne=u#'Ƿ-A^=^p=q4u/s_zVd-}ΝAԃ#g{޺NswxVi$;RgSjɢ:΁3U"2_tpt|l楈L;r#p'j6b7',qMs$gLP 5t%wVH{li_l{,}=G 5 *[Bg&׬.9j =[\|dTO=gv)3 pec_ͫ.?Vdٟ_ j ųW #>2~Ge+DX|Ɂ NbhĀ6+q) q~DMDѸų`ӵygIYfyn4%WZZo7u5\JvaiGӖmw*'o̿ql`벓Q^F.;'yru턚;Lw7m24 #3"(ΚlWG؝Q^wn”U(n^Xe2lԙ58 phعhZkZjN_ jTɗdHfL-x< >Lfcx|ZUKpF%ikZ[1Fc\=x:d |RQIqQTo=k2ct i53\"&_-T 7uy}{)v*:Ȉ[rxҾީ빮 yS^嗎![F>|MTvg/; s^te>ֻw+kafAU]uّ}F XM'ei&hE 0ޛl;6߼aΌ^\07YtQ{}T}һF1Y1Lv8øc}߮[ߍkH)%2RRe=[I8͛6V}YhI%9o?!@ig8^ǘKteJlv PWYts#aQG]iaglt%xۛ 4O􆗾~ѧWcz"OؠVdGZ`0ړYp|@X+U,}9[b`jv6yO8֮eT bL}Ȱr5r'n)5D^[seT1Kpi2hYp6`ceXLfޟ8eDK]gNM om˓dݪz.eZsޒ}^L7wyLPaq $Dr). rkdkp)bTȿԔĘ0~|?#`"].H/L},|#'S$i[pUpHrM̉2Xm1eRX]_WceQuee)%hoaޜ]jKS* f_y{u=Es{esdmdhk[i~/{V/-t60ti\-gj%uEŧOm?;Wd uRxP.zg.mfExWY!iGC*<[.\\Mwm5|o endstream endobj 10875 0 obj [ 0[ 750] 3[ 278] 11[ 333 333] 15[ 278 333 278] 19[ 556 556 556 556] 24[ 556 556] 29[ 278] 36[ 667] 39[ 722 667 611] 44[ 278] 48[ 833 722 778 667] 54[ 667 611 722] 58[ 944] 68[ 556 556 500 556 556 278 556 556 222] 79[ 222 833 556 556 556] 85[ 333 500 278 556 500 722] 92[ 500] 507[ 668] ] endobj 10876 0 obj [ 278 0 0 0 0 0 0 0 333 333 0 0 278 333 278 0 556 556 556 556 0 556 556 0 0 0 278 0 0 0 0 0 0 667 0 0 722 667 611 0 0 278 0 0 0 833 722 778 667 0 0 667 611 722 0 944 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 556 556 222 0 0 222 833 556 556 556 0 333 500 278 556 500 722 0 500] endobj 10877 0 obj <> stream x]Pn0+"p(TDЇJ^b[ARhv;sjޣQ*aqѫNRJAHv_>3C2/ܩQÓdoVjW{ܯAN腙W6#dQvێ^S4 õ0 I@}!?>3˳h*4qUBUB;Ы"ŗSN۽;a[ZZƄ!Txۿ&u endstream endobj 10878 0 obj <> stream x \SWsoF$!a $l@D@QTpQkWֶVjje5ĥXֶvim;NnMZ;ݦ*}}~{n`W4Lf iieyE-P[Y>ysT/x@Q?ӧ> ~5~jǭv{<0P&o[ k[kY2z˖ڽ5#j&G/<;( ʸۗtxן|P1@W ;x'L/^ zL_g,=Kcw`G8?m3h|>Y `rFٝ~c.3WUf,ٹh~ \;=ԃ}ُF m=nhn <8koWz*A XO!`{Uw~%RKx3\rI!MW*"$hBlF_GA%2(t_&pa_2ѳp ~ SV%dP;$~I=2H- `%pGG87!2 ;/uljKxchb{̯ր]kg0>=a8 kn:#+O' P~~S_a8 0pa8 0pa8 0 bX{[, Sc@;@1-aӠ@;aaKj8PNX'fp*ZNJIlJGoeҡJF0F$No> 8.d@x\)T@%gL02=Kb6t6.dujv  v@jc=i!];}`5Wr!CFqal)9Z8~1SQ{f\A<&9[689g͜1P?uJI5*+&;ftɨ#ܜL3ݑb7uZJDANpd.Guu.O;Q>HjhM*fZ҇%SG%}%>+ Moh G=+뤸%%HMJ {+Ulժ U9ЭRcT@e2)"dV Zo -VI (-)p;gu=zsk۱ZrKw Q:c3y~ QQp;Ɓܩw~yGF<ʇ8`&̏=\ヹnhZ[BIՑmT>Ume ́s9h}׉o 9uTTݚ[ cb6) -3(98Ep^:r4EvB\rWږy )my -ԀhgɡdۥJwj؎))G匶*Uxq =N3Z>,)w !`BtNY":ڒښJtԖ}lר4Pr~ŠiT`SkD鬎dN\Igl@1@շq[K[m"vK(ّ0}mL(dDkMkyp`Vjگ[K w7GUîWm_=wmϷmhކfZGSXƖsb6S`5teM[v5&Lh+oNǼv+yFLDK-;}\= $]tDǠG >P'#Od^&>Oy ׶FJe((fBP9Ԏr/2+> IkOC+I{OsK>Kok*L-~sȥ ;y?F9k:Zm# b[P[URX'PխV7i);PNm]FֵimRP9/Pbߠ4LZHQy:hmt4^f>n2|ITp&aNVPzAq/I3:/. {jk):UbWy'x3 =8wi(h5S}5j"Q|l߱"uPqwLDdžֵ*3ܹ9jzh+D%t+᧠͚#+hs#~ r?'|GyRꟄo _sgO |B8hS">ԇX5~EGxm*$AxW #B+eK/'ng*Y3 { O$#|JG@|B8hDc> G!> ' +%4V"o$AMNx;5*oWR /^$#@x39g~O刽T)ѓ'= DMExIMPӏP; F[ AB76@Bx~Gƒw  &LELhDL!"wPTdnR*y3&p#`B=z~Z5ԥ?PɫU+ Tr `| `|+`LĥYKk3SETB*ro 2))O<qI)AnQBٌ (!K0! 0 AMPhBTP˧Zᛁ ʗ(_|>{(6[(oⴼ:c(Bٍ Qq*nCa Wq&,',#t& >B0@'qEQRyL`^Q˹&FY00PGL%L"  UJB!JR6L3 D0nEA9r'(ߡ|OoP>E'(|!8P^@y/(FyYgPFًJ#8;PlCيr+}lpᔠBl!d2|Aն6i:bgdaV%]$"%1%č[:)"j:cW !3loJQE'N}ɶؖc^̉Y#bxZbmzFUffFܨa>+kUJ0keRW21'V;*ǭF&gxnnrk{k3첀_} >+[09?8k֯rkmZXcF(ou^ҵdR7^Pf/A.Zs.,K, -Ӆm`Hj-6Gώ"͛sfDm];m ã2x>/piK`,?1!t Њ{@DC S&먦?X]POER]x^M9Ohxe+*^Mxރa?|^w7[Xp'9ŒTʼ#~&*h p1gin{$;؂i>CChp>yo X-߉bxv޻ ų<6Py)/({rգ}udOez{zX[1Զb]>09Ҝ_J3%|:4 _t=~-|PsSk?;&B8ZIdxP͔L4Lb"Qr hN4,~ibf,oZT6(/q ǎ9Μ}%}nkg %W{! I|P8<ˆ WqaaA0H$]QR&ML|T/]X:)_NSJ\tb: :Gqf\QIi/ iMF=)9OyiûJZJ+jA=ӖONHlZ&;z?x̩:Z0Kr.s0W:ͧ 5 kaSiH3GZcr?bM% ٳ z Xw$•{gϢh~R-CGݭN-CLi.WHFern8*ĦM %5ʴnOQBîRc2 '#lk/&N-S jQT{ q==n#MݞNHP^K/[{OǗaRPd"jen^o x{IcKI-ݿVtl#55PT\&InYGp8 FeŮ :WM =*{Xg{fs^͸5זT'FO#Sŕ'fedd6m(ҫ (2oYOBWr'NR;pe_A &1Y3kTpm5zGFIc~'Ics[/hW,kh+g| mE>Z@BM&n%ӈ lFWŚnoy J!T1Jf~U wڹuU jZ&Z7ёkJO56]2xxzeMv%۲4뾅?}Dj=Df,Yd!NI5sx)c,,|30p9ϑ=isyK&?ͽ'\b_ב/컣awܰtG 6kTE5Z69Jl܁DEOXB!6MV|i Ҟʇ[mD2;;K-yFlCTZzeZ.ŗhR 2\6-ڱkewٲ̚=*s͖zB9lVM[Po&' % E| 𮛱[npmii%]̋'U?T82)^x){R?Id@܃z1Yjgn琍x|ҡDG)24RԎn[2G99'9ɶT N>eĭqz[৛מ\a*ىţYNnqˤVSlIec_lS+|V O ^x)|8Î:LU܆thw[Lj Lٍaw1<Ӥh #[[7$XH@]$*[2 PF~2 lZ*iUzBA}$.{& 9ۑ8Y]VMUAnOo2/vokD1Ñ뵑[wY)ޯF>yupU b'҄g$({|1>HhLU-+.q'*6O+\B"1QVN)_ZqqύddhbC APa n1RH}o .A%Cʐ=e ?qIPvnjP$Ic`}ЇȀ -qhٍi˲hqcd^N̢QO&Χ噼^lNmKhTyҋ5j.?M&~IϯZyEJfC` 7_:]P@+PC8oau0~#>s yrHg|VC,5ϙBbSRb EU]Sg0iSF9-V H%GD=:]"kG `;Î ʣo@<m`՘ s 2=i=i ][>(8-W7%G1ڌؘLka4&o8h*t rYYt3C%6 2IwxT#3׻ݙX&dOz'Q5ӄn@UrLUfh1dWxZۈP>JaJ5 PI':~<@XoZ-~pc]耽nu[ɫ9 uϚzסM̞r׏;ܿ||9w8˪ϻѓD\ɐ't.j `)z/ 3.| tR>A;=iG&?{.o Ueu.+'kx`P*ZFJ笚[ђդG^#/ FM1dv n fzxgQwSdC:jt*ӿA;R3do&Ȋ\.WZuѶVliBf/1b8|ZXnr'7{073 *ej֩p4,5raR(n7dDuuOk.,<_K\%Rekj`WY6^q{zAz?o#ArwFql$c{XO3"j2J~d_L6 +{~fDYd%gtE8}B\7‡;&,i WLa#.[Wٵ34>J.QZ:jHϝ:o)y\dLIKd'S3SM٥|w8҆Ygyb̶#ɚIN$8n_vihPVACd wo>g>%)^6w?!veT%^_?ewY5{)Nee'~]粇i`i3Fj7|~0s̕E6Z= wA.{sd>G#Ďqs+>|<}|y82dugMrjNՃϴCQ8*|nRzUguO5Vc2k&G3kF6f791E(f:&zKJbKWxl 3>V{IH#:>w'na\phTDW$dTf_c3& E-XR?bdڔܼwG*țoV\Ţ#/z).;%=( qGR7ZLk?)7irۉ6lFeC]d0 ;3Ol(b0cKw{qWx\>GwЍFSaqȁa 7ё8E6뢮NJ2㮔lE2&}*L5{Vx™ ccBOz*^acq Ri*fl #Tľ51S)bE;:JHQg|v3,Ә2m}KOkKui)iF&⛬/Fo5YgOS'7rpkYsfIYg: )yqWUnVu~K-Ö %Y1c%WÊedbB'Y $dyNcZ? dC` ,|Uve2֭:uSTխnYvlW ]B%zeaGPtnN~vd]7m]ᝑkkZ6/ :iKJb7YqKAR]Gl\.kӖ59) WRZBj#{ǡݿJ[\+Y{,HVwē̟ ~~DB@/:5OM4imQط}qndzo9v锥K~ *Z{e΂w+bZ1|Sϲek2F^'ms%{쾱G&+<ܩ+ a{:=)#Ηk3nA=qO ~ɑ\ C*]ܡQ_DvspUbrePye?6ZAߋ3&wvkwݒlϷkF+ca: ?*i))ژʾnhYlL6sK ЦիkGK˯TmEmۋm)Ynհc;rrUO<55'DAhW g훯0u.nYI/>v\ܪZ6 u.c#*~|[omn,GykS.>*96&)vEV>16W7|Am텈X#>uTbcޜt pd''CIM~eN.;ɟM3Yz\<]<L:}dl+.cymʢZҊ}Ei7dnȊ0j4':z>2}U6++RIX$4!e[ 6kl&I/J4RAlybYjj1V{B1Խn8Nt6Vlʑ=N Seն[]u'mUt5뱸U- !o\M?+ͬ4SoX`U1rܘ|R܂.[ny Ge]Zgz%~?X|獹[Dz6ߐ-L&ڶdeU$9tm˷x&o{usִt oX7xSq.U͙{|qGɘ7ᦺ붺sJ/ݔT)^ܕQƃx>,4>R}Bh:cq˯NYOʳ4; s[i=+,|NQuXmJJ饵+6`658w;|k*:]-I3iOB1$X{P~{W=Xw5y\^V︱"8uwʲͫQz|Խ 0 Ϗ1g1)fmVUȐuvjp.>iN(^\,bL ,d<}j5/g]9:sK/5R : NFlV'ŦlVBX}\1*)W*3b#?U78:Xlb\W$FF HMu3j1Љv#>mgjk8h*FO|q!ǿ8@%g5e7XY~cת<1wT=xKzdo݈-`yp τ9d5D\bb$W}F4Hh5>kFu\}k9gP-yB=gf̫DA#c@CҐvuXSf͖{3kűx"I\Ѵ<'=?MݡI~tάѵ.VdK)ɚڕ'}jd0c,c3% MU4Ϳ}NL SrnVfodO'Ո1}v˶W n$v&Ctlb3'rYV[%YĚmy*.-^aFũ|-}"o-tNaЂKތ,T*D~6$J)y]k|6X63w)>9w F%#ܭy$VFHlVW5?x:),צ"w>j)>-T|82 #D5Wd[`|6GlJfny9AY1ɂURl^giG elFS٦Z-B|ZyzgӈSX mTiF͑_iV_jZvqE L ,Z_3҅S6%gm=V#ұ6O_R׵;ۅPa_%*}'^Ug9!evrℐDڪeUvٶi Ww_ˬ*f)|nn3|~nxz/f.dO + h ̖y$}B|XTJj;0zx3+O|VْEťJ>>`1z+]ƺ,[[SVwyanq|b@+-3̟ݑ4W!.OMwDKOfO˞ސlN |w?f֦75k^9_3.9j2kKҊIV5$;TZd+Qp[:axkvY͖RSj3Lwuq)YtԢY*ް%IV=qF-ɛ\n.dhV7%;FN,vp 2H{813"Eś3]˂^\..s:_xh'w/w$~ʤ!_OJHGF.,K$SKXzFIOHS ]J)+S%zjzs$ Br/> |bzB-JO][d]RZJKi)-RZJKi)-RZJKi)-lL 1Jt"%0S~X#l+@pThQy8-Ox3$[~UYmN3D7Iz|XñHQb#$nHU~ G+7=G͐?*5FxdXIZSA#PK -Q^>!_ < n\ gdd@@&32&BB# g#i E(jf}fXQx"y[G~1 |+ dV!cwaG40=pLU"dWJ`|uy8&N=ph4su u0Q~Xyrew* H6].bgYԣN,7vG50Q~8&OW&2A.s2!~ww1a;y;!Q"pY9[a.Dp? p8A,iba@9#]z9GؤG CG Q&pE_G!l$tq&f!=t3(lFly2@4g: &`4̷L4dr&s4d~dNCZPbFɯ39"2"{@pT( +H,NO7Vy6{XOLfɀ~FS@SG~ȱN9p 2eVl7@clFFH~G̊Q-6B旁v``=1^N?|8OΊa#?B P{V"E+AQ")5j^Gk/V:ռ {Լ@7IU&P_frxQ[Hf iF|پ<%zߩyhj^$.üѨ;ռd5'j@y#;Լօ2\㈚A5o'|)1k U;+yJ^W;+yJ^W;+yJ^W;+yJ^D%RK:I 'd~GqlFI'r=w֒.$lC^~bWmxoC!`+jG.كN YnP);f넄FΏXAH WLAnhäRѭjHd p.Uk;JAkWyNKfH) 9]b}=(*2O>Ewڊ^X@LnmF~~CLEzm 3bVp]!|43n.a?à:f#o3ʸso`Jl% Qtܫը* FH3J zs 4i\W^S"p{Wr5RD~G+NӾиuxܫz_6f zPfh!Y٨mm{|?R" TlqBs˵(eVl`޻XjE~_H-9p ܷx,*%΁ENG=mZדVmvGVn8}8Z5ۂ6l ]+"[a>δG6EVG=f(B+6RzV=WHv-HΔ:-+gZfD̼?4yg͟Ts"*@ +%?=olscjv(ڰPV>V}dRXlmK{z=ڮ.i[m`}sWNs@j{[{ ;ۥήpCj{{Z;{HoF˞V@KmKtu]FZƂDak[{3 yoD}"+"&b#zY 0!gOyi{-:Z[koSZng5]kHV_㝰'3 ϸq$VE<č=ggfU雅F ٠6]hb/Ff/`Zb5jbE[PKaHtJCEճ}޳z()df!v jpN'YA N6hfgY#nr:G}}?D<7sYYWWߠa.FN.N +V\; s,V933s_ktc0b Fj0_X`\p,\KUxbP58{,`Ny{:^$?ձ:b[,L}^]е?ٷA6s D͆ssl N%|V&qM{c ص({lf<>'Cn3o6gfĝ_)kgA&hYYͤ"ĭcRf2prnĢ ?);3,Zb &1̍}ys%PB0RB V,J`3g o)GI\̠J<`ʝ` ų,-v.^`KW0f4>Ps*]lxܨcKhiF6,rYE P\AE2̣bQRu(DoҦ s'gfs~uI\dXZ::47g=kQ4%-ƣY<ʹ۹WgDt9d etOԨbӎΊ+)G~N*0?öHF%uxZ&1Ī:aZ̑,s_*[BsXlIO l@lXTTgz%ֲijC̼#|QE)avyLqksuYt͒~YR2/.ݱgs54YY6\ƶ?xjSJsLy-{im4irfWM6eHe5-|٪pXݞ/D%=y+^j)BMOo"'_c?Noju{l6,o8cwM GE$Qm#|zOA#w7={Z;+кamDvL']0Wx?;gM?G5|WQ=Zlc||g>|hC,E*q|||h(iEZ4|H3K6cbxS|$vCV4Z6oFVvYA[,cOǞ_}=[]- /|o|.|]_xsv6a ߥJNǐ@,<U뫢M]mXJK#͚;}JL/h_fhڡ*aYQN~ɶV~E;o.B[gZ_@ؔպx{E-z:液km]z96hc72O89o漅}y'061o_0?Ղ .(ZnYBߢE勢\ ]/>~$1|T8 ܩu}^|T뛺YuwlΨ#ZuM}4+>>>گ4ߙϯ-T5&s<6iX37d,sp>9C~u'c ŕ{NXE*mce<Q*] L(ZTwmm5^A˯mtkتvuWs%jԪ[5h+յEwgU_Ry\v3w?]/i~_iTǜO{y-گdlʏ I%^v:f[GFeɐTS]SS5עb 2wSjT9}S%w,1#}j= l#'Ԟ|#g:bnO=ֱٛDuUtgJyWiҭcexgς(yQ010C8oOYbu] ] pHd'r/JpEvb+Y蓻 :OBeK7ٺG\eٲ́amlhcCb@"϶E^Rw>:x@d'9ã(i<"7i+'! F8 h<TX$ڧ ]^qіG߈vdcdDl?'_n#W~%SNk{9[73?/ȵ< ?|A?Cg" ̐+߲Q~; oagdnz[oaF5@eɹޢb{kxNW_{lQ?xxI<.u~ `5<OS4}(`?PCpʡ*ZA qY&N(&Y# 88 ? #53O_8X-,N <;e$C9T@%T8 g|:Cƒp$5F% g!0FȚ1<z&,y>,#Pn/y9+`W>$=:y^w䵇[yw%Q%Q?٤GIxGI>XGIAy$;Xt8)+BPO F0"?{F!ΐigȴ3d2 Y12&BDȘYM%&od5^Kx/Y%kd5^ƋdŹyq͋[WE3~ϠT?:(AFPыTfIhG%X{_eh-WY.XYmL}֘>ɻ_-T{ 1u:`tN:X'I뤃u:zVVPǨc1j=E͞fOQSl5[EVQU,~3ێITNORua Ŕ:z%먃`tv:X;Nk`tv:*jZQ{c1j5`}s9XJk-Zb}sc1_MWS9?EW:X?N'U#.m-X֮q+?>|o!^S 1Jf굲wn^utJ|Ͻ= 6|+re-W~Õ3]ʜ̞pʑi gߠ\zznad/8fC0̅y0SzY^1^19;}ʝ;lsl:6}}BUcfd,2\FrY.#ed3cvby;Nw:tp;ٛ;o/qwfrg&wfrg&wfrg&wfrg&wfrgfΡ;>SHiSV `4 cD ;vp)RӐmg(~\ytB[rqK7A znMp3<@mp;w]0~ w=00#`$,k-&  o~o;ޅ`+ G>M(Rk)Ֆ| `7He/>(OpH/'M ag587Mtm,ȖmKֆR-lxރ9_.^I0׳oE+dmRG:U)3tq-2ou\wy߇sXmy-5y< 6HdHTCCdB+h m2pCdC\'3dƟk+c;?  I!|s`'|_.Pi/>(dY$,b 1Kf~u ?_5'$0%0%0%0%0%0%0%0%0%0%0%0%l'>!|>g C1/K/2AZ&:DFb[h! EmR6'(jruɔHU?2n~/uڭ<-˵{.m( eTɎώŸ:^Jy< OӰ,`=<x~%x^M*luxބ#iI2҈6oj dvO)YüՉ9WJWVq_0Y֤΄0BX- b3 6 b3 6 b3 6 b3 6 b3 6 b3 6 b3 6 b3Cd}( 0FB5na?y*5GYĕľjx%hPVbJ[}+{ { {IjܑGaV`\%q0U¸JW * \͏.%dPq~HjIuӌ73mgL+ɮ0ft2ZFWjqƅ3.q g\8θpƅ3.q g\8θpƅ3.q g\8θpƅ3.q g\8BZEZEZEZċď"'ŷ7ߡN:W ^D 15&ԘPÉNp5D 'j8QÉNp5D 'j8QÉNp5D 'j8QÉNp5D 15&ԘPcjL@ H"D܍x)%‡>FχhS6e萩ήO!He_Fe_Fe_8G(ceq12QF@ FSEg<79n̆9Źn)s2ۗR(eVc8*`n37ڙ̍vF;shgn37ڙ̋vE;yμhg^3/f@*ؙ,O jƫ͎nvz e[EVQUnc7 n0v`c7 n0v`c7 n0v`c7 n0v`cWsxy+QxG":*zr>܈Fk6JI%R7hS6Xx[؉xKS[|@<%SB<%SB<%¦-c j+և9RFӢW 96Vm5w^Ih:Npt)0i0fL!\a,Ec3&bϏԯ-Rm!w6ym,h!Qa<-Wh_gn֞,\˽"̩AE*ri<9- pE&UXqB\BeCS2 b „XaB0!7P@} 7P@} 7P@} 7P@} 7P@} 7P@} 7maCa 0 `L L0f, x<@5P@]u 5P@]u ߐ2\׊ڵ]a1ѸLs_[L.ʼn"\&2o>C)>kk1Tq*8pZ*gn( z=Mka~6r%T\RqQ*.JE(E(ZG:QuhE(ZG:QuhE(ZG:Qub:ZLjuF:* LUd:f`=<5>?|~Ç>?|~Ç>?|~Ç>QPGAuQPGAU5Q uTCPG5Q uTCPG5Q uTCPG5Q uTCP3C~8!?qȏC~8!?qȏC~8!׳+77^qKof)0i0fN:1ĨN:1ĨnW\oĨEDkF [Uȿ.+UӼ^^Y}(ڈ(B+_ E\'QjusW7sw7Fn$z'z|C(BʇP>!|C(BʇP>!|C(BʇP>!}d_=WOՓ}d_=WOL#4L#4L#4L#4L#4L#4L#4L#4L#4L#4L#4Lm4J6o oҸtFE[/zYKOq(N7s{60Ni#;ؗd]@5MzՋ^t]EW/zՋ^t]EW/zՋ^t]EW/zɩzr'ɩzr'=t{@=At{݃D =At{݃D =At{݃D{4A>!.m'y\oiMk|JQݚ.k=k_kwDWIS7Qa;/~`gJy}h9NV셀hYNq_OCOk$k#^g㽡$4ӦʒY0ϨiiTҊ`<α5{wҞɞMᑑw.O>x)ĔVƱ!8JNoҚ&!m\ jϔ%+x͸W`3%xː5xtUj5VQTC#ڈGPjPSGM%uQRGӨF0*QkP A݋O^>+>^j]&z[@ &2wq׏ܥ#x{swe$@^zCH7#;pG w+wUr7 2BdRD}OdQ>Eɢ Y$+dD0l0Ȇzl'ȄCGQtWuwRN#^u%o{Wu_ft _ Y%ΤZ4Hš ML'$$}*zg^gsOuWss<+xBphVkaڈ0` 'Px骙GG+yj>QsIF0WWAdk9rwxR>E~>gqe'ha{I?{>_c1T 9U#jT-Ch`8k_¹+`%׭^or, JU; 0r< u*' '* xCy?Q'Y\^l"ao"2VX雈: N``' vsBzHlQlK.dQe\5z6X%㌞#\=N^`C~-S ??,b Wg88^rr#_=ǣc9=׼n8h - H^BNL cDw]; g^wbW v6]<2[Kqvv!-j< ij:oN n >;/ u+|+<[0JeYżQw*_jX vdH6WO5Tv=T.begoo@2V N s~|]@S{:G$'= ~/T^σЇi*Fcoma  a(}\9",(;0GUç^uց 6 D,"U*(h>opܿk֩GI(>QaJy'Eڍڭ?cٍٕمم캛Yf,`Ǽώ9.Y..({~oOīBFRHƪtK.V[ofTvssk}OJxs'܉ Q!){N\vf.{zߴ@f»fVjYY$ĘNfNFѵ00ZFTˈjM ia4d-V 6.頷N8J*CX=+^ɼ-VdBbVUy3ha3jU73f]e3#lUX +Wa*\p=5c*[un֭bװM5hKWBC+}|v:(27 ƪVx+yFUKϷFp+y[F[R^7Vro94w[QEmFQyRt\ [nqί|1qBchX ՂjAsZX-hmƘ>@素sZ9-hc4qF{][Enx7_c׀!iO bNl؉ a6< ;AzĆ ذ6`à 6l 6da6l VjXKETq`",,Q"X!"X!"2csm>ϠvNإoEjX_ބ\(Kzz4~@:R}`m[gTx 3"76a#6a#S 8˱;;׊kbZ1{-^ 9s>+wXxI gi`?sZ1F\T>>j||5>_O\|.~>?ϒ!8XI%^ z^"CSʔ}q:}ݷ} =wiGoUn{1EfҢ1QkՌ=vh{9%q?-mcEɝ&eZu&slCK2d'o%OVoަ?Skuv4CoTSzЪZ$K{3:D~'S=5̤' ׿ ] xI lCR!He Ur<1^%x|X@X-" t|`@ ']K\E,qK\Ep;\Ep;\ .k̆9,<C̅Ex ^Ejk1K`),:Uv"N&ک+ai%%8qݓD4ݗIؠ KOI~8JlUOiLāg`̆9Ѷ:VGh[mmuѶ:VGh[mmuѶ:V/?^!(#(r' Ca//a?XP_D^e>^}s=x%A)|ؽ;y >`nޯ, 8C R!<va t{5< bx ֨-"j^HNcq9W;II+8^|(.#Ypy_drt2x)n ~7xra!,kK`),=nΩ1p{TKwٙUоs3\n)R\ u _dIfPٕAf$uUg<;D&23ɖ1Ύ"[-Î#(1Nn쿇eOv*mk"Me=Z6ي \yw?VX])t/ CR.q6A}M)XT}ɝjS-20 4̀ ̂0GdRgRgRgRgRgRgRgR{gRo3g!4])HEz,E63lq >qJ{=/!m|fm]4m-j`/Bɼ_#.֯ñ="+RRV3H5.=4҃K@lzRqi2k,Ne:-i)i.#DQ48>ikqDv=mE:;;;;;;};.]Y9ߘNrQrލ8sه2R_ow 2.XQrGoϷo'ZjY8"#=q#i) E#jQG!NA3bwߩe'Gd6V2O_ΎE`aT4H&>so=JW&=0Q-8P¹;[2#`Dcֳ:dWv9: ĸ"+2i8LcmW*O_`vT"a߭cNAmsfZig>!hO#O LۘATDI!xtA1I4zt8>k ":߻o=T&NG1x4w'qFsD{Meu53==SɨeS{g|I' i"<ئ.u\yutwi7d|I'd|kA.ag30 fs4z;#F-Xy;~//o6ussFCfTZAY[bֈ1^&!qMm'L7yqǗԳFxz|U|Pĸ {ZJgܒjSZ/T \DdS8}wدuR]\};QuG եGhYG˱εڝkMq¾ ޠ&Yk`G7-+饋T2f.z=Nq.QɈ:dxY)Աwi.]%av31xD?NlvIJaO'Qt^[Lz@'ӫvLqG1-A9^Ri"Vݫ촲W~o=8muw/;+v>vzHr 9/5jUgz |6Vz?1O/8ܶ;j?m:J^9?Cy=i-zk"vћqy4L 3 -s00Ph3s#x=>RK3>Ph=w1~{=φYы1\tHAX|wop&0 fܿ/SqX ]H h㌅6#h3HgSбֳN]#q2cۋx߽N]!1ګXsޞwώ:v/!"C}2إ?-|'\w}gVYǿg~ lGbp G'N%ʈjӉmDkDK$tX=9QFT$.{0QEb X>0eTðU` ݅ .vh7v#h7IR RcݤEhPQt/\uMׯ9>U[}j(Kr:COVťUgm_}TL첻 MTQ ȵ VTbAEE)* ^El H)JeMfXa)g/e|y&9OW%Ԉ*c}Ut%ՠkZ^Vt =O#Ms749^,e%X J4].Cj3ve- bh+F=?= ^NaC*a#Y9&kX^euyCވM_\~ϛ+~o[o.e oÚ0w=XKދ?>|/|uXO5|9xofVM^6AlBB}#RE:Qd 6WAW?= {oQ `b5vx].oP`"78"IyC#E#ްHN$)FDJEJyoEގދ{?zg.hh[xcE>>}}M&G?NGFyK+ݱ޾XX_TuwgVMt?CW~nJ?P?;4QwEu']fyYJ}婺~QV0YIߐ=ZceC=^OzXOS% =]6JIR/KM7Yަ]ޣɎϐd琇\>z]Hʧ´fٲoX<̕RaybX! ].rH5._ {7~ K9*|9|Y1pxSR䄔,9-DJI]Δ=r&H7()Fr%f)Ů̏=tYi!k!g~;jx?b Zt:JxOt@?^Åss2J؊[o"牿 UNo>5n<ҏ|UjWo0J=X StP rk6*n0ہ] j*YT[g~cx|}i1_;iT5 2j;.eƩO͂s'[?Ɓ3O —й ?kc֚H7xO~-;;|b>7%l7;idǕJuU.u)_fbu [sinښ :|o3n'1C'اNh4iC"MܽסE?ctFױ֬5=󿩽7vL( 3/2aΆ;ҳv6Lll8F}$zI ny{+G4C9Y~F_"^ih?,; ՜-'ZlOΟh?j;5vDyvD{5I;b΢XhgQ,΢XEt;b,U(vi ]A tn EAfn MP*({A#vfN0C Yv.s1X/{0؋:MgOh=}Yy㳟-g,g-gZVZ[6X6[vZvYv[LĸHL2eWu~Üp0 `7RF* "4uo@7P\䝇Wo[D)-畦մf+^eh r'\v~Pީw;S1>Z>rxj ŝf9Ot<(7PQA +G2 q-" 7ЩFqqko7Wpޜ o^L[$Vx)mSIoGNoߗw~_}\sM(CΧ@]@=GO)MUS\.%.SQ.G)r6G?~C?Bu-zK zKK*nP7RIDU+"qE{}_=ՃU{jyX=A=\T'wVa8z]zC}=0=RO jRh 5)=l\א>\ G9#XR2ZA{﫱2sk2IMBijQ'\oTBZJ_r\j ZQZ+Amrjڄ7hv;SyHߩv%nGA{^OjSFY\#########Ā#= zhBEbMHM:!BiSHS摎͏-0sl+Y|!a񅲁/˩^WP^WRWUTL֫qv^CYz^K%:z#7M٬7fކvrt΃N 6{ݫQL eT"B/tW2XC*,+XDb@K)Ba4J(E\XCʫPZ8 ^_G(mʴH)" M `_D>B|0O8|C @~{ `\`<>/a_þþbe;qc,4kZ X;=g39q6Câ|=7"`8KP/@<*&ZTB-C\zM&n0!`)q#jz(.]]ElphMZ,|eYjeB]Dx2EZoߢnAxQmZDS" Dk#! LGգ:"uA>O߯3(TsJ52f~|',7?_;#yw+{d2oOml1H~87h \;-d:I޶]QkKʸYxҦ;h3rK=??#,^zT@m1oᮍu_:\[}J=4s'y3)u۞>ccz&УWB)xsMvk|d';Gt ,(ctb|];hwQ1L%ԐwD~sl+f^8| 'z=N['dFBָ/w-9\Z*D ?0_KݣÑSLv f',9Sy.?qn?e9C1}-#Ge=8GOagnۑȭuVP9%_rRY䙸n3bcYs5ԞO=xtgjؿfb~l[V"bn{b;oA)?﯇(~N涄Cw_ < Ҁ_iѭɵ6ݞ?EOCUG[>lw|WînorWKsfYDF18o im^7>Ҽ=8'̈́ܓ;\Ci<\[}p6Tw#QtZ$tŌLi upB=3]Sz=ĞA7HcMB4j ѧVS&/L«,)Dsx#ވ~B4_̛|QZh G26C|<' ?Km3 ƿ?v>Hy|C<>v -B#D:@d.9] _r@: PJsZ@Nh!Z qhŊg/XaŭV;}ZXva[}vam ?eUzX;*=1:Y٪.Vuw{V=gyÆZeUaí2iyd>8#hÇX->4h[EUí zAoߠOЗcu(G[EUcgtx?Z:|ᓬjVKft瑜H.jUtVEO*:|U?ZUӪ8"8"-vUVQ>![UqV:U\ip S>"UeXeWaU?p f3W=ulYF`h5VvBzgփj'T/{j@3ž U >8[8Ϧit}Kg8@J):=om%P)>\>K re"DdrI.G,?K:.0,0ZSyOuH}C @l$rDUEqjdQq6Uj\nbꊺz8@4@P4 p!p)99&ٺٺ&y]׃/^?o Qeo(^^L ]x(?Y6a:ێc4?E"t FHst?ϟG?ߟO|_%RR)TԎ#lk(_믥4PF7)ӎ(ky~wU]hn7{=R]TD Q]K!EqPLFdB1RKMd(C:G`TUE7Cf"ó}qYd,KR[FAXVE d9ؗaJeʲ2ҫ*eUyʯ&!ouYՐ5`SSDZEΒg!lYd=P_K*;R|L>vtO+J&S(쎳O˧Q>fʱc3U܏j?U#4ea ʖ/K}9X9yuUz(FQGKx# {}:W~ ?@ʏpc1ISXNTӎH!g oa YrZ2GA~syr|%%r J[*~\ru]-rldN%QT|"Da֑Ngz`= {eH bPCױDZqԈ}̦W:z9:yz:ꁹsE.C\&28]tːeݞ{gU+u G'`=q[0Wb|6点qZ%|1R}Tp*|%RVNIQoq Q PIQZ0j/|ĭfDiQVD )Ucs-ǘ/%D.-o*ʁ7!*7Wu,*#~L > t8LcE}0骢h-8tsǡ8tsǡs8\qǕx+%F1d;% ,ҜťC_8tCjqcg;ެcV1++Ǖ+H8㋒q1Ǐv7q X%1&s)qlq8vxmMUs, kU=Y8emX֑u`i9kVT9>qЋ8Ŏf88h1A̖eo0sTqͳ+H P9;fY[fY1,ɷHj~9)S6sl+"唵lN Nq̲cT%JJ~װ21:Ys<9[F _6?T[םB<J!PB CXB..C]#@!AzI!= !ɔeC)ee\2,R֥0C9eXRׇp8.R0d t9{~徧߻O$L'$|ėy$RJ+X#˃rS#8 e&,QP)HL:Ĕ'7H4\ MSEbʯ2D9$: "!d y3M'&VI5&VUHz+!%!%J0&UWIՕpRuT]9A UWIՕ`Ru%T]Q+U]Q+4&UWN+ꊚT] ~J0&UWIՕpRuLIՕU] &UWԤJL?Tu%T] %UWԤJ0RPՕ`RuEM+jRu%T] &UWԤJ0rT]'UWIՕRuT]*RD UWIՕ|RuT])zJ0rT] X_@9$~~Q~"ʢ__Ft2y ҩq:FHNgЙ@ENɥsWaoE۰M1] 9;N&| .#+a@m*!%!&؃6ëDZDH#yB& &IEm@'>l ޤm2$x9$:BQ:2 QyIHG`-D*(œ J RQhQ'ubIpFdD. QQz2VYP!.vWHvhq=xRR)cJ ̽hҔ4 2Kn1@ahtt4Z-!%BU"[٠vPhPX+@-;94P&(te!k,qUK[&@ @ehttm=nj^P+W`y].F@wW@@xy[_5Z3:,bttP P2K}x)tP(*xPCs CK?\*㮔ҾMĮ' |OG |7@-@'ʳ|Yv1y! ͇7-> w_%oW(dAy.[䴕%N3a|Sk]-uz+'@%9gkE_HxX 0? L+iي_RZgG9Y`/O6g7w˵,XQSuJ3|+aa7,Xe ˏ~hc%Wd_qŔy_s^.Xsu9^yEJ'1lJt^8켆]lc{3s_^73=<7=WFrҕ]^rWՅ:n쏬ׅ71+p.W܃sYx㮂Ks~]s ]{u`Gʺ8~h] 0.Q~0u.b'^eJ]ו'i)vֹWUwP{ϭ38ʧYY_NM90bKM8ހWTk jL1|C_)6h /+rxMaXn5$zCW;fCs$-mאM^C}^pP&GWr\]x>Ahr"MosHN9`&6X}Wp*9|JCLohf5tsz }A9w|Iði crFũ\LߜFϟkjxķ1.R.Dr1ryCC sr -3KK K}{*po5l;v= mM<$;?`sdo!{oCĥʆxܷI2GC߷x~ .[O4=`޴ dַdIwgyp~Vù-3\+ }#W&UvjMs_YRg'tKsum@m]'P.~*Rp49ܦ)rgn&Սʝx˨p&Gκ)yHΎʞiO/-nVuU.9K*'북uk*o˪qphIE&<&jH2wMIxkw9*M0h<\␃fZ6;En ۀ9Q`K܎|j{ȫusj^hNsUKLgkժ9x|r߃/b?Z0:ģ3V`d>\eg] ssOK=rlh,\;n͂Cec׵M0{YM&;91w'զ/38]1 f~i{+04a${\jL_K.eH{<⦵qwsM{|)kϚg^my}(-k^s uSk3oc[5wnj[{mt'kPN Le!99q!}R{EHq 5!}J;#dUrg7|-Eʀg. %5.s뵛j /nvOrRաi+~IRÅ6a(t:#`ᒻ:Zp_Չ¨[N![ kY”ru0 |a)T ᦳTXn9A뜩m$.U8dÁ@JoecM];{bvMwZ꼯+5sO!數GgaU:fEItIg7`fEC܁#MCI4khyJ%5MzMS04bfuRd KM 1) fE)f`&MJ9M+ɦ[Raݜtn+/C퀏-Igヷm֭bo-UYAUozېXmI<ۑlM~*^J^KHF!u`.u;;jh⁷ .˳5ǥƁҕOQ ]jIuMts :OdM?ӚjNJkBi]9%mzbjHO0g Qg_v5:lcoBkLǾ14*'퍡p1-gÍƱ𛓍J,zc_srq챾ERc_06bxoۏo7j F/%׸hwFw3tc"dS{ d:$`7^_dyLT0q2GG#FUIh{ipeZwl\_ YFyg5ޒw Li+3Μj|@$A8ҡ_;8&0zGa1|*1HɎTxL#ۿGvqd.:AfGxw=̦DLW<%~ .8ëC'B30 ptLBz!0Յ,t!s k\8B{wxK !th? 1]̲+W^00k^;0#@ KH2 $g ڙ{a!f; O,sLʹq11'BagcBXǪlge7ؐCk[d2 ֞ebT+̊CzeiEj-.}eeG[ w;gWgլ! Ll7˃0}e"vZeU5ZQ|X ?1] SjsVm NߜZskjI=oh.Kly'Vz5y_ƚւJ}Yﴞnf=ֲfAɪXu6,zCVSs+ :#@{ϥ kKs~|Q?mjZ{/}#xmߴ6_ѯXe^:|M:\ߵ^9zyFmkx(%ZfɺؼܪgKZd|ͺᜩUYת;t1n^md}6*küIǽᵩQވVQ&xj듽yiޔڂLozmq}7tIonmY}7VS[T?-5֚֟+zZz zzm.]mKj^{mW}׽?`-޶ھ~oOpeڱ@dwj(zwv~;UX;]T]_կ˳7 [k=MYk p-m1٢w mqmC-kK [mYMC-!ӖSrlEI[ yCԧ6Ӝi} x_&56/  gm~_*͗u2 9Nd6m<kۨ`MN٦,}e ۦ}6#H3Z9pJѫc2[ACm9e&ɯCWv m+~-i^}]~e_:w{ P"%B*EB(Scp)Ez\x=Sd)(=d9d=(3B9Kt=tݑ~a؇Jėj~k P^(%}_10;!v^gEv&paq.k\,%si\&S/_aWFmvbw]NvW[`[(##GAYrG(RXcD)WF?U;BU_*~h,( &wUZkF|\[oWD  >EEE""QcĠD,y)&(;(Œ z őg<=/ca"6AƱl fl>[Ės53nWp-#Y?W9'ЂP44%J@/` -FYЎlh(c$y~0sTF<B{Gf$P= i- w3{ОEZ h}shZ ~ 4,D;_BKPdhG-Cc/ڃ*BP: s_uQ6;CoRSϣ/'Olx }|۔}*W=Eķ)#eDGqJ$tjܨN/*s;T+NoL:ʩIjUQW#-u[;~A͡ZbaHDF:NB{@:rǜ΢@9H$H8 +P=]EWn \9ŀAIJW(}dbx&Ie2l&)`Lat deiaڙ.cafd2י9fYbV0͆(6M`46a'B{]cϲeY2e[E̎@gv.C[g7{Wׂv9X/~É?AIblj?EÉP<: 4]Foеt-~8\oI 1D [@.P/M4ؔ cqmckGnjA6-ca6 oc,GIc῍UtZ2^e\dk&̱:a8#, KdI*xCX5. Y"H5amΑ} [DŽXoH"XR cvLx رGDLN>*&NLf~,&QL,2w1IsēX"+~&勧"̿&%S",2ׯ0b%9QOY,m/M7lj6cmi#yԶam1vK[OSzϬKef@qfT)}\O>뒖giq ֱs]xݬx3iA\Z$榸Yޖ̊~[ Ж&Jm9OSHWR&]zd#z )?)4EIC,BXi,?tLiyN^s#-ۓ͇%S0=viݿuin^ݲس,}Bi;%Hw]RK8l#8ւ/YԜl9y-\%fے]dp-܈%0s[ ]r,K7op7,:nb,&nb%> 9ܔR{c}?yR+-v{|C>}ʁ/Dž}#a-|{w{>2ȧXte$c;G|0F1ρ/K">c/V<K-C}o|W>#R ȟcb?\v,y2Ge[-rklee떿d\V?dQk.yϥ8)~-9S'e&?+m X|ߴ&+d5c} tT{'!1ȟ )F~Ĉ(BOgܙ If&bDJSRJ1o^""""E"bJ"yQ#?s$!jY;{>YClhs!p!k ]cyHk|1w}G>-5량 <1&O͕c9M>d]aMueg+ aۂ`eu[؁:9q>྅*@īFܶ؞;x?:{*A߻7Wb{,n+eOU%dgPAiZ{ؼ QHRkZP:)mN Ղ\ -*ɹG`^SbAc8;S¹``VX}ApX8v`Nx&4q9A[x \>g KEA5\, ,~$)8;5X{Xn.Ka>׆O"%|6=|!+|17""f><If.;ё}wK9;1!DN܉Ýx܉2̒ OKv܉:p'ĝpZ@3eQ+WI1D'Nqy3i*~+H*"MyGr'SJ+/$Uƪ"e)j7SG98զ(ZuJ]KeEݮR(J%j9S#j5a\8nwS&1cE&gQp+q))μE$!'HhHXXDqLQ# EzmN4)n>+{akcEJ:u{YXި-_[ԃ]-ڵ'VZ,W/wzk 2}^/SD~}}FM I27DL?]rUe5!VS<*pwI!QOlˮjXq7}c, ۙvz3T^k:^'uLr袚PI=fO"}Nֹx=])Owu'M/=c.˞Qk6]S@LE)g*ǷDž-_JWE1%77߷Z==۷ԷBMs6vhk}P<oFi9( 5g'fg͸ YQws`eOc rkO`\<97P( i<ݧ'WqTR6̯%-Ҡ P|a0.93r@b|6^8XXLm l lA<0+v 8Ѐr,r%qj]MMd5QF*^Ie?[O ͵bß9]崙l0:?o Չ"JOJޓg=ۻܿҿʿֿѿ_?oHDM3fD$$zOt"Bq<a 0U)o5t"\%Sir5M.\:CU 㓏D]Qe* VVtrw2x`w*^^jɣw$D#DcYƄ=S{8bq逓M8$bkypfʭ!iZR I<3F8.s#5gL$(wnRz] C7FsN:">sO#~ Q{>Ouubڑv f͹#-iGof#ZN#QM7H[v|79scgNu:,E|i|݉?FtZs~reV D\:dnG/r\?iR{_fMF~ѳ #rt7H;6m9hB}ZA߆b:EJTBw :?iBhv;v他&T- >HygP{|'Cs_^MVm,_ت2a%Nڎkl\b>Ʒ[nSKNi9[lKyG~Nh/ל䑽<^O<~]X[hRw}O>qɶrn6'V2DvLcp~:}ssbA)t7h\wBg DxwynX/c36";(9^utM]j{ݻvrp&6]sl :'EnƿW ouY]ZwnWe_BP}]lٛ%uw컮Zvu$6<Z<ʣȫ׉!|GG㗷S'W{!GGG;wƹ1+":،DfiçM=[t_eQh3϶8l6Ĉ6 Emo"wq5%oa6ڇ٪E<~F{*/l'mF{. l\"wۚt}Chak{@[Ւrd=IGLa5Nk lGHq۞+lbżN록?;ۦ>Sx6G9vW;y%v?{s;sf!rBKΥf'J;3;|gb~A3ǂꐄ7_Lΐw_T ׃(Q0m>sqD6B""(B4hbZDtZKh v]D{5:Jt6>OLx(gQ'Tϟe &n9h Q.h?hF I4hQ DuDm"Jh7>DE?O>Q/f"[??uoFs OnsDc9˜qWҎDZ;&M"  z&sȾ޾پ;ӾǾ~~goe0:X)ntG?Gcc#1a8 "(q"َj~bQXXZ8hpzM3fG);INTg/g_G39ؙu:SӜ3@Tu3s5%:j:&Vn>Aa1 IYsyA/[8/Kz1SIt4'(]uOAe` [iMz_\_\/.$ Bq!_\_\ZjaG2Ȓ#[TAR*[xKed̵<#9-,J?f!Ͷ|"/eC!lއuN'u:ۆgΟ]ifuF3(fw)eݴ>ˆpsNc[ߙfN˗$ړ]ݩ3PڇڇGڭ|IvgC$%n>g<hn/mH #~cdɲdIeeXL{-E4WI=,SR/Otvvu]33Rc ')M? VFe6r,ek?f֜VO_(eT'%B|ƨptW_y v@6y@RLv>^9LDkGG1Z;6ރ?ީ=o!#X OB!/ -- }@g pK*^%:2բhr=:/ %$އZ^`)5#y(vc@5 Q+ (1fA^f7=Ybhdp OW@2)L*I-K5 )e) ŐYx Q < k6%ěw,7)?)r}XGF ]BhzvQT~O~ \&42/ L#gWxwZQ3juF<H!CG l> (>Ӡ?u K K!G_6,xp3Zlaz !hU#@e1GV E SP+;kЯoh#T{暩+ƱGg!W3,yxxGBµ 7U.E^eF by>QR$AKpцtH!IG tORO\[jQwZ{+x±&E 1p-̢TށXY ,{ Kht<{G>F%?A9/ @(VH@s2fA p0d1j+Kre@ݑ|&Ȝ/#~YrE rו=̛̛" 'sKZD\C v]]1%ڿSwrf`]滑v.1ox#;".`7?Z"G՘Y"S,YЩ>(0%F:dDdd:`%PTܣl=d'y>򇘃_|9oGӌf& | 銜Z8ʇ1_dEMH!?L 33:bo17َѯ|Nx #Y8Z"p9TqMVu<>ѯ8Ag^s!ˏp>e>X+Kd:8]:rp2s^X?Dڰ[k g sP%dk`+$Sαo'&Мb/W ;h_3 ǀ3SKb(,lk9av `v `(`kѬi>7N6 o=}*.dyB'>x9>,GY˜ o(9݌ 9 Ty#aF#i,bk:2uQ5?Ig@f.dGrOͻr-k!+0o]ǽa5B$ϳbx^*1Ro=O@7g$!zS/x-$z܊L@4@t%y cy1lF/+qgne*>̛^5Jy4@VBNhB qX߇Ixz1v;e:Oɴgo( <迎}QYAXʧ5< O0s`A]r4=71Κ]< vݴOĴw"C P΄!(gagW{<! eT_|p:{U獌s#lbC3x9L? a /B7u%eHT~WؑVbv}'(*)x܄7_Ltͮ\W6@BvI9Έ~N`49{Xv,c~|O̿86`',^ &o{Cy0z4(tP$kIӴrglp2ʽSM{XbGݓ<+ ǰO~  8>3/`os,uA>5F(Q;b; n@ȟDkDkDkkUrA- ;Tn?GKq^~/o鏷[C?{U~e׺M $yWX!B6Z g&)Hb( (9ߔS|e(EvoCo$X F> +kH.˕x:*/XGn4s'1S9F+Ӕ2[F柰>/O<})x+?퀛I8y}YZ)r^̩˘/ϋY .IJ7B<>GSqJy슙>5u_0s86B7|0'q#>}˛ig~qs|7{%q0{!8 8i=j^YqDN`մ!?L<x7O ^ʼnsXH$KsGobOkO#~rfGs.FW,1?RTK9 w}d:ijTlB[01Ouxz'fyV:q.simJzk(fp_š]?No.T't㳜Y9 xi7rX4򊌧U3nAMNEErfyfE`FmM޴yNp SHz" | 7;p˧xR>C-|J9h-*꾊-'yh68?# V5lsӨc`ʻ7#WL-,d_~sV޵6n(+8c-۰WeCF1V3y\^@d^9ZV"^D,dFӯyTs #|oS 'O*+z}'5[xM .N o/n {ha?Q~(@ot\Ƿh"mO: l+Gs1+>_mb'lZ 6c_?M߉Uɴ%8ۇp٬yCX&JۀCu~`0G9g3K ?F `-qҜy$ 9|1뀏,b-\5e\ xSaπo~`0-;<}|mN'_/= `>$oeNjGJӑ Dz7y/|@ >6[?> oOcmhBT~煲6@ dmZDɁ~x2F^rQ> ,7= =g7N!ppħ8o~0qӱӟó ƖB:ی;"bF__!=mڠg1P92Ov10CvBd;oH@v=]ӔY&+Y1,?#8BUvA;c),\kI1hy|GC ~|E >y-tDKa2H|{9V7v9i%`=ps,1,^Y |W(  `G_ѿa0;gE{(Z^haZ˜7{2{ `bzv[D fL5Я! (O ͙WI8Ƹ.%_q y7oxZuo'Yn< $szK\ %F0:cO槦:ґ /Gף KM9.p?!c,"w7 Zdt[_sk"lxx:z=`1\ ' Zc2Gnd}%[Iw=؇ 3S;\_Bn?yx֯WWUJ{DdLFDD@!1"" 2($ Bd 2skw%={ΟիVMVs7ya;䊐?mSC/QlboO@J(M4+%x"| GB?~Bx1؛xtmfY} yrfEsBރ# `.\bC[l՝(R_EZ[(F 0d]P{Aƕ߱GGwQr*,{;Q/[]x>+%c7bmv2Vw]?j>NaS#-,C?&чA֗E Y/-d GjRh6_ "S6 } Lx>־yǯB[=wIeM79X QQOSgK\ϲآ}/σlINgtW0U,`}rfH-smB͑7ѯ):2he2t[2ezi+),<@ u?~np0仩eb"n++dٹoO2Z''G)ֱ[y%^ȥ"rq 깄;s9efk(ɔ

Zp GDā9a(!eM5%\=Xy_,u(3RVS9fLǮn7%N9Q-}k*wLNu\0CTeXlKn%RetM+G\w@s%Of)E%bPjs?B wi9|zL8;0S? i EaSڐ_*,ׁR~rg4lA~oA~l d'7BVՇf-\7!KB|WUA 4,dF2ː}@ C`;y xC~ #.qaс|Ge?F,`O0 G ?R\^S?KC m {E{6 K'ўBhz l/ <{ k^r9oկh?²7ڶ'|u*ش;Bsa2c0CeJn}ZR_/qZ x#oq(M\0q5(DѯR36,GE1CBw=D# ׄ$, d\- sygBx x/4+ JQ^A& ĚrK@Ƹ`54`Cd{"Cֲ 6@߁A<ӑ)h0}Q @Y(,Q}/¦9CE9#dB\U@y2zSR3PU~٠FAGo@:DTt@ƢUHb]HPbwP}˟ {4"2C ~39Q*xUCVㅼ Au-,# u {5 J q71oscfaUr#Rս0.CcAw}(95mvD.8Ǵ9ctBHU#/b"ʮ ?'O2])Asfbǰ6홡(l]Z+_:5_ԏ@ 6ȏա-o-z]7ЪЬ&`Ihz/C*țY!u#xFQHs(al~'!#oO`yM@]c('@{!WeQzlJ,|5򮀜 <p;}oGֺX oɯHYhZA;`&mD]r3 6l1̨P`A}jh0!#<a 6<4 c\B D# ׄ$,/d\- w~&dx[)4hUCN1=\OCn 6M&/+N`櫹`8 D11SmV @p(,Q}/¦9DCX9# dBR@dy2zFR“D~٠FAǥo@j{u8<E%fhD,U}=kM~X)!+4ڜb(Bad*^XB\Rx!~]?8G?z!+@|{ߓu^Qa\U9uCޱ FY}j ʌAdA{/ FQe|{EtRwWJqﮏ;Bɒz}Hw-'N`8 ֫[M;'зf[<PB*R0C 'Q)gwe wݿ{wҮw̠ɹhO0S FOܭJ \lC٬wn Y>r\dsL|lN[2fвl3ْ`-,; Bj!(J(k;~i΀VCeK4~Ԫ"5wRM~/w²̅AN%YFAY̐"h, 1Ð0by6j8ȳaC!'&y[qrQfNzB;wBȳְo]wXO[|>EIAoDzX-XsU56:% 3Y廣9ƮY/,JOq1Y̯߂ρ<}ePkmflg( uX[Lǽs^DytX c L[2+Q4q(z2w&S1t䚇\r;@e{;&>ayeu%Xe Țɿe+f 9ʩn,b8+鷄e죸:zB,_!p,8ߏm؇854kq2Qfc%y+`-eԆ'L7[(bmky'`=jCe1o"/SݍG0yd8x!| LK.JB]5w}L^u,oQN;Dj}:xe@_ M WRLQ jg♐l^C L(P(_#oM~'p/c (WB^\r''4Yſl^W z]%s:a :"dW7E/BKkC.R[BV$|2H%86m̆"ڼmAyj` n͐0Va˛ ÁPN>/Րk rz4 X p6✑1H&+;" Li֝ElGa Q!*NyQ7OlT&{wۘ^ʖX^ 5稝mw9z0Dݨ7dqyȣbt'%$vn@ͨ5{}ԂplpN;Iۂ`w0.%Mǂ|pqR*p IIRaS 07X,ҥ6;tMۂ`*H.I Gp!N7`VJ>^0x<^LWHJq`M˂`m~. l&)`:twǂ p68#w!\7{w ݒRCƁ`a4Xw Cu`s5R(LC8ʡLp\` wc:^o0c@ӻOjor`4I] ߹6 GiTKr#oB6.|١#9Hͼ#"l|3o3]6GOYg)ݩSQSX?%ԿptN}3bE{fwq4I那xq;4g3Ι,t~p2DaXb#"Kd,(ʚl%2CNsb9+8o|t1:W9Cv$<.[K|tksa_?y9/s7q~k]n=/Y.y?WB!86>{xO3Xﹲs.U3e]6!8 c[[Q6^[[oyyPR[roq~"[+,BUoZ=y98or(hhigw)ٙh#Rny)n`քJjBI礵;!9#\t.4GIcv d]%D^jlp{d,oO#h2t͉m?I"\?h %.E짅 3σI۶(k%81IسkL:RkۺҦqo``y(<XXhh?R )R9ŬG B 7HقHD -?<2-r[^zǭWmZe=e?eZx^h^ \4)E񷒇:4IqH} F;NLtޣY,\r.;u:Axa <4Q=q&8/ʈ24YThH}h+Jw1Vb( FZh &Z1Su2bg (*k:-SG4$7ɩvt;:Nn''vqNUǩu:mN9Fx / OE:DA&FƘe2)iJ<skʘ26sWƛ}2/󛊦$YT5U. kʲ% 2d9yUgaiFMɐ YѼiޔmYٌ3do*f(Iff&ɲjf.kf|43c|6e-3̑yf|7fY k/͗1J1_e]F3KRYaV;l`7ˆfY-fll~4?'A61Fl6e3Y>im2b~Oflnv]iU0{9iNʖ9#59\0s撹,[sFl'FWXg.YL ňbŊҢ4,$mﶧ@7M&vv;S.ۋrinqtk"t)f5^”|)EMiSn7eMY*`ʙrt)oSAST@LLS2L5*ljty<@EC!*j6h8o yJ6 2I&1MG*m:NTƤ*ktI5TΤ4Ϥt*o~thR3 fJ3*Qf%f4U1cj2oQ5ywͻTL0yϼG6^O1S!3LZ=l>4##=jfYT|b>\3OͧT|n>z =nT,2YlSC,FfYN@kbc5̬IFD󓍶OM667[l}lQɴQ-Ng <27ȼ#x#l{NGf#sM,GVYxd]R%Rw R*VETQULW%TIUJ=-JĽf?r|oJRǷ*Mޟƫ|*]PwNUz\*M*Q*Ny*"ʨ\*]mm$!UQ(V ȏl9O~&V?rIn+2Ȗ8KVs\Qm})#k5צ.K2\ʕ;J~Wc?gKyr-3imF[:K/OY_>م|<l>XHPFiQv]Nߤ]8zH5>M)4tFi&}D,Mx0ѧ4>i_B״b)-崂ZZG?8~6FmIvA;i1o;=وs!:L:jq:A'3tFt.%LW*]tnR4vē"Q<%E h)sh#ڊ h/DQ$N"E&"UNKd_ow[{>_!qX!8.N8qR8-Έ8/.Ⓒ,⚸.n"*mbH+CR+)\m &{ʡr.Gw{r\._ʅrFn*L.wȝr̒r#} Mp~QSRYW]V{^OWAuHV#::N3:Ϋ ꢺ.+ꪺꦊl7Տ1]G㺾nF~B7Mu3NOiB?[gu+nyn$뢻u:UԽtotW/U=DazGQ:CG7ow8'==I')z yS=_? KP%z^[RWz^uG^o?zެVMg_vCԻtU׻W}P҇>>O>+qGc=K֟9/Kr\ǽ7 qǽ7$q{/{W o7{ Fx#Q^7{&y{)To7}>>fyO9\So[}}Vy{?x5zomx?{[m^x?qw;].zwͻ^vNXeXp(| |0|(|8GHhXxDdTtLl\|BbRrJjZzFf8ΎPĉ Et$&xp$1\ܑ<"|#"wD F);R$R4RpQ$ۻuzA$HP("AQD5`FQ$i1pͺsĜsBT.Pq׽w}o}QU=tS}ߩQ۩55%LRu:[U/S穗WWg:O2KDP:s-k~V,L֕\z˔Md 2xR"-Mne6e;R޺Gy>2cyCy# ta9euAC7wᾖUWd.aSk Fl誮-v{L  CHM qLO~i 8^Dqo!.W  C1qMu󠚺 u N=΅Z9-eh *FL *6LTCP¢& Tq1wBLjQ1c"8 3d:WsD}C/!H};VHC#1mQLmΖLCd XFN-bE waDڥD6hS8jڥO2rѢVbNm6r&{vIPK5Rji<V`єZݒZ y-iTdQkok;Q"WFH=йL@'29?h OBj91KEAE6^i.\"`d>`5}? m%\!x`$4^pH4j$B $#o!/%ېo_hN{vݴAfF" ~s9ǔC]cCq$wQSTzrF! $D 4@:Hm H%9c So![I.Go!7+1]=79ȸ22q/+džމXyub +!Bq(()())iS((C:t)S28dHqȈ !-a@ 7xw/$.0f\j,| ~p }x =}ƔbGl]pDkc[82 O*CCZC#Zƴ /Z&‘'М1ЂKȨR\ĚH|+kJT *d T*)մܩhKCr.-?)hY/^ hTu"<[N!K>6j0 nG;uV(<cҳy?hy Zy| <ac1` a^J3{5)|ڨfRjaIR0heS‣mQD\,#d3ف#.2\p2ڽ>n?+w;JF rʸ#W}>TTUsTsUTU T骅UjvN.%5uMm]}CcSsK^W<ǫxWxgޅwE^û|] F|cޓMf|sޛ[-^P /;Lx/ YF}Fz,*i}Ihgo:4*ӥsz D_N( HQ(E݆ 1b7׸;AXPLAn1E#ˤ=n)wwݑrw`ݝ(wPY Y L݋2h#d h/$x/hkښڴi;v;S=TVD~,Ǫ(lCy]obUy;x=S)2a@CKGOi@iHiDiLiBiJY fB+^ U^@Y9b1O)h?eh?U/T_ST%_QHAG,Z'++XxoCcsƎqf#h7bCN!:*h@h$x MfB…(!F# @a0T. )B0]) taXa\X)aE( ۅ]^ap@8( GqpZ8+. \x)3g.?5> 7KϔH+UVJT>U b¿{"}yx-ZSi}L&tcFKkZ?J:VՄg>5cV&iwWZA.1IiU' ໄ6(!|O4}ێ]ꍩ%էҾg?r Uv0}ʗHoBI%id>F?9d%Y/d #SHzռ;?*fGx,Kqi.u4z80f·XOy1a9x% [z)Q F./Q`]Q3:c3v8#&13 m{k3XwTu' Ό3]]aL3YLY+.D&kHoLe^L,֗mEd^l,JD\=؉XNz Gz5JHFYSڨԫW1Uދ}X *V3d&?QYѩQgf7 T P@5P T @5P T @5P T wP%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%T|y?׷ciH1٬B1/T ZLVjhT#3 \yVAt"j]$DDII;MD*'^Qۓq˜{4G6hɬd#g1Y%&˦d`.Zz1M3ޝ\at z҆Ҁ 'v@]Qvjhu-=QA1I> Ivt\f`VxTuPlxV@梕ZшMtws8~rojQ%Wvqٟ|\L۪m,%#~I Og+Eq=ͼ&]&ްǵ4:SsMrmλl8}Av 8Qϔ;t[röV~03T3}NO8Pw?%u5í"^x6p _,ثY]'\z)*3/ZK-2P-gl6zl 8o7./ku]: M(Wg(m1V5N2V!٥WY.y`/%׾~7;Q{X*Os;3}w[|G_ֶ u.5du)Yt_T !uAK"FX ,=F [pv4ߎE;%E%|C([=7PnO_6UKQi5'6Otu-i5qn[٭^}QSCE'nz"mȅSBGgo_\cԬsC<0-O Yl:qvT;f5Q_5OWlvZréoFbN:e]3%.3FgN>F3E1\5ZizCbS~å;_]NY:O7wE[p=V'rݹf]Oq̔qGթN<܇4Lfriè7癐ֈ>יco- 6[Nz G._sOJʮ}'> 6`P%"TeLED:W**ѯ Ty5ᙓ~W׬:y{VvE]y)~D퀃' ^8|aҸ7קe]Lvyݹc]1tfwM#~ŧ7bj^*_ju^u}VF%ȯ_೸92L{l5jVCJ7H7CF~j}v847diM|:t #W||ur\[nuk7#0f]E[+.&}j-=tr{\m8i1݁ z4=ziϮ9uK(f,C_h&*Xb$w1I'OMNQJk4 *7ݤgP1KjbnE= \|}Z`{Q,ǟ;H. ^k>N9VZk,Nr95ݩʏnepxgbtidlMump:`eG=?iէ#5vţtrmKʐŷn~7|K&=|7=*אηڜڑpo:Gr0myދ_zVJ!Mr\l1\-˗7M>| o!S390{g<\b,LYkȐ9=r5iµKk$ lGV8:TGW5}1z'o?1liz=αl=yך-,Wu9~P$aZ@`5oqW}:;tY~㹽<'ή&&wrYǍݍԫע^=s_Op*}0ln*g3ޏl2WW;bM!wZ鮉Jh2j7k3bϙ9h nM3}H?b9Ko'orVEWn :OjuؔBB^f}?f̿Rws@^bB 6Sb]Po tg4~Gsvc[v \s쪩ӓ+N[$Z=:<Ϩ\skӻ5/~G||ǧ~#E3Yw6Yyk Z%KRZwAnWl^3]x9~δ^kWG4}]E7,!%?x5cM;6mZ߾ޟ i$7;iksA_;6]MG?aC-pF;JR=b;#yozMy@ݫ[=׏/OuSICbv.x92͝-Gn̞i?w}ް7elvqdn+N;6Y-zz)DOU>{+8|tvyM]:+2-$9 8~Q/7Qm7kJ2 _umKĪG$ Ģ~5^~5ex?wO/&D rW'$$x: C5 &InXCggc4ixB|Ĉ>í%d #olM8x+ l)0_[؟t0w.92fgiKN5#SWE9^Dz7syvڍ[qm~nZxw;i?{dp^o][zmzJ#; Q8/_o~!'YY7Xuv I> 3 eJn; :Sz*m̦xjlo{qI[S^\3[9s_Ly2k}t?v1|Mv2c)&3U$3R8FiUvŬi~xůGX4U&ǘEﻡwW3w e{6w,u0{3qm٠퓆X3t"]=i;j[ĭϮ>$;쨍I4M6|0|`|ijd?M|ġoQ׽WMX-ngٛ=Q:_gO3KԶ2Iaշm̽/ !sa9B,t* =dv7frs}dldf+&l~ẵ_:Q> stream x |T};g,d$dl$2Y D, $, (."Z*X&A4(TDV\Kw;Dnsw9wgoLl?K T&*la,<3*.}x4cʪjS/LnTB7yݸP׾0!L^eֶ_'n@9+WB/NnXo;m;>)2o]q{qgٶ6oF?`^O-}]xŪ_tpϝlP6-Z:μk&uU[;?גL]ֶt^#}ep ο  6Dʺ,Cɷ1=ϊ|]_ճI <JO`Է_gIJ`'1,@&)80BZpVDvcRv,L"/C(3(8^Ԝp l\.pr4v4^^\)?91a5`i_a_QpPc>^v}^?nC;΄*8vߗgߝ;Ƒ/b./}/Ͻ8x\>i35vmGaɏ=̌pNi8ߚ[֟g$L&~W .@! rF8S`̂+a5_gO&dH(2lY ز-YvE~(4-6wiVy/1W%F%4YWO/oi8g@)~,™L0X+ XKeSt6-el%[659;"]lN&\O7I/Z \ \ߐki`Wk'Otᨏz?X=k挳Μjl2y3j'W]UYQ^,;xtѨ‚̌TIvYLFNV)rs 2<-%,=55bӊ UՃۄ]-R3AlyAjoɌ(pUy\W7^ׄMfW(Ta0kqUW.j:5 O-=G ִF5r[̈́}y q}n8+0 uuMTvl{aEWc 5jxܢZ f23ˇ/wy9 DTVJ[k`\B uMဧ-lSTD,lhD-ahTUrUuTű9}:u邒NL褸hbn\sE\ؼY 3XskjϼS.KE})^l #I-ܧ0(yqHWwoochC,MaU:2l7NT *BMb_of ۾ GPEGR1 :P utM p63Nc1\[A[/Bs&رk&#)89Bk 0CR4pK$Qۣ .it* ėḑhnKxmcX30eZƋszQqnE4:V5Q} qZ;k۳= efxć`߅ C333C:IѡԝK'*Sws;[F"&,/DGh#W80-F$IH"8xGU;ٻCwo"I+ ^!2 %‹%6Vrxg$a4kF,3!`" 4^B{{4w &ExWcG { {DMxZw"p'}2 6%a a5a|5v rl;fffZ "x^W5xހZPB{pxHWRwݻ1>p>Їڿ1c^cYlXs0f),eg#Y1+cKp `\\ާx|<~u{y;MڭhsodNa?`N?cOa1=D+@h2rp5߃ah75HV? "}}8wK藗V^GG-L|?Z,|7K}yQ|j?+|"+wXq89 9&O@/DwE8ƣ^̃{\&-#xa<O%FiG)ih*[uJI#fb1,pT=bX\FWbQ Y+ N01],k9@?<٩,e<6{x&FXV<1?KA0Y ֔JV,0Ujn;@J&3q`_@̄sdg32?: (L;3m6eI AP;1+uvU*F(}fx+G=)* rmĢ ܓFgqd=dXp,IMƢ?d˭tU.I3}6g< @yjG%ȕ AV(S ˓W&Gz>ݕ1AKs'$L+4nT0oR|NTʻ$atz"љPԞ1u=[T.ZWZÙk[޽DžseH?t?W)],.w+<_P5 s g˘}l?;A<+1EYy&[JZxQτެ#<…&567_b6`&A:vܑj8s|6̏9&>.?U2J,4J"؟w;^g4Iբ)$ VEL~]#:}&dm%;=7`$qrrmheVV1:ִb=-% u*ATlV/޾?qVMY[/ڰ~t9՞$o٤Hy6OuʮgK,EﶨNhqG \4zJۥӁ AeZ;:;rq)}@;i; ͱ68/-2\ͮkF,pFw?%'Q"{I%| w<ȝӗ&phj\m7fp3z?d^` p,Eq EaŠD{F"D|~!￧qxc ||^` 7 S/ noѰr|NKZ7ZѰDALY~+nqۗt~uR\#sB/jI K7[.71&#ٮѺ]ݫm+b~k=?Վ'D UjAf>>qո։Ӿ o`8TGmTd&<՗}IM>l2Y #tKZř]0'Ybd,==[ҝ|\T*؄}<$ =,P0fo:*0~:Ax2)`FR*1"?I/D>[6#|0,RzSR5'1gš՛r:FIcd&<1f2hz^|=y Z,..^:]WYq@'6COz}Ko~ /=ۍvЪrU &SLIM}> (2F8?eX3fK6;ʯX3J?m.?,cT:}H:wQP+:X#? ttL4hV!ZG/%;AVp:GJCՙ{gTVv[RsJZeqxSIpx_wI|]oN>s)E>ޞAClM5j23s Xl;> 1ՙSOU&`\$KBtS< |R}lؼ N͛NL:x9gH xSASъt]ـ@vC>uO)ttcOw!ߢ*>%3- ddնμJk;)I,N+)*7*0"{T7-cM4[q2dhwk@q҂*2}78ab>x倸Ya O}d*\&>/(gL?o/.kYLN>Ζ^%[8CQ~bwJ6j[>|QiٺG/o=0m'vQ/Ӊ+_CVɱ6ڪ8)KXN'5h˓|Jwȵ _W\q[x.0'Сp;E03 FoJ6}"Xʖ׳f;q=%4Ӫ!rqmNIaAg0~D}$.KU:Ԡޡ_J=ZGn{{ݪE==:_j"qrer+Zj9' 궐s6xZ+׆\;הfh}S d٠viɩogY@_uUOs[,4|<]_|Ԓ!ijS[oY<DlFjV^-ﷶ\o}זJmxtsWgHhO*KA;jok'o^ӺkDvTW>ﹰQObJ\jh Ŝ: |6[9w؍*C`->5ȶI^2dGQs>ePyav:g+f-cUʂb!I6}Fac,*jժum/.k==Mf? Y]7ɏ5u. Fcx*ʣR,_9_[k±4H% ?&U䆥V>{I.<rI:qq=B ^l/7IPD *i Gԩ { ՟TVyUg˷:={WrtʰWx%!nښWT|<>fr=zaIszqC]C.RJcU;cSJ-G{I(f;il\luuTKG6t0`Ek:֮Y܍)3]>G؉'[igs75X>j+ey{C7 'ʃR-:tl&Ag8  zEA;a2 Zisښvo@hJMFvnЩjnzf 8߹ mAƟ ^bksC7m/TM5%Nټl"/.%ܹ6_]QqSOWuaW6J]ܴB^pxŌ#}gM9'{d tH9ʎy_tU]} =~xۭ6a2ooҙ}F6n͔+t@2~6$o]ֹ6:rk[vZ*{n\ۂoia9[N`tʮ v_Y.Oz[xeg+Im1CklTt-1;]!<.>tN40vŚ[]V,/7TKLߵɼ 幡( 元u[꽍:mA>`6w;-a=67^h'!*VY؏/Ro NO_jG \|Unu1u,3]cElg/*.)oR,!7R_XPҥ8a,ujcUU`E(\X?V V |i!%u ٻwl.{z?U[1bc ,MyT#7$<;93v?Gr[WRg՟0MnO/s#7N3רsR.7g4-n5\[&S5TӾާ- O'Z_HȢ2OQLDtNg}(XU>^s]uNGH]^AՓTe V%duScb]*KFg-Ӊb~0^x -׎+[y}}_.=t -wI_GFvO'|ήi.g6kU \dN(]ޱW4, ?Sw~6#~S`AK7ܺcqA+}/tne9d2WyQ-TR:=[Aj}}m{_C^;,][ \A,{mݜ-Y3!7ܶ&#r/V -U}ia$TFXlI_#-$ !DciŝN2g^T2c0(7tN7|EqMwDέeagTFJu\bKGS>" Ecߞ=bj&d&۬Q7w1cNYJU东O_lG^z Rst\u3u w{KW(ӄ5썃[}F~}^a7i^eV^=/߼[ c͢}ϹǑvFkڹB78Lj^cݙ6+ oC9DIC63r"€M *pz[{$ed){#6/]/_ HENxIgv % ⲤzKyW 4?~QZVhv:iA-Z^lI="l~ CI)]C _&=pz~޺v=t.=\ɯzpuJq]zq:y邐VPkFmYPcӌz}ps($Dpc|X۽X1(Z.טU塲L+~SҊhim%A%=Di;г\ёH(=n3WCЙli+gi˴ܐr9Ҿ”A;K@zta4e7 e,k2l#͡eѿWp#qq/|9itauzncg@>Gx|q[i] ~ed9\}Gl)Vy' Y3b#Vt2qZ(^uIu/ LLoףgyҫ"C,~*r'3`i|,l!/Lȟ(fHTդia RyI0tGz<\4+ tj[{;誮ꁻ}n\*r đ?qL_pC`p1,qR +yJU]N B:k#ͅin[_~Nߟ=L应 bbpl\J ktPc//W-x峨[Gy%j6}^δ4mfN^%4'jjVUNК`7=m zIM|#>%T'\>͂b#6ݰw躃=zA`P-Ng c!kR/0Q聺VK}Έul#w5aIc TWPcbvyP}EoܼUzoO{}Y ^Ο4rҫ wȭ*@}j5PX(N ژZHQ6Os1c((*BM'c$dpc M=vWϢYgq'?Ț _WРO]7yyZl>p oKimNl ;+,8ul~jƲ2UT[]j)q`m1k.m0Nfx :uǔ#9inCv ;mg.u.]ҍ^1^醉2ZdYdu\7ZhT1޲zk\#{F)AjiE*hag }&4-;, K7H-[C:oqɵB]P`usvŚwrT~x#so۲r3k*fCUy&Uz}S{j*ݲ%=_zjMqj3CfjҕWI]H4YMzmfn ;ݳ`mhn:o2ο[)vfV]K/Xbů|mX}wy5Lȟ>LRRѴZ|'wAkxtYin_S0Vnrf9 )@Gђ6٣1bD=ZRVͧ^>ݲ8L޵VLTS~mxk1|2ytŝן9^]_44h͑^YAg]6㯃Lkxۋؽ>pOr56:}Si[ⷬS(8@ޞ _ylO$lJzFurY%0?,$͈FZHwII]Cr2DNWһ-Θ}WI/'ˡ+/l櫤dϾtBr4:yqrz*Mq9WI9)mUw'OJZIߧ5[g=~ܧ=JS /{%VJZI+i%VJZI+i%VJߞسm͛4KNT!4, :qi7=ЄMJwF8Q ;tRz؉J%h\!hBz4)@\Dz 3΂w7@IƉx!yиt4!]S'W@GAס~9MF#@z?%0'$oc ɝettROyhҽk$j^1>M.姠aڥ?=j<aX෠I$ }.JFp4,} t^h҈z4 }Ͽ ЇǠvPk42k4B@O26FOQ3gYΌEYoI#lr4AAwAI@!QЄn!MeYuAu(Ij,3woKh_ڤ`|@{X sR iŠ]/^헠q' FBKCz@g᷽v #g/j42{Q砳8ꀜ8Z7uƉā M1> 0~ GPz9=%},gq4 ;/q:)%tx !m?@> XhIZj1>O@+OIz'0$it'wAwJR"Ay:ѽ$ZM*aOOh#'INϓ$Z:)}/~zF= g8Zj^1> E. =# :#tVA7@iR> !hh FOABaB/NJs|GEnL)sf9Y oB I$xa<0ކv݆v".S%Χ :+;\ڐs(3@D, $?7 ":) XYvww)%jnwC!=ft h\hI!a't' YNUa9oO1Mӟ8 -҇%RMXJ%W+pFE]a۪ v|u=.L8[KYjzPeCi(O"Q&uL~i6"aEJQǘdZO@1R2P^*5Oc[Fh^.AcL$R0Ј`=`}tMYk -JEwh3,DV?+_Ӳ)fG}2N0cʲq7/ohOQo80մBhAzj Q0_2]=5,׫a(<&f=F16+R}Kl* Q)V3F f`^-9¢O_*.b"ʴ1 %&Ҳrqpxb|0)ONO%JĖqdB<<</i>09,'>qt<>09&&"}##!11u 92 NOŇ&qMX\LIqp/959'F$O>h7VIO@$J&L@BTmH?"Aqqxt?)I82<`$*(87vLxY8"N0`bߨ85AăI G8#}r[C}Pl`d68@Q#lI*)Wn%}M z]0AaDIT//ĎP29Q9rd4Uţc'&EcɄR}h-k| :&N%8>tp29cj݂;pТ;AԄ(ЏRc172/D _U#Vz(z+hu=)Y L0Z'P?262޷Q'k \ؘ2Sɉ$~xXZD4>0؇(KLe{-z-WG7+J(X.]ġ f3-6Tje_6-pvZ^}Z;(T<ݵV1j'f >XI%ü&0 j! %d:%"{?b<(&c9g傜+|\ Vsn#zCuQnNsCI z;ý^f"GxOv$_(˄{uYw w o›|B ;Rgc-Z`mMcz#~ X?m`=Kk`}VX Xk Xہu Q`='KaX @kX!`=zX+=|XG✊ qI`I`}?ֿ'i` ^Ým|w/uY>`zXO=z~X? K`I}t`k >`[`}X%ӓ^Kra`5X)`X =`}X_q8w֏`2~X ?e`}K›BLxKƥXw/š}z~X/,>ou}rXF `}X%`5M\Ozg*`{uX? wg$~X֟B ;S Bp\(īX8~XCKZW/š Xz'~XX?՜A?VkX X_[9/|=g9 ǀV`XKN n6!;%TrgVs~X?zX_ַ7TMU&-ݏJ??zO=p:ёϟ=|oBtJݹq5byu A%;Apyө;tzNg迩)'40A?ITƏkOQx.\iSx VRڌ"mp<@5 &&댜xn3/5GP( #QthfY$Ҩ9t祙 fN2y^4]nA҂,(!ME/4z14#Wcl)P uTDS-kGZѪ_Y*D…\zqFPЂөb y 33VpIҼ#eL࣪οfIZP*Bj*&bɨt*:*hmAE1H@h$t:Fsd[~gysotիW>x;m  K^ޥ_YAzVV0)ݻWYA@pPȴ<2Ic̣!2GȔ#_9;w ,G 6{vwɰ`_GfLLLݙ3'mheXx[ v+􅦡/4V.X,ߏMU ƆԜNnJMGg?< '''}᩟SPnykAЧx|kQnȲw-aP|| fsgqK/jA<@{ԕQ,.BO?I\+ eXӲ.(* =&vKȑӦۭnKK,VHlzΙӲ'KiIsfn;ƈToz^,f+n)i"WxDo%Ş 얾žV96Vfm˲;ݑH HR*mѯ dr69"](ȃx F*yͪxc5[xEy|앢H^G@d1<=|XհR2d m =d~wY-Jad)/# m5sMAm2xYYaRatlu 7+"bOBMڦ_8m89>+LJ J`T[iSX,G5yIND<̈́YlZU3kFպ\j|L kdr@ɌU-Y* d#E7`GO#)(%Ļ"Ϝ]\]Q3RvO6K/لaJY==w8v- E>S)RI"qjxo{ GʅB{}|p$JOzzUULp8ӲҲ<Yr)UrSN-,W/ z9먙Tt(o'K58st П;S GrU޷;w95 ̟,O,)Uq'Sdu&X]fSh<[]]Gk94 9$JJNLAID=$E%S4(nMwg.(ptPIC V[_8tT!-3@`DZȰ&)dQ NLR4fJjڨ$X_vөOB'Гt&2)ߗ$z,Yjg2ˎܝ]ۨ?/RӠUW/AWL UEN&4WNƓ9#焾*+b}i)2\y< %]weT5?-t\m?撝HO x~?6ggH]2t1)*T)sT?DP% *IU 2K *K2Kl1TT%C%'~]H򨴬^u,?8yVAVQ6^R»]2Ӓs.kZ.0,,sR\g_Lʨ,Qۭap9 .;&v|*\N5$Lm'pK@`3\+Z>eQZcN}VTFxg !vfK)2!\V6pwokuJ5-9}ggg|'˭ZQܥ:47PVTJT*(ɒh(T8|=Eeq_Mib(VaZz߮K TRUq9.>kne^^t3%I5:e|U+jVx={ -8ZФetM2U:|_ gD;O٘Lޞ@xMK09\eVʸ_D!q 3DoG(QY[tMMtiqAEܩx=={Kj*oPfTf((@R]ib:%= 9tKn23ǠCwu 1Ѧ^U%G/W9:fNwi[>kdQEx#Iޔ;&~Q;nqٍ.G )WYx4[T{DW߾8ī)<"嶻r <ܳT4i"%~d 9[M$S)+22ӯłD5W_y3~_CPudS[IKH %V#삻 kMV}nPϏܵTlW;A}6f.蔟>Vk%K Es\>UksMOiÓ&|+j":}Έ 6I爫X)^bO+;mq[ۅMK! /̆ }yvWw=|.8jǟsq㏿z?>!Am)[_;6ת_Ng IC*՘!JjM_1"v'-+ & q1lw]zs+o%ָ)"qq[ܤ/JȸO 3Ѳеe/3PzQWN(y%⡼J퉅 =ɥvP ːQ'-!{){q@IE]9rv꾌2O'+t/s?z!Y;i04 -//jJ5u]CM6}=+GFFE??PF4^KGH@mtϡM\6vBI{uY/S{K)ǭu֍}3r J)k&.X&y٤L\4)mR.hoҊ:(zeN=74e-eg,^?g󦯚YT>rxoWGEY~~ׅ]6}O_%.]v~e}.._7{U6+Ug3dsR2t͵̽un+NͻiMs'(R\9Z'OLOQ[0d#?/x\* -2UG:˛uͭ7ιeshO6FY8mWoߛkIԼfsף3D,1*Uy-yO=yvf2}^[!Ey ɥ).u]#VEӣDy }V˳r~Tv>r@N^FWʶS{fjϠy`vnތ{3<\)`}UP;~l<%Yܯs<ЊGfY?4xkω?tFgK9,o성W>OY;&b}}P[ւg}7$ ubyu+}$ϟu폪s/վ:;> ^XjԷ HѝMӕXubi?NDڄMX%n٢m]#cTG_)]fAE*֙eQkӠr;_+W~ bWEi?.'zJBVXNZO= *2u~X,fljW|zP%CY>1ȣ˟5Y:K>}gjK/O',9C>lF|Jy2/O=y A^J̈+GgyyD>MyQ>m<F _Uzԑ=+ajfo;Zں`nQ%#3W-{:&=!׾`X ƽiZ1\~^~ҴYLJ! FjQЪՍ򛜦kfa0YG,bb-m1dq[Dalgn?6,Q3K~/xWSD7so2dMVqWD$nvCvw2x?otJۓi{N.S~7~b*hz@hM߈ɦbE6j-C+o+zAo}3ڕ{yn Vmȁ\[ۧ-//bxXGQx '`]LK k"n*Ko6]'.4(\#JӃa~Yb^ .1\_nA| R= - 11mXHL\vr/}PxAVbp[CH.|(r׊ V&Sb;ZK،b k{ >nBV1ۡcoPߥN Rwq!mh|FDeQOQ7QQD5;/Mioo ě6k/)ēL+U,Է݃2Y{V*K^/.x_;oQhP껴~@i5Vٴz N[e翔a'FjuԬ8Eۛi{3mCpXB3 7k;i"/+iڿp;kշզX࣯s>ZbX4Xr֭;BOz:JOGzJ/Y2^f˘xv殮03{OAt2+\x[#(<vP 5>ZvA|a/| MBp@A0(b-ti1'sҨʹPk6~&,żK {>h/ֺͭmQ@'X̽i$YԺp-\7hAl p5Ok.|XƵ"-b}J\{-{3쯄9"ۗخV+*/cٯFW54k=C+6O@+X1@lB 6ٵl-b("*hOjuySz^%' ˈ $2Df A"3Hd "H&Һn"H&ډ#bbDLo4uXĚ$jDM 5A&H Q$jDM 5Ad %cD P-jAԊT D ^xwnڎWh h /b /b/UV|9C=iaTǦ:k_A,lfVqrzP7k5f uYCݬnP7k^aC֒k- z|=H$_t/ZC֐5k ZHcJmh 9fZ$6eGʺ;uwD45ɼ>Ӛa 0Kd jg$)S&TF?tH8ɵ9Z4m,p:`"Юvmk]0΁s!@ mya |q9l 8̹>G;lAk/Š:1t>603Lɧ0&S| Oa)L>ɧ0&S| Oa)lV>(ɭzۃ x^5{ށ2X j_ anεramG8>}kOӢd''7r.Wȓ4 ~ g0΁s!T`:̀48. !.0 .KR9\ls W|XW/@U1aX<g`%?s<ߩz VeX gx Wxހ7-Xo;hX :X_b[c(mP!) '>jL S:Ȕ2}Z]+.dHa7wG 6VaԈdNL$'#a0F(H2R1XL|v0NAkbv luYGHc LNY@Y9+1g%#a%vl!p ~ )6la mlfh m,p:`"06c16c 8W~]@e VB^^֎xk@rn n}E_awe'hsN lo:Awd#^"ζqd:2V 3gq"8Wۿaq1Uk63v,s/Wh+aKMfz^osIpٱ>ZvA|a^ %4B C7p fםƓn@ 1yQF: Z"W X =f óx}(CiJPڇ>}(CiJPڇ>}(CiJPڇ>V<ЊZ@+hxHux!=s1-3F{^BސoxA}͏D:C:x#odL72F9x#o7rF9x#o7rF9x#o7rF9x#o72F&x#odL#,Xccs*Orx czl_뱽kkkC-ce 12ZPjɓ۵_6bXL6R c\a6jq;sK=sK\69jΏATBlO`| N^'k5Y ./ع>h/|u$2w5(D~7Mm~{D6Mmyأ=أ=أ=أ=أ=أ=أ=أ=أ=أ=أ=أ=أ=أ=أ=أ=أpֈw2[O2?Q5Q{ws2o$!lexQuڱ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰ ˰L +R.uۉ|fkD=+6bOx/mա[ա[aX*?VʏU~cX*?VʏU~cX*?VʏU~cX*?VʏU~c_XպvV+u))ػ {7a&Mس {6a&ل=eZ^X.O{g#2bWboGp p&/h9߄` @wa}>`l-оcj0;(Ac/<r1#}i|UX ?,/hι+`\ a\ %\ p `!7!n,E 9A6 9 b`Nd·a9|< ')oxށ2X :X>a#|& [ U3/6oϩXBoUl w4P ڍ2nxj55:EJUT7qVb(n-@bKxvƒ,'ӪY;S<1= O;kj6f+R5+R5+R5+R5+R5+R5*Wr*Wr*Wr*Wr*Wr*Wr*Wr*Wr*Wr*Wr*Wr*Wr*Wr;*r;*r;*r;*T>GP*A#|T>GP*A#|VVVVVVVV DAQ@4 DAQ@4 DAQ@4 DAQ@4 DAQ@4 DAQ nG6lCT\#@NDNDQ/l|x^?-(x8ك! ;aT bèF6TlC6TlC6TlC6TlC6TlC6TlC6TlC6TlC6TlC6TlC6TlC6TlC6TDNTDNTDNTDNTDNTDNTDNTDNT R¨F0*Q)JaT RBB*P)J!T RBB*P)J!T RBB*P)$RQ)J1hT8 ݨЍ1xvnۍwn n n n n n n n n n n n n tnӍwN7;x[XQƤ VT,ƶ" C ..#$BDZH i!jw/?!aC?!aC?!aCsD B}-D_ B}-D_ B}-D_ B}-]k&fk&fk&fk&f)߂?`l-Poh*VV||||||||||||l`c#6F1 2'3$MH RʓZO *T]`Q"X.ȃBEeZDڵu6 f4M)t&MӴSi:6>uﵯOϜ3u'+X1NJ9V̱bsc+X1NJ9V̱bsc%:J-ExR[UQqqqq::IM\f Or,7i&ʽ':8덳8덳8덳8덳8덳8덳8덳8덳8덳8덳8덳8덳xߚU2JjW{oqء2wY}{cyqWxǬW*V^ʫ4-Nbȼkȼkȼkȼkȼkȼkȼkȼkȼkȼkȼkȼk_jR/5~K*VNʩX9+bTD՘UcjLT1Q5&D՘UcjLT1Q5&D՘UcjLT1Q57Q׻w?۵ӭsNvEo1Ziq%ll+|>I?3:!cȧ~mWڶxPL{+5rfq#v0VUzl1%˞ad/ =͏J;ts<4+.¢e-F,f5vΚ=5{XY1fĂ,8̂ì7z7rC,Wfa2vrere+\,Wb˕Xn;˕Yr%+\ ( (K( ( 0 0 ,PB1 ,4B=,Tf2 XhFYhhZpM=teH-n[eïE72{) UfKPM?fFקD==(,pm0W_.ge/ܥV!sWUV\MR$MUQ~ l[Moe,{vitt7<ɒ'=Ydѓg{r'_~VX]x^ԭY`M9nĎœMg*r"g+jj&jj"fLČ1W1glWԀ4gPawhw4oq>$UMFMqוg3=KП4lEy] UVzz}fMt4+ԴpjPlb͔CW ͩo+l[p/9xxexjK%e EekчXO+?k4OESvYN1)IG"uh0svmAvdAs4Aiܴ]^./mKG"rP.lgםXð^?} ~E¯"QJ&nX/e}=ԚEf^%lF%;2[բqZ/Y=4v|#E= {WM†!Ǡ!,rrHdߝo/+DzCc5~ZdTDS/fOui8]<8gM^˹sxu!.ՅVL+߉wݎО}Exo7X;,y+{tqu|Leְ4L8gEE/Ƨ¢4D[DLjc1"vvHy}Ӽ>:~>n~lV烎c13<ټ+<7:`•V*l(^(%OBx ZK&<֒EySnyerxZjXh5,!M$MUU Yherkgvk-g&otm8|;í-{~o>A|(aǏ/x?Oz-.L?O3Ti>? ծ]f;:[[z`] [^d͎E6*[U;Ӳ](cw5:]&L.sR%SfI^Xduިﵲke>X^uպJj7*Uim*6bc1ٽOS쑵d>q-K/ҋRAfW}vY:eTä%ļJ,kvʚf)kv@,SvʔcgSF*ٯOV~e2*Wze>YOVdŲbYm+f}bl,'xGFꖑy7{dͲfg,-t(2Jͫ˫fW{y5ݼړjgyeN٢S-:e2bO)d2EL2D -Ct;T>=qh=d=dm[a5~* /| A';|]GvYYS~ȪxHl[-5Z^5hlPب٨EMةhC"f"|KtBgcaW?} fVqY j9cVjj[mt[mT#QQTb4Fo4b*i6iaEoIWoI&ث^mޒVa^E^=oF=od}7}{W&ygf^Jvz=^s\kzw%,l/!{OG+yg;[ێw GlD=e(wPH7yv)nC?KίMUeZ5.d0ntNm-vkY>L|6ĊCX,EXtEwK4m ͪ;Y̪eV-Nɢe-bV2ͺ;YbN0 qƹbcflێ|ԡC<Ig aw~|{a[j˃}KuseSXbkĻkyy4(7 /B/AyiP^;KA3_" BdP.KA{~an*>o<#\t͋%;gs󀷇S5eVUѪ*ZMUAg=*7UU*ݿG$e~jWU]~CQ*]f)ttKYթ:U5F4-ǵvQ.t϶ʴCv(e eL7UfY_&.o~*Dʴ@(H%j,QfXFi2 PfK_VK[VwnY-cse3y{yk5^K?xd[5J;5ީNWjR3~ިF7ji/GIThD#GbO>cHkRx8#^ψ~FӧwEq-9LIZ2~L䯟/"ъc>§[ğ%f3_nߔ%~(CK_boaۗؾzQ=UTSUOU=UTSUO5VY%fX53&WU~gE,ɈFTeMZj(XȩmhF[e͘5c֌)$zF_e٘ec&3l̲UͨjFڊͪoV>9ia/2̧%C!Ñq?{ DKXJ??(cw|s񕌩дѴ_¼ "fGq#p7{qīx-SwV4l o[0o9xyvĻn\ \}x?.Ɵs|‡ Q򿲯[N@UO7ર@. D]uǷ17 7p7?Ľ~{n.~ [ C1:VP> amQ8lPSqp. t4/˸ະ@,9 Dsȹ_+p%*vkciuowp n`ixØ_BŎϡ_n6sZsvR0`qBT4b"0 hd\M.UM61~C!w;,q>KhJ]܆q}܅~c ѹ<:GyA}GQ+ټ:Wg:V{5X5X~yu"N։:X7 uB,PE2F3GFU|$e"ܚff wg_\泎W8~Ӿjf{>mcso9iٝ| Yl܈6܄%W̒+fGSr؀>l ؄6R噶 "~2kB5:Zni[Yb^ԋL x!.'/&wmrGqqqqGmzO",7xOZes 7VmS b!< VҪk̵jZ5sW/g31J:Sqt3ahL[qކsmW|pޅgCަ_[bEYtGS Xu6i6i6i6i6i6iS?el6 `1;0єIˣ:]xa%*(`-֡ы Fl‹x QD Mmz4eǣ?R\5e=Z3gdy,/e|߼ЌLBQ/EտU_TQ/EYo7 e[d[d[/۱\k_W5仅]1̔Igʤ3eҙ2L4/eҼLI2i^&ˤy4/ܢ[TsjnQ-E5ܢ[Tsn۪jojojojojojo2zL='@0; e+(*#{Qm*ϓd6MFod^ 2zAF/ d^ 2zAF/ d^ 2zAF/ d^Ha&;h&;h&;5uqyՠ5sA(8~$HUJUJUg.q*\WT6ա-{y*5*y*5. ˲KpGR-QEZ4e_*&#b> ҤZUjW-E^ȫy"ZUjW-hLhLhLhLhLhLh?Trw_xQ4B/3U<^ҋTzJ/RE*ޢޢޢRmƍhMLUB v…mQJ\P *qA%.vvvv{{ĎÎr)1E{ʱ*>G%C7| |!vU<=Ez:oUʟc:n ?M,4vLc4vLcAuZiBhvLovLovLoǔa0r _k ⏚KM̥&Q6*b}ۨ<Q" TD(P*@EQ" TD(P*@EQ" GM7aAU䩊M7=P NWE|+z]onݭ+a]wO#%?z~}XO, f ۩axfQQSV rw^u\wn03մO[)DֵDGMƲ0/k}DWU][>Y.TC[фUå9fޖg5eE f^e#^Ff]a(& hD4aтȇQ  qkx$.nw{>AX=VD ~,c(B;xL8I|R''uI|R''umv7f|[p+p;gŏc܇৸?2o ?Ϝᓡ==7rʹE"RufCC<)¤!á] :s5pk'$q nMi1< VXV4<i+v_WK(NH7{m~׶b{:)\+C7vSbz؀>l ؄6/c+a؎!؁a ?;^?}0I2/'ub,JlS)ۻ̳wg^e@vwe}OSG'EOϧeڿL.|s>Y'dņwSV!4aEuT]TS{ʴNqI(2eڥlw P>7y(:ꮎfZ{["Ymr,ճdUwoyOьE9[khZ3 G1Mf`2]m]sKZ-\mƍhM9a5Îj ;vP3fͰ3a74ì8[|ݺ亞_>,zsr6צ)ӓVitvܻ7.NgRjzԴj:]c]9G_ޝyi8OTקt/T(v;{h~.qc۝w:ʣN3=fK Eҳ␴#-c+y*q 䋤%HJJLy|4F|t<^/#(OΕ'ɓ [ )%r\%].OKcY+令KWs7gs,e-C/ni!g似GzU+V=rl+B"+TJTV)WʥwSS(:B)mPF+_l=\<}||B"irrQT((I۔$SLZ[).R[WOKye2WDyDyD*((KRRH^%*P6HYi?JVfWlyR ,ר_ST7 ?S%tZYju|I?SmCIjWL~u$ykkkkݕW,%#ٵ-t}: uuP~ek7M94\Zv6D^ Ն pQ%oѮij)?mܣݥ-RL-====-SӪWU*RMM2-˵jeVr^[\5ZrU۪|Mۮ(7h;r:rWDEՅr^ii9 BJg8_ co+ѿߡ,ԧSLIb~ʳR}}RHyCR_UZFTIIYJ}^SSyW7*6eJ) v}nQzUl{r UskUw/v/VKOV=ϫ^ rJIm?! i P&wD={:ܽݽ]pnS鎺(TvwssKƖ\WrUU%JƩTrzaɤIE%K&|6;JJT(U2KE+Wԯ{VyV=oxTyM=5MZO:ugg-ϻ:ٳɳWT+-S.=t?KQ^[:C]\jMYr,=U]y;uwNtOsԻk-o5x׹^wmrnnsxwxwzMoo{] ތ7jt_wokoˮ}#|v(W\11le 8u57^S|7n4M7U;wNT w!YӝoyF¾6I۪k}kE|1_Lė%K}})2_giWXvv]ٔiڤen):6!]RBvv;ydLۜ?~\Vr Nj8֦]yӶm#ۘ팩:ځܹm؆os/s/Qp _QqcG>lv鬃}ޜ;}pFrږc/A GjN*qqws挳Y pꈊ̨{ZVmX3έcGTg6|#,rP6ҹ6@٨":&g^y\wrHIIz =AWџJ (֒\oBMh3mCۑm@Ǩ Fс((,ԉhB{eE!{RiRTJfPtnL{aT7W3(rB(.u}Q-tU?E=5~X`;64Ez>}e7?D?gs\=~ =#|Q?r}9z 51Jor} Q9ߞ ŎHYƖCDxㅎ^ԍOБDmDϊGx Co-BOILBe*P1|ߎCc84ơ1qhCc841)hLAc JAUP,TeYԋCS{}@O&NSf-nEv5#}ZP+"qC`8!0qC`.낰.CW+ ]qCS~O݇p\;}4š)?s:^@V_\.\ ^c7^5\߈h'څbPJLRГ,d5{y̓落픻+uߦO,t}|gdb#ٯ"wz T6x=;ڝgŸ &gŸ &gŸ &b9b9ph¡ &ph¡ &ph¡ 쁣'NꄭNꄭďS \]q nŒ 3&̘0cŒ 3&̘0cŒ 3&̘0cŒ 30 30cŒ 3&̘0c‹ /&tˆ &la† &<`‚ & 0`€ 00`@'o⿉&o'x '8ǝx)3CD!Qf(3D" e2CD!"dn4?fHoHo:*Hp#nv#qzD+ wIbGIs4GIs4GIs4GIs4GIs4GIs*7RFD8jb~o$$vR%QRN$.JIY;)RFR_ TTEfjFIN䤨:6vNrڙHOJ7(i'=Q%='`,^‡z|LJz|LJz|LJz|LJz|')i&)i&)i&)i&)i&)i<ۈgIJIJIJIJIJIJIJysx\݋xދxދ-ZߡE/c!z 7y`<(nfG4(,ԉhB{Gx/EPApWApWAp E>*a+fp={[0u+چ#ԂZQD'rL'v37Cp37Cp37Cp37CpWApsټ3c1̓fhnⱃ?Ca _hBOgs2ⱆU*M?J;;wsgq>?9sA&Bγ1Pz5CP>CP>CP>CP>CP>CP>CP>CP>C,P,P,P,P,P88888JwJwЧx^3"]HmHm&.vCo x[𶀷-mo x[N)͑1>MЮ>M^B'ß}z^OϝOΗqJy 䜺.#I]$)X-jV +2{z2{zr^+/iEK\v7]k8iߵh2mv4Uk}Uh*cH\A{ TF7p9xF:s&Fx|D仫937v0h#BF0OXs; y寮Sfh(]}r,d 4swعK<8DA4걙ĩfjZlf4qF&f)sN3838 xo ?}oeJEyl>kgY>kg-l>ZY>kgY>kg-EEgY>>ZY>kg-EF+VVv[Y&Y&m6ͻXҟϻ*7Oӟ~HjHjHjHjHqnc|~ʞ -i1HAZ b -i1eV]+SV^I+3=ߵ^-R -R -R -R -R -R -1hAK ZbĠ%-1hAK ZbtĠ#gӹ根v54TCCs4Ġ! P 1hAC ! 1hAC YoTCA bPĠ s8Ws8W]tjpjpjpjpjŞr R8¹Υp.s9+} 羁s8%9r-ƹ8Ws58Ws58Ws58Ws58Ws58Ws5'rcu#u558W&gϤ4gϠ^c=9s\ \)8gs8gs8g\ R8¹Υp.p.sIK\8Ĺ$%q.sIK\O ]]2{g{g{g{IK^Ľ$%q/{IK^3M@~ts/{IK➁{%K^g{IK^ K^=߽$Ľ$%q/{IK  \4pEC܊;qg=ǝwZY;kqg-=?s¸Ɲ0q';a Nw¸Ɲ0q'L{sޜpΏ@⾩pUT4s9 nwø݈?%&KtD_K|eܿ/Q5Z}׹^5\nDQB1nw~w~;WWCŬ%O-@Q Q Q Q Q   kc-ta@ta@ta@!ә 1.Wr%.Wr%.Wr%.Wr%.Wr%.Wr%.lಁ.lಁ.lಁ.;g2pe \ne 5pg+q5pUW+qW \5pJ4pM7 ܬ͵if%niঁniXĽJܫĽJы{W{W{W{W{W!`8x+ފ8xXϞEϣeh9z z bO>'DDEoDm{u@ѻh =Ԁ,?d!Y~C,4#qقZQ@[q n-ǘjjjj + + + + + +]vCq@I}P;J~hCZV?~hCZ'uX?۹=ŞWr9݉s t]jB(>D[V mGpÍn"F'~'~uW_u% HR/ XXĘkkkOp\Q]r iG"!# xC-k:qQC\.>mbB)Ϝcml([1G[O<$)ʭnKC䌜cg {^sx9vV9vV,V+e*YexE˜JE9Tu v &7)&Esܤx_W49MMqbsܤ7)v8M&EZRFd2ѥ/_&I7)ooO&%7)GCv{++ƻ77KtP(Mt&&9GJ*+!}9FP6">i(=(=e(=issW(=-(=9JOZ'9GI:GIa(=Y lglɳ稗y>7^Om|d mBñIߞ9e`m;syߗٜ{>-?xKy$g{cm3>ċl}ϭ^ꔁm喾yvE_4nm |T?L@UPpWZ{]Z.u AQoJܢ@TԄ j(0u9-#zIҪy<3'̜~8s&{ǼCo1+'g~L8=7jܨ c;Fu7ۨcbq;'^?I>6hʉ+]>맩[|}Ǡk}}z Dkf=nCt9'wU}OXA~=z{}?AGO;wˡ ź"ݛ[mw&=mv!b/N[x:nKo'MuG'u}>}4ͳ;>5=~_Wo;8.7lB믈uGyxwTvpyg>pJ. ?u?ȉ=w}ݿ~Ͼ̔\/?ȉL3vY}o%m1I&aVGeӵ[i[طt[kzOEuU>~#A~q6p}Ujg{Pkg\YZ>~wԽi]ۛҺvi[W95z*v[Ҫ[Uϭz+ Mfɣ'Fcҟ%͞grbKޯ>N~7IԐ!$ lFl, 6e0C،= {'&I)|3S938srp.ỌczdddddԔؔؔؔؔ_|mn 'H߇Uo:}Zf =K߫ז!dIUj!CHD- LW b6e0C،ق-mc{v`GvbgvaWvcw&=ؓ؛}ؗ؟88/r_P8#8Ɨ9cwc99UN$Nc1Q嘨rLT7plTY8F~T]%\erFqz4c˕\\83kmIIWL{h~` SF3Gxhſ583Jzj>Nz2jk&LdЌ ь:6ؿ-;3C\ޟ8n{Gk;#~O8?)g.B.b \c=sݖtf~3]opdy1qg<&=}nˏ(ь03831qviq9#$Ig$Pmkp6e00}lɒp+fo;gvd'P P oe?d^x %`p#mow$,NOΕFǡ8|U{O"[M٩gvꙝzf٩gvꙝAz >q2aJzhQ-]zhY-e=yzhڦmzhF]C%=ВZCKzhI-%=L f^$? êC=G:N=S:N=S:N=S6=M/%u_RK~I/%uZަSˋjyQ-oSרkNS-̸5yzީQwkS;5ygHs՗;jzQM/E5KMRjzYMS5j5}&Iaߜ˒Z\ }}eI=.Cu&¦=59=;*GH:ÏKCJQ[UJ~'~^yinLQp^V[?;5tۏ Oն6))5ܜ-bka[c{v`Gvbpve7vgoa_c7᫽·'K럁LJp-}wY󲉤l"I߉kPN\('. 涿gTg+*VʦilZ)˒ dڳ-يziѻ͆剽;.cz3хYytl>ݴCg=z+نPpfk>ӡ>ӡ>ӡ4ա^Js~{$:ԯC:Bi.BI.BI.BI.BI.B:ԫCi.ԫC:ԫ?u&(TB(TB(T>PP6Mxe^لW6ɫ>y~A_ e2cFZo*+e(4F& /KG?=\R.gW0I4/"/"{drnr[|7l<j%R"5! l_r/:[{-ڎ#DrNTqϑ\{(%qZO |: tomdywuH@4c ҿb_6 o~4i}&.pI$eVKg*kĵJZ%qziGꑶgC+\Rz>鮚K/bm2vp绞%wrH=&]ii$c1v8PL]hi4c]m]m}4)+J9JkϵZsVy[[V|}Y*gʙrfY*gʙrfY*gʙrfEfEfEfEfEfEfEfEfEfEfY,nj7KRfvTY,U{'{7/?p q0_ġq8Gp$G1/s4rs_᫜I)|]s*q: ,~OW0z^W0z^W0z}9?*^ŬW1Uz^ŬW1U&yLod2 ýG#S4xx<£̚ì0׍kY"YQ%[5۰-˓cٱR4?Լ:qd"Z3/0A3c%~.ae{,!?͉p!q1NFH:I'3o+Ă91}*eǼ19B93cs#33̌93c̘33̌3c̘33>G(gf̙͌fƂsrfƜX03̌3cA9B͎9cX0;V̎̎9c3;̎9c3;͎fvc{$+̏yBcX0?>yB}cX1?V̏ph2?܃=ً~T)m6MJvGe0?1rs-ܵ;o45[f͖Yn7g͐Y3d 5Cfמol?}aS4_ѼBJY2+YfNYS5;eNYis9Wڜ+m5;UN9KYs9?0Ym d)XYYm{N.n18F>~=侮yG洜9-gN+r洜9-gN˙r洜G9[V0n{4Uf+|sr9b_\L`}GgT3]L3tfv3].}RՄ`` $mp4& Imp43sI5EI)OP`O․In҅uf] 7MoΛy:oV>ͲnVםNu;t^#tݬۡvn W0o}o6TBu@Y]CЅi;nTaqV7p}[voZl;iCt̢Y1:fQ,Ecu̢Y1:fQ,Ecu̢YthzKҪsuUԁtfݥs4S䵠 !g_`C6bdI0ÒRpxN*~^ϫxǪxǪxLf*yJުdy0+R̤}ߞReީ2TUpK33W3W_V}1p)1%ьaj]U֚5l?o֚5{qgܷmf:,l uyۃ_rp#{#ٚ9KUVqފb;؊3W'30 \ :r}IVE8?ͺ]>ꖞi,3}}k=m_o{{֘.zxsQd^Ϭoz?y +ɂ~'& <[zDgWgy,$GEL;,:d KYF1ݬ/ZuTgYGuQuTgYGuQuTgYGuhhututuXGuXG=LњYeͬfVY3UL5mt[3L5So[3L5So[3L5SoazX֩uazX֩uazX֩u*pz{h~` SFPaʹ83׫s\>׫s\>׫sR3$\Yla%[5۰-o&߉JV:NSGw]~wu*NVUw߉߉ݣ~EunRnu[ܚ,ܖm088^2;~θ3-3=3YO3lf,Mx$h`p3Al¦ 1mc$rD19F"H۳;; wN);Ej^Ej^Ej^KEsAzt!|\(`4c~,7|3n{ j^[z9"Bs\oY%W{/>LL1uD;໹;Vv Մjn s #l V܋|ǿ@߈,QTv7gLߜ3}so͙97ga؈!l-q' y7&Ve 3!r&D΄ș9"gBLܳ:nW-L.z('e&|pa>80|p9&U\U\U\U\U\ULÜi3 s/ aT;od# ;g0leYxҧ־`̺Bݩbpj,3v6;aYw2[a?Jakp;tʕre\)Wvʕre\)Wvʕre\)Wvʕre\)Wvʕre\)Wvʕre\)Wvʕre\)WvʕϹ2,{r\Z\ɝ cGѣ?zG=Gq43L9x43Lyx47MyV/}Fg}&5{M彦^Sy\[;7KOv.=٥'dғ]zKOv?7"i'Mi4qY4&xOgqnD:I>s#,!,!,!,!,!,!s#87P7)`Lc0} 1>|@>|@>|@>B;p1:: ~&τP?gBL 3~&τPw{>~+Hr\Z\sKC¯*ˬ*ˬvص^`?؟{=sc?؟{=Ua@~@~@X[kcm}>Y[?kgm~Y[?kgm6hop~a܉0CeY] 2̠.3 2̠.3 2̠.37dIdIdIdIdIdI|FML98܇K؉εas{ 8[Kcv9X;91983L] 9 cs rAe{^Amr\ M7-7 75郦^{o[ч~Z݆됄`M<_{F!l }쳏}ݗmŽq?B)1n#Mygǽx QTBKC8/ċp(jߑ{8^#B?g,?R /Ǒ8 G08q8'5x-^㤐eYfM?g>ϑH2$SN?G"ɖKO:G"D='rnğ3Ft.vdIvd}mɧӺtnD'pnDIF$js# =Г =ys#d's#܈s#RDRHJɿpnD!Q6ೡO[2hgi֜fi֜fi֜fYzּ5gr-r-r-r-r-r~3{71uI'^bU3I5#U3qŌ+˸+˸+˸"1qE+b\W̸"UmEl+f[1ۊV̶l+˶"ml+f[1۪gCӄeSxmEǝVİ"1a +fX1ÊV̰j3A ~{īj~^ux=N X҆)xǝ9Y@RIݐ. ,i%mdIUTeIdFh 2rd:ﯨ{ߍ޺cw_xӾ)1wv- A0]l.%ld UPe DXB62jp4xPfiVfi>k:'Lbf3YD"fE,"f1Yl`EYdEYdD$",cR!b 5[7 ]߲"3)L!f YyG) j->+ j , b X@blEἺЄ9X< {> IdIdI<9ކMs~|ća>sqg<Ω¿w|•fy}\>.d Džu׹GX*?OXK;cig,un 7܊>c 6 X]zS؀kl&wƝuV:XQ+`EuVQwEcGa[ZVli[Zs[bKCli- !4Ė[bKR-R-R~̘b31Ō)fL}11>ΘS;cjgL팩13vΘS{/!x!^CqNjq^/ ̪Y2VfʬZU+jeV̪x^qހq ވ7x ފS688xx9x?>C|ù8>0S]߁5,щe$6va;lcm찍6vg]\._W\ÐaFaFaFaFaFaFaFaFaFaFaFaFaF]KC¯<zz}gnd9ldݡ;tWy:p1::/XKp)2+Ѕr\Z 쵝v^k;{mg쵝v^[k+{me쵕EEehcm,Ŷ6bXlmcm,Ŷ6bYl7f,vnŮgYa+}E1qd1ɐ^4L S]TĶ;q;`츃wv;q;`x!v<Ď;bC8f1;qf}:/_RL$kN捬9ɚ9>A'&3dI6dI65G~  va'va'Nq~^iq'pݎƅ{|@ ocM659]_.`FiyXۛzݧy3f̼w3nfۙy;3og̼1󶦴A7:aShe 1ndmv[YzKocm,oz܄qcۧeM9?7ݶ]`>*C'!x!^CqNjqDhcm쾍ݷ%^궗8Gh.KW8BFHI # tKݒ@$- tK%O$7ěv<%{J`}}~БxHKAtБfNOϺ!iaHZ>iOZK=k_G'9K o޿:~oow,= +\xkqe#W9~&ytHG!y ^9n{jmi#$8qW%!>_ _ _ApK I3 a wal V `,L:ꐎ:#aK/aKR iԴBjZqs&!iHjRF)-5<,0Ozꓞs(TiN܌šycK\< p^P{gllw6;_HQ8XxX+YF2Hf,#e$d2YF2ښCt.KgmYt޼4l::]^Kp)Ki르n)[JҺ9M3iqǮɭz.k.uoͫ~ߺ 7F^{3i^z%vI/#e$Lo';`G#xxxxxx a3l|ϰ6>g a3l|,!<=XJ̼K̼K̼K̼K̼K̼ ̼ ̼ ̼ ̼<<<<<<{qO0gEf\dEf\dEf\dEf\d9fc9VoΰAa\` 2-2-3-0-2--02-0-0Bɞ}Xfw~vø/"\v7+q׆<-1K֝nvi~O{'=;`c-ERd-ER|7XKNvc'9S?oL_2&~/%dҗLI?aO%dϛyzt1KsT.%SdLܼ7q&nޤ0ic6oLҒ Z2=K& Y2!K&dɄ,TPJ Ɖx ^8 o8oěfoũxގw wongo^gPV?qуU1~g/7⿱n͸Xˎ^%;z7a]}]}]}]}]}GHV725rvvve9}AN_9}AN_mٲ<[gɢmV,/n䲲\VrYjaJV[I"mV^!{>%o^ |x/>^ |x/>^ |̇|̇|̇|̇|̇|̇|̇|̇|̇\wݦwuA86N>o ,2,M%.Kn \t. nۤ::::::::::::::::::::ZeSWa5ֿ=:~ߣY:~߭w:~//[߭w:~//:4肮& {8LJ7UP*Vn+aJQ=n%[ +aJ(X PVBJZ U+j%TPVBJZ U+j%TP?P*VBJX +b%TP*VBJX +b%TP VBJm%jUv[ `50n5TPVCjm5.X *A"*VDUB}cnbܪ(]pS(5*ِPXٰ w4dpu&^װ'ڰpCc]APlL860x8^Jnl|N[t¥Ou?._D_Yrss-5n[xr}îg7w'\a+Kwݗń'1r.f<. 7.ً?H{Be-x 7mG(׏+\>.\r-oŖ.wZN{A|§=nks y[WZ6;[-w-^Cסe Ԯ%#$\q<$ɮEk%N0uCb0"0"Y0-a\7dtìn膌n(놲n(]an aT7ͺ2:!"0u@ϨϨOOǪz3=ӪvӪfޥڻT{jjoVY՞UYޥڻT{jRQUQ՞U]KGU{Twf.vFgU{V3QqWq՞UY՞UY՞U-EjϪޢڳQHU:ViViViUQޥһTzJ.U-*=ҳ*=ҳuokIj9jJPUQUXT|@ⰽa>\Dž3vzKCniĢ7_A+δWi8^^^^lyǾ /wߑ8GC=Z c3Csu-t۫jx]]Op ވ7afi]~G^s_;]~{²u_rd|s|v{G]u MOS|sh=_w.o.Bg,E~ִ5wz&0)p<5{[޶޶޶޶yM^ӥ׾t}v5k5k[j=`0o91gGYS5Ǭ1pz+Yo%l:ƭqkZf 5sĨ51j9sO̺t?FQk`FϸQ_16=6=6\ҿu\q:_ףzt\ђן,)6϶zi7SzdJL)=]{nSQuUQuUQuUq5Wq5Wq5Wq5R)uR)u'QyHE *2")Șvլ]529V2:cdҴ*MҴdU':ɨNƮUM*4BQ*PART!QQQTgDuFTfDe IUUMQld8YKVuUdU':M*U eT(:Y٤:cTuTgy2QUʩRNr4JmXW&{dO)kl5{|\L+/rEE@eAuwu+*&Q53 uu/erSLl{V Fi'aIph2P{wJvevW^z=|^3Ir~I瘱Q s9{X߮cixf]n6{4{k",.2fq,Ň5{c3L.2frTj"9a6+9c}Li1>cZ}Li1>r\i1->ůcZ|Li^ ޫ{5_nƗk{L{r3\{߯Ǵ3˵Uy/WoF3o4F3?1~_dQs/̽~_n+:'G݌n6>:'8'8'8'ਟڣ~j~JiiiI<'G;xt31^f}=Zaǰ?齧{}u;9IÑ2w_hvx ;<Zukw}[|u_yݽNi:+1:^g{bW>ާ{+-{➧{v[:^}u_L{tZoާwܔ{ڞm69{6 ՛y؄ k|`s1EO>ﻵx^=^eO>īpA8!?ﻭKq> "e|_yϫ 7f܂[?ζ_܎ wgrƓ#n]m}|gx1 aGLsv Cܖ{9ĭb ~Gs!n}+,|:VҧSWk4 >tMgnRsܤ&57IMjnRs$&17IMbns$&i{MGkq(^07(7#?Ʊ8ox+ކO) w] wDxk9N_q*.A2|E| vĝ,q'Kwĝ,q'KvG{۝ w{Lk^78`ӂ3!?RʏT~#HG*?RʏT~#HG"?ȏD~$#HG*?RʏT~#HG*?{̿k=_~?CƤ2&}\z|&5IeM*kRYʚT֤&5Wu&7IM"oyʛt+xta+eg;g_Aw.RO*RʟT'?Ir >!RʠT2(e;YNd;c=T{hDzJU{<{x!^cO셗{].^| ׅʿT/_ ǸL way2k~=ʿ~^2ia׺3jzTf23ia vW Mq[NYt`S]?-kT5lM̞kZ%.vK]"iHD%.vkJkJkJkJkJKݤvnRMJIi7)&ݤ&4II"MiHD$$&4IIS4IS4IS4IS4IS4IS4I֟ʹ-A WJ\CE?u7F `n͸b({B%1&/a0I$L"a HD$&0I$L"a 3)a&%̤0fRLJI Ӕ0M Ӕ0M Ӕ0M Ӕ0M Ӕ0M Ӕ0M lkk4%H"=ң5|$ iJD$$ I$H"A)=HDz$cRzLJhJDr$cRr4%GSr4%G3}m:6{ab8v 1)1&%ƤĘhJhJf5L8Û'o[\)~e6Sl*qƫq|Q9 >G8 o8'Д R! ThJD*$ 4HA")HWkĤM=)ݍz'&i&ig_i,xW6c={V'LtbI=i[kkClf;4ۡvhClvlvlvlvlvlf{l!=d2Cf{llf;4ۡvhClffkffkffkffkffkffkf;d SLa)L1)0S2-2-2-2-2-2-2-2-2-2-2-2-2-j} 竳Ьf=4YzhCЬf=4Y2Cf}Ȭ!>dևYYYYYYYͯyC9Va5 =Y}]& BYP5YВ6ʂPr˲z&܌[pUC(BʇP>&j!|C(Ð|ɇZ^]ʉPN ɉɉɉD('j cJVdE(+BYQeE(+BYʊ!Y1$+dŐɊɊbSbYL1)ђ-ђz0oށduyҒ'-yҒ'-yҒ'-yҒ'-yҒ'-yҒ'-yҒ'-yҒ'-yҒ'GS)52$SBʔL eJ(SBʔPu-\Mu L(gZr%gZr&3 LMLM [4-8flbJ2g\L Ĕ eN(sB3$sdN3Gݑ=v'ݨa({qVc Bܓq~>ߛMͿkԯ98'#xH?7xS0ou;}̻|xR/7bA5^}c|jO/Jx BBBBBFMæait%z6uOdw^;B.d5vv:BֱAPax8oQ8o›G8cqނV oǟSĻ8Ɖ8 {>%( \G&5tMk"]HD&5tMk"]HD&5qLM;SӎiԴcjc*vLŎ1;bTJSc*ٖ>mqlŎرKeY־7gY;%bݛf"OKq,HF"5fϕ;6ccsڱձUr$igLq# x^{ cc,x1^WlU8 WxR(BJP")HD %R(1/yxlzvK3̤ff4II"M{p׹c34mR3d2,p]ζD%b-kXKZ"D%b-X:ֲc-X:ֲc-X:D%b-kXKZ"D%b-kXKZ"D%b-sxݤlg-Yvֲlg-YvֲMLH%Ɂ"bXE*"VUD"bXE*"VUD"bXE_hUL V1*&X`Z=Ѯ:[$"&ͽN`LbIL0IDL"bD鉘D$"&1IDOy &1$"&1^g}}8"ֱED,bXD""ED,"bXD"{,b;"a5L 0&C"0'^&^&4}#Mi M?'44}z]+~U"MiHG=3LhHof4{ٷkHG=f4{'+dn^ Kq52\ ~p=n2܄q n3;A;'h휠sL9k@svN޾WY7[>5rF0׸|-pd))^+&«pA8! W*x\0K=o ߿߮|ms۬&].gujо b]Xĺ .uA b]X]0 Ft.#`D]낦.hꂦ.hꂦ.hꂦ.hꂦ.hXĺ .uA b]Xĺ       _tYq b]Xĺ .uA b]Xĺ       R]T .HuA   ]0 b]낆.HuA R][Ǻ .uA b] ]Xĺ M] ].HuA b] ] ].uAc FtA b]0 b]Xĺ M]M]M]낆.h肆.h[+dr x_33Cp ^}p׏x#u~zs' >sr|\ p1.Af/y|sz6nՆ[VmUnՆ;`Vm6فlN鮟g;ڞ?tV[&ސ=mLEXߝvC \ F~)96zp = l$̵ ZެY>.*uLw]qWmUw]qWmUw]qWmUw]qWmUw]iشl[uV]UWmy `~6#< XxvGcI!=ҳ)=.'%Dq2Ka8,TVU$KHE(@dz-RhZ)VJRheٶ;qF ?F%ƨc&vNG^7Yp>.q)̆4`Tܕ&w]ir623?4MS9|rahÔ sy8ҬnzgL?/_e&eԤʶx߅SG'>ttԮttF9:#GzGzGbH=wDFґ4Hu$:rF 6G9=GN#Ǒq8rz9=GNO|X^#z}D>ׇ^8Ixދ8q Nǂ}__ .Ǘ|GW]ݣ{tuO}%(ỸW*,ʸgYz߈,MVGďB7߆~;~*Vgw!k"(r"(r"(r"(r"(r"(o"lp}k<&Ա1F0 A13y nǟ|8].Yve;벝uκlg].Yvm;붝uκmgݶnYvm;벝u:mgNYvi;봝u:mg].Yve;벝uκlg]lEgq.b\~s]5.a? ܆vU*J$ꪶ&UWKRuT]-UWݓ-iamd9瞓8XH)#e{l푲=RGH)#e{x0q.wu憰ǬwD_z_ Ư|}M_f=zKr>3\>DZO`,lEEx1^x ^Ax^WVU7eqouc?t?] d2O;Κgp6qq.E⼿E_;_Wa<)vJAnP%vI; ap;kA?yP;EC}9AZTCw7x?'`g]u~n>ݟyݟyݟ;?78}y5qZ/p?< yh)oyIyIyI-1$؊&g3h 2ΈqFO1εs-9vxa^vB!<Κ§Og݅\d9u۹.ْq 4[fW>^ZЭZЭ",7}on}k]V<&?u܈,l S 2{ ?jp>.ܾ! 1nߊmc2[U nA+[uͽb.y˂NzڂӲ% |Y3wsy~?g 3~~?g 3 3 71M _At= 0^{/e2^;w̥)_2s<Rƿ/eKps<fWWWWWWr3s1!?3:3:3z0w'1Gl#OY|S/////_,~1_,~1_c},>X|c},K,K,K,K,K,>d!Y|CaŗY|ŗY|ŗY|ŗY|ŗY|ŗY|K,>d!Y_?X`,~Ň,>d!Y|CŇ,>d![ccl}1> [dXz?Kg,~Yz?Kg,9ZzXzXzXzXzXzXzKc},>XzYzYzYzYzYzYz,=d!KYzC1>{Yz/Ke,^{Yz/KeY.+,+,+,+,+,+,+,,,,물sV^guV^glx? ::gllxx~6x?::z'{$w6A/>KK|/A|13d%f>%f^f!3yCf23/13/13/123/3Af^b%f>%f^b}̼yfKCf2󐙇 ]gu]gu]g߽컗}WR]aΝ3\ާ¾+O9e}w3\Vwʾ{pYa]aߕݲw˙we-zfxf3[VXwuWXw9bC{u:뮳:뮳:Ȳ72a ;uyYS^Ν2def2>f]b%f]f%f]bփz,%f]b%f]bczY:d!uȬCf2YuY/fef2f2^fˬ{dփzYΙuY_XuUXuȪCV=ȪCV=W%V]feV]feVU1AF=Ȩˌ:d!uȨKzQuȨKĨCF2QcӃlĦKlĦt.0{޿e;}':\p# 7f܂[? ~ ?)Xe;wnfvvF-7wr9Vcvx;hplGK2Uٖ׸\_wZ0?8$hGy <<{o^em!-ĶضbBl[m m!-q81`[`[`[`[`[`[`[`[`[`[|,pqt;{(>3)|gl}(;|< cp1.A_𸾈/r|_WEo>~kQ"xcp|9x e[澅oa[澅oa[%x4;?؞}; Zx {;'omKPWa)P5>~kQq Xp3n#N܅QY*'أ^܇w46{?uyBvqrye} Nw&>O{`yy?wg+f~ہff#H#r9"""H"nm`q3;L.4"E$S8"EĔB@D`1?bBDJMJ=my{}~~<0vN;mW,^P X/B^%F݄e7aMXv݄e7aMXv݄e7aMXvٲ^UkX xaY PEG04ip C#| MϡNg ZV,mb[V,mpXnaLJH5f$iMiݞn`M홄 ƈKF3{=pMuƿy=#)FVH0H9sF|#>H}!ѿ2 Px3>!! C>#aB)(<1C*,/B^2JA5"R42{H tv5tmG{a"?h!ь=Dx?WqF~ƨ*^PdbƤUbz^+׊!MB+W0{E+j䍌ov}b3/keP+Ԋb@Uc| d2LdxY*dLRD!MoU4@:d=V8 Z\+~?Lxݔ%,y^`oqofxhRr:cWeKʟ_}f5|%B7Fsh] kkaQ.ӬCCfa8s\`e.2X V+s\`e.)8 g,|Kh68_!-a` uÇp>1za8@cp >94IhS@KH6om+6.{N!h0vَ18q 8v ~砃7˒&w${0]Ӯ/EE!$? .0eSr=8]ծ䯌')S n Xb!$ADB RfSXU;VՎUcUXU;VՎUcUXU;V. |X !AXPe( XTDZXq,8tK:%ĒNbI'XI} \>CPQ8 Ghp C|!pE" נo n_ hԛ`@ I ݍARN ߇^o? pL ~ Si? 8& dE ! e^r>,ˌ6S%,_ T+.l`;˸.fE0itf>&dSck9B_C1e¨QlJ` E@KhǼ1v̫jǼ1v̫jǼ1v̫j.gY հXo@ 6~-m =lwa; vB3[Çp>1i9 84§ $706 k06 k06 k,/,2RGz } l7$,yIb^?AnF; 2vJc~_xT*$<(*!zxݸ.]g8&9\L9{8^Kw-q=8>A(|BF3hSpm9~;\A \on_F#'p70?@/S?pF<!X#Cǐ ca"g < `qR~FC~۞ch c0r^_!Z ^}yKlcO6y5kh_P xofbm]K?4IhS5\02lAC1 h8b2רWѺh/B?OEe0/*̋ *a9V_ѾK@&ލǢ^:T#?0p]) lFzR' |WtGH>-q<-adZ֑ğҟ O4dYρ<;0!úg2YϬeVSVGiFچY }Czp>8 84§ $)8 g,|Kh68_(iQT .I.I+%9$9$ÙB! | p'ĜĜĜĜ|||||| ei,bQ/E(_bQ/E_o7byX^*ecyX^6ecyX^6ecy?+|~ 5`6x~ &6lw` » ރ\)#p \n{a0\>CPQ8 Ghp C#4ng's`N-p N8 _p-n_T4F0fL#i3`4F0fZci9fZci9fZc̴3L+1J̴3L+1J̴3L#i3`4F0fL#i ;ձS;ձS;ձS;ձS;հS ;հS ;հS ;հS ;հS ;հS ;ձvc:vc:vZ`5i vZ`5i vc:vc:vc:vc:vc:vuza[Vs(Ft,KLk1*̴ 3L0,4 3L0,4 3L0,4 3bQ4F1(fLi3bQ4F1(fbi3`4F0fL#i3`4Vbi%fZVbi%fZi&t C0T C0T C0T C0T C0T C0T C1TC1TC1TC1TCP1l 5CP1l 5CP1l 5 oaLrs%B71jLd1jLd1jLd1TL6Md{cݬhw཈fſŜfa=X}!;YcXK;#lzcɽXro8+ְVcV\.m00fcXÌuXnjuXnju8G0f#q30cMf{i`QWbva:vK_0+1d C0d C0dC` YÐkX;\A \oǻ [`XrKֱdKֱdKֱdKֱdKְd Kְd KֱdKֱdKֱdKk,Ku,Yǒu,Yǒu,9%GFcq[Ɩjgqc{<eY1fV̹7*c ns[ƢUƢ岸IW$nXuk-v]-ST2jܶl5Ƹ1jNY[ &ldn2VbղT,<[f YCXCeP5Tf YCePYGeQZf-YKeR `!a8@cpXGeQ XGeQx5PM5PM5PM5P-3W2s\!3Wr+_%-b_CMJ6(6tAjjP5D4UCDY`)/B"Pb`ݢzЩtAzЩ"TrAzzЩxlކPMD&tDj"B5SMqkoO?* BЕ?ehgl_CЩ,"T5T* "BeЩ,t* BIQGuP]D.*.*."T:E"JuRUTQUTQUTQUTQUTQUTQURURURMRMRMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMTQMTQMTQMTQMTQMTQMTQMTQMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMPMSMSMa%t/ `0Cǐ Pxo0F( 5aXȆqx &0 $_jXZuXo@ 6~-m =l +VǂVFu(K`D`MSHHUX%U:!XB,_˜/? X_XI`U%Aw; 8q(q(q(~.HaCq)q)\ ׅup](\ ׅT e^:k:a%!;4*‡E_ ~*< L~ l!$. Q}}ሸC)|"։cGGBX/FO#'gQ(6 dspCh14Θ2 y={ ̣ͣKYŸccv88yWͳ7e[2SJSuKEkmyϲtrtoBJBipBR4 ICSfɄ/LZ.J:k؄ M Wlp-i|̈́I ;Tn^g>RSW!IMsL.aaSXzDzT&=#=g5i̴W+~UUGүզRTc:$m6MǥwwMviSMMnisi,}$2HGq ttN:gt^tY"]3]" 9IN6ݔ{ yC-g}ɯɯw+J8@CLW|_GWWJxrrxr2D+b2Oq(^'SJqPY(R*P^V^G*˕(e+qk1Ky]y]|D٤%UU)J[-NP*{ǔDrX4( qQ4)MY9#>|\+3#]8*q831+1K|6qbDqVO%>hO|:qLsEGbAbUZqZ#+'IJJ_MAR.i@}Ƥ▤UIoǒNn,Ek6-[M7cfǶVk߶öӜimm~жy-j;fβ5?5Nۚm̏ZmyyOml2O3ll?5Y0?bO|r>fgr~fWr仓{1/yya_L&5&yqSɧ̿H2IIje檔ܔ|yu5&~po`l%)Aa,0,e[' V::lZ 4@9Cq8V!WRC 0`wډٞX`&l^X"VXaVԎ@#Ͻ;g<\ps'%A` } `c]l  \{< X;]O04Ɉ" a0x90fAg׶; VtmP` l/.wq5= obN{ 8a Ag͗=߀ v Ȅ8bvtk?;TasgWs 9'N2]r+Dq]KKnt-|74Vu"֒;=U*}ݪ{I:]yc~Ֆͷ\[xk;I^tՑW\U[^va!]ߠʽ:Br5,fWl<7򬮳dwr{-ꀼKd߼Xi@@ɋ:-#6rʼ5^ϩ&啫_P3r_Y7݋G̿ژ7'>^Kh{<{g=Hm6pN qk,3x{8=\KuO5ɡySC{죝:9o{:9hSFH}3EsNrP>뇎tӟ:d{u/"ϻ%{y]:jRr OuW3;^:;˽!tnwVΡ~nXV]d/vPxvWv3K]R/Й9B L#33Geē<_IgWy3<j`rg#vЁTgknPFr'=ȭ+3<ϼ l ydKxV9O)#<5K`Ј˞Y;e etY4kYᲆ(5dg=j =c}9=4.wghpA̙ۙa\[0سMKNt M,=s剒<ȉirUR0sQ㤅yHNq f{G;5,4`_36,zژܙޞ6)w/<ט3s~w;xG˽=Wz-Ns_-'wk:#wkR(`7\ύrBs2 ygųv(u +u^?ڬ^\%ZAioj+h.%/zW oAYpݻJPp˻V[4[[TG9T vnQng} zwuy!#טV{}üd<(=;'$T[U8{)Q8{5[q*- aG.6Fٮ16U4]\WN(󹵳} G|KQ kW }K1 g}Ry_UUf振셗|ȫ 9p r|=||ƒ| Lǀ:̸;-1y;sj/h6£c} XdT?cF|O_Q:dG?߇ߟ\Pm0??gudROxg<ϱ?/<ñ=8aav8e;XN6_Ҳ?Lsm_hThZ2uihq,Wout^ # مDt+ (po"|W)A( J(/moMUpwgd2E|hWNjQ`Q_= DD#z)ѧ.gR!ǘt*DjL233YƸ2Ș_"  H˔*KBYBjer9Ot]EO2IgILy[=Yݻ,7=H|(3)wSDeO~eS[=uhˆ4(O[0Qݗ5"${`t ` vB?K[#W`0_('rpTQ3p9K js5X'z&l$lM{悼ZC+AJG[S>JPVyB =z,6!# xcA7>{H!oR/xSuV7;(fû݃˜֕yoY%o%+^#LxA_ -ݣŒny8<aakrIWz|p gDh2sWhqkN}CY爾My k{{XLZXL1{Q;?@mҁH@>ݛ}QR]Xnµ֗]w=Kft_wm10JrU?wߗu'ug/}8K+I}ő}dbcu 64>sݩ}U8A㤶;2ȝפzw6hwZh0t_+>V[q>OǍhB !Կ!BzzGY:~=GH't2zN_E/Йы7o"*">wwԠPJiiEi*J93c,GK1sٙ3og֘E#bN zաgQ=jA{P+:?FPG?A~hB@ESϡP;)J2)eꨗFJOeQjRߠ>O9cKߍ.etCץQN]@wrֽMu龦[oR=QOwNuPC~_z|m0 5ݜnݢԠ_RC_:/QOzuRSCM_ӿF\_@Z7} }5_/=dwөz>@TUQcoЕڤ?{V?eMm/i~IDߣn7h$Dt ||62~;TO#"soFYBtЗ#=ߠ#""##\w"^F9Wɑ99#2"#/(g#vxzD3L{Owu],Q ;*1$@1(+[!i`wtLFҘt~/}Q{|tO/#Y/G^-.7'ۥ+҄t]nI %-0}0׈~CX^!_ ;wE.;CE?v/^#w߁]FQ,=OQ }_ҿYEPЋ;"(!":"%F$D$E$F$#ULJDQDJ((F(xF?9 ?##5[\W5DK)FT)CʖrX*TJF~ZY$J]_:(Jǥ) sEi\Ҽ(-ÝUi]*OQr)p5M"9r\(-:([%iSZeVd;< 2:yHOcy|uyFSόE5$Dd lH1*yDbgQ 9苨Ţ&8>dGȆ^DN}-$Jo@^A_IAFw@>FA; IG? +t7 p}͢DY@@>~V^C h*QQ xXT0 S)ЧWWѧ#f2F|b#*L5P-T F*}O):);2R(2} O/ϚG_.P.S RWAmRԏIrH4 6$K"a2t!Ѓ:Dn8l*rF BN÷ F.EFE2` B"(, º!(1VL41SB@X%IlYQ[8 8&/W :ȌxK\w{} Iz)ZD)EJF,i/IRT-IRKVI< =RPꗎHҰttA |w;: ~30~W 屄@XOX"ayay"aya˄Ʉ)',O%,O#,<",0"\z6zwFq?(HB1?I]Las aͥ͟6R^>`g++R_{N9fs5a)j n:3  3|*+6 c,]@5?%ABU\ ef;+%qQkoK:@BcV[e<c?$%HL#ۏIyc}D*(\ITa~Z8iLA~7(¨hUIg.د W%!oa>#3Hp~Kr7p9a־ HG!ܶVC!9Ӡ}LxЋ#080:! 1ƑTwIwCSYOuJp"v:0:mhvTcbT,vTl:'9 ]~%QG`t4GZ#0;O 61| HJxqD<|"tL)bRcpqN+e @S*S8㸰 |k!-(6鎢SYEv̉7ücI\tw#GNTN)9]9'g)]8/rr _'}!)S8ȥʴ\ܔyNYeYYžYnSe^Y:u⌒=X◱O{ wAg2WwG3Gv'D>,Kb x /8ȗU8W!y4:ȽYgH߶X|İ&OcaXS06c$ظ5V>#Cq2 kA$A)O[އppNйO߹/΍}qu/GK6jݗnOؗeO޷ a{ھ|{"C+%̙pQH]:={TwnW8 R`p=p]}uw\qy7蛽|_#yaG4 n[8ےmsal9r3{p59W8ښcgql˺㲚n]U'lW.놚ѡS:ҎX#AHVƎLy+;r60I=ѪU7%$]Vv P/mzc@8ش?!ugD>zǞ0pN1.uWWH/kWwa1qL 2t̸b:n;\Iw]\]6*yM*ElqJ]F[ ݵ9;[Ŷe[ˆ}ԥ.[os9u8mͮdksx=bS\gh mk#)dg lwkg,pKߕݝn./|it01:݇:8"Q113(sGYF#+23r^3sgr]\|H A.)$qw;Ý.r5nnEn[ֹ쐜#u\&|' |>|_ȗ|o&KՄoY^snCin.ns+솾yGvC_ /dF,z IdOe' }?M%{ {=t'A'!'ID?LDȞGȞh6X$AS =\'q'dO4}B3GdgdgSdg쌾NvF?MP)&;dg3dg~Vϑ*jET7ՍjΨ֒ϓ=z@_ޡAdgKdgdg+j2A`WQ VcI!yrr{}z6$MdSt6EDAr=Iv=^ RVlH6] błyCxo1ch{0Wt0=J$0e7p?ha~t}]Od` 3\.-`pX.Kóe?aM1W.+)!ܭʹ*΄95`~pMPO+m*r M\+]5ay²(ȸo`#97!n)1u=ylcLw.qW :7;]NwD>OV]|>_ėL_WC]jIHI_4|3=P>ppV+|?$ܨ ?̟$(kŢU6x? ү3ȯh-k\7<b`,19 ,0; ff˒jɰd[ra0Rl)%Y*Al%Cc s9,\j^[ÖЖV Frrrrp|f3nfokc<[-z:W~:g2AV QG#۪+$@?+-$s06 sͱX檜SܖӘt9ly<G An~qQ]exfa.~(5 ;`$>3r3'2m2܆۠Us̊,(Bsk%_j NZ'/\+"P=~R!o7YceA<5L⹰=n # BPbWRr $T0 %0ǫBdZT[{B n'!a@H CX ypEHf „p]-$;/ -faLD^aAHcqb"? ,, wRtlU%EbXjNlE{yfP{91(ÌxReg9xA,^'8'fKqi]_I, Tk Jӏ b򗥲WA 3+ \?I bυ :J:gY$G[gDpHO }ŷkkX_`{ %| \kjhjh~iysͅ[=t@wĒu "h"H#+d-'o$YZ~y_IC2ߝ$%+ɚDŶ OS)X{r{Ӡ W% UO9'`ICu+O8@DX}0@㨾FDRېnCŀ'`|aӡ[wvJ zwNt0w8j:qaqQX3!\܆'6LlC}8poC6պ'e{vc J1a eC,.8O~ؓ{>_ 9cOh=OnϻPӣӼo!_c{7Qy Kx[VyM>e+/6Kxd>=@^d˞A:{X<3 8 E;/Ī=g`?x `gEwēv|2B]Ƥdz@ƌP {e@3/7izlf< ӊ0OϓF~vgBen'`{\^zV׭1v-c?'cxg<x"t3 x1topmm ۖ11ktZϓ`o5| ]&Mk7KЇ&'{~I>*'M$?Ļx1?Wo[!)*SuiejAB:Y:x/Z:x7 3S>֐cz$ F7:iu5 n 9~TzXW7ڵo9LK:F G=~_ 6tZO9ͼnǷ`{^3t|ükk, ={s˘l*tvо8QƼpУ|f_5050O505cbok`mSs0jo9 l{5 ;݇6Xs΄٤c|)N=a)E )K]vi1%\ 0a :S&qLmZ^`C '1)?oBPs' k_cׄ]S 5׮v-Vܵޮ]jfNvOb}v[.+[ii295sC]fܓy<3-33\f^̲ۙ2_if{fwfo̯#l+*WtRQEg-:IQE틮LQEnopo7I.zh-ƢME[v}]@ѡ?⸸BqSk.WܨK//XܩGq*Z\|K%KK.պ,^Х.4%/K yC9~ĐN*K %*CU~ 7=;-=,=k~)k^^KL]^~׻.1W,?ͯ2g_wWVzz^a:wUZ[h~}Y-[hUЪn9UBVy Z-[h*o᨜؜dV iZ5.{ZE.\;_w,d2iW9S-S3S'S?8s˚ok_Vp[we\ azhz'zQ^ᨐ~>=aazwzzEuf;Y{uG9{[sn?~ylyx˨ (18 N w]OBasa9k7D}*n?.Fg}h} buRxwt.iD&vwi l`qAڀLr>+ w-2,g>x<wOۀ~}F1vOwT\| |h.2-܃}f|~g: M]XP߁lD ؁.-i ^LoS]o?H D9yfxYI-Fm0^ m_NƠ' @sN3%Giφ7+c;tj w 3Tw?7 >3$M?IFFY,,+oG߽nɯya<(ߺ&)w4Zc4?'1 /N!Xiٴެ( uQtÙ);cq)BFH W[%VXkVk$ې@Oe_Qܿ>Pv6cBqŲ=^ AIꂥ7P] nF3>x$~B$WЯqe Q6as]2jEհ5‰&x({`4x;'!"`|Pz Ȋ##f2za'Y8n1p36M?O{[;|\:B䰸FsM@  1|:YG2Qql7%#:u"igƃy\ W%(M[} J6jZSMHeE$.Һ5^ye$6P T{as mAwՆɁTlCF~`eNca8>'+lG灯'*u11XNLSlO/q?*żL#O?3ȫ $cmV}cRCԇYLx5SK SGRHH,핺WGZrd!{H .Yk$#&V_sh/kSjSV{}Vȓ_B?.~Q!k>i`@alfVUMuؗ'S{3j#ݩV{ʞ'hRWhf݌\G0,ex66rGiݚC(թ)@xs,.vQ5/ts;FH`Oj]iBoգa4߻+ v_}+} "1Dٸ";` OVa[(>H*3tu7w Dt~Wf&ve}ר?݌>zn:ӟ{TUQ* é[of-I ux\S,k\0~{xoɅ qǓ팮 =mMہf?r$۱̍e^WE O_6Fv1XaֆoF>ډZw9Ӟ'NѾoqm6?uZMvH(X6 i[JZ`=lgt &PzNF2o7&UV~G ѻpc"\O e8K>`ΠU¸oE1AXw&$Z_iȫ`8^GjåNx;sx`N?Fϡs&!ɏi=Sq[,$oW+UpބDo NpNe:s$!:`)/s?24FoGs?59r<Iq6wͭ&'\<f&~LP} K"tA$W%I>p;O9}VϜ9ZejiTGHBSQk=^]^B:N8(QsԽPv%HN|4g =p!x Tqt4#;DS3ڥ:$wUÅ1FG+'p$w|?8|'Qsq;Hx @O}l, ߤSy2j @v4$>x;I^u?Vg"p1)'!$]pܥ*n7Fz ka"v$Eη TNӷIA c C;f$AENIvP|?I%q-l]O2ɣ*r^Nr@s~¨@Oep[r|%am4i-yVSedPY9׃XqT:zZ^V؍pqueT 0jHmW:B]sucb}wS JoV! ]ScIQЯ>Mg8WgpAg w3Xhunq77sZ)M\gh֠D4ߩclzu WM-b0K&ܬ։PX_/n}TkZ`e%||p.)]Y3ըTh+h!;!Jh,Ib/s8GIE:Tstz3x֢89wbv^ZG3ӋaUӭ"-Er;hfF8w2-SNd!:]9j $M')_ DtNctrw>JQ>eH]EUlNg%swGe2-,Iqtkoׄj{ 9:s|K]gE U Np(񿔥 7NH{Rv]J%:ٛJiy_Cm::ws^:13W;y}@GXvv.pG7#ǟa+}>:[뎟"&#u=HW?= Y .ˁ%= a'p v7qZǟEt_֬Wzus9G}݃9/:ٶEc\ώc |Kg[WkbXE}"ziYx^s(-rGE|->k荁$їz`wkK%tx{C"HeSZoGr$Q[3CB jwWt\bDpk?PrK {ڔ'K'"GG9Wd*GDRArl fb=ŏs\3x84v^Sx7;%x onw);x2ƟY떨aca؉xdNwC.ĵ!s/Oχăp|5q[Z \C[o'D^[G.-^1| | R"|^/8qV糯C\_ν[(e_…e R2 m >! ++ ,Ơ' g&`5ۡ#^?RoܗyIe Oo Vp*fmxxP'woI-d8\U$5tߧuwY^_Lkd,G_sh" )BlGF )xoxXQh1:4WEOÇ`5N^suSz3$?zJDNO G`s'y\7#{${7lmㇳ2fDcV+|Ƿc-v߈`$nج[p;}eOn}7>88yg&FIG=)ȄI}T^?)n|k' Cy{2g &;J/D #ή$ t<$mf vP\wSl*$cI̙)zݙdBL^czo)|Qn`C"IKv)2 gGCg-l`79^|3HE<*IfGܽ̑xLdw%3{aͅX| ]>cq$AfxDnI`>>zmE?`Ue#%9xx'9 wJ| ķv4W 6:7}쇧y;e3Lϡꌼ ^S^ւc- <ɨؙ,d*Vq4o28ؓ@#D#5 Ы+$KI3 ^,8 IR+&' 3|5:% k* g^ܵ`3,tDMk?0 RCֲ{o/С=9| s0dͺ\ \)oDBяEO]u1Uwd?Q4 ӡ ʢҾ2aձ U1><.F, Y!^z% 9qHQ Y k?^A21 :$H!Һd arf0ɢ$0ُ7kdEx"'(y{y5ǪsTxw.7")3dB8LvXΣsXqCĴwKm ++k 'OG|$`ap-orxys䫄[lw/B|2Qs7ëH6u,D2 uM;h<*xwx{Ó}\|nϣoZO`Np0 E c= n:`B"܊~`UH#xI.}do!-M~ `$iaGFwIuF<]$y-8}y| 28( ߃qDqzu߃K3N? B8V^Qm8sׂRp7D~6Ȋ |2x_Cf{ 1 -pwK :HH11+77B.s*drECPm! ȓk8k!Z\0!O Y&Q RCoSb4ɐ 0{.!2W#gx!>(3j"_jiL]r|ױ~^+`EIHMR7*Kv"<~ *ʐ'ֹsA֣c"r5½1Y>yT<^&Tyȉ|L{T'ް_L=j# N7'#]A(2IM}:7i$w'!(Mo$][ BW !4Z* 6$ܽ8AV{`#mWl}މUpZsz?IMZ@ܣ[zWvʪl_\{erM{_Ew^ `'/iu3=ޒWZg&0;I:[LƲo{ ~ uh}^[kH ۩9,4{zHrO$ѫ6!CނnZg3Bwu2 O="s~F cG+>܉NI͖$HrǙ$jz?38p1|kήқ۬v{[V#mS{=(,[h%ހWd9jϸgo"YՊ6O|kguӺMGMCAؑV-wir62/0 쎵Dck"38bex\Fd1,gj}.W#bo4̹DVw/ێl\ƼW$3 !h+}RjEPZzIucDҨ1i~ָko<)<< %5|(L5#VkZWr gunhgo"wժU3ٷCƿHjZgҧ.ҺFcG1hA|VVKi5up з:& 30=ɖZ aG$ #g{di)+IM`^P>Jވ{hmM4ʜrˈ2FᘋT= ,OdoR1r{M|kɌckL 'W' &SNJXsIYo?);[AjӟCZd5HHRִk4X|pjn\HB(Oƫik6;y7Q3t {r8;5ҷ=Ŀ闲uï 6o7lгHpIz迋̞_bٞвW#bsef ۪o}f8M{b^ٔFۺ9g6#S?3TUk8'} O[b~_~{9ַmKe  )F70ZÇc{bKզ$P⃆q]_d''>o[u#c!e)ӳ:ώ-{S]KވA_;r{FE_2328>#&h}&5 ]ODA$*C3/hKWuMO%q~uݮDޗ?Lb[7®\Eі4mI1btNX=Oh,;hK)N)}վ]A " A,*t׵~0F0tx,< y0dr5> PwDxGP诊O/&4; z0Ra4}qx*̀'poѬMв];ÀZ穝x!4V (0d(C1l"TZC)E59 k @N(١T:}A}KC'y,AOב\(WC[)y@g #` C(̆R*IN'|pዄRo!L@J1) ,B'%eH+0/ai$¦K<Ix'~G N'|p6< 'ZL* ÆX /h[ l ',:"%ծLDX)a+e݁07TфwZD8pO'|y~EK "\Kp+v=cR! /<|@D&%,LXr̰I [v!;fL T±$X12pb¥ Vl$F)‹#P8œUd~¢ +V#=f\1!as63n9p8X>8ٖ3 g!|p}!G/H;7zg s?ERE dQ)cAߡM4z ?,"(06pa mcmcatIvW~6OQ`ʎ_[K5п$ clWdQ/?10ߍXz2S,gXSօ bwl[>bvv]'7?ϗ|3߃wˆ-Zb$ϋ%b،78bxLٙ+3WTq#T( TvfZ֗o=oykqoZtkC2'dLw3ZV>SyRLͷ^K獽\dz8nTxlg#B =Gь%J21uC.eBʂ,{UZ|ZX+ο\Dl2T^6Sy}[Up%ijr&&-T\&ͤA,fY ʛf-T0h6MP|ef U6 {jvP`~f If 5~j 2amP7ǡ9iNB=sڜG#409hh. \2l.Cs\暹LI~&/%w++ƾocwcwwua'`^ύcHW??d_2U*ïW~u:k5hc )ؓ|dȯLeɬ;LclL`Xx`3q5;%v dWU8"xGxkxgY`Ƴ\y/yx`%x>V||ʧ򩰆?l>g3/zIʢ2!49X%fa=*٣Q=ê,ўlOfUY5{wdu^c?:&,]wҏ{K{{_>+i%h 6Ej,f&b3Bd5(gƘ1"ތ3D6sKd7x`& "d&>se)"j0  i)l 8=ѕ GӢ\]Eryt5PiI.%<(~HE$,&+_\m!Vˣߐ\ ;iI.n'k:^|!6/FfīUl5?x^"i3<q_Ž4L,+JX%VOgdcj}X/Y,co5hZ/ qA9 ELi <a׏L G4<s`.ga>< "XBx ބwXoz`)|b,>U=g>G 6WF lo;1?. {`/q!8 G(N)8 gG8 ]\2W*\7C3ޖyޑwyޕ'n;{^7ޏ@>CPʇ|Gv?]|7}|??C0?c8?OSY~E/ ʯ<0BX!QVE]E1LS4xH<)mxO,f"[7bV|'S vb+V fewka~vY=^k:`Y#Qu:aNY3֏Yu޺`]~.Y?[_+UuJnYlCeVeQveU&n!{^#O@9HCP*Ḍe4.c8yK-r('>y"S4\r|DΔ 79K>)g˧9GΕr|N>/_/ʗ@*"|C)˿%-P~$?ir\.WȕJ /ZN_ KQnWrZnm[^n;N%w=r'<$#<&<%O3GyVyQ$/ɟe"kR(*GJ˷;]\*ߗwV:8ΧgsgY|lpt6O5Zwnt7ݯ-Vwp{=pOG{ν^tr/?_+Um눖ZvYtVu6]':Υs뼺.K2誺N5tM]Kut]]O u#X7Mu3\-^IW+y ^EW٫%zUj^u/ɫjy:^]Wk5y&^SkZy6^[u:y.^W/uzx=^^oKy@o7 Rw;zǼ w;A[ cFfF'8zP|I4"Yt?P -F#W࠘#!)nu1[C8AUJb@6a8;Uъ올!34Kz9<뻵yE+K 1ڟ(f4 hF}Z&Ana9(>b3?x$[͋@ɌG:_]@̢ !fEuH-htZ4=jƴƒk z-5t'T!V+ƃ53Hތ7vv8; \wtDlۋ{k;D nOlr%1 ͺcdKq2cd3bیI<}4\qX4GSc[bK>##n2YYy`3)xCU6NS{ɇ7u'Yw]u{>Nt=@ԃ`=DթzGmxkZ6mE󿏻d:.zhbpF<.k<6MɕiTnlz^o skY%lKH qmx[coxmmeo`)p59FLXd[PG+.Y[7?_>ރmGtCn$RIwmG&jU3M0 s`<a fW)9Gd142r J'dU߫jUS 3-a3f:=;nhFM1:9>=!'#~0mwnZ?6wj+UH}~M?RmF*q D:x`+g\Od믚G$?7mxSFT7țM#M%ySE4J!o7M ySi yXYɛƑ7'oi%A*{ugk-J,gY;ƾlll c/l1{}V5lۂ B63",5 :C w~2̉P*X"bVq eS1USđ(q4k8݁8B|N@ޢ<਩A,Q>:^e R8P#Nc9 3a6̇rXaCp T{RؗʳDV{SS֊u@6zV^mq&l1ɞ${%${HeoLa%ُG?[Jr*H1mPR$ש$׫C]˒r$U>qdr/^"˽L{ll*Yq!Y5"=T~b1^/D&ƋEbxqbm0}Ysˍ,fn6Me3e-aKYz)Oۃ;.J l*dOj@jHjDjLjBjJ2E5 $Uͩ_ 9@"9X!:R\ $՟:5z50 Q5Jr FpIA~̭WPc2'BzKyeޙմ|}inSyHJ> FƓBɑCLiեEIpMpCqI$e}<{g}﷾{? rCCCB$P<(,O)OiO6 ,<"L3ңR"\2GKY= ?k`#=1 (g1m=T)[1ǣVgڛч.o?R.+Z.m&#c,e,c31"XBDog m 2xȾh`3xFڼEX_%$j'O4ԷG}|;{?c`ݫX<~$+_kouw~w:5l^<ɡ~z]P}J7  7T@8x>~:c;#82ÌcBFo%/3RЗƩY1eq9J2Up kZu0bCoO>}85b6 85+>|sh3(yFŐ}TapAԻX20VC #j=66og4Bf @F`ȋpo,zDa4rIx$$0sB! HրAcZB<Ù%87 B#@4F=uD#@4D#@4D#@4aq$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1 @L$1ɧ>wD'j1%/R!$4( \-B  Wb`!@I8rIwRTJ*c0 ,.O#5Fm.SOKݡl)+sK hsi8q1?]hI; pwЅ.MJQ߲а^ET0[#(0CP5blY>o/8FݖǏb'H j94zy`:7,$ nU֚#/pHiL͇EH&l$)N-gӝ]<>NI} `:z1\s:^J~н5 >xM.yG p:9GZhoh57 s4FQBT@alß8^{32u3owjP?iCq7Ro5jD4PegXd7/2B͌IScdJ>}*  CPeWګs]Ldn`>ƀ4lKj}E*E ~lX@?Uv;{-&84iZ0m0^iQzlQ ] ;;.I 'wfϮHN\;1]}k^G̙9×xh~UUVxyDNQM-EdXMiR4ߘl~6JZOX"շ ^ɰߙ\7i]5-'eqV]KC?i~xp4ap,G1i3|hLEce:?)(<"Q(OP]Aȍ%VZoz8D=6m:r&ATPrl%" "J$UsGI*qTY9c"Sgc|8Uk3n yeV]^j4*#Tzz^W{Y uNm\st4S"ܡ.s]n茯NC>탸$gIV^>/ԦT (as$HQf`l?l ؼ֍s(M?j|<0*9سhS ZmK7=6h5q\hE^{GWWU;>?8z]c|XS^u7n~5?GEB{UN6{x{?IԢkOW+Q@eWgjy].n-VzǽҬ9kcq^v=.՞-u8݁tG?럾0Ef~FzhyUjtxu]^[LnQ.ՙKLTzYJ؂v3E{r^gDxOKUvT"S8񩁑I!!c)&rAcv֝Ek-+ZUK){֙^`u‹g-Rfiyl\hzZ'{gJ3G 24Vu[ږސҖqDwo_ ձK0%r_m>Rx ў/lϸrqsCr>UĪ&rΒ C~IBM~MN"MIf&$E2 I:g?/ێ;,1T_Vr]E{%1Tutٙi6;dnaKV<"$+۬di_@Տ6v?r);mLycIe6#v́[t:Is<$߆oNFmz1f퍌._Tr#=*wf .x"0+hA2YQuIX;Z l__aZQ"=m路=Xe(9(}Je_1~zU!D\VJC͜Y | і#bgRZ{\~XWo6aaAmϩxq׸|^ze!ޒ|iq2xnѣĤfw}iœg_{W{Hal]SJ c"}/ٖ>$E1fU.KŊ[xl]:VTyysȅ6#4Ȓ]6 .hj\}ipqıw/lj٧I:4(*Vz2Y<\{͝5Dr}}QF׆=3  aFu̸!}|ۜXΑ[. LW_ysQ1mEic{99z,ŀ>H@-H(*>/Ue{>""=s֏ǜ0,c<4 `'ER^(7nјh^/:4Ns ]J֩5=;gCý[x7rKSkP4GPʼn ?]uQ*7s{̔b|t4 T1+56Slp̿^dcǜ]ex6`{9GFWz)MPo \u+x0FKkSƺٿ-)e4Re3'5^HYbˀ-vIӽ3R{`/_Ž%w+6%8߼^T[wJm鉗x_yz^9OE{n)!a%K-w{z =斯s Dγ:DbY endstream endobj 10883 0 obj [ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 0 0 0 556 0 0 0 0 0 0 0 889 611 0 0 0 389 556 333 611] endobj 10884 0 obj [ 600] endobj 10885 0 obj <> stream x{ tTuN;$2u;MIM $H 3 " \8tW ADpVH2뽷[ˮߩSkڵ]Yb" )+`'Z(j]~ECKM_;v@J?"cͽ!*"'uD\ ⫳ܘ5Q=/)?emDYਗ਼0gs٥;R^ ;2t_MB]¯DSJJCωlSyɛzaNT2wCF_O y6N~Vp9Q'{/[߲ 9IYI-Y6.F`|7L*SWF3E_YdH>z"oaWsjkXT!}Ɯ~SEfj$@vAlDPoOd"S2Ű]=,BL&a01 047~\!N䜴N?Y@DL8 z+%MGS$7o|۰?s-*_@^:C vI^9|oi'=ϟhgTFg]ZI1R @%;s+r2~Xf00戾TCQ:Dl:a#p7t:˵"'q12FBۚ_}ݐ[cj"'}|+-0vhD;.Wt7@7@G6roMh M}p{߀9E`ͷR  ΋53o@z;ܼšqO1.FBbEŐ^}:(GDE)R) Hh7sΊtj=Ƿp.4nT.}9 FRn蹑J 7I!HJ~f)AIj;)tИáJj:o$Ъut?=>zָ .v]>)4J>Y%M%(F)Irm2$)?h/AJ$T(S%O:(& {zTp,o$Y:^F|n|?(vl5x=/4CR9 _*s+BmE6^xi2yX+#`O¾M;+]OSwcvcx(w'E '`3D,SGApD`\M|!X ڪ$Hğ՜@ї/by5#|JQ_\# 䭈 ډ zi=GDVX]8vȳt{ 4"wjN?h۵!tð~5 {",RGDi bvw!.bpƌ@ܷ>SJŖg0N Z#[Uޣ`&́?#RHZ"GdЋSa_KRU o zM<k&ʄվN_!=̳EqZs83J b;#+Rs!qA逸ŋ,"]|-Yj>dt$#+Ͼ~941$)FjQǪIY{%5ŵI SC|Ce<8 _K5JENlֺ㊔Ր2@J?E4p5#z]qEZ E4v"dRm]b xOtyYђ?l͸xY!B"64nZ, >h<^BD2<~^/UŇnXC"I7#dFJk3>%7,͖IKXsvV;c<#gy`Wp>HTwy7!{ٓU&`aQn)qvøeOtDc -j/< p=n}A8/[YVxb .^{&߀."D[@y,q v-W|^ g7{2}_'y Ήn.j}ߙQg ? yAY`-ü G#Ҟ{q qM 8Mu ?R J ܈}#=x:kȷnsܪ!%[1k.3R}4,,8o=-7+4*+~j;v{&Y#n΍(=Ԑf5愙w 7Su4O[S03y@[ӅtbWvF݋an[ݱ;烈2ǑP4H&9t=V)FȄϫoT1B7+Z(݀tDgB^^A\ ּBjx'G\073}rqxQjxYVX~LSn:~Q;@ w `0[(/ؒdQKw! l0Œ'F*6hЗ` E tA$ tVa\(x-z(%;lDW;+B)YaWQ` RG`%+A1؋;sS}fP0&fSO`?)8CpAC}F82 (8 %q8e)XFP48Ra!'!1 Pk}pb,ÌW8NKLW(J#Ө8x"u4 x4bR 1mXlx94xM0-fs+MW43ot-p S.Ux.O`re| kx'Ϲ # ? Dsk& a|} ƇT->K:/D|xegi99S>n+/(|OhGw+VQp#èw/Z|n=ʹn}87p;=ܡp'=d{ _G{QmMc7Io[mГwiM,ߣg5 ӳ9( U?~N2^ /h8p7bj¯O<zx;qJ}S.&SO qX &N: [HkDX:P4jnhJ~+a?TBSM2peۿtfǤRT8ÇпO^={tOK5KNI;$z_.!>;tأ"#۴nfmo1tM0%f;}>==`@.AAIbE.9rN/8'_6q͙Nno_Yͣ"*]U!*ǫ`\hq3o,WΜ!* D]Zmzʈ6=*Y1+_;+ΒSiq%}y \>Μ#wQ,ej4ZLY~g{&')i%Erk3?^yHfQZyv4|-/_Vؼ%}W\C)˥/j;[OwӋ!>~*2һedrdEWQ7FxtHfe kC&(yfRS)v$N3rI I0)' "F+Dl4fq,}8Yag\^RPgdV*G1x|K0gb#1[9aw͉GyhV# 2w䮮x +w*&y|Xli5B,jij^ ZfOE|wΰQ\V_TאfjQ!'4U M,_ |z~J'V-PEU~>[z, pFyJ=h0M_=/{lzA&NjQO]s,qP2(A8YlP'޽WRz1űP4;(H?O>eEϪ08E[R}+q JȯRꪅ¦||a^E՛Yz6gD7rrx7(,ĕE]EՆQ,aq\(sbdݾ6;./B3MHSɩb)2Ұ9'( U|Ҁ*k KqbqU%|=kz/oF Q8_+%4VO񟆫V^W^\^Rm,v囵1ژFQmlYw'U<{ ʨta^^?p g*"8- 7;qRT*ߜr;[%,*jhUzPͤ,eLE}MӁB}cNj2A dpـ}@A-&oo[Me6N,nk':j5ؚ5I55cj~ԴqԴ]S)ޖ}y5jL3[vFb1Hr♄"(h*MF`R#P3* $Ю:Z0>qՠ $PP$B +P5nUMRXiX)^HUsQULc3qoRRǠRGgw#01?#6mpHx5"D"T09!7&jBp '\ͣ#O 62x>#Fwedp}[rR0V8Hag \XLռݎm<(M[8:V4W̎Oqڑrx\Ѯᖅ#wO* M1WAyfrɇ_|vQ G=],2ϕUr)VDy')Ռ|\e>'/yܤ ɞ&5/BEԳҢDmCi D4H; 9/"3Hrt/ڢ?PPաo Z{MCU-lC -1ڐ=-[6Ʋe6Ql6>)CY8Ey= ZCQxh)8@2Z@t7j&Q/f# u%+6.SܕF܎˼QGq7w&k|@Uն. tP%uXV$ 8In,?\A-QhaǽEzޣ Ǻ =:Q:Z7/;IGFՋMdDLt -.z|as zчiܝo},qBIۧ4r)#QZYKTˁWq{~^t5ku>P'ߚ'^54P_^Hi-j6q;V2 XLs1V< }*ht]ﭿn7s2Bݨ tGҳ>귇lģ.5D?1J< *}^W#H3D_=﹇cg_C2FJ/ǡ~I~Ᏼ|BIڊu1jϭu4K4J y4VSǺ :v5|#LJ"St~T{cQKNy! QpS418 >iZ/tv@X{z>OOID&?S֖wk7 W0fgL!7haGȤ] ɮ<â>cI~<y}䩼^t ^c"fn-EW&z i) $1bHu-#1xJKl)K!5JӒZ-YiHymF۬_O'w==~6Y چ`'Y$BҎ$tw8>Wl>0c?R _܋+u?S >L4 ?C( :P; S&#Cnh h4#i6][L\C[9[yV\іns_Dy?zqyv!,l0 5KZoo-`-K[wCew9OVdY7'/W][#~g_bkk-IS'x1OmӺR>=j~-%t 6OmwgEp pQͳ6x( {Ó]Zd<։u*g]]=b8|1׊Ev@WqB/q>G}MawehQ_LH6i)b6%tstMSykwD8m5Tj-$"2|[np~)3㐳ݓxצݧs'ܱݺ$wi*Ui{?:E6 =n{ }M(WDR<ݧ;v$wvLj}? 0:@@Ce8R/nNs<ӍX.o& %"p کq)j/ W2xŚ*?xQvKg2=x!MuX8Å?f<8^$JB«`kX=G% oxFYա[*uz;klp=ƞ$cJo _.%9׹sn1[[[=Dp;;<῅R-{#VkHH@#(4 w%|cq MtKIEeGlb[,&S5 g9[g5mIGx ?7VsFhJFEcX'$SRR@v] u--.]+O%옂}^k{5o:<yLOcRR``%&E@b7 ۩sWڝV~ޮ=KOHUƅFIuw8RR4k-ř)śr,|%ý =ih_qV/+t?+}j۶p7 ClK̳;OBm?Gq\D*v֗4p!ݓF"{)t 1X]{E=Xd*LaШ S!͂0d_d09īq2["07+6j!m" 01o馔)݆ =爦n 06Ta|dC~X;-q]Y6m4m$lAn R/ܞx\H`!sh m1\"39 y98ʅB p `vGHXrjX$8(owDI09Nr&1&&T_p&koʒk/PAbO{bp'eTݐ<<.pYLފbv7,. ktf:ᔩ2pip0͗S"n0W `.ryUYd-F f22Q^urN\uԵeRR-& \̂#~>.׍fOϦ%gbA=KcC͍MKhO#){Ӡj/;vZ?laEzY9XysaX.+2kklf4< _c)j,v4C`BQffݩX~/jH ~#]*,KFF2[;GgW&"`=EP4q N8FR)Ę+ y72W[4Xi.*j\@gmmk'tvwuEKxThWWY[(qqE[RE_!F<^QB%רN'  K@뫽5bֽx0dE `0Z\V^ﳻMtPlb*Iv2Ȱ͈1\lz, #jj"7JMC@ N'|O >'|O >'B6@M Yi$zR(+՚9Ȋ\I38#ZdGfp#zƦ {SH4r38 p? 1'Ȝ<#+ cP78৮,(˘٨9γ`pL!8/Oxzcz$>1]Kp:\:\:\:\:\:\:\:\:\:\]hveL[D@f"o38tu0:wHJp g y n|:KpA МapMp BOepLBpk,?A  noPADirܕȩap,:=1]@ 38co|o.؀_l0.qY4U%Gq( B B,q&pJ.@(T;dr &T9qjŸNz:Yh4ߨA$uR&r˼PŔFDNaj$5 Rnՠ{Վt%p咳5Y~r21O&"=Kӕ-W^X$p~mZ4s"ENy9dt~\-$I/c[Aty d%C)J"Q76y,%.WƼJuыd«0τ3FQWddHuUc4C>%zW2~'{d" 4N˔z~wuzn-ZR^umM&[!3-tb^U1{U |9$'m.iJ/sB$KQɣ4L<\JԪ5Vii.)lyU*+WRTyru<br*em`-gUֱ~Ue W zyo.Yj~Y["ۆnnbIy2:ԀJA*ت? רm+Llp"޿>Fš7/X0c "VV$i#d'vNEO ]L> 6???BF+l;/&:!-ѝwO!#N4]l2BKzNiiiSXRӵՄjdUgb EEEEE,Z[&^9k9V'r.J6um~3"6k hL٠b[FWZ}P\Id\>W̹"YrMȊ+#k ͳ+A+~^xQ1!1xBrv}&u0@¹"H4eo$`΅p95}ލMZZyyQ~ X<˭2sT BFġ7,9{=d?oe2AA~Ffv ZpCgv5lB{ C^uXIiӕt%pԊm;x*!j޷ŽtP|e9_F@Hf!""&Kf!B"2 d,&_g0-,o!bX3mކ(㨣pie=P` >^CaS<- oq\&M)vܳ~\/OA{{?!L87!%%pK`p5bV932#+ ȒODVd5K+C8b k# }Cz!%|;WO$~^χ׆`ҕOJs k|blb:u $ADhY DzCz#K}/8FЌn}74'΀@F hMuDu4őQTF#?5eV.$H$'2͆MMQf\R9X$z 'cWx&a-3uݜ` g4+Ӎ&bh޼kxM׵ɜD h=6#-yCZ*ԠtTFhYtͧGQh-&|7S9BBep#:)6%ג|UU 2ʡUs n 2p `(H%aGrf-I}zрFK2`Ä{H \є+.${5eT1 YTOHԣf)3Hգx͐j ղU򄴧f#$ ga6)-^ Vw l zWѫ-ߎ.h>Bx>IdBO# }>Ley6161_SH©9i9:c;D]+$4OYzPL gl(EGRbHGRni=^Aj! :KƯchUNGLzdO^v2= [rlqC(ab ް^Xp]hyeuݨO4 y3 dpzڃNk -z|-{|>]o-$G v gP{JoB8s0@v<L4Ip_c}y z#H`~p1<=QU5XΈbN}#GXbEƟ}N] ^5_XuAYױ=Au_+!?kYSHc$d8K^o$y"&$JDίq b]A !<;? Ւ#cj%Z Bٌh3 }|& %1XJez&iiȎ`ȵzsj` ^~sSB@x.̝ C_nn#e=ǽA9Rr|WU v+1J@c`m*R2ʁr/9jKŐ99kZa!vXcGOw#} /co_}Bɷ‰Ng x,]X[p΂=B3z; z.`ȅ(o?)K~T) R^UѰ]A,]fKa$r㬢+`^ *z#5IF%sg8==\ ,z X0|%guz.̝J%#r$.X8,_X96} $ kohKlᐘ>@:s% =vk Xydl #QQeKƻ}V3ʚeC:)?HA;QvK U08}yj;+*Ji0p3-5=E %B Ei] !E1v~|WYɒ7%J~4zO[FT|=bK;q:xhpJw'}R:pC)/[mڐ>yO61lCm|_ନ[!3yf/_N_iO3GHzμΚylUԄW':c8hG3ܭ\O>O/'߂3yĽͮ;=|}$u:$璦qKs߼DFmpӞI_\j+gjtr8N{O?<#ܟٵiFlM7v(^c{DuE^8=U]֮fKk'x8jeW_]w%N hӱ[I7IM=1;==eD%U t<. 3HSh)XE*}kMX}?c&u` kFw3SL=1;E_ HƘ3uQ%k2*&|_\NOVc31*TzwED~5ii{ظ:vIz<u]Z#-]*EsElZ:8fF.GZH}:⻩gh伽!%6y<C4\&]r*#'?P˜ Gw:x?yQwӂPi6(Cl̗V ke=j=s*F^q(־_Ϊw yD7YlM4mAf):nW%*6vC]| gn J?:f Nl6Үdo}2]<&dWd`ޗP 0,벞ؑs<Y58NMO4jR-0:h}%'<؝7v?;ww׵uswf^6x|ɘf LX+xOˤ[#Ug_q c3.ՆM͜d ͗^G'*0:8*e`2:ysX>F\od3)%̟*y2\|UVfJ,h>sYIhvVLc޶AikSb ɏĩUuf\uV{Fblit=_mv~SNNS~[#9lf+ԙh#[6wMzrz3~=#. HNm<~757еnz)kG wjTw^!5s2_byzF[%%;U'/o7*Ĭzf|=9fKN4~\te ;Q+MUتiޑ՚770@go (wwY oG0)XC)l満eFMX|{yH] 2-vXP8jU5-oې '(qgm p|j:ǎxnK[< w+w4=b%|HQm<1Vƍ{\MվȽAqXf/"7fI=+n ͜%Pr3፾l;f}-yYک qܳC",6u F/_u曖|}fgWunv"*'`wHܣ)i#6.釓{PK:d3mb# i'mE&mōǪjަ 孭:y9ώ>xܚe3=~vqI75}mڰglO{Y>ב!SN;OKp(nv +N}xCJ0y✛ۥl.|u⛃曨ܘg'lz׳z6t!1yӊn2!|ށnPzG^Ik1\y<3YU,sܼ{5iEųKu,4syk~:/NCwAp>f i뇶5y񰹵GyJSfg*ONƺ.k-u~<\w tNM󓧗^׊ >2pFƋUj++r.y .}aVim9u 89gaǵ[Y~>fhkSmkSjpX6,qvǿ:$FVR$=<`_?'Nx)kT#Uvll7-VݮmOA)ZFt`=fol.;0b+ҳGZDS"GܲH^B!ӯN!?I5LOlxj&%3V5[ 0RԁOHorn Y~]1 F~]{5W;(S?+13e-K.zb3B7 gnUrcJXd8lXV7,Rzk]2vY}>yZxVa:2͍U~Zr<3>}R?ځK.:o8qv,kF$`ugW:Ϊxbé#5s=Jq-[q燮Xr2 .9Em SږQ(:ƲCYޜb6^;נgX'JLCT{EO]-?5vTжoƇW@KfǨgiohה_e>iՍҚ{K8u&+\GM#|}M>_6GatI;{> stream x| |T{-IHH `n@0$EL`Ldf:3! */]*V U$sι'kkk/s={޳L )Dc"}V>fRRe=׽JtD vg3)KZ][WoÇDdAmAᜣj#RnFvwG}hD꫞Q'yȜjiW.Ozh|(. (rbWҶ9}ȯVސ&GSZQWe}y/cZۣ+f^}t-LV^Jq7c~G9Ѳ_"hwtƿ}$5beVr-!}Cq?e4-~{/1/#k#DB;{T559ڼ4 YY6*: GqYLd&JsD*xK4մ>C8p~b8J`]m7gީI?f?j0'k?ڗ4Lg|֣.va0 'aLi0 $ܵ?i0 4`Li0 &ۇIXk`Li0 _4#:9(5@&bJJ4kMxD(U!{GyLm/5zv8ҨVEs_[Kȫ8RH?ɏ|~#;5{ܱ,=zIC}ݢښ ?osfWV*/+u>N6uJqA~^qc8Gge&;$lV٤ V8+ظƘi*n4tU_'7j5]|@Mꯩ8谼\©Ǟ{%r6\4gF "uSX֮YocYF{"oP[Vf3jV z%0p`xhazIF1j0_?hc˫+5-nG\4|2@AOb隨Wf ppN͆Fo?ba 6U6'e*El3->g{ȵ͍ŚZ%|]hx?bj96`eN\S٪^ϑ.snmitH:fl7}8ڜn+=}k6\]CY9.gmaܵ2O`C\e\\[ ,7=f34xvlz:v{Vv*sbq!5*yȃki5A |/;bT<.4c4t8 9=Q|zQ,kA&s<:m"O-H홢ć4a4^66>Gt|>;ֆ<ϝiT؎X<<7 FD0_Lʪ>̺ \+iޓccq(qNm삈7*Jl 6vQOMΕR^}2I[9yKyqW-xȠ-]qzJHAPb%wR|+_)7R|-_J/BϥLRlS)>c)>R|(R/şxOmR+;RQwR%śR!R&ūR"R$ŋR R<'ųR<#R<%œR))H#o,R%&)(EL R!R&ŭR"R$ōRF^뤸VRJJ+B˥LKDH @8Os8G.)ΒbgJqk8]Ӥ8ER,IR(*)VJBN)K""EX)ڥhbKᗢU)I#En)8Nc8FR-ER%b)X$ER,bGJ1_##EeRJᒢDR̐bӤ*),ERLbRobtzyյTG!w:r/*T6j/- bV]֫z!@% zRG=/kJ=ۛ54W=J == Z o6ȭYu9X]tua4+f,^k]K^s/[ks644[%jhɻKyuu%uʢںZZe=WW]0oA]hR@Y_`R**fוֹz@wܐ-j0 e<ڼ).{\v4ij%^{dveu4: _5RG'OP=2KwWA;}#_}%KA_\gv.SAXG,CAz_П=bhw#菂A;Ao zS^W=|eA/ zQ g=#iAO zR􈠇=$AA_}t-z3JAY݂IPb6Snt["fA7 Qo ׂtkt_ ZUt]&RAXE.t'\Auu%h3!h&TAZ#h$DA h:-!(*("(,B Z&xA~AZ5 j(8A :FRAG Z"AP}:Q HPAՂ Z HA4W4[P A *T*%Df :L A .hZwZh)MTԝT(h((@PT\JcAН4NXAc9-HN.e :HШn,HAF.(CPa *(EP !% J2/.(NMUEYI&H"W vo;o___;'G?ۀww?o~x xxxx-&Ue%Ey9Yi)I q1`+(0!{{-@[`3p7p 6&6eŀ m n 5p=pp-p5pУsELf]\\\ \\ \\\ߕuK1B X3B _3\-(Xek7̬PSM5\PzȝX v9Y+CC(%OڐmHz0I}0酤w4We (Ӣ=־1£cʺZf]Kbu1[rtFE9a/%sΡQescj뻵kU07i> Ur"юHGNN$Qr"H$J9I$>bH,HvDA "F\gYHFb?/S5|s @U^`/||  ||   l>>>> || x x{w[k+K s3ScVQa!A~>^`  l@   X   8888g&XY [``5p2ppb) Ja v XVh|MhG @=p5@5X @P `&0LSb`2P@OޟTv_KW.mޥF 5SR^SlJ?BkZ ŢRRbΤzW`ޥ>Tmxg^K };{W7h>4MBuM`ZE)(l^k5­qC(^J崒NUt|2JJt JϤl%Cy(9<56J>֢֢k@ "t]IW_^_~5ܿ ^G XV(WrNh#ʯ%wkxQ/=9}}bWR-35|ʣQ Pc5 N1Xc#$N45bOINL(1ᢢP>}KE)EE[ g0ĤNMjN`Ms->uh3^3Ӕ~[ ~|t=3{SoJ}is"iƄxJ[fZɕLm]j{m7T1]qխۦO8-*\eMeU^ٶ扳f'$*7ZUڼiyTy95E)D֦P*ܨ܋UMr MUm6Z~- Uq^O׬)p$I&;Zon,1vsEc-~Sܻz, fR]{0dRF}DȌW˰%gO,"~Gי; ֭أӱQIXx>de#T8?c.Μ?1W\;\%gom>8eWPԣ۔TC,+Ճ#7~ b+3<̉δ4̑Ǥh^{ɲic&eWƤaLUi^>G&|i%Me'ř1+yEw6Py( Ƽ7Gyi)Mp-v'{㓵Q \ɊlC,%G]˯\>8BEE B0ӓp)FE`fҧN-[Ig8DS<kMiʵkEjw]n7I}TLwNrmZ36SBH<4^]GI)N,">])[ uK9\NF˫VL?}j3 >'g|g|CDyh- 9xi̛IUBVC1Sy-ʭǒdhb9q[톶kb!NCk ^nIf/0; U&% O<Цu̔x-ʭtr݆QZ+4qH*2]~<$:ҒNT%f$2WtLqFqZYhgM8 mP.,"B8 -,"B8B:D<`LQC)ĭ%~M)ѩe-Ԋw}֋ =:~nv^GX:x[V#⾴ˑ y>jo^AKXRNQB3~1}O7ك6wֆ-X/n;>Xy.rm-,b^b%}QW}dhA o˼ u sͽkkzdX0χx o ټa)Vlx?^t#;b%Ŏ-ݼ{B']k;RGg_9QheGh?#[)/? ?"|m2&r˙EĿψnQfj/<>U7䜂|>~}d_<{'XSqX:xc8ܷ\$FWUWKCaNr0B2~{qFOOͲb1vKq;(/7]o:yj㵾kjɁ7}1-6{}[78{X~cXk6")sG~2)W-z"r" F3b:%=}tͽmٞ !x:?<8ƭ-?Ba%Jg¾[d^ey3~5pōr'ew{GFHD o>#Fܱ^h;X~ иMbgL9}Otv67{/nh5Nqzӫzh_bqo3s߷_k]f"]s~CLET*U:cc cž3Qag ъ[‰p0lp(vG@^֦[Z@$zs0wD|?h}p0 ;ՃV_XÞH"z'|[oû DY瑐ocHv{pDou/L}zm|zͫGW|a?1_Q zMqC ۸sM`8싄/0__q&x W`'^u/o h+ >ۂ `#F}+;GnBA9;~_yBpۃ'u7>u x)#χ%]!BzLlQ a`* "3սhM3r;g/q!,O ?ݬ&~H=n6_-p[0z&,pGܷNQw$ӛVA։ɯt[P]nC٦/^nw8p>u#-~ f^`|2g@; ̻ū6s8@+ɟLgx-(oc ,D12n z lPF٦C$|D^EݼRF,D띭~O뀶mW#ء<˱l U@VAxu78A}]7ޏQvڂgmhط] k 0Z(m|w$o/)a3}}4H@T u)Le&i%J KqA*eJt2 BT*g+*9##*s)+T^,VkJ-"z(u~ԹV7Զݣ"Mۭޣޫ5I3śI1%Zj2wлhkmE[+ZZkb#"jSl j}]%ŮI's3c*\y[WcOO>> ss// kk|ާCChnqq''a֞}Q{CC؏`?>ݮmL kk؝Nooaw!"֋i&3& k5Yy<`LIvil)vi$l) 6۔ ;4viSl)T;4 T[l*j ;4viLLS lT[a41!¦&4|iilT شXwb*L6fE 6ږdìmfmKRa3lmvb7уbGhH|L5vj ;S ͳ2F-a2*lsGLT"RS(β%r*0,\XEz͂:fN exCyB>Nh1mܞVn׾}}.fIfp;\3X7M',&,J4rhZDK. Dܷ N)8U# ά73M ?si̍<쪞1~29nu掣@Y ?6̝8PGx. %}͊4' d5 Hy+7ݴŬE>kܠ+5:I7:);\iseee/\ByUf؞%r̫ɕf2MA=\&cfm5l^ao :ʻL=j0ǭ}rϜ݁f=L_ց@q [iv{P7L_v4Q1@ p08hΤvWd'>9Y}p]i @O pԗmٗLȑ A5>'}G=+1hLug4bhyW>iD`*GlRtu6V"8qT{TϻhЗL~o1$OK]s1H1{qxu ;3~td{)Һz]ġ^NB2i+E,ga0@{<#{2U`ȽKҽѻ:k )(GG۽M%hfwz;vK{]eFoOp7̽?f䫴a_vϏ"HO'en5]#c{|<..@ _AEb 7d_dν$9ɧ㾐"}1"ˈ&95]pm=o0N)zOk?jN.?D{=C\vM fK e2ԢhV:o \ZG* yLۂ;b;B8?E~D9e=OJ, 6? [Gd@[F᪶yY{{h1ҬtJ{CfrOWNu|cx -BmqSٶB;{p&Y0 炞\\ \ y^^ )Nfhf/\ҍ5(Xj[7po?z 1PzH'Ʌǩ“9AxȧB>78- D}Y1gi% 0kY`zhc֊WJ`lVE -4ڈ1^/e/ .g>q^:-1v6g鬞 `oֺ@K~-ӹ_ing b Q6<xe<']K-ϵ"D+ϲ)V_ œhi-S:eiYI-WJi~/j!mԡ}NtF[-.hZ_׵RV.jOiKzmԧ}Gֶh[dMۦPֵ9J{V{VkrmOF6vH^j-;Ms7<~QnZV@E[c(""e]Kɵ¸qUX'rr1fZW~CbQӢ 9AsD!n&\}[zYBޗާzIDsO""d]E<\.1r ϱXq'D9Q#)1J&[T9UrGFXIq '2EIFc#3NR:q*tƹ 3.dWk8WB)D$tʲJs\p]ZZ*sV*)U]\[]5:.>s55QM# AjV]-6WJHc$\])VOb1V3"U<'U#^&q8Hi8L)C..ZnZo E衔+)"$M҄QK%Q]Ѯ "k}>TՇgX=VwAݦCSwR,hHVFrʫ(WR\My"(T,X̨ʨ6?o2s@ ~MF]. 22ehhhrgFpLCyţL/(#_oPQktRrHRpzOѧT=MO1ymDӨ RF1J9U)+NtM+O(.dX2fM7|HW`z?ku9}Sk_+_ڽ7NkFz?l]o|ܵaqzQar[n$a1[濆뭧浟?i5켙o%2Tߡ}R#~`(2mm[lm۞'kۙƔ2ζ)ͶFOiN)DN'm'S)=sv.N#aTzҚn>k5dhDԯD9{ aRĎ_:ϦSfn{q{"fe1K].3w٤=$y"+lLQA),ӊ >ʦR<V G*~MA_Gn J.41Z 1bȠt W{bxHMJķ(*5ƻnb,b0^O}HtU?kc-..Y˭*kuuZgem6YYZ-6vUEu>lm٤#]ed vJb_C| S]]$[*d[DV\}d!XFVjm&l5ɶ_# e!챆meaJKt-іdlMc l9dKEm#| gmM5jD} m6[FFϥq&oMTLQvSKϵ6)LF+1rTïc'Qze;F) ^-|z6ӧvkz vaiS֭h̡*(f£`OOh>uYLKitylRJf koKmdf}[`_l__B31[v̾l$ךsLFJSh_Os}%ya1HQt(oOmk:QE]H4&ZNaky^N{ yƂGhؒ흘-[G(acax `8v]O?~~~~yJkCvDFlw #:jG 1ΜX# &9&b9uF"dI c4W<#^y4#+(U E5X:e] \1;I:##fc/;=cV;:;3 }FQ=cԌ13,3&83gDϘk؋Ro.g ߼&M[)i{E̴rJ={RŤi*V5S()jJ(mTCH'uO7u;ʫIjHF3J.tQ-+j <$:D"iO:SS$ħ(L'PL/J7ŧ)JX"lF E^5VMdqxqz:[Q3UPb)E;E&"퓤Q?{'I+q$V39}͙Vl [iŌ3r =+J)/3?0Y|r:24ȳqMp\sѸ.3R\H5duƵC(#GT"+!JQ^r\9!tP@ũChWG8vq:G#R Bh=W+ɏp0/oFf\pP=Ν *0 7蕠~tPG_&Cyii3 (ȷB0@+p` 43*o֗;h>Q"| jn@? F9|ͺyN,zc;ٔHjN [ngȠ7gP B`JyLlEHp.Ub ,Z QFJ hK`ƒcL; &J1:2 *D)] ?/śUd 'A?yD#mӆ3=n~N!*PJa29PsSz!9hWg"$y 2 "6d3n'^_7dxz=%˥&؟UB6k{ob~xwhwrdDcx j~ uFgX_ZI/8 :y\rTyDXA⒲A[BxQ wv`t k28=_p-KIN[Nx yjl,8wVCƁ~+_Wn9_ko뀯38,h ǃ eb붳bbg!szY5.: I45Խc:t<M| Xv=QN]cD]6@#Vi[:ٶ^x:ud$y)b~MN7U`-)MSgA-7ҋ-ipX} ^jFVrPC-'5枡s<, =gMU ۹2:ՇYwmS=AȩᘠfN>X"j /“s5!0D7=` {̅^F,vau~Q]IzJ' x{΋Y tmD O\:ǨFcESa7Aw7O`0緐{im+BZ!KXN|Gu&j5*mŠxd3y3|IX zDZ쐜qH.W_(0=U^1%_{ku@'4u"Jz0Gـ8#kbwam40Q|rw dЩX㯀eYfDb)E#?!Y(zX bǾóz"ƴտ$0GuNMkXߦk=/ܥ Y,G NbMD7: y` pƿ,|R:g)7d>ũw`>2};6T| p AwUAtΣ{Sj%,R=!]GN3e,63FgWu+h:8\Y|c  Wp_p''+o8 > L G݇AOǁ|>7e kq]=ec4>eTj PV3M"`40QJ=:PTs(} x4f.(B *c <nGL*RN~LPZ\lnu@gK9 )d *f;!V.u.O!Kwj{i:<HBS!,}K͕8lh?ODt"wJBdJhI`8|@aXL4̣@` ۡWD#(3yd_n7Z7uLoK1ѠWxɵLx8z&r%gKPѠ7אL2,|:8`98A77(]@ L;zj, au:L}6lf!ՈTvs,(~mF c۸T3z!x\iD4{*kZzWo$}oqnL012aQ_J:uV1 7gU)r ?:[c4C0'1h{Z*̫ux )̖c#4L u F-HH)sjXu EC2SOBދAy5dye|u7Ùp 7ȜGipa^;4WCݩ&;g;IF%D6.] 10Á,[%J!{ضմ-4|z~ k\`b]'X1̢|`$43[ N;@c 0@<}8gOm"yvc;l7!SO#3FCN:#ځ.@gvÈi@<#} 8I!b0 x^G3F ~OfB Supp&ϕ""? 9Z#_0K؇'D}vaOI dۇ'n}xnw |@}߾=@Dž|@^aH*>96aNq*E-<_,bXaJS/n,rG9@< // )qX pwe-<X XxJRt\3`##oHRܑU-):q.^]):sLL̢\pMsŀV؁;x &=']MJX@`+n@S@k@{@@1C$4&!I2 00p,`*`& |btr"mk,5nE/D"%Z 1Dְʾվ5p~,nuܦ/ЧRr5|~}nU3?}'I P*DD4j@?'&X566 {.8 Gq Np&4"0m^s|<\%t2J7[ b<<і5[L6@:jXZZ Zkj>y6VL#UhKh^7&ZMhsY%5mhĹibyuML}`f% (Uqq {, +%Sybf!MqBa"}z+ڪ -4z=zv^#" zVg64gi/AG>qe5!ĕՆ lk+qeu!ĕՇWA\6Wʚ@\YS+kqe!ĕVWʶ6WĕvW:@\Y9ĕuNWʺ@\WĕunWz@\YO+qe;B\Yo+ v>P~]|!lW+qeA\ٯ ?ĕqe l ĕ = l0ĕ qeC` f/+ qe l8ĕ #mPo?BK(.Q6]4dPMA2MAP1*P%s.3)tD72=D<K/Ĺ0x%^ cX0x%΃a, <x.A. UR\*L øW#W*| CG56Ր7ĚX通H#~ď ?ǘLH &՘%sa 9AN`)''i@ΐ3XFΑsXJL9ST2X9jVg2GS`Ms k1SX­;ܚ:}>e2++g~c~K%6"Sc#!&5nücacaVJ)u ʬ26gUYUlؒmͶV.YCeYclÚkZ`[֊v kY[;=t넝X;؅ucp{փX/ ެ7vc;;ۅ=خlWvca/6  6{l0Ć!3ʆb6 ]ؾl_+D]O W<3؟xw祼 yE+ʸʫ`^W=yM^ڼ68pq8\&IqoL)q_*hs!TC1zp˸eY5_l=H<E_?i'ʢM ӍG{j m~I'}%XIڃݥ`=JCICN ]6@l i?jhv 6P:lt4ݷ`K ( 6H: .lwip`h/7#1pґ"3DfbEfDfEfDFF$$+2"22NddDTI"#i"#"#"#"#SDFDFKHH4"#3DFf}e\y"3Ef,Y,2Ddd2<"#+EFV䋌LFf,FMF EFDFֈY'2Add&"#[DFl)};"3%"3;Efv^dd^}"#e"#Vҿ~"#"#"#EF9*2R-2R+2rLdNd zS"#EF~}Ys"3Ef.̔#`)<uÛ5[Cq$ 8 'qxN8Ox:/0z <>̇!;#< v8q8 )#O“ӑ OYH i4"R#$+T8wHF&42 I,2d oNH$9onh蝛 B~8}Lab YNBD8r$H>) I!)"kp^Bś)`V3LYˬc3&f3lc3wbv3IHBFVFQj 5lla<%$;m$%R\ښ 3?!ts}g~)I.wKk-Cmrd4I2IENd3قA,AR>(>3HCZB~ 9ZBE4Ge&q+bڃf!_!_eW"M>OBpC~9|euD?p&+8wxXӳOCs>l#h޷j}HGhـ7Ix{ޞoZ1Z~ F` ޚ@*ri/ ~OyS *#!eB{(΁N%Bit[.=m@NU:j_C7=/aXrn4$\ 7-Ѷ[Eq znMf[9ʹ}NrAG*>;FS!"QSԔhѫˑMeޞ!Zhϡ 3e|zM=:-tictpͺxގh@xރ MKP@cx?a"L9]Nq-2:q#Ka&dŅp!ZhFpc0W\=ȁ+⊐\9 s 'a̕qeEsQa5r ޑ Y,y6g3b1)q xӯޘ`Y{ӒOˮW |o\B `+"&ww)TTG6XF))JКFk Zͩ[ROw{RoNԎzfSJ= Z.MY 2aK¯1cm觝0~PT}{塚`V`%* ¨o !8MTA0U,8 b`*f8B`ᗈ:@BAC@77om mux9x%5G[vvrG'g$ITF[~RREI-#'H=9Mΐs>9T2#Q9Ɯbn1w}!+yͼeޱ,+ayVUe֬.kkڰ=+g7X7փbl+ۍ ``6 eپҷw<㥼+:k󺼕Ie 2Ew>}0쏃q/{}L,[!Yo~yOc<Yk? Q$m,y;مӅ Beɲ ?G |DlE#% 6ٿ)c))G7  C8$"`g{m[l1(4J7 za鉆$FHL?"7i5nk{~:S 2[3Y y&yUL*D3~qjg+ŴJެo|##;HOJ6OLw44'tO|8Gya?qh||ϘF]厎ro$wtrvW+Ħ-ib2*e$cW&|od yc߾hZTTڴ;W¹F2l-ck]m07?+ Cz]Q n/>|.*/ozJYVv%v[l}ýSRݗ7-ۥYsg^#ov:7;.܏7t m\RÁ~%x v:uMPy]jHzM_w:O߇=HaߖszՖ=L%5%)S:~QyZyF!ey%jF'2땦ǜwV'__8#ۊ.i{l~!ENysͭiQ߅ :O;G7vtK8cZB̾&:o}o78tM\-G֘aQ[KsOC:If~Qʽ?=Z~4Emz5$k_cvx" ߽x7#~nKlvyRn-@1*OwqGcC1`Vwvan مM/Laah!> '}džTn臧>3ȠСϖC=.t`yY17U 9bI-e6|_ ]vRo€6ˎ8 KQsϢ<ӻ&+uFr`AF9O-:.djk㳪3gNIC珋Z4I9{OԘqG'?{霈5~֜>!WN4/,]s\WSI\6ZSs5LTW䚂(XJr42 PQw,'g ThUX0`yux$Wv,F-h,( N.gl3$qǝڻ:>%U9u/ucW`quYus7mm;uI[^qqiL[i^s.ZahR_isw.^eRפ5ߌ8^32jþ}s\j0j~=}ՉMׯoiz~rI¹7zv+L;PWc66H~cutNeOOo>%q ՘1 QZHLzQk{q˩8S˝UgaU?ri~O^>y<\}=&ՍT<>i6WVQuV|]i?fn]"uoT~\|,7NcJޝ8[\;H~RM7cUl;WdIn,2x)4/٦[G_=OUϔC}ns1&#/8hu6=?g8W2;ӓQ$[58X^^1!A)c3Dy!7Tj,I9^.).KfUyW!AS^Z>yDrrCD(eh02Zꐐ?lLDrou4{I%_l[1Ôe"U P}Æ2UnzBSz.J)ҎN8t^WlU˚B R(ٳ~ӥF_ufޭZo9B`#noG?kXixۣ5sqQ@Zk}muXy]c=z/wҍ/+;y'[Wtl._??Y=q5+"¶o{xɂ՛Nhc[q7n[ZujyfWy7[Sݳfѹ^TmVR^m jsj<$6t;v;wNraUڬJ8]‚=vk>!i'786:"/jy^<]=[8`.:WE {u:iWCS"+4'ˌ'dlJu&ҔqyUSWu.s9Sr[7Y+9wWáj&?{kцnjnؾeWѳ0%\plN*+Kb(fIRcb+ff_X^ʹ2i˵:^Ҹކ[U\ҶHV o)PkѸ{_+M=\i~퉿ísV4n[ړ1E{9Ÿ(W+_gu<{ye7N9k 6 vv0^:9k!8>ӼUm/Du*oZosfPN}̤/AR>bHpSr DEge/߲f-]GtMգ9J"dNFӃֻmWOtz?y4.iN_$FIo*k{\Wb;i܃y+^}{Ioc#9Cj^8R:xɧgج~ѯM /SLKT'Nt|A8Jo.ƽ^%`N ﰊW:Z=德X?ZOM^< gE'D=lzFkӶ';؇+vXl@ˏȟr4 k*шX1vä>b "ޥz=8ZpOI~splW15*F cVp%F|kSg`U38o,/wbcj秪<ԡjфº{\qsY>Y_{-d9#&[SF?_COt$ Pm,P 8~8@JF2Ơ|5C3C`j>9Hʬ;)pv6Ң>Wf?zzi#BnGM5YOgPy7N7~ Nם<j9s,pS:&^+OZe2Ν᳞8gmb Uϣ:ţg~Wwޘ=㥦ɬav<0۴ȏ/40 K8?nBčlY/:o~vgW8usLv;cyF?+wAF\Cy[cG)h! T`ZVWqMQErぬ#'LMթ-w-ˇ8Dɱ<&@(%xx31 GQ]N@W[5y|B! #NLg";~"5r%nhsyU-Oj9|k[a?W=24R9q"N2e3kiѳE,|;ՙ<,#c&QuTtтo:-=Q@Q>jsѩrkRjNWƗ=Эw%Hp~umy7X> stream x]J0yY^pU R&0M}{'\&|)do݀@q;@bnIi}͸4E4E\3pq_# [J߸ e0m$mz عs| 0.z\uȖfTjyj8/y4}|m̒)uM)B2oV endstream endobj 10889 0 obj <> stream x| |E3}@84z$iZrU(G(MM-@@,+®``UE]X<׺mM) ?/ygyfy  f֌o5@]{š2@>Fgxd3y/Srb?2]NЬE6[`FWSsO}.o2z\*-|/8wߋבQe=DHZ-F1—; iC|Bx?]1~!ovɨ+yI4ϷW4io@al,[*@q=]N? W/]0j+9ţ<ܻZ>;++@ϼJF2zTzDl~'ORPA9od/(gW^|r3/DRIsjN >Rd{4ߪ^QH)0;, XR} Rn+IPw`BpɞC?=THʏ{߃ 1XGA$b4Bh8 q ɐR 10HF)jH #`H8 Ԉa'`$aBh1 À4ıĒ1 3̂ l0#hl< '@.b AXP y%8& NR( &3ES Jr8 &!V@)b%LF)`:0q&!΂r0 "D20f · `b  q\ .]P#.y|eRB#6fCRF542D+\h/͈_[D']` W hB2l hb;\;īx58a\ZqWq xVIX mC;:a 7pFq\nkoUV?ě:-p=- ou6X{؀6?&;FnB6#n-=;p/܌xlAnA|nE|n;1|"?"F<>qlG ;>Q 1q  3<! > ߅`'!x< 33<; WX~twete`[ ]]C20)''Dg^0Ȁ %CgW"j35q)vvN ;;BsOuu>~3վMuVF%TjNqj."at%>NU6Su CbX< bqXlYb1S,f4()bQ*%b XbA.}180?y1?~1߁v̛0_لy9zX^G,J(bQ,J'PV1oc>c> ̏bއy7yf^bXbXlr7+7ߨTn+77*7[)7/UnSnUQ(pU*YWŪUpJPT @F}ϘAXO/ɵӈ/NKg l7O{jBߨʺ:HRUxF"P"S~NI[ku3kL[7TwU7֏0K$do?*Uw^LX&pԧ^”I]>(_ (̴+r{͍FˎڋR^m^Nr_s__͔){_}RDťxmR)kUޮ|<<RPlk65k{z(|M/iBRIExՑxh!W{}(6^cw-Ns .oW-ᚹ[0"qOrr'P>OGUt+]a8߅~MM-]?/;)=yy@>/!_)(#KޥdVW$(&)++))Ide^JFiW)w*O*P=Vf sgN|y.wBq+"0J!4ղa  |xxdCtxU'zW$ړTv(_7˭\R.Hv#.Ùxxn 8[T(\kGd.~l_%_IơPIn ir|w/>7 W?mY-"{܍R~3]OWlLѠϏĥk4x^Aȏ\Jv~)|{yr@A LB:\&%) |\Ȃ5+؛'חe4H6*#IK"ǤO(A-xu7M[X(;@DUUr\| f;>)cIa~^`%9!۔‚ 4eb6-_MϷ-/qq5|y[ŗFFSB*G(MJN152*'?"K/_ɚ_2¹EwG蹕VsY¯\V:22B[V8."b,a >!& Xல)nQaD~Eh'j6rn?WO[7 Oeu+օkW%FN(|X2&/} %VD(bM+W  RJФ.O5R ?vQ:Π'ʱcfL@kRSOJIIV*iHUD//"xHc!{֦QLJ}7V'W]LF8wb #wܶmbCdTl߼ʕ3gaڸy[ 搹L A7-)Ϳ]55.%9bܳJ fذj%ϗOPuAhׂ~iWg] W.qV\-r'@zo2^7>[/CdzlV!/BDzJAaqɤRDM,֤O2J1RtE%# rƍϚT:YGDx+{StloNNtn0wM\(C׎NK%6 b DQouH3ݒLyB)rLOPN{^|xϋ1o:u 79,&e-UK4?%VGjS{~Ww̺w=ybG&5ݸ=^A>~}"Mϓ8IBv=Ȉk∗x`$Fⓒepr.$5bZ֣8yY$ \]I "c#J&A 9ED q,.jD4 MIh0!?05x[]_to$Vaa+w~ݳ[lwnj$ۧ^C>´E+& &不.R*MM0d:=vǕTVk֠O$(4qJ_9$}~s)\*XWP֣Th;H UxOP@8^T)o=p8w<7"hZhvq'IJrnnuW}R̀#ʿ<#(C>!Ow\\׮:_)+T6cB΁RTA-P˂h)I+ N!JXH*HT*lb=;zx~.qSzRUUR@jT :1IPH,FER]iKu%+ 2ZՃR=I[z-éz3^V jIǧ>A4j6V>#yBavz^v9Fva ,b]hKl&3ft`gma1 Bf:-`t m4[llPRg}X1 QQuCdscNpQf6 LN'[(wXR5^#x[Z,Eneq-6"n 䢒llmqەN-F J'=AFG6c뵺-M\ngl9[=(@<llT'F;;ȋqBup P~HBYh굸OkiMMYD0&e=F9ڈYUd TTӝ-4[:F6!m457[Jf춵aixBɍxr9+הMn²oFZnFʔ6 lh9&%IGuo7T\aC06Aksh~iv*48P/MEY=ekD:LdemNhy+Ǝ$4٩ $!]cyTU.*g[܊D1Acmۇ"ny.Q:P\n>B`rwL8@Gr*#g>L=%^6n-aw'eGڐ^;[3fP:C#pg`b3A8ǫks&lws# PFņ5F PX.&bY u)b{ )RI7qd;E)͌`<hj1ڙ8Ύ:Y؝K ;%xƉ-U-g$ibT>Zo$Zі6fifa@6Y]!zbFF+/`iJd푤=t\ɓ}Q9T&& hfֶGCgHAҒr?'.ƥY R0*H)Z``dQ9̣LڀD]\ =Ed#+'O⥏$el~QǻLRQE/@cĴnvblFqXiK3rJ{JJA݌Tjy6x3󋷗P`z$z]l|@l)W3ٽ,i?lb-E󄨱 S`fژGֽ il(}:5h\8*'gU3V;8`F^dg]qM٘L$yv)kjr2ǼUyzcN4Qߒ^=l< y>[ҶQMO =bZOKKX 4Ih {Zϰ^v""qohaك$󲽏>ݚ~n RXDsJ^7'vf6=-gշ< =Xyz/!>Ezҳ:`ǚ~qfni% l镠Y'm`}O=N*Ʒwܙk27J+,=yknWwg)ѯNogƠsG@bdj {栳^ߓ*p볺F)"Z"rm#hvH4Үd}_ij`mHq|ي8Kzc&`ųY#yO'&v6jamn5BuFT-yM·)n}3J'Z膉@OZ5 K9ўrvgmAQÚXW snia1gmy/ Du`,*t LlqH D٤Xs7_tD5C\v ?:WzMkd6rwxt'qPM=OYbNsN|OjcXzXSuͅO,AwFv A<(>~ad.`~2+@THMEߕ0+(Pרa\w:(k)#SȳynFExȚ"v볃ZF5j(e [K b&K\nJ|B7]uLcM 99;xp\Cn9q̌2ܣQ""[ZnH'UB x!T]C>6+"*[ FGnb'(Z^a^M"OVOHZpc @\?*%JoOг4%@o J Jk]TcH'G/m5&G0a5dlj:TFq~塓!iV!rאpn !K{+#Sij1Omޟ~z)jWn:A1f?[,=t#Q۷ԂfN/]ku黷7(-4+D}8GOjr!jD-yeń[Ъ;7FƧ]l=T3c/&n_gemiW2Q+nxӆnߌm×e?|{w<@naNć-~Wvohsl/'[8OP0br%!L}~L^O֥J:MWnN?e32LW`ЗӶѲb} ;&h+RQT,RG")x>6йo{(!02O 78ǐSƪW?}]{rᆎYZ0ygE:k'TK7'|![cuP;s֐tzjbaw۠Eνr]xG;N֓juSgp_H8ꫬSo;nCj`/L9d(մoH.Mb=VpxJ}Y WhzAPR Q@5gqA&80ыsfyGӜ8-iقpyרiD?8ezxɗ3KyS$E@W5ztu՛.QQAڭ=y;}mmsDrKA OK0R#vtzϺfs֏_/b| q+ `WAl rYLUhZ̿Hnq!k~S534g]Q^nSsZ`1E.![ıJ:|0XiZ0.Ԕ8r4rݜ񣺱F0!Zg A*\;6eX uVޡd_>!:.3:4u}ΞZmd8_b-/Xňza!``Tr@vs, tK34 p.n.$zAWP)P<rG*`۴~d)OSl#xy:2Ɵgݔ#wD6s{3rC|PԈ)$,oauÙˁOD;̏]BV 5ӿpj",OH=eq)xOhwM 3Mk ?9cHhWZU'7)^(Y'$XOȨ8+OՇ6U`y᢮sIkMj't.J@jN=4X>? 2lp.2_A * )QZDi2V{bIabv]0m ߡ~X45c[^n`iMI&&ghJ d^OJGԟV5dn_}tb^yaeP WO_z7βFӅ&8ikxzP-W~ƈiِ'NH .6tY5-YkalƷ7I׏仛A#mZZFλ岋PEQ}kMRNCrO%.Pjqed.>LJ>}\b;Zy2;)6VM#OF&tS7 B~BOA7PWOqKp6")Eҏz$@(I+=.?<2ߥ¢h20^(ʒ؍EٙG V~\GCq37y"q)1y'PZ.#ͳ>@#=0l/,s Z=&ۜ3鳍벱;i'K/#כk\ˉ {JutZtrVP%ɱoF}X9`iLw8;gEf3pM凛 N"7zL: f \/|zOG\p*+;X4~ZU""n3~JPr`կN*R'6?JL4nT-c]7e铫>ʲ*3Hzk;x!y.,sK|miZcNBLC0p#Gd^"N~G"./wuq^}gND%KݹXԮZH ;zɨ^KxfHhR5EViz i׆L̙E֛(:Ah= ׏dNjZG.fXj9ostD.dFRlM5KCHSg!041`Um8N`5RuL&-'6mb7ݚIRa[/XK{ՎG&͢ HkFh4imtyȂD4/qkH0>zpd'*[_}ؔCemhah8%OO5LK*2eVc&+e'Orrr0dn =vȎb(Ao~>Οy>-Psk= 'XO:n-O juY!,(^/{=f9>K*&$B_ Eu-,av|qzXhZwߺ3̠S|ԶZ[ҞXlL\*APԟ endstream endobj 10890 0 obj [ 0[ 500] 198[ 979] ] endobj 10891 0 obj [ 220 0 0 0 0 0 0 0 396 396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 552 0 0 0 0 0 0 0 0 531 818 0 0 0 0 0 501 0 0 0 0 0 577 0 0 0 0 0 0 0 0 0 0 0 499 0 0 0 302 0 0 297 0 0 0 0 0 0 0 364 0 0 0 483] endobj 10892 0 obj <> stream x} |ŵJlY-K-?V_l˱?~%1yء$Jlɑ$NKI4)RP(]Su(m6Jүp#&63+Y f9s?Y;# Pqk-iG@({NWr&)._zUࡗ c{k864k4Q3N h W3w#dCӳ%7= uF/y!MϰGYpJ x|~'x_&u# P?<E;A RS ~ό=?_ h7&l׳1߶'޿!<WÑ!$iƟy zY ")}s,JK!v#\F>n;Ҕ)Ej 8աFr-KiJA9PMOz'j}!Az@CZ5=R[̣HR C!<.UpT; qb{zyYܭlmĂ~G.bY)bKwp BJj/lcKz_Q{L1Ocx90o_=LdIdZ!VJ'Y%Yv:!Y%Y%Y%Y%Y%Y%Y%Y%Y%Y!, ħ-e`#/hF vITioP!L 8o^ 7]2C} m}@Ƈ_b+"";FԋȇhPmCwGt ãr賒^Gߋ.rWJ^9.oW w=+/ZWK󲦥K/r.qTWU+ۊ|aA~%7ǜm2f23:m&-UR*8Es[F1m@mz^\v!LՖ;*-fF_2-ѿm=CJv[m,v7sVȔW4ץAnH.'LbA#E^dexJ?ikQ4Ҽ$"#vI,!z@Tr8mDl/ ;0ލqzFbOSk3OO| @TS@Fb|k1c4RҁLbn7=lZfG&6!C IF6Q%E =tѩ3z48`xm^a} a%#}b^+@S=0“nS^[ Fb@L|硫ܟj=nN[Tf;m65Lw 41c;E^Bwu k$[ɏRhY,֌x,x?))MwT3"HȂA!&<i -$jXwIW& `ITbG-Ҁ4yx`C^pF|Z$NuGT܈JKORQV KvKӧ]r[/E Th".0t!Qfm$FSM*hKH84bAW $\C_hf& s?qLdwHrO],ęr4R $Bi*K= `N~$Ti7UFU畬A~d*X\p6ںf\WP\PڼZYV |p}X6iяUm]A99fs~k+ruflbYYl~WAweA Zha rk-ȬlWe425ؑ{Xp]XcqeݘU3"JTiRY[WWdJ[QEu=-pW^]xCiX޽zp4+?9kEϹ*Xxw/h 49fyO49]9IrLbJZ@8Uyl~Kz]e:ndaE 4;(׬9lge4KjYXPVVoVT,3r"ƴUJ-~n5 j*zƥK*ʔX)9 f4-̼bS6;UǼKk֙Y[<^[-k^vi&;Nb>FN  @Hh(tc)UƖq.j1_OHl)9Uӧ,Gl?szme q[źǶI$>[`ˍsi3_Yw5]69u ы2 d(SYCfZjH@p:,rUq,Ue0ʆ&hYaZ G=Acc4t  D.P_ZVZJ2&m6k+$CJI.2؎ޡ B?{va=Pбzyf_3yUnn2Zf_fyʡ7֚|̃!3 ^ʜ[li*m~~INQnO1xK?3ae@|<:,Wpc2Ej6 ͱHgUOtjϟV.e.Nc7uez/C,258=Y\]ʶ*W: սݳUyVE |QAT2C i:Bd *꠫Xod :vQ"vW)SXuʽjDV 髅xDkKK'#fĊOJƪrLȴiE6KI#(^YPi*fw֥Olsc {ەW}^>+1j)GV^mU\Pzsԑ: gRǮZqn~WFϰogUb(;eTRRsK]ftm( 1-En.btȕA+z+oeլ|NZuŚtlAN;X);#|xNs'?>Honw =#dcR$E>ߛ'gܱlM79 ̶Qqխ ~u|њ_z mQ+?P\͹xoA١"cŤs&V2,qU e `~S#F0zIK=xV,CX߫pPFXeH2orRV?n nl9t,-8f)fHO-Y%!E鶴K#MmeVekyCt 7dL8aSSRRaH2A$D'7v9d6ΦmM4WfUR`wCld&k&6tM9.+ ±1bVEo'r )~/ׅsKB^\v}ukmuܲ~ͅVM8, mN*60#@5 oA,R!+ae8U2*q'ЅZX6`l3X}Kۣmgo{_`}}Re~2!Fp< ZifAPKl+ pT7@VFiޮ 낓tef{¿,E3woXgܲ|w~2wm|Aaku**y̚vo[/P oiY )U6 ^YeQۦbKeŕ) V-_8N50|;!] sQ*ՌXHvR:9g|kPMqp6I%ڹ 躝|b .nB'_ܥu^T_J^'q)+y`J^+y%䕼WJ^+y%䕼WJ^KpE TH} hַDO!O@m u^=w} [(>uh5AAƚ@O6Ak̲]c PPF]B@SP>HHևP6ܤ!yj2!@ƀut`,k(}~r2HˎȘAXH ɘCe@GdDũ SPEڨը3파SU:kPfc6qc^yH4ɘAid!~HYJU7e7dF 7JCkPV6{eEu%S'P3F0GyAǡ= l%cDcC -C5A3ҹl$g@|n!!"tl@)(ǖo8JW)1>})Q&Z4zch.We>HpܓBs'{V*hLPHۅ,N|,Hhaǣ bb!a~Π-c9GG$L֒B ǙT<".N%,LD,9;x!nz |yL,0S0QqVtW#xZRIAr!'圻)atP)&>^6-hF`,OvAދ)GEhG9ӽP1O8(Hډ[/@Xɞ䏟P~!|_WKVdNr9Z QE>ٟ=>*c\llB7!#[|73:x^'cw1Rz=T0awxGl"I7Lɼl76ֹvY}|mMM#Po ƃ!!KFGH_ B[|6al0!| >/? @U"Oü ? n⇃A/uZC@><&4av_P[|I޷:OLx(Ӡg_Q#~<Ш? S19-I> Õ`ǏC@'t":|c`I5l <5 썐A<¾-dY}#0]?sX0A' Q `&$D2 y!d'>b L: *AaCa7` C`[Q"N0i",oG$!`~<tTR(1Q 'FĔ(`?u_0 u!B iIx?Yx]O7"D t@''\'O>(tSx$_plݺz,6_'8q0>2D pg$> f"I ؇188I Xg2 x*q@<# cwt+ #^cs8ɠ9UXy-i0c?S3?ǿ|5Iǿ4~Y'?O~a&&2]w3]0[:.b)Bg YE+bm/"گzjKs"3AA٧ xxw x|`G`1`~ g<K`k`O~`d/@}xNV] ΰϰ~}ssO'?>'YȾ%%//~}쫀_c_::77ɾ w=Sa{{}ar:uq7o~{7o-"'B=MAApG@Hˁ/qOs w O{{KK_^ WWƽuuopo~=h;ŝi4H w[[ߦu; ww@..s9 ==s3EV +0`Ffx#(Jd*2Y,FIalV(r*r[y<|BlUX)6Ŋb%Re2r  W(*vJU*ՊjpVP1UԂĩp^{\TUgD-MAKS2%.ffVJ *\D1+^R"Ͳ7YtJg4/5O*e[B{ s9y{u|wٝ2Enݤ1C7{cC>}7O/~~ܟ3@߿"u u:W8qfu37TVTQYKKW>{0@8{0`A҇>~ 6]w^߇7goRA=BaօB'ʐZMJ&p@Q؄ ?5=i!MOoZ>gMglZ>w]M_ڴa%MWvjZiئ[<5\7$khm[$4S_5J%|[nTt͒%oi6RA.DDDy(.}4Fo  \1j󶌼Wq5 @#uQ3jgԧ=QG퉶D99FD9-wF] gWh-zWBiCii z0J"1Z_Uue NwIQpۨnE6[~ݖw[mgw;uڽGqJ\+j]^ ˍ>@q1ݥ@Wio!Zpa6(gIFӪ:g|%~c ;;E'$Ntg>0X҂O*OOZ0&rL1<ľzyjl҂>753ufT{j!SFLM#i'.ճo{i33<R3)'$q(×q2?bzLoz}v೏<7乤zdu(?ӌ fd̊iVҬ{ 55Ng;+bj䴚4cB΢9rvxrSΉ\KF<9cK[%o[3oWޗyμuCyPg[?ϩkE"L5o3ȼVЮs C 2 f,*X_ୂ >/])8T5գAA Mv]}Nu(gK5wGi>@ ю?X='Dp6!1?م_ӵ-F nA˜?C['5 mՆԵ5P 3 ݽ0J)O]#w5V+UZ>K!3l |pm7Kl>65ޑ+#tM@ j\Q mcu\; 4D0nP ]utaF%FSw,ή}zv~84cP#Zj~Fho9g|ic].x{n;],Jj$ksRv#W{BԿ+e/=7ƖJ0trmU°W= {X-=;W#Nzwbċv.}}I^sIFaRsLoԾw@ۗd'-:,3q4 W4 c"hn}4 ]7 i?س$$Ɵ7l\t{5fu{=!`{ѭn_ kl/Aowl=gX@Ǧ1ln}FNݒu uO*Ͱ;a-cm Z,nK-^ZkKQΥ7be'wXh}V\Qr+\Ur%]^z>8vY#EAq(ko^P'gԑ#|w.Yk(K^zy63/r7_ tXI>IDlt1]>!\r( %BG"[pMz^aɲ'bh[M[m}x s~JZQzmx(uͅIc!A: R'0&$H}x\--u{}xh=)sc ד½N^'qNSc3)fs}Xc=F֤gS5*.xŘjqrH-a4$< c`,$8x 3 Ra2L̙43Ȅ,<Y0f,f0ps!ra!ca Ka5 X Eu2Ni | _Wװ 80(8 25P sP"%. {8#FVM$k0J8vJ e0 fLL̇01&|fRwdk4Ӌ2!0 of훓IE9ET!5lf Yfְ5l&ys!kռ導˰6@1o͔3C>`-Yf8k~o ҏ,Kb~1~?8kN1 V>p*דFK! DA;H~@O8z)H'/CA;CI `>Ls3a0 Vanȅ<`yPaL+脲k(հz\7)sJWXHC.G_M'JpA qQ%̯RģGC<OP$ < )0R78+u8ck +=Xo6֛mss^_W.[pN gX B.l$lB"}MKt^~Q2$3] X! !B/Š롵~X4Si֩TK/%ER }p  t+N=x';.p/~ `x! #`$#xI a L^ q dtx,3as l̅ȅ<)oA|z)VV2ނ{K@EKpA𮢈X au49rof nbVʻmNils!r!ᨘ)Ū*>Ow^Ě&Sp9\w.e!4cB2aLuX:,STe2eaL Ri V#azc0pH0FL,o:X"( +T(43k4Za6Ygf֙uffdUJ*aFs*a L4<VVUժjՙgP6f c΅<'3d.|!@zvx 2Y+I\%]̵Bz#盩:oJ[& x` >]1|e)|rP{k pa8====MayӰiX:,o[nnbyK'Bq律sQ_lTI>VJUx au4,OGT \4y9?/*4>5mV[cĬ5,EҰHGhX 룩[z iX!:MlJRlX4E)v!ʼ-ަ4D'D:,eɿJBd)3N0`> ^aloO=`?|ࠔi$SiGuB%޿{׿+Q$"3 Mgggg6tO$b|i|;2^4~hٴMWF ?ż,o Oo).1JfRR+ڞ׶Miz37sfN̉e.9z:ߡ%$|w)<1{,` b%v2;/ 1oyJT|_K vC| 8 ;IG}PIq58Ek4Kgopp .C=)^e7k^7`  o۰ KLK0 cs9RE3 c**I1hUҊ V)7B$DA;B~W`<^p'E09GpFd ȁ\ȃ|.EŰx*+հ2:+a3mG[㕍c.xM80o{V*mdѧeg`sK1r։WԲNHRL$xI&N<o ;ΡI/Ji=os||~뷎k$jN8 ~? \EK^&'hQ| EVeUwo~ Qj$\iV ?X.5| ?????x )N''v}a- o;?i\k5Z Vïk+k+k+k+k+kKkKkKkKY6V V÷-ŷu5m5|Rݧ5|?/~GjZЏď,ŏ,ŏć!5o,eRIOet0lLBRHb+_ ^/ob%ƿk4i `:U&^CV'=IożKD*5 o6ۡxG>;Es͟@.hX,[-˖eK@4t.hXi|/?Acߐw!qc /G_W¿'8J}{su:դ_$Jq5vƉ8'ZDkh5k|WՂU5F%*+CCVof9??????᱖>>\K\K_jkYs~؋%"BL@)6dH1vS4@{7:-P?V A7qpi;ד^p'w=Л{ /q?D3htN4A35.57H1U BC1Ä!rȻVv&6mFDBFanFv̍ґH]аXb]v(̋¼(̋¼&Hri7Hk'zTzsu3 Ca>tMyz!cuHWcC"u#.S4y)0&DD~*L)0<<,e =0(bLgA6<a̅B<( a!{KKe^+I".հ~"'y7֍Hl:0]5-}Qޡλ~C~"Es!=ǖ9l-6tކȳ- V;vΎs`b^x-"ȵ c> p ×G{wV'5c}=(ұ'ly6x$`p`CP6a|{MEa c֘MKa!R|p.J!!Rl |۱UتjlqlU5J=FOꠞV7Sv[Lu&>' _W}<_^m/8x:&Q aYt;s*+ 6+Ap\ HqNٵfG yrf 3CP93T 3CP93fJN <c0p#! Q2If7ɓa 4c;i\,Ȇە<r\ȃ|g-BSsr mj#yiÎWnZS-穖TytBC'|hEh}p>_W+j|5{V^s4^Y>s|-M V=-^VψeY]=':1DMR"Qկج^5\e׋BUITXd1"n,-x٢e ubNe fAYsh![ZD "JXZS~em-7R':Qi',ԋ!nHt-3J~W Q;qs;={R .{S~/!~N?}= z[H˃be }OeC"ɚCyߚOyP_ [ EkB񋴳bS$RKE{2ʗ_N*jaEֵu,zY70^1m_o}kH&?ݭ_B(!rC p^t5嶞 UDQbKGm!0OgsX)ʁ`*S$2PT@eT&I.GiVRE L*3فT2L*ʤ2q2騌q2.T&IGeRaj17AGUwI#L0 P`- b4jE `a~J[/AGnJUiם$HX%4;xfTg<G`tҞ='ns>y6;#0WU]\]jzpEo`yAkAKƷsum:&Tj"ÌUUSڠsG,G9aG?;8f];>X׏3'q' }Ordc:w-pϝa\DsszFǟum)eϹrZ||[Ut\_c/~/Fy˝rj9]DZ7WDoћU[͹F};]7ܷ4|sH[ts}'Swwӟ9%NfOZЊ&$ -HUHhEB+Ђ%eZЊ&$ MHhEB+Ђ&$,G$4! HhBB  ЄV$"a Z MHhEB+Ђ&$4! HhBB  ЄV$" -HhBr$,@BЂ&$,G$4! HhBB  ЄV$"a Z MHhEB+Ђ&$BB+ZЄ$,A*$" MHhABЊV$,AB  HhEBZЄ&$" KЂ%HhBB+ZЄ$4:{T&_ǿ#RT|WW_?MajmR:UUU*UJզRMP]*fKʨPT )2uLU.X)2SvL2 L*&Se2MHqKEڬ"uHǪH*Q\%R6D]*ѱ*QF%ZM@]*fKʨ@T.Kڬu|ϜZkBk\?Ty2*zgSPy *ϰʳI٤t+τWq68URŹ!,4Xe62z %lVYT*.TaSe٤t,T %t(U.XeRPQ *ʰIE٤t+ʄJWIT*IW0\w~͸1܉N}OZG0Z2-hy-:t" 1[:èG4f>Sӆ3zAO#z.@ʚ8PT9+9+дM+kuq9~:64գb45M Ѵ$Su=N]_BpLŮY\??s92Y,L^6eQֈ5 ?7NsVsVm:6f$ڪևhCj5m:6 5~\s=5_W*=NykCV=07} Mo5olg|;ÑXċ؈F$.D駣ߜLĵzzlD;:Cd"W#فY?D,DqVqV s2!sVϧ_ Z9FG^uۈ8 (ˠ,])<Ț@F4M őS@AG.~7zTP1g&FP0_&FُOLO ^2K6򑸬duLFٌ.]^ 26#&dk d(#CYU l)LVV&de,Y~O >Qwrֺ%E DUTǬD>k;cmǭa*[uRxKak{kymo6Qok;cmǭa*[u2R>k{b4Xjkeh u+e-2Z[u2!sd^*>k{ءbɆ4}=,eCX) oivez Zxtx R2?-Ͱ=MJ HgmѰ-Vk{ ]Xzt)K3lm#eSFK#Z" 9i(=\^ۛu(jDBkjmoסUPU k{aJ5-Vk{ u][zͱ=M찶W!MAǃY'{mșPdqxYyBK\D.vKo Gnw5}Q\:{"gs׽K!Q:VM53hepÇߏ39z^ *^)o[aOAp|,ͼ*$TByf{ưѳo42ZAͮ#_x{ᅑU(XmwD.r}Mx9&1KϗNu ?++tVb.En1p^7ÞG闎gTՌft5\n:TzntLzN@vH45.")&=ԫ/i0 qnjwKw%5qaOz~H@4^X(L'4J NcO8ϽGvN=I])C+5 M =K{(K9s<@yz^i/G~ Mk:AS&Emzһ4M~4 ZGϤ%sDt.}P#}.{Gh5Yыh %./Set9a=Ut5]CW 9Rsp[tK-Yp=%O-U@paŻo͹x}]g RLzY/9`BúpXú2u8+qxĬ f1+YA PUa%JO1L+I|hwiǡExKe!2x~0RmdCsadA0߻N#<*]&>yfG%yS7}²7{t{/+qlpp鈘PLȃ<()#b;"#&kҼ&kҼ&kҼ&kҼ&kҼ&kҼ&kҼ&kҼ&kҼ&kҼ&kҼ&kҼ&KrX/rX/rX/rX/rX/$-X/XK$K$K$K$!q!q!q!q!q!q!q!q!q!q!q!q `p#G08d=Gj7^W[5Ѝtա*Ǹ1Ωr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr*ǩr\` ru(潫ZDiu6gXS['Cjw穊qpgEs<.(Kbbzg%_\qMkp(UGQu}srQ5>(WUGQu}Í"i1n|}naBM u4&ф:PGhBM u4&ф:PGhBM u4&ф:M1M1M1M1M1M1M1M1M1M1M1M1)~xޥi oBc :juv؝aOpTukI:΢N낫vMƿN*"$J}iR_$SPx*Vgg]jb"׸%.ߥo9W#9Ws%8Ww=8Y?p5!\ jWCp5!\ jWCp5!\ jWCZ5rFȱqֈFՈF5rFnՈFnՈFw]?q׏~nV nV nV nV nV nV nV nV =mn{pۃ=mn{pۃ=mn{p[~!X|-CS)_i#GIAHEZ._vߧ K=qZLb$-&i1Is7(M_ѯ_hgYCYkڌցk@怌而而而而而而而@PU\SBd%}pM3t5]DэL$HDR&2L$e")IHDR&2L$e")IHDR&2L$e")IHf# <йt\:Df,TG'u[]X'D^Q,״{߫a8(8(8(8(8(8(8(8(8(8(8(8(8[kӈ#s$ z~I)M)JSWkzP678Lt%.(E Z/LWJZՇt\ѽXtSo-ξEҋ%e>S/V\I_JD7%)MnJtSݔD7%)MnJtSݔD7%)MnJtSݔvy{~'ok~C1=J?Ohq)=AL?WY:~*[CA{85=g&vQvP S)aSIة$Tv* ;JN%aSIة$Tv*{Z{Z{Z{Z{Z=_۪ޯn!QށF|w:ws $v~Y?Ԭj5뇚CfP~Y?Ԭj5뇚CfP~Y?Ԭj5뇚CfPsM7_]0l5뇚u pB' 't pB' 'ۢ!%QQ^Dk./%t)}ڨ. ZKWW*Qka=?'HUfPU黸)*^))2)2)2)2)WK?&vs.Bž`Q`vd7*^wk"* c>m8ۻݕKٕk:ϲ۳,=nϲ۳,=nϲ۳,H*  H* )<ɣ#<:ȣ#<:ȣ#<:ȣ#<:ȣ#<:ȣ#<:ȣ#<:ȣ#<:pyv]iƘ'^扗S6Sfm&ݥ|h,v3,;;q~0fmfmfmfmfmfmfmfmfmfmfmfmfmfmfmf[ىf >+iHEZP&kYe7~_]f9P?@o|5߬f7kY͚o|5߬f7kY͚o|5߬f7kY͚o|5߬f7kY_?~ܯs~_?~1ٽUv?]\wsUߍd8gUPv!.1'9͉pNs"D8'9Ω?5+#iBX(ɈWsp$2GfsJHp<8<wl wEl[{YDž"R-9oK {#1ﶽt63ޡak+LxLo[vr~;\j.ӹȟ"A)C?^q“Q1"?5"OTpN$m,Oz)Z;°}$mfEwEzt.K꒢O{R=d^|H/>?*g\?0 F谮vOutZpN鴀ljp߹F.vmxGt 3_fKz^sf|!N4s:sDMX8"J}dawc, 3-|Um>S ;+O _ jK|=JOݵ78\1s2lz8pDE|SsqN1)9Ÿ?r?";"a_dk%}>ߣGQcBn)J "o|2﫜'##aW qW's=";{>9>9¾ښ`vms|ljp\csK-6fxwxo;t٥<:\d;8 >kvMEwk7U>=Қ  *Eóķo5cǏcZԘ DvL׿46_M^Nq>;=yy/e|sU:1=ƕڰZDiUt@siN5°J~wFߒZ>QnO"D5ܛnoK k0cUSXmj~C#ߪEs=GcuIOSϧ:ZΝIޫrlj>v\ǟ16z2ڦ U|/TծWD7ӝu9MwO?5[3R^W̷:HcWT*^Q+pI1吳TYY2sOG1YGF{d`/UiFUZ#K==ckrSG U"tUՓ)Lɓя)_/i&*pW8+`cY![ʣԁ'Щa?Sf4fGS82`L3x)ी^ X)`F (ࢀ& X(`P{Z=^Iϐvjm53Go#Gn9۹vN8Ul'Iws\j;wBh\UٯYqm׸1mm. 3`edx р Q5OY3K\fGg2]v?Dk> O[[BOWMZՑ_q 8Y1Z *xb_Jպ^3yWwL?1&3c1ĘEz@ўSyTx,:\;T;zt8U/W'9lû* ,p,Ȫ p<&aOzI`&9LsOҳOzI:'=g؜$6'}¤O4I4I,NˤLˤLd&B* C8&11T 8w~ww~wwetq5+(}l?O[ϵΟ^뽮[kۂ}>;wvwpvi=foSW{=U[WW*/_s+gÜ9[pug_,QJ?Y]yIݓtk7ݷ;٧w>!gQ{x_"uͻc2\Qtʛuk>hrCwބ[߭!75nʛ=-~k]%㭢DvY;^ﮛ+3=A(J܇FW8䈠(#J\FpP㪨A!nP94%**0"f$Ho~MuUׯ^_4|7~n'_Wk˩%TwӰyUu5o C(WY by֠6 q8 u:gYgକi6W{"apm=6Zf@4hi~8ХL:b%P ХHe(P+Pk']ę}d344 $@ n}N<NeBA@AdxZ̔K H]gz ^ !xTj6jjFh}l>xGњGkH-hУ?#@7c'ЧMme?m偾} ')x}܏>:::xg3S+0vT |C=xTxTxT K|cY JM¸ƪ* 4?r A70Q֮ zM*G[~ȇ죔2=TL5Ægvju$K[Ԅ]6V܃yQUvr ŹX|ZE*>Z\*r ~o_0}giO𾗍)WG6w6 I>C;jGAh5տzC()d55zڹ)Ն\1Q3 :Pٮ_ƏƏqrS_Jc,_KyLpl 6[0 edd֯R*m @^0;傤,HBkh-ϧF~k[#=ӡg:\=Au^s+]Si t/ti}" )E꭬C%g u'JV K|`KKKKKKK OU^֭%me~-I5OKOKOK rӦYR%~Ơ~,J ߜF:k$ |[#U ?o+dX/¸G,;i=OG3iΨ2[%XC8W ޴wО< +x0Ph?`z7x3ў*1Y4,RL Л%/XH'KӁӁӁ5XC g ӁIF @y:y:ƆGUa:o-/e YtUV⊬dBh S0SXjW8g}0/5ٰ:1 v*iTV?D".Q5 P5Q9W۱BVo[AɛSBǯ"Pq݂zéj-`&-l,Z >Oʂς*κcφOOς*κ[!k ??~> ~>LnA~6ր;|/$6'~>H]bBZ)>) ) ) )֒XZB;z4Z/if+WXE'"f)ju(/\ѷM?ğC h)56_tj--ЛE"f'6l#_?6g3l ?>/sbjw5{==_ױ]|#sl/'~[VVw|ov;a#/`G>3; y!;$?)+)Cm؜5ڜ2yԈn#҈u弮hy#cq obiLJc%1 Yw0똣xy9/7S-aa^/F1X䟋Qb4!ƈ[761)b-fbHbKe#D, []F('XC)Ɍ)MFiI1Jeq#d'H]eOqymS4~~P|i϶爯y-Imag5ι2,nAﳬ\"/[S TGt˗ޖi|6;/l[[|Wb;Dr0^ Ujg3L547Sޭ3^Ɣ;zLw+wšJDFzg.7@k-GX-}%f-/䀾j:u/+(OQ|_{=. Xvu\}(mSmqR%ӇOyWMI˽5Af ]E,gWy5Ƴw&HjT+tհANs5_}BK5 ZRKEv|++l DRM=K8eeA%*u}+Ge3orfh$A*Q[?R<=LԑJnW*ɯƒozm_Y]Bּ>WD~p2|#0XzQӷ~oe&71_q~,"S?(z7Tr~Eܾsl*Ժ_E~͗ů\ypP5Nܜ#]ж~>kΫ>,b}uts9תK@B;{}M8-EQ;pjoёpkڕ"?O^aBzciyD|j9Xqks_Kk)0BRZ ~gy딾 V+~]"cG_:_k?ooǝc_G:Ojcd=W1w8XQV@ K4J%[[Ipԯ;vi˪B 2QUUQJ v3xm9t(#CUԵyo3,=*ƱoT8GE GLʯ|9cʮxּJQUl׻ֽ[jU?eM}yK)*Ƕ޸5fU-.d~!6ߥ֋rzGj?KԮQ9<)kBu۪t-(ML0s!㦲K8$m);S޸3]@̡bi]+rWu q 6.~rW #|ѧZ4W^)AHSרl,l'm*84x%7wi-[pk-sMd_k}xF:B`T}&l_]Qͅ AX$T:˝+d9ο| i_#KﯜEv^ Qu+:^6U [xw "ǯn+Ր+6uZjTv~#ҿZ_V9+qH=/gF{|d8Wa 6Ҹ@ez>+v+UYTںZy7Usަ)9\fxd`dߌo{z}@msjUQk9/_Iֿ}U7WPN\jӯ}>yعʵVȩT~߲ߑ?C .yʭ> sˏ*~12t"T9RDQ_My4}K Btq VNZ69.8v'kRl6P?M}~bA{ ӋӋKOgTO(y9[f9776"^H[ Dۈbom/n61y4$2yƃ^aUxjd565U8-k5vYӭ{=}}O,kQ5Z/Scz8>5OCvq~~δ'WWb##w{8e9YS㴽jzdYSPϚɔ.ww{{Y==ܬiNGM#&]C $BO!HtRH5j"F3 Ej O>ul@! J5nJ5RDc-UE-+ƕȵRhӕzCnJ.}0Aou0߆B tj݌d%C 4LTp/e͢ ApׇPw6R$AH&#EVCy࿢QZB/~j=Tb @PFVqV&$,fa42MBX 5~da Ն CCF>Èa XjtkQ3֘5 kBYS֔Eԝ5c֜5b fMU hr%k֮bәu}Y?Пߊ6 gcPv <66:$;C a3 >v?>4l}e&2j^b/S[ [Nl{Zl]βj ~d??R;Q?VĊ/;Sv4eG+1g'P$;Iױot=+f~gSovBf0zcԋܠkM Kc+*B*x"ొP;q1~3,jm֢fY.6 74Sļ"͖f[2c+_iv3BW]nn^>M>Pb (Xnz8s504'Rs3Ŝ~9.J{{)֜aΠf)|s>EU Q}j}O}'/%Ruj7G!&Pr~AZHZHb- qbʼn*wPk1^,Oq-LZL)b*ia"UBb3,1 -/4FbZsGr\Db$l|eC E(3e&eeh|u(Br%rVUFf,Vx9ױCk}Soɷ m6w+G~@(7R|Ya>̗Ku 5Rȏ)G-Կ`-TBL J?QsY "gGR,![f<2dLʟ)ʜ5b\O qI=B˪AVM B_˪EfQm Ap+ճL}>6AJc16#b+%[X-¥VZneAɶV[ b_ZVG a]KuӠd+Y}hs5.Z!}5 rG[7Qgfk unnXk,zq8;;Pr5GdO&@;bI$|u7O&k 7S7Us(Қkͥn|G (9F6%_Qr{c5J(yFq%wJ~C/r+b4nnܼ |Fk1kCo;^ Co@jMSZe"ތ-H@ܟ!sh)h+l6@@ʿb(v(<(|7Aj,#'*. \~ \ފ.?R,1ǁcMN!]C i`kzd#@ jq|86pYMؽ. x=Tj^Wzx=4^zc/^v F(J<FmX[@W"hLo_E.v5r۳kwB5XW`ڬ;߃@~OZ| ?K~b6 ?݀Z"c#6bڈ nѱl,Jz'"N >N u D6"rH5&!"l& BDC+.qE+l6?k?.T0X :~!:~ACu0LCtpaau_u0@:~~:~~:~~8!"fa:y8>5Ug=;9 !B!@!OciH)E^H)RDDCH =RYHEDHڔ"%=z^;33;3;ŞBy=߳Sw,{NK%AbW?M$; )'!9}jPg5Njk5(v?MMf!6[͆_PUtuJUj-ܧէ 5 dS:;SSu? *̪7Ax<jk(ҵ]X+T+Fp`7i`bQ6|Ծ}Ziq04]OѦ7Zki?gKgL 6R{R%*Y\jJ/\r=\7n~kXo ŻnqoE! uwv Ar4K& X;K&J& 9X] \!OK YV;ɦ$,yTQ$,yT3*S;ɝVV!G]"Vp; )Arɂ$"P|IS$Od>%t'Mr4KVjg:F~mr05w 'G2z9iD^ISE')Orp]f3Ϗz/E`JFJj.kִA ?65@ɣ*$*_y,+cuLCp8]J2.d\q%aV $x㊓#Wk_F2J_I~**L/p-Sr8ɵO_?wI`\m$j+Wd\Jud\Kƕ"WG..<%xW[ɻ+w'YVG^^g)ǘc̕,k>OU/c C碌5wfj>N2rwwn2gfnnsu13yyf2wO!U*52Fm4~<C)Iy,xkޚrx' !y=y/"B^wA].t#A~'g dH~{%oՒ=.+c>AW ؗ㿤B#=n =;N_/ (w}~T(9d91c W2+\1Gr-\qT( XAbR  c܉4?X唘)9yxE/Qwee0?~Y3)~*}c LZ|jdOJnzicӰoV$.n[~lOOܯ4[-v+ey9b+מ~OӪHsBZ?Wj\/^E%rV WiZo)E\9>B+zd>ۗ૶}?)j|5=|lZ'݇NWig||%+s;W~]/$b$V|.⽾nG74vy|v/\~UڴlT'ڿchPWRŲģ/$}~_ї<YTҷJ++Wc=mW7=oWm-~MEW|qgV$+B|.Er9/Iw芝WS@bs.YSnMH)3}<_2hz߰sOo-jץkLIptjYk%埔˃q gw}+8MM>|}q}c-Y#`SY_3W^'~k>Ysտ}/~WkY&c̖+ϴ|NM_{[vnoEx-+d~ ]-{Vþ.MUame=RS_}_csosyoKֵr_i~5όv.:tRyJkelr֫-N$ d(c7BZ$;Ԇg(ŦP8RuLGq^%Ylub?a?t6ͥJgWRWi;ӝ-g|̢lq%v4l[I*(XR?q%__@iGS6Cfl+Ik5M10{8V3c{,g_N!DwˬVU,i8~zV4Sm&lDs94WMUSډ櫝 zPԞjOZ$δyT)KjqR"Ոi8#jT'Hen|Xw"\Hr/q7/ЫD%]d3k0q:Rf>enW#ET+ETn"*7;Ĺq.2yI5>nr<(۩<[De!O)J%O]żUxO :%̯e q8+kx]YCe#R6e8P9yWy^Oy!VՕ?%%H))LZa1դ6[d1):d4r ʥ@R!?UDRjI/>&"\w]RH*KҜ-ِ6` {2BBl)9zw<3?łw(e=YڌIEWAB+Ȓ,5!^jBԄhf!ICoRҥ]Y{=Oװ]l/ /κ}lel?3{a]ڡuvhyRҡ]Cހ{iCҥuZ{!g{]{-6l__.ٺA3aycJT*SQ4mƶzȣƪ+ګ\/5k }NZNju+ձR[C#,v[nno!n[<:AKHwཱྀLw)?Fo{)~K[0.(b\ PrךE63ol1F$1CIbxq*%[-|33H܎gg)NQH;\s{ͽp_2_B+ %G)D#Y|{V%>!a5F]Jgу6-m1֌vb%JiOni;@Ki_~@5~7O5~7O9~͑n%msO <0Zf+}Y_Z͆!SY1Fv#Y%J$Ԃۑ~ rX6aY"ĠO!0_S4C16~:1CȑgDق%~dEl&10h/"^ED,j'p"AZ'HlƱ8ABDx 8UbCĆl{{ %*/ UA{%J<<8 xg' oDT$gQ@ I$(1ĀTiQb@W'GDUø'm=[5JI h%1Ā62%ĩm6D ADj; A$t+[K3 us}8`eo?2ނ+"8eS=k+l㘴c6pW}NS Ք&#׽ҽ:^K'O+tR(qeGb*W[pEJ\0GSIxLZ1ά8WK[i m%$H,.m(1KJXy!QIi+m%~dIh]Jxi b͋Ejo^6/ȑ `5 G wq~aۗ*ďc$b^ WK"pw1 Di-%m6 \1 C˿8 HӕH'&' Y M4H3 ]2͢?@|>)bki|Ҟ/^u|Ҟ/UU,>p޴!#E۫$< Y9l}IpjR )9N`9:`}ѝdz)HUO[bxtxJxA o _Gr##ȼHUdEd+#Ѵhhv4L3Hj_42)2Ȇ攑谐'JQP~hpI O3B͏GhQz:"jEG.FWFGQƐV:cBCBzP(򾄷OƩI>:z$"P. - оT9T3\Yp.\rP78 ц5 lLjp zaR0a.RDV4ԣA\Lms%Θ`F0˙ Lw'˝-P'-`zlFʨ}6&Ԝ B VdEB j#3=<6\>OG;4GD'D"3H@9#PΡ@щ5Á ܙ* MM4 LMwh&3/4',GE&AEE.C9͡AvKx.H  y'n s 1GCGb3)DUC>' 'S!ݰaJhP<;!!!30abhJHƪ cFr ycx E/ExCACIBÂ>v}!hh1j3ƙLFO/ s6j,,  v!Yx(ɼB<$@`, w<$h ʼn/ E@N 3'04xW  n D #9] QH сYUY :G#eb4 ɑ(ڈo ΜХ1Lq)h\kJrwE*S(L0=+6j+Wl&e\tW{J +Ց+MJ'JWz(T)y4XH RPZHE[Qt2^O7ȝEJ)QLale6ݤ,TQ,g#X+[\zKߊ0w3rp894A'`>݇9AZ9q3@?~9r$bvwB삪QQ;Mvj7=YV6=9Uoz^+ EH+=dm2QM}\zI=@zY[-ra5 }\c GRUJ\>DBgӇ79}ooz^KO%}~.'JwDkKb=-V(=%Go^b-khA>F5p)%ƭƭ 4^eq1OxxPP)7UhcLxحi1^VobR6G#t m$*ݖRpPoiʃDsșKJ`ԊPNSӕ+g,e%f;kx_ecWvNTI|§(4>M/xr NyzxH37W)c12_4'z|#s'oΟ[䙇{,?`y#U 0fhL)3,f+)nXYm133f-frdv{̔dc0WOa,%\DK+?{+<aO+loo}.wRpuF:)\gS,g#-Xv|q{R' Hg3>g;}5" zϬ b;_.#Es~\'-vsҹ,kvq=9 T'@UTڻ+k[qhH>xj]`6R-8sQ)h}a0t=.GLǍ(J:N8qNS8YȡƩeNԞk7F '}A/9xbKϙh? ĩAN3Tcl d~"9hx=HrvRϳ׉6:gU`h Fsr &PT桥V}ơeD{V]V؅B)` @L17'PQwhw/OۇY1 ªvH;`t-܎ŕ*@Hq!ZD&Jqe-4pued\i*,-UR/P. fi8c6[|=5McO'i6яSi~Ƕӽ Q+Wޯ=s]Jffc\y]/?\]^g+z~B\\3__s9ڣE xF{Aw_wgdoHy̬4+M>O{-s ]6캕%v^]];i%x~Uf~xf3ŵ\̊Čl3n3ǙԱ79i8;W+f66YTAqu86PȖduxs5Ůمphk=ʴrNdmVMj̺lg ]rv/)E,f÷kM ;..ٴdSݴ\ki㬉HcnY8%h*)֞jϰWSt{&^`ߓx׋`h)[Yǜ1K1%+j֑h=z5KԮ-vٻ셵Yz#A.>ýH貲S{}q3nZ)<|}7Fx++RN[vѻջK%,-X3_Zȿl^V|Me =՚X=ժ^mZ>+/D$<?_VasʚIָ%C֧vW>R_W/_VU-[Q&>$ʷ6-WZ%=(Ld?c '.aB{3㗟_K~ܪbڪu~D߈ō3x>EG |'||Y"?_8ßیu:4klIxԦv3aoaUj!`'/kxoh{֒Cޭ>7C=Vjy zk'GW+V,?]T;[!v8Ru |o[Ȭ1kk_gǢOl$-*'Ez} XB\N+_2I*'I5CjZkm@k_4k5u" %-_jSzD=BQ(V(A=6 %'ՓV=$zi?~Fڣڣ^{L{Rk?/_Pu~Ҵ_kNoR:uޠ MMꢽE]ejg3];,vzhJߴQOCCњ&‡r] Jt%R+ɕD׸]ǕJTW*sҨ+ݕN W puuuW+\YTve W+r]4uK׺Skk]HŮAAtkk\EtQoS3|ta 3á2#bDh`4OgQQiGQqluUE@C1bDD 2 YGH˒Mw?ԯQUM'b9AD3e3Eو"1YD,Aޛq9{ݳSoսU{j :.ú- ~낟ަ?";E%EP٩>kC[̇!} 1Á )5V \F:R{emA䝁_i05xdVT=`@Ċ' 7 r\H<#b$u1H,F ~,fײfAT&[#GVV??%F *~w?ϏPwP?b䭠ه>B* &jP:x1j XHzBlCr`6T$vBYh?Y*?ן.fF\(bF~!WĖ@xyNj-*)6Zղ A+E2-x>BKC ZmR^Q8EsSheKفp.>XBa"j\Qd.2'VHFn52'1Cލ!)"bHҦ\;|9Г'@e17=ÞHo(;/h9;(<~AQr\I4YuPR)zq6c}<=4pgVNu)WY\F9`4>,UL&O;>eS0R*p!p ˆeJQF zO2NCzP)f8t=~d7C*x "Q08NvO8`~2r[LKC<#VD.Fbnx(TbƂQ8 >R&!֟\ <-#RMHe5_JϜT=߿\c-1[2ŬF6;̾Dș0UY }-{Os"ӿ?? .2c\m4Q OV|C6Nj~h%sp$`;U1C8W66)&QȂGl^d-ِ֙t!.U.ip:S!ՙE3u9 ߠ*F3 KT}wkh"zjՌS~% ?@4Պi ӔӔ!W 1(H8MoT7ZHֳS=*:(Z;T#R*YB9TSr#M kSĵ)/ڔTŪR}7-'TЪA ˪:jHVaU"Z/H">N} qj qˈS㪛*U9*?5 "75jZPjZTD-+ jU5L!06U&T]R=~&60ҘT`ƼxGU|>z|̇^yOh!2Η rD6dbZLW# K (JSH9Dx&x܆sq[; C̺17tr2AW %A*'=M7,tō%:9'[F2ܡBV{QzHw{ :*%%.jQ#/| j_Mf|5߾_Wfwwe?uNsPz/K}yriZ+KrW'iIqfzY##8ߢ]//7qNsV)򐤁n#],fR1悮,-[&AIϘs*iߙԧpP $2y@qߥվ3Hhz H]dY M⚸iQȜdI׊xbbJ$lDG{aKjteK')͖P )Ի-X[eKBm\| `S¨vE~UH?#oa*}~[+MK|M3W c[F}SՀ%V+` (Zsfl1}:{쪒IR9(w(gH!1Swv%NM`[Qu-ЖT8l}i}Ji_Q_i_\~620q3Srw剗@glzCvƳ!TGҰP({< =K}} K!ool Ȁwܷ HMA9ow;{"0p@e{>yҏ4[ 0 tBI;׵%g Ѯ-KA_6{^NeR{Tn{]:`_+#wd90.&kadML40N&]vitҖR(mAH.K%\TjNxJqZ!'JzEZFf4toлL}>o݃OOXAƾ Až3D)S2R2W 0YHh)]+d^YB5k-> 6[@[۫:7]a>,l}EHeB԰g-y ݌b_֚G MimŽ-3ӓe9evˑlvĔ˜q̺ꭷ{u4So({tSv^t_/ev^ر 6Qsrd[gf:7ҁKKt/'lIҊqn^lb̶}k~r˳$ʏ.͛.ɵ݋pMF&{ :[q6f9}W*[F(sӼn1[=#q(l1 zMyW6e x {MZ|bJ;=ϊa${=sX^sӽg޳X"͵mX9SYzϽEǂ[ϲl3R~ۤT"K5.j /#y+!lNilLI9uڶ,ߥ6%woJ3By6gouuØ~ZimBFu|ml/v7Yfdv|ܽhv_#yFZ6wx) ry{ x=& Sn0NoO B=ln Lp^C6&4˩\=,ӣ(Nh`G<;! 5W' IgcÞ0ʽgܰ j!`hW mNZuX]a‘f0G=X =ڱ֋uS{'OmF}{]@=Ͷ$=SaS֌)/1c"kxrTq̓ ka=nl5k/kZQ[NIko2Y'f<ox?UJK`驴e9ryBmO/W!:S͚m[lQ!eBh{f=Cf@.2),"Fċ^{`/Rf2PգLFgӲddIvi62{Oyv=GB:`[^7aԟz3$)k?N/Ọ'*,3?ykfaL2Id=TV!.5]v5k[cޤizw]O~u$ӆMyV:k6 >/w ]P^& }Ѷ,ݺI}cBEm{xv{RϺmc6ԫÙvقPlz#Ԋ]0f1S3<юɺj$hD83Bv9]q;J 7,3+XzZ1ĸf?Z f}{<-`)a#J[e֗"(.>6?09Y,F,F6Jcf)hګ,cmư*?52-ڥ6LiFxnnWNz^>rHVaaZzJF顧{.6 ^w;dK{+QO:edr"'O2f?fO(XTQlU\ CD*ΈؘXqG>9~,cDnlElٸY"qZ!"NkPN5Xx@,8x5V?M]є9DS8jM}hq(Q<8r8ʅ(QG8p%8ʇ(?fš}kwR{xO6yB)ESk(jQ4E}ESu+bܷ~FPDD} k3X :c-X Z7>y  lGX[p? O ~Kջ bRQLnSŜC1U{PL1&(8b>K(bQ4iNcj 橊Yh='HVICa^9$ ("ʈJ{5%t$(-!b|fհw9g+ u] q̕]Q8ɐFP5f`p6.x ҡ=$@r0z߱;:5"r4OuD(w5dw[rkKinض wYt:JS:unLCXt: M 8r9yPP:>/ѻz ;2 g6tw&ٍj !}8q#Ԣ<*vZܧǮ&@g+Dw2\6WrZ+ g;J 䵺G9{9lEFwrFo[00s| lXiӷy`GQt==l FfaS B!fYvq4WȂ+HrsQ9jj]v?ϧ|̕Cٔ?s{a閃mqC19w̗u|CnB u0QfX9| 7L^ĂcY0 ,gc/1 YpfYp.f,8?,?,:̂`,3c܀YÛ1 b| &̂_,?MN 0|y䋈X- jYjo"VKg,`? ~ ZmD?;D?5~"p֚ B&~{ T90'Ĝ􃘓faN{fcN!Isjx'%+W>&+ok65ĚkXa͟ǚkR3X_NJ`~+?ŠV©]$U3 1JBA0^GxeE#xeC!b#FI!FI!FI}r-Wy/&vI%ӗொ.} /ڀ]=ihW]ݥ3i`sWЉۤS4ȭ ȭ :ˋogǗ>'b?l ōޝ6EJ:uUz6v6Ƈ- nu٦I/ wɍC:YBie^қm)=4,ꋮ^`ia[fAQogtz-KYb8O4s- h1c0CPgZ3پ|5Fy-U_Ykݨ~x%džcqֽզ2\3,jWkҖ^dScӱSTٸۻrVNëm[h| 3-wWulmoiZ^kmMf&;s-cޘPwtzr f~bi!~OX?M5;q0ÿ`S%5aV5ەKadžzS]zZhֹ#e7{wC,ka5ePrMaur3q,d.%B7͕s׳SqU-k4QÚ#+5ІÙ~VI_ܝA GQrc,16Z(xp8ۖl>6z-M_/\nj}rmXu ?;aљlXdZ0զ==y}o,J 9-#WWW-?V馜kgfE9}p;MNt!Xptn5W%s&-@[`+Zῳ5@md-! F˲,2 d5 BF/8H=>KBRGQq|^r!^(c)B.E9p˲!!,!P(^f&IruWr~=5l0+*,{ց8/7:]W)ܪSs`qцVvÛTNtqe2::Ɍ6Eޚ(?BŶ͖hj$ǧ)ռ>nk>nk 5o06xy hɰm }ҪjiMjch11+m#t5fb]O> 6?maDb!L/hcj׌gO۟:1"Xwu՜cΩڏbٚ{>uKCfC5.3F[;f,x Gut4ꏵZZ7_j3F űk26DV69`sx 5!5FިG3/Ec\lܪ#H}MAQyDDE d5:ih{vS]:օΰ+mK-uɶ),f֧&Њa`/bKWO_asu2<[)fx3gyUZMuNgn[} 7lc|76LXY{#n%;QܱKU]XW۴>[~U4Fo}Ӻz-F-^?ͯE{QӃb"@V{F_5m[-Q/B$ZyBV[nƍ(;g@kn_]O&ԋUFW,} E} 4^V?Ħi <VOk=C]zZ/v<;'Lr6Qs V_ "X4]sZ QFDBTյhv4m䴽hll;n\n;hlnBTFB6DO'C7}~7_oP/V_ jCPBP=Xq(CpOObc0pYf̡K iB(J!qGBCBѥ%i;&E8кT3eVMbsTҹ(,UшkōuUͦ@ۚUFZ = -sҰ:lCOCOH4lB;Pf*5LYVpU?\W!(OV&ݪsѺQ9jg3SƧUQ|O3/ 8wo6=6ekMú'M#Muj8i"yB*O -ױ?6WEHH܈7?6l(K}H25c 0 *uŪ bl#c5يn?Trf4MƎ.풮E5CB2mxHg ӄHHո۸[ՀVZ^wzHHa8< #гY^ k)MP)$$dd !U(5v7.} Yay82Vޔ4<-?T !8 'ΪnU255k*#Uk5[|rZ5baG}iV-БF{@Yq 45Ӣo<\s|IT4 F`=ig8~~TNCMn0OXh.4Z؋Fx <ԔєZq>na4̬#uߣl++BO!u/ J u"zobuү~}߾Fu9A7)4 *!sX"k_d+'Z ZyT5~HST-TO1Z.?!=}r'X7`}dΫߢSSP?l7wԿ~̔5Df]2S0-Jk~̗CZ7!f>5뿐YVȬYLfd֬u2kOɬYd֬Ys tʀ3h ?1ރ.Ɍd2R'Hxr5"I\K\HSğ%R- 7SL |0EI`MS L)!|0Bfr\d/7Cf򒙾|f?(%EOd[}ߤ41(dR"''6qJ9}J?R1ǔ.4so?a'J7?3(\d&y@y[RIq&҇>Rॏ.)srBKKN%%./)O\d?4W,R=ZOn)ׁwւ> @`̎fQKux?2{|i d5b$x|2|&^qX5Z͢nH=z{1hNMŪ"~Yw #FU-VTdEsEUŊG5AEWJAp<*kvA#UjR7]wRCL(,1)s*q%r`/߉n%՞T|?,'89&? NI ,,*^!*r u+[ ՠZr!1[sow+(G@ BUJo,4(WN zKT.4S!Yqda)zUgAVQ &WnH%S)+XAzTth xC B\ >P`5Ǜ>1>HȰgj - vq?hS]ROWY #P\ڣ%dH7]EbUGJioP.?Y"TnTj<]]'e@iSjы`$R-SG@O@P "ǿ\3p)$91 q'q#exY0xS9GIuoqp*"#ʏcʏL?P~%P(s@Y%p˔e(BY(k5=eb&H$Х% JNyϡ 'Е?MS,Ϡ?Os Pj_&%̈́_$J==EP:m6} ʠ==CB1>m6h (6Mش-M{M{ жiwioho\mKۅhE+(״8 ĥN vJ;x3ħJg5r/ q<.MHD[m! ;@R,zTHϦgC7ߥ?Υs!GAJUU&^tTBP)]JBB.ˠr.Tt%] UЋŐ~~ U&&B&%AuNFML+wkwkwk_5+e&ї+?_׮}JvS`[!8C v%*8S?Xc8SQ Fil`CXcC_~gu&`_-%.\-e5fg.uߘ¨p0ڬ}mRQ.nV6,NߍQhYɶUAɷu0 kzf߁9> 5稟/yC d4 O[d KqޏI_ _S5Mzo?r+؉NT c ӾO EeeΊJ3ε߸<uZ> / RYatQ= +}XW! 71ӬWoȆjy}v9  {|E#m}W'Tr}Z:n@]X|saa97T _(7S^A_)WjͧURrڔr pdL~Z~ c۷FPۇ ^a{X2[9ŌL5ŵm̀&C_Oj~{y;c&B|ێ56\ۮ3w.tW1W=`½v'su D@x ynkmtwV#okaO 8]n,둏iiH\ y 4?)$Mk0uQwEwGt-=(V+p\nW@LF#Jq_3ƱR@AHA#zE)iD 1aZx-QnE54U#tX UbFVŝ. ZKqj-/85P>>A2#+5A]^R{oyyƺ>NznQ>溆ͺ楹S=3Zxv\0W\kRܓz=O{S= S %OS:Yp_#X_=o+j`dHiupxkⴅcDsiW{͢.bK(#,D+s2o!$ y-,4)9}`-i32Gۻ+ ]} \'kWHp:%PՋO] 5{R%GS[Vʣ3U%+y0x9.g_/wr\eiI:N6XZbk?Vgq=DIGv O#X\"q;bݗnY[_:r hP*m-$d{pKxɢ<}G= mH FA ;/n:bKh N=NAz?ls׵M$(>rexqg`;;9wq֠bc1v:^Q{vqA 3~sT:!r :n]@ˍ֦ txE2ВJ"PiS} JjvkDͮWFE-lMRG:rfJN9HE\#ZofH/1"~sLˋ9g٫YJN@nTqz:6U29c`S3cJL6 xbs `[+ם- bDck1ll[{,rZvq"w6ƅ[<01$ 3}?5;"cq1R;q81*G ،޼E˙"ƚu]ve$5ϖmΙtCRiP%FAֱ\b)G3ٯf<9HW8pvf8#R=4_ya-gb{Sh fNl̒C՜,xv6;!Z_+sϭAB1dߺN{̭;WgIXp/˃3uևe6`'Uk|ӲӪ6'}`mfNm*\Cأ4{79,xdʭU׽v}-]/j;  be`9/m( ỷ#B=$j_ad\~˰_ Ou_#cʉ Ixn_DՒa!&fxC,3^XgՅJYxk4, !EN3k)s9Sm{lT<$P=s|}Yu!lOSE%k 7w3p]3URW8րnlsG9gH&ˋ ?v5K,Lzwd/dǸi3O)޼zYw1GlTjmoY'CPOF-,C'U$Xxݷ79ust ,8]pE`9y'{:Ry>w%f +N5t֦4'lfnt EMNi!8لw nVi+mFf˳AMx<-}I%t ^٢).flĦD23_7(kN#GvG-rv1CqF2xF>)G(K'Lp[wԶeC6dvUv"VJQ\l5h="ҕalEJkAK##)wO>yWnzOjtC 7%`G s7-3w`Kp<80q `'Ƨ( 08̵|1C|kO&ȡ;ty\'/{f:̷%$H{&)=`e,ɠs/9,BBPJd)\vLyIB2`8j FP {{m Fwrλ#t*t[( 2>A@' &$d|ON' 7PD'$n d|B PJ'"r2>AE'T j2>6PI'|H'hI_)> %=x 9|s0=J=_>?uxs|z<|A=( sX^ !BRI!!SrJR·dWNe$ÖDIv$IdT*|#)~kz_Y=353=DW?P,] +iF_7$!C.%w/y~I/-&ЫoU777NNy'yukIh!Ѣٴ?#,x؃x&9SL_~΋|+?7T޷Dg.R1m)b12L$_dA.&uK%S(6#4MK4jZ.Mn F6Ou&i>Sb=´όV~Ӷ peQ_9/&6rjv=Nͮϩ 85!f7Ɯ}2f7즜݌SO朚}*f얜݊SO݆֜Srjv;Nnϩ85#fwΜ݅Srj霚}fw395f^ݟSqjpN#95{f]3~׌F3Tfs7Ks#}/#ronKdAnow]KH3 vEv"ޑmȾvy +ݬȩN.wCGf$dQ[9.!|0#SS52)wFr-]vTh[s7{#lA47$r9 yN~m9V 7#r@>\kG.#7 )AyZI[nm zE.-hZ䂂8 ϭ+X`B䢂s byDQP*r}Wk~,;&B)~K&>Eww7| #E?_/{hBZ[) |>[xʒ|.+>]Yȟגۯqn[KI8 'dI% 0GNf[Ұ<{lݏOzj6A$ W~$T!wMyĩoqFN^iHa}$+p*RT6ǐPiuܕagx3D]wbb ZI[J ) ھ1$:$~Mн8b 3SIo¿w"^`2wK['ѫ{#1HҎ}| o#ʳ/Ar&iETkP'*Tr O4IIcHxj-B–lgގz b#oa(\Њp:|^Kv'0ÔOr%aCJ&Gh_ ⮗p7Dނ'*Gx%r׏ĉ~~@|Z&k&wGA;vں`{tBnM6oB/<#}>+H?,̉}ޘVnts+yS"~FR cO~qH;jE 8yQdm%n9l$t}f~0f<kh}%]SepZGU5YG?`~,(w~e[UJJ>O"hҺtHZp<0o+D,BA«XmRlZu%pI8N)C5r5-HXn@H"W s:ZZO+4_Cj}J~ ĞOzhI|GF/pf3gѐI[?g5Ղ#Ա.}8 X5x e#x2e}1FǾwq9$B, f y غ,b րgZCli?0 |nl >#;Qx$Xk¬ƍGsqSϔRS$Z;`kBc8cO+!`hۓcsH:#v~1K D! =CNNg;yR,eʺL!=sF7R$IGFjmi.Ą6Bh㎙:2:WIWTʚU`}18?28xHx$W6EuMar.29Ô%)Ң3V{mcܔ^J_Ym 1;Nk,*Q 5466wl"H~N 6ɽ9y'XO$ }H|<^J Sr⨵Mi)N@ˇ0:g2%΃eҢlC-[!Q7Oymfq7 3:U7 ˃їW# 7pk{19Ǝ5o+Rgt#h ]pO"5PemIG$q!|}$ORVH*n0uS%=!mmN䁵/{gj#oE\o;{>VM zs4G5X{g\%#f knVcn%F2Uji"ѵ ({yƾr9O)I&w|$m!{%$-No.52KO cCL;$GR`{_OXOv14=Ism=Ⱥא7A9UH#7j$LޞI|*̣a˥թEBgL{Q7]沷*n5oc#k_x4'+3 s7Ή:ÕCԱfZrP$M);չka5Fv7g$dRٖݖ2nS)i%mHq1w='DߑW޹ZRJw`G"=]sRt@3wwvgJ>,k#h=`c٩AS_%N%1~]Y]$f [e-{^8s wD2Gr-#R&wJ?) % sxܓؙ(ss5#W sC®Ƽ{Mܡ̏ܵ<s#s%hS)O۽V܋_-¯w?\KZCrD[Xo:CCƖ策{} s:ṦHT⹕՛dsUK_j#V=U%(7*K dm湞bнE'| 3~խIK9+ĺ' gHU^̭hӔBJLw=&dKߤ?)i%2< f#'V9tʎ>76#}m)Z>vze]6<7Ȯ0jqI4sK뙛Ť 17wx=zWGGtl0fYG=>?"{/[&rwI+K*%ar҇!jD(IQ/H|q\;#ޱuV=yb{-_-\n`OտFV$oO.}ۦo$!wHc}!;W:-I&#a6 k`H*7ós"/}ߒK͑gK?Eeō^5! ȑKQ_pK?Y&OL.RׇOxZRV[|b)#c3=秶C;AB0qW*D`5bޕ>r [̛nd-a䎎,5E#Kn?( _ͽB~,(=~} ;~"ɾI5:KH#VJ:yЕƖ"IX K-n#L n}K@w aode;fFMb˄wi9дSV2} {[=evTw6.^};0y!pT tMg7MdH(L߹poVž3bf?^W.%Cٻ< [ٷAKa=v_ ߣf3Ko #$<$5%v^5X[v.O''gMw!$oy|v;=>RVSc̓fz:eI*ed+G_;qhD}w59q;o;6'$/Tu.`y^A$:GCCuM_{&sۡSR$[ѽ0Gܧ{hk=}@瀤AJBr @OjOC''~^i;'0kKAX'S?Ix{f=~>̝=+'9os%%({ _{Oj)ϕhsa^e|r!{4a=RX.5yo³Ά nYqƤ.e2+&MS `u|du+i<}l'_Bμ>+}+]wSt=Hy󛰷'MKu78!k)!Hx.1TvuLxݛ; Dw3C3XB/Sp hNJR; -:e]4Z@a>m3<ƯzSM஌WSFFvl~NvN+|; C1+H{ 0吱J[ 5<6&GCRmw«3Bw."͸FY s᭄o /aKwh7X$B_BRC%<8~A (8:D>PJ}q|/[ p)\\ic#a0Apr|#/57a+m #@RIٟEA3{aNÛ Z7f=p?N{Ywg'{h{߅YWXǐg}"l{4aIJZCZ{b—wȡr_~7:g"ـhqv)$!uCj߽ɏ)g_|~!&5'zgIr!=}rTѨ[&k;yXgBbrJo,iyH)g~ɘd K);TSìs.Q`862ؔ(7N}a_ !3+{E):G|,y4n7҃9yGxGOnm Zdi5`,-¾5? ڸEۏ<DŽD+¥9dq h]АhCcG˜7Gss!O :tyDyve̞2F̄<0It/ z2ݥ썥3χڮw~ 7UJxa #wjyVw=g)?y:øK-m:c窾-sUz .3Б̔S~бO~؟ߎaKtݳYn$V_3w<3~Wh$F,;F,ilID5c Wd靰;EiaUN -HG<9:'=#o V'2ݼ)~;[%LwDZ;ԲiƜڽN]XHuQݍrv7;u\ko%  H7XkƠgƮ:J͠{tn1v8eg+ ;C>|KѝCbA[2'|?F@cBV?0)r{$dgxh:ma "L |C -G-{PĞ6$ WýF븟<4#8C>c%rgpv:b~%!S{#<߿H{ szN.r|vz?{h/r;:cmӲ껊YV,+A_BWN#6v$6<1hMMc=MZu7彼g˱3+nϥk_Z#yreދ_!RՕƔJ{VJYQ%ؼtXS~)cOoNzfbo˙L)#M5SΜg MM+13`3Ҍ3̥a1dGW43.(Tc۫4O3G|SLk3gzf\l`*ߥGΦ}3Ϩfuz5s#1o*cLS4t 2gzEw`]T15clTȻ`FߪXs8´m s9/sn.0KjJM-si`Z63LsfІzKrka`I7H+ª V ӎApXdt +,8g& B.+ɱup=N(VGcprYsȿe^libQ"cKV(YkV~5e!Lƾ_i]Ӛ#<=bÔ>h~ЬA`KǮ*orU) Ӛ.u~çgb84l0^ƶmj;.v~+jƮ톹j7-q-'_7]?O_7~(*ڡy1 䩶^vŮa쿮&YW:ezD5C䊱kln} ?/zwb6hnZ4wrcEŮWʦb;We_6/v](z}tb]\4c: PZ ^4bד^͵`9-3^_z+ ?,PB7([YfgO`lZhh.*v]Ů-v]/tX].N&W_-? [zHbŞwH+VoPǒi>/l9(6L a0#L'UF_kU=J\ԃ4I6?q6/͍.cr+֮+^= Dc}7DG}~cHmbmsیwbb}L4wto\Ÿ/3.qCKGKl{сJxR|Ͽ'g\?r~@䂘h~%S#[n||y|VϹ>" C>Zn';InR=,_/>|\fv-]~5ɿ'QlUĹvoCȹ6K/J/f'}m_mߟTivw]g[vZsz@+hFI4qQ(fE3E3ʡь hFE4p44H4Rx8<uE2Q~~TC?5ЏcЏDZG-8x6q"Q8 ~C? ЏG#1q2h~4C?NA?-ЏG+45h~C?S׎k'3څzsdƱBv\L3#Zך?Y3lm[/f>' 5wrB]Ps7',䄚{8f',愚%Ps/',u] skN3]lr\;:ͮbnyq}V3VbԽ^{ýaG#qѪޖ䤵Rr=DN[FNe{c 809ǖplUd+FlmCcv ׆kmW9Ǟ.nr>=CDZ|{c{8c{8,9[V'l l߰=lu?;rz s;PNϱ9vcϓsrz,!rz*arz.Kav<_g ^6UoOvxQ턟V]2Wj~NՁ@{u-Bj?F%}W#ND;_62;tW od<3l.Ȝä$h&-42YMVC8k}-_['8dX'2˱wH[;{ cO?Ro=ڭ v3|&0|&4|&2|&6|bLaL3͆ϴ>fL3].lb.i _6X@ˁt/nнouIrUIҎtAM!Y#pnG _#T#Phh(t"i)2"c ]t-ܡ[ \]Cpn)n)n.@/.=] .@o.@_.@. .`..0..]Q]Ѻ]1]tu]]]tuv<o"F6#SCޑ].@=T m?YiԴcƌu2k(Gf# ̀mAH rԁRydN *@p3(æ`(-?1Vm3yiݫpX$ A`;x o` 'q`<C`<8 > >ApZyg%i\,1XGF7`5lM0 a;R,e`{`>p 8 áǂp:8&TE$4B-K% ??A zmV mv):i$#%zW, c6 8NN4ΆQ|0ATb͉ȭ9JZpHçȽd\fj W7/&4M1M*MF||ii!eZdZ025m5ǩFh i&Qflui& jH hʡh!jD{(-Et8!v$}j4Q%=CDүY~200z?T83X5F+Y.+CYg6gkl']N?J]7P(OSeD*$Ѥ/$cC) ";gCLOy?CV^C pDH:Q^EQdlQ ȫ"GNv ћ&u_ $`1)Qd#ƐҺR!l(W6$#`"Vp_"nߒ&~` dd d}w:;~CS ~HM{ |k*3* N`"R.-9JkwQ`Bs,zvJ<.+@ 5U2gunUw6u#ݮ!-n#ݢi[=FM}HVonQ6ҭ~#ݦHtwHVnS32.1-FU=jt ^U=#9,D>2Zgx3Ȝ Id> r*gD> r:Dd2WDf9A|3|Abo3\ "2 Dj D.FDAJ2\ }j@X`-2EFõhTFkX-"EDhj-"VfED"j쵈hZD4g"):"!kL 29"y""H6sx~5Rd3$Y9y\xQx4q~<Ox੦i4y];ՒM_ je(^!PEp$ 4"+3r"P4M5MTm}m]~SVygq~/ǿ+x%?=o!`k?]#@X!kʸ޸`X z*_/ ~1sY x!~/Owx ~ڸ+c 6!4 ~EH! mq;\Kq'}q? <CBwqkZ~./r v|;02\(;&7P+_[ztTL*q|ƽ=hJ~Y{<ⶲvXچlI,;N.,Mϥ;b鿀dҋeHֽTYBemJ}]{}Gϡkmʸ~Ѻ"]mmB^AsbP B Z ڡ: zaaaF>L̂i +፰lsji,5K.[`x+̇M~ 6a RV5l`[X 4RQNT5] w^tzK8zg I3 G(8c8 p"|N8Na%g?kx~hhhDQh4Ƣq~4M@R=MFST4 MGhAWA<cL*R(Kb [ ۱; {qz ☮pR*,]?:.'5T}|#nv=@Jt$eLҍIIw҃EzI/r Iҗ#dJd[#}dMƐdHfҍOt}n[Vn;kt'}oMEҿ}mЃ]zGy1yz~JOh5_zz<.o%7z^ѫ{z IEQ)S¬ü, uXY%Ye4fuX]VY֐F1IjY5a|֔X3֜`-Y!kZ6eŬk:v;+eY$^֕;Y9zXOv7a7~?ldQl4Ʋ 0l̆dS3]+ v}jWrJLV>WN+_(g/rN9|\PQ.**)%=bNSθ9\7s rswr7p/q? 0ux]^yޘoyބyS^ox ކ񶼘y 򎼌wyޕ;ywރ{y/~E3\-Eh%Z6HŢh/:q(E$:.CtwrK{DOq%#i?NbԧCP1L*^1R'FRb &$1YLS41] ЌL&353bfլ6Âk04x~*Yh7Vs[G-L'!7涄>s_+*1WWŬdóJ#qc>VK4YJ;fYH%!4($}E&C>㮟V؀xC?*H>s\>{BjeM^" [gRJ>.cgʍg2~ `$wPJF%QCP7[-2f?^g$o U"ݢj+{]/9|^X _W˫\Uiz{&|G?ҏy sY2k햬B {[2mvWrɬ~f4I_f2vxՈAޠx+ss($Gp}yh?ʇ|Q|4̧|+ >?|/OE_dɯ~O~S69Ș%g䅼oȞIYt/9 vKű>p4&`6 LA-P0 Ee`ꌺFq)fYJ-QKsy Z]ծ?[[uJb|{9dy%y12'"\ R \4<Wx&~tn~57w]1S+TgT2f**d|ߩ>c\v&p\:2"D^4V/IJ@yv(" TŢXM+.P)́Gi>Ǫqjd|&=+=7^4^hp-T<> ܔOQ[eV #V"k5dE2L nfnn.ţdJzƌz&J'V(wFmmd6Ϩm;͠@zNhnԼQһuo+{7.N5m%#?џՑV!y?~G?O h+m V3{,ROU+;Ǯ`Y2Ĕl'#;A3RK9K &JpJI[gd?M7%?%'=Kz TgY~B]́NlEW:>r} D}Qv]_4/@W<w]_4W+DP(9+e9LQQzN?>>*dسf+d.#v}R1*c&E\||Tg2yM?~fc% g2 `@ `bidaUbb TxC)Zd%oLG I;<|rLT?4I $5*acJLqj$:Azd$M4ͦ 69w zJ* *9.z7ȥ}PmtHXXU+U+B$(/XIR&xK]5$wMզ\vݍu#="=% av3\QW4*I B( W*'uz J}FPɑcWW(A`;rMyGyy'yg4~?A|0|Dgl0s|_ǗR _Ɵ:,X`+^ (#ݥ(M6\FOInpT37 VfT;q?3̺36$(6W}7B^ю׭|_ :+U^Q|?ƟOgs +*!k:l qr$H59M"L$ir&)h )i2en0hjhjl5噚MfAvX;Վb&d1zF9r"ɑ_ f'U|-7|7#5̯ " #\/URTD%jIS)fy-UbX#֋Mb%8&N]WTRUSO)jZ]j:@RǫSԙuH].WWk fu[ݯR'jF^ViDMh!-hZB+JZK FjIZ6[-ԖhUJm^ۤmvi{zi'YvE0*53G)s=s9\`.4K]=aQ)9Eu-=CjsXfXB%גoia)X:[-,,C,#-,,ٖy%*Jz&6.^a1IiYE+RfuX}ֈ5egͱY bk::::::::ߺȺԺܺʺֺٺúۺzzzzzzzzՆlbs-moklkbkfkmko+u MMͲ͵---mm]]{ȞױB{^a`feobico_d_j_n_e_khbico?l?f?i?m?khD8\#H;;;8Z8%ΎrG/G?H8$GccccʱұƱޱɱͱ۱qqqQq\p\v\spڜ>gęrs8Bg9999999׹ع̹¹ڹιѹŹӹyyyyyyyE\esy\!WUwpJ\]^~!iYy%*Jz&6.^ WuuuMms{!w]ϝs[ۻ=}܃#cݕ9%*Jzfn>!1)y%U(xRzOS)zzzx*<<<<=9%U ͞ݞ}#S3K^UƼioo[...nnV{kWl>|_Wؗ+zF&fVV6vN._[.M%~a1iYeu-=CjJ- @@@n ?"P( t  L L ,,, l l     \ \ tCDNA07X, K݂C#んeu-=C`MBrZDBDNA(7j* :CBB#BBSBBBBB+BCBC[B;C{BCBGC'BաЅе0 - ‰pppn8?"\. +ƒ#³s ‹+«[;{ÇG'-≄"HHHn$?"R)tGzEEDFFE&E*##" #K"UUuM=#HMBrZDEDCDNA47m-D;Gˣâc3s K+k[;{G'њ-扅bXXXn,?"V+uzņF&*ccb cKbU5Mm]ñcӱ+q)MZ#T^<'/ƋxMbj$#KDDDN"/Q(L'J]=AiىʼnĚĦĶĮāıĕ$"IK:d$JK$dq,YHJLONKNK.L.IV%W&$'7%%w%&$'%O&O'&/&PJIYRT KSSSMRRSSen>A1iYũeթu-=CTMbjҲ\YTVYMejU-gV!Y&fUfZ$ky֪Y6gڝ/`֑Yg]N}H:I ҅ti[Wz@zDz\zJzVz^zazI*2&>)-+7} }8},}2}:}6}1}EZ#ۗNe....#"{@Q㳧d̞=?w`Q]]FM4jEPK"0" MD" R "XHEcC)jĎFg6y=k^{茙fyffU53k6;kvɬW$:lϒߣaA9(My]r"·,lda#Ku`#V򰑇Fj:*@oH5:lI[%(à Z@VHA zuWG:ڪV_չNe H<ڐ!/XR}/tY'$=ꡕZ顕ׇ^z} 1@$n)XVZ<t`ۈVp e%X ^f MEm*jS5^S5` eyV#aYI[iwԮŒXWC^kZ] }<6 mPi𜆨ҘT M\sσ&9JK`%x S e)+jx,򰑇<ׂ )2>O oTs S iUxPC+c5 g1W $SzخF^;.Kc eXJHZ01G%pXcM.eNNDð v]uW76x N0B&$}!%hfhdzep?&%YFKČ0XKckb|(bF,RF*gFTXzR*V +R O:l4r JZ%zeصjzᑔ5l^ahXue0<=sF̆.N&]ԃ`NO=iVKd5@Iy40ɯ-[gXs`KsnE& V$mJ42ܲl&YM8ȩ!CN9r:,Yc&11ӎCij/U.c&c1U 4)Ф``|%%2rI*Y iGK.Ck9}9v ^=k=f9` XMwjV֠X y-+r-%c/e-R:'l(It!3L|e&5LNyd^q/rH^N2s&3ciFXh,Y+HFfxJ nr,Y2dMȚ!kCփY lh{)Y-!A2WY=NZ.NZɱOA/[ y}D|dVOF}h@dDV/%JXf&p Ӆa 4UߦT12,e-iwYa`1 $#zcDo16Fƈ a/BVVBh+mtB:B!PHG(# 1Bs#41Bs#4G"bSDlM)"6Y`EA>c ?c ` hkPkMY nY`T#Hz1z1Ï~#1Gb~}1__̯/eցFLp3 fѐ18HKˍ,e:-hYBʹ̤e6-70%X3buFΈQ:#>g {WػcsE+WrE+Wm]i[fl\p#XE` A2;#01@ #01@ #2n3l>1#07doF[oMkp3n3lؼ`}~ɇ'|~ɇ'|~ɇ' > > > > > `V*Jh*J+O;;;;;;;1b C } D܁;}0VhVLLLLLLL̎Sΐ0`X8BwA!;q Bۘ>C<c XBX /"C$zHHx(G&r Ơm E` AI "A$qoqoqoqoqoqkG(Q]8Fqt5aF~X#?k8>@iG|Z2ŴD-5`!@6Gạe>- iAbZn%k zMA)5^S蝛[e-iYH Zr-^k6zF5fl^3IeӉ,wrI?n<Q[L @6,%$1dFxHV9^@*gpыgV 2~ jU׀'n~??m.{2K7~Fy-NDK#uC>Ϙ'd,,'y!H=NMM]2o>/_¿^F__,vz|~1cK3ϯ]rZ_,}~-uWsK/_\ |~q_qd?}2rZN&'S̜{8*QNsŸ\"~ͷ9J_K;d,Y.E~ayw8´%LIў&JLR˜ڣ˵QIKU8"_i\7юzƋ}/6\,#<9~-;Yęx&sf.QO 4:1?ж>RG6L.Zn#J%2'oSi~hmaWd!͟$PGF 2603 eaec(g> %2"| ãEGEŊ Dvv-r dLb'I6"5BVC[߹AanTED)!3a$4vL8 ~ՀV{=W)eT_ﲭC3uZ؝zrDaR? <gZ3!1g\s߅ҭgFR8vz3-[ZRLAoH^ZٺRR2|(h ŪSD< 7PsME9Y1tRa/w5))DD,!l6hDL{6w*q,R *6J';"n瞅~˹3ݵk޽KjΙ[s~ S.d7gNLXoB\KͩqrL7拾9)XQ@Hyx7g˨* ;]3Bvq;?_9ُnIw~J|w|m{6Y;z>GϞW_?{>MZZys99Z?oY3P!z,熁@GcH(rLFEE V:"2\2?j7h\PE~aLLΌSo(>.kBn =s1TqCȹ{nq@AIKbfk7|){nx濴ʵ̓rߜ{եE3Nu#;'ܶ;>ʫH'sE\ylPh"%Ykuw$0&aiD<\;h*5UU;gMct୉߯М6kUd7gElQ<Ȝ>KG5X!(N+nF>gy3 h;r3/\gbP̹QU7{O:se0wjV=9d҃aˣl֙Hty%WӺHգyWo;'("G*-9xᎷZX~ygPIW8RTsX] G|4z哧_?yAo(ǧ]J7A\|!a[?GKOgN t[a굯{ުs5^5^\,1z3K+^OMvJYVjodsxKWE}VfϛD93#_;qdvT蓅0O:8`瘔5yww98ԝ@'P4xs1O!.3Q_9=l{R[]+U^܉5I_9{ +8l}kkCO{ Z8_,tR/t?ta僎[x'b[-^;by*~ԪHtÆs{-T^>q峼3Go07cCG:;igO{˞'tkZ)Y/-|b羴=meRaƏ];O`~.Lʛk/`034f!"]`(?#.=AHdg;9lmpFٗ6(ߑz/ \"gFzyb4ضۻc|LɠgFF[F3侽FyvxaY'}k?]hqcSąjMS?싩V56)|ZcA'v[WV*0(wR o*'Um7Z%9=aL;盏s}tARw[zZ"Ӯⅾi'F⒴av~n99qwp\ճyU\[\;jQVt7f;},wX1׊uOid)N+pqKk>n47,$ύCr W qI0'V%l=H~0grw&ǷQs4ߏlEj1Ɵ 6V7Ԩt1WR+?ջ"|Dfhbbs'ω㣸Nǘ3ˉ`^bȉ-oiTlDH߈X/%A"x=kj N53qʡ3qM"sHR&nZy|ZGK7=rv~wPיq\`%skUOl%y[Fe4/_ ک~C%DH&Ȩdgm t>݉ ?2}Y#e^ɝTdSmMFS1/53ڽ4~/N'E&?s&5g _\s>wŭI^#6jԅ{̏Y *1?~ʏg޺ |Gu5-3食DMrYgtL+5_JQəߌkYWjPdTo& =\&>o7Vڕw顴ͫ"0{|'Ӄևcyqk^>:sʽ۬F~krhŁ*fYFyE:LN]k^r>?oߛ3 endstream endobj 10893 0 obj <> stream x]Mj0 >)Y=c+,rnB6}Y=u7'Ǹ-€'UWM{Wn;$;j".78<0ү=Mp> stream x `Tǿ^\ܰHp$ ͉@&5J< X=l pXkQ XOjo6AXW|6yo7{fgwv7AHذ温=ZHʫyqo| hZ=涨uAwSkN*},hkz|ͬʳs9h?:aVͱۮNU7gfy('O=޴S ĭvCSᇏ!V^M65 q9veĪN ַyN?*7Ć73.8 k!w.llXN 6_ˢrg³/-N_yfyhMu7Vc Ǐ=ۃ #Ӛ]l9o:_K'žxj줏\f3NhƏ_1O>kF&SND|Ev' IvMtimpb7 =O4-e"6։&45>S]3 @v[#6;܅vq40LC}UPegp񃯢mֻ;e[W} =z=̞@]>UfqQ(V{P(Jč}8\ls|U( +0<0ZBP( BP( ?%)G] dL?諭,mE8^upBP(0(Nd>vpet!T7HD(j41Rcc| bqRGM@<5 ƿ0@jPDMA RBMT@u ҩAb ՇALx3> `jl : YȦ`f|RC\(#:ZjFb c1:ƣZ1"N8D8I(N{(Dj%lRLI-G1j%JS2c/Cw j*'Hqu:V:fcj0: 'ROz2 j-fdjY98K=zop uKmķT-.u!7 30z&Pϒz648xMXHQX38DRM=4Q/wIQn|eRc*V|%z).^&r\D] | 2UXNm j\BZ5z-.7:qVR RU˸WRע_p#VSGc\KԛS\Oo7K]뱖z nފۤ?cz%܉/wfFM}`=z/nsjn7^@6P7yJ}~EmFfMB݅ nGxZQD7D},~~NGxb 1l>'ku:; Ix Cԧ[OxS]x<@}/qKx؉H};I}OR?;xgoH}[E}Oox^KԿԽ ]L}NxxUGRa7x1^oIޢ~7jQxC9C9kN@ߗsrN_9=9'^9]9s^9s^9s^9s^9Qs_W;)N9,՜%m9 5뜾O䜾O䜾OԜ?7t599I.nl}~e; pIS;@o ./LBP(&*%\[M\DX%hQ)VP( BD۵UDϊy.?y`wXo GGzf BP(MHsmn܁UD4OwU_jmu8DZ\{Z ]P( Bo<(sm VQ=+*wޓᎀ-VntD?QV;`Gˢy|VP( B ^[}]pm匰.jmu8V_Z\{( BPõ=/X[WD!*QQv,kV~kM!jGڳvAP( b{VTqzO(DG˵U4 ƚZ[V;`GˢȱBP(&%?K*gW~/N>K*W/N d"dNCZ2Ң{'{';v _ϋ{,]P( BoF#::&In}̞UF핝4ddȵUFy k_Lt8dZE{8FαBP(`A6bbbyE ob b k_mfXE{8 XBP( E3ል )NYQe=y&2!33ּj& d]_V;`Gp{~9,]P( Bo&6SB72}~}=K[cVpwT~O8'6[BP( ESvET|r#)rp>=ó0|xy,wU_֮)[ ?/:\eWXBP( ESuc H B=FbWHȑ{_d9}Wu\ތ+8?/:"nBP(f$'&cdbTW1c{aAHkLt8L+~1чf.( BP7s+6p}aRH&{eh {1^cMݙp(+8GQsڭvAP( YH22|FfF;gE5(=0yryO,8k;Z$~ޟ!(, BP(;d@MbJl ?`窪Pyh"sьb0 a,s,982ƫ}<?:`B@_.}_.r L=WLnjI'p;b/Aڳ((2y1';`ty#rs5?840#=-5%9i@bB|'6&:*r:6]Qᯬ냶lh8hG}]/bϗ id \2p&aR_|kg2}M#dzLG3I_Er_P*KTԗHwѝ7H&# &ZE!ZrV h:LWSA=aAzFmEyzff]ވ(4+L6t"h:vF-/hS6rny0)mU-)|fK*_cFձjY-ljvbUi+jb%GbU3|a<5i-A̼03lt"2֟,N5g&em_sFz۝>8x Odq3U5@ #qA|=Li,B"#uV<#e-~>h}-#i|3iC=`nn0'"2S8En]oP;m8ݟiFpŌCʭ jfNGO΀̜=9ɛS|@Е}/֓PpbP$}Avc8_5cvof}n+_t ;L(ӵ\9 QA[rP/rU=džΝ٧MuQi%̺ N1wQ-:ekUf?W loih7V<-M='ز:=Xyub/W̮~ڐ&Һ!̫+j[>s U=dVB=]@s߮y>Y+Jq/ǰAG@]hg(PRnfc+q*pIm9&-+L,lt10cVB21dXf=UOax+EĘdbŬ37%Uϑ2-%4h qnדçI)ٮg#̎ K6ov==cnmvڟ̸$C{ҴCȧ ZŌwq{͌0|ۮ17̃ Nx݉,7ڃ\xaw^);f-E>-i/-|G G -|G -|C -ed K%I3p.:{`p m\`-9ݹy^gSuLwsxa|%ZG9:˩{"B-bm,yvc=9bGx Gܛ#%Ta3\?{Em *{wCa)do({]l Gahep)C!CCCWa*1 edM/ l֢ņa3t3j yޒqįx627{!VFwc '%$xmm3CޓYlF;QnhhY: e1wnYVC-Cc y']jx@t`zڻYD һ{hGV89n˻KYqЌݐu&%;{m^W&BKH{v{{6xgzfq;ǻtuVxǣ yfK+zޡ mf(\oa6Pn}7''@])R1Nsss3b\Q.rl.Wb5?kKtxa3&Tc9.5p< zVUS*Q5Won.RBլ`QnUӘ,̭ :Om: jWr2]殕g+I !RW^SW)S&TB53RN XUSk`]L몂hlbZn5i3:-q4ǰJ3q>)5eӜ2͈ȖѲMZw*[}>Y& %Ae8bh[ޚ-K},%j>pY"y^YD}+dcQ.2@q-]|V.8L0i,m,{_P\taJpgMdv *2qpI,>$͇bɒ%MY TϠ'N'/㾑=t]kh7:K'Dٜ.ޱީK涴n+rCY;mp~in5.sjơVHS3 ǁ<&d[S>k}B޷;̗Ш :stulewK(clxͭ],dl:vqwe='$qw%<֗-6KQ n-Ȑdزߤ{B"cgۜC7!܍0CX8|v/\"k$ㄍerqXj>n5w1:Ӄ'Ih[k3~V!k" x X_D\&%ƃƧն5]*|c! FkZpھqGaѧExKӴmQxk>:lUl W &دqKDџ<\(rc9E [~X >VKՖi0G;.:yF`+o^D'^"]/Z@ۡߤoҟ /~dq;v; qԂ;?l.e۳:eh|5wNEXξ m؄?OxDX(nA)"tI{ml3mO^_a_lpv}놮{47؉a٨d^Qq;Sy5?Ff+ŕbG<,o(!crzvRm-[a~ҡYnA]ߩnزm#mmmmL}~}7w M7:/watkaWcőt{fq1q'>YHb( *E&%FqX%/~$n_x j%Z֠5jkkM|l՞vi{ysqlCL={~CJCSóld[bcM''VO:4G#1qN_xg*\M"Csi|mUG,<硆ϊPwĘmjplA3 Xt1u"$^:mi;sihM*JITxq_L1Q|OxZKkdܪD8N zKl /RLKxf[q#xYg7Qg9WœyT g9v`1v?} GT)g7njy|Y;[|ƼQ>ݜK l,8]oq~"FOz>#i1 qgq/>ŬRO|ƻ'%4#]|*KoLq9;FqA>t#g^goүɬ<agr!ƒR1Xv|` &_Fthi|1=_1Y|^8cq]3SBş?U]gq$`[,7.ev>8z(ݤ.]+$nvںR]{oوङ\ϾI'pҴP̴S̸̸, WYԧw|_:_@sk;"pm "@H{}ȡkpizDÕe =[sl @f \'tl7rts'M۽۳'8SX\W [wnC9D]Y)uuuTQ IrWs$|pf:S&z- Qǎai-Ǘ}N6c̡t쪉$~&ɱ6c[lI,\)+ċi,%-JrojپyDNtr-d+:{W\6:PSa6$YĚ>:d &ӇU׬ʲn&t٭gZs`9`DF}u[)?>﷞X}//Yޖz}$?:V+7[[e-rJTr>zv>j XK!6ZcUN첪&u*?sv8b:0ͻ1ML!+6GH ; B6~Aն6  2ǪJ0ehqyŀ1!%(k>L$3:Lb Hv1ժ-I{ Dp.C̐2֨jDi[fg{Ȱ+U IȰL;s1NL'ۏ+?uWۻ+bT?h,JU%] -^ pT\+y}DK-8rd-fiv6 s_)z ~̃1'; %S#4\<޽Þen\q]'\] zhje&l7mUk-0ﴮG3dR>:%zTm<:] mr 2Ӆ/r:)"iYZٕ`2QhVb6+BUsxʇ}͕g>>_gu@S=%ߴvQmW⸧azsЃaX[ _L$>Fklѷ:vP>?؛i^:]XfpQh-ӖtWzJxPJؙrMjiܥ/w}CUyG.IG@qIѯnQ|J.IR(e$Oeŝ:P`MY5= =ӄNu!e6X4p"> aS2&:eމS(6!3X ftۦ ^qQMky(#O޴Vua(H~]Ь*Z֧lK?+|}Zp(0k8KN,TS5Ӯv`}ƆWlwŎy8+ ?qTy^.}:}|.)F٥T^S>SphVB28c-G*Kr_ec,b%ٟ[}NCuӦֻYT%g6;vl߶c?߬Ǟu ՝tҤt*Rg3zdg{ΪS "1j-$[/գa<=y^7Q 󪍱5t;6zIUh:پT]H £CL7ga#,WxoNyT/_{ե^"o^R]б;R $5G+'sxx7l[5^yʱb֑ӎSjJGcm}v؜pnuu7#/Qkl;je[s G+*+r*r-UIҳ{vvv%7;DXRRU5h4~&eed͓\ShFj-Uu/q=P>`NW嬽\~}jAgdoqܕ|jV!i\I9<REM q-a:zJq7ʢe-) Oƹu|Bf_}0WCq+r]L<__ Ji4ddۙqk8xX+&WҎ:Mm*W!.ñ=Qv}'O"/Zk1'$Ơ"T_a$oz,j v2$Kiuyޔ^};Gy0UҼm|'?nZR<`7ių?-x\/'#%=G>̋EA흵5yeIM!ɗBd/{$b.KTJIqk Nrf |ʔ*Ǽ|Fk^xޠ+{SVn7_&yb }ě88r2猣d*Zh`I.ך)9I^S?wNI9yIڃ t(493K6WÃ{c9p_|uX22,1E)b.b7BPyV*p]\٠lQ^UUvio{O\L0 P$3I4O&mU|w񸋁z7Cd,iA [L57r\ߌТ^mmB^,%k#M[|~}Ó4z-3dRd.6RJ ^Z|JL&!?"<ԆQ,4"Dz<uӄm1Yjh`DFAa>\)|kI!pmQ* .7Љ\h4BRT:3ε@0#bګѣGOۨu4^(0B=6B)< -*D"`i L[vzcc'=]mİC3b۫DtV5Ȅ~Qoi3U݉{ِ[ˡgFZ:VEbѶX}Gs[ؖEec5׷ƥ%S90zVcl+ Nn^k[Q$ M&6_c+[655/l  No[Ҽ0RlppZ}Gyas}pF}gkFV\Z*ع1Mm`Ch Է6fT.ēFehclisGGcCp*5[g+\FLFcm ;cEuaKg<QeU(ظtdiw{eJp^YcE襣q)B6hmiozX+\;;hilPc iUtR2~Mbl}뤛gq};{kVo@E@/G^*21v1_S}}k&\X4uU߫}? Lby<^.EDyT?Ιˉ2шž~}$W)3T|A𝱕D?DLfg|B?4yCP$C'+-H'; zҦp+6vV^69; k)P#y$%K5/&$]z5JF: Kn):!Ag˰;@wʫ@_+_ ;@) ]]7ɛ@߭ #T)WBDR*G*c@WՄWN=ED^ zzlеՠ;NUnԕOSשAߤ ˃Zi+ЧmkgaF16mRa>f;&l-/qβ>\?l 8S]=Vr}($pU\(ָL4.-0Z^C?ͤp!b4-wr&͜$>=i{Ic,׈k_ɵz"Aqi钥K q=ͯ&nBzO߼2S='y Za]Yp$!G lLJ@RI]uHG1-\s.f̺בVrF$yg7ȟNL4ᴚN3\wҭv9O:J M:݀OCC̍0r?kx||uj˦x."i^1p7g'*w/ʵ!gxQ0闢y&ȇ3]sw_wKKr\2oq!Zij}O䶴ҶQ3uэ{Dߏl mǯO8; yn&>% ԥ E;QIhtd7newl{}FJKQZR\Jq<]1Xϔj:W"7?~r2J h:mG{^Doj֭փǬ_Xنnm]gK-oO;9f;ZuڝÜaΙ;8߆rIe0<~ 8(8\  ڍHD(hT&I-\=+1$rqgoVO]$ Fhr%7!F0LLt+vl\RM)ՐR6)}g_?k배O'\u\ŰpFYݧݢg m7=$OxpuLW" )$(O&.IX}(lH LJLbW$$֕O&⚅f!Y,9 Kk'/Kx""""y-Htv+thEZ(ـ|@G{yu:=lE1 }ԠCex>ޞ}h߅]3>w_'j} .恜d@Yˊ|D m- h:4{^G, E]33!"Qޅ%Y"vFe"2G0ţ S\. Z?  `Qr?ayo 6C ݨ0xoNBLh6g{üp)G^U\z12!05<ԫa}̖!5sIߑ­Ɠk{.5{z}Q&݈wŘ{}_wFVzǸe{t<=O3E ~'L~;"'x-l*Tޑ>yw'.ew; {[%wE()ArP(2F<+Q2ֺԒ98eEq'qqQ<!ɴ`??~NR+F_,=K2m&SB9H6s1)b~'NY&"CX.%82VĊ0V̊/CPb!}hxF0VJVjl@Ʋ42j}fl:'&2E0c%s2Գl%Yֱun"MVv+YDڠ2/-nۤoxv=_n~AY@c[qĿ~NQSstBࡀo}ײxtx pw0@l:k'b{>۾%60:Z~,:00X{2_Dg&G1ΉM,_FyU}\ 4H)MFtJfR̽ \fnRDByia wE"ƈYd#YĈl1M1,41M1Mӈ1ƘbRL眙;h^{s= i> l$8gW}o$l]jɲEض>oWmq-mv# Z`#{P-emv5iyeɭuuݩ W#zk6[R8H9@1Y}?ckdX [1R 0:༑ހP_A1F??+l [B1eH1BzMDL)#)hoA;WCvP v F{tg!錖Oc FB)@RZm[꽣: e 2/ l!Ci{8qGlH [ۆ[șᖃP~-Im(rJK}얋0:n A(J~b q͆R-R7C>}!VƒȧsMgO ?L>J>oC-/~S%qedNЯү25uh&&+W5[iw[Hd2,4S)eJsL 51ۙyffʙr YJ0"#"cfHf$FB ST#;S S"'S!S#74"46f7cE~(q0.x/2*e} 0t2KLӅn==L/Ӌc/3{=h`WAfe 2}h3 1hfיfg0?2(fƘ1 s08'f@C!MfD3f~Ƙ1?F ̋OCSOGgf^b^B?b^f^F3++ϙc/_WWq55"Khyyyy`dDc~ 4-ww{?IϘ?2DdļüN3bE/D`cxtn@d?~]daAK7eCM6 -l:ne߱lflnzVbl6G+lz-by'hZb:baոfc6Skce*!>6>JnNqQ\̱Kp1T QpGr \ %R[F!nJ㒸$fn3%s\ BmR-G4.r[G .s\&eQٜSs\!qS+L\WA}* ND33SINDZ2su\ezJFikjfzjשwϟ(GԮ2Hj@Bj!m ]cJHB˻j66@pp0C aQD@=u2/%hvSh͡ӡ=BEQ f*ʥJrDKN>!<#-JCeEit(4/S@5K K: TtXjeH5,P;RJH$حHRT* -K P[R+I@mR3P1Po$B@qReEIEtbR傔 e)rZ8ܝR:"ZfTeYAr(!ZAQor-Wj(cY[墥rٜȐ MwjbY#F@+s,@uC)8B ]c gWByn^pEBH$``  ,K%âZ , K%P([@5YaBX-} XAm75L4L5L7u˺? ( "]|4DX#F>6)߀B>N\uv4~v^*6`ZT˾QeĽnQ\'A;+GPC s8A|9nR{gGXqA]a}ʴo\9F=iPy6's L:Ee~˞L9OoF *8Wnʡ\[|M*<[oY>n! -ОBUoe&lл(-b^O&g\^ ɼ BPO2[OGgZπ1p:2Zϫ֋jOPV7a۞z8]9P紫}kE"_x,yf{ԕplo"ϑǽċKUoXc$MMaZy|ׁ^ٷ ތGcߞq=ǣ OZnE"O#9] Y3MyThg׊#933 <j y;F=>kjπ%gMb߄i߬3sw+_fm[uJ{98W_-x!"9'yfSeoSƱ49Y7`ur@&pw/uzqUP{}ng}N.ORswf{"(MNwrxǁ] )C#0fyg|3Blie`EiN;^V}`?50Gc>{*hK`a:P<2`?cu-V{4ڝ6OlO^ ^9]jߡ:NY0Ml5_=cc}S.fV'A8UXw#CΐgѸ¾Y]!3f iM7E@#qxm㷉#7UF_q q2Hfue j %U^}V)#9 0/O@/p[=-SAqʗd?$Neb|E!RVpZr?&a!~?EACG0 0P{pt6(MrSړFpSAP!^Td򇑎s@2֎<ZX3vol?#[}+rxEGQQ_k/o/nj~u/XZ]~ oɥCXah'sD2X`s |ʵ]t6B7,6_h1^M)$n`qTChl5A0B{ V鄶D^+xMxⰒ|!{I(gamp?T5k)-rC{ӎ ?U&QL,i>nio}޸obh00G=y= #hyoлVqDZ/*W+a&V)QC͉ޔ 97%嘄hn=~qD341$Jk? "a:@cHë&AKV3)^̤ ǩֺUo#zy؛ȅ5vV۪2. hX(p -9`'T J:eP"B{|ʫT8zsap[$o1..9c#m;s0fU2ڋ|gQ~d0v6 ;m) um{dg@i.2pӶv+.ۆv;^5Kuݫws-3i@α6̼ms Rs9ulvl&vvxL{tIG&$|P/vG( ; CkK^<+r a3HG؁wrC ֆWY΅ smR-t:AN 9Vۡ"ȮySnk-ٿtm=S@WS{7l1[m6Usuv_!ot䭿S1MCMG=;d o-gP5y砍D (աvG;0Bu?$4A'+YtZЯ5DлQoWר譨;Qލ:EG-DLF-E'CSdҙ=Qaef_d_$v}zy4K}>:6>DRQ.= _ݧ/c;{$Oľ{Kw6ß4:?+K^ rؠd׽ ِ֝!SG7<(K9)MO6 :Q2UA~ ~'4E2W~A#E1| t1b7tYu N)DL:EsO>u;u;QJ'X3g]s(|+QytήCNKu;mf_b_Z$=ۈLQ_̗ |o@{|`8?{3,?ϟK_W$'l6CH҅L![0I(ve̝p!NaB9BhI旅i& p KPj서_ni&s V[`&b}},h+S*r"OG8aT菠яD?G*:;:Y $ED Qu'gFDDx$,4Ğ =^~??9$?E_oo(!NHiBrRaPyfȫ&W Pu|#W1-1vgi!䢟ACo@0Z]]>3z'*GO [&C(ID = p9;G5k0n9inyl%3fY8 4j4Z>c}zGh ܎N/4\2[q8X2_ Nr 4~4a8?ģ !G:E,B:úuyy<_OMGZ^=qy2,[Vd!^#$M5ϐp]Z>CiG|ZiyiOt=Z[/Zzo~Gdf/6= |jMZ:z=N~5#U O6ϊ b%]dV/Ir>N_&% ]Wu~& J׾49h}l&%Mby-LҰOAqzLy+J͞Z ,lX^ڳ!-\ͲQtY6%idC׆RqRHx}☥pPu@TuPJ:$m:l:jVb?3Us\cͦcV%[ݟFXgR1gl]7:QE)TkPuSچ:f7\#d& :#rƘT)r>YjI5uEKxb#9_VϢE%es@joXzH-K?FxA\ ~tH^`d%]?/cpqX\U[-,˱HyUXNT[,˹mŪr*rrrѲZ[ҭ~v.siYd7Df.Z7'8Y?gkks;T9CYgG!_dK]56as5{_Ҟv\f8_)]|cP䗣~[=w Cw93Y"5@NPrrNNPވmҙȹ9r. r.*9y\"GEaG{sz7n[5 1&Caak1 y ǐoH"eN`yW!hmP ikؓ`ko8`8wsIX;W .CN@8iɞ$SjEz*xBfT( 8_ |,BW]?7s9,e('Ȼg+e@^::4(G!=r`Q,$ B* B"} 84@(_2r@RhB*e @%ȷC;}598c1ɘbL3f‘cԸXa0 p0/Øf1~36#|%0r GO5:RQqډ3VpPÝp6|05g @-Z0:Bq\ʽ¸l\1P+F:k7{2/a{Ny`סkH1POii3SLtcZyc)BJbTof\hõM s"<  M&\o\Ti.@L;Lq$jM f䂠 N~dSP_@i9D {q c[:̳qMa#p|'["׀q3 mh'V HJ0J$bq!Haq4fԛ&LS#dSӴ儱´`:m:gnZ4&^1.eRM7V8!<} i8 ¤pD1zYa^8_4M % Y1|v4$iNƶ, <^#)J6'|W'%׌Eb^bmh91I 'ӌI\=vv dZ ͼbG cR^`6d3|D[(@#wWݼ 0fͦU82Z,>?q@ȐMMƗ")>H{h4k-Aݹ| >'>{}nxI^ݞX06^ |>ũFv}}"nO~q5/-/ +Xw|z~Ϯbo[$$$S' d@Iyq >l,cos_ !@yI)@#APЌ *b "Z1 RaRj)2TQ) ED䭔"T3#$Z߽ssӧ<ٿok>{Nuq.іS)mo.6$|||E}))uLo],Φ}[z^}>_Tg/%n?8ŇS V}Qmn/_#.o_$7^RX2u6F]Kv_SN1x#i I>#^<.'9Omǩx|:u}55EgzR†ǡ_rH~-)b~#cS~.Y)i6Jz^VIgϔ92ǥU=ж-|Ykا56?w]<_]j^t/ugRKCum&cjgM%|z}xvTbK}Im/J m;Oץ2H^~5)g輬6 4̕0^%J/iɒI)i%-j8>.7~^~ꎭ˜{.;_<^/7/}~s%Kh. rK_t}\7|Ô~KՒ$}.DS Ww9dHʒ2NNT{Z̃~@v]G7 Կ|Swqt*NV riKn/tgA_Ҏc;8#8Mgt*6cyn'/8Y^棚i>"E[Ri븲yqjE5)z秿˛=" ݑ˻;֎|ъ/񎎿y/Gѓ7rFkyG߿y}on20XҍFI$MtKS~\zإnХQI+\Zl%+aBd~f!rorbM4݈w|ҊwB޾Ҟ7t-+yJgv=޵k Lfn$4’І6\? kJxSTMx홉^wVGdaR86}tg^6>h~f$QSns丿>/1om2+Rƞ&^L^Z}Ez˗i;}/L7t)S"8X>Zv!Q|V-gK-fWfWtӔWg)3o-щ e:ɬݓ칒 d.H%ً2Vf[ڬb'-Y;㳪,5DƬYWeRґ'nMK[%ףYG Ygʪ:u>}<;3;Gn]$\fv>_vHqi!Y= gn!8IgƬ'q9iĽ×>fW{yf|^؀uaـmc./kx- <5wƋS 뛳s\}>E+ef{RVk5R¯l7%JN?L#4M4197ɜʯU 26tmCOɏSN{׫{Opy^kTـkipq/S>mki=Μ35iiRɹ(;ip6Jil.Vܶ˽h^I뫹F~5seD51SQ?<&E.MS"Ht~R)6|g^ouumMzm^*{L($`P9sCFUFu##)(QV(<ܺQ;2uڨe ]AzF>r[Eu;2٫q]%Mj4<[ZPv otSʺ^dzi$iiEҶCI|X dH&iRozZD9u憴M .ijٖ-hZ!lM7-@%ZEgsZTRh궡鶦l7[*iqw8{OiKNצ[z]U,_mEfG-2.IowJd9zӯsy%3sE- ۧ-8mz$DƾHZȖ'ϲɾXt5nTԖTg =S43>8FOJ^E#R$nY2py'.d62lc67ǶfT'vEFhE#?A|pO" VEA1\ 8 5 O[m6,XuhQHzm2~uGjzE]Q~Y1^Ym;y&s>,L7EX 0Gzd(`\F܊Ig V2ɍ1H]x[t]gFZ auԢ%m)J+U0[`lҲ^|| Ǣf3Xy0רk$/`HGU ݭc>QFeOqPQJ)[]๷s~?Ͷ\(q{pE91Go'zdU<379h ?¼ sKXD1Ӷ^QH#H MUJ_D~\ PzV=,S@t8H>,Fw?}U;cd6\ _hM@˴~peH_xfgueHn1*<0~" ):VxDx"L/=<.߉&DuTf ckLw,(R<ƿ!w4|Ip+?Zym,:PS^胑{`V+~oV.qI^}1EJ]h>rgϩ|$&aޠ񟫶x#2F0s@|*m=XD)y=A",QXhD^V=f=EG40Ac 5֋\cS0t9B ' R)<:~%A MA~gkYK~VpV =п+V F1?LW܁H0> ,':oۨw"|0zhZi AF%vhV M" -V}Ő#Zwa+h> hێCc[]S'̂ әPfTݙ3ugԝ;Tw [)`(A/{ ?rgϱy>q~W0oPy~<~T9 >DvPj6},yt eka"_ρӿ3[(L{x&q+Ht%0g7h(,MY]v$G)'*G"^{S =?Fpm2ppx-ZM>P SP/1Uϧ-UIG*8u 0h;Gq'h.#;#-a+gg#s#:C8.N*WS>H8eS(5[9f՗9c/)8O;Cp/xܬi!t芐%1(7a xNkHl~1|ӊ|=~ZG|ۅGGϖbAJ-%VٹTzk1sZvӺ@cZcG ދy= ~1ؑ cl;rλ8MD~*̡ߕ!ў#Ec&eGkqZ|^‹w_YT=ˬG`N##rG>eՌ9/jFՌ9K] j<΁Եo_Oc)-zbkXF{?zDiٴTNW9qb  "/-W@s]0c#{vtPᯧn*G]Q4v%~K4EMcA#ת)ρ=R;Z*r'ܩso{o.3#E2Sn>[cq<||,]jWV΀_Pp8>| 88{(ةB Ri_ЧG`! ~7N ޴ kg{-;~ `GSz㊑&䮱w0ver`@oЙZJ (<|RqjI a0`G.ķ"/#Af!ְ"w/|:': kv#U,Yn=R\dkćWN~|L<鼩F-2f4Cge"M(OOU<=`x#yhnlu= ~Ln 5ȽiRv [}UhmZ슟NrWe, 47f9%6~Kڗc(ٖy kc@GaO#KfJ5S966~;<池c\l֎9P;ftz Z7Ƥ8Z+16Oؙ" 0#ߣ,]v#RDǷڡysDirdK\Uk;,VpcL-: }ҭwqdƗwv162 L¤&4Oō)46Y&dg}n9&)y}'&j;d#./4Mf0\[vfmwLm61{V;hs{YvϿ>ˍJKjD3pvD>{]R>tL?7b7p( 4 6Mfo&fDnYhUl0ϛW2iSe˂+#5cd6س+bdHfkcϱ_{}EEV_btl ٯme_h"։쟎mc6uWuBkc;=>W튋"b=BMr"Efo5.>opqy堋Ȼ."\Ds9"ru9"rE."'\D~GDNE䔋."]D9Y`fe#rEJ?|"ro7bκE朋njjO\|λ\pqq=o#4"H<GmD1xF$3"l7{A)|/-f#Og؈و3mD5"&6"6",xH.2}]d|FFQ 4_f>,AioJJP32-ǿIfE&>'=Ifz(t1Csfv;ɚ'kz7YdM%k:Hu5e/vң@ '}GǒOzۤG'.ɤGOzt*I*1чIx]do!++9ʭQwVghޒOp?! JJ_KJ?"_ZQCJ}D*ͳ:Zrӱ2d]l49'GNx^o߱o[!IEZ#)LJқH*w\@[I=Ii/R 49>J'?Ջ\_}ZߟvR:IJһIPRz/)Fɺ9Hu1=Mo_Rkh=J_"_]ov$i먋E̟ϓ_)5&_5 gso7Ɋ?`e#FC}MܿT2ψ~??'kEy~9*Vq(g}|eL+ش/6J/ǿDj!>H z"2'^Mz2O6As% f`neHSʊ(ʃIQT0JST Fy!* 84(z`Q6Bq0!L8@Š$Md"hQ@qb1bP( EPEeB)jb5!k bȢHmr(Z@El;((z{@ E(H*('*q8Ԉ^(m@Eh(wm黈f`(xtg3"n=D0D*FH C{`#0AW hwA  z o`bFaH5!)' LHAQ`8qNF3{ C>p08 ,T&nHi-x O`R^B+#HRRX "Wʕ )"uVQH`4Rz#ncbw=`,u T^004| #ρH$ ^A$l F bX>q|a7 .|߀H8@"D@2 OH !  Bi* !htܢ f!LC0~Rcr)D,Ҝ4٤%i M6 N#H|ҕta,#c0|kٵ 1B@\(!'Jȍ`)rXFQjҢrP]T!ȭ`ES4(,)Kl@eOك53 *)w(/PER`rt X\ 6 g`rx،\P[۟TB0 h’#*b DDq@\!7;=sh@AhD,0P#` L F5HK<“,l%:w5|?L$I % -RL$`THF.{ŢD)(EJҠt(Sʂ('ʍAPh* &RQT<Ε0fLL3ӌ1HL*L*QL*1L*qL*6&$$$$$4IIIi0&&"&L$%L$e""U"5"u M-m̙33z3333F3Ƙ3&f4& `8&&=&&#&&3& &+&&;&&'&L/Lޘ>~`h `1ع!عcsC[aan n:uvkvk$vkf4f f,ffʦI"@؆M,l e+f-s~,$ޣe YЁNdZh^>fffPInKsJ9JJy_KT߷K\BJB$)FQ*ǟ+3U]`iv3r4ړx?_bZ;v\3g3ѯ4#,!)D;"mLJ/4IFxg` q=/|`|G4WRj"RNĤC%)ͩapʑr<)oR%)} Q<}fۄAg-ŖB^Oic>/ l}҃o_Ktp~rۄ0PfųX/w@A)A9 &0R0+CY)PAM# MH`*A@GF$X3 zmCJZ ǏRA H : bVzSgUJ'1W qh+dV _}ުPx#ڀ$ưزZn)|n|B~ZÏOIMKpKL9j^L$s4iuzBV))i.RܴmMۘ m 1GU+Ԉ~xP',sLGVDeF&pHӒFYѱ1I)1_L6~\čOFj-- !P8S`NlsM+NyLJѱ)^1]h{UU?wZGօ'V>V. KZjʹydtȫJv63a|ڸ7QP@M\Axevn^ɮ}KםWI/O;dJdjzNQfĕH{OcsC^4x)ƍu{5d,qeFs,sG+.x3ALȮ~GgepeQ8) AUV+{%MխYtIĘ Ę/dw,Gq/t81斴8[96 ,$]_@诛gʞFz{)vӡ+9.>,:T o\_`t#ÕN 5Ks+>U)fWƌ3S[1!T <-X.[;W7}{mFO.ٻ ˑe9ni)]/1'j}Sg>W={q 5ψ$Mc WY_˾kg6fN<&W ǚ[\HYw><]/=oWfẁWMZ?f'vJ ],Rg Ym[i]ionfO4MC$3ՌOjghG`:7a,d(L}"ZVLk5}']Zk*]RZS4$Lseym]wzb%x&')Q4=1\(LQvWuޕkh<29؎3q?C^Y;O\mصY?  OW,ۣv$eɍG|l?^Yut``5!}+zH][˴/ȭt3՜?Lm q^gTUеoz~L4+h^Oʖw\Ӝf'3}'jUf_ CFshKKk!zlQ/uIiI5׹i~iW琢[U06o0tNEHbE1ws8vhm;zqqz8-!,I1I7:{n^s*\_WM!j #Z:f e ?Y%z +Ek4 Gï[O;#TV,3;.*90@1*¼RVxǂ[fҁ5{_ ]%t{KAz갓2#pWEۥs]rC&R7jN)w3\ݒ)y#`qD3iRB!LaLy|eOƒOٹ@E 0 B܀ϙߤQR?" "Gqwjp47*(OvQ:;m:S{r(wJ˳+qOR>˹}RD;l5/5v4=lؒ碏y8Z k{ .zY~4{ny|)S3o+*䉭yme5bIViJ,̎~[׉%0j^}S?2ӫG\FӆRA6c-EIx-jYgZgQ #jj5Q"fs"w _͕<ՇO <:_AFm;yi]҉6;:ͺeה{zw]m'wxW}t%3ဒTѠ8ٞ88@+vyـμyĹ ߜ*ڌɚ.>9g]cngo$RZө@x{߬ѹLdJiLkOiO+ZI8M7 U.xJجij[~tg 5z=5p{㣂{_ՓYlMYz΢kKpXkVuT9`{ ]V;^o5RGJFjSe~,G{OwSh!ٕ,KԽyG37<}1sؙ;܈U6v(%)GC޲.T4nqp+DfKy%: T֒ZSVV^l|6Л]"?VTLQ"9&Dr[Oo"_X9VQ~5)|&K YAޗ!MnBK{?OBhZ\4w7E5YTIv> stream x|y@{AEEwaԼ$UL<3Po4MHҴLO7vy$e)k#w=g53̬ 1EbC]oҲcDKB_횘X}$ߠ5˙Z3h"˴プ_NH[L_y`A'{]W_%ȌLsDQ?veg>"F̛d#Qxmp,G~ 1~P h_r"QCf ѨKh !#nja3!5oƯ:KԳ T-}%з<1rߌk=15j`VؖGl Gr U';l3E>Do~n4샧;K1'u}vS8RՏ&u- .(lrU)b?d\flE8L=]Z F'`@%`k-ma)i4Xj) =:&',zG VH\ޠh=W8'Ih(/9Ԓ8h?@կ#}Ŗ_2 Z(!iaʥŴ @ hFc%})#(m d/Qt] PdLè,,(2- sU3XɣRcܤ,èHIr(P47x mכYΡ|HIKDX&aR?s|MP`lo%qTA9R/_c}] %)k+e?l̀=v)9c5WeEԜnR-,ΟbL \)ɑbmXGQ]zYZ5]o>%܎s$I}{ 'Sw!(Qye!O_ɨzo:U֧Cw& 9;R DWLMA^)"\D6J5D1a B[e(b(^%!a3DJ'r*;X=_PkBT*]*|e/ќXDXDIC//+@h5j"^/aP)d7bkS"d(-0 #ߦ4D)zXH(K|0\j+JoB;5@zbʦ3]נ?<ETpDߎݲ55埨.#-pb9JL2/HDuVʼhH˿Y~Q1YQXZ h^u>{&Sk:ꈵ1GM1jbו{G4NbL^$PCi~Sbq{3KCcOթ6:S3U4%yZj;C4q8-4DCp`W?py7/"Z,|#,/R*iXL),3,:<;אf*ň\nN/δe-Oź*o[D('0}o"oJx$p9Qw)“ҧQӂVc_V5mjK>W#pj^w v osW8A!y)w^smU($}_CZg̢EuoŹlV$z εA/W|D ɯFUWZ߅Y4xh2qL#v*R?S*_+q"+SM9S <[mHK/w(ʁ甧roҰjSî6e6{n&/K?Xٖ{ז-D V2vc'r*C$R=`Ca5XhVhPՆV>jTE3Ħd6Hdz m8xS`KM7jM16J${>qR#ԿؙZ}sZݵN =0^)qvJN N]L~v8#a%š{ĞXo%S]7i N%=c$o$q/> Dn ̠T`K p6Q8 8iW8~z1ևD=̢'/p82)S?Y538^JD=>ʼnx pdShp*?ߓ8@#,8 |(_P_l|TCg8?&9\9. iN.)%89Z g3S`^Z3kqf= :Kg֗ ܀;)\g_9M 7S~;\VON6MvZP!J,E :-wZK ,r1K+h%p?1 wTx-+ҏx^ŞzޡZ໴U w'{kaXߧ~|&=DyA^+? ?}/h+@_A}?]Tx/ӛp: ~ ܋m: ܃;t tw:AtRߍ[)Ond]_q؅3v;҇@;׸G=~ϧ|=~ϧ|=~ϧ?;2iXM~{3ɠ:|@<e]WcT_*+C|_ FǟVz)i+gKN;o׶MVlakݬiQY#-Fa CWNpZ5kTg14dMv[Qn!ݚ* nIwx-nf[Ati:*59҉:XDHC|v5⽮U^!/-IC܉5al WCbzׅ֬UDKP VyX ^-2)c#-)14<<=6 ^{ %(OWX˖C9EA鎮>: _WH57rȟVB̪ZvRP|ΞiV57\bz:@YNu"/R֩$fYC1! s|xa=V$Y{YýPkzFbÂ`9~G}91A5FF`yz@<S2ҳr8YkoAKҬH; QvvP'Q;0 ey12j0N(O dTG!"6k&76vQmbci5YA<0|JC6yx՗ie -$-:+2PEN2gJENeqS-:^STO`PIC:x=,?%՚ңo%)]>)z+oWWNHBEyLj*دRYU",y@ Rؒ r?XP^"Kǟʛ}{ǻj^l 6D^}KNZEL%ȚG{A{!;+]1EޗC9WeJ4FzkDzDzT?"#C(6ujrDB/uѕH-Ӽ>Yyj( SVm/3?X S?XjТ8衎1VH,QV EN cnj O/u]HKᎴl7Voj3e ŢsG&u,"evh6z ǨEwۃQW3Xv_ Th,)S,T$8[G KMSSпѕ _ XiSBVQ-.Bˆv AܐCce 9!t/\mjaU@. i:l#e<9 .A_3939ƉJáE [(HVu#ͫeYtrR RcޙjkA: 1Pp $U9 .b<: Saat /ϰV!ni8DܚWOr9kم]s f [,s,2[F(-hI6 2EE.'pT.+uŻdK ସZ  t'S"ƚ:hui DE~]ěVW*FuP_g5 `!uC3`0A_05r|0@̈́@If,F"<|ĮɿAӎ`BEA dd!dJɅAB橔!9ِ9FQlyGyQlyGyllylyQlN9lN9TlN9lN9TlN9S9lNlN9lvflvlvfl|vgW|vg]g|vgMg |6gMg l6f l6 l6fSl6fMs``}`6^)^۰/a*' ;&baѰHXv aaz:^Ao{9^%{1^{>ꞇ<ԝ٨;uhB my?ƍ1VM#.X QODXFsq\؝0-?O~n]^GWtW#] \]\qVuTB W^"VB²pa\0xma|ss(1yśsYa>s/ǰQx (pQwaD,OF4ţKa|W<9"ۘ3_Xe~5yjXٜҜmcGQG=X󠈭xOD3s2wyP bn9ڊnsoկm>a _&y=|Z5kwo7o)TTo2|L0)H߿ɇAAŃDU.Mѓoxf"RR9{?dZZ85R(W|))TP >=toxqSZ~mtJ.:kr=V<'o^1 J+b]&_!f١ϘNuC쵺l7.??!U)qհf4o*LToRTSJyJ)O)Ir04nGR82C`uᑞǷ'0)0' +׫oå^RU}8zU z!dUz*zIVkE]΄x1Y 1P:c.өݮBvӉ[_U'i4eWZ=euQ&,t/}]j^k5Nl{ܧi1M!8='Ɗ-cНKEbBE 4kTa(z&+uAu,M0f2^<5L76N`Sgy,-vb4aJInЖۡy"ZtYZkmaNý)Gki+>\r$AŎa+5+tZ`KfDO

$`Q[tL1MdW6K_+iNmvCe3$`smF26641^5YtA85"3,# 4O`O3ѫX{{~ZZr9s3qkqh"?=I@F?yz2ֱ‡0 T!Fh)D'Y$%!<.FQe#bxKć;Q"~5ZVRKמ֦j3\-O[h{{'sUCicecXh8jbtƁƉƹƛ>A>U+Npm0Z*֜>3|iگ5hAAZ/>Y׀U4dw'bc,W|NkwkbJx?cof&m b.e_#!¿aM|&b ktXm%J%!~x%`^,n %"1X}7C>Js)TbX@?X?1{q<(`KZ>|KԍXwcy>ENob~B)N Z=Q ;BWڰ7KhVl7h*qmϝؙQ Rdn<FCE}|,1>4.8X~CjGC͸ 51nִޓ5ul=f aMKHD HªDQU,Q AZպֽ*V[\PjVVj]Zu\b?>g̙3gfΜ9sr^{9XY~fjk;Jħ<("}eww=B*v5$ԝcqtvySg6Ůd%|:+(Eɨ YZvDV#)"TF*&OH mFޔԻ7{^g c }_nw@>%\KX\FԠrmIGFxQd$ uisbUahtCdj+CdWv3u`ؽg𦏺5%6H\wOJ?r*)E"$]{WQDm)SʺjW{ r\+s 1j<{MzAz)K) I3/_.i'j=zs_!D]]7M.BħB(*a$7*>4J 7RAAz)bI$cO kʞ"HhDZVpc)brȩ1YŊehbʸ0~x]uI!+xhS:`$M0{E@wy=!WM>_U*1 ^E 670(&H4!ՆR`4A)$EP$89Ka+RuA#'S՚-jR$3Lbd!C#"Q2 :Ct<ݸBycTqV=k2)uIi4Mm6f A>uLN^Fjfh$"+*4j7Me.YnIpNP .*`2t6 , /KT c1bUFBpOz//TUր \Q8֮t>a27/."5lQ-W2*T)M)Wzy&Ê QƩFh9E<[Ik V4*P  rIPk@b5ImmIT KrքiЌҰ5^)Q-&P.¤oH-QҩRT%xJ= ,5?``-rN$w躟+  GyH54J mzX<%sI\bbp6ߔWt\]C1=c0 &Q*@/p$u j0Ѣtw^3.ֳ\O%$ tZߠ1R;22׊MBYR9%MR_=(IRV ȁ{:Il`"O@&;VG,@kd XPzT :hriYuJPdd&"2X 2tx!ݭr$(UN )a!QB"hr_Xq5tmm1ӕE<#DRmuq~jo nE6VʏөۄrETR{Mx_ROֱt7km*RAY9Yh3ڦtpO;‘.c`2[$*:'O^rB@L&z!ND&79@n MzP={6`nSb'`F  XF,($50wDsDqO79VITbn+,Q[=V!j)ʅJzɓBnp% |Jlro ~ghy $XpSTVR776{_s!7Mz pʀC)\eUC:Su*T3pE.kdM^#@5lpK]v1A6<,> 6;Ѱ;'BGDP( -TѠoQs<8].kN-x͢%6bZlD ٣m L2 nz-ǝy~)1HKۊp)jLM3AO[(P.[6KP;*bj C/kY*ݔx&RkR(Y_UZ]8s5ps8N%q*?N]{ C̼`R&jָ.l!)%c@Ue^ :$P#5W{R{jѽ6]Ej2k5&F+$1xR~䴅QhgdOX9X.}_trGz޴ͭ( 1a&"F՞5O`?,,uK4>ȓ\#0oGӟ__ex^ex^ex^ex^@G~Fh{rAJ,wiuT BJlJf`S"- C|H0ySWXBϥO[؋B"7 L#P 'ȓ$10)8|Hȉ3%T g =}D FFmskl "0n"f^/x '09 `mM6&l om6`mM10̝w"7>30̅~1c^?l˯"+a^{v^@`w<`lz >e``_y~00S!^Sa'5Frf#0M8+),c=n+rf`̗ ;K@/v;~]# СhC!Z0T@0P*7Pir!PWVTDJ9Hs(`U#% }&D+ < YPa\k>hk Jf(ᑨP*@d9a08LCAlj \_{_.PdBWdߝomB)"3 Խzo%6o 0 %DxTB +\5ME$? bz6 VJ$]kdRo rO-t) s̆^Gj }v2͂QM&HI}f`[W[_fC+8sLK@h9Ǿ5x?p&hMZ?sA Ņ B/mD7-d>{6Ig6jo{T@WLZflr|0%~Oh*BV QX-a9DKa0j䇪Z檺Ms UsJT"UZY8He(/9_enfkN*՚íaBj UY|+. gWkKn53ל;$35SY"K?kPw<vNmڦ%YJ2 UX9YUyTE90@P?KUY*)3[`#Co-BA%8ˊU25-lhjEZ r*U}a@s*'/nW~=3DȳU9E ,,j^qdfŚץ f[Js- 3mCۗRl-(sr0̀܂?̨QdYg*lx@VVTLI@U

m+58eΟ P BwRMu/(bg; kewQ9^Q'!+kGH 6u0ϳZF?2|sb[؉l#;mb`ʎ`LVh4F|nn7$*/ ?{(,ȰPPo| ciSh?qͶcXE1>ZwZ yBOco" mHo!zĂ[\??x=Y"FᦕB];7)IjSl4ŷ]<A3 ')ţ6 4 "Uh=چvS!ESBʅT0AnKSp?-KKlxz-gErбyxyN Jl@Q(V/[HrܹPs7e\,`%jw{>纯v~gZۨ=6nm1[JO&A4ɳ!Oգ/'Яi@DD$ߑS\,. q9\.r|u:!9WuA ;)y3@`,1r+!1z"y!1>B0! h)\Lxёk|2{W@4g&ȂK/@_"_z}iXkXkP"oojv {dlh1_BoAz"m0z!5}#m {di,2=}䪜r> yWzo>}2[@/>?z _GK# ">P{jڋ{X)EO)u$|+ $]H]H]%OvBمb % =>St;}e1^)<1|ch$ȷ?C@x>T?A]vBl+\ q:CPgֶstߝ׿́SDȹϹDǜǠ4pJRJ 7Fz#O~~$'goߞ;C')Pg ö< ;%Ewd,Io7O "{M AكdI(9ai " F Plj ] 2lOp׶NΗe'8md\Y%h$t kѵNp'pbN|Chk6l2l"#x`S8ٍߡ<ﰹh YOq#nszd=VU2n_u}zWtyۜ ;2;R22:_Ngh#76 mD/oһA_e4JqpFuٹqȷ`wlhg|8@ht 3?&$7Q(v|އrYl>=a;bY,=,SB\V04spssыanK. XEZz-̼D67MG#w~,?YX}2I缐}O}x}!)!'S)857Ea/ro %8!.lP䈃Γ:u6肃_gÝ#_|)r' l;F7;[rlqC(a"oXk,W@{qhq>vapi +G/df't0 LٞRH8p Na^S [M9 juQD!'_ Y1>bh Q k_v_S,5"zFl $&;&c=.vzn)| |p7N]aPdslo]\#1[K;K0VVxK{6!Lh~'io$43I/j[⧩c| I8}`߇oN$%i ; %>NE'I O*JM`+Ey|Ui:ՁQ7WHuKѹn!6x~ $g!vVV^5G\KV. $i(B9?P 86*#SHFat\0o V&-E1Xv;KTx<\Ѩ5 4Z&EpW߈{lKOzl~ @JC&a;:bwc=O&zvDv'INtƁƃޅeL%sCۡi;tC5VȑYxz6GzO!]PO 轀]@hu@4ul}E/^M[Z3T~Bic}r#zb"a*V+zgU`HNl". ;,f/؁K 6waV^i!?<o6u}Wd.C,?;b!3ʙd)2D x\Ҹ{G/,ST MQ":h/erZ.Ŧʢh0UE^[ fN/y=KC<߁ۭ'KXƟȯyoJׂ>[.,xEWvѕG;ѻdG[ͺz֤G?u+ꂸnl:R0 RDޒ}C}u6b5k:?\r?jXU,f0$&JE랒]xDd8S|#*Ԏb8UF9# 2B . ,5E'qvFMZES3"m=!Ne8cU|9hx_I3gѼܹ9Cg]<0fo>?ynF~Ѽ$ʜqs;{󛸕/4M+bv[FONNOTޘNV~[ۊwJw^Mqe‹^%Fwqcc\%Sw.QШK {vXW*q{f/L7E M=znRi#7̅ 4]r[2G+ g5qYT=,Z% DZrM/=>ٰ}oח̵M\q3t҂[k]:տIw%߻Ď|鱅`2tedUй6E,@(0bA וU#h90뚓gϮity9gR[U4͓mcWz`h_Roomw/%w{gEʷsÚqXIiTU+:u2@{k%h&J:9TC}&HcNWלmdC.5~ޣ-F=pSު%z6.jqg4Tw}} 7ovdܚ[n6wru 仈[;̌*?ܯ˰۽eyY hRյ_9jߊ #Ϧ2Vn=+6 lNÁX SJQul#l>^k~=.mBɺjg6q[ؘ+Wա:Zlf .xe(_?tZ46{S,nfyt}޹'+E oN~kKVM=3ۢMXy|I`ڄV{#H]B9$*m5߲NŒ۱gGڻgOH* NE#o^7.=PYS׾5曌IxE7{axVl+O6)ƪ$ۺiUGw@ ^pi!N`cؘLnC;#ؙK7сH\ԍ~el8N֓!KSUKcX+3z-=3|nP;ڥS]oGc٦_'R0g_ZLdo˾X~6<V4~1ʗyQK9!ғG9pwhA[UL$h#_2ŞޜpcpUWHnw{PsN}qk׍ٶ.- Nzs܏z>صd"Y>ga#JѰ:go6BY0.rZUWYAf c>BV  (]R/:z\ðY s 8YI **|QsO۝T4܃3XTVʾosxEA/1bp^MO _f)fZtߦϺ+-|[Xlۓ&?+m?v)?>4'o>xTcșʢ]%mҝy;s: l:/csלI[Nkw]?M|k 7GM۴u7:oy|?>~qX}-ucXeX[o¾XMKΈ2;`qC.lshTk_ &?5_;YC1qΫS{;3,-WaUCKe¬{G)yd+)r`rwr GĶ/=96oagQeQ&߼_̳fܜBS;3Y5eW_RZbPR*).HNJK fR v[in͟G:Ni>yN=;kl\PQӷ5+{gWykwU]?c_wԖU=׮fYj>[?QlKoUBNV]O=3)\-,$0VS? \Kv*} -=(tGꂫaV`Ѡ}l(I"IѐﱵeOlڭܶN꿙WfM.}wGeG>)øx-c5R{N^-oLd333~UbMቀYwfU4AzI ˴V=\1MO^,xt@3{uQ J > stream x]j0 E -g3CiyPȢ[I mgP #$.|`:L08o 簐Aqt^+Τ*tnNhܜ9V7HΏ:w%'R`qA/: AlZs|PsIESq)h@oW̷~8fwXꧢNuao<%/{h"NW.Rb@h1L r' endstream endobj 10900 0 obj <> stream x{ \sw6m7}aQAQ7PA-F2HW\Ȍ{,[uS5$V7WfZiYi^3x93^Ͻ=/}sg99sD[ν5Iq/8!N P tQҎ-R?<]xpD.ztz'T3yae(T3{ ҽ$V맧HI*,鰜;o}i6!Hyaٟ]R؋.b+!+ux z'x!z7W!\9!10 F!CrB/C(" Ab8#A- " 1FCx b 1b 1ş!! 1 4ZЊ!S 1R iH1HcC:bd?88#fB#L! 1 tC!qLB́B.bLF S0"Ne8 !N8f @=Lę0 q Kq\8JK |/\"7"oa#Q T@0 VB%rPXՈP#~ 5`B4bňg` ,AZ:OC=6Cb 9FF Z)hXZ[&ě`,c# +W +nX Wjpxnax+܊xA\k:u^Cb܎x; ;7p'#_+M.Ļ?n{`3fW -[~Sx3xD!؊V@7؆ ?a;vx!>;wN8]qcx??'I'hN#݈a؋>x )؏xZ?xA|E| <B!8axyxxQ^#G%ėe}x^A|^EΫү눯? o G›o{÷w]]xC|G|>߁CC|>??p>A>E>߂ o /$IFN7|B<gģpF#o44m'j~s6^ho-fi5ؼHa!hu24[5Hp0)R{kPI=4sVXXFIqQh5d54{VXXFIIp6C}i0|?#Au*%%w6ؼ)8L">#z-Rf kL3 F< CCG *t~c&Lf-& })b~F`S~n"ܡRAZ OESp8~-f`ⱸW yىJ&Uf^-t[3|?I#9|M8& #~C\Ƿ+ڡ挼kNXT@ŏ|7O+w>l`d|:]I e$%&DGEFÄАQA~>^*w7WgB.Jx@Bzr`*IS&ҼZ FM@ulB9& ÚUWkk BZU ]dRU s.`$e\1-<\Fʅ<暶\Y1*S錤3R6?uC'H@Zչyu.UG+mf%&HA]a${<9LMc31 6t<ޥR]_XjeTG<͵[;)];4o7 4ֶVu.XF \(zz1X@ime6r%*}Fu/lNIꚶ86m6(j ; ~yB[I:̖.􆶢=:!`pIbBN7w:01UT~Qg H= #&ԤT6S0C!a*#V#b9唷Q>moFBEP;;wpd@I'}->GCDc:Ndщ ]\A%зqtXۻtP٥AA/qp_Zy#y/>6ET+fb)XQJV*a 7t`v#B|"049343tkcCz])2SBo[w3i蝱hsyyd,ңBEN>5il{9ːW+cIxy{=BTn RPw.~V{T!P0ZQ/`sD͋'|aW]D#+UO"6|/oKE6l,C[/)""eD@xAgY6ggyNȘ;;0?0j}BIBuq T.RA 7!q#-.7RB]!g8SpYcQV6W0 0AOKuθ+޴(1;1a"7(_1>,iHl$o*YhT{њB#X\!Nxu23z~t;uh OEjQʭIg Nz>?ӷ Kpg)`˿#x2'4RD$k#_\F>/j #$;Lk>S3YNVd 0E re܍\3sp$D^#OyF?oN2N2K(E.&yR='Rt /tS$K˺2Eⴢ+ >uDE:4/Wrop3wEq2 H7B=wdo IYmtxCZOY%W鋠qyN.ܒbqb{#fȄXI 2$H$?A`\gΟD5_9s{ׄSLԮ ^!-(n;sKχV} ѓ`wr x;sp0#ν\i¯+Χb\Gpmcf5y܀=R&5<$(b U2 z2 U?gz2!+'T00j *I da~ ^r.bo9\iɒ4E 񪟻{!,ᙑRQƤU-S;F&iR.;)1;;1)T}rf̘wŤ$z4Hz/yC7#ҹIHʅZr J"wRNRPp`[烕I`LSvqֽ: t9 w3N$8S.t; jA4FE:/狤/:P$?p('i>bd?@!)1:TxÝp=@FX>Ag=t /23)eСN䚾XF<|SS}F3#-JFH:\.󹪔="gi{cs#| uty"gizk}{.J,.94.22Mh䛭EWKX׶~+}_+H,&]Mq$6~.q(1rMM ⁓j#]$Lꛢ s:ɥ.FHq{sNDg\ a*8wᜪ\w!ud:wN\"*:>W680xRا?奦fXt$m{OJXѕ-Z颢ޯ{}Zv&<_ӲхS'kk< 77o8yղ?j#Vw2g}.33giZ%}SR:)b}}dHWpZ2i=zTLHbQ b\2U)\8YY%U2ܗ.2:1\5w\-r[RPX hƸE1yQii"z\9)HYWnzZtzBk7s~Fe{䴈]^!@6\bq]L.g#ʃS|%nq~:vBb$1 .ֹM9BmTuг `N.!$Z JIB#"I !38px7VV蘒(@MQPK5hUc]1l>uD눞(6^#S^ ̛N̞0&yuO,yt%%tlӥt1ܪneۊ{6A?Ք~{q p:7'9\\e|aE>Ş;~lǎݻm6 z..] u#W6\i\s z6:h?wos< d@)68h{2 {vrA@*]fAAA3HB-<$1Z-gV0z>V]4As&:hZ2 T-ZQҝ &IvJN'tP(r.PxArN,tF+H_S,d]j,gҞ.mP߇N0:ɲ؁w )]=ެZ䰾ob5b$r_{ʦgr,,għ6#Vqhi+\UL?#:~41OTH^Mхla3XVLAYFT;k_ZD[Ri&迯vCQЄ\4hLF|ְ~f/ ,R ̟XfЊtsi` Lj>mz&^iFsj(׮sTSEs.ꚼ]گ*RngJs$2/n~v֋f^.pilr do'e˽s+&<$coUzJj-Vcr62 !Ȏ  żֆjSSiZ&ljJSwÓN ´zCRr6.(dy*t5 "~5q+Մwom:ϟw?T?p娏z[KWl81z[]a[oyeޗz@9|,=5N?gJΖE!7^n7 w^,p}uO|Ou\x{?:]6MJHbQڈwKCM0K ,v% m6Jiӵc::Rh Zk20TrHV٧кQ;E_`dn7RR8:YZӗ\Q[ɱQ3J?W>|㫯o:-)r~Jmݯm*~xϥa3Wp{=gl޷S›د)ӯ}t6q߃>:1O|nK+.ͽ/ J5簨]͝vcׯϿa:Ӎ[]=+3Q>p:P6.4j88=+ftnU +tm5DrXc)Sx@XrGPܹ9s~6u+XƠM.O,\^5z-V >n6ť ;c_=rl׫=㶝wzҭse{pۺ.ǓW_pwWvZWL:m全g"j>9+8U)?%9<:'c6N&Zj$lG73PvxD30HGy҆ Vk_ŃG|Cr KAE3l .TMQAa EZJA;*MD*p) ,R W}}S3'3sΜ8gՙ#z¦Bw|Sk>M ҝilE{cAH@Tr%Nw,o">}EJBR>$җQ|_ 7I%\Ǽk`X0˰LSq/~'|WnOf%ʍa mwMyVyj3y^.䫆ڀ,*#1_"N+ouY @dP,Dy7=A)295<@ȥK0RC٭z=g]㺩E/b| ɯRyeՃE XξܥLС0oq`Mv݊NjL]EOttО ڰ3uiܫ1qn!]=<  TpϽ-sא_#8q9ûSg81J(~M\K-Ū-f aէ>(E/ żTɺ \:^t~\F]_ա)>SA!Be§9*ܧmaʜn *l!9$SH(zDPHUS/- ?KNcn0Y8S/>Klc=g-Y7)7"b;k⃪F6M{RI°I e{!6z :o1:_USr?omw5ϸǛ4}rGyAK0yUOJ'U8zE/U[>]|kz9TN'#4OkHwדQs5'Cn I,F3lH53sSǂ~PTV?_<~Ny/Z5$˙'C0F@.{a$ ҺG!Aφ/a`sBbXnJA`q;c6@ EʵM鍉]<.(n& ȏb5@jZWE @(?;&pc/h+03G W풐O:jk={`nRT{r.gżV状D Pxt:+,&9bXsɗ i>/lR[ t2UlV2-1k]뢾w dPrTh#JQZ|~lC~R"_n;O-Md퉽o!i{,ʵfJ8=_/VʒHV͢uc*>2b â{Tro^7'Dz5&̯v~@gC9,^2wD uf\=Jꙕ lϡ#3 <_OtKxw-ۦ}(rF. ]pK}3uHI/'8dZ<-λս3sb;-ID_<7 λZOWL=*%µR{bAoijr&Ba;:ͅzTj{G:O}MChÉjjW'J!s⽿CZ y{Ϻة]XqR7/+KId^1\lVfom` $yNKFݹdFh ylKbI;@.eދ|b!߹V9]Vpigg+[@B<]: #ǚ+c] ۹bRN6$"EFIOSɿ%T* Vh(9=o[;`J}EQ{/-Mu Ռ+)?7M]k6}[*֙s,whFx'O`mֱglkypXzquGMP9lz.4(b|kFLzcلmB(:Xa?HXK6Vш ȮkjBkg 7ħ"xu-FJo2 et GY]LoF]K5]OVv'_P:(Y_=|<&xl4SY64_khTP endstream endobj 10901 0 obj [ 0[ 600] 74[ 411] 120[ 460] ] endobj 10902 0 obj <> stream xeRn Cq,KH>.R&}aI4A42zWk({hNiiaV=@4JU !̋yr0ԺIQP3]=7Z V鞮>h7 MHYR OܚvP+71)bɴl{ EGI%-/iT:ZdzvI=⿚D!-'vYiu=Ц†<npKUL~i9jCiwu%Zo5>/zU`FTanO endstream endobj 10903 0 obj <> stream x |e33\M'iӴ鑄RЖ@>X "r# VԺcWW@5m xx+vIa[y'yyy4 54=/TV^Љ Ww _5r7g.$ ;~@X6 7vppۯLߏ_m15JK{>x9eëF:SIMMYMq@=i˖x}^'Wjf.5oy@R`)@7e N7{o]`%z l=,`@em^u]1-Z>ͳGVR=v@ʘR ]R̥ZR [HAT?xQ5_AQAWt!U2 5騙\dCjP{@&jOBͅl0] ,`&bK`6R ^u9\+`Jb|Ka>\ QW"\Q%WRԫ`\WE{kXVz \Z µpξE: zX7u\o+QWG6i5M\~֠p -P{VX&N6 Au u+߂;nP ᷨws~z/ܬ ;G}6`j=جpNA؂`+j_ݰ uׇ.ԇa;#p7p^W>?r}_'eP OBSЈ4D}DP?/ݨq}ExחExP_<:QހQ 0mxRp= OϠ Qz E}pP?P?Wx8\%2' \?WQ?QoI__[~ 67p[8=fxC+Vt/>nӻp?æmWhӻfr▽=mzܦ'Ѧ3-@~mzOTfOK6̦#63n?63n?6Sn?6ӟlOp~ܦ7qmzMܦ7qmz?MMܦ68ǹM?mqnӏs~gs~>sMy?/6}1K~M_MܦZtaܦ6}?Mm~nE6~ܦM~¦lKܦmKܦ6釸M?m ܦm ܦoܦ6 M?mNL[LF$2oThYTJ ` ɄA1E5(qZ@ b)|&hj4oP%C''O'@Q3Ȳ?㾟ܮceb.g#)ƶ٪{3~@ QӾ(?`YQSl#C6 vvs |?@ fe~tZ}_06&o06#@ h- E~o xV3E|?I1&S;9@ C|?_syIͶXo0+v b0+l=,t=zX i\~ܪ+:~1IjmZVժE[բX-6Z?8 @ C|TUU[sb[IneR `5FahUή~::c@ ĸX.¾gp0}Hmvt-:m!.c&1YqgH:!@ Ӿ}?}/?pq/>hiњf4x 1Gh;~@ ~xSy<p?Hnab$%má9&CMMtfrh.MVwu@ g5//}_R$~nrvvsС'+@)I`6S*{6ܮc>KY)Wl34;F18k㎉Vw Ig@ YM V1h1=*|>Iqv.2w!68ꨎ t@ g5i~XĞ͈jױ]yVZ$%mrn3in;!vus!9@ %6?kfϳA{?CHmvRRBR-) D{-)k|B'C߯~\F ଦ ;DGG/VXuE>INIILINI@53q$F$vs'vR@ 8#4M_̳g3S xVHmכj^o$Gxd͛=)ZݡuR@ g5E9*.s{f1/gERNM풚 ] S.1]zvI@g=`,@pVSٿN'-!s{B@/6;##-#Ùa4{ $!͙VI@g=`,@pV3?\.Y-)n_{B1UIkv@<IpeggdtR@ j& /͟px<̭jϱayyyyXȎxy٥ :@ D,1=Ǫ?FR.*-*J**ܸ1E/7(wHnn'QC@ _(Rw` Cdhy1C&d@(A08+6ӛd(1*#i֣mB pbe?N`M&~hmvYyŠCV#G3vsέ0qOT`gE_n;+%ӻW~^n9YRDwB+kѶ(l2E(rE7Vg &LiPbRřeB^{f HDCqV ({d* _Wxx8i<.HeRUHR޲kGqҪ5ms9^] 6miu55X:֋9|v(/g)5{C&@kkC0f֏[; $%B Ao™9Y=қր5m`<Yr$E!8 Bi^lIɌ"VŐj[i2j}X:>j~o)SZS lp`* Bl\x"yWV0-/мQUYuskA士"q/LMl`N:DkXξS9,S97ɧ3dL;bg =#_9_9zBo+ǝk bJDő8taT|HV8y V6|?q)ۊYk3C}g?yZ ,qjkgUݩ{+jkj˧v7Y {M UƃMh0O֎c'ThW@ -X]v{Tz:ż,Gz5Ayx|ZO3J#0-L#iOCxރAw^0L7j\nPYF#w;OpH\Eͷ5ok8Gν YD=XY|kcnH5k ב\sI>G:NIC4yH0=d71KC0 =RO..yAL\{p8c' _F~D.]7 hYռ& LaRҐ13DUW- <^QGm|&4x'LI0+C/e*{KۮmS.Su}պZCQj]ZFh3Zfh0FjclX? 0_2֠Af*F2#*i؁2oTN3?P9n`|(PV1@eH515DW& ,iu"6ƳDW_W] qJK+ڑV TZrUbt,FXEC*VI岀\]Z?;j7(/McR&| K2˪+r8gg+,g|JX9(1$Rᰋ󂟗y(Bc2 ˹B /:ڦ\yYj_{x=}y<N/!{"٧d$2H(2QOb@|+0\|-{TB;G`? bc J_GbrTkVր, G/˲175+=d{kvM;,Y@|ŭ,m]/PP ^4U=jLq*b)"٘X%ti&SkA]#3H)&TcS=d1WH6pi!0/|-s,e.}냭Ka/F؆zЈ Z|=ǡNX +a+"0.,ǡ>Rpp΁H X Ja얞^O r!Di?%^Yg&3ðvpmMwa[otT?>Xy\[rAҭSxk=! *o"b&11/y7V`ؕ<ux&L"dE6C \6B="ky+4ՅxII%`2!J{+VH*HJ#g`yl}Y߫}t»xLWU֭NaWFrI_RLf rC?ȋt2B$4ފL%/_lu--uޠ?7coe=U0k^ 7Xބs&|i$HWҝdR@FdEJr=#7[I4bk%"oɧsfjCLE:ut}>K5&}~FR,Hi`i4I/-VHIb2h9]Δ?Q,zw0h~Qن3 :Z^RTwo 8;H@'p< omR,w &\4D8odYNnrN.tB_#.r<3iK\n,_%z C|ֶ H ͂y~VB#l2h ^d;7g8Oe >V84#f HGH1yx$io2r*"R^"IPf4DIcCg&=opBFWI.gI˩L¹Ni'b v3x^!<\#I%v(J-#GZh* s # $C=yc9Mx -њ[U{ ''< -Sߟ_fK ERly]'NQbI f> t6b0n k$H Aت Qd"%R&K,)LT*(:KKīY ׎AIvLkl{obwzeK'vЛB#ٚ8ZZFK#C``F}6jఎƯ0ھc9 MwMY=jw:2t+y亥--[2T۟]ڥ-}Znղ e4Vsd6&4Ϩ7h`F0Jԭ_NĚڈaA& V]y-!C-[6.#&M)x=[^#qv`DULQV$0 &RRfZNy|&&7Оfþ6T]nb(@,#}aٰ ^ v^P>l'cz`X8# Ul#Ix{98(ͫLzw|2d9&=9)=cQvĤ'%' Lbc|ݺ#52MI;0`-Zr׮ar0%nL!Tt*FbX9BL1),HqKxq `]dppGZ\̺,#\W uԸ8T z姥}/?ŰWMȟ/)fk.Zv׵OP)nyX=y+lY1ǯ^mo߭7i/+5i"jj4x7.Şb=bCx-RN$7xA jZkz>B)ң0T #V[@v7Ʉ&[b ;HY;gza8 Լ\Pb} {b"^lsSohyÍ+ 3l%564+{\'no9|׶d?knkq(|Rs }mAacC %>%6166BStqKHNz<)$I͛>60.&%gL1j&.fc&|ɗϜ;h''/ޤ}b/6Jpkq)1y{GFP 'd[]stˍs8ؑq؅1 ?-lhٷi_ɴo}oo@:p[jBIs ײ^F[x-cG&MA_D ޫ4eubTZ Hr%8LtKXYK{$ɶm&N3>VN9~ uZY=rPmq^nR m:T qTKH9ƹ99QsbW8VVkw;^sq'nvqz-W  k;n36͒ (NĂƈ%%lYn֏6ؼ}"c%YQA5kfv[Ls;ڌ&oXѨ80Iqꥊp:iİkWf2S,XņJJ3xj]lLǓ@h#a[,f3l2fi PMN)>~bعkg*_mZ-DzEoYe9b,97u?cF\lX֛JBk$mgfqŻ*vcb F_ k`;L&/|Z3}+cM g &`׳uSqGh(kʈkm+ZٞxGHQQ5ι@sxTҺTidS(c7V2GǚW|?75K뾭OEnҎ+vpz&Z:Q:HV<=pt5#K=%u>͟M-oԕתǩh3LȁURt6rfpDir0D`2EiHYYI1}+qbۛtŲ S=x{M9$ Z5c_^Q ճ~apnW_Z?̸gͻ~bKdxUvqV}` s:cbZR]UlFNn{xx"p evӂϘ2c1QSsqRuRs.sNwR &R91"$ #7>he !/`7+*Ԫi_ }`:rᲰ_)Be4TGkٌѪ#su=CL{]cLtG%?;] z % 5DrIlu=˫LW]qͅ;-Wmo\@|M^W}fnZz[_ h~NA[¦\{IVQaFM7:”Vrez,n;WkH,ڳm8-FPI@["L)GdSmviZť>Vpk݁ 0g2,h0 gܷ;~_7`مW,ZcF/^'^nDozMQmWg@;ǻaqN:+m|kY$͝+e%]lk^\3LIզf0 *..I}vlv+P$ [ ^g>7CՄ܏srdD8N`IOVQKx=ZPİ9,@c:%qs8H^ g-`Vf{RdWRuC'cQ:5HʫU]T@AfqK)8C'M:U<ѝ/|b+X67/>[?_εO⋷ԙR-oRR AX=, py#AgAI3q™BX6a 4Imvs*-npI<` k>*om3`@OfAn 6:U좊e@;GJZY)zhĕU^!4T"eq/>PWqƌG}"m֮1iF4F|L9hDl. pP&*iQP}z]LyjT# #$ǙT*<ą^YC>?o %€[b(`54ϧ5yZJ/x o{:/F`SHNN%Zjʄ SB^5u,JgAJmlu_Aea_5lhanhl˲™{@'|l/WR7g-ƛSUǔ`îv_[mc2Yv+HS ktUܴkv˟Qu+y?#CQd- ) HUq?ߺ෿<<xi͸i?2Osj&RFn~ )ߐ_u8G^Waud'+ÄUaI> ;bZkTþ]0U|Ơ>Kփ'O]܇] {;cBޑAm̯D~GBgi&/IAEk>yӖ\ٿgK|;.c7\ҭw[ܲ}}o%O9P:'- FS쓒~=? jX6y5xz#C </Q[|¥yaOUޗ ̎)Z2JK&}$#MsfYi>MVPfSiz}t#uGNUP4<)=းLki꾶 WwM%joyWl]CW-*rQUxK?xؗL} 7i1qݾnt므ZˀΠ~a }4."@JW"$siH̤*~hI)Ób'} [U"%,KBVjnFU: @LUUij êX_YUիf DNt9yUhXZ+?0!;`cIDս7ƽP}x}~6]\;"߿ XcߺW^}[8[×)&vV#/?91HB|.#Z|=lv™ jdl0]7@7-YMAu?J\V}?LH2?:~2`yN[=etn3ƒsFg=sv y̲iV9٪!;3ߍUSzM W{yvGi/n9ʁ~ޗq_&[|7SQ >͠p-wa#V~ּY32*,f1si@cog ecpIB ל!4SfPi>%k(G!9#|nq%lOAvEvXd$=CvPs~IHyzk<ԡjXO;") IhE~GX8%p}m ^!TRտ*_u&'ԍu=+XTb|>!.4{9\eqG.ۚaIO5ÓxχMcϛSX9+oCC໭KC82L\/mV6X~1fB6?T tSJd-M&%[EEm5HVeHOa`x {UCE4]ڑRrjMNo)Ο ӟ|zS:7-~6r%[v+a=0~~lO(/vm67Yv]ېU9>|feKeA}Px,D*6b6ے<^ON U4;\^7{m4]F;YlLF&҄$/9Mv8Lv2aS޿`Fv۩N/;"o|Mm?u|dܧ)7_NN;F?a8K0b ]ґ #(ͦ:,r>=oX,wB<ɭ GH^ɵmߒQ;]x?nd=h>vb TT< MuDDIB0:,6l&bC)"$qMځ&F3 dloDrtd"w Uemb^{$~㥗FX/iNRR/* ˒^dGr]#}o`Kea%[*Q-7B,K@b}d~q[,̏LRxsf|sl=Nc3@S7;>Oz浩 zkC~w#96[5o3zU!ěi^Pa9w6iM w 4䙍7`guZ-N^=79V{Y%11TC J$9vTPj׼@[O,mWmq x}A== pF?³;~'I=Oڴ\mXvYﶕ/Peuc *燮:._Ϝ?q8?q8?`9?7_B|tr+'r"+'ǿr&[fp r!sOx/p (}!kfqF?F ]nYhBX/gR,l2`!+fV8f&G; ~$0#`6`Yl׀%4\1`G XAj9½OyƲ0S h1`hL )}"H XD Y{ V N:uXa:_uNOaSM k7CX5c-hW ̣T6h goahS>`k̀i v'Н@$a `?# rCY߻q 0<03 OS< c0mdP.xn@9rºuY[[2/!  CCQ @=uv8ZZU`ZC{+1 kz&- v:WA=s<gꍧ#JUCӊQL+Q54 Bp6sgaNt}Yoiek _f (/aك8w5m:hhFe@ 쾆;-B@t6ViesJdPO= T+w4Pd{EWb͵u@;xkm(^ ZlNgLĸg:ˡW7Gj`8 l< };N7:=VyS{ 5dib}J'Pӝo0}n4Q&;{9?Z? {DW7&hYV_qBYaatx%\uRc]5:ڳ z+V\4|6%Mh^vD;;ݭô1mm%-+HӰD[vdʶ6qTu$F +BSZ+:sz');+z;ZY^]u4gb\~ukmZsskcDhhmצ6tկ(ЦwG[+ۛ`z:Vjj+WD[КZWt&3 p'u 3]ic Vi(eюcu L$a[V6%ItBZdyN/Ggݛ꣑t>g⺀( tGSbF[aԦmMg^_z$:`((Wvw֚"(OKl ;Kˏԭ*hIYNK;Lvsg~:u3ޜ;9j" Z{COa~ _9(W'\{3ngB+3\@k8~k@8)`V8ڀpkOxlɓ D_q`M bro$9)`4g C\\.<9!?V#"v!N-",^%%. _9b|f{ğ\^`X8y:G,OBq(Q`]** Ҫ<JێA'2ت+5 A pp[pOJA'(~a?~^8!FW`t!cVWpu5l]̓Wx6ڲDY--=PUB>FT躌P7 qm %/FHCjnGغ.[* "5(˄51zL9Ղ"v4լ\jXP +Yy +w˖/C7!4$,5Z;}0{ qjr"r$"F?JF)J';WZ~A]^fkt=@92z~Am8 .ŗ8 6 ?$¸YDG^ܭz=^[|^W,?D A"l1~Ϭ`ųh>Bo5ӨY?~{ׯj6Q9jnȼ_4??TjF}k߭6Ƚ(oQxQ6jY\溇ֽVaWɋ-Hb~pԻulz uzݴK4j+MQx ؂8܀&!D#HYE6y<@z{srpN(+fg_n!Y\5 Op+qxxH$J dit9$owoȧ*@lj3}aaTs6!dɴ4YnbydMEk۬Zɶ<[mmbrNx/o'{ #&8c4o-hdJAz> _p^ǐ=3zHstqa{Cc1F/%p `I-4H4H34H4H34GVS)>t8am"z&sak:C fAcl,Z6cv={ =hᬡ8$FYq`BL, GQfEIYb s:~ Qk8 jٶl[`\pL3NOAo)_g Z7NNNN@`6'`'A8s̏`xs0 ]_e?L^<1a@11sp} b+ lZ:UvJ&,ΉWS!!΅<g̤Ř $@c@cHGQ{,`4ϬG6͸42GhI;R4ji*hFW* <\q 0\p\e &\se=( ^SpmB]zM.(Nc"[p%r7OPg}1{DIg EBӽhq в ؏6-G@+ Q~8y~ܯ uC 41HI]Ĵ| r1-ڪ3 vT @X'ލ+LjXAQoaXoÊaIa[~u姈t?>gVa5yq>ܜ=`[?8}˭79Yc3<󇆰e8kJeY "7r@3on@ phڀv';\‡͐Y[`r6jx騍-@ poEf[sHAW-H96xDљ#1ڧ͛k#zǭCF5؊E`2n?|~_Cp78@W [#s)([fԵtuoTO#^]~h3?k|=ŊffO9I /gȏ-fj"VH`+dlX}5ii;v#u8q0j}:`WƔ[VOX18^;cϢ–lG=jOj]Z>fs?=jjhUM#r݊K@O7zQ[iJ`:g57q,Х!j~yXh\YO J]teBOZ^v& A܌]t)|IND'{@CqP#%"}{F gr )US۲ݸQ$鲿=ɐo7dd~/=&GA6œn **Qrq$ ~Jm7Rv=.n) =-;\^kI9Wpd׀}][{\榑kxg섞=#&mzH;.}vJ]! iKRt pmvZmUDP4@+p @(YIlSAD!t + ZTz[?Rp/.Ԁ!Ҟy p8 N2TnGP_! #0 WE\4Ig_gui aRHQr3|u/}}}Ϋ Ԍ*W"uu^W'Y0_+7wx*k}GjG|Fg~w-yܜ8!p/$a|yZ|sy)r^}B6 |n{eE^3%A2kanD6W+C]51W`AfwF~}[@o=*)Vg\e+nuU. ,wA@6 bM>"]fݮ1Z,b-rM g[Yhr _}B?iHγ&]PhBI ]hqԻV k[.LYkrĜNœ.rZ*̉j!dMb5)ۚǚEz$Z)Bw (VVg6\\6\!akYܙ;V;Goqo zl=%,[ 0/'}fŚ.Ƹg1k3n}@n* $Y 2[;+nc pW5w j{$hШ*P:ß2y0wn sn) ; @UNi> db9E!a޺l>q >,},P-(]FOO}m}VFlK-=gKw9, 0ŠmD+`-tV4MIinJc.x[~hSќ'Fv*!vCȰUa5uAs 6=5x:lV>c/ ԃbvн8`;m. ,dHb-]t`r? aE Iڲ\0i) hCm/G2'˴>t :0o\aÞavԓj;61ǬAk;m8io{{U9ÓiOzQ*p{Hȶ97) ]ۀBy?_!izCGoًO~ =P? { >wPM`V͊yU_Ǹ/h)WbE`^mo ǐ۷-Xc=:6ıcZo;X!JOZy!j}hm@lK{(u|c)ܾ! }wat?kHH.:(|sБA=O*53DFQ:c>aO6.Wi{/lN=f] F;=e]#8vXxg5VO;gŠzdH) Yg SGXc;ѹ;WV鐜ҡ$J1 =)4J'L.<1QZeӓ asD(;ڎ;б;mM-Ҩg ' ѝҁ%n]&L'eVh|hΆ;/8\BC>Ep ZwЈ!؂ރTΝ +igZ39}7B ,th1|FvnsUI3"CϜJm%'6|:gUvJuŜUiY["No+i-u%;+|OR|Ϻy']YB6:nG-9 $]j&Iު$]bI3%~>Nw}t2њ fӮf[՟ӻl Mvy(3~ 'u^;?7o]{,qO~+]d q+ ղ:۲k&YN|g c\|O&Wk4z­ @6nHx7qlP}Kq2,;X6םۍFwr㉍lQƱƟo9'9"]ڑ'!rulu2Ioo [riJ߲+Wru|_`S,?\~x/_Ey|&ҝ?(T鹑3&77?2fH5bHSah1cvFƋ$W__ik_v1 Ͽ!߿$HFߓOj? fE}R'oI}Mn#엟 /JVΡj\` sâa&&fJ*KwK ҆҃HROipO.= (.nnn ]=app%oLZc-/RoH{!bEnOO"K~J|J<"3s(UٜlSd2䚞3P:ը̉wySּ՗3j*٬^uR;DWs#i=KAyI4-sNK:tMBYŮK(Mǣ"CnCio=eƂ01ڈ\TzGk:ah~.$٨h?ʳcJƎCC1[&ٱM,uTk=沈m%޴etgK46MS*%\T~ %ݤ򢹱fR3bn[#g.A*UQQ}$QynR-dK~N1fX3TDI(-Xp]li3nvL})4K^^vqb/+{WzkkSjN_UFe2Zhߏ)sfhb>g=k⺼o澚3eFͲf|1#̓IhCǖֹا6<|emynT&i咴L!rd\aY:5 &x;ǰ)bOyuȜZM-#*q^*c}*6^%F&e,H1,2ߢl%%Yoe-0kF}Ƽ\[o^YKgcPd=W%햔Z>$XrjY=f)KkOXkOG=g-zVѠ~{REe:R YjX˖h{^4^ai-9P`9Th9Rd9Vrbz{DᗕO~~:" iHk>;ʗh;YlY-M-|/k|9Mn:b)'11iM2yb3^dWcx]Js"벰xC3,Z[`" 't]B>\'Ka:N{ci utp]VdӵuG_4?hݶuEu50&FItntOD?ɺš:uMneu5ں}5:f]M75f[gchJZY;u)>?1~#d'~{=G0id'>{r=A[>Ps;`E~Ş-{.s \$n;}.>MDO.>=ȿH*? ,Ϩ$U* yJQڮڥ*PϪbTUФ'7!Px !1Չ1)Yyեq&gXegG $ ߰lÌH'NHab r'$Dw DOWԓ(}'H(, k>K5蝹1-ڪjTЯ T @m;đ<$9EMI>Q|BHHҫ)T!Fw 黤lՓ4 B "eL"eA[䛲MMd+%x ƩJ JFJJƋ:J&J̖̖̗̔L/y<.YFr>)YQIꔒYuZ>Qg:9]uZ65z$D]JݮKKծqu#I}dJPr_ӬiT4۴c%#zZRGΡ.txDnHwYwEwI!$A7)ƌ{kۺ+j|+buN#~Ŭ[-tOaA zO=m೅))oiGTX;oc9iک|?oI;}}]F ,xL'%RV`]Lu.GuzIQQ?I4{ j<{tUYntt:^* %CmԳ @ kF5W55T0pGsWs#^+ZqZQ[GMnnf[n9+H^2Uj*d^maVs][?T0VSh-F4W-hE6m֡u inj=^m48M3ʄfr~i/3u٢DmT ]wDwL}DOW$!CٍhKƼ:GMf55$}WP_-CћPנW]^3}vE7 z [6}sHq4Ҹi< GJ!ϼ( ?;6³ggDEdfeRB*B*;n,CuHHFOقԦl|seC_9QR)ɸ,St'ԧF.5'^#o,bǟtV-cJYp.JvʥRk(F_deXna:fiq>2Zюu6Q(k\Kv-c\u{Yc({<􆗏2ĖϢA_-6>$pKKkWd*׬ric4tCT(_7Gi 4DxVm pxkbsN5yAe6cok}_E`P f$2v%[^-z 1`gMq}8,D?,K0NRt (@! @Oaf yX,E%z)Yy%KCQrZn+ E|||МajgX{ }w&+v"RQ)7}'[ľ)ƾ)}M2}GRfϾY}/})});dTYQ0;FغƎq(d/bvX8;\bJaѸ6moiYMKMn¾(h<{; h:~h&r}34}4}4} t;O322@W (svEV8եQt(z [m=C[j}hӭʣm!BKaYCb:8F~},E`PӫpƤ#[8+;'r?#Yo$'FORrt U"_%xe>hrg~AhW[l ק^rx-Wrr(Rpg.l2x7ps?jkqC>>dC ȴId"_K5K;"`jk!*gaA9o-4m02*ۙ=^ESf@E{f&T2GBMی+dNnJq,sFq*N6,m{_qSFcťePHS<`<\qEE"QLK|sLFUR,0( KL6@Q ^T6&)Q09"d*BXTUgLno(.SL?EQCi#yW&Ȳ p ?J8I/qWUϓ \P/D$5|^Ȕ !'"">23%dfjjꘑ'c>HQ#|JD#GMxfM39=kk>^5\l+\!*Cg5׉*x+Z{4[}*탬=,k'ʨXywΩ'\ 'D8!qƅx:SI%؉Ϥl$~88hrf|4mI'9(Klm$'Y\ٓBZ8{t~jҹֹ2g?Qi;G'?ǜ|HU/yJz9! 3iϡmO9fBZS/$~K۩ǹll!JuwluȹGI}SGcVͷ̷h5 Xh.k."tm"k࿔ޙrA|'?]ŋ,]=Pyf )AۡhEƆy/0u{ ޗZK##nՋ&d"+X}PD%Sj$x ~&, XR`I% lwdh7,!rTǩV,2<2Uƴ^DK׋bK^< VҼtkL+XczW5dL7cb\C0?X@gp;vj-П00v?tF[``8ΉQQ1rXZ{<*aKmh?Xs_ww+͕5́?x1ֻZ;.ss,^hcLrԫ=ӑsR9,{,I;UZ=>"@0:3_'sɿlsKޱɱ<߱pqdSK]'۴Xbl5XO:lmhٹNel{1j^2p_lp V^(%FI)IC:iI`1λ'Q0A%*c ?RuiPWCCZuUR<5bE"(6MCV(V"ԣQQE-T EUH-blUR)@qZ?@+47x?&pٕJ|n%>w%L u߶ YJgeɪ*d6ş'+4ҕd↨dep}s}bQJgA|VdHY[ikU '+ɜw_TܿJTs+EJ}[:*՝Wɦ7js_jkܛ:|ȿu# Z xEiϣ}`_w&=M|o|^^te>ev_m7_G{UB__@_>C_n]h[g>~1Wfu3(%+gk?z;a'YGޯ~[Um/:؊ȇRE5 []΋x#NZh+sH>)7YEؖeɲCmSY1lG[ww=:ok,gkM{"iO;h@;m^i/o"_`E2my$<[afl-ll86#Iu6- )rjoEZǶ`.jZ:FY|ܪ&!"NCX_qV玹&?1B;y%P ,2Q &\{<@P0˕ Cy]TtuNKV,wԣ'y\P/(=pKI5w~^sP |Q  `#c?؍Q¥^53Xކ FWvFq6?〓%r:Po~D 0^$+LdtửMk *m,˜+!(]ƥj*QO_ tTҢR^~8,yT \>gJ?+x7ִ Zђ~(RHwC.^|J[q{ҍpEO$.:xXgz\]>EK %2!(!`̵(= v0֫|0Pk_qRZgVTˠ_n,vb} 7&` b:B'H"h~an(@g :=?gS+q0ѫ=~40m:Q:5sF͙K>A߲ZOjkxȫLG*>EY7upK8Sf ZyXKfj*nlyU6W2k`!߲_*X|^MD Wi fo2pzn0NcTs)&OwX?:YrHld%I#-e2LNNOiӝEtF>`nzZRAg pJA ` "s2 ܔdQ -f`] 䈉PH! U䳤p3J|(3̽~d<-hx5:m29p>p0 ~;Ǩ FEjH@]7ZяCLX`s&*41jFw~Inj@;W@< m!bIRH; LHRx` hG)|S'2PZ~rl( .b5|FCt%uñH_| G[-8dN=RwA>|:8V4z`l遙]N.83-.dhdhdhhdh\ȊѸqFdHl p5Qk~S~`s$ )6-P&Z/k,s*:$ہKQw2p t.@ ~;a oj3}( A'C_[O'JנEcԂ(=yW G>oXQCL^@)F46ԪC}`2+M@\@o5y{V=exo2$!yv=Z:,FqxpZ6g`s7JAR~y!27as.)P;/3^*ep찎=a3NWv㤟,ѓdLX"nA 6!=Z ;\5J׀}?"h4ޠVƜ-\ @)!Yv+ OCTPj`[鼂]m;:Nqצ_h+|[è[x ;?A~܅Dިf9GMD/%d، h&2]W~?CJF i๰mF{BȏF6?UXy-Aߵ1͍+kV52QMC+Ck/fȻ@a?ĪOM֙<#pE`#^?"$< b͟%3zy <ƒd3r2黋aG^w+1W?P@?؀8W3`PdP^_PWh?S6r`pz7G!Gf6QHށRDf2 ($97~&~ sLg[-^EȺ!砓H:̃mOYe,2>ʨ-5`x]ɐp^:}F ק35ZeHo!ֱ~t3,ґ9uX~)۰96C6x*bjygL m7}+kqycw : E`,:hWXc\:'h"bF6{7|z9JCnv]\kNHOBNWa4x@k`LA]qdj54gCr<:qw1c,/5bݭ ƥ.j]P[hwOl ;a_ޭ6R"@*Lf{Vf`TN3y*5MCΫx\̟9%x=D7Eb3RB*zK^뫈W /58 ؃Q +9?~wKN O,}Z$*UW3k4`g Z{_eMuH-#Ӂ ?ʨ@d`$s ? `[J|ϫtk,iXV,QC'T>e7?`,߂v׍J4hZ֒]A:l3j^gwm>GF9 wVq Q+6` p7< V(t"~1wA^ |",Odd(t#^xo@ Ȑ TvrtHA'1Zw0B3 ag 1QK|IM^#-yDMbTB`-8ͨUGiC0lAJFL"$qn׈IK9ϥ?>3 4|vWtnx}:[ W P#~V <m,Zh^`<Ʈ+z!u18xs4Li_sFz~g4fn鳜x?1jz_32g~:d.BB.R^0p-)sT̊yd>x-'T4 5C 3wsxGD0PK/a?C׫Yx?wF?M}_L3u)\iEK_nL]TŸJRJbUL8wX1Ii }Ni'?[ #"Dh!DHeB~<-u *^%J^"}Ou^jzZD8N&cŤRK8Zu})Ɖl#f"Wyb!8%JEQ.nS"F+%KhE+8etFQMpȈ2"EDdD2"F $#b<(#bˈYqZ ADBԴ"fEa+"'/bFG[kEH+" 1"QV\Xq"ԊH3+"ͭXED⬈]<=5Yqy֊K笸tq#rVD^"ӊȋVDzY鍈"׊H?+" "2dEd!VDZI"2 I"2܊H֌ɴ"33&ˊ(+2Ȍoc9t't~N.\QzgQɘ{X]`9$cc ,V{l:"Rx$ne,1Ax􊧥 ^4$OKٞ^ے b/M 2޲dGS<Mx4Qǣ=MxǣYf{D'mk"uQE()j [ u ,y;4qƖw?2&huAkQbJ2m'k+tE^Tʮn05q/57$zJe_i4`Cz> Mg7W=WD%siD'-yD7bHOK\W2op F+?S77ؕrekIOj':{u!JFㆮU 2VoƱ: 9|YaÖlrJ/;kjrtn*zm㢛4m7&ךKl3ʷmФ> ;KkTej髣Nپ-_([7\\!,׫!F7\-q3 |e4ҥxy ï1kijݬ>zgMܱO/?O?Fm6o‡ }:Bʥ#׾u*v lv8gC;?tlg?mͪHBoZoħ1o{} oO|bU}״r/W>G>86l1K?zѾ}MR=z:9/-Ͷ/}#>}k6t=8%,Я'{Ω7xڮ3?֙)nj1- TyUs‰<** 5/a;t|W]{^M.CIq$񏞋y{g!m[79r;&7^Komg_У퇗z>3?vS?!sB嚠{>ضfT΃秽ᣗ|A7tSΛӦ֯(oQ +|3TڙCMmiurfWFgM8_Y{a^tY`N\9i]JInlxGWGs."g|=Nmj>8BT 7n-Xk/8ܻc#=L{~5Rz&"oփ\'>jꏻs6m:ɠFfE;}k1t0Ked7oFOvI"W]Eos=wS#,cƌGgV ٧ښՆ]-{[ߪ?z7v+XL*?Z2\G/ݢO̾PLœ~3^Nd=NbvuȭVޚ<Œvh:N;QKk K{s3SSporC}u9g76Z3nL!wkԼZ \≑QBQ'ӀįBB>"tau'Nz ~{Y1;Qy}])_<65S \Y4ݜSO,:){X]h}ۏw e[kFD}蔼K-|߮zg+yO]gt_WeUض}γVZftܔ\w??xz&)_p?{@Y~6U-aY2jl]eQ,/a=s\$+9KΚss>/^_")hޥf?m {-~ny:[i|_ʊ͎MZt& 6?D8DN q&j}ِQ"*J`,DAM2&yI&9.`R`/ę%ьR@M4}Q ]i~ZبX:q}?ie7XK79]sr˥)Db{>>|}FWz(-%%%-D`&`/QlVm-5]rE>ˎso>k_x\kM{kcLOvI!ի N|sf_wjuQy Ynnp{UEѭsD,Qmuk/[ȲM>l?%g FOrrs>%a5.eSO+uaF9GXesf|X/xSG}gN(<{MHs7[OϞݱձvԑ)}1vb6y>w' LP.,Ě6ז@?sW6~i{Rrvw}/uw2zuf]3Ήľ{1ee?\]Cߊ9fS"\i_ %]c. endstream endobj 10904 0 obj [ 0[ 750] 3[ 278] 11[ 333 333] 15[ 278] 17[ 278] 37[ 667] 39[ 722] 42[ 778] 44[ 278] 55[ 611] 68[ 556 556 500 556 556 278 556 556 222] 78[ 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500] 180[ 333] ] endobj 10905 0 obj [ 278 0 0 0 0 0 0 0 333 333 0 0 278 0 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 722 0 0 778 0 278 0 0 0 0 0 0 0 0 0 0 611 0 0 0 0 0 0 0 0 0 0 0 0 556 556 500 556 556 278 556 556 222 0 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500] endobj 10906 0 obj [ 250 0 0 0 0 0 0 180 333 333 0 0 250 0 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 0 0 0 0 333 0 0 611 0 0 0 0 0 0 0 611 0 0 0 0 0 0 0 0 0 0 0 0 444 500 444 500 444 333 500 500 278 0 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500] endobj 10907 0 obj <> stream x]Mj0 >LJ(SM{VRD6+a  gsܑO9VNԩmڻrD%TӀqIɅ~ci׹_c⌔Rm Gb⫙tݧ(̟suOalpDc MJ"*$Oߩa߆}P3w eWfSvPb&o( endstream endobj 10908 0 obj <> stream xxל='=$!CZzMB'tiKAA#""+ vAPQJwɽ{ʬYgϜȢ’n\AkgqQߴE'K:E]Xu;C݇.4,{}l}QodX_ݳWIV%6ľaSJ:<xٳ;]eX3oS^_{)8]KgNKa}sq8 n6al#s'c{ {P3'L50?F&tN;R:gzB`j锱Y]L+O6sVG3NΕW~ivxs}o6pxuwDe~sG*> ؇5}*݂*L9=S[=wU@u xA7Sdy].qy%*&r4%ʮ?nJ xFf V|3aӫH*%W?we%AAA7Q[AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnp{?ǀz>m*b!z`~FqE*NT|Sidc>*2}Un.㖎Ζc4Un иrs-qr7~y~rt`r+{;3B#Er0'I/^'اQD;IqNTw~t2d'qNbPIa\K'1s d"N2 $]n&mVm%jV zm3IPAkܬz6m*-;җRí?9+rĈqU}U~\9Ve>R2*:g~ޫ#3Ve-oƊSaz9؏7_^S=^cgA|nZwVmgmtsu6Gˊxx{nM-hW=5%9ʗިa6۵vR26lI{xB,f%?j5$ua)OVm|au=M?nt>h?eoź׭IsyeI՗(6:.:%:5NtVVAĄ̌(ýzVV۷NHc%w"nkeDe4Hpܦն^WǶ=M+WepâE>v35˖=xoůY J H 4 d|QY%q+_N: 2fxPe=جi5kba=ZqÌ(_Jr֭_WV\C,.bRc(Ϣ|vkp5[NvfL\1}ds3\7\4(=%&'jZqlPW*:Ksm۠u>vJRlKrykb3KtF]?a_;f[HFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [/Ġwq?*c ` N9r,{"jfsb$Y=8 85?k[෶8 <+Ӊ=5O?lj;cӦ6i +4V0Jan/Hl]a4lmc0 ~.L0kG^"<+[(A^xN(\ S cKq}7dz0Gc(3u M i8nFc49 vMl'u[xZYo;9W6D8{N}L?Y}.ٛ$qccuqd}̹8gob<ř~Uz &Ro"%8{1>!ԯR6wUMǑgMG>)I{'>l7IuꓓM*gMgL\>%/Rک?m*Xzz E3^n6rjm9JO}g!_^AlDG߇Zظ(ڸVkŰ/jW !A; ֊@?$I֊jqk$!Z}RZKצ]-޳\ ]xg>܊UO=%(룠WmM\n%2sJduB2]; ŭpf7mom_]ݖei8!P sqī1Δ8;ǽ&^pSIGVޔ(02T`pMHv&J pYPVH` P0]϶Z G-C[._?YU%&6'Z0pH9QqDfzBY]pek!}s~8[.O)}ɤ#eeWǂwD@0qI EM[hA.*wp'N'N-YS@ESež0ٻ"R:c4>,[Aon ^^-K =-[R,Ȗ`Ԃe(dͺÊY128-$Ϻnzz^>PHfYHa HeCHcCPPc .fC}6Mt6M 6]zvtb7 [ƖA.y.v?l {${=ak{=ZzcГ=^l#flevvПd{ W+0a{`8{ #;[ɾc`6 sX&P`ڹV'n\Ck$8<ㅮsr=ڀ\[\;|rzٗM핮7pε1M|=Vs4Gw\]nvҕ8ww; ڹG'-ݳL帕a?Kܷۋ3F̛3obͼ3&̛3oͼI2󦚙7fޤyjMu3ojyS̛Zf7&̛ 3o2ͼi`Mg3orͼ3&̛"3o7̛nft7󦇙7=ͼeMo3oy̛3oy3̛f 3f7#̼iM7y3Q ~]xnsH>Cdbm2$~; ~+n25Ӛf25O0>tH6ʱ*+IcLIfʱ0Sqh$zf&N24v4|&Ĝо)̧T7z*?c1뱚LMicT%}Ίs#A;ޜi͡]׭*?:Y l'v~ 7sČ=e:({?ẃQO0~f1 .7E/1'S'>KZ|#oA8$qT ~?cgq\"~'I8%~8+Ή Ғ.>7[e2N(d5,Sd.d YS֒eYW֓Y_ )Ȇl,,Tffl!sdKJmd[NdGIv]d̓@"Ue I.Rn!{^#O@9HCEr&r,h9Fx9A^,'Ir"irDΐ3,y-/s\yBΓ*Y& 5rV.zyQ.7ɥfy\&oNy\.{}~\!W*\-ȇ#QVqA>!FIn[VM>)˧).|A(_|M7-|G+H~,?>/_ʯy@~+!yX~/ȣI?uz@P+ՃjzHVkZ֩zڠPjڤ6-jڦTSjzZTϨgsjz^^T/ezUMz[U{{}P}>VOgj\W_/Wk:Uw:WGQQqUP'o]N3;k;]xb=q} D_/e}|9־6ξ.|_/>뻈Y4KdIKf),Ugij:.>Kg,5` Y#֘eO{֑ufrˮ`  U?3^|}>a_g#;~a$b?iveX eMf{f?iowO;gg] KneU5{~~gn﷿Ca{}>flO'Si}>gWo]~}+s]P5>huϫW7a^y]7,onyW˛we VGsEZUĊ*Qtή >|3V? ~*u? #xГBφ =z!bˡWB^z3nhoB> }$iо/B_ }&t m`СБC?~5t"t2[Tӡ3s .>6hcy <'j<<5y-^uy=y: xCބg<7-xo[ּ o;μ y<B^Ļ /!ι+ލw=xOދ}x_^||p>||'D>OST>O|&/e|/Wy|>_|/| _oeV~wn~/e M{{+5;~#(s# "Nċ(D5,RD.j:'H"S4 E#X4YDsB䈖h-ڈh/:N"rEP"(EHp!JtESEW~ Ab".C AKX}1lku`mZG]>WU (\vzvr ]]p,Rr*zwܟy' L,dzڳ}A)ߛm]]ӻһλU^>A).|||s|7mm{÷www&*.*-*+KTϨQ3F-Z*j}Զ]Q{ޏ:u 冀Ysցl&YJֳgq5;N̮igyvo{=ƞj7طp~ow=j)qpY{syL>u'd6GdֈLl4fm[m:׫(w%b-EeiX%hZ4-L*2J0-)EkQFw8hp8( 3*lY5Vfƛ̄Db2S#2M撰[£rM0uS\eiVeiyشLҲڴ?_1Z'Su0.&]D&dEd LpDd  G"b\eꏄ뻇z%hD@C&3""Sj2"2cLflDfLL4IQ k[ Gђps7"bʏu0dVDd|V+#2f>#2f>UѾ>@G+W _S895s2b1*b+3Uy*h ꡈZLkYik2Gdڛ#:Gr#7 U]QqDjm^E٭E1Y 0&3$"3dEdFw1;Q4FY[={cg>X' X>fݽ߼6c̻X>μ7̻D>ɼAkݧwl4 ͻ4yw_ӼefrgC]󦾞yS0o7M}ySi7`ǡy_ȼol7a62뛚y<43뛛-%V'U>KCA͂б^A:- ] oSn[k!ׅA ?B\~E:  [(5w k# pH\/ W?C7\1 qxz U*]W^ }q %k pj# ^g+\k|B뾮pa(8 ՟#pj~1M]q R[-z K/ <秨QE寨mLq:L}0y}1(1Ąф]3d9wOsO'2NP+S`d܈zAhM25b,ayZeDg+d!6Ŧ{KaWlk |Cy(<G;p;i^ċ=/%8ePY88a2+y%~U x5ϼ?@^1^>GRP(BcE"IEKHMhZJ1Xxґ( Dd$LBFf)2FvrP9IlrD9KMRr*B *b*J~"ZCkz@eTNTIiUfBմQ mjꩁvQ3=Zڨ:h?uRny="*ʃUJ^Tq(> ԕJ{ս46,ԜӜC1"4/5/HZQNDFP `I` vm;4 AtP;w8]. ] t[[uHнӽCbBDB .#ɠ2ll0DPapp) H5fIH (c ҍe2dOO!SHaL v, Bd B)E"Dp M&\&A2]1]ANݔM6[1~xaGͣȷ-n,Ee2Bˬe>ª ʪBUoգZeBڇ ?Vetet̺:6ovd?f?5XkfRҡ:G#CLjceY,%ʝ|T8ètqFg&QnFlnlb꺊mqtvt͸fPu͢NRH KZI)^G%eIrI.쒆!4K؝33=؛{=:Z܉D!YtO=>{~O'>O{z;Aw;y<5|y>|4lLJ 8B^W~R!|'6[K+z{an7:֠<twG >ٓPj?ςy:rs( P̡+sǵ?I endstream endobj 10909 0 obj [ 0[ 1000] 850[ 500] ] endobj 10910 0 obj [ 310] endobj 10911 0 obj <> stream x\ tg#}l$dIM `0 SKxj=ZjO#G[0ENhmE@=5? eu5g{}̟{3X1cYt=$-/x`n_ni_:WVeU ^KMCXhjQF*U ֢~_KWkǻu(=.H-{ eSk{OKέ}`!@6wló:?aGerk0p(P÷)cߓp@gyy8;׸_>`ýgX/wwx9\s{:} '_zum^y_oylزO ϟG^q)m߀"ԗgaۋqBn:l@eLl6bA,xшgVXF34M34!}@?Br%|{ Oc)NsZl?t(]-fh&v8;v_TPMA4S|e:.(de>Op$zEb07E+K_B*ؤ/ sȀ,3 v̳a)\<sp4}X ˥ppO 9lļ6IgMz~wc w}a+ϗG1ǤWxA:!؏qx^/pZ: -_K|,g8FqZ*װ@ӄi(L? -A\LaRTD+tZ.*\^`"zeZ \_1c`.9qvl? cLL/Qؘ˲jlLF]aTؘp0cbi]? IEp-MʴVsaVcSVR]B54MҪLomؘHJ0bl<@SB2}hEj x^;4%$)KVR̠F)ʴ)LRcc@YAӍpU 6e&EOE"#=cCLWؘp,$^o]^s 2}VdgDt|T{2Č] ve:|?ъ40cy\e:|?ъG:Lq*LIS(q `6y2}hŬ,X+(R0)*e9?4%)KVU: 11)cTISXR[))WnQLISh\2l68ДD_DOEyeL$]^s +aRTD1A ' %,QQΈڪD y߁ ƽx1eh$<3tn438!4]jEF$HBA9K$PN`|5_|Z~VNqp0;` y|#t,tJ8>܎DKMvй34P9f{6kj)pZnq6ԛ9 XFAw- -v݉w$ P<K3?xrh:NrZ sF $uq^.}>=µ.%1fAa+>Oק?C!rH{HwHo㸬L{qQIaA”,s!W](SVK3~ԫئMC 8]yv@ۉ@T NI;L:XgE"M tdŦ&HNХ#GR07|/]Im*fAk:`bt/{{(ZC2S|t!]BJbv_EIS/n{{`<>=wiQQQ6{ }f&̅:4C?kO٣3 #h)eRm.ĚUl2" Oy_  '7쓃?{zc7ŷnuSP7#63ltk <$PY:Sh-Cf -Tհ1߇VWY,f-`GFi(yLf9d]ؘmJ'O-=/~~bG~ҏ/ΪIMj'+e ?C sw>]Bw>_X;/ ȹ2RPH$x,TpRUɘ}I Mٚ/o {b>CeRm2 F\L Tf.aIO 9077Pt"Y+TvvxZ饥XhuwG~ndӄjOgm[#Lڵsl,+j7ގ @.^J./A+rӡ4PR'#W>\NPn| $7хG+F*ZR5jwC^h;(> stream x\kpו>owOS3Ҡ14=z-/ cH`$4;pBqW!Cʼn׫$lV,հ:!x+q~B8%wtk LhSn{={@f,{6_ϧ+L'7ytI2RVlX2'7ҭ:zsc)ʔ̯ cH?5@T/轄~t800=zb/wG( vſW(߁ {(5;F{˞bA 8G Q:|u4712֋܃a|tG@GB_:m">Jۑg0S9+"M\O_z׍Aa*¶^vtVs(ʀQilY3|ʡ @O$ܝgʘyaX#[]WM{і)9aaSzW^{= Ccדp[+P͎қc^QbI8H_æ~,_ K s#07Y` 9!WP('JP 嘗(PU7Che:j[kGOb}, }o`;a&DA Oc 3 ޑg?w }߇˄\A9J C7Ajl($6m6Bqd3 6O2#[a6n,y&m,jl=6R!zlZ`YUX٩AV>H]q jlL`fqn3eiN S/C:=6tAncOsmvEyv3|&afS !يV%6vj!W}c6@`U8٩ۗ !ي;1͡ ٩ː !ي"i-PͶPiuJKh4٘jD `ґ,ud 6J٩#[QSa_BD`ґ0?XBq`qMX,4Zfn_긕и֜4ZX.N7lgI9lk,f.Q3td+ZEhfPy%YO4WÑ@K l1`ґXնѦͮM2td+} _X9 6{q U-Vz KlLf.C2td+]%%毱V =ґ-n\eeb56jP%:w-/"%R-rqu.rхu8xl-Vm`k]\.ZU1ZNvZQ*Mb<9'S!y^K0Ktz.A}m8w{l>6*Spx )2׸Ss ^` E{8>kqx¸zt> ;"s`?7{n֝tV:*X2NKt`{_6i 9fivE^N=i}Sls_X| kH/RXe|U7M5t;L~0 3aS83qSw8`WW-K=ڱzzjj\P62S*xL( 0ʬWVzuⵠz-(QMD0^PzS'7BW 5j`PCxLA[34xkS-o2CL m异M:5^Ig0c^`H^6ȸ #@e55ZmdcR? ,ss'}Oe?y3/Ӌ_f츅ƅOA `Yǃ^_t9\/֚[-ttZcoP^l29MP7R-*~35k#U%;za0GTNG^ (QkFZ #'߫m`}jV[x*=׺?GyԤ~f;/+A>z6_kWx׹s*g* endstream endobj 10914 0 obj <> stream xSn0>!N$p#qC=U9HX I)ĒF;k3vҔW_e2PYBB$}-EEź/sa٪8;)/+ m'h.> stream x] xTU>ZSU%%yYj^!Je+$B ,IT BpWqADQmm^5ڶqnQҠQ̹"mό3_?ss=K|U5͗vRcix؆5! mC䆙]Pdn`gͮzp.5WL^\7_|b,Gֻ8k{E'7k:/1^lUK.z+e%nP6/X d`FK_XѿM` ?닻Ѡ{*}-?u_sû4ؗ.Z$yh+;;^ n,U=󊎋 `V\3P?~֯Zݵjy/m*؊?5DBspYHtGx ,ʁa?Π4S{ #A2jfB3%48HK'7dbIXLYH2UAXdfxKID#f Ϧ+V\ :$`?+J$ZK#:T[䞶*h;f}E)JQbgGq(>ǏRt$ XR(E)JQR(E$qǢꢵT_),eDxθl?UAQR(E)JQR(Eo>x ?!oչ6Q 􊓡Gp{!c(E)J7n\b`7+y(E)JQR(E)JQRfbaDƏG(E)JQR(E)JQRiH`a_&Њ;e H"ﮥ5w+dPK`9հ۪vF7me,ly[ƾTدqXDž=0w%,-f]ͮQTMS5@,Z@0H05+kk7W֥\XWs`]Õ5u36n"Xo&u; ws`}뛜r<\%qUsW 9yAC\-7rpu !?Sm*CN|4P aUࡿGxӃ[+;)Jj&UstwpF[:* aЈYB  df"ʇNl'Le!,G? K y< +à: @T(BP5yK'z m@%޹] k2iS&TWUz+<&KK ]|Gބ\{NvVfFzj1$'q &AjԱ*"F.J"!KLŷOn當+gAYlZ:!܊yZ[K6O-y:gtMYM-5n- 39sjknB)<4P SF("ojS"9y3x7g_P]C|?(AO,<|Ѡ&ʓ8解gOA-=O |e6)F~:'C@Sօt=_SmAQEA 8Ī~,'(}0|:ꮏb܎5qkdžY-Ņ0/ΆU-qoSx7wEBױ%W~aBp(˨:2}́]RK|5PЎ0{mu|'ą¦bc .vXqz&8;Ayo YQ6̥hM{Mk%ؔo:4k,OcЄ_ 'g[FL fb6Q,[}c( #9tǦ¨&n8kն6sm=18ֻfJe`,6s|V^M& ;D3ܫmV՚;BGRYmZuag.9)v̵5ȢC[Lt +0<+pp5ݷtV8Xw`c؊X,ڰƆB:]z \qP|,C3Dxr3w5•ʝi;^C@t6)<ڳsmBwM^L[Z'(\NKsK8J\DѹХ]?H|?Y&ji|!o>tdB]#ʓܙźsD>F귑M^iܖe2? ZW2J`'8#sBH0AMdB6MƠMy[gp@{+ 6B m+Fcl]UVE^K]jaG=np p0M&<8670޼^>j,&Sy2Aiһ|Jg+/L8<<Чvd *pv:iR:ٌCu$#48Nh lDǤoBыPpXZCA*NVu1"蜅(ʠ1\҅OuQF.\ P< "Oikky1 (P;`tj ?7tAh]g:-$j^>/PZl8L01YtJᅶyplr4!׆O;Z68eZU9!/j\RٷsL0J2tl.N8f|Xn"S̓䫈2Q((_DDDsD(#O^Dy7QE啈rDy)Q(HDQn([#J l(#ʆQFֈQ#JCDQ#ԈRQ##L(EQE?I #/ -!~D Y3ZO |HOW? ~#*E |W(5Z( J౔+;Ep *3 +7!EGP1bPލ}wjCf@}TLde-3뙫@ |vٙ ~)DK v j3ŬznE~-d.X?(Y7P23cDL/JJǕay93GYL#\׆嚰\n׃{Hd Hٕ X&rf>Y!ldY(g03<31|z+ b.,?(cB h'ԅGZr)xND;b>1QxU3Z(;X.cJ= "0^ntu%l/Qv ܕ (=,s> \ĸRmT1aJt a{iXeQXò0a{vXf1\Br $"?IMQ0JFRșasd߈ps9 #n 7Lj#zHHƑRQ&HI(mɈD@CftedFX!h찼%A^ŻN^Q2r,,y%m|€< 8aÿM5;~C1jꁡ[Ę1&%9.bO kǠr۰5BmUƠ`&R 4<6MNq{?8sG>/P۱޸8nG~N}-"5{tz kt0NSo;YsJ|xrjI7ܱKv۷3vӎql"$v?0,*& (rF m6ҌJ]@q d9Qͽ!,7[QMJ% k\A8<**AZzzjx9hRF\sv,8ܤ=v;AnbCSNr=oSD[U=K mVc Q\nDLus?CY[[Ke' |E| I ğ#㈏Bx.1Q+/!^@<FAF܄؊ 6!6"6 sD31 Q(F# \!EK???]1[7_??) {[77}{/7u*N?4 Nx6h/#{=˫{(؃Mu* TtF?v9 g6G#}\n9.W r Y%\'<?@x.ʭBt=Fތ0f?_ {pENsx(LjCW [oYV tL\msaY5e:`}c_StXu0}(] +p.;~`q1=t8ގ_gW.x K~)޽@7a+\m`ѣ'167t j{)Ga }6b݊[/}ù]IYsI,| Va.\w-γW1֢F|.M?K=W5X|6\AmǶka8~["4$<'x6ٯh(rD8IgFTo8O.>c$; /!=Obc |w ,k fgM܍j̡? ¿܂xvC{1z% 1̀y}쥱aaHq4(E$Fͻⷙ)b},z@* ϱ~<ې_Kߗ=~(?gc*V8x>~7.|泿aE'(.OB-j3Ϫ&U&fStx~~%3 x7mÛǑm7CB>B7](΅d30W-C=ߥ5,T 8⏯ huv i5Zf@g))g 3lXFj+*.v0x,IJzQo+"Z)rҌܜ oP]YN3RSRSpmMi)צ%j3j'Xr3$+/h׋EA\ zK{T1,N*Luu tEl&FNsoMc]lФ& S%#cӕ&r.68f,йF1v *.\&FV6Ƨ0F)Jlx yLfDiTy\\ ެ۶U1#tZ$NS,Uo.O3)شFn)rcaO~5\ɬv*lz; ,;)wě}@Q]u l6{7U#쫑⭬~SAѱJsB 0PQaSE]wHD1 ylfQ+z$3Y3 ib f rQ+bULק$bRϞ\Yk)vnX*wbD.VT>(E'/Y ˜=яJo X͍:L/ JET,8齠Ҕ#sȊYb.N-vb4yACj QkR5 ͘Flc5G!X@Pm&$9*؊Mf:-+[CX̚82͗ȳI׋5JXǎzjl1M>GFR֭uP1vE5/nrfdJ }fͤ!7p h y nIIFF3Ux%qFalVԴgLK9l{M].l(6ջ uɢSS& .'\7m&6nF"'ghVN]_[$3nj{aY欛 x̚Vg%%|31x<xm|^$HՠqjAO Tc%* (&4htp0Yz0l%5\5ZxSmS9b<*5)$o*hYv/lvƠQbJ2=&&%vp#h]?F l?|s>0/pkX\puWT/XOX▙۞j{3  ~o!ƤOOW@Z_42&{W1ԉRdٙDח28Lf#>`O4i1.W#JBmc3#^["DŦbGLERdrN5s$*v43˝N\UKpeo)z), ɚU\?+N4>=F}t$z}dml}mp>{XKjf-WuϦwwx/KN#w[:bA!ڞQС##Z7,Gxƃ,\&F) wػ[7l+nakV9#jiqojYw{.$T{;8W^SbIٕn0>hdk3̭5 1#oeAY^.*aElIqLi.R~=i4 󮙂P'թ^_uiv, XRRRcB-*2fY\1g6\NA'&]1W1a֌hFJO>51DȢo]kLBHB /" y?& " h@ ɐ $̄-p,zCrg)"r=^볽ꡭTikz(zd~[Yk_7,(yswWʗw>}ƾkoe,M-״^h^.L^~,wY:8*20<ҍF)הKWqbiۺS?'u5M^xqѕQsJ"SHuf}@cuNAkVaMJβ3X/r%'eJT$/Ĕ LoGӕ?qo/$OoUiѓWe8zOϺVLQWVjߟ|ѝ_ٵdC `ݣ_tѲNzNqVL֥flV.pdlyksk@Db2ek^[XTXTkA*IK2'8=rYNeAV\wI{mevR|K $R&eTu,ҥ [9&3i}[v%TV/ +쏔SVw]]tu9K.mw{x=ͣ_Lٹ +uXڳӰݔ↹~r/hpl-WUK^ܶ4;vSvV^G}NI99ifâ f+ /KU~M1b#A,a &RLͯ_p'S^w|w\sn}:>-so1<:nǹ}U,Νs:Jǿ- &G>}qt^t^oV݅O/.SN#ݬO4>Ĺᄘԓ 7/Ez5-L=.Ӊ77rXq壇͘1+'$(j >RO^ᆨh2W#Ĩ.xXTqu'EQ^oгTߓOJU\^.^86C)8}p}ۣ%ђۧ#@VȔjSb|I{C;)<之)]̐ۀRr{˾mͯa#Vı.DDsƣok +*w}`dXqnq* 6Z9 OǙ?(eڽfUDdƢ3l~}5moF?mZjN`]Dcnp2Ùg}.jI0 Q?` ŊaK'(e(l-_l-e̖2[-m9Fbl3~iobN-e̖2[fw^glb)Oźa̖x2˻ eY͖2[fl-e̖z9id̖2[fl-e̖2[fl-eMUV㧑o&>$7+uO[&^o`V7c]&_$N>E}Jҕ72* Rn}5FCI';o&Fٷ꛲o5Y2ٷ+uo'}YO+$&hp˾eD(}3} w+Vso# ݫdNReAWɾ%b[H=г =г 4BϢ/,BϢ/,BϢ/,BϢ/, /| !%;Ў0񡍐G_'@1{>!1Ac\6ͽ#+IJx]3FH/GY'Z9A퓫F@ǞDH]\/z%tA+Ƭ><_i&CpMq~pEk# {f՜&% rkx9#۸B):qO!.ۭ\_Q-45$Me/\܇¨8%9$bs@؁јa7l볙^7XT45t%/fGDc08 Azf xř^kQs]_8)md1Vj ^Wa?*3n_p+g^2ux`# {9?{Yӵv_c po@F;c缏3y# oU"X܈-l5~>kxVf6e+1 M\g^#l])l0!o}o~rNj>>kHx1؇˸ij}<"fn<|wH]cVi?iu;51!pvΏ0QZ sCȸ#ܞOjK>61iH`9."dO_a&ЋI4%{{b̔}mM>b8R/>"<`HFUb}X.(Sur̹[fwZDL\X6 ? ۄ_ 'y"GExg0=e 8-&3TLObGv@!03GS,^';G_&E mf~Q_ M+ Bވ?0\w k*CC~Xⳛt] /hج?_H!_?|}z$ yC[{pif>u}ݰ?G_XU  GB~_bU`8ˇ~FZn c xFoXÀý!6yb>l>}CaƎ7Pd=חG8V_h p  %~o`;ȟ>̀ uſ ݐ B[};p$/#A> G09\00BPOŧcu(126)0aJ 2L^kf(PȆfJld0}z7HG6Xt F(Cc7 I!`_eLgHp4b7ṷ̏`8 @e/Py>JxE4/<2IE} &Az_wKħDx|lIm!|"/S1{1chc`Prr1!Y?"jfH[;0 ( 6IP19 ^`w{%}c~?opv*6}%{]^ q`gfj؆?M.v{-{n`= ~؟;jFv&ˀ K} ہ}ǀ`Lnv`粿6[NvA`~`"Sen6Y<-lh/Yv|Sټ}޽-13޽AB,ʘG\gYd{FA6jԬ5b1.KptTQE;xYfF?c,EUMTD ACVhOGv=8jSYb<*Jژ\|1ZlO@2)2i2 2RIqSlBEIH=QH[bBI)-Lf"h:h2S:A'}]vLb&]%LfZyGkcVs}[Fj2d~gvBq=gLxj(l7id{X)Jљ#T5nb.o5W-{UY5լ m,Mr2,CFQ؆!'oc*]ftL3jQ̙՞՞(KP ,PڲL]Lsw)69aÒݻw/i0iPd\=6L=s9Ga LU}Y>14fxQ;FQD%>ә#38NǜRgNBLj·'oc]OWK#Dq9:l6\k偕.N8œ~a J;ѓOGfj3vz]:3=X[6=ɮM- gŴ966QiSMLFSNM,l8L-}ص{gNM_oAM̴=C\Q/{@M:jzUO*]壣ŕQyk7!؎[eח؃_'ѻI1= I=e40u7LOnb!By@H yg}{2ԩԟ4 s[둵˄8=.Tz/uGo>}KwA_1y0,v! %Z@,v)o$A,ilsQtoI^2<%}\9;D?.9-0~~swXWs#F0U z\{@ڛ >e ]9-Iw q0#;$%k,iNa򜐛36 !'&9%ckQ`ss2.:ez: =BF=,eP *_Lm^̮LAwL/AW /dL6Y9zN؂Eg2115rGYBf?{ECbVrǍh(cy0e(=J(=ЏBO>M&1 DBBBI7,C6tC q*?P~@V īkZ٪UjdVՐZVOvSD.֓M.uS N!SȻBlv[]o{.n//:aGIK<}vZscvFU\v4`XGbq|q'YgRǃ5*r OMS`ܛI(=LQ,$rvl{d;,=ClQߒ6ImlfR*IPQI='駨|R&x 'pr'V{NJn\+k:Ɉd rJ{%K{H{^):y{lD ބz1E7&LP65 0 uY}r<$KS*lzR޿)۳#m3DžZ"WJn-ڜݨr9Xg֘󘼇 s4=" iW mE ]^ici/&SOD;Wl>;׃ GλJ=E _FΕ|C/ٓӡ hӯOߛ~W鏥K{3˞W;ik>[N9X5N]){{Mlh6]6cE^r_Ӊڍ)gO-hA>ˁ9gP> ݣ~:^:d :l#:ȅLUW"?B\e.hsz9ɃzPg SdʃLyż|_$t]?,8/U*((@d,+?_raCȟQXXP .@l,عܵ]cTȻ-ĩSy !C!-Į])"EF좲"^t5*,[_)ŰKqxW1d-~xyT J%Xz)J`Rc%-ڥR] R^ ^KCSzORu)tY X ?[ܹP [}..̉ (/e e2f}e@_,C.?WBWr+]9rOBdqQqc+NT:N+JJ[Y,+s͕oUb߭|J[QZ\WUTT!UT W`ա*UsO/\t""ȵqсE~tE窭bjK%ݍW4"4Q>4xįC\xyL_j|h)IožۄknoۄoHoFnzfٜڜ\ּfykf͇ǚkFj>v3,>-A l---Z[or{=-Ƚ-XŖ-o bVֶּ֪֕MX~غDZ>Ԋ _n[cmcj--me~Jچvm7h;vd??OBmN&m[{F{q;gvv~cN;m;lӎvo\8=Oԃl[{{`m><yy<{Y?=-v#xuV泎2"_v;vxw;>q\B8dAI"* *d+U{x\A_`8͵RiJ[pԾGJ rߚx7b`3C",MZv΄'ػV7fؿv}0:uQqO7G̟a?(oSל'; w;`4zþƯ_Ik;j} .b\gN7 LAw03ݔ}њq_%m>c ^L'Ŝv=7i~Q>h|MÝ34ά`g|9%ǙK3ǥ6ؿgg}xުwΛWs[gX#=3\ZwmҦ1mzx q8?;lg -q1blr!?5/n}2;xN}cS aPu_:Z>L>:Ct?ZeD-9oW؆EU[꬛_#VaNҼ?rէI4}ÈͧS3:8 $vaV6x~#ii\NI;ezs#KlPw|~vu\'/%|ڬfR>Q]6&/xM5jϻ^[bÕEԒ^ d)@Er[_j)&6Z) eG5hzj=ӷQ(a6]TאJ7Ry[-IhjyjcYyv׿F(-Dˊx(-sx#jZS{@z6Xf1oQkIr k"NTb+Vr)YjH:om>Z#foǦ]Uw[{ڮ¸w.= 56C}?H)~>~X}<uk|unPa=**tM)s Mj.7's#҈[H>o}y_k4o~cз[굟iK zlb`?]E +Zc~W6# zm}Z5{ԧǽt Fq-lcAlz"ijhtcO,HzMnu4ԩ^dgc1ʷiҼ7;y̠:_)|"ER=82|*TfY:s i=`Pf5:E׋4̓^kܩiw}>w>RR'}"BQABYOxʤTMrf$\ߓ@ b*}UUcJ$Jwu0, ij5-ד8jf%2;c"YT3L1~B}RG\mMubXPm1g Q{Ȭ+4;5i+\FjaKXkJf_k@JlF똮qjˮT@s#Z|0y_$x&Qm/Svw%#פg(ׁV ܞYPDY_3=Xڶ(^@ηRi\}QkDg.mBC=@DN 홿W7GxU{B%䢆3 ^ٯZr]4O{/"N_ޛ;Ѥ1 03_qb(aOm.5P@;(?5iXg#q^ ,)g-Tg>>n5vk Ke,$~o-iZ t{'fkt-QGJSM5ܜ.nY.8js$ܧ{Lo>lZ{d|sлf`w_HzRN+|=NE1 0+^2G[M}?f$ƾIHw6jQ/K)WՋ5=4+Դ^~! VNVSFףNƾ&jf43T;W>0]AcaHq-g䖛7U2zqFm|XKD2+N/C~Rv_ޠ. >zR*4ʛ/կGiFdw}ckblOkQ)Ku)~\Z6SDtYa7=@оe7ߖt]r.yf]ϜZ1e- g4o8NDΛԜ3NˈuYM%-W?cCJ7?Lӯ=j|qV4]_K12P_m$_5׏KYJvȧ)u'qeϢY{Yu!SPˤ{@qxI>[aw/kiέA.Q+McCcڥ_va^m#OD;9 2X9&ֲf>]9vǼTc_ e->ttRE)?IjOFJvL M)Z6Ny(ůEne}^JE~dY*S_}#BNnDZ[F[VYYuuԺZejjkj˲ۖ*llglW6lh/{$Gc#߱رұQ88TTTt-8"""qi'.;6R^M)}.}N:H^K:J$)❈wH'ggoB,|(bv%{Hm U٪P"ڇڇ>>D''H{=D'sӾԾR{)qۗۗƧߑL&v#boBWH$HE\<6$[T鎐CVRr'ΘϜZvfVřժkH z٭+RGCĈCZaA|7^ؿy_\]eu|OHHe']l3>`(T;!0~ G hY. @Z-B+:ъQhEZ,ZފV<"1S,Q>y7 ,Ry o >C^9ϻۆ<*y;yeB^%v_y{]A~@,ϊlw&@oFyHE6v&=bKAw ؎Q5gJ*wanXкY7j狐a..~c=_R>lbpK8S_-7'/pIpP>s뵠cq=9IɌ;h1f$hLc4v٠4E⌘^VkY9 Y,!6|㼣#3bK.+y'w#vKCjEHP׼/;IGBx4eH?).btKL/7ykȃEA9bm*6m{ mεgWyd՞A{yojyL~쥐d/q]^yGyoMRBֈ}Rۘ,6%"vcyVs TIJB>H#ށtz慳GXqڐ,vGrcgbukU#nͱ;g`t^=!4ɹ rɂ!9yru9u9rNyGl)'DL3O:u52TrY[;LyGutLݐ$d!A~ @]dWIv/߃W,Xr8+sE5p1s/dB4rrr 6GV-kx6_<T"MO!;[x:h=^](-CqW+NXmm-~ o@-ay]<l/gNb;?BOayBEsb]+/$<'^D%_Fȗ嬘`oA%CNPcF2_| \Dc~ xCp:Y{^E$mDITO41'v29.[#2z~SkdW`^[Ͷ\f$;x=l'%?/:S^!3ޟQ^I],AW%kV^{N+7ƣq'׸]\.Ot~?ty.ȓ! yѐ3E=cl|hya[&GzqfJ}uZIGzǀ!^/,or `V2#b #A؈&O"|FqݮU&T NVaPna{} pq# È)Ap B_ Ո-|·5-p ,`)RH}Xz'՚d[EVV#mmd+G|m+lggЛDh*YrzX]cݛčo{y"49ii?|π'(8g:g">9 z9tq= u= yr qć" ć!Ić#)GF >5 W\ c\cDtԹ?uQsͽՍQގ7Ɖ{{'8wcla ۉ%"34vGwD|W.+c1[cwF|OE|_,fn~p ۂ*b95{<=j9 Od!ʅOUC7D8]S";,m!!$P<>x҃SX!/m}x5ngoqTBFeO yX츐rv\I2YÎ5(H̎hg=3̎Nvlm1{c݉c mvBgQ0467h. =?bnFbXsҝ %tRLJZRNRK B S'  Ӆbfpֶu ^{ Voxv^WBh&hg9ݣȜ5ǜg9?Ґ\ԯ=+77Yg.4X3$D0"!VCIU]/ VV)v]ÇAjr2ͤ2 Y 5?]BWV5P ²ZG{Ew8Ҽ15POg9?CHЂgKBLk50zI ЀkٖQ>LKXswru9'5fp|}ַC_߭o/2Ge2 F0dtQs2kf O/Ᵽwr|5-gyvsجYfgL51kI&N9f}JwfeLI6=ӇΈ:8s^dIrg͙U6+yFʛ2lB٭iެg{紟svn8Bt^:+37i|O~~C3 /O(v^[ew4oKAzkL-XAK /.!8 [.l_ح0ptanaAaI• + )+VZYWԾsQEomi pisLspΛsAzPgWà]= KQ3)(> V U]_pL 4Z3p25-Q9aVzÙ} ZtTp+I0f)Tkͬ$<Ť {1 Z8Ok^yqϋWVrY4] -G1jG{}}a%=ӊ {)z4AEuipк6dU#yhǬ<#4Qk.,dz%]0/aɟ㈎&ժR:;XaԖ4av%5(fE[~6U6ӰYvLBK[RRJɢq2UQ}-]`%1Uj9PadL5 Si+A0,5`uB|Sś&PάtuA, W!O=1BÎ4̡w}ntԁG,̋GHX*_yXLDGxn ]ZWмfsuےaKJވ} ȥC^\fYLZ 1 frhig`r.5_q//U-濵ٔomQPV:y$@e+ϤWsI{2CVc߫j.jkJYؤ Hf5Z943ԝG=Ym>hV:xJq2pm\9kpT4RJY/m!-d ZLb/('I3E,B9Jڡ=p'ǀ!P `$0F1@&40&Ys@60&~)@.0u<L`D 8'/ \t3M,9t~<gP6x@0 LO.0<L8B2Rmv < HSNcv~t >ʀQ`#R< |TӮ` €p@$u %D`2ݺf<|@9*T#U_^oo"9xx(>6|#mvyp P~q/7@=pP2XpA@rRB0 jY`H(r&0T;N`7|*R*"}EY( *C9톮еvC[@gwS{<it`gl`R +ey@^_VVy*fw+$B0 ~"(h# 33݋^O+K0ג!@+5HnJyID&p tz@ pp/H@0< ÁH h]ơg @ LrId` LnӁL`kF:;+-qǹh$mۀDvV;MYg`>"P ,^JW"`R|x xX,J=J=J=J=J=J=J=J=ZX*kg`Q~;ZPQj]06ևw"& :DaKp8 "XKBP_%2+p;P\Ep m7pPCc H |^/|^/|^/|^/\/V7/V7/\Ɖ;Qw'|>'V9jIowJ)R.֬%F\ h AV #`TrN $)=< xxV?i( `#c#G O=O3k9 l'1J@] w2Ɲ _]ބ4V>+) (ۀsC)ì/wd>s--Z #P4@YP" K@* J%.q]q%U{6GMF ea>gz\?_?^9=gfoi9BNˈqkq%bt 9;'|]}ftA N|ՙ:XX4:}u~cX'-u~K3ubN\Bf @ke=r\ : >ja7/e^e^e˃Oj?ٟ~=,> E| _ܯxV_oȹU״_7 o3]T ??F?6'L8~Do0C"~(T>7x8eHo(/k^־¥=09\:ao;.a?ďS?O3l¿3䂼\ 7c 4:i9"=׎A 9/~Ga&n"?mO:,Lg"-Ot9"-?ta2qR0#XcO)8 xoXΏ7L^9#?׵7|\fs/E]K/CKq{%_aLޅ+Q75ߍ}787ssugqE|guy\MZI7\ >޵ׇ=0/dķܒ[2rKFn-%"/+rM\k2sNUkz. <~Ƿ{>JA9(#e䠌AO_͛PKc״}Jܧ}J"$J"$RJXU)Yҫh?h7dK~Q)*vOG??CC|hH8v|^8v|' !OqwYL]sQW ;SVtjZWw3:6 R;?-W9zSSwT6zV듇.n>Ssvހ0s0Gzq;[<1lO},8u+G0? Ǔ 3޾7z{^ouoL{v!N[>7|^ᶚ}/?@L4$tٚ!9p o3ey7+y7+y7+y7+y7+c=SqY8\q.Xʺ\k;܈p[Љ[^6j])j9} [ܸ#0q}8F%< /t|7#qkou6ǧc ΀IXRXI4$듸`ށV\x'_ XDޅ+quX܀vXτLa߲kp;P ~߰o`L%=>lG\(c{ c cX?Xk>J &~}7&,a6x#DG :+R7lꖰ?ְ-pIpej1][cØ;w>cop}j?ԇ®]aCj}0uwxPuo7 6x`~Yc?nH}J|Vy|A/7RexOj;vἺdD,֭XnTG'#d2:hH6F9('dlrQN6F9٨[6Uu52n}eu:gN}dʟrqAΟ?s\={zrqqqqqqu{^ǁ{?C8ǁs8ǁ9p8qu8ǁ{9pVy܃ m{'vfmۮCvq!nVfenVanͺYKf=,r, ܬJ,f]ܬp7+p27+Gn07f]ܬmfenVfY77fCܬmfenVf}l=7f]l.7fܬYpܬupl37+s27fY77fsfnVfensnnr!n͆Yكܬuq7fY7f]9iw /5Ƶrˌ[+<;*7f=ܬuDnYqnͺb(R(%(s.QZ8J8J#Gyts.Q9J8JGYQ8JGQ6s2G)s>ts.2sG)qQ8JG(9J9JG(r^(Te'/lƂճr/  ' kUC kce;\9lTtDprĎ`Fċx9xESZ 8,YLOHNO}y}ik_Χ`kӴqJ&ݟr^=X{^3tPôk̑ckGi6fΏqMk߬}':? oqd)S5hOӍYz#pLYڥ8[9sqM{YEKڥwh[LܘˍxkWj^m5untz{7CS73U^mV[vZ}[Zkwika}:G\~}O}Jig}V}Q`^=;EV0LiT6f -?k` 69Ga@a wV9Ga TXa(lQXQX5 [0AaEa wV_V9Sa5h>NPP{9HVs5S$;kCɲ^_qW5(N5gdB11ɼ7?θ3&nq2nYq;&d)2nAE 3L vfad؂5!ɬm{:3ʬm2kAFɨ]2(Q7ɨe,ʨ]2L dҮ t ZA2ЄU͜wȖwj132&,ce^cBƜ"cd\T{Δ3eM2eY,˔2eׄL9S,Ȑ9kw PQKէMwIG[O=ץPKZz%M-s%M-RKA領 dp=TT>[-C=Y類%3zӢ~kR5QQCۓ_o L}bV8韍wRRjZBMKi>55$smɣ[`B8xiY OwS7?vߚoMTBegspwMe f.6oUPޥjo/w fܻҸjLmo[ խ6IuSnA렼 en=ԗԗ>u[-CY*4Υ4.%T SaCꮝSwnKݽH-&u[5ΧƆGߏ ?{OzOQjLmu[ U6IS|"GRy(P0(ʔ>UBuc[Bʆ)DaTUK%jQPJċ:)'G-CR=ü{VRHBJcUZB>+&{4Yhji 'J&4Y+79څZB+JY%.hOYՕVM6i Vvr 'J&4Y+=9څZ*}7(Q@D (S\q'}UtQEoQ风6q#{}tQJ'4QJL}OQMtYZ6OL*ZOM EDq_=ԵڨkI49}d&jkG뢼Nkʛ"}.*-4rM&\?G]{7Qggud}D8P\wJTJ&xD?'nr_DU8@\+Le*]IMUHZ^iJ7L+vvΎTy^i[JSl*0a#]ؽW:J7L+vvΎTy^J7O]WhtkJ7D F{݅݅{݅^b*] …^b*-OثLhJ;^Fkr3t%6U}SE t>Φ );]_O!US.ů٧*\X٧efG~QX)WSb[u SpsiBuڏQXϵ)WSb[5Fc!WfkǢ} Qսfk>hkǢ} QF\c8smՔp>W(q>W%nQ5ZLDx(qǢ}*_=ak%naJľsU8Dc8sEH=aJv7Mۢ1J6EjJl)qoo-(q,U)q!%naJľoU8Dc8oE`1Ic_`EpT{^ V$`Ar`EV{6=\&E7kkO՞e[mګio{K"uޭOA~F헃[c8bu YX=_U Z.x\-Xؚ=:Ǔx O<<؁"^x;59)9=1{ao}сUak݁an*uG oia;*cD`:9_W8_֚վ5ruo'nvZtbpUwx?hO c#T?A}BSdeMvF܄q :q+|mXXqD|OXu>z܍{aܫއJKpz_\0'=8/ <[x}[K{>C?F?6?O3l¿?s1#% ~ Po;%؂a1X(cF'Q.0szY.uyƼ cڂ5Vnvmn]y_AU*v᭯%k-zE/+6O{ۃk5¿F_#k5¿F_#k5¿F_#k$'Q=|hOTOTOTOT!1'g؄6cGK+:,"*"*"*"*"*"*"*"*"*"*"* j:0b*!Hq!x=f`&,a6x#`.D=ބyp4,ıXp7s|n 9#,TelQelQelQYlQYlQEUEՃ-|NPʲyY/eY(eݢ[e._e._e._e._e._e._e._e._e._e._e._e._e._e._e._enX ˍF*w#`rlԤgVj.0 5#xV<Ϋ{5*zXy:<ּPu敪 py,q<*UVhq]Ug*95:ksl4pݕ9<4v b\˴-]޿:2[JŖR8\7|+Wi3Ƽ]}7s}zz77CUfGclkp;0N]AnU.|#Qur^׫WիOk9d;lCsv!9d;lCsv!9d;lCsv!UxY^VUeUxY^ /&?؀x@ħi|=,> %|_A_1r9*;ΝOyc+"wT˸2;/˸s;/TYUdVRET)UdJRET)UdJRET)UdJRET)UdKgtKgtKgtKgtKgtKgtKgtKgtKgtKgtKgtKgK#i/4F_K#i/4F_K#i/4F_K#i/4FҘڏcu` TLC $B CzLYxl#F\z 0G\,BETk7'$,v8%!ze^W!ze^7h83W׫U*zq^E\"W׫U*i0f,\*^{oN\39U:kɃr3Z5Yn(zElFfDlFTvČ̉,"N â=Ժ<8UqcG%86߱xo}byUɷv!qt<8Oy:qt<8Oy:qt<8Oy:qt<8o]R57Q}^>PW ̶F}^n2y%e5[^v[#e5C8L>;B{ZW3[.vJ:CeyveVYUVTwEu#XǮ^cվ׹R{=np]ہWdیY܎;Aw\zDzD}eAgPW{d,=:rVkĭVkVNJ{ʉ[#'nVlVN<ȉ9 'ăt9ȉ9:N.:N.:N.:N.dUX(gI< s v x/eE5a7/::::::::::::::::::踸::8::x@5L3} oA w]>'WXA>=M>-LvûVW'b'Q]=.6̾KY[9ت4gRl`+[9Vrl`+[9Vrl`+[9Vrl`RlUJU)*Vت[s>;mP'RďӁo1 w97*P {ssg۪Q(eM3[Y~l{9jKFEpѓ zAO2I=ɠ'$dГ zAO2I=ɠ'$dГ zAO2I=ɠ'$dГ rU˚eU.pY]Vv@ ,a,% X YcVcE_jd>^G=?nKw`VqYU\jvpV4lAlv; L3]rKtə.9%gL3]rKtə.9%gL3]r+3]v=} ۡK/!$g̕,n$N4)i383838383838383838383838383838K+e]DJ x>rX9k! ?u0p7A% VUf5zsYc%YO%Q%Y%Y%Y%Ij$5q8IM&NR'WRj2u;oM.ee;;fՙ Y{Ng9>ЧT/n`]y+LF_Lw~oU!NF{9^N{9^N{9^.Fi54^>97*A0b"AG ioQW⽟@IdZGpeHq΄l8 Bp.~{5䜳iCy+h'P S%zJVG |;/vqz*^Bi_Y( ? a _*^g4lv'JEaT%pb#pP]P-J>%#h/K+ry۠2f3?3i^[jm:E̪mBrQ[}n;^Yj~Ւ5*a8y=BգX< ϢEc]G͂Wsg=IYk໥l}kgLOf;vop]uu+X^Wjg[*Xka &3[%d`x^+>೥A02op+>|5p2N ɱ\hef \p;⿭o+ۊ..⫮EX4:h&QupQ&PV|V*BEPaV, [nvnvP %PvJhn \J4_Wp6 ]P Sbd F`d F`d |Z V§>5F0V|of[иmѩ{Wϻ8H_^ӞFW({w`lD;h׈&7hq3:ҏxwgٮA+Ëh諹;x$K y?j~j9Em ۸~{Ni6mtY, -^M߬vh/yO+맑&hl?|&Φ ^4>'c%R(BJP"O0i|44>^vҍA?SI{ga{myJ MB(V x߲c\[%"+Up%ŕ\*jތj=>$%Fͫ+!j1xcP㍡>Ss4~/Ǘ~^8Qب8>?Qe4LQX[~3uӎ`^{F"ߨ!J5sv7PNWlvs3ڜm'F{`uެ&EIpQ M;!MT:?$R7kd!+Y!` Ϯ@gjd *B{DDXKV_YK/8}W$10^O! Fޟ>Ͱ{+]F?۸ se~WWa dV GhA؜w`̛}Ej'V?u+|s^7 >-&VQ(WU~9;9νwɿ*,o| (~@8Dd|l}|}> CiKaF_c:'r8cw NZA8cg\,9!^Vڗ َzN Ȋ108ˆĒCF&#VɈd {%mI 6CL/.7UTLY9y2&DMUi4i_ܷ8sVe*ш@L<ZɴE^Od=hQ+I55TZĴY:b;ze25B&Pm2If/IUJPU%t+gVW}8ꚃ.=YއuCF9Z&,- >1pa D8'W9Ыd$)?M&Q$>2YEN2)z5s]mfRDrK]R]:I5I&2ǩ$sbV3O@^z$ÓxxO+̊FF0H 6=T_ [킿2 zAo׃hBv} >a:w3ԑpt2^^@:Ѕjjnf@7 wHn`^e[HVC17YUw'ʜ7w*:f9]עX${7\TD]Q@5u D]~Zšr7iuBvk !kH6_þRtXC:ԾIj$/:1^3]+f1eLJC$X1%Kh(Q*v sJv =3 6&+++ANP}q;|'`bx [/yӱlP%|㺔e+أ\Lj&W9.vqKk&a;PO5z>=+g.L޸ np;TBP B!W( 60 y6_IScio.@fȎ1:W_un|Ռڌc*6^jPV)]w+-B$[AXouǺxcou5[$zqt;{w{\\\3tW\yC=P6Ff-l-`kAUj*^Uɫgw+N7x묛Pvvޛ8fo&6jnnj+\a[8+ͫ_{Kz<913^3C혘cOa;.݋\ @ Bw,6V`~gKloN9D3ZStq3F9Y'g!D/a~`(DTQFqbS.Tyw^}/~'riV<5dŸET W(j2`cDMOs[p/%lc{m"beΝ yVZ ϒuQx$d 0^.DQ72EQ("$ށwȧfX(BErDwpOy2J[Bw-?m%yrD:;oĊ괮e(sQTg4l1-0KTf+T p4bͪ#ODl3LdCnߡz-^| }8cQыzQ@/ tѓzR@O I=F MA7}w@6Ği=-U֛{ ͢ 1jc8k1q6 ̦7626X,;qwxU<1(ŗpמzPBb O}6w8n?Ÿ xއRH2"6#chkȎ!Jĵ$}(<F)Ay:%Z9_s[p\Wp WU0}#sLd&?c&mp6aC9 MllF9bLQKϱŜQ;Ev_BF]v X zC_C^q@(Ap`P(0_[p1-oX^c p#`UX kWa*]v֮"Q,RkMH"a,"Q,zUUѻ*qMCp acXo,F}M,!`3|[ [mD{i$8@|BTq+V#ы##D`PLS-c]z.[p!5EqlOH_>5yKw;s098N Df DdF-A~NG9C&4[k_8wȧfx-@.sbXKaO8g#y7>v s 9:kZ+*EmE9Ah(N2*a0Ph~jbSoar9"FMQSC=icT].\Lueh.Gɋ l8!P 6lQ\m{mbn`T)a5UJ#\\hB^wKϩÌPb*0eC0+ ⻅man[319.Ubw q(wNQTe\m)JxxQ]wo ~'2~HN%gug8{_=~TU+{/g{UmƇxj -1#z@=fTnbFz\٣z݇p!\+sW(!bOce,%n~ך~To4 [)JIOڭ=Y0׋<Ӄzr47ZB[Chkmt5"t;a!BOCi= !3bѴ0cLk(A7Cf !t3fLzA'#d!bԫ]DԌN:B#Chd !42>FBCc} !Q"b] !t1.RNNۈZB Cha- QإfN+B%V U"CUbg13:qw870]Y4J~^̕]ʹO5QM~Y}.tvO=(؃z 鮦(j&[ +4<W:5Y%+++*!`^*YX:mcS+d3J\|bFln,\+y+r(\& L4dayww p^d3JkbOzЬ;.WwZ[kZs@_qNgv'ͪK{XDr#2hWM"?@̮Ip:c*xL(|8ϯrϋCxL0&d22ύ_ ! J Wdb76zFoTVzzGT0Gsлг]l=E",B"l#=ۘ{~3mE]$qE{z׆c`q \sz9l#vazjP9.z*=~q8GsUV%=ǕTYPe UY˷aVu2gB⪤iSuZD啭χgd*}$qL銃} [s=srq%=65+ԝGkz4Db. У7QU"G W W +ڼ 3bCyXO]mf泴H|> g-s2l*OX^ {žuzB̨03z[+_)F<[7a(a*(z罥[vhOD/ чJ\b [E}E8KA9F|"/2,/IyZlț6y_]> }o ._z -2-+=9X)u<^SI/BOʯrr#OQRy:R)Vj:VS2*Ej:M^Pgo3Xu:[^U+QR}[WkUzCuANR7JyE*oW9Eݭuz@ާUzJL=oo#%zYA֪uzC!Ujϩwջrߩj|Y-QKL\-P+J9KRrZ>s:^Q%UJ>Wi٤\&Q]WfKYJ.X}RW&k\fjUm 5DJR:!?*Q2erc-ȽVZ&.Phj3*u h:hqG̢vk}M[T7wwN_Wվ{}*߃a_oz7z?U=={\={zY Tz{O޷zݷؗPSs})V>H%v>PfvG#T}}>>AOG=h4˲OO϶Z}+Ub[CXC=fhdoo'1̎q^OiVs )L~:~^j٫J{ƺ޺ho[{lv{}vʪ{߲~mU "ad=?z_?z_?z5I (Ty1 sX/~5k&u-7UY?f-?_Z_o?} |E[3$azfH @6r(,***( ** ʺrC9%*xSLWzjYlvlujs9;lg:sY77[u9L~%{'o .v|]ܞ'>0Bw;/--[;}վw5ZG:wo[nww>uپoFJtk]UW}xAmkwLuNII7թn:SwW]tu?=oEzԟ/cuX=___7)zLֳ~T?O;gs]_֯ ~?H/zB^X#&?_/u }@_*4(4chxhЈH͡Q[CcBW' ]64W3kk772>?v<5B~4;; c X|.$oI ޷^q˘qfwq{ko)e m{%,&}&m׼oH:tyeSڱ$S:P)ޝʓ R1q~(cJRrceE  thwPs)(Q,o']EڞmS]2 ]xʛ5x*kЪ%A݅]9O[= [F$S_if{]$v@szTmNvcdUps4!bd|'+VFm)D z yh=Ϭyx˼Cu9" iI :Sƛca>A ro6EB k0"JhZ)$ 7gao:՛]_X4fږڑbO"G4SOyw%ɅdeFSmhV]^9=>57EKaJѼ;-zDE6ٕQg _{dy:/_׌[jyh3}̕ XUb90z4r3!Ң.5" 㲿r[crH)~&D2X дmz6cI^Ĵm(|)%FD:!ց98fȹD~ڛ >$VEp:q7MaIY醷jpKaHqCù󓿔w1}w,ʻQ8ƴEpGg_P o]a.`8mgPwb9@1/>]1 ⊰9u>¸%es|?ի䢜U]mT-N/Ԋ%>K+tu)YM֛ݓL霑wR|g ׻n\[ʻ%^t5fIYC̓^؛hcl ~g>ylBi~Ca,,,o4f˦m\F~;5$By)|aޝ3lJxI8w>Y|̿KsGNG7Q[\J?3}sԑ3 .1PgD/DٍtkȸxyUN* _NT+2fe.*7bXhQ16@kFӏ1oOiDL Iϙ#5Fv X86JIâ1󽋳Fq24ecZwT0}_ξCAgs$rLmc#)5ڏ.Q/_ b}{KYbo{@,o)}4# QdB_+y>6y:qʐy4gN22ݒx4||Q0 עoM'lFטV쌦];{ L+JcpK?-6ZE˄!{f:;ykQ.gRNn^-RS{ ҏy*fq!R=` 4q|p"uL1e\[a%ۀg9L 󟡙m( +oAQx8Zz;+P3AF;"9$l$O#Ĝp2(-,2錓{^_WNߔ ^B]571*]d9y\ fj򗮬e(]dyw“e_+^fe%GE~AIKFm(74|d4z tAnKSi@?h -(ޣaحtPH& D NċZE*$ZD}މh,kD()X ėJ^dh2W4W4+MMMfūqQɮ%~mۑd'ˠ= }} 7ɰ}}gjOy],{lng?-[J^a8^ U_՗KUCXɫbWxGV*]e*SU5RfQj6aȯzLCUQUU j8:WūjuER*H 4R!FUj+XU*UBU29PKf6T )U5RoSlM5U-UKȁo7&n{W;Ʃf50P=zQz#>/W5 Tq5ᇨ ~t.Rb5%j$$@Tsƨ1UfO3 ijI 5 )ܣC[Ճwza̾cf2pz  z^q_RK?ի^Soi,UEwԻ=>eejYSJRD *_V#c\D}Zj-57j= jʰQmD &߬6 [V62.!U1:DHq@R .d Y' HaVK#aVK#8թY3 NM;qN4pRi4FjM&$5MuRӜiCN[H2 Jp9(H4;Bvtл99ΈNOGjA3BU Q‘(2g R=J;!':בvwnDj?Rs3Nq@w:ө3ù:;w;3Cyt)ijk47xuzz=$@Ո T@p%Pu7jPjEiޡސ PP?v!h3< ]RC#B#wdh$5 ]Qfth4#+CWBWI91z/F(ܠx{3aݏF01Nd݋;QuHWԬK 50R#U nu:5jZ5iT [aڸj]nu:Rk5zZ;377's^H/v;z#%#?)SZEmZ/} '`M61,0L0-%<ʬ;E N% h;pjx8O+KRm~cU U?֮ 'm'aV֙YmD{Z37K' gVӾپ~ٓj}Mp>`3`w%2l*ٔl)TG3w__@;bLaFȌsxB!B 3 a^mFj?!?3ωg&7>^f/ `rD'`&sʆgfRT wSՔ:0?I?i,,.ΪjKݙ` ;cƒ̌ 3`,Muo9T={bƒΌ%K[f,XZ\4$3oi [0o9yKL]`PW@b8L{0߫#5wwwt0שW# HnR75l'Nwf;Ivj:c8O&sj a>i|Z1IyZ Gڀ= $ j%\ .\^F%EElR;}sHoپ t3̔1SL;3̔ҙ)ufԍ֢̔̆#%uj¬GJgԃ9RWEmAI`;j'US{^p G)VPCvdՏW S +BzʣX@7—|ɰfM*k`MqN ̝;Ղ$aP K0QITIu8uT ̩3RNS)NU;ʩZ8- 1*2t'fecSN'M|l*B SłS Dy.u;7*U3p.r.By;#錄RpXZ Z7oXV-fY6,,/̲2̲j;9!Z6s̵tkefUyy ǝǩeu6l*$b55 dc$xN~w;b)+ݕ~~BݵZ׹h]Ovjpqus=jl(h%5Եta0 [Vp[6ہu L'}.$t7 ȬMM=K%coiOߥd ,= a~L{|a]@? 7L03NuA*S?ӟynޮC_{LCqOM$0:?t>e2oļ332cdƘ$t #ә1f0cj靈KYdUʽ ƖO-rk/̿Zt]z^[k 1#?']/7uߜAVXtPdpΌGS3K12Ή=42ϦKE;ӫoi9R7Wl[Z 9:59ģܸ?dO%W$xs#Meф"M->E_ҳo7Spsͅ,[r>r:LeouW%ЙOۜ<6h?x*S"cs(O.r{[kE{o&P+ ~sjH,[)f HSgVxʧr_7Z 0}%K۱L15IJ~%Z^lOo"nWEKb4ⴰDI.sCr]tHXI-٩]\/үb^?%+W>sY)t!]? hl*V˼Xe]Zhg}U:)2ᬭv&鲷n ,s&X}.qq;CSϼѳTyRFRq5׫尰-9Lƒe+vN*i SPfOU_ٕa*P˗7vEt-!YG%a&gd3ٌlSETU(Vv)A(R@-/#/QP^!ǒ+2_Sm(o7P$'QEBumr ՕwPΑs)EΓ RyOs@>C-9jevĦ6fGlJ/˗wU*eʥ-j/+Keru\\E;ԕgt3bSwQneB=M}l Q"?pyRzt.@#tU݊QVM+F=i#Z4j`5V ]lw5NtLכfctL7isr~ȳly=a(rsCc1=??ofqtO'i~F:FP]':t5j@8ju<<ӣvur3ߣ7qѦ@H7NnSu*6͑r+3'$-N&Rn#V~3K;QSD=){^toݛj>Qk_d=@#=WL3I%R/ח /)LҷPPQFv};N֓=z*fICAawУfr} p652mUCw{_Wq=3D$d_1 "bL#SĈH#M114aY0.ٳogyצiŔKRnƈ)i14s)b4榑>3 sof;OQ&"xUJ{w=U~*}J T[L_JwUSz*}J"]GQT[Dҷ*}J*} ^`Q\N.¹X\H#j"r y<\RO΅4gH#ԫ6U~ ~<LdB^{d<8L88~'Ep@p;q|8%ajSQQ6P쾛bKzaRQ6KuT &oF)FgS't64bo$`]| W⛨o%E|TM>yy|֛)ʯZlk 2 l)t73:dP``yO LgUG]TG442G 2H|<*t9f<ƆTigucv3߇gUF:B |WG*1TtQMj&/jVPMފ+Q10שzDC T)*eI<$7ʂ+RFɕ"1"KKW!Cb(D#ch~tC6jFEљXJl\[cUFD!L/0;h(:b>UƆpy2\n#lsO~l:v_ ]WSkc).@xf2_-URR*|V /j(p%87%RiXD_DD$_ <khNG!Ӎ: DY"QHlKHDKoZU{'XM"7( 5\;ñ$}Ґ*mGoN5ixNΔ:*iI.JR$b"Tc P{yDȂQjH1y jȊO>)i\r(Hfd*2\,Fu1sۖE+(=@kvM43G$hn4?6Es1K܈Gs7ckr$9Ց1>r 5EĎFc'cb{gbűh})hM-?Bzi([ܨȽ|C^Tt8`&Hw,2Fcl<5^[3•x^x:WH(RhS#Hf$/ 1U*RSdsdSDCf"᳑8(q\R#UHFd}D2➄55^o+x|2>_C'ؘIT'j㗣x"> >Q[͡-7ŷ@?;[{cJ0Q&>"wD<%^RU,S!S"ҬtZP(ղS]^i+۽N:}zF!F#yyJ%^WĈҢVMZ' (CʠrLWNj9[Γׇ Z@\R(<i]جT@ ^T΅ \JW!TlR&5H;}R i+EM*R9mK/@J#!нaz F5(!-Eg@te&ciBc ,z} n%#l ѧr;p2kq>*Em{ RoaKp~ ?~?gl;Nn-[=E0>\l"SPu`h $OZཱུh+)}h[u| 9!l- lceh gr \ C &ԫd;;|I%KNkШ&Osz+)))~N%%wV$$z7re[nMCgu{_>c=FߢF{Y;zMݕ4k3EГ>4G0<>,}D* 3ѝ?W螟? / Ѣa0t:ђ5k识w g02g u G Խ%^u? .Tw=$Șe:Z=u7`|~XgFт743õo{=^㫸a\o0 ?k1~e S+G?01"jt70`zw |) 2rq ^^<}~a7v1<ȼͼļO1mL~Gs0ی0?`~/1?bz^9Wf_g^c3C/_77_7Q1-Uwdf$˘)Ia3!kϲ4^uYXSY_:)z:au)jj"fmI*^$Oe}/{鬗vڕO֍,e5JBsI(^Rli,Y$EKse9_ W˻TSOgs¬0 i |#iQ< Ae7ոb63Cs/R( )I٩e.?lU:!QKQi2\s$勰|j*(2{BX '½J_xD W{(K%Y Az~Yy\/:k :3i=i->4}L$'>1}+8t!U+p& fRM SՐMx'Ոg܅ aF*j8KC0[9 <,=6I)fTxOz+Ilj܁)n'vJ-1<#IC\zQ: PZSBψg H 0/QcRzzt0t.9!U^nJ ׄ)<].RtiR!p2Y^+ZZn,R8:x\:% @s.tu~ xZB'B'[BMB0V{'Ci3%]:\n{Kcb] W[*rϥJb$7"Whp9*j1OI繄>.:G2_`zE%袮P$X UrJWNpoPrbB9¨׾%̷7 L'Tg:?"8Ɲ1hBL8m6fgH!cZYu7j 4XC>t PrpS '6״@l> *\Nw!W@A0FǑi[-od~-wQ ~nǿGxϢ[ G8F<ănj QUh'ڟ vgӈўמGwhgshvݩD Z]ݺ6]Zk׵/:theA+WPήt]D׭F\:ڨX0iӨT 7:}ڤף LߨoD鷡r} =߮ߎ6뿫.z /Puq7PM /DU7;z-TmW)wP7i y}||5Gͣ;1n7''ю,BǺ?n]rs K[npWxx9 o=A;Wllۮ]{}-W[ŬΎۢwڶ;yLWb⫲ Yr|NŸ/Z*xM^e|U]4^~ԗmy: 9sk $lSAL`^ޓACqƺ誶kclpLdb{pIHuQ`elܶ^ڋNoԟ^\b\΂zǀo}Q?zßa5w6va}vɶ]HͳݖA!~]"5pFf gŶ6uі@ޯK .ؿzȱryޜ7vͷ)]sE>=J9cSk^.kuϕ&\kC[)\螆MYB ϭ /{ }.xgqaromFβ1KE(k,02_6au{>UakR uƗiv-Noy&Xin s>-Wjp1j n+}]m{sWRl Q_y{kw?{÷[^ż=it{{һ;+sW}{>'@o6qʱwU9ր(q]cU\ zȗۏ.ɗu_eGl^똰caqW5.j'j-SY.%ֱuVupj?n:+op;LgskЇZJwb6_oL{AymRiu+|&6÷m[}}|̗?ᛃ?mLz{zfa  $^Aqr*XnO3PIWNp=?_b/k]:{lmnΧ@sO6uo'~Ʋ?_6t6+!a_{Kٹ1[ǯ}7=y!KZE`[{nӞ nУja;k;WЧulhG}!N9g-| ki;Qdj/<;8,پϺr^@`3\*w9pk7 ~dI*5FP I_c``ߗ@[NϞ}tܷygu Nˠzx`*p}sa10Xdd]79ϰlm;_~5]fybote]Ձf' lꊞuqe~Qݿ.ZJ8lw;]ˡkyZޗ*jԅN@aTA**:~JM@OQk7h=JcVP>8=ikq:>}~Νq>L qPJ(܅ee~*UEl)|ᓤ$[SRNy" ;tC1]m''8#9 *9tMe8Me6r\ˁw gE'i^ 6|fƄQy'^N\2NZ=xfR3NIIxSҲhҭI+cI$=N2&S%ޢNkL }*T'S''f\go}~~Foѿw_wVK/6u;յNܭub։=.^mӿ?%u+! + 8f1܅h ACjXgX  %hQԓ+h z$z$6d؍_W2~a7 e` ,7Ja.~[=0ecذpٰ?4\3|Ou`Y帟'%`%R#dnmnen #d1fGƟF=ŏfY{/|U42u=<s7+쒻=ʞ+71xuӮBK}9b [Ʒ4Cr{ʋSP;ֿC-l)[ΞdYKkuqp͵@P}AqfXf,̲ղBXpS, !0i4pH+ a]Jz!%C]B\J)P^B8Pr ˺6iOsN؞˜I3~ޥuetƷ95*fÏ]vmߍ iV|Ż廬yY 'GQ@ߩP->]!|?<~}7䮑jyŨ|ؒ~F5GNUrJ*8B\n;0DO֗ࡿsM\*T}B bX=UPQ4,$KIWS(G(!BrCbpD}=OR: tJk(;UW5cѪWZKmB9h}` e/?G{Jޖ`$)K)\}g*XYT/#PEuGuF{$u\3t&I_;p0=m#7T *yukں}Jp҆i69E lRZ 騲8ȶr-\t;Av6spʯȽs]p~<wYAkSnqҞu =9<=-I{/ц9p{;%]6ҵB:NJ#֟`O 38[i5.m;72s z%Y ]qҽ>k^i T=$UJnQ j=ãV=xӸlϲA3 F*-i$[jlovDx{ oVb=9Ȼ W-4uTZo J=thQ?$YGg10 %9vP~mYNNN:Oy@O+qJ,O({D>Rň'O>I7>'GLCY({L: vlNiēէn*2!ee6],z7#Ii5!lCR?Z 1JvUH'{x3ϼT,I=w4o?A HiΫQR!ؓsv0TT'uK[ޘxQ(gI%W"nx{=ƴ׹)'9r>Q乜OaexցңӃ)Ǡ_҂* .*`vpH6ze7RTywf1i|eGc7%ϾsK b݈/t`dLJ;Ǟy׺:jՉ9͒I 9V4KRG#7<`]au]ؿQ(g_Pڧ&B`}4VB:78y{[)h{,tH e9ZpS^ {e&x= x9S(%r)YRKѷaT>4X㸊tr v{kOdȗhj\d{!?n:ip yhORrIJ[G?s'I.X3µGr + p俫8%NנOI%KɒܭKTJwng5XPoVA=dSvsUZC|:[`X9i׷G<#s74VW^ea{^,ps_b^6o{>'~88)Q <5wCc-=@)!,mQ"QB`–g/piXak'ʣ!9G\*BlC= )zٮSvr*-r}p|Y 8e_=Y1G5.C2}Fr&Hl&+_V݊C=޻8njrh- =)ACp ϰRԘk_&(ϊܦ^2U y1EЪ4ԣ'7=2V,[usb che y[5} _GP7AM&dRՐIY Lʊ0ZȤ! 'ȡXȡxȡȡDȡ$ȡdȡCCuAur0PB 9?]BV$G߆k}MG1MG#5?Tz4 wطяiP~i oAMQcL *v1T @[/A^@>ux!wA/^{m1ym1oUEK[a>VA[a@O'PQ?jL =A]QoGƧ0LߢME.k*:Xƪ?anh 3i9vS̱j=aV=a{5FBU?{3¾ISP&B=/> >{fuw߇*3m3O[F\иUDƭ">qX[Eƭ"Gƪ"DcUoh*HcUoj*XcU_4#"JtD|?GP :!ZEX@"ܑ7g3zus<y^PڮvCPzR]1z`Vn=\u;L09?,ŴT]FWf.#h 'gseBP*Vh%ŀpZԂp,*UqP\ҴۉxaX2?$-6W/_pQ0HtA#IqbT" g`;DhUfK]ҼHKҊP#UINiX۫[R`{^~K|G5%~^;lY{| v3szT7$z[s?0fENP "=^x*r+烶ɜLA;| +_ r\*7]TaXtI `O<@ѲI&pW`%E'C2mG\3WS_V,h!0xl6%ϛ\q/YKqF*&__޲r-\LG&qfsq ֡[mKc@n +>z{edQ'gt1]ll6r2zf-Wi_S&F6[f^:Ff}妹n,znmal@Eler38 M/@@s08̿+Ej3oےd2*0)tkM}ݷuO!AD˾Dz $D)>D!DiCiz3 D~lzJz Q ޛ!@[Qo-Duނ6_ طo#*j(y_CȿP,2Xh(Y_Bu]g "?(C/.D"G7 8|p!B,rz!9%DD(DD F^L6J!BMf@P3!BPl yyuW5V@ş? * eE2`]`e# 4y{Ivh;_;c") >3l˶謁q{CӛSzve Əs]&joL;ꬒuk[2˞B|KrSc(XS f*kl8|n3TT]ǡA3g%BP63Œ~i RTS8ooMKj՛Rn8x*<^ęy+),)W:=״t{^r)jz[V9jmfݳVL\`+6 9{bZ *f {uTZ47%#FaQQd \bS&P3nImL|E]PZ")r[&< +=ȕ|OYFX#]8ȝ2|t(t>:Bn)E\7=};=n2τehStuJxG]S+,f>o aW.T^|5 ^k,%M-҃PVKqVk_pQr}ޖ*6fZvM9[t&ۗħrq#w[`vkuAM2oz"ÄEzHpέN.)ulSԔՔEٲv_ U)3YL~Ec?[?qWOv=|@֤5`5aLVG@ cF^҂_]ZS&1V3B/1֛|U}QjhKc]N/ޖMTW$)z[_Kݘ1m, VIdv]ǜLtvæZr`~fc6><HpYL( 2O TZMclrbؑǶof_/5 BǚfKCyc-5ӎ ^WU{>{8`,Y6rN+4K$k0.> z.q~%3Dx>ߑ%Bd*T!^6([H5IU%qh%!qIjutRuɎ|f݊9Me3py6r/ ma6UY?FtcͨkD0R6aKk@KvQ꾖{}pIv=%E K4Ȟpxu <5,k?`Dp ĭ۲m+n<&)9Gr7@O \] ;3+Kz2↸#l{!l {V= Λ81 g^;&bNm~HX_ m"&^N,] Ld-ݢX%"ȕ̇t[slPح&i ݡAt? A/yM###7BFzGṛ@"nDM+u#nE"݅>.J͖W&Wv }]>CJPU׌`UKˠ45g_gDLJ+p?hͶk͵ھ֗Vޭw3.̵=۽S}dqd18gٵa;)t/Y#]jƧz}_}t_'oϷ_Q1QzFyfzעVӀ{SymG:2c3E)EKrOL,vw:MΆZ#޳RTMYnFv=Fѵx$:%R}`FMQ5IQ ˁF%RU~ WuwU:|(ﴺg}n;kk@o_UGcU}5e _yܵWuϼe#j6TkmvKZ׌G]@ksMF7 b׉k|WK3C׉}J'X1܍x_>NL=E_[ &}sUڞWg[3Ϲ6*v(iF U9?|sKθygvptWf|׹ 3WHC -yXg'Փidxt- sH7r\[0"2rDmZdχ QzyfzFba`F)Vر77E} +EUm@X5V`5X cq^x7X7.@^aGȟcþ `?~պP21v|zWA!0o([5j/!_p 0cտ&aƪoUS0c7i}0os0oyaުüU0oO`ުsT}*O 3hsϡ+ . FXmo;~Gһx;wЋFzV/ PKBE/ *z έOj2eF-SZ,4U˔/_2v+~ȥ@3.}K^ 4KhM ͽ{i"2+ZDFDhy/h-"/yQ+̩sj5œZ6Ssj0cA)iQh}>3 N _C _GYä(g!*7J9<* j[hȰlXC 놿B Epn8GrReee:˷ѯ\v\v_rL^&~L#0_(؏ } swe񛜠xRSFZ\?mfJ*=٢?Xp4!e"cHi߳FbM:җʲffwaTJUKrP4U$a\ϸbWjh֑%7ͼM"EMmEҷ{'Oɯ\7/2VRsM>ydQ%߀\\WQސ[{!ή@Cb)p \7&|`qL`R7qx&Nj༶ugä}pҢϟuHR+r]w#3k{)gZJ|PTi|F_.]ۚٞQOf"w>1ٸ;WNZae]L7G?Xp$ㆹ)eNzi7/???xk Mc߽@T@FB!eĞn3)[k:F5e oŹ??7uDр+0(-ZXT!cE'.yw =T*reγY|†邉텁9Ӿ3K]o3̖6]Os(rx W?_B Ϣki.(G\:|Ӹ׿J<50i0!BO{-Įk|+ĢuۋErx8b8֐+Am&<ݽ\ z ;ʝKr]kbrᖓU}Z W]o翋#}?bœ[j%ݪi0%n) *ߨL.->0oޖo3 VBM,%H> PUő&>pKUq\Y%&%a^苽D>tϸxʛ4zZ=y\nEϼgL2W=!7=$w'9=󞓞Q;")ָYݐfT֭-nj)4^(Grk{[(w7Կa=RhO+Kg}gxOgޫt+ S>`?phڹRB45ox["m]գRŪb3FQH37vKE 'T:üzHݭIƉ,5zUͽ=IgrLZ漫U<jjngeOkShS{sZԩw{{iV+RvrF'` #;#[UAUOl9hq%0 .R\iŴfhOfٖ/>a8#;{%Np3yCDF#/J\go?.5 E[]PwTdwTT:%r#z0lpFfG{=YqO*ήOR~Q穃={FeI,{Zr/y/{=kVBE =Lz9ShFc].1g64 2aK G<+ab^ã^b< ^h*o|'D#OiA 9$6{1)MC-H[4ēTYPzazx]+^O9nW1>ޖ.& u'&;B Fsw%ċ_B%\(kdu*wW15ZOpFe%5Yr%7ZIe 7 ҵk2F%63lUmT=ChHok'YL(XAkUi|h+X᭏^Om{~jBIke!0 k5ZW._V/ܭѽ׭S5ՠ )}$nXcشΐr*1$Gsѕ$8[ {V/ ;Ol,}ML0+w ebXӉKc o}ߖoKk/T$]N=h/M'W VjO5hvoTO9qtv}:*qLP֦*\ujhcgP[ҠsI]6HϪSegpR=xV;+vBGw%ŜZҾ+m{)EAQZax"321Q7tW0)X12<}'"ՠ&jbn'XTt;srssv6afqs(}ud }-1hN*rTeEQ;< OR&<v|]NntR1Ю`JrYÜRi/mSc;:g7)E$ɕ^T'';ڠF{ieܨ’rG°fFغa+JFi,ud EGcbvL$WTJxڎ58V_nN98=&xmOǢU.%+OuَU8[ !~[=QXRRl7VmOvYzO~]UwƮV*Õv!>;gF%${{D:Fr;vIekmʗ8|áљ]B*v H՜>,hLΊkzr؄{S^}pҹũWL+㱝[v0#x!+.֦c z}MV -\{Q֙Zkn94e#zz2t9 qާݿ;c?Z'*o۔6[Bg޿fM1m5z]u^=IH*4v;%ө v,)A8kM2zzqqD^acX˴9}Xq0ߔUiO슋M3 ٪3Vy0wѰ%CM IY'Q/V;8l=-ϲ^O 6U5R}Qn]q;z1äw/ikݚݜ>W5]ɭqxqٟ};+^1L2Kc}8t`okJДNɾ"W d_;@B]ur%KxLڄoyVu|&ri+'2-䩧ŧx顟Ho~[q}yٽςv_9䳉\5i|:uòMP7I}l }jÂϓZΓc$}'$@Nd%59x`'yx yB<P<.<P^x oydNg6WIN9f9ɫ}N1vzy^ Ydy{9~+k[6=rvQr|뺹:ZF\."p8#Փյ(G3z% ϓc(~R2p,Wq\':AsuR}q!,Z~$~ZwD #U|kk.ښ㭭xkk!Z㭭eom-[[xkkZZ=xkkZ᭭.ՍzV/ڄV ?һD,EwI#_gsڒLO'~ޖ}g%Og'uSΉ4?3: G'9<^9T9BiBug#W<9qGI#i1>w[o;#ǟgMw0;c wX;c<1˘eL2𿌩_FI wg%4xBD'S/~T|eePL] M7? gO_'~ D*@| 8 .G/ȟ K^ @J\?jCzHWPs r*{ہ&`1P,G} !ܧM/!Z7 Q; m!| ww `)Bp;Us_WpP':yC;Rߠ(#؁@?6x7WؗnK?D:Cgp AA[{@G!^ErpjGjk?(R&D䷁$"{DJb)v _~ :QM%I_{@^~ x}Ө@VzXDY'ti mw_ E@wǀmjρg(_ZQ?tE,D@zv`5$Ⱦp;p/Qg(u_Y6 u CKn gO/+ 쓇~+$nR}qŘv? V ? ,7 s(oOHtKX$t# ȉYOcbb)f)|ctBj36I=J9~IPoje~`s(7_&|wl&Ћж0qxhK< DorO˿C(Հ߶$7 fp#poB=@dzvz#F#SدY>O {hY >y:lęED젽O&cE}"VR૴nIЖ(AߠEo-r"z6ـ{m|mRIێT/GEF̖E]$uL7#EZphEst"! ǀF1w9i @#2%hĺ@#bÁQ|>7@㱎[bm8ƽ׀9%yj*"a@wi4CnCzr| ؊ԗA* @@,j⛠ `cRhMXGooett#?!xil o#3-}0c,+X촰?,vXx<&x')ƦiRxBُ6q)iC n;Hd;K5X?@ 4 nE߅T#!rmgc9u OʰW);#v9j3Qг 5e`0 unԈz}oH 4Ωg21҈.d@ɗ7I[$E3qD ˙ͤ6̳,bNbR>xxL#e *~i.Z^HH|X!ZceIh$2D4_"g(% =y)/4h K<֛2DRXY Oo>OFsEZ`Ĉ= bǖb#2%)F%.~ˈ"OvzeTt~A}E܄]Tc3eD<Dwm*2d4NCϡ6NwZA8D_Z|i []4Fӊ99O;{nVy;#m"ىlk yd#/;7/{}. y܍ݏįF~;U AHHZ` $)X W굑`X?~wP݀g{>ѓ2XCٗ%@8;#p [ e\B/3ylշ;RwK|2V4q~Wَp: 0!!8K(|uaI=%C҆pU)!~ L敶MgRH 243 Ҽ<4W߅ӅqӞر<$-΄ag4 Ay;)Qsp2!<{\ELN=u,\5hޖ&h̷?1c䙇u"wgM=,8]͕ ,4A^~-2z7 a{Bqd$'n[f-xGƽK gͤL-m`.~%~Nj0B[zs2 S}oG#q3[X$O>F8DRx۰_+i/~t=_56˥G<ю~ۥ Mlk>^GYYssmI=rCfL6Bf9HP0\օ> OqOd m|.ܜ\S\SlM?[ˮؗ8Ln/sU9h%&ȺZbu@q 86dx|zղ^izBo];}^ Q#\a%6ՕIsHR:$8ƚi9, aiM/./$91jꀒ};#ȣQŲ=^#!o+$n&.:h1 qP6S£ Іo0lSzdB2.׾_C^ԵT'bkG?DU RGzHoFEܳYXMUB%>C'*RkNo{/C$&f<82 er^qWZ\X%$aqG plϭ #osud74˵;d"Tד޿tzp=ȗO%kr-B> S ]K%W{z=3vTCةў sqfqB[GehiB\}],Ndw>T&n g*8{~JGKb"\0_g^b$l]B< : `Xv,Ns}NN=؎/-α5'g8 QVsl eT[{Z,~ZH>PW%Dؐ25BZ׽H~e[y_^x7w5}KkxȄ8v;j9ž#YOX{2cZμkR_5:|^Gh ND5#60wYqc/N8+f >l)Ę<36Xc xAL?~OĺbU%q+إșXP]5>mޘ!אմ:ӽ>OǏ_[+؇{Ա)5`1+377XrL-vYR^ yL1flj4kfޗ+Yl%>W%ƚE _}8V8UӈcJ_!wbİtY>΢t[[R>|ZWz0{ $DǦ_+W8 /E#0cnkӑc{r)w Fr=ZJ^~mږRDOv:;Q$$":d+w6ބ~3x `-FڃSK0p=|o$u̿(7 .ƪt8Xb!סߙ\į%gzc0-1c7ή$YZR9b%kq2:>}yDU`Vvc Yɺ~Nzz٧RFpUH΂BV>>#t}̿ˬ@7^] B} >GT8m2$#qmAҐ03bkH둅jrCޅA2مRvG- !*O6$y0.`C$8V` |` \B{Hsu (|{j֬WN{7 +T2\2\"T< 2<؍b7/T~=KO2`>}l+x2@3i z̛s74 2B_(f G!e`}o G@JCשp ~k<ߠ`2yw-ԐX1x>4qSlS$dSnʭyJ쮷Lɾ')u#fuHsO %0I=HRBlHxY߃OGeDc`[)` q~)O)y>5kgdz(!nHF3#bA쁉Qc~od2 ?F}4~!? رC1pT&{I$u _!P_ !.K+HоєsM=>Av[\M} z~ GHWрocHB6W!ŏF'!ܴ^,(-11zп_ϻ5skppl' ]aE~rt#캈=f!,cq̿{?p/;c~_V!!]ԾVŠ{--| rl/]h&N =W{ʸݣ}p%q'H|_w!263kfĆa!]>4+K@w^_:a@#{ aL+}FbS mV`w1[@B#tވ^mo#rM?h5b*n|Z,v2|-v Kѫ B)6ogc>E Y[RګFEт)bc([P;]8~w {mcf3٥"Wӱ6o@.a̿M } /\{Xbx'Cޟ h6 _>,x)\[&XRg"kΏp%\݃OہWf889~6!x^QC_agȾ{C!osD.p/1ybFX4{./k,8zv?gO`f7uXiQCfطčY%Ģh7oJYѭ[\^ro {!w}1,! 0˓wd=ѵnLeObz6Qr @½^[ن~(J2RX?Jiy߿iXb$SW_9{ѡ~pyY9Jhg(c=_ _@{ >'Ar#OWz"䍞 WC45[BF듞jjm@ݨ,E v֧dna Qݙ;#ay{Knكdnm7v! ~N ڋcm/؜5)%Υc睬Q1,J߃>7 ª?C`g )V|2oSHྎ_Jª.l9p2 8`><ë ЍI;)=\p:yDu(ձ#,>gC”PAχq׫*睧LWIsΘΞ~ϛ'ʳRZ*b*|TmT'[͌jO<_-SqS5:AUU5L{Yj:[9˫?âofĿuae]*zxV%bYV L&w uKsb(8z5(Ѿ}1o?%ޱڱקR"S.q(5w;iyIꐛ|F?%CR|H'$WI=;p)$楊_Yzޢ n%kFjV(a;yyQ7]6&]ʤN?xOz&n\TZjLk=Ss|4;>p|4Gw㣩g p1SS+lrW_hEws|>_||%j3o18O{\]L%ƿ_•?r~O망5^ozK;wzR[J.+.URg6$QV,O~/Ob?*G^5LMlL@rˉ]9ˢrN'_WIE9_~c7E~sD'Vh5oۢ"G~G wF'.h+h'{;}v-X5wԅoF«ܕMj]BBv=|O2)_-J7JKF7mZmt6ZǷnF-|Vmom4M{uh:Dszt5]ճަgy3 U/afz\nRv]k57u|Ko7|ջ].q}\X*,2a˅u2L)xYʒWt%ʒ,_YU+K|eIW,Bʒ>^_z>9NdDD*_\sKznKb'_\%}|qI_,_\җ ⒾTWe%*15Y]_iz%k'Ɇdd?< HI%=38yZrbNINON7ÒssYEfDrIr|!9-Re36y4yԌK)2)c&T&1Sק7R7n2SSi[SMfV{ԡ!(}8=/}6xvV&ٙLLG;'sm:;/sCf]ِ`enfg6e6%2[92eG2322Oggvf 22ە3U2+3G2GUn &;<;^=ސofd؛33l{s܃v|!_wʗ]e+{|#_r޴+nVJWJ5zV_Hũj#HFw 7d*^%_w%(BZeee+azCJ: %Z)eSE,M,Q5]^r[o;$NmKr[t8E9O4dvJszEۢi[ mmɣm)MR,mK9ږ-i[i[-Yڄ* h iMAP6mBmi Ti T]i T=i T}i Ti TCi TP}8 @5;ŠaE٪E0Y]ZZK-Sm"e2Qj$LuZJ-SݥRTOe2Gj/#5Hʨo#5\!5HFK}QJ}QcӤӥR_D/j5Yꋚ*EMfH}Q39R_"/j\:W:Oꋺ@ꋺPꋺDꋺTZ)E]&֪/2w(v6)h}-mQv{WV6nYti1pLrs"5MU|P7 J~^UV9jڣq~j[^T/UZ~zvp\}Xkօs&L7St ]6ڪOzڥ1jǪ8=IiM=CW\icڨM;5#x9ۜkn6]?{y@1[V]7u|3V[6c3:gت-nk誶ًouuMuo%>3ayDqM͉zKbCb?qGP[[SG%'\)I|,o'%n&m*%OJ3UMarLrig$'$'eeߙV M+M-gߴrTTE2JUTYʥjߧꚵTTs.-5lHH7VWS4_z|"+eͷ  F 3 ֥6mӵOA`nzuz]p~z}_k?֥7?Iܚ>kp[=**LL`snnp_~a%84x <:x(66ؖ<<<<,, dɜrn~!7j 17Zҍ}qƲnOwxō!{Z7O31}2#nD=wۂTȟV+n4G eK8+ꦥ w[|wŮM[PשNE=R=ד}~Jte۳;pܙ}^qs=qG;/rܕqwewqGU;qܕ}wqG-;osܕ} 8̾qW)㮾3w9Hʷg?4s(Ǒf>4i"|ip/#|iH#4ME.F~4c#F~4r4HHNEХ{ 4-HxH.Ʌ^#H.k$Wʗ\i\\Y\9\y\\E\H.5KzR^#\k$Fr"TiH..%%wh$75R5HH#F4R=HH#"Ԏ4R'HH##44З\H3#444LH3#4rBVFZGii FIIɵ75Ri]F:Dis#t45HH#="4+HH#}"4/HH#20ɑfEifHhFN"#E7#᪞H??Q]l Mܔ6LyswC¶;N ;βvkv]hϲb$,L=N]_Xi8kW OM`gb&JJ2*c*I`.1lkZ!vJjNbcb+*mw]vcڽ9J]Js`okMvٮ?y82b}{iQy_\sJBɭ{zW^~鿢YYp>={qq=%be|Ώr)H꺐/i:Պ<]JetY]NtE} )]:{]E-HNWGwWW>7bDbdB#bDDDDDDc 1`"0 A%f#1b-Fwu]뮳,vUOuǩ~ld/1 )_;B6/Ý34tW<n;kp?:/.p129ύxO0JK-- a0IxH,<, SG!zL'jaP#<-ڄo·;(hD!:,1[tHDYt+DETEM.2ȭ)Ġ_ȯbVv%&Ŕ xQғ,=AO33rDrTTiV>SZϕcJr\9TN)3Y+Ҧ|WU.(ߩHDOUjWSR!;Tʪ[^էR>jjZvDvTTk>ZϵcZv\;Ni3Y+֦}׾wwZ6jY4D ʾʾ/2x! 0(8M$M4@^v H/2.4^IЫhJi7ڝ^M{kh>E-t-7ЁF:DKt0̮F0zNGБN:EGӻzK}tD'C>XNS裴>F+㴊>ATZCtNui:΢y:Υ|ړZO ~N/_/VK~B?Ogsz~^VLb<|La*1,,¢,,,Ҭ3+Yvc]լ+`ײgf}X!vndMf6†[Y ea6dwQ.6ư{XQd3ĸhh 2n2J-V̸jn 30# kee66X٫q/dAz1xIC>lSG c+Ǎ* ژjO4cQg~n30[/ yOj^#: -啲R䕲y}+eyc^)k2  JbU vmbj}];V~ͫcw:4Z DiTu*ަߚC~ߋtdH;D|t'|]n7[g0JbK Y&6goA'K\[X C,qp%Xc;r:? yՆ[g#3x!2~"%Xo_~}ڿ~KO0]0r$vmzJET4{̏W|9K< }w7> x^忛|·7XÊ4Z謋 q) fE#?I!6=#l {UZ6MgO:4al{g/%-^?WCggXw_|l1gז? v>]ky0m e; ]h/*DP3}h$ȏ R)AUB_a  A,܎F;;B^+fY,ew&vkWwv~//SbX!>&VUb8Ud4q:h2yݣ ˏ<^A;2nUw틕'݄xiB_ Y&Aߠ,3@^CHEH׋(ٗ(`B~K=]{L_t`g)\.y|>  fU0'Ps>7M1UBϠg3PZGv⳽66vV}53g2t=|#PI|Y(p<qro, x]mWǑ2~ܐ}<9uw]w/;<ׇ}~ 9t0#;K9@`{U}!RQsqX l6FomF!6l!P? ݤcD 1??k*Vdtq͠JTL@Pǟo])Bz7qlc|q>m6gvοg u|"<7Y d(V}b(}9xh`N]giU[ |=O5NAN Z-o^G֨5"]H";]L^DNcelcFA.m?kT||t/HEM2`}E~ NmzBTO}~>A@&23s,\,:KXGv)aNrv/cl{MdX%{U'X5jؓYfY96=氹e [^aK/2fl+U!kˌ2+`ZT*\.1O$>Y}j'} QTa_1TBJX(J7y|@@>,,7ɟgr|\>!O6gN)嫑K+|Py#H_"C>-e}< Mp ^A}!.t:lb!0BN=M0]f ERaZX'l;>$4 i h aȅ;C֓Zd@!$Og:sil2#G_[ dҗSq $-Ssir x|9׉*CH4,u dh^_MbkU`Pր!ò  `L L`R0-9D;qrC^K{|oȯk U: [|pz !\ϧt @_ ^*BS& 1t !`üZUn4W*{&cqN3wCk%"t\R% ȅ_7ȃWr\6H^'),>tIL) "RTJHI)&ť2RtcAO[ˎU@Ms*,DYGSs%"Yf5 w7Y7NH};ҲʮCz}"$2])W]PԐmSCt6.~ kK"ڤ:p_ǿox+މPSjD15&ԤA^vVPs+.UjUWBZSDAިR&+BTjFU{=Ruzzzz:BSKc|ܡ^{9Xij/:o"VzQTQ/ɯpmw٫eoޒ3{wM٭٧\p2\aWٕ*rJ]eѮqrWUjpq-p-v-stqwmrmurqwrqκKOOV)Wʗ R4P, FJc$iT%J3YS|/Kr||_77777777W--mm.(6ťx! *qISz("D)Uʔhe2J؇e@Y,SV*k feҨU*MJҪVT:T&ixnra+ݮ:aU' Z֫"uB]S7~ڬ6 ihfha-u:kyZVhZ6\&kZVg}-k˴mI۪5jZ֬j6PFi\ڝ?DatK'rZE:.2faz'9zinQ=z^֋`}>RO*}ޠK*}A߬o~T?,Ȓ,'+d 6 cX6*VfYl[Ȗl[6l',;!C644Fo4 c1m3&SjcQo6 cll7q8f46?/G''+zl|"R j:FNn>AtTL I3{"s9f2ǚfYmN7s\i17l4Qyl W@ p   @y2P, ,  l l   4Ӂ :$`8 v v{{%`E&8#8;8?(4":.1%3;/x0lOB(2BP219*JBCBCCCP}hvh~hQhihEhuh]hchKhghwh_`)j Q&a%ldcs8/#+\. ãpM.^^^^n  7í8"$DH8ttEzDzE"%HYdddldbdJ:RYYYY9i4GZ##mQuDITp4͋EKѲhy2Z6DDDGEWFDG7EFwEDGED[ǣgcB,+i13c9X~ ;VffƖĖV6vĚb-ϊZ܌GxN<7/LJG'+xKxl|BHd% -a&t"'O$ %aщɉDM.ѐXXXXXXؚؔؕؓ؟88hILK\Hڒ7'xCSK{g0?9(9$9,9*969!99YNNO'g''%&W$W'%7&$w&w'%&-ɓɶr::z SSRCRScRR婪TCj^jajIjyjUjmjCjsj{1/u(u4՚:vi-mt:'O{KCӣғt]!=' 8,2&>)5+'?}(}$ݒ>>>2YwF˘h&f3ޙ̘̤̔LU63#3+3/0$<*6!9=Әٛ99l¯q[͜[9wr6rBN:pMG;'d+[,n3dqvVΝV/qq];pk[#͜[9wr6rZ}e<}3q >.W}_Ux__U}W}5i;\s :\x25 >2Xw#{\ <%!>nߓxuorŹ?!"\ǹ:8[ƯNWӸi4nu<%OK5X羍[ƭmqk۸mV_;Zk=o7 | og3yߙLny&i}@k 佂W뇹磜}~]OpN|_wvqe?f$3i6Y΍{FŹUE8o!fi6i j7QZ6mNb5[XDF;A?>aME\(/gޏ3ϙ3WZ]'Xgس`#Py5$(3-OD[6e \X'|k㲎p *GIqS]'&elclvZq`ʼ_\)(GQFm1}\[d-`'3\!axd]&SߔZ4"L{_nn`gs9fGV4SV[_k<R2Iy`3Who!{&5u Zf(fr\ZdpYdTO;a}N6<3vz;; z*T)EWhEO=ƆQm,cfV*X93zYnL쁅>Yg {SC?^E|ZOn<ɉ_z3o: ..|OOZojֻZVQcp\7epEM?Qߏ~t(Gx.]u2e \%BW#t5BW#t5BW#t5BW#t5a"&a"&a"&a"FP<x(EAٟ<1r\; p:kZohzG~Lu#hA*GP9_`|b+0 V`nAغn C-a0nоu>1:E4PDC E4PDC Ey}G}!dŋ(? (̣00 ë1%sK-d{a(PB[ m%Vs m%'_ϓyd|Cf 27Թ 5P 5P 5P 5P$A$A$A$At]Fwet]Fwe;Z6g5!L,eb)UPC+pWP,2]enUUm/ US*J(```````````XH(=t"ݣH(=t"ݣqh=g٣qh=gѡ9P-W^zSe^_O0: ..HbWWUzuի^kxᵆ^kxᵆך䶟Szԫ^=WO.u x]^^Er+bg}Ano{[]po,%?;l~+3Oo>V~;HE CKF<mVxINqϟ gS yO3l2O;.-O:7m^<6FF6D0152650B64DBE4A908BBA0B633C>] /Filter/FlateDecode/Length 21149>> stream x4e\UQN[-$8www]5LW1?f=]U{޻m'{帢kݢ1;C1txh>Pg1nETlvVŦ. bŮ[/XbY^> ̇[A~࠿C!'>_jq1+. +xOѻ|P8x[q)KTi3gWIqιŹQ\]qŮ%C^-ݯݯ|z.T\;5.*aӋ&.F~-n~˭.׼3ţwc_>1ϗƓ>>Wya vF9[N(~Wwo6owx_Y*R{7}):O+&)n4j2=.\1fL3صbڦb2ńu2b!}3!)3?:J2Ŭu$dՋ,=9sCݷ{byS,PW% )q٥xKh:T[8(,_,_Iufue˺rC_.Vp9V +rϬR[#Q՗cŚufSl1lgy<;H;Qd'2 sw M8N6n/_ ыՊKïi3S,Z>SV)\P,Ri3pbZ7P+/}VXX)giN\ׯ.pJ1>-mS]!}Nc9֎s˥T=yyz}_KKq][]ήQۻ{n]3+99A ;P-Vs@=t\_sowB=v0jtXׯsz8Q`5P{`xPUk|-,ˢ6_#KQGB4>4>u6>ւь{]N{+ԫ"@t A}1:CcaLؘc\ 0&Db*LSbzL1 , 3`F̌90;fly17\ ȧ a "XK`1 ,e4RX+by,Xa*ƚXk`-lcClMf[b{l . ;`GݱaW > {`O?~8q(#0q,NƉ8'$p N8gLsŸゎ:.>"\p .WJ\kpnu76܂Qn܉q^܏G0CxO <$dzx9^xU7x o]|9>>@j~ >_K|o#w~o?g'~6U3WQRFƈb.jD  F#`d02 F#`d02 F#`d02 F#`d02 F#`d02 F#`d02 N3ΐh\$2M3jRF)QH]2JmFꢔQhc0RRF(e25E)ƨa.J6F #uQ(e1jRF)QH]2JmFꢔQhc0RRF(e25E)ƨa.J6F #uQ(e1jRF)QH]2Jv= GJ݌E"_(e/96F#H]$2DF"Ѹf12QE(e1(Fѿ_D12E"(e/Q F)ѿ$ߔ%n`d=m;ڧM\ #`Fo;iVE #hc7[#bߎ=Fͫ^t}Ѝ.FG}1`1菉1!&¤aZL1TbL13fLsav̆90sb̋\/ `A,bQ ` bXK`I,^-ebyV*Xau5:Xgʫ>~6`Cl f[cKl==v ;`G ñ+v8{cO}~8 p#pFHq Y8 'DqN8g q.y8B\p .q%µ:܈p܆q7]^܏0Cxq<'›xY^KxU7 [x]|>S|>ҷ3~)PMcW B#`b$21(F _1b5E#`4Q(F#bD1(F"ӈb/JQDXB ňbD1m6ƃK$2j5?R5DF"Hd-jDF #ȚZh\d0mF#`16F#ѱZhc12QE✏EH]/UE_D19EQ_0rF"|_/ŋE x_.X FxѱH].5FQXT-Q F(^t, F#`/Eo#(^d05EE#YQH]d02mEѿ(^d0W\r8#|a/2 F"ѿi/5E_0F_0߿IӪ_05 FSѿb{h?kEs\Mu/NqsWA]Fz@_&w^X`\1&D`RLS`JL1 t3`F̄1 fl0\`^̇W b!,E0bcbXc , bY,"VX{V`mXa#lM166c+löcG .bv>c/쉽qþ8@Cp0á8`$F(qñ8DSp2Né8,sp6%"\q.åJ܀kp5õ7an-v܁;q='x!3|/%ߢ]>mkui'_+~/XQ(e2JRF)Q(e2JY] DF"#Hd$2DF"#ȚZJRF)Q(e2JRF)Q(e2JRF)Q(e2JRB"#Hd$f֗n_*RF)#hc31DFHd4JRF)kk!Hd0jF #ňi056F#QZ޻6FE#Ȉb$2(F"#hcT4(F"x`45RFE#Ȉb$2(F"#hcT4(F"kk`hc2DFLQhc216F)QHd46F)#hc2DFL-`F0#̚Z>u3݌nF75 f31#V7ft3Y` `F0#f3`F0#fCED1nFE#fT4|FQfTևhK7X{ywzhAt h/0&Xc| 1&?&SaJL1-f 3c5gl0\`^̇BX`  ,űRX`Y,X+`c"VX` &FXb 6f[`Kl]b;l#vð+vp='b?p 80#p F(đ88p"N8 oSqN8glsq.B\Kq.Wj\kq 7an-v܁;q=~<#xY SxOi<<^x /:x }w>{c|O>_k-.?g_mw??EDjmF#D=qŵFƈb3jmF#Ϩa1jm(F>ƨa֚?B)Q(e-$2DF"#Hd$2DF"#Hd$2DF"#g(et3DF7ft35Dѿf$2F#Q(e45DF"#Qʨv2B7f3Jm6!-,Hd$2DF"#Hd$2DF"#Hd$26F#QhcT4DF"#HdM|-1m6Z.Hd$2m(Fƨh$2DF"#Hd$2DF"#Hd$2DF"#Hd$2.#O)Q(e2JY_ m(Fƨh$2DF"#Hd$2DF"#/Q(F)QHd/Jm`F0Hd$=4Zv4&Z% t]F/bt41D?1x`BL}MI1crL)14az̀1f,av sañy1X aa,X0CX]Kb),e,P,"VX`uհXb= !6b3l-%B{kom-;b']0 b7 {b/}p@#q8aHq18qN)8 sp."\Kp)..cW*\kp F͸6܎;p'ݸ>܏ x1<'$x9<"^tCeW^xomwc|O>_k|oUkgBo ?_ o:ȚZHd1 F)#f3JRF)xqA7B\X(e`F)#Hd$2DZ9#Qg35`F>#f0`F>Qf3nTB0#gt32nF)`2nF0f1J݌DF"#Hd$2DF"#ѿ(e1RBhc1m6F"(e2m6FZwE16FEƨa056FQhc056F#Qhc056F#QHd$2DZ}Q(e2JDF"#Hd1QsB"#Q(e2JRF)Q(e2JRF)Q(e2J F0#f3JRF)5Hd$2Y_ky=TE*|F>Qf3nF #f35`F>#io}v5P)Ck[wz46 wM_45MCaӌ46͍Mc`P4 6xMc`P46 M`p46 Mc`P4 6 wbrSc*Li0fŌ3c&̂0;f9ܘb~, %0`q,$X+cy ŊX+aMU:VXkc-u6ņc#l96Ö[aGlm= ;c' .{cw Ǟ{@}?8 Cp#1GDcp< 8'$Spř8g,q>ÅJ\Kp9.W*\kpnpn] ܎;ݸ~< x <$Kx<^x u&x!>W |/ eH}#~'Ejkikqirkik񚆻ikikFik񚆻Qikik/?Q_d0E)#ѿ_D12E#|_2EբQat3jE)#|Z߽J`F"Q(^D1݌6F xňbt35E#hc0jEQhc4.j FEѸa$226F㢆`T4DQшb0݌6F#Q(^t3Q(F xhcD15`Fxѿb$2 FE#hc.2 F"`T426F"/ƨa$2Q(F#ňbD1Q(F#ňbD1Q(FH]d0|F"Ȩa$2 F"g4.2F"#5y]{"E0#ƨa/QnFbD1m:b{([Iыnt =}@c `lI0Dc2̃0 _렞ҫ~5Ԙbz̆0#f̘scfǜsa^̇BX`  ,űRX`Y,֬c2VX c XaSl!6& c l5c숝0;cWa `w='ƾ\<Pq48 $plj8TqY8sq.E2\Kq9?Mw\qʈl,Sf6leedo!=7{^d~Fquy8 gp>.R\Kpu*\kq=n 7Ov܁p']~<0Cxq<'(gx/x/x / /UQx m.{/>GxH}jTO6&`8w'U;0m%Idxb6&i:(&icHRicژgNicژ6icژ6icژ6_' fJ% f`_`& fJ9j$2L"̔2KSʴ1L"S1LS$2K D1LE0mLT4KSʴ1L"1LS$2mL $2mL0L"ƴq8hcJ6IdR(&b6x`g ic(xb(&ic(&aqaJ(b6&fژ6xb(&icR&`D&|b* anb6&u7@"Sô1QL ӿD1QL S4.Lӿ0mLR35LѪKӿQow։[j6_ژ(&i\&(&U7Yí6@džNӍc /cc+aLb"L5|SaR|c2LobJ|`jLi-L0;fŒ3c6̊`^̉907w1E}̇0?‚XKX?bX?XKc)`9,:VŠX+'Xa]k`M kc->ϱ6/6/ 6ůkl`;l-[lm5nc']3v>cO{c/ş? A88 8#Wcp4i8$Sp2NŹ8o8g,Kq>Å"\kq9.ÕW*\[q=Í7&܂{q;nÝw.܃Gq?Ãx!'CF̕___________7x4*e kD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,KD1Kt,K9Kt,KD1Knp#|b7~Isj /bL|_ k_W1>&11I0&6bjLoa:L0fw1+fUa̎0'|NgX`!,E$~Ű8~%R1X+`y2~`UհZX`]~_`Cl ~_aSl_7[`KlbklmѫgG석 vn{w>#}8`Cqpq 8'xp Nit37qy82\Kp.ƥ*\+q5u7F܄q nmwN܅q}A<џYQ<SxY<x x5cԱ7Q;xxC| >gCnm:Sʴq8b(QL"45QL"$2QL"4u8_ichJ9z3L3LE3Rq7@9_28xOL7t3Lʹip Ȥ.mL)3mLh/L7pfԥIkژn&fp| HZ/L>3L>/L>p|&g%g|&g%pϔrfRR)eR)e—`Q8@0St3LRt3L7St3Lt3mL)3MMSt3mL0̔2LRt3N`icғ fR&|b6i(&icIdD&)eژ>L3L3L0Sʄ/L0 _ژR)e⥍)e8x1KD1LSD1Lcm]q0&/28_c|aB| `q|d 7I19ǔSc*Li0f fķ13f,l/p.̉ b>̋},aa,EC,_XKb),U X+aE5ձ~53kc-u> l_bcl_aKas[`;[alm v ;bgݰ+}'p!8G0gG᯸XcpNʼn8'$p:NÙ88g܋ƒxQ<'8“x/9<978FoK7-Lӿ3QLܒ1K>-Lӿ3QLܒ1K>/LI L/5L3qKd0mL7/mLt3qKd0mL7/mLt3qKd0mL7/5LSt3qKd0m.+Kҿ(Yëa,/K"1W0.Ę_D__Ǥ&4TSۘ[3`6̄1 fƬs`N̅1ϓ5x32/1?&X aA,XaI,a Kc),X+aEհ&~53ϱ>į)6ïl-%o5c숝3v c{b/2z-~H>C?Á8 Q#qI8G8p<'0£x1<4³xsxx/x+?0ب\.w>G(R-5L S0L-5L D15L /LS05L S-5L S0L-5L D15L K f(wQL"-QL"Sic%`ژ&`2%`ژ&`2%`ژ&`2%`ژ&`2%`ژ&`2%`ژ<(&naژaژ(&naژaژ(&naژaژ('ۀQn8mz+5L2Lҿ0L0S/K/K G;.KRd0Kҿ/L/Kҿ/L/K,KR/K)Sd0Kd0KRt3Kd0KRt3N>:5dp&=hT-LӿFw-K1Mҿ1K-KLӿ1QLܒ1KLmрKn|zMU7_Ɨ068+*uLI0%&ä&&Sc*Li0f fķ1l\`n| b>̋},Ű0¢X?R~%8XKcYaU2V*VOVOšXkc]l >~cClM1~_bSlcKl[lmvŎ;c'삽;vğ{?`a??80?h(Dcp< 8'$Sp8go8< p>.2\q•WZ܂p=nw6܊;p;wcT{qaBWa|AF'ѣxY<'43Njx/x&(Y;xcC|?a_qğq8pGHhcq 8'dS=i8gL glsq1Å8"\Kq.Wj\kq/~f~H7Э7f܄[p7nmw.<{q}x<(xOI<;^x ?/W1jx &]|}|9|Hd(icژ6icژ6p bg &Id6Id(&b(&b(&b(&|ic aRgژ) 捗6&| f6)^(icj& p (&bjn&b2(f—ObJR&ic—D&)eJD&|IdRId—D&)eJD7@D1QLD1QL0L0L0L"4.mL $2QLR3L/mL $2mLD1Q>zjcژ6WQLD1QLGmLS0Lϴ1mLƴ1mLƴ1mι(_j`_j &_jp Y `ژ&` &a &``26nDI]%IpMp j8W_@cb\| c `B|_x`"| դ 㛘Sb*Li0-f1#f̘;av|sb̅],y1?BX cC,aq, ~e X+aeUձ~}+?ÚX kc>6 l16/+lkc l[l{=`[lvN`Wݱ~?`O{aoG?a_p A8(GpG8XqNI8Tqp9q!Ÿ R\pvWj\[p=n 7V܆q]^܇CxQ<SxYgCtb&_JD&)e(ic*6&bJ6IdD&Ip $2QL)S$2K";޹.d1E&+$)2RH(LH dŘ\_ۡzus=ۧRIdژ6ic8L)Lژ(&)eژbRhD&IdD+IdD&Id7'נhD&IdD&IdD&Id# f%bJR&icژ6ic8L7ZL"$2L"$2L"aƴ1mLƴ1mLD1L)/Lȴ1L>p؆k|J6ic(ic*6icDiR fR&IdD&IdD&)^J6& f⥍gR&bJ6 icb6&bJ%ic`_J6& fJD&IdD&IdD&IdD&IdR fDxicnIdRg=yJic8Y|6gaӰƯF o[V o;04x't3`F̄1 fl.l5ޅQsả1?ރy0`A,b!,XKx~,!,XX OaUX kbml.646b|[V<E|_W m=W5M] ]v·Гc {c`?|8 Cp(8Ǒ88p"N843p&~ɟM,g?ù8\p1.9~_2\+p%q-p~&܌?86܎;p'Ÿg܍{p/>܏ (xO)Ͱ9g%>yl/lx&e;|k:v  co {c`?|8qa8G8?Q8XqNI8Tq#g'8yNbr p!.Ÿ~p9 WWƵ7{܈p3?W;݊p; Ÿq7 p? 0x <4?\O<ߘ4?x2W*^ f`& f`& f`& f`& 0nfnfn# f`& f`& f`& f`& f`& f`& fnfnfnp`& f`& f`& f`&ۆnQfb\My5Q|W6&i򙘦#i򙘦 ficgnf*|&f*ngnf*|f*n6 f`&ijj`& fn f`&fj`& fn)PR&g &g|p fJn&`JnfD&=an f2R)e`&)eR fDpD&)eژ6o|s$2L"$2L"$2L"$2L"$2L"$rc1mLaf#od쿑7FzԘĴc̈03f sb.̍wcb>0?XXb1,%V^-4އXIJ>`9,c8>ObOa%U*VXkb-u.I|ޫO`l!6&3"&G>a| _-v*a|N;cW|c7=-쇽>]q 8 8G8GXp'7mwN܅?ϸ^}oxCxQ<Sx'uoL<^Kx+x2L)Sʔ2L)Sʔr~#od 72F~#od,7F\t3L7t3L7t3L7tI7'7nfnfnfnfnfnfnfnfnv 1N;f*L'?f뇿8{oDxނ7x;ފԘaZ̀1fxޅY1 sݘ`Q0/ aA,b,%XKxAC0r>O$JX*XaUձ&6X`}Ocl 1f[ 5| _elm|a{ob7='ŷ7p=qa8p|G8 Gpɥsc2L)Sʔ2L"ƴ1L"Ӕ2L"ƴ1L"$2mL$21M)Sʔ2L)Sʔ2&. f`& f`& f91J(&)eژ|&IdDzQic6 f)eژR&iژR)e)e8KJWt3L7t3L7t3L7t3L)S3LZt3L7a3L03&#L7K7?\hvX|W x#ބ7-x+ކ Scb:L0#f̘b6 c̉07ލyvj>0?XXb1,%$xޏ`|C0><>>">ëU*VXkb-u.Ɔcl`3l-Yla+|[ "me|ŵն_#v73v&v䮛 ^`_|8`Cqs#q q8'Dq Ni8gL?q~q~\]/\%.W*\_:\q#n[p+n}rg݁;q?n܃{~3L03L03L0aQʔ2L)Sʔr#%L03L03L03L03L03L0Q8F)Sʔ2L)Sʔ2L)Sʔ2L)58>ɧ" f`& f`& f`& f.0ME3QL03L0G^pM4׼4pݎSv}}f`68yΥ:j 0ALa8r)7L2k/5CS^y vw ]OaEX|x-qOain 9!8g#nz sq@͹;>}``5g .۝묓qkMaUX햁X r`EG.7pԴSg8?oK endstream endobj xref 0 10919 0000000697 65535 f 0000000017 00000 n 0000000143 00000 n 0000001370 00000 n 0000001675 00000 n 0000002421 00000 n 0000002599 00000 n 0000002853 00000 n 0000003024 00000 n 0000003266 00000 n 0000003448 00000 n 0000003700 00000 n 0000003873 00000 n 0000004117 00000 n 0000004297 00000 n 0000004549 00000 n 0000004728 00000 n 0000004975 00000 n 0000025499 00000 n 0000025954 00000 n 0000028986 00000 n 0000029164 00000 n 0000029413 00000 n 0000029541 00000 n 0000030086 00000 n 0000030538 00000 n 0000030891 00000 n 0000031019 00000 n 0000031147 00000 n 0000031275 00000 n 0000031403 00000 n 0000031740 00000 n 0000031868 00000 n 0000031996 00000 n 0000032123 00000 n 0000032251 00000 n 0000032566 00000 n 0000032695 00000 n 0000033019 00000 n 0000033148 00000 n 0000033277 00000 n 0000033553 00000 n 0000033682 00000 n 0000034001 00000 n 0000034130 00000 n 0000034406 00000 n 0000034534 00000 n 0000034860 00000 n 0000034988 00000 n 0000035338 00000 n 0000035467 00000 n 0000035829 00000 n 0000035958 00000 n 0000036322 00000 n 0000036651 00000 n 0000036780 00000 n 0000037095 00000 n 0000037434 00000 n 0000037560 00000 n 0000037899 00000 n 0000038214 00000 n 0000038340 00000 n 0000038645 00000 n 0000038948 00000 n 0000039288 00000 n 0000039565 00000 n 0000039904 00000 n 0000040033 00000 n 0000040350 00000 n 0000040673 00000 n 0000041008 00000 n 0000041323 00000 n 0000041640 00000 n 0000042021 00000 n 0000042310 00000 n 0000042627 00000 n 0000042967 00000 n 0000043281 00000 n 0000043410 00000 n 0000043737 00000 n 0000044082 00000 n 0000044211 00000 n 0000044578 00000 n 0000044707 00000 n 0000045042 00000 n 0000045369 00000 n 0000045720 00000 n 0000045849 00000 n 0000046200 00000 n 0000046328 00000 n 0000046643 00000 n 0000046771 00000 n 0000047084 00000 n 0000047427 00000 n 0000047556 00000 n 0000047873 00000 n 0000051131 00000 n 0000051185 00000 n 0000051315 00000 n 0000051616 00000 n 0000051955 00000 n 0000052251 00000 n 0000052382 00000 n 0000052513 00000 n 0000052843 00000 n 0000053199 00000 n 0000053583 00000 n 0000053714 00000 n 0000054098 00000 n 0000054376 00000 n 0000054507 00000 n 0000054637 00000 n 0000054902 00000 n 0000055032 00000 n 0000055348 00000 n 0000055678 00000 n 0000056030 00000 n 0000056374 00000 n 0000056692 00000 n 0000057020 00000 n 0000057151 00000 n 0000057480 00000 n 0000057798 00000 n 0000057929 00000 n 0000058256 00000 n 0000058387 00000 n 0000058518 00000 n 0000058649 00000 n 0000058780 00000 n 0000059100 00000 n 0000059406 00000 n 0000059719 00000 n 0000059851 00000 n 0000059983 00000 n 0000060114 00000 n 0000060444 00000 n 0000060575 00000 n 0000060981 00000 n 0000061111 00000 n 0000061405 00000 n 0000061535 00000 n 0000061797 00000 n 0000062059 00000 n 0000062353 00000 n 0000062691 00000 n 0000062822 00000 n 0000063187 00000 n 0000063509 00000 n 0000063802 00000 n 0000063933 00000 n 0000064330 00000 n 0000064461 00000 n 0000064789 00000 n 0000065141 00000 n 0000065526 00000 n 0000065657 00000 n 0000066023 00000 n 0000066339 00000 n 0000066711 00000 n 0000066842 00000 n 0000067228 00000 n 0000067578 00000 n 0000067708 00000 n 0000068028 00000 n 0000068453 00000 n 0000068581 00000 n 0000068613 00000 n 0000068770 00000 n 0000068845 00000 n 0000069091 00000 n 0000069221 00000 n 0000069582 00000 n 0000069961 00000 n 0000070286 00000 n 0000070417 00000 n 0000070791 00000 n 0000070922 00000 n 0000071264 00000 n 0000071622 00000 n 0000071753 00000 n 0000072113 00000 n 0000072513 00000 n 0000072644 00000 n 0000072988 00000 n 0000073119 00000 n 0000073467 00000 n 0000073831 00000 n 0000073962 00000 n 0000074278 00000 n 0000076485 00000 n 0000076540 00000 n 0000076671 00000 n 0000077009 00000 n 0000077140 00000 n 0000077440 00000 n 0000077740 00000 n 0000077871 00000 n 0000078194 00000 n 0000078325 00000 n 0000078654 00000 n 0000078970 00000 n 0000079298 00000 n 0000079648 00000 n 0000079779 00000 n 0000080083 00000 n 0000080387 00000 n 0000080705 00000 n 0000081009 00000 n 0000081334 00000 n 0000081638 00000 n 0000081768 00000 n 0000082122 00000 n 0000082252 00000 n 0000082557 00000 n 0000082835 00000 n 0000083161 00000 n 0000083292 00000 n 0000083598 00000 n 0000083938 00000 n 0000084069 00000 n 0000084377 00000 n 0000084671 00000 n 0000084949 00000 n 0000085253 00000 n 0000085579 00000 n 0000085710 00000 n 0000086030 00000 n 0000086346 00000 n 0000086650 00000 n 0000086781 00000 n 0000087109 00000 n 0000087240 00000 n 0000087588 00000 n 0000087932 00000 n 0000088063 00000 n 0000088412 00000 n 0000088543 00000 n 0000088857 00000 n 0000088988 00000 n 0000089341 00000 n 0000089667 00000 n 0000089981 00000 n 0000090112 00000 n 0000090454 00000 n 0000090768 00000 n 0000091094 00000 n 0000091225 00000 n 0000091529 00000 n 0000091844 00000 n 0000092174 00000 n 0000092490 00000 n 0000092816 00000 n 0000093130 00000 n 0000093260 00000 n 0000093564 00000 n 0000093882 00000 n 0000094198 00000 n 0000094528 00000 n 0000094842 00000 n 0000094972 00000 n 0000095272 00000 n 0000095403 00000 n 0000095717 00000 n 0000096041 00000 n 0000099443 00000 n 0000099615 00000 n 0000099769 00000 n 0000099906 00000 n 0000099938 00000 n 0000100104 00000 n 0000100179 00000 n 0000100423 00000 n 0000100604 00000 n 0000100853 00000 n 0000103454 00000 n 0000107336 00000 n 0000107523 00000 n 0000107780 00000 n 0000107924 00000 n 0000107956 00000 n 0000108129 00000 n 0000108204 00000 n 0000108457 00000 n 0000110801 00000 n 0000110979 00000 n 0000111218 00000 n 0000112278 00000 n 0000119464 00000 n 0000119652 00000 n 0000119908 00000 n 0000121927 00000 n 0000125595 00000 n 0000128243 00000 n 0000130918 00000 n 0000131094 00000 n 0000131338 00000 n 0000133777 00000 n 0000133911 00000 n 0000134046 00000 n 0000138740 00000 n 0000140420 00000 n 0000143396 00000 n 0000147021 00000 n 0000150395 00000 n 0000153920 00000 n 0000157282 00000 n 0000157416 00000 n 0000157548 00000 n 0000160896 00000 n 0000162538 00000 n 0000166527 00000 n 0000170102 00000 n 0000173070 00000 n 0000173203 00000 n 0000177073 00000 n 0000177206 00000 n 0000180100 00000 n 0000180233 00000 n 0000180366 00000 n 0000180505 00000 n 0000180537 00000 n 0000180705 00000 n 0000180780 00000 n 0000181021 00000 n 0000183731 00000 n 0000187664 00000 n 0000187837 00000 n 0000188024 00000 n 0000188284 00000 n 0000191697 00000 n 0000191840 00000 n 0000191872 00000 n 0000192044 00000 n 0000192119 00000 n 0000192367 00000 n 0000195492 00000 n 0000199639 00000 n 0000199774 00000 n 0000204080 00000 n 0000204271 00000 n 0000204468 00000 n 0000204610 00000 n 0000204642 00000 n 0000204813 00000 n 0000204888 00000 n 0000205137 00000 n 0000208801 00000 n 0000212114 00000 n 0000212248 00000 n 0000215874 00000 n 0000216008 00000 n 0000216180 00000 n 0000216411 00000 n 0000216578 00000 n 0000216804 00000 n 0000219899 00000 n 0000220033 00000 n 0000222298 00000 n 0000225098 00000 n 0000225290 00000 n 0000225551 00000 n 0000225685 00000 n 0000225818 00000 n 0000229470 00000 n 0000229604 00000 n 0000229737 00000 n 0000232491 00000 n 0000234049 00000 n 0000236993 00000 n 0000237128 00000 n 0000243366 00000 n 0000246309 00000 n 0000246442 00000 n 0000246575 00000 n 0000246707 00000 n 0000248973 00000 n 0000249106 00000 n 0000249239 00000 n 0000254221 00000 n 0000256983 00000 n 0000259869 00000 n 0000260003 00000 n 0000260136 00000 n 0000260271 00000 n 0000260406 00000 n 0000263462 00000 n 0000263596 00000 n 0000263731 00000 n 0000263865 00000 n 0000264000 00000 n 0000264135 00000 n 0000264270 00000 n 0000267494 00000 n 0000267629 00000 n 0000267764 00000 n 0000267899 00000 n 0000268034 00000 n 0000268168 00000 n 0000268303 00000 n 0000274328 00000 n 0000282689 00000 n 0000289774 00000 n 0000289903 00000 n 0000289935 00000 n 0000290093 00000 n 0000290168 00000 n 0000290402 00000 n 0000293612 00000 n 0000297166 00000 n 0000297301 00000 n 0000297436 00000 n 0000297571 00000 n 0000300998 00000 n 0000301133 00000 n 0000301268 00000 n 0000302811 00000 n 0000306011 00000 n 0000308313 00000 n 0000314894 00000 n 0000321592 00000 n 0000327783 00000 n 0000331625 00000 n 0000335071 00000 n 0000340866 00000 n 0000343645 00000 n 0000343776 00000 n 0000343910 00000 n 0000344045 00000 n 0000344178 00000 n 0000344312 00000 n 0000344445 00000 n 0000344578 00000 n 0000344713 00000 n 0000344845 00000 n 0000344977 00000 n 0000351054 00000 n 0000356008 00000 n 0000360960 00000 n 0000366132 00000 n 0000370176 00000 n 0000373604 00000 n 0000373778 00000 n 0000374013 00000 n 0000374148 00000 n 0000374180 00000 n 0000374344 00000 n 0000374419 00000 n 0000374674 00000 n 0000374808 00000 n 0000374939 00000 n 0000377332 00000 n 0000377466 00000 n 0000382452 00000 n 0000386482 00000 n 0000386616 00000 n 0000386751 00000 n 0000386885 00000 n 0000387020 00000 n 0000387155 00000 n 0000387290 00000 n 0000387424 00000 n 0000387559 00000 n 0000389015 00000 n 0000392500 00000 n 0000397063 00000 n 0000397198 00000 n 0000397333 00000 n 0000397467 00000 n 0000397602 00000 n 0000397736 00000 n 0000401787 00000 n 0000401922 00000 n 0000402057 00000 n 0000402191 00000 n 0000402326 00000 n 0000402461 00000 n 0000404951 00000 n 0000409058 00000 n 0000409190 00000 n 0000409325 00000 n 0000409459 00000 n 0000409594 00000 n 0000409729 00000 n 0000409864 00000 n 0000413941 00000 n 0000414075 00000 n 0000414210 00000 n 0000414345 00000 n 0000414480 00000 n 0000414615 00000 n 0000414750 00000 n 0000419013 00000 n 0000419147 00000 n 0000419282 00000 n 0000422975 00000 n 0000423109 00000 n 0000423244 00000 n 0000423378 00000 n 0000423512 00000 n 0000427781 00000 n 0000427914 00000 n 0000427946 00000 n 0000428108 00000 n 0000428183 00000 n 0000428434 00000 n 0000428568 00000 n 0000428703 00000 n 0000428884 00000 n 0000429124 00000 n 0000432563 00000 n 0000432696 00000 n 0000432830 00000 n 0000432964 00000 n 0000433099 00000 n 0000437013 00000 n 0000437154 00000 n 0000437186 00000 n 0000437356 00000 n 0000437431 00000 n 0000437677 00000 n 0000437811 00000 n 0000437946 00000 n 0000438080 00000 n 0000438215 00000 n 0000441644 00000 n 0000446080 00000 n 0000446214 00000 n 0000446345 00000 n 0000446479 00000 n 0000449336 00000 n 0000449515 00000 n 0000449764 00000 n 0000453059 00000 n 0000453193 00000 n 0000455726 00000 n 0000455861 00000 n 0000458252 00000 n 0000458386 00000 n 0000460399 00000 n 0000461047 00000 n 0000464351 00000 n 0000464486 00000 n 0000465942 00000 n 0000466077 00000 n 0000469402 00000 n 0000469581 00000 n 0000469830 00000 n 0000472352 00000 n 0000475196 00000 n 0000478088 00000 n 0000481554 00000 n 0000484799 00000 n 0000487763 00000 n 0000491281 00000 n 0000493999 00000 n 0000497078 00000 n 0000499954 00000 n 0000502843 00000 n 0000505720 00000 n 0000509292 00000 n 0000512236 00000 n 0000515752 00000 n 0000519485 00000 n 0000522842 00000 n 0000526217 00000 n 0000530087 00000 n 0000532012 00000 n 0000535183 00000 n 0000538535 00000 n 0000541912 00000 n 0000544733 00000 n 0000546776 00000 n 0000549808 00000 n 0000553071 00000 n 0000554428 00000 n 0000557357 00000 n 0000563761 00000 n 0000563905 00000 n 0000563937 00000 n 0000564110 00000 n 0000564185 00000 n 0000564437 00000 n 0000564619 00000 n 0000564871 00000 n 0000567805 00000 n 0000567938 00000 n 0000568073 00000 n 0000568208 00000 n 0000571453 00000 n 0000571588 00000 n 0000574665 00000 n 0000577450 00000 n 0000580034 00000 n 0000582963 00000 n 0000585893 00000 n 0000588629 00000 n 0000590944 00000 n 0000594340 00000 n 0000597430 00000 n 0000600459 00000 n 0000603823 00000 n 0000606674 00000 n 0000609795 00000 n 0000613267 00000 n 0000617408 00000 n 0000621371 00000 n 0000624958 00000 n 0000627612 00000 n 0000627747 00000 n 0000627882 00000 n 0000632210 00000 n 0000636006 00000 n 0000638023 00000 n 0000639234 00000 n 0000639395 00000 n 0000639621 00000 n 0000639687 00000 n 0000639825 00000 n 0000639914 00000 n 0000640065 00000 n 0000640167 00000 n 0000640322 00000 n 0000640475 00000 n 0000640600 00000 n 0000640708 00000 n 0000640832 00000 n 0000641017 00000 n 0000641129 00000 n 0000641250 00000 n 0000641366 00000 n 0000641485 00000 n 0000641596 00000 n 0000641709 00000 n 0000641857 00000 n 0000641973 00000 n 0000642087 00000 n 0000642213 00000 n 0000642343 00000 n 0000642484 00000 n 0000642612 00000 n 0000642776 00000 n 0000642883 00000 n 0000643001 00000 n 0000643109 00000 n 0000643242 00000 n 0000643393 00000 n 0000643519 00000 n 0000643645 00000 n 0000643761 00000 n 0000643915 00000 n 0000644015 00000 n 0000644123 00000 n 0000644240 00000 n 0000644398 00000 n 0000644498 00000 n 0000644617 00000 n 0000644732 00000 n 0000644868 00000 n 0000645018 00000 n 0000645135 00000 n 0000645284 00000 n 0000645423 00000 n 0000645583 00000 n 0000645695 00000 n 0000645806 00000 n 0000645915 00000 n 0000646071 00000 n 0000646181 00000 n 0000646295 00000 n 0000646420 00000 n 0000646548 00000 n 0000646695 00000 n 0000646808 00000 n 0000646938 00000 n 0000647055 00000 n 0000647177 00000 n 0000647339 00000 n 0000647436 00000 n 0000647551 00000 n 0000647672 00000 n 0000647786 00000 n 0000647885 00000 n 0000648009 00000 n 0000648130 00000 n 0000648252 00000 n 0000648389 00000 n 0000648503 00000 n 0000648654 00000 n 0000648762 00000 n 0000648882 00000 n 0000649002 00000 n 0000649120 00000 n 0000649246 00000 n 0000649395 00000 n 0000649501 00000 n 0000649605 00000 n 0000649732 00000 n 0000000698 65535 f 0000000699 65535 f 0000000700 65535 f 0000000701 65535 f 0000000702 65535 f 0000000703 65535 f 0000000704 65535 f 0000000705 65535 f 0000000706 65535 f 0000000707 65535 f 0000000708 65535 f 0000000709 65535 f 0000000710 65535 f 0000000711 65535 f 0000000712 65535 f 0000000713 65535 f 0000000714 65535 f 0000000715 65535 f 0000000716 65535 f 0000000717 65535 f 0000000718 65535 f 0000000719 65535 f 0000000720 65535 f 0000000721 65535 f 0000000722 65535 f 0000000723 65535 f 0000000724 65535 f 0000000725 65535 f 0000000726 65535 f 0000000727 65535 f 0000000728 65535 f 0000000729 65535 f 0000000730 65535 f 0000000731 65535 f 0000000732 65535 f 0000000733 65535 f 0000000734 65535 f 0000000735 65535 f 0000000736 65535 f 0000000737 65535 f 0000000738 65535 f 0000000739 65535 f 0000000740 65535 f 0000000741 65535 f 0000000742 65535 f 0000000743 65535 f 0000000744 65535 f 0000000745 65535 f 0000000746 65535 f 0000000747 65535 f 0000000748 65535 f 0000000749 65535 f 0000000750 65535 f 0000000751 65535 f 0000000752 65535 f 0000000753 65535 f 0000000754 65535 f 0000000755 65535 f 0000000756 65535 f 0000000757 65535 f 0000000758 65535 f 0000000759 65535 f 0000000760 65535 f 0000000761 65535 f 0000000762 65535 f 0000000763 65535 f 0000000764 65535 f 0000000765 65535 f 0000000766 65535 f 0000000767 65535 f 0000000768 65535 f 0000000769 65535 f 0000000770 65535 f 0000000771 65535 f 0000000772 65535 f 0000000773 65535 f 0000000774 65535 f 0000000775 65535 f 0000000776 65535 f 0000000777 65535 f 0000000778 65535 f 0000000779 65535 f 0000000780 65535 f 0000000781 65535 f 0000000782 65535 f 0000000783 65535 f 0000000784 65535 f 0000000785 65535 f 0000000786 65535 f 0000000787 65535 f 0000000788 65535 f 0000000789 65535 f 0000000790 65535 f 0000000791 65535 f 0000000792 65535 f 0000000793 65535 f 0000000794 65535 f 0000000795 65535 f 0000000796 65535 f 0000000797 65535 f 0000000798 65535 f 0000000799 65535 f 0000000800 65535 f 0000000801 65535 f 0000000802 65535 f 0000000803 65535 f 0000000804 65535 f 0000000805 65535 f 0000000806 65535 f 0000000807 65535 f 0000000808 65535 f 0000000809 65535 f 0000000810 65535 f 0000000811 65535 f 0000000812 65535 f 0000000813 65535 f 0000000814 65535 f 0000000815 65535 f 0000000816 65535 f 0000000817 65535 f 0000000818 65535 f 0000000819 65535 f 0000000820 65535 f 0000000821 65535 f 0000000822 65535 f 0000000823 65535 f 0000000824 65535 f 0000000825 65535 f 0000000826 65535 f 0000000827 65535 f 0000000828 65535 f 0000000829 65535 f 0000000830 65535 f 0000000831 65535 f 0000000832 65535 f 0000000833 65535 f 0000000834 65535 f 0000000835 65535 f 0000000836 65535 f 0000000837 65535 f 0000000838 65535 f 0000000839 65535 f 0000000840 65535 f 0000000841 65535 f 0000000842 65535 f 0000000843 65535 f 0000000844 65535 f 0000000845 65535 f 0000000846 65535 f 0000000847 65535 f 0000000848 65535 f 0000000849 65535 f 0000000850 65535 f 0000000851 65535 f 0000000852 65535 f 0000000853 65535 f 0000000854 65535 f 0000000855 65535 f 0000000856 65535 f 0000000857 65535 f 0000000858 65535 f 0000000859 65535 f 0000000860 65535 f 0000000861 65535 f 0000000862 65535 f 0000000863 65535 f 0000000864 65535 f 0000000865 65535 f 0000000866 65535 f 0000000867 65535 f 0000000868 65535 f 0000000869 65535 f 0000000870 65535 f 0000000871 65535 f 0000000872 65535 f 0000000873 65535 f 0000000874 65535 f 0000000875 65535 f 0000000876 65535 f 0000000877 65535 f 0000000878 65535 f 0000000879 65535 f 0000000880 65535 f 0000000881 65535 f 0000000882 65535 f 0000000883 65535 f 0000000884 65535 f 0000000885 65535 f 0000000886 65535 f 0000000887 65535 f 0000000888 65535 f 0000000889 65535 f 0000000890 65535 f 0000000891 65535 f 0000000892 65535 f 0000000893 65535 f 0000000894 65535 f 0000000895 65535 f 0000000896 65535 f 0000000897 65535 f 0000000898 65535 f 0000000899 65535 f 0000000900 65535 f 0000000901 65535 f 0000000902 65535 f 0000000903 65535 f 0000000904 65535 f 0000000905 65535 f 0000000906 65535 f 0000000907 65535 f 0000000908 65535 f 0000000909 65535 f 0000000910 65535 f 0000000911 65535 f 0000000912 65535 f 0000000913 65535 f 0000000914 65535 f 0000000915 65535 f 0000000916 65535 f 0000000917 65535 f 0000000918 65535 f 0000000919 65535 f 0000000920 65535 f 0000000921 65535 f 0000000922 65535 f 0000000923 65535 f 0000000924 65535 f 0000000925 65535 f 0000000926 65535 f 0000000927 65535 f 0000000928 65535 f 0000000929 65535 f 0000000930 65535 f 0000000931 65535 f 0000000932 65535 f 0000000933 65535 f 0000000934 65535 f 0000000935 65535 f 0000000936 65535 f 0000000937 65535 f 0000000938 65535 f 0000000939 65535 f 0000000940 65535 f 0000000941 65535 f 0000000942 65535 f 0000000943 65535 f 0000000944 65535 f 0000000945 65535 f 0000000946 65535 f 0000000947 65535 f 0000000948 65535 f 0000000949 65535 f 0000000950 65535 f 0000000951 65535 f 0000000952 65535 f 0000000953 65535 f 0000000954 65535 f 0000000955 65535 f 0000000956 65535 f 0000000957 65535 f 0000000958 65535 f 0000000959 65535 f 0000000960 65535 f 0000000961 65535 f 0000000962 65535 f 0000000963 65535 f 0000000964 65535 f 0000000965 65535 f 0000000966 65535 f 0000000967 65535 f 0000000968 65535 f 0000000969 65535 f 0000000970 65535 f 0000000971 65535 f 0000000972 65535 f 0000000973 65535 f 0000000974 65535 f 0000000975 65535 f 0000000976 65535 f 0000000977 65535 f 0000000978 65535 f 0000000979 65535 f 0000000980 65535 f 0000000981 65535 f 0000000982 65535 f 0000000983 65535 f 0000000984 65535 f 0000000985 65535 f 0000000986 65535 f 0000000987 65535 f 0000000988 65535 f 0000000989 65535 f 0000000990 65535 f 0000000991 65535 f 0000000992 65535 f 0000000993 65535 f 0000000994 65535 f 0000000995 65535 f 0000000996 65535 f 0000000997 65535 f 0000000998 65535 f 0000000999 65535 f 0000001000 65535 f 0000001001 65535 f 0000001002 65535 f 0000001003 65535 f 0000001004 65535 f 0000001005 65535 f 0000001006 65535 f 0000001007 65535 f 0000001008 65535 f 0000001009 65535 f 0000001010 65535 f 0000001011 65535 f 0000001012 65535 f 0000001013 65535 f 0000001014 65535 f 0000001015 65535 f 0000001016 65535 f 0000001017 65535 f 0000001018 65535 f 0000001019 65535 f 0000001020 65535 f 0000001021 65535 f 0000001022 65535 f 0000001023 65535 f 0000001024 65535 f 0000001025 65535 f 0000001026 65535 f 0000001027 65535 f 0000001028 65535 f 0000001029 65535 f 0000001030 65535 f 0000001031 65535 f 0000001032 65535 f 0000001033 65535 f 0000001034 65535 f 0000001035 65535 f 0000001036 65535 f 0000001037 65535 f 0000001038 65535 f 0000001039 65535 f 0000001040 65535 f 0000001041 65535 f 0000001042 65535 f 0000001043 65535 f 0000001044 65535 f 0000001045 65535 f 0000001046 65535 f 0000001047 65535 f 0000001048 65535 f 0000001049 65535 f 0000001050 65535 f 0000001051 65535 f 0000001052 65535 f 0000001053 65535 f 0000001054 65535 f 0000001055 65535 f 0000001056 65535 f 0000001057 65535 f 0000001058 65535 f 0000001059 65535 f 0000001060 65535 f 0000001061 65535 f 0000001062 65535 f 0000001063 65535 f 0000001064 65535 f 0000001065 65535 f 0000001066 65535 f 0000001067 65535 f 0000001068 65535 f 0000001069 65535 f 0000001070 65535 f 0000001071 65535 f 0000001072 65535 f 0000001073 65535 f 0000001074 65535 f 0000001075 65535 f 0000001076 65535 f 0000001077 65535 f 0000001078 65535 f 0000001079 65535 f 0000001080 65535 f 0000001081 65535 f 0000001082 65535 f 0000001083 65535 f 0000001084 65535 f 0000001085 65535 f 0000001086 65535 f 0000001087 65535 f 0000001088 65535 f 0000001089 65535 f 0000001090 65535 f 0000001091 65535 f 0000001092 65535 f 0000001093 65535 f 0000001094 65535 f 0000001095 65535 f 0000001096 65535 f 0000001097 65535 f 0000001098 65535 f 0000001099 65535 f 0000001100 65535 f 0000001101 65535 f 0000001102 65535 f 0000001103 65535 f 0000001104 65535 f 0000001105 65535 f 0000001106 65535 f 0000001107 65535 f 0000001108 65535 f 0000001109 65535 f 0000001110 65535 f 0000001111 65535 f 0000001112 65535 f 0000001113 65535 f 0000001114 65535 f 0000001115 65535 f 0000001116 65535 f 0000001117 65535 f 0000001118 65535 f 0000001119 65535 f 0000001120 65535 f 0000001121 65535 f 0000001122 65535 f 0000001123 65535 f 0000001124 65535 f 0000001125 65535 f 0000001126 65535 f 0000001127 65535 f 0000001128 65535 f 0000001129 65535 f 0000001130 65535 f 0000001131 65535 f 0000001132 65535 f 0000001133 65535 f 0000001134 65535 f 0000001135 65535 f 0000001136 65535 f 0000001137 65535 f 0000001138 65535 f 0000001139 65535 f 0000001140 65535 f 0000001141 65535 f 0000001142 65535 f 0000001143 65535 f 0000001144 65535 f 0000001145 65535 f 0000001146 65535 f 0000001147 65535 f 0000001148 65535 f 0000001149 65535 f 0000001150 65535 f 0000001151 65535 f 0000001152 65535 f 0000001153 65535 f 0000001154 65535 f 0000001155 65535 f 0000001156 65535 f 0000001157 65535 f 0000001158 65535 f 0000001159 65535 f 0000001160 65535 f 0000001161 65535 f 0000001162 65535 f 0000001163 65535 f 0000001164 65535 f 0000001165 65535 f 0000001166 65535 f 0000001167 65535 f 0000001168 65535 f 0000001169 65535 f 0000001170 65535 f 0000001171 65535 f 0000001172 65535 f 0000001173 65535 f 0000001174 65535 f 0000001175 65535 f 0000001176 65535 f 0000001177 65535 f 0000001178 65535 f 0000001179 65535 f 0000001180 65535 f 0000001181 65535 f 0000001182 65535 f 0000001183 65535 f 0000001184 65535 f 0000001185 65535 f 0000001186 65535 f 0000001187 65535 f 0000001188 65535 f 0000001189 65535 f 0000001190 65535 f 0000001191 65535 f 0000001192 65535 f 0000001193 65535 f 0000001194 65535 f 0000001195 65535 f 0000001196 65535 f 0000001197 65535 f 0000001198 65535 f 0000001199 65535 f 0000001200 65535 f 0000001201 65535 f 0000001202 65535 f 0000001203 65535 f 0000001204 65535 f 0000001205 65535 f 0000001206 65535 f 0000001207 65535 f 0000001208 65535 f 0000001209 65535 f 0000001210 65535 f 0000001211 65535 f 0000001212 65535 f 0000001213 65535 f 0000001214 65535 f 0000001215 65535 f 0000001216 65535 f 0000001217 65535 f 0000001218 65535 f 0000001219 65535 f 0000001220 65535 f 0000001221 65535 f 0000001222 65535 f 0000001223 65535 f 0000001224 65535 f 0000001225 65535 f 0000001226 65535 f 0000001227 65535 f 0000001228 65535 f 0000001229 65535 f 0000001230 65535 f 0000001231 65535 f 0000001232 65535 f 0000001233 65535 f 0000001234 65535 f 0000001235 65535 f 0000001236 65535 f 0000001237 65535 f 0000001238 65535 f 0000001239 65535 f 0000001240 65535 f 0000001241 65535 f 0000001242 65535 f 0000001243 65535 f 0000001244 65535 f 0000001245 65535 f 0000001246 65535 f 0000001247 65535 f 0000001248 65535 f 0000001249 65535 f 0000001250 65535 f 0000001251 65535 f 0000001252 65535 f 0000001253 65535 f 0000001254 65535 f 0000001255 65535 f 0000001256 65535 f 0000001257 65535 f 0000001258 65535 f 0000001259 65535 f 0000001260 65535 f 0000001261 65535 f 0000001262 65535 f 0000001263 65535 f 0000001264 65535 f 0000001265 65535 f 0000001266 65535 f 0000001267 65535 f 0000001268 65535 f 0000001269 65535 f 0000001270 65535 f 0000001271 65535 f 0000001272 65535 f 0000001273 65535 f 0000001274 65535 f 0000001275 65535 f 0000001276 65535 f 0000001277 65535 f 0000001278 65535 f 0000001279 65535 f 0000001280 65535 f 0000001281 65535 f 0000001282 65535 f 0000001283 65535 f 0000001284 65535 f 0000001285 65535 f 0000001286 65535 f 0000001287 65535 f 0000001288 65535 f 0000001289 65535 f 0000001290 65535 f 0000001291 65535 f 0000001292 65535 f 0000001293 65535 f 0000001294 65535 f 0000001295 65535 f 0000001296 65535 f 0000001297 65535 f 0000001298 65535 f 0000001299 65535 f 0000001300 65535 f 0000001301 65535 f 0000001302 65535 f 0000001303 65535 f 0000001304 65535 f 0000001305 65535 f 0000001306 65535 f 0000001307 65535 f 0000001308 65535 f 0000001309 65535 f 0000001310 65535 f 0000001311 65535 f 0000001312 65535 f 0000001313 65535 f 0000001314 65535 f 0000001315 65535 f 0000001316 65535 f 0000001317 65535 f 0000001318 65535 f 0000001319 65535 f 0000001320 65535 f 0000001321 65535 f 0000001322 65535 f 0000001323 65535 f 0000001324 65535 f 0000001325 65535 f 0000001326 65535 f 0000001327 65535 f 0000001328 65535 f 0000001329 65535 f 0000001330 65535 f 0000001331 65535 f 0000001332 65535 f 0000001333 65535 f 0000001334 65535 f 0000001335 65535 f 0000001336 65535 f 0000001337 65535 f 0000001338 65535 f 0000001339 65535 f 0000001340 65535 f 0000001341 65535 f 0000001342 65535 f 0000001343 65535 f 0000001344 65535 f 0000001345 65535 f 0000001346 65535 f 0000001347 65535 f 0000001348 65535 f 0000001349 65535 f 0000001350 65535 f 0000001351 65535 f 0000001352 65535 f 0000001353 65535 f 0000001354 65535 f 0000001355 65535 f 0000001356 65535 f 0000001357 65535 f 0000001358 65535 f 0000001359 65535 f 0000001360 65535 f 0000001361 65535 f 0000001362 65535 f 0000001363 65535 f 0000001364 65535 f 0000001365 65535 f 0000001366 65535 f 0000001367 65535 f 0000001368 65535 f 0000001369 65535 f 0000001370 65535 f 0000001371 65535 f 0000001372 65535 f 0000001373 65535 f 0000001374 65535 f 0000001375 65535 f 0000001376 65535 f 0000001377 65535 f 0000001378 65535 f 0000001379 65535 f 0000001380 65535 f 0000001381 65535 f 0000001382 65535 f 0000001383 65535 f 0000001384 65535 f 0000001385 65535 f 0000001386 65535 f 0000001387 65535 f 0000001388 65535 f 0000001389 65535 f 0000001390 65535 f 0000001391 65535 f 0000001392 65535 f 0000001393 65535 f 0000001394 65535 f 0000001395 65535 f 0000001396 65535 f 0000001397 65535 f 0000001398 65535 f 0000001399 65535 f 0000001400 65535 f 0000001401 65535 f 0000001402 65535 f 0000001403 65535 f 0000001404 65535 f 0000001405 65535 f 0000001406 65535 f 0000001407 65535 f 0000001408 65535 f 0000001409 65535 f 0000001410 65535 f 0000001411 65535 f 0000001412 65535 f 0000001413 65535 f 0000001414 65535 f 0000001415 65535 f 0000001416 65535 f 0000001417 65535 f 0000001418 65535 f 0000001419 65535 f 0000001420 65535 f 0000001421 65535 f 0000001422 65535 f 0000001423 65535 f 0000001424 65535 f 0000001425 65535 f 0000001426 65535 f 0000001427 65535 f 0000001428 65535 f 0000001429 65535 f 0000001430 65535 f 0000001431 65535 f 0000001432 65535 f 0000001433 65535 f 0000001434 65535 f 0000001435 65535 f 0000001436 65535 f 0000001437 65535 f 0000001438 65535 f 0000001439 65535 f 0000001440 65535 f 0000001441 65535 f 0000001442 65535 f 0000001443 65535 f 0000001444 65535 f 0000001445 65535 f 0000001446 65535 f 0000001447 65535 f 0000001448 65535 f 0000001449 65535 f 0000001450 65535 f 0000001451 65535 f 0000001452 65535 f 0000001453 65535 f 0000001454 65535 f 0000001455 65535 f 0000001456 65535 f 0000001457 65535 f 0000001458 65535 f 0000001459 65535 f 0000001460 65535 f 0000001461 65535 f 0000001462 65535 f 0000001463 65535 f 0000001464 65535 f 0000001465 65535 f 0000001466 65535 f 0000001467 65535 f 0000001468 65535 f 0000001469 65535 f 0000001470 65535 f 0000001471 65535 f 0000001472 65535 f 0000001473 65535 f 0000001474 65535 f 0000001475 65535 f 0000001476 65535 f 0000001477 65535 f 0000001478 65535 f 0000001479 65535 f 0000001480 65535 f 0000001481 65535 f 0000001482 65535 f 0000001483 65535 f 0000001484 65535 f 0000001485 65535 f 0000001486 65535 f 0000001487 65535 f 0000001488 65535 f 0000001489 65535 f 0000001490 65535 f 0000001491 65535 f 0000001492 65535 f 0000001493 65535 f 0000001494 65535 f 0000001495 65535 f 0000001496 65535 f 0000001497 65535 f 0000001498 65535 f 0000001499 65535 f 0000001500 65535 f 0000001501 65535 f 0000001502 65535 f 0000001503 65535 f 0000001504 65535 f 0000001505 65535 f 0000001506 65535 f 0000001507 65535 f 0000001508 65535 f 0000001509 65535 f 0000001510 65535 f 0000001511 65535 f 0000001512 65535 f 0000001513 65535 f 0000001514 65535 f 0000001515 65535 f 0000001516 65535 f 0000001517 65535 f 0000001518 65535 f 0000001519 65535 f 0000001520 65535 f 0000001521 65535 f 0000001522 65535 f 0000001523 65535 f 0000001524 65535 f 0000001525 65535 f 0000001526 65535 f 0000001527 65535 f 0000001528 65535 f 0000001529 65535 f 0000001530 65535 f 0000001531 65535 f 0000001532 65535 f 0000001533 65535 f 0000001534 65535 f 0000001535 65535 f 0000001536 65535 f 0000001537 65535 f 0000001538 65535 f 0000001539 65535 f 0000001540 65535 f 0000001541 65535 f 0000001542 65535 f 0000001543 65535 f 0000001544 65535 f 0000001545 65535 f 0000001546 65535 f 0000001547 65535 f 0000001548 65535 f 0000001549 65535 f 0000001550 65535 f 0000001551 65535 f 0000001552 65535 f 0000001553 65535 f 0000001554 65535 f 0000001555 65535 f 0000001556 65535 f 0000001557 65535 f 0000001558 65535 f 0000001559 65535 f 0000001560 65535 f 0000001561 65535 f 0000001562 65535 f 0000001563 65535 f 0000001564 65535 f 0000001565 65535 f 0000001566 65535 f 0000001567 65535 f 0000001568 65535 f 0000001569 65535 f 0000001570 65535 f 0000001571 65535 f 0000001572 65535 f 0000001573 65535 f 0000001574 65535 f 0000001575 65535 f 0000001576 65535 f 0000001577 65535 f 0000001578 65535 f 0000001579 65535 f 0000001580 65535 f 0000001581 65535 f 0000001582 65535 f 0000001583 65535 f 0000001584 65535 f 0000001585 65535 f 0000001586 65535 f 0000001587 65535 f 0000001588 65535 f 0000001589 65535 f 0000001590 65535 f 0000001591 65535 f 0000001592 65535 f 0000001593 65535 f 0000001594 65535 f 0000001595 65535 f 0000001596 65535 f 0000001597 65535 f 0000001598 65535 f 0000001599 65535 f 0000001600 65535 f 0000001601 65535 f 0000001602 65535 f 0000001603 65535 f 0000001604 65535 f 0000001605 65535 f 0000001606 65535 f 0000001607 65535 f 0000001608 65535 f 0000001609 65535 f 0000001610 65535 f 0000001611 65535 f 0000001612 65535 f 0000001613 65535 f 0000001614 65535 f 0000001615 65535 f 0000001616 65535 f 0000001617 65535 f 0000001618 65535 f 0000001619 65535 f 0000001620 65535 f 0000001621 65535 f 0000001622 65535 f 0000001623 65535 f 0000001624 65535 f 0000001625 65535 f 0000001626 65535 f 0000001627 65535 f 0000001628 65535 f 0000001629 65535 f 0000001630 65535 f 0000001631 65535 f 0000001632 65535 f 0000001633 65535 f 0000001634 65535 f 0000001635 65535 f 0000001636 65535 f 0000001637 65535 f 0000001638 65535 f 0000001639 65535 f 0000001640 65535 f 0000001641 65535 f 0000001642 65535 f 0000001643 65535 f 0000001644 65535 f 0000001645 65535 f 0000001646 65535 f 0000001647 65535 f 0000001648 65535 f 0000001649 65535 f 0000001650 65535 f 0000001651 65535 f 0000001652 65535 f 0000001653 65535 f 0000001654 65535 f 0000001655 65535 f 0000001656 65535 f 0000001657 65535 f 0000001658 65535 f 0000001659 65535 f 0000001660 65535 f 0000001661 65535 f 0000001662 65535 f 0000001663 65535 f 0000001664 65535 f 0000001665 65535 f 0000001666 65535 f 0000001667 65535 f 0000001668 65535 f 0000001669 65535 f 0000001670 65535 f 0000001671 65535 f 0000001672 65535 f 0000001673 65535 f 0000001674 65535 f 0000001675 65535 f 0000001676 65535 f 0000001677 65535 f 0000001678 65535 f 0000001679 65535 f 0000001680 65535 f 0000001681 65535 f 0000001682 65535 f 0000001683 65535 f 0000001684 65535 f 0000001685 65535 f 0000001686 65535 f 0000001687 65535 f 0000001688 65535 f 0000001689 65535 f 0000001690 65535 f 0000001691 65535 f 0000001692 65535 f 0000001693 65535 f 0000001694 65535 f 0000001695 65535 f 0000001696 65535 f 0000001697 65535 f 0000001698 65535 f 0000001699 65535 f 0000001700 65535 f 0000001701 65535 f 0000001702 65535 f 0000001703 65535 f 0000001704 65535 f 0000001705 65535 f 0000001706 65535 f 0000001707 65535 f 0000001708 65535 f 0000001709 65535 f 0000001710 65535 f 0000001711 65535 f 0000001712 65535 f 0000001713 65535 f 0000001714 65535 f 0000001715 65535 f 0000001716 65535 f 0000001717 65535 f 0000001718 65535 f 0000001719 65535 f 0000001720 65535 f 0000001721 65535 f 0000001722 65535 f 0000001723 65535 f 0000001724 65535 f 0000001725 65535 f 0000001726 65535 f 0000001727 65535 f 0000001728 65535 f 0000001729 65535 f 0000001730 65535 f 0000001731 65535 f 0000001732 65535 f 0000001733 65535 f 0000001734 65535 f 0000001735 65535 f 0000001736 65535 f 0000001737 65535 f 0000001738 65535 f 0000001739 65535 f 0000001740 65535 f 0000001741 65535 f 0000001742 65535 f 0000001743 65535 f 0000001744 65535 f 0000001745 65535 f 0000001746 65535 f 0000001747 65535 f 0000001748 65535 f 0000001749 65535 f 0000001750 65535 f 0000001751 65535 f 0000001752 65535 f 0000001753 65535 f 0000001754 65535 f 0000001755 65535 f 0000001756 65535 f 0000001757 65535 f 0000001758 65535 f 0000001759 65535 f 0000001760 65535 f 0000001761 65535 f 0000001762 65535 f 0000001763 65535 f 0000001764 65535 f 0000001765 65535 f 0000001766 65535 f 0000001767 65535 f 0000001768 65535 f 0000001769 65535 f 0000001770 65535 f 0000001771 65535 f 0000001772 65535 f 0000001773 65535 f 0000001774 65535 f 0000001775 65535 f 0000001776 65535 f 0000001777 65535 f 0000001778 65535 f 0000001779 65535 f 0000001780 65535 f 0000001781 65535 f 0000001782 65535 f 0000001783 65535 f 0000001784 65535 f 0000001785 65535 f 0000001786 65535 f 0000001787 65535 f 0000001788 65535 f 0000001789 65535 f 0000001790 65535 f 0000001791 65535 f 0000001792 65535 f 0000001793 65535 f 0000001794 65535 f 0000001795 65535 f 0000001796 65535 f 0000001797 65535 f 0000001798 65535 f 0000001799 65535 f 0000001800 65535 f 0000001801 65535 f 0000001802 65535 f 0000001803 65535 f 0000001804 65535 f 0000001805 65535 f 0000001806 65535 f 0000001807 65535 f 0000001808 65535 f 0000001809 65535 f 0000001810 65535 f 0000001811 65535 f 0000001812 65535 f 0000001813 65535 f 0000001814 65535 f 0000001815 65535 f 0000001816 65535 f 0000001817 65535 f 0000001818 65535 f 0000001819 65535 f 0000001820 65535 f 0000001821 65535 f 0000001822 65535 f 0000001823 65535 f 0000001824 65535 f 0000001825 65535 f 0000001826 65535 f 0000001827 65535 f 0000001828 65535 f 0000001829 65535 f 0000001830 65535 f 0000001831 65535 f 0000001832 65535 f 0000001833 65535 f 0000001834 65535 f 0000001835 65535 f 0000001836 65535 f 0000001837 65535 f 0000001838 65535 f 0000001839 65535 f 0000001840 65535 f 0000001841 65535 f 0000001842 65535 f 0000001843 65535 f 0000001844 65535 f 0000001845 65535 f 0000001846 65535 f 0000001847 65535 f 0000001848 65535 f 0000001849 65535 f 0000001850 65535 f 0000001851 65535 f 0000001852 65535 f 0000001853 65535 f 0000001854 65535 f 0000001855 65535 f 0000001856 65535 f 0000001857 65535 f 0000001858 65535 f 0000001859 65535 f 0000001860 65535 f 0000001861 65535 f 0000001862 65535 f 0000001863 65535 f 0000001864 65535 f 0000001865 65535 f 0000001866 65535 f 0000001867 65535 f 0000001868 65535 f 0000001869 65535 f 0000001870 65535 f 0000001871 65535 f 0000001872 65535 f 0000001873 65535 f 0000001874 65535 f 0000001875 65535 f 0000001876 65535 f 0000001877 65535 f 0000001878 65535 f 0000001879 65535 f 0000001880 65535 f 0000001881 65535 f 0000001882 65535 f 0000001883 65535 f 0000001884 65535 f 0000001885 65535 f 0000001886 65535 f 0000001887 65535 f 0000001888 65535 f 0000001889 65535 f 0000001890 65535 f 0000001891 65535 f 0000001892 65535 f 0000001893 65535 f 0000001894 65535 f 0000001895 65535 f 0000001896 65535 f 0000001897 65535 f 0000001898 65535 f 0000001899 65535 f 0000001900 65535 f 0000001901 65535 f 0000001902 65535 f 0000001903 65535 f 0000001904 65535 f 0000001905 65535 f 0000001906 65535 f 0000001907 65535 f 0000001908 65535 f 0000001909 65535 f 0000001910 65535 f 0000001911 65535 f 0000001912 65535 f 0000001913 65535 f 0000001914 65535 f 0000001915 65535 f 0000001916 65535 f 0000001917 65535 f 0000001918 65535 f 0000001919 65535 f 0000001920 65535 f 0000001921 65535 f 0000001922 65535 f 0000001923 65535 f 0000001924 65535 f 0000001925 65535 f 0000001926 65535 f 0000001927 65535 f 0000001928 65535 f 0000001929 65535 f 0000001930 65535 f 0000001931 65535 f 0000001932 65535 f 0000001933 65535 f 0000001934 65535 f 0000001935 65535 f 0000001936 65535 f 0000001937 65535 f 0000001938 65535 f 0000001939 65535 f 0000001940 65535 f 0000001941 65535 f 0000001942 65535 f 0000001943 65535 f 0000001944 65535 f 0000001945 65535 f 0000001946 65535 f 0000001947 65535 f 0000001948 65535 f 0000001949 65535 f 0000001950 65535 f 0000001951 65535 f 0000001952 65535 f 0000001953 65535 f 0000001954 65535 f 0000001955 65535 f 0000001956 65535 f 0000001957 65535 f 0000001958 65535 f 0000001959 65535 f 0000001960 65535 f 0000001961 65535 f 0000001962 65535 f 0000001963 65535 f 0000001964 65535 f 0000001965 65535 f 0000001966 65535 f 0000001967 65535 f 0000001968 65535 f 0000001969 65535 f 0000001970 65535 f 0000001971 65535 f 0000001972 65535 f 0000001973 65535 f 0000001974 65535 f 0000001975 65535 f 0000001976 65535 f 0000001977 65535 f 0000001978 65535 f 0000001979 65535 f 0000001980 65535 f 0000001981 65535 f 0000001982 65535 f 0000001983 65535 f 0000001984 65535 f 0000001985 65535 f 0000001986 65535 f 0000001987 65535 f 0000001988 65535 f 0000001989 65535 f 0000001990 65535 f 0000001991 65535 f 0000001992 65535 f 0000001993 65535 f 0000001994 65535 f 0000001995 65535 f 0000001996 65535 f 0000001997 65535 f 0000001998 65535 f 0000001999 65535 f 0000002000 65535 f 0000002001 65535 f 0000002002 65535 f 0000002003 65535 f 0000002004 65535 f 0000002005 65535 f 0000002006 65535 f 0000002007 65535 f 0000002008 65535 f 0000002009 65535 f 0000002010 65535 f 0000002011 65535 f 0000002012 65535 f 0000002013 65535 f 0000002014 65535 f 0000002015 65535 f 0000002016 65535 f 0000002017 65535 f 0000002018 65535 f 0000002019 65535 f 0000002020 65535 f 0000002021 65535 f 0000002022 65535 f 0000002023 65535 f 0000002024 65535 f 0000002025 65535 f 0000002026 65535 f 0000002027 65535 f 0000002028 65535 f 0000002029 65535 f 0000002030 65535 f 0000002031 65535 f 0000002032 65535 f 0000002033 65535 f 0000002034 65535 f 0000002035 65535 f 0000002036 65535 f 0000002037 65535 f 0000002038 65535 f 0000002039 65535 f 0000002040 65535 f 0000002041 65535 f 0000002042 65535 f 0000002043 65535 f 0000002044 65535 f 0000002045 65535 f 0000002046 65535 f 0000002047 65535 f 0000002048 65535 f 0000002049 65535 f 0000002050 65535 f 0000002051 65535 f 0000002052 65535 f 0000002053 65535 f 0000002054 65535 f 0000002055 65535 f 0000002056 65535 f 0000002057 65535 f 0000002058 65535 f 0000002059 65535 f 0000002060 65535 f 0000002061 65535 f 0000002062 65535 f 0000002063 65535 f 0000002064 65535 f 0000002065 65535 f 0000002066 65535 f 0000002067 65535 f 0000002068 65535 f 0000002069 65535 f 0000002070 65535 f 0000002071 65535 f 0000002072 65535 f 0000002073 65535 f 0000002074 65535 f 0000002075 65535 f 0000002076 65535 f 0000002077 65535 f 0000002078 65535 f 0000002079 65535 f 0000002080 65535 f 0000002081 65535 f 0000002082 65535 f 0000002083 65535 f 0000002084 65535 f 0000002085 65535 f 0000002086 65535 f 0000002087 65535 f 0000002088 65535 f 0000002089 65535 f 0000002090 65535 f 0000002091 65535 f 0000002092 65535 f 0000002093 65535 f 0000002094 65535 f 0000002095 65535 f 0000002096 65535 f 0000002097 65535 f 0000002098 65535 f 0000002099 65535 f 0000002100 65535 f 0000002101 65535 f 0000002102 65535 f 0000002103 65535 f 0000002104 65535 f 0000002105 65535 f 0000002106 65535 f 0000002107 65535 f 0000002108 65535 f 0000002109 65535 f 0000002110 65535 f 0000002111 65535 f 0000002112 65535 f 0000002113 65535 f 0000002114 65535 f 0000002115 65535 f 0000002116 65535 f 0000002117 65535 f 0000002118 65535 f 0000002119 65535 f 0000002120 65535 f 0000002121 65535 f 0000002122 65535 f 0000002123 65535 f 0000002124 65535 f 0000002125 65535 f 0000002126 65535 f 0000002127 65535 f 0000002128 65535 f 0000002129 65535 f 0000002130 65535 f 0000002131 65535 f 0000002132 65535 f 0000002133 65535 f 0000002134 65535 f 0000002135 65535 f 0000002136 65535 f 0000002137 65535 f 0000002138 65535 f 0000002139 65535 f 0000002140 65535 f 0000002141 65535 f 0000002142 65535 f 0000002143 65535 f 0000002144 65535 f 0000002145 65535 f 0000002146 65535 f 0000002147 65535 f 0000002148 65535 f 0000002149 65535 f 0000002150 65535 f 0000002151 65535 f 0000002152 65535 f 0000002153 65535 f 0000002154 65535 f 0000002155 65535 f 0000002156 65535 f 0000002157 65535 f 0000002158 65535 f 0000002159 65535 f 0000002160 65535 f 0000002161 65535 f 0000002162 65535 f 0000002163 65535 f 0000002164 65535 f 0000002165 65535 f 0000002166 65535 f 0000002167 65535 f 0000002168 65535 f 0000002169 65535 f 0000002170 65535 f 0000002171 65535 f 0000002172 65535 f 0000002173 65535 f 0000002174 65535 f 0000002175 65535 f 0000002176 65535 f 0000002177 65535 f 0000002178 65535 f 0000002179 65535 f 0000002180 65535 f 0000002181 65535 f 0000002182 65535 f 0000002183 65535 f 0000002184 65535 f 0000002185 65535 f 0000002186 65535 f 0000002187 65535 f 0000002188 65535 f 0000002189 65535 f 0000002190 65535 f 0000002191 65535 f 0000002192 65535 f 0000002193 65535 f 0000002194 65535 f 0000002195 65535 f 0000002196 65535 f 0000002197 65535 f 0000002198 65535 f 0000002199 65535 f 0000002200 65535 f 0000002201 65535 f 0000002202 65535 f 0000002203 65535 f 0000002204 65535 f 0000002205 65535 f 0000002206 65535 f 0000002207 65535 f 0000002208 65535 f 0000002209 65535 f 0000002210 65535 f 0000002211 65535 f 0000002212 65535 f 0000002213 65535 f 0000002214 65535 f 0000002215 65535 f 0000002216 65535 f 0000002217 65535 f 0000002218 65535 f 0000002219 65535 f 0000002220 65535 f 0000002221 65535 f 0000002222 65535 f 0000002223 65535 f 0000002224 65535 f 0000002225 65535 f 0000002226 65535 f 0000002227 65535 f 0000002228 65535 f 0000002229 65535 f 0000002230 65535 f 0000002231 65535 f 0000002232 65535 f 0000002233 65535 f 0000002234 65535 f 0000002235 65535 f 0000002236 65535 f 0000002237 65535 f 0000002238 65535 f 0000002239 65535 f 0000002240 65535 f 0000002241 65535 f 0000002242 65535 f 0000002243 65535 f 0000002244 65535 f 0000002245 65535 f 0000002246 65535 f 0000002247 65535 f 0000002248 65535 f 0000002249 65535 f 0000002250 65535 f 0000002251 65535 f 0000002252 65535 f 0000002253 65535 f 0000002254 65535 f 0000002255 65535 f 0000002256 65535 f 0000002257 65535 f 0000002258 65535 f 0000002259 65535 f 0000002260 65535 f 0000002261 65535 f 0000002262 65535 f 0000002263 65535 f 0000002264 65535 f 0000002265 65535 f 0000002266 65535 f 0000002267 65535 f 0000002268 65535 f 0000002269 65535 f 0000002270 65535 f 0000002271 65535 f 0000002272 65535 f 0000002273 65535 f 0000002274 65535 f 0000002275 65535 f 0000002276 65535 f 0000002277 65535 f 0000002278 65535 f 0000002279 65535 f 0000002280 65535 f 0000002281 65535 f 0000002282 65535 f 0000002283 65535 f 0000002284 65535 f 0000002285 65535 f 0000002286 65535 f 0000002287 65535 f 0000002288 65535 f 0000002289 65535 f 0000002290 65535 f 0000002291 65535 f 0000002292 65535 f 0000002293 65535 f 0000002294 65535 f 0000002295 65535 f 0000002296 65535 f 0000002297 65535 f 0000002298 65535 f 0000002299 65535 f 0000002300 65535 f 0000002301 65535 f 0000002302 65535 f 0000002303 65535 f 0000002304 65535 f 0000002305 65535 f 0000002306 65535 f 0000002307 65535 f 0000002308 65535 f 0000002309 65535 f 0000002310 65535 f 0000002311 65535 f 0000002312 65535 f 0000002313 65535 f 0000002314 65535 f 0000002315 65535 f 0000002316 65535 f 0000002317 65535 f 0000002318 65535 f 0000002319 65535 f 0000002320 65535 f 0000002321 65535 f 0000002322 65535 f 0000002323 65535 f 0000002324 65535 f 0000002325 65535 f 0000002326 65535 f 0000002327 65535 f 0000002328 65535 f 0000002329 65535 f 0000002330 65535 f 0000002331 65535 f 0000002332 65535 f 0000002333 65535 f 0000002334 65535 f 0000002335 65535 f 0000002336 65535 f 0000002337 65535 f 0000002338 65535 f 0000002339 65535 f 0000002340 65535 f 0000002341 65535 f 0000002342 65535 f 0000002343 65535 f 0000002344 65535 f 0000002345 65535 f 0000002346 65535 f 0000002347 65535 f 0000002348 65535 f 0000002349 65535 f 0000002350 65535 f 0000002351 65535 f 0000002352 65535 f 0000002353 65535 f 0000002354 65535 f 0000002355 65535 f 0000002356 65535 f 0000002357 65535 f 0000002358 65535 f 0000002359 65535 f 0000002360 65535 f 0000002361 65535 f 0000002362 65535 f 0000002363 65535 f 0000002364 65535 f 0000002365 65535 f 0000002366 65535 f 0000002367 65535 f 0000002368 65535 f 0000002369 65535 f 0000002370 65535 f 0000002371 65535 f 0000002372 65535 f 0000002373 65535 f 0000002374 65535 f 0000002375 65535 f 0000002376 65535 f 0000002377 65535 f 0000002378 65535 f 0000002379 65535 f 0000002380 65535 f 0000002381 65535 f 0000002382 65535 f 0000002383 65535 f 0000002384 65535 f 0000002385 65535 f 0000002386 65535 f 0000002387 65535 f 0000002388 65535 f 0000002389 65535 f 0000002390 65535 f 0000002391 65535 f 0000002392 65535 f 0000002393 65535 f 0000002394 65535 f 0000002395 65535 f 0000002396 65535 f 0000002397 65535 f 0000002398 65535 f 0000002399 65535 f 0000002400 65535 f 0000002401 65535 f 0000002402 65535 f 0000002403 65535 f 0000002404 65535 f 0000002405 65535 f 0000002406 65535 f 0000002407 65535 f 0000002408 65535 f 0000002409 65535 f 0000002410 65535 f 0000002411 65535 f 0000002412 65535 f 0000002413 65535 f 0000002414 65535 f 0000002415 65535 f 0000002416 65535 f 0000002417 65535 f 0000002418 65535 f 0000002419 65535 f 0000002420 65535 f 0000002421 65535 f 0000002422 65535 f 0000002423 65535 f 0000002424 65535 f 0000002425 65535 f 0000002426 65535 f 0000002427 65535 f 0000002428 65535 f 0000002429 65535 f 0000002430 65535 f 0000002431 65535 f 0000002432 65535 f 0000002433 65535 f 0000002434 65535 f 0000002435 65535 f 0000002436 65535 f 0000002437 65535 f 0000002438 65535 f 0000002439 65535 f 0000002440 65535 f 0000002441 65535 f 0000002442 65535 f 0000002443 65535 f 0000002444 65535 f 0000002445 65535 f 0000002446 65535 f 0000002447 65535 f 0000002448 65535 f 0000002449 65535 f 0000002450 65535 f 0000002451 65535 f 0000002452 65535 f 0000002453 65535 f 0000002454 65535 f 0000002455 65535 f 0000002456 65535 f 0000002457 65535 f 0000002458 65535 f 0000002459 65535 f 0000002460 65535 f 0000002461 65535 f 0000002462 65535 f 0000002463 65535 f 0000002464 65535 f 0000002465 65535 f 0000002466 65535 f 0000002467 65535 f 0000002468 65535 f 0000002469 65535 f 0000002470 65535 f 0000002471 65535 f 0000002472 65535 f 0000002473 65535 f 0000002474 65535 f 0000002475 65535 f 0000002476 65535 f 0000002477 65535 f 0000002478 65535 f 0000002479 65535 f 0000002480 65535 f 0000002481 65535 f 0000002482 65535 f 0000002483 65535 f 0000002484 65535 f 0000002485 65535 f 0000002486 65535 f 0000002487 65535 f 0000002488 65535 f 0000002489 65535 f 0000002490 65535 f 0000002491 65535 f 0000002492 65535 f 0000002493 65535 f 0000002494 65535 f 0000002495 65535 f 0000002496 65535 f 0000002497 65535 f 0000002498 65535 f 0000002499 65535 f 0000002500 65535 f 0000002501 65535 f 0000002502 65535 f 0000002503 65535 f 0000002504 65535 f 0000002505 65535 f 0000002506 65535 f 0000002507 65535 f 0000002508 65535 f 0000002509 65535 f 0000002510 65535 f 0000002511 65535 f 0000002512 65535 f 0000002513 65535 f 0000002514 65535 f 0000002515 65535 f 0000002516 65535 f 0000002517 65535 f 0000002518 65535 f 0000002519 65535 f 0000002520 65535 f 0000002521 65535 f 0000002522 65535 f 0000002523 65535 f 0000002524 65535 f 0000002525 65535 f 0000002526 65535 f 0000002527 65535 f 0000002528 65535 f 0000002529 65535 f 0000002530 65535 f 0000002531 65535 f 0000002532 65535 f 0000002533 65535 f 0000002534 65535 f 0000002535 65535 f 0000002536 65535 f 0000002537 65535 f 0000002538 65535 f 0000002539 65535 f 0000002540 65535 f 0000002541 65535 f 0000002542 65535 f 0000002543 65535 f 0000002544 65535 f 0000002545 65535 f 0000002546 65535 f 0000002547 65535 f 0000002548 65535 f 0000002549 65535 f 0000002550 65535 f 0000002551 65535 f 0000002552 65535 f 0000002553 65535 f 0000002554 65535 f 0000002555 65535 f 0000002556 65535 f 0000002557 65535 f 0000002558 65535 f 0000002559 65535 f 0000002560 65535 f 0000002561 65535 f 0000002562 65535 f 0000002563 65535 f 0000002564 65535 f 0000002565 65535 f 0000002566 65535 f 0000002567 65535 f 0000002568 65535 f 0000002569 65535 f 0000002570 65535 f 0000002571 65535 f 0000002572 65535 f 0000002573 65535 f 0000002574 65535 f 0000002575 65535 f 0000002576 65535 f 0000002577 65535 f 0000002578 65535 f 0000002579 65535 f 0000002580 65535 f 0000002581 65535 f 0000002582 65535 f 0000002583 65535 f 0000002584 65535 f 0000002585 65535 f 0000002586 65535 f 0000002587 65535 f 0000002588 65535 f 0000002589 65535 f 0000002590 65535 f 0000002591 65535 f 0000002592 65535 f 0000002593 65535 f 0000002594 65535 f 0000002595 65535 f 0000002596 65535 f 0000002597 65535 f 0000002598 65535 f 0000002599 65535 f 0000002600 65535 f 0000002601 65535 f 0000002602 65535 f 0000002603 65535 f 0000002604 65535 f 0000002605 65535 f 0000002606 65535 f 0000002607 65535 f 0000002608 65535 f 0000002609 65535 f 0000002610 65535 f 0000002611 65535 f 0000002612 65535 f 0000002613 65535 f 0000002614 65535 f 0000002615 65535 f 0000002616 65535 f 0000002617 65535 f 0000002618 65535 f 0000002619 65535 f 0000002620 65535 f 0000002621 65535 f 0000002622 65535 f 0000002623 65535 f 0000002624 65535 f 0000002625 65535 f 0000002626 65535 f 0000002627 65535 f 0000002628 65535 f 0000002629 65535 f 0000002630 65535 f 0000002631 65535 f 0000002632 65535 f 0000002633 65535 f 0000002634 65535 f 0000002635 65535 f 0000002636 65535 f 0000002637 65535 f 0000002638 65535 f 0000002639 65535 f 0000002640 65535 f 0000002641 65535 f 0000002642 65535 f 0000002643 65535 f 0000002644 65535 f 0000002645 65535 f 0000002646 65535 f 0000002647 65535 f 0000002648 65535 f 0000002649 65535 f 0000002650 65535 f 0000002651 65535 f 0000002652 65535 f 0000002653 65535 f 0000002654 65535 f 0000002655 65535 f 0000002656 65535 f 0000002657 65535 f 0000002658 65535 f 0000002659 65535 f 0000002660 65535 f 0000002661 65535 f 0000002662 65535 f 0000002663 65535 f 0000002664 65535 f 0000002665 65535 f 0000002666 65535 f 0000002667 65535 f 0000002668 65535 f 0000002669 65535 f 0000002670 65535 f 0000002671 65535 f 0000002672 65535 f 0000002673 65535 f 0000002674 65535 f 0000002675 65535 f 0000002676 65535 f 0000002677 65535 f 0000002678 65535 f 0000002679 65535 f 0000002680 65535 f 0000002681 65535 f 0000002682 65535 f 0000002683 65535 f 0000002684 65535 f 0000002685 65535 f 0000002686 65535 f 0000002687 65535 f 0000002688 65535 f 0000002689 65535 f 0000002690 65535 f 0000002691 65535 f 0000002692 65535 f 0000002693 65535 f 0000002694 65535 f 0000002695 65535 f 0000002696 65535 f 0000002697 65535 f 0000002698 65535 f 0000002699 65535 f 0000002700 65535 f 0000002701 65535 f 0000002702 65535 f 0000002703 65535 f 0000002704 65535 f 0000002705 65535 f 0000002706 65535 f 0000002707 65535 f 0000002708 65535 f 0000002709 65535 f 0000002710 65535 f 0000002711 65535 f 0000002712 65535 f 0000002713 65535 f 0000002714 65535 f 0000002715 65535 f 0000002716 65535 f 0000002717 65535 f 0000002718 65535 f 0000002719 65535 f 0000002720 65535 f 0000002721 65535 f 0000002722 65535 f 0000002723 65535 f 0000002724 65535 f 0000002725 65535 f 0000002726 65535 f 0000002727 65535 f 0000002728 65535 f 0000002729 65535 f 0000002730 65535 f 0000002731 65535 f 0000002732 65535 f 0000002733 65535 f 0000002734 65535 f 0000002735 65535 f 0000002736 65535 f 0000002737 65535 f 0000002738 65535 f 0000002739 65535 f 0000002740 65535 f 0000002741 65535 f 0000002742 65535 f 0000002743 65535 f 0000002744 65535 f 0000002745 65535 f 0000002746 65535 f 0000002747 65535 f 0000002748 65535 f 0000002749 65535 f 0000002750 65535 f 0000002751 65535 f 0000002752 65535 f 0000002753 65535 f 0000002754 65535 f 0000002755 65535 f 0000002756 65535 f 0000002757 65535 f 0000002758 65535 f 0000002759 65535 f 0000002760 65535 f 0000002761 65535 f 0000002762 65535 f 0000002763 65535 f 0000002764 65535 f 0000002765 65535 f 0000002766 65535 f 0000002767 65535 f 0000002768 65535 f 0000002769 65535 f 0000002770 65535 f 0000002771 65535 f 0000002772 65535 f 0000002773 65535 f 0000002774 65535 f 0000002775 65535 f 0000002776 65535 f 0000002777 65535 f 0000002778 65535 f 0000002779 65535 f 0000002780 65535 f 0000002781 65535 f 0000002782 65535 f 0000002783 65535 f 0000002784 65535 f 0000002785 65535 f 0000002786 65535 f 0000002787 65535 f 0000002788 65535 f 0000002789 65535 f 0000002790 65535 f 0000002791 65535 f 0000002792 65535 f 0000002793 65535 f 0000002794 65535 f 0000002795 65535 f 0000002796 65535 f 0000002797 65535 f 0000002798 65535 f 0000002799 65535 f 0000002800 65535 f 0000002801 65535 f 0000002802 65535 f 0000002803 65535 f 0000002804 65535 f 0000002805 65535 f 0000002806 65535 f 0000002807 65535 f 0000002808 65535 f 0000002809 65535 f 0000002810 65535 f 0000002811 65535 f 0000002812 65535 f 0000002813 65535 f 0000002814 65535 f 0000002815 65535 f 0000002816 65535 f 0000002817 65535 f 0000002818 65535 f 0000002819 65535 f 0000002820 65535 f 0000002821 65535 f 0000002822 65535 f 0000002823 65535 f 0000002824 65535 f 0000002825 65535 f 0000002826 65535 f 0000002827 65535 f 0000002828 65535 f 0000002829 65535 f 0000002830 65535 f 0000002831 65535 f 0000002832 65535 f 0000002833 65535 f 0000002834 65535 f 0000002835 65535 f 0000002836 65535 f 0000002837 65535 f 0000002838 65535 f 0000002839 65535 f 0000002840 65535 f 0000002841 65535 f 0000002842 65535 f 0000002843 65535 f 0000002844 65535 f 0000002845 65535 f 0000002846 65535 f 0000002847 65535 f 0000002848 65535 f 0000002849 65535 f 0000002850 65535 f 0000002851 65535 f 0000002852 65535 f 0000002853 65535 f 0000002854 65535 f 0000002855 65535 f 0000002856 65535 f 0000002857 65535 f 0000002858 65535 f 0000002859 65535 f 0000002860 65535 f 0000002861 65535 f 0000002862 65535 f 0000002863 65535 f 0000002864 65535 f 0000002865 65535 f 0000002866 65535 f 0000002867 65535 f 0000002868 65535 f 0000002869 65535 f 0000002870 65535 f 0000002871 65535 f 0000002872 65535 f 0000002873 65535 f 0000002874 65535 f 0000002875 65535 f 0000002876 65535 f 0000002877 65535 f 0000002878 65535 f 0000002879 65535 f 0000002880 65535 f 0000002881 65535 f 0000002882 65535 f 0000002883 65535 f 0000002884 65535 f 0000002885 65535 f 0000002886 65535 f 0000002887 65535 f 0000002888 65535 f 0000002889 65535 f 0000002890 65535 f 0000002891 65535 f 0000002892 65535 f 0000002893 65535 f 0000002894 65535 f 0000002895 65535 f 0000002896 65535 f 0000002897 65535 f 0000002898 65535 f 0000002899 65535 f 0000002900 65535 f 0000002901 65535 f 0000002902 65535 f 0000002903 65535 f 0000002904 65535 f 0000002905 65535 f 0000002906 65535 f 0000002907 65535 f 0000002908 65535 f 0000002909 65535 f 0000002910 65535 f 0000002911 65535 f 0000002912 65535 f 0000002913 65535 f 0000002914 65535 f 0000002915 65535 f 0000002916 65535 f 0000002917 65535 f 0000002918 65535 f 0000002919 65535 f 0000002920 65535 f 0000002921 65535 f 0000002922 65535 f 0000002923 65535 f 0000002924 65535 f 0000002925 65535 f 0000002926 65535 f 0000002927 65535 f 0000002928 65535 f 0000002929 65535 f 0000002930 65535 f 0000002931 65535 f 0000002932 65535 f 0000002933 65535 f 0000002934 65535 f 0000002935 65535 f 0000002936 65535 f 0000002937 65535 f 0000002938 65535 f 0000002939 65535 f 0000002940 65535 f 0000002941 65535 f 0000002942 65535 f 0000002943 65535 f 0000002944 65535 f 0000002945 65535 f 0000002946 65535 f 0000002947 65535 f 0000002948 65535 f 0000002949 65535 f 0000002950 65535 f 0000002951 65535 f 0000002952 65535 f 0000002953 65535 f 0000002954 65535 f 0000002955 65535 f 0000002956 65535 f 0000002957 65535 f 0000002958 65535 f 0000002959 65535 f 0000002960 65535 f 0000002961 65535 f 0000002962 65535 f 0000002963 65535 f 0000002964 65535 f 0000002965 65535 f 0000002966 65535 f 0000002967 65535 f 0000002968 65535 f 0000002969 65535 f 0000002970 65535 f 0000002971 65535 f 0000002972 65535 f 0000002973 65535 f 0000002974 65535 f 0000002975 65535 f 0000002976 65535 f 0000002977 65535 f 0000002978 65535 f 0000002979 65535 f 0000002980 65535 f 0000002981 65535 f 0000002982 65535 f 0000002983 65535 f 0000002984 65535 f 0000002985 65535 f 0000002986 65535 f 0000002987 65535 f 0000002988 65535 f 0000002989 65535 f 0000002990 65535 f 0000002991 65535 f 0000002992 65535 f 0000002993 65535 f 0000002994 65535 f 0000002995 65535 f 0000002996 65535 f 0000002997 65535 f 0000002998 65535 f 0000002999 65535 f 0000003000 65535 f 0000003001 65535 f 0000003002 65535 f 0000003003 65535 f 0000003004 65535 f 0000003005 65535 f 0000003006 65535 f 0000003007 65535 f 0000003008 65535 f 0000003009 65535 f 0000003010 65535 f 0000003011 65535 f 0000003012 65535 f 0000003013 65535 f 0000003014 65535 f 0000003015 65535 f 0000003016 65535 f 0000003017 65535 f 0000003018 65535 f 0000003019 65535 f 0000003020 65535 f 0000003021 65535 f 0000003022 65535 f 0000003023 65535 f 0000003024 65535 f 0000003025 65535 f 0000003026 65535 f 0000003027 65535 f 0000003028 65535 f 0000003029 65535 f 0000003030 65535 f 0000003031 65535 f 0000003032 65535 f 0000003033 65535 f 0000003034 65535 f 0000003035 65535 f 0000003036 65535 f 0000003037 65535 f 0000003038 65535 f 0000003039 65535 f 0000003040 65535 f 0000003041 65535 f 0000003042 65535 f 0000003043 65535 f 0000003044 65535 f 0000003045 65535 f 0000003046 65535 f 0000003047 65535 f 0000003048 65535 f 0000003049 65535 f 0000003050 65535 f 0000003051 65535 f 0000003052 65535 f 0000003053 65535 f 0000003054 65535 f 0000003055 65535 f 0000003056 65535 f 0000003057 65535 f 0000003058 65535 f 0000003059 65535 f 0000003060 65535 f 0000003061 65535 f 0000003062 65535 f 0000003063 65535 f 0000003064 65535 f 0000003065 65535 f 0000003066 65535 f 0000003067 65535 f 0000003068 65535 f 0000003069 65535 f 0000003070 65535 f 0000003071 65535 f 0000003072 65535 f 0000003073 65535 f 0000003074 65535 f 0000003075 65535 f 0000003076 65535 f 0000003077 65535 f 0000003078 65535 f 0000003079 65535 f 0000003080 65535 f 0000003081 65535 f 0000003082 65535 f 0000003083 65535 f 0000003084 65535 f 0000003085 65535 f 0000003086 65535 f 0000003087 65535 f 0000003088 65535 f 0000003089 65535 f 0000003090 65535 f 0000003091 65535 f 0000003092 65535 f 0000003093 65535 f 0000003094 65535 f 0000003095 65535 f 0000003096 65535 f 0000003097 65535 f 0000003098 65535 f 0000003099 65535 f 0000003100 65535 f 0000003101 65535 f 0000003102 65535 f 0000003103 65535 f 0000003104 65535 f 0000003105 65535 f 0000003106 65535 f 0000003107 65535 f 0000003108 65535 f 0000003109 65535 f 0000003110 65535 f 0000003111 65535 f 0000003112 65535 f 0000003113 65535 f 0000003114 65535 f 0000003115 65535 f 0000003116 65535 f 0000003117 65535 f 0000003118 65535 f 0000003119 65535 f 0000003120 65535 f 0000003121 65535 f 0000003122 65535 f 0000003123 65535 f 0000003124 65535 f 0000003125 65535 f 0000003126 65535 f 0000003127 65535 f 0000003128 65535 f 0000003129 65535 f 0000003130 65535 f 0000003131 65535 f 0000003132 65535 f 0000003133 65535 f 0000003134 65535 f 0000003135 65535 f 0000003136 65535 f 0000003137 65535 f 0000003138 65535 f 0000003139 65535 f 0000003140 65535 f 0000003141 65535 f 0000003142 65535 f 0000003143 65535 f 0000003144 65535 f 0000003145 65535 f 0000003146 65535 f 0000003147 65535 f 0000003148 65535 f 0000003149 65535 f 0000003150 65535 f 0000003151 65535 f 0000003152 65535 f 0000003153 65535 f 0000003154 65535 f 0000003155 65535 f 0000003156 65535 f 0000003157 65535 f 0000003158 65535 f 0000003159 65535 f 0000003160 65535 f 0000003161 65535 f 0000003162 65535 f 0000003163 65535 f 0000003164 65535 f 0000003165 65535 f 0000003166 65535 f 0000003167 65535 f 0000003168 65535 f 0000003169 65535 f 0000003170 65535 f 0000003171 65535 f 0000003172 65535 f 0000003173 65535 f 0000003174 65535 f 0000003175 65535 f 0000003176 65535 f 0000003177 65535 f 0000003178 65535 f 0000003179 65535 f 0000003180 65535 f 0000003181 65535 f 0000003182 65535 f 0000003183 65535 f 0000003184 65535 f 0000003185 65535 f 0000003186 65535 f 0000003187 65535 f 0000003188 65535 f 0000003189 65535 f 0000003190 65535 f 0000003191 65535 f 0000003192 65535 f 0000003193 65535 f 0000003194 65535 f 0000003195 65535 f 0000003196 65535 f 0000003197 65535 f 0000003198 65535 f 0000003199 65535 f 0000003200 65535 f 0000003201 65535 f 0000003202 65535 f 0000003203 65535 f 0000003204 65535 f 0000003205 65535 f 0000003206 65535 f 0000003207 65535 f 0000003208 65535 f 0000003209 65535 f 0000003210 65535 f 0000003211 65535 f 0000003212 65535 f 0000003213 65535 f 0000003214 65535 f 0000003215 65535 f 0000003216 65535 f 0000003217 65535 f 0000003218 65535 f 0000003219 65535 f 0000003220 65535 f 0000003221 65535 f 0000003222 65535 f 0000003223 65535 f 0000003224 65535 f 0000003225 65535 f 0000003226 65535 f 0000003227 65535 f 0000003228 65535 f 0000003229 65535 f 0000003230 65535 f 0000003231 65535 f 0000003232 65535 f 0000003233 65535 f 0000003234 65535 f 0000003235 65535 f 0000003236 65535 f 0000003237 65535 f 0000003238 65535 f 0000003239 65535 f 0000003240 65535 f 0000003241 65535 f 0000003242 65535 f 0000003243 65535 f 0000003244 65535 f 0000003245 65535 f 0000003246 65535 f 0000003247 65535 f 0000003248 65535 f 0000003249 65535 f 0000003250 65535 f 0000003251 65535 f 0000003252 65535 f 0000003253 65535 f 0000003254 65535 f 0000003255 65535 f 0000003256 65535 f 0000003257 65535 f 0000003258 65535 f 0000003259 65535 f 0000003260 65535 f 0000003261 65535 f 0000003262 65535 f 0000003263 65535 f 0000003264 65535 f 0000003265 65535 f 0000003266 65535 f 0000003267 65535 f 0000003268 65535 f 0000003269 65535 f 0000003270 65535 f 0000003271 65535 f 0000003272 65535 f 0000003273 65535 f 0000003274 65535 f 0000003275 65535 f 0000003276 65535 f 0000003277 65535 f 0000003278 65535 f 0000003279 65535 f 0000003280 65535 f 0000003281 65535 f 0000003282 65535 f 0000003283 65535 f 0000003284 65535 f 0000003285 65535 f 0000003286 65535 f 0000003287 65535 f 0000003288 65535 f 0000003289 65535 f 0000003290 65535 f 0000003291 65535 f 0000003292 65535 f 0000003293 65535 f 0000003294 65535 f 0000003295 65535 f 0000003296 65535 f 0000003297 65535 f 0000003298 65535 f 0000003299 65535 f 0000003300 65535 f 0000003301 65535 f 0000003302 65535 f 0000003303 65535 f 0000003304 65535 f 0000003305 65535 f 0000003306 65535 f 0000003307 65535 f 0000003308 65535 f 0000003309 65535 f 0000003310 65535 f 0000003311 65535 f 0000003312 65535 f 0000003313 65535 f 0000003314 65535 f 0000003315 65535 f 0000003316 65535 f 0000003317 65535 f 0000003318 65535 f 0000003319 65535 f 0000003320 65535 f 0000003321 65535 f 0000003322 65535 f 0000003323 65535 f 0000003324 65535 f 0000003325 65535 f 0000003326 65535 f 0000003327 65535 f 0000003328 65535 f 0000003329 65535 f 0000003330 65535 f 0000003331 65535 f 0000003332 65535 f 0000003333 65535 f 0000003334 65535 f 0000003335 65535 f 0000003336 65535 f 0000003337 65535 f 0000003338 65535 f 0000003339 65535 f 0000003340 65535 f 0000003341 65535 f 0000003342 65535 f 0000003343 65535 f 0000003344 65535 f 0000003345 65535 f 0000003346 65535 f 0000003347 65535 f 0000003348 65535 f 0000003349 65535 f 0000003350 65535 f 0000003351 65535 f 0000003352 65535 f 0000003353 65535 f 0000003354 65535 f 0000003355 65535 f 0000003356 65535 f 0000003357 65535 f 0000003358 65535 f 0000003359 65535 f 0000003360 65535 f 0000003361 65535 f 0000003362 65535 f 0000003363 65535 f 0000003364 65535 f 0000003365 65535 f 0000003366 65535 f 0000003367 65535 f 0000003368 65535 f 0000003369 65535 f 0000003370 65535 f 0000003371 65535 f 0000003372 65535 f 0000003373 65535 f 0000003374 65535 f 0000003375 65535 f 0000003376 65535 f 0000003377 65535 f 0000003378 65535 f 0000003379 65535 f 0000003380 65535 f 0000003381 65535 f 0000003382 65535 f 0000003383 65535 f 0000003384 65535 f 0000003385 65535 f 0000003386 65535 f 0000003387 65535 f 0000003388 65535 f 0000003389 65535 f 0000003390 65535 f 0000003391 65535 f 0000003392 65535 f 0000003393 65535 f 0000003394 65535 f 0000003395 65535 f 0000003396 65535 f 0000003397 65535 f 0000003398 65535 f 0000003399 65535 f 0000003400 65535 f 0000003401 65535 f 0000003402 65535 f 0000003403 65535 f 0000003404 65535 f 0000003405 65535 f 0000003406 65535 f 0000003407 65535 f 0000003408 65535 f 0000003409 65535 f 0000003410 65535 f 0000003411 65535 f 0000003412 65535 f 0000003413 65535 f 0000003414 65535 f 0000003415 65535 f 0000003416 65535 f 0000003417 65535 f 0000003418 65535 f 0000003419 65535 f 0000003420 65535 f 0000003421 65535 f 0000003422 65535 f 0000003423 65535 f 0000003424 65535 f 0000003425 65535 f 0000003426 65535 f 0000003427 65535 f 0000003428 65535 f 0000003429 65535 f 0000003430 65535 f 0000003431 65535 f 0000003432 65535 f 0000003433 65535 f 0000003434 65535 f 0000003435 65535 f 0000003436 65535 f 0000003437 65535 f 0000003438 65535 f 0000003439 65535 f 0000003440 65535 f 0000003441 65535 f 0000003442 65535 f 0000003443 65535 f 0000003444 65535 f 0000003445 65535 f 0000003446 65535 f 0000003447 65535 f 0000003448 65535 f 0000003449 65535 f 0000003450 65535 f 0000003451 65535 f 0000003452 65535 f 0000003453 65535 f 0000003454 65535 f 0000003455 65535 f 0000003456 65535 f 0000003457 65535 f 0000003458 65535 f 0000003459 65535 f 0000003460 65535 f 0000003461 65535 f 0000003462 65535 f 0000003463 65535 f 0000003464 65535 f 0000003465 65535 f 0000003466 65535 f 0000003467 65535 f 0000003468 65535 f 0000003469 65535 f 0000003470 65535 f 0000003471 65535 f 0000003472 65535 f 0000003473 65535 f 0000003474 65535 f 0000003475 65535 f 0000003476 65535 f 0000003477 65535 f 0000003478 65535 f 0000003479 65535 f 0000003480 65535 f 0000003481 65535 f 0000003482 65535 f 0000003483 65535 f 0000003484 65535 f 0000003485 65535 f 0000003486 65535 f 0000003487 65535 f 0000003488 65535 f 0000003489 65535 f 0000003490 65535 f 0000003491 65535 f 0000003492 65535 f 0000003493 65535 f 0000003494 65535 f 0000003495 65535 f 0000003496 65535 f 0000003497 65535 f 0000003498 65535 f 0000003499 65535 f 0000003500 65535 f 0000003501 65535 f 0000003502 65535 f 0000003503 65535 f 0000003504 65535 f 0000003505 65535 f 0000003506 65535 f 0000003507 65535 f 0000003508 65535 f 0000003509 65535 f 0000003510 65535 f 0000003511 65535 f 0000003512 65535 f 0000003513 65535 f 0000003514 65535 f 0000003515 65535 f 0000003516 65535 f 0000003517 65535 f 0000003518 65535 f 0000003519 65535 f 0000003520 65535 f 0000003521 65535 f 0000003522 65535 f 0000003523 65535 f 0000003524 65535 f 0000003525 65535 f 0000003526 65535 f 0000003527 65535 f 0000003528 65535 f 0000003529 65535 f 0000003530 65535 f 0000003531 65535 f 0000003532 65535 f 0000003533 65535 f 0000003534 65535 f 0000003535 65535 f 0000003536 65535 f 0000003537 65535 f 0000003538 65535 f 0000003539 65535 f 0000003540 65535 f 0000003541 65535 f 0000003542 65535 f 0000003543 65535 f 0000003544 65535 f 0000003545 65535 f 0000003546 65535 f 0000003547 65535 f 0000003548 65535 f 0000003549 65535 f 0000003550 65535 f 0000003551 65535 f 0000003552 65535 f 0000003553 65535 f 0000003554 65535 f 0000003555 65535 f 0000003556 65535 f 0000003557 65535 f 0000003558 65535 f 0000003559 65535 f 0000003560 65535 f 0000003561 65535 f 0000003562 65535 f 0000003563 65535 f 0000003564 65535 f 0000003565 65535 f 0000003566 65535 f 0000003567 65535 f 0000003568 65535 f 0000003569 65535 f 0000003570 65535 f 0000003571 65535 f 0000003572 65535 f 0000003573 65535 f 0000003574 65535 f 0000003575 65535 f 0000003576 65535 f 0000003577 65535 f 0000003578 65535 f 0000003579 65535 f 0000003580 65535 f 0000003581 65535 f 0000003582 65535 f 0000003583 65535 f 0000003584 65535 f 0000003585 65535 f 0000003586 65535 f 0000003587 65535 f 0000003588 65535 f 0000003589 65535 f 0000003590 65535 f 0000003591 65535 f 0000003592 65535 f 0000003593 65535 f 0000003594 65535 f 0000003595 65535 f 0000003596 65535 f 0000003597 65535 f 0000003598 65535 f 0000003599 65535 f 0000003600 65535 f 0000003601 65535 f 0000003602 65535 f 0000003603 65535 f 0000003604 65535 f 0000003605 65535 f 0000003606 65535 f 0000003607 65535 f 0000003608 65535 f 0000003609 65535 f 0000003610 65535 f 0000003611 65535 f 0000003612 65535 f 0000003613 65535 f 0000003614 65535 f 0000003615 65535 f 0000003616 65535 f 0000003617 65535 f 0000003618 65535 f 0000003619 65535 f 0000003620 65535 f 0000003621 65535 f 0000003622 65535 f 0000003623 65535 f 0000003624 65535 f 0000003625 65535 f 0000003626 65535 f 0000003627 65535 f 0000003628 65535 f 0000003629 65535 f 0000003630 65535 f 0000003631 65535 f 0000003632 65535 f 0000003633 65535 f 0000003634 65535 f 0000003635 65535 f 0000003636 65535 f 0000003637 65535 f 0000003638 65535 f 0000003639 65535 f 0000003640 65535 f 0000003641 65535 f 0000003642 65535 f 0000003643 65535 f 0000003644 65535 f 0000003645 65535 f 0000003646 65535 f 0000003647 65535 f 0000003648 65535 f 0000003649 65535 f 0000003650 65535 f 0000003651 65535 f 0000003652 65535 f 0000003653 65535 f 0000003654 65535 f 0000003655 65535 f 0000003656 65535 f 0000003657 65535 f 0000003658 65535 f 0000003659 65535 f 0000003660 65535 f 0000003661 65535 f 0000003662 65535 f 0000003663 65535 f 0000003664 65535 f 0000003665 65535 f 0000003666 65535 f 0000003667 65535 f 0000003668 65535 f 0000003669 65535 f 0000003670 65535 f 0000003671 65535 f 0000003672 65535 f 0000003673 65535 f 0000003674 65535 f 0000003675 65535 f 0000003676 65535 f 0000003677 65535 f 0000003678 65535 f 0000003679 65535 f 0000003680 65535 f 0000003681 65535 f 0000003682 65535 f 0000003683 65535 f 0000003684 65535 f 0000003685 65535 f 0000003686 65535 f 0000003687 65535 f 0000003688 65535 f 0000003689 65535 f 0000003690 65535 f 0000003691 65535 f 0000003692 65535 f 0000003693 65535 f 0000003694 65535 f 0000003695 65535 f 0000003696 65535 f 0000003697 65535 f 0000003698 65535 f 0000003699 65535 f 0000003700 65535 f 0000003701 65535 f 0000003702 65535 f 0000003703 65535 f 0000003704 65535 f 0000003705 65535 f 0000003706 65535 f 0000003707 65535 f 0000003708 65535 f 0000003709 65535 f 0000003710 65535 f 0000003711 65535 f 0000003712 65535 f 0000003713 65535 f 0000003714 65535 f 0000003715 65535 f 0000003716 65535 f 0000003717 65535 f 0000003718 65535 f 0000003719 65535 f 0000003720 65535 f 0000003721 65535 f 0000003722 65535 f 0000003723 65535 f 0000003724 65535 f 0000003725 65535 f 0000003726 65535 f 0000003727 65535 f 0000003728 65535 f 0000003729 65535 f 0000003730 65535 f 0000003731 65535 f 0000003732 65535 f 0000003733 65535 f 0000003734 65535 f 0000003735 65535 f 0000003736 65535 f 0000003737 65535 f 0000003738 65535 f 0000003739 65535 f 0000003740 65535 f 0000003741 65535 f 0000003742 65535 f 0000003743 65535 f 0000003744 65535 f 0000003745 65535 f 0000003746 65535 f 0000003747 65535 f 0000003748 65535 f 0000003749 65535 f 0000003750 65535 f 0000003751 65535 f 0000003752 65535 f 0000003753 65535 f 0000003754 65535 f 0000003755 65535 f 0000003756 65535 f 0000003757 65535 f 0000003758 65535 f 0000003759 65535 f 0000003760 65535 f 0000003761 65535 f 0000003762 65535 f 0000003763 65535 f 0000003764 65535 f 0000003765 65535 f 0000003766 65535 f 0000003767 65535 f 0000003768 65535 f 0000003769 65535 f 0000003770 65535 f 0000003771 65535 f 0000003772 65535 f 0000003773 65535 f 0000003774 65535 f 0000003775 65535 f 0000003776 65535 f 0000003777 65535 f 0000003778 65535 f 0000003779 65535 f 0000003780 65535 f 0000003781 65535 f 0000003782 65535 f 0000003783 65535 f 0000003784 65535 f 0000003785 65535 f 0000003786 65535 f 0000003787 65535 f 0000003788 65535 f 0000003789 65535 f 0000003790 65535 f 0000003791 65535 f 0000003792 65535 f 0000003793 65535 f 0000003794 65535 f 0000003795 65535 f 0000003796 65535 f 0000003797 65535 f 0000003798 65535 f 0000003799 65535 f 0000003800 65535 f 0000003801 65535 f 0000003802 65535 f 0000003803 65535 f 0000003804 65535 f 0000003805 65535 f 0000003806 65535 f 0000003807 65535 f 0000003808 65535 f 0000003809 65535 f 0000003810 65535 f 0000003811 65535 f 0000003812 65535 f 0000003813 65535 f 0000003814 65535 f 0000003815 65535 f 0000003816 65535 f 0000003817 65535 f 0000003818 65535 f 0000003819 65535 f 0000003820 65535 f 0000003821 65535 f 0000003822 65535 f 0000003823 65535 f 0000003824 65535 f 0000003825 65535 f 0000003826 65535 f 0000003827 65535 f 0000003828 65535 f 0000003829 65535 f 0000003830 65535 f 0000003831 65535 f 0000003832 65535 f 0000003833 65535 f 0000003834 65535 f 0000003835 65535 f 0000003836 65535 f 0000003837 65535 f 0000003838 65535 f 0000003839 65535 f 0000003840 65535 f 0000003841 65535 f 0000003842 65535 f 0000003843 65535 f 0000003844 65535 f 0000003845 65535 f 0000003846 65535 f 0000003847 65535 f 0000003848 65535 f 0000003849 65535 f 0000003850 65535 f 0000003851 65535 f 0000003852 65535 f 0000003853 65535 f 0000003854 65535 f 0000003855 65535 f 0000003856 65535 f 0000003857 65535 f 0000003858 65535 f 0000003859 65535 f 0000003860 65535 f 0000003861 65535 f 0000003862 65535 f 0000003863 65535 f 0000003864 65535 f 0000003865 65535 f 0000003866 65535 f 0000003867 65535 f 0000003868 65535 f 0000003869 65535 f 0000003870 65535 f 0000003871 65535 f 0000003872 65535 f 0000003873 65535 f 0000003874 65535 f 0000003875 65535 f 0000003876 65535 f 0000003877 65535 f 0000003878 65535 f 0000003879 65535 f 0000003880 65535 f 0000003881 65535 f 0000003882 65535 f 0000003883 65535 f 0000003884 65535 f 0000003885 65535 f 0000003886 65535 f 0000003887 65535 f 0000003888 65535 f 0000003889 65535 f 0000003890 65535 f 0000003891 65535 f 0000003892 65535 f 0000003893 65535 f 0000003894 65535 f 0000003895 65535 f 0000003896 65535 f 0000003897 65535 f 0000003898 65535 f 0000003899 65535 f 0000003900 65535 f 0000003901 65535 f 0000003902 65535 f 0000003903 65535 f 0000003904 65535 f 0000003905 65535 f 0000003906 65535 f 0000003907 65535 f 0000003908 65535 f 0000003909 65535 f 0000003910 65535 f 0000003911 65535 f 0000003912 65535 f 0000003913 65535 f 0000003914 65535 f 0000003915 65535 f 0000003916 65535 f 0000003917 65535 f 0000003918 65535 f 0000003919 65535 f 0000003920 65535 f 0000003921 65535 f 0000003922 65535 f 0000003923 65535 f 0000003924 65535 f 0000003925 65535 f 0000003926 65535 f 0000003927 65535 f 0000003928 65535 f 0000003929 65535 f 0000003930 65535 f 0000003931 65535 f 0000003932 65535 f 0000003933 65535 f 0000003934 65535 f 0000003935 65535 f 0000003936 65535 f 0000003937 65535 f 0000003938 65535 f 0000003939 65535 f 0000003940 65535 f 0000003941 65535 f 0000003942 65535 f 0000003943 65535 f 0000003944 65535 f 0000003945 65535 f 0000003946 65535 f 0000003947 65535 f 0000003948 65535 f 0000003949 65535 f 0000003950 65535 f 0000003951 65535 f 0000003952 65535 f 0000003953 65535 f 0000003954 65535 f 0000003955 65535 f 0000003956 65535 f 0000003957 65535 f 0000003958 65535 f 0000003959 65535 f 0000003960 65535 f 0000003961 65535 f 0000003962 65535 f 0000003963 65535 f 0000003964 65535 f 0000003965 65535 f 0000003966 65535 f 0000003967 65535 f 0000003968 65535 f 0000003969 65535 f 0000003970 65535 f 0000003971 65535 f 0000003972 65535 f 0000003973 65535 f 0000003974 65535 f 0000003975 65535 f 0000003976 65535 f 0000003977 65535 f 0000003978 65535 f 0000003979 65535 f 0000003980 65535 f 0000003981 65535 f 0000003982 65535 f 0000003983 65535 f 0000003984 65535 f 0000003985 65535 f 0000003986 65535 f 0000003987 65535 f 0000003988 65535 f 0000003989 65535 f 0000003990 65535 f 0000003991 65535 f 0000003992 65535 f 0000003993 65535 f 0000003994 65535 f 0000003995 65535 f 0000003996 65535 f 0000003997 65535 f 0000003998 65535 f 0000003999 65535 f 0000004000 65535 f 0000004001 65535 f 0000004002 65535 f 0000004003 65535 f 0000004004 65535 f 0000004005 65535 f 0000004006 65535 f 0000004007 65535 f 0000004008 65535 f 0000004009 65535 f 0000004010 65535 f 0000004011 65535 f 0000004012 65535 f 0000004013 65535 f 0000004014 65535 f 0000004015 65535 f 0000004016 65535 f 0000004017 65535 f 0000004018 65535 f 0000004019 65535 f 0000004020 65535 f 0000004021 65535 f 0000004022 65535 f 0000004023 65535 f 0000004024 65535 f 0000004025 65535 f 0000004026 65535 f 0000004027 65535 f 0000004028 65535 f 0000004029 65535 f 0000004030 65535 f 0000004031 65535 f 0000004032 65535 f 0000004033 65535 f 0000004034 65535 f 0000004035 65535 f 0000004036 65535 f 0000004037 65535 f 0000004038 65535 f 0000004039 65535 f 0000004040 65535 f 0000004041 65535 f 0000004042 65535 f 0000004043 65535 f 0000004044 65535 f 0000004045 65535 f 0000004046 65535 f 0000004047 65535 f 0000004048 65535 f 0000004049 65535 f 0000004050 65535 f 0000004051 65535 f 0000004052 65535 f 0000004053 65535 f 0000004054 65535 f 0000004055 65535 f 0000004056 65535 f 0000004057 65535 f 0000004058 65535 f 0000004059 65535 f 0000004060 65535 f 0000004061 65535 f 0000004062 65535 f 0000004063 65535 f 0000004064 65535 f 0000004065 65535 f 0000004066 65535 f 0000004067 65535 f 0000004068 65535 f 0000004069 65535 f 0000004070 65535 f 0000004071 65535 f 0000004072 65535 f 0000004073 65535 f 0000004074 65535 f 0000004075 65535 f 0000004076 65535 f 0000004077 65535 f 0000004078 65535 f 0000004079 65535 f 0000004080 65535 f 0000004081 65535 f 0000004082 65535 f 0000004083 65535 f 0000004084 65535 f 0000004085 65535 f 0000004086 65535 f 0000004087 65535 f 0000004088 65535 f 0000004089 65535 f 0000004090 65535 f 0000004091 65535 f 0000004092 65535 f 0000004093 65535 f 0000004094 65535 f 0000004095 65535 f 0000004096 65535 f 0000004097 65535 f 0000004098 65535 f 0000004099 65535 f 0000004100 65535 f 0000004101 65535 f 0000004102 65535 f 0000004103 65535 f 0000004104 65535 f 0000004105 65535 f 0000004106 65535 f 0000004107 65535 f 0000004108 65535 f 0000004109 65535 f 0000004110 65535 f 0000004111 65535 f 0000004112 65535 f 0000004113 65535 f 0000004114 65535 f 0000004115 65535 f 0000004116 65535 f 0000004117 65535 f 0000004118 65535 f 0000004119 65535 f 0000004120 65535 f 0000004121 65535 f 0000004122 65535 f 0000004123 65535 f 0000004124 65535 f 0000004125 65535 f 0000004126 65535 f 0000004127 65535 f 0000004128 65535 f 0000004129 65535 f 0000004130 65535 f 0000004131 65535 f 0000004132 65535 f 0000004133 65535 f 0000004134 65535 f 0000004135 65535 f 0000004136 65535 f 0000004137 65535 f 0000004138 65535 f 0000004139 65535 f 0000004140 65535 f 0000004141 65535 f 0000004142 65535 f 0000004143 65535 f 0000004144 65535 f 0000004145 65535 f 0000004146 65535 f 0000004147 65535 f 0000004148 65535 f 0000004149 65535 f 0000004150 65535 f 0000004151 65535 f 0000004152 65535 f 0000004153 65535 f 0000004154 65535 f 0000004155 65535 f 0000004156 65535 f 0000004157 65535 f 0000004158 65535 f 0000004159 65535 f 0000004160 65535 f 0000004161 65535 f 0000004162 65535 f 0000004163 65535 f 0000004164 65535 f 0000004165 65535 f 0000004166 65535 f 0000004167 65535 f 0000004168 65535 f 0000004169 65535 f 0000004170 65535 f 0000004171 65535 f 0000004172 65535 f 0000004173 65535 f 0000004174 65535 f 0000004175 65535 f 0000004176 65535 f 0000004177 65535 f 0000004178 65535 f 0000004179 65535 f 0000004180 65535 f 0000004181 65535 f 0000004182 65535 f 0000004183 65535 f 0000004184 65535 f 0000004185 65535 f 0000004186 65535 f 0000004187 65535 f 0000004188 65535 f 0000004189 65535 f 0000004190 65535 f 0000004191 65535 f 0000004192 65535 f 0000004193 65535 f 0000004194 65535 f 0000004195 65535 f 0000004196 65535 f 0000004197 65535 f 0000004198 65535 f 0000004199 65535 f 0000004200 65535 f 0000004201 65535 f 0000004202 65535 f 0000004203 65535 f 0000004204 65535 f 0000004205 65535 f 0000004206 65535 f 0000004207 65535 f 0000004208 65535 f 0000004209 65535 f 0000004210 65535 f 0000004211 65535 f 0000004212 65535 f 0000004213 65535 f 0000004214 65535 f 0000004215 65535 f 0000004216 65535 f 0000004217 65535 f 0000004218 65535 f 0000004219 65535 f 0000004220 65535 f 0000004221 65535 f 0000004222 65535 f 0000004223 65535 f 0000004224 65535 f 0000004225 65535 f 0000004226 65535 f 0000004227 65535 f 0000004228 65535 f 0000004229 65535 f 0000004230 65535 f 0000004231 65535 f 0000004232 65535 f 0000004233 65535 f 0000004234 65535 f 0000004235 65535 f 0000004236 65535 f 0000004237 65535 f 0000004238 65535 f 0000004239 65535 f 0000004240 65535 f 0000004241 65535 f 0000004242 65535 f 0000004243 65535 f 0000004244 65535 f 0000004245 65535 f 0000004246 65535 f 0000004247 65535 f 0000004248 65535 f 0000004249 65535 f 0000004250 65535 f 0000004251 65535 f 0000004252 65535 f 0000004253 65535 f 0000004254 65535 f 0000004255 65535 f 0000004256 65535 f 0000004257 65535 f 0000004258 65535 f 0000004259 65535 f 0000004260 65535 f 0000004261 65535 f 0000004262 65535 f 0000004263 65535 f 0000004264 65535 f 0000004265 65535 f 0000004266 65535 f 0000004267 65535 f 0000004268 65535 f 0000004269 65535 f 0000004270 65535 f 0000004271 65535 f 0000004272 65535 f 0000004273 65535 f 0000004274 65535 f 0000004275 65535 f 0000004276 65535 f 0000004277 65535 f 0000004278 65535 f 0000004279 65535 f 0000004280 65535 f 0000004281 65535 f 0000004282 65535 f 0000004283 65535 f 0000004284 65535 f 0000004285 65535 f 0000004286 65535 f 0000004287 65535 f 0000004288 65535 f 0000004289 65535 f 0000004290 65535 f 0000004291 65535 f 0000004292 65535 f 0000004293 65535 f 0000004294 65535 f 0000004295 65535 f 0000004296 65535 f 0000004297 65535 f 0000004298 65535 f 0000004299 65535 f 0000004300 65535 f 0000004301 65535 f 0000004302 65535 f 0000004303 65535 f 0000004304 65535 f 0000004305 65535 f 0000004306 65535 f 0000004307 65535 f 0000004308 65535 f 0000004309 65535 f 0000004310 65535 f 0000004311 65535 f 0000004312 65535 f 0000004313 65535 f 0000004314 65535 f 0000004315 65535 f 0000004316 65535 f 0000004317 65535 f 0000004318 65535 f 0000004319 65535 f 0000004320 65535 f 0000004321 65535 f 0000004322 65535 f 0000004323 65535 f 0000004324 65535 f 0000004325 65535 f 0000004326 65535 f 0000004327 65535 f 0000004328 65535 f 0000004329 65535 f 0000004330 65535 f 0000004331 65535 f 0000004332 65535 f 0000004333 65535 f 0000004334 65535 f 0000004335 65535 f 0000004336 65535 f 0000004337 65535 f 0000004338 65535 f 0000004339 65535 f 0000004340 65535 f 0000004341 65535 f 0000004342 65535 f 0000004343 65535 f 0000004344 65535 f 0000004345 65535 f 0000004346 65535 f 0000004347 65535 f 0000004348 65535 f 0000004349 65535 f 0000004350 65535 f 0000004351 65535 f 0000004352 65535 f 0000004353 65535 f 0000004354 65535 f 0000004355 65535 f 0000004356 65535 f 0000004357 65535 f 0000004358 65535 f 0000004359 65535 f 0000004360 65535 f 0000004361 65535 f 0000004362 65535 f 0000004363 65535 f 0000004364 65535 f 0000004365 65535 f 0000004366 65535 f 0000004367 65535 f 0000004368 65535 f 0000004369 65535 f 0000004370 65535 f 0000004371 65535 f 0000004372 65535 f 0000004373 65535 f 0000004374 65535 f 0000004375 65535 f 0000004376 65535 f 0000004377 65535 f 0000004378 65535 f 0000004379 65535 f 0000004380 65535 f 0000004381 65535 f 0000004382 65535 f 0000004383 65535 f 0000004384 65535 f 0000004385 65535 f 0000004386 65535 f 0000004387 65535 f 0000004388 65535 f 0000004389 65535 f 0000004390 65535 f 0000004391 65535 f 0000004392 65535 f 0000004393 65535 f 0000004394 65535 f 0000004395 65535 f 0000004396 65535 f 0000004397 65535 f 0000004398 65535 f 0000004399 65535 f 0000004400 65535 f 0000004401 65535 f 0000004402 65535 f 0000004403 65535 f 0000004404 65535 f 0000004405 65535 f 0000004406 65535 f 0000004407 65535 f 0000004408 65535 f 0000004409 65535 f 0000004410 65535 f 0000004411 65535 f 0000004412 65535 f 0000004413 65535 f 0000004414 65535 f 0000004415 65535 f 0000004416 65535 f 0000004417 65535 f 0000004418 65535 f 0000004419 65535 f 0000004420 65535 f 0000004421 65535 f 0000004422 65535 f 0000004423 65535 f 0000004424 65535 f 0000004425 65535 f 0000004426 65535 f 0000004427 65535 f 0000004428 65535 f 0000004429 65535 f 0000004430 65535 f 0000004431 65535 f 0000004432 65535 f 0000004433 65535 f 0000004434 65535 f 0000004435 65535 f 0000004436 65535 f 0000004437 65535 f 0000004438 65535 f 0000004439 65535 f 0000004440 65535 f 0000004441 65535 f 0000004442 65535 f 0000004443 65535 f 0000004444 65535 f 0000004445 65535 f 0000004446 65535 f 0000004447 65535 f 0000004448 65535 f 0000004449 65535 f 0000004450 65535 f 0000004451 65535 f 0000004452 65535 f 0000004453 65535 f 0000004454 65535 f 0000004455 65535 f 0000004456 65535 f 0000004457 65535 f 0000004458 65535 f 0000004459 65535 f 0000004460 65535 f 0000004461 65535 f 0000004462 65535 f 0000004463 65535 f 0000004464 65535 f 0000004465 65535 f 0000004466 65535 f 0000004467 65535 f 0000004468 65535 f 0000004469 65535 f 0000004470 65535 f 0000004471 65535 f 0000004472 65535 f 0000004473 65535 f 0000004474 65535 f 0000004475 65535 f 0000004476 65535 f 0000004477 65535 f 0000004478 65535 f 0000004479 65535 f 0000004480 65535 f 0000004481 65535 f 0000004482 65535 f 0000004483 65535 f 0000004484 65535 f 0000004485 65535 f 0000004486 65535 f 0000004487 65535 f 0000004488 65535 f 0000004489 65535 f 0000004490 65535 f 0000004491 65535 f 0000004492 65535 f 0000004493 65535 f 0000004494 65535 f 0000004495 65535 f 0000004496 65535 f 0000004497 65535 f 0000004498 65535 f 0000004499 65535 f 0000004500 65535 f 0000004501 65535 f 0000004502 65535 f 0000004503 65535 f 0000004504 65535 f 0000004505 65535 f 0000004506 65535 f 0000004507 65535 f 0000004508 65535 f 0000004509 65535 f 0000004510 65535 f 0000004511 65535 f 0000004512 65535 f 0000004513 65535 f 0000004514 65535 f 0000004515 65535 f 0000004516 65535 f 0000004517 65535 f 0000004518 65535 f 0000004519 65535 f 0000004520 65535 f 0000004521 65535 f 0000004522 65535 f 0000004523 65535 f 0000004524 65535 f 0000004525 65535 f 0000004526 65535 f 0000004527 65535 f 0000004528 65535 f 0000004529 65535 f 0000004530 65535 f 0000004531 65535 f 0000004532 65535 f 0000004533 65535 f 0000004534 65535 f 0000004535 65535 f 0000004536 65535 f 0000004537 65535 f 0000004538 65535 f 0000004539 65535 f 0000004540 65535 f 0000004541 65535 f 0000004542 65535 f 0000004543 65535 f 0000004544 65535 f 0000004545 65535 f 0000004546 65535 f 0000004547 65535 f 0000004548 65535 f 0000004549 65535 f 0000004550 65535 f 0000004551 65535 f 0000004552 65535 f 0000004553 65535 f 0000004554 65535 f 0000004555 65535 f 0000004556 65535 f 0000004557 65535 f 0000004558 65535 f 0000004559 65535 f 0000004560 65535 f 0000004561 65535 f 0000004562 65535 f 0000004563 65535 f 0000004564 65535 f 0000004565 65535 f 0000004566 65535 f 0000004567 65535 f 0000004568 65535 f 0000004569 65535 f 0000004570 65535 f 0000004571 65535 f 0000004572 65535 f 0000004573 65535 f 0000004574 65535 f 0000004575 65535 f 0000004576 65535 f 0000004577 65535 f 0000004578 65535 f 0000004579 65535 f 0000004580 65535 f 0000004581 65535 f 0000004582 65535 f 0000004583 65535 f 0000004584 65535 f 0000004585 65535 f 0000004586 65535 f 0000004587 65535 f 0000004588 65535 f 0000004589 65535 f 0000004590 65535 f 0000004591 65535 f 0000004592 65535 f 0000004593 65535 f 0000004594 65535 f 0000004595 65535 f 0000004596 65535 f 0000004597 65535 f 0000004598 65535 f 0000004599 65535 f 0000004600 65535 f 0000004601 65535 f 0000004602 65535 f 0000004603 65535 f 0000004604 65535 f 0000004605 65535 f 0000004606 65535 f 0000004607 65535 f 0000004608 65535 f 0000004609 65535 f 0000004610 65535 f 0000004611 65535 f 0000004612 65535 f 0000004613 65535 f 0000004614 65535 f 0000004615 65535 f 0000004616 65535 f 0000004617 65535 f 0000004618 65535 f 0000004619 65535 f 0000004620 65535 f 0000004621 65535 f 0000004622 65535 f 0000004623 65535 f 0000004624 65535 f 0000004625 65535 f 0000004626 65535 f 0000004627 65535 f 0000004628 65535 f 0000004629 65535 f 0000004630 65535 f 0000004631 65535 f 0000004632 65535 f 0000004633 65535 f 0000004634 65535 f 0000004635 65535 f 0000004636 65535 f 0000004637 65535 f 0000004638 65535 f 0000004639 65535 f 0000004640 65535 f 0000004641 65535 f 0000004642 65535 f 0000004643 65535 f 0000004644 65535 f 0000004645 65535 f 0000004646 65535 f 0000004647 65535 f 0000004648 65535 f 0000004649 65535 f 0000004650 65535 f 0000004651 65535 f 0000004652 65535 f 0000004653 65535 f 0000004654 65535 f 0000004655 65535 f 0000004656 65535 f 0000004657 65535 f 0000004658 65535 f 0000004659 65535 f 0000004660 65535 f 0000004661 65535 f 0000004662 65535 f 0000004663 65535 f 0000004664 65535 f 0000004665 65535 f 0000004666 65535 f 0000004667 65535 f 0000004668 65535 f 0000004669 65535 f 0000004670 65535 f 0000004671 65535 f 0000004672 65535 f 0000004673 65535 f 0000004674 65535 f 0000004675 65535 f 0000004676 65535 f 0000004677 65535 f 0000004678 65535 f 0000004679 65535 f 0000004680 65535 f 0000004681 65535 f 0000004682 65535 f 0000004683 65535 f 0000004684 65535 f 0000004685 65535 f 0000004686 65535 f 0000004687 65535 f 0000004688 65535 f 0000004689 65535 f 0000004690 65535 f 0000004691 65535 f 0000004692 65535 f 0000004693 65535 f 0000004694 65535 f 0000004695 65535 f 0000004696 65535 f 0000004697 65535 f 0000004698 65535 f 0000004699 65535 f 0000004700 65535 f 0000004701 65535 f 0000004702 65535 f 0000004703 65535 f 0000004704 65535 f 0000004705 65535 f 0000004706 65535 f 0000004707 65535 f 0000004708 65535 f 0000004709 65535 f 0000004710 65535 f 0000004711 65535 f 0000004712 65535 f 0000004713 65535 f 0000004714 65535 f 0000004715 65535 f 0000004716 65535 f 0000004717 65535 f 0000004718 65535 f 0000004719 65535 f 0000004720 65535 f 0000004721 65535 f 0000004722 65535 f 0000004723 65535 f 0000004724 65535 f 0000004725 65535 f 0000004726 65535 f 0000004727 65535 f 0000004728 65535 f 0000004729 65535 f 0000004730 65535 f 0000004731 65535 f 0000004732 65535 f 0000004733 65535 f 0000004734 65535 f 0000004735 65535 f 0000004736 65535 f 0000004737 65535 f 0000004738 65535 f 0000004739 65535 f 0000004740 65535 f 0000004741 65535 f 0000004742 65535 f 0000004743 65535 f 0000004744 65535 f 0000004745 65535 f 0000004746 65535 f 0000004747 65535 f 0000004748 65535 f 0000004749 65535 f 0000004750 65535 f 0000004751 65535 f 0000004752 65535 f 0000004753 65535 f 0000004754 65535 f 0000004755 65535 f 0000004756 65535 f 0000004757 65535 f 0000004758 65535 f 0000004759 65535 f 0000004760 65535 f 0000004761 65535 f 0000004762 65535 f 0000004763 65535 f 0000004764 65535 f 0000004765 65535 f 0000004766 65535 f 0000004767 65535 f 0000004768 65535 f 0000004769 65535 f 0000004770 65535 f 0000004771 65535 f 0000004772 65535 f 0000004773 65535 f 0000004774 65535 f 0000004775 65535 f 0000004776 65535 f 0000004777 65535 f 0000004778 65535 f 0000004779 65535 f 0000004780 65535 f 0000004781 65535 f 0000004782 65535 f 0000004783 65535 f 0000004784 65535 f 0000004785 65535 f 0000004786 65535 f 0000004787 65535 f 0000004788 65535 f 0000004789 65535 f 0000004790 65535 f 0000004791 65535 f 0000004792 65535 f 0000004793 65535 f 0000004794 65535 f 0000004795 65535 f 0000004796 65535 f 0000004797 65535 f 0000004798 65535 f 0000004799 65535 f 0000004800 65535 f 0000004801 65535 f 0000004802 65535 f 0000004803 65535 f 0000004804 65535 f 0000004805 65535 f 0000004806 65535 f 0000004807 65535 f 0000004808 65535 f 0000004809 65535 f 0000004810 65535 f 0000004811 65535 f 0000004812 65535 f 0000004813 65535 f 0000004814 65535 f 0000004815 65535 f 0000004816 65535 f 0000004817 65535 f 0000004818 65535 f 0000004819 65535 f 0000004820 65535 f 0000004821 65535 f 0000004822 65535 f 0000004823 65535 f 0000004824 65535 f 0000004825 65535 f 0000004826 65535 f 0000004827 65535 f 0000004828 65535 f 0000004829 65535 f 0000004830 65535 f 0000004831 65535 f 0000004832 65535 f 0000004833 65535 f 0000004834 65535 f 0000004835 65535 f 0000004836 65535 f 0000004837 65535 f 0000004838 65535 f 0000004839 65535 f 0000004840 65535 f 0000004841 65535 f 0000004842 65535 f 0000004843 65535 f 0000004844 65535 f 0000004845 65535 f 0000004846 65535 f 0000004847 65535 f 0000004848 65535 f 0000004849 65535 f 0000004850 65535 f 0000004851 65535 f 0000004852 65535 f 0000004853 65535 f 0000004854 65535 f 0000004855 65535 f 0000004856 65535 f 0000004857 65535 f 0000004858 65535 f 0000004859 65535 f 0000004860 65535 f 0000004861 65535 f 0000004862 65535 f 0000004863 65535 f 0000004864 65535 f 0000004865 65535 f 0000004866 65535 f 0000004867 65535 f 0000004868 65535 f 0000004869 65535 f 0000004870 65535 f 0000004871 65535 f 0000004872 65535 f 0000004873 65535 f 0000004874 65535 f 0000004875 65535 f 0000004876 65535 f 0000004877 65535 f 0000004878 65535 f 0000004879 65535 f 0000004880 65535 f 0000004881 65535 f 0000004882 65535 f 0000004883 65535 f 0000004884 65535 f 0000004885 65535 f 0000004886 65535 f 0000004887 65535 f 0000004888 65535 f 0000004889 65535 f 0000004890 65535 f 0000004891 65535 f 0000004892 65535 f 0000004893 65535 f 0000004894 65535 f 0000004895 65535 f 0000004896 65535 f 0000004897 65535 f 0000004898 65535 f 0000004899 65535 f 0000004900 65535 f 0000004901 65535 f 0000004902 65535 f 0000004903 65535 f 0000004904 65535 f 0000004905 65535 f 0000004906 65535 f 0000004907 65535 f 0000004908 65535 f 0000004909 65535 f 0000004910 65535 f 0000004911 65535 f 0000004912 65535 f 0000004913 65535 f 0000004914 65535 f 0000004915 65535 f 0000004916 65535 f 0000004917 65535 f 0000004918 65535 f 0000004919 65535 f 0000004920 65535 f 0000004921 65535 f 0000004922 65535 f 0000004923 65535 f 0000004924 65535 f 0000004925 65535 f 0000004926 65535 f 0000004927 65535 f 0000004928 65535 f 0000004929 65535 f 0000004930 65535 f 0000004931 65535 f 0000004932 65535 f 0000004933 65535 f 0000004934 65535 f 0000004935 65535 f 0000004936 65535 f 0000004937 65535 f 0000004938 65535 f 0000004939 65535 f 0000004940 65535 f 0000004941 65535 f 0000004942 65535 f 0000004943 65535 f 0000004944 65535 f 0000004945 65535 f 0000004946 65535 f 0000004947 65535 f 0000004948 65535 f 0000004949 65535 f 0000004950 65535 f 0000004951 65535 f 0000004952 65535 f 0000004953 65535 f 0000004954 65535 f 0000004955 65535 f 0000004956 65535 f 0000004957 65535 f 0000004958 65535 f 0000004959 65535 f 0000004960 65535 f 0000004961 65535 f 0000004962 65535 f 0000004963 65535 f 0000004964 65535 f 0000004965 65535 f 0000004966 65535 f 0000004967 65535 f 0000004968 65535 f 0000004969 65535 f 0000004970 65535 f 0000004971 65535 f 0000004972 65535 f 0000004973 65535 f 0000004974 65535 f 0000004975 65535 f 0000004976 65535 f 0000004977 65535 f 0000004978 65535 f 0000004979 65535 f 0000004980 65535 f 0000004981 65535 f 0000004982 65535 f 0000004983 65535 f 0000004984 65535 f 0000004985 65535 f 0000004986 65535 f 0000004987 65535 f 0000004988 65535 f 0000004989 65535 f 0000004990 65535 f 0000004991 65535 f 0000004992 65535 f 0000004993 65535 f 0000004994 65535 f 0000004995 65535 f 0000004996 65535 f 0000004997 65535 f 0000004998 65535 f 0000004999 65535 f 0000005000 65535 f 0000005001 65535 f 0000005002 65535 f 0000005003 65535 f 0000005004 65535 f 0000005005 65535 f 0000005006 65535 f 0000005007 65535 f 0000005008 65535 f 0000005009 65535 f 0000005010 65535 f 0000005011 65535 f 0000005012 65535 f 0000005013 65535 f 0000005014 65535 f 0000005015 65535 f 0000005016 65535 f 0000005017 65535 f 0000005018 65535 f 0000005019 65535 f 0000005020 65535 f 0000005021 65535 f 0000005022 65535 f 0000005023 65535 f 0000005024 65535 f 0000005025 65535 f 0000005026 65535 f 0000005027 65535 f 0000005028 65535 f 0000005029 65535 f 0000005030 65535 f 0000005031 65535 f 0000005032 65535 f 0000005033 65535 f 0000005034 65535 f 0000005035 65535 f 0000005036 65535 f 0000005037 65535 f 0000005038 65535 f 0000005039 65535 f 0000005040 65535 f 0000005041 65535 f 0000005042 65535 f 0000005043 65535 f 0000005044 65535 f 0000005045 65535 f 0000005046 65535 f 0000005047 65535 f 0000005048 65535 f 0000005049 65535 f 0000005050 65535 f 0000005051 65535 f 0000005052 65535 f 0000005053 65535 f 0000005054 65535 f 0000005055 65535 f 0000005056 65535 f 0000005057 65535 f 0000005058 65535 f 0000005059 65535 f 0000005060 65535 f 0000005061 65535 f 0000005062 65535 f 0000005063 65535 f 0000005064 65535 f 0000005065 65535 f 0000005066 65535 f 0000005067 65535 f 0000005068 65535 f 0000005069 65535 f 0000005070 65535 f 0000005071 65535 f 0000005072 65535 f 0000005073 65535 f 0000005074 65535 f 0000005075 65535 f 0000005076 65535 f 0000005077 65535 f 0000005078 65535 f 0000005079 65535 f 0000005080 65535 f 0000005081 65535 f 0000005082 65535 f 0000005083 65535 f 0000005084 65535 f 0000005085 65535 f 0000005086 65535 f 0000005087 65535 f 0000005088 65535 f 0000005089 65535 f 0000005090 65535 f 0000005091 65535 f 0000005092 65535 f 0000005093 65535 f 0000005094 65535 f 0000005095 65535 f 0000005096 65535 f 0000005097 65535 f 0000005098 65535 f 0000005099 65535 f 0000005100 65535 f 0000005101 65535 f 0000005102 65535 f 0000005103 65535 f 0000005104 65535 f 0000005105 65535 f 0000005106 65535 f 0000005107 65535 f 0000005108 65535 f 0000005109 65535 f 0000005110 65535 f 0000005111 65535 f 0000005112 65535 f 0000005113 65535 f 0000005114 65535 f 0000005115 65535 f 0000005116 65535 f 0000005117 65535 f 0000005118 65535 f 0000005119 65535 f 0000005120 65535 f 0000005121 65535 f 0000005122 65535 f 0000005123 65535 f 0000005124 65535 f 0000005125 65535 f 0000005126 65535 f 0000005127 65535 f 0000005128 65535 f 0000005129 65535 f 0000005130 65535 f 0000005131 65535 f 0000005132 65535 f 0000005133 65535 f 0000005134 65535 f 0000005135 65535 f 0000005136 65535 f 0000005137 65535 f 0000005138 65535 f 0000005139 65535 f 0000005140 65535 f 0000005141 65535 f 0000005142 65535 f 0000005143 65535 f 0000005144 65535 f 0000005145 65535 f 0000005146 65535 f 0000005147 65535 f 0000005148 65535 f 0000005149 65535 f 0000005150 65535 f 0000005151 65535 f 0000005152 65535 f 0000005153 65535 f 0000005154 65535 f 0000005155 65535 f 0000005156 65535 f 0000005157 65535 f 0000005158 65535 f 0000005159 65535 f 0000005160 65535 f 0000005161 65535 f 0000005162 65535 f 0000005163 65535 f 0000005164 65535 f 0000005165 65535 f 0000005166 65535 f 0000005167 65535 f 0000005168 65535 f 0000005169 65535 f 0000005170 65535 f 0000005171 65535 f 0000005172 65535 f 0000005173 65535 f 0000005174 65535 f 0000005175 65535 f 0000005176 65535 f 0000005177 65535 f 0000005178 65535 f 0000005179 65535 f 0000005180 65535 f 0000005181 65535 f 0000005182 65535 f 0000005183 65535 f 0000005184 65535 f 0000005185 65535 f 0000005186 65535 f 0000005187 65535 f 0000005188 65535 f 0000005189 65535 f 0000005190 65535 f 0000005191 65535 f 0000005192 65535 f 0000005193 65535 f 0000005194 65535 f 0000005195 65535 f 0000005196 65535 f 0000005197 65535 f 0000005198 65535 f 0000005199 65535 f 0000005200 65535 f 0000005201 65535 f 0000005202 65535 f 0000005203 65535 f 0000005204 65535 f 0000005205 65535 f 0000005206 65535 f 0000005207 65535 f 0000005208 65535 f 0000005209 65535 f 0000005210 65535 f 0000005211 65535 f 0000005212 65535 f 0000005213 65535 f 0000005214 65535 f 0000005215 65535 f 0000005216 65535 f 0000005217 65535 f 0000005218 65535 f 0000005219 65535 f 0000005220 65535 f 0000005221 65535 f 0000005222 65535 f 0000005223 65535 f 0000005224 65535 f 0000005225 65535 f 0000005226 65535 f 0000005227 65535 f 0000005228 65535 f 0000005229 65535 f 0000005230 65535 f 0000005231 65535 f 0000005232 65535 f 0000005233 65535 f 0000005234 65535 f 0000005235 65535 f 0000005236 65535 f 0000005237 65535 f 0000005238 65535 f 0000005239 65535 f 0000005240 65535 f 0000005241 65535 f 0000005242 65535 f 0000005243 65535 f 0000005244 65535 f 0000005245 65535 f 0000005246 65535 f 0000005247 65535 f 0000005248 65535 f 0000005249 65535 f 0000005250 65535 f 0000005251 65535 f 0000005252 65535 f 0000005253 65535 f 0000005254 65535 f 0000005255 65535 f 0000005256 65535 f 0000005257 65535 f 0000005258 65535 f 0000005259 65535 f 0000005260 65535 f 0000005261 65535 f 0000005262 65535 f 0000005263 65535 f 0000005264 65535 f 0000005265 65535 f 0000005266 65535 f 0000005267 65535 f 0000005268 65535 f 0000005269 65535 f 0000005270 65535 f 0000005271 65535 f 0000005272 65535 f 0000005273 65535 f 0000005274 65535 f 0000005275 65535 f 0000005276 65535 f 0000005277 65535 f 0000005278 65535 f 0000005279 65535 f 0000005280 65535 f 0000005281 65535 f 0000005282 65535 f 0000005283 65535 f 0000005284 65535 f 0000005285 65535 f 0000005286 65535 f 0000005287 65535 f 0000005288 65535 f 0000005289 65535 f 0000005290 65535 f 0000005291 65535 f 0000005292 65535 f 0000005293 65535 f 0000005294 65535 f 0000005295 65535 f 0000005296 65535 f 0000005297 65535 f 0000005298 65535 f 0000005299 65535 f 0000005300 65535 f 0000005301 65535 f 0000005302 65535 f 0000005303 65535 f 0000005304 65535 f 0000005305 65535 f 0000005306 65535 f 0000005307 65535 f 0000005308 65535 f 0000005309 65535 f 0000005310 65535 f 0000005311 65535 f 0000005312 65535 f 0000005313 65535 f 0000005314 65535 f 0000005315 65535 f 0000005316 65535 f 0000005317 65535 f 0000005318 65535 f 0000005319 65535 f 0000005320 65535 f 0000005321 65535 f 0000005322 65535 f 0000005323 65535 f 0000005324 65535 f 0000005325 65535 f 0000005326 65535 f 0000005327 65535 f 0000005328 65535 f 0000005329 65535 f 0000005330 65535 f 0000005331 65535 f 0000005332 65535 f 0000005333 65535 f 0000005334 65535 f 0000005335 65535 f 0000005336 65535 f 0000005337 65535 f 0000005338 65535 f 0000005339 65535 f 0000005340 65535 f 0000005341 65535 f 0000005342 65535 f 0000005343 65535 f 0000005344 65535 f 0000005345 65535 f 0000005346 65535 f 0000005347 65535 f 0000005348 65535 f 0000005349 65535 f 0000005350 65535 f 0000005351 65535 f 0000005352 65535 f 0000005353 65535 f 0000005354 65535 f 0000005355 65535 f 0000005356 65535 f 0000005357 65535 f 0000005358 65535 f 0000005359 65535 f 0000005360 65535 f 0000005361 65535 f 0000005362 65535 f 0000005363 65535 f 0000005364 65535 f 0000005365 65535 f 0000005366 65535 f 0000005367 65535 f 0000005368 65535 f 0000005369 65535 f 0000005370 65535 f 0000005371 65535 f 0000005372 65535 f 0000005373 65535 f 0000005374 65535 f 0000005375 65535 f 0000005376 65535 f 0000005377 65535 f 0000005378 65535 f 0000005379 65535 f 0000005380 65535 f 0000005381 65535 f 0000005382 65535 f 0000005383 65535 f 0000005384 65535 f 0000005385 65535 f 0000005386 65535 f 0000005387 65535 f 0000005388 65535 f 0000005389 65535 f 0000005390 65535 f 0000005391 65535 f 0000005392 65535 f 0000005393 65535 f 0000005394 65535 f 0000005395 65535 f 0000005396 65535 f 0000005397 65535 f 0000005398 65535 f 0000005399 65535 f 0000005400 65535 f 0000005401 65535 f 0000005402 65535 f 0000005403 65535 f 0000005404 65535 f 0000005405 65535 f 0000005406 65535 f 0000005407 65535 f 0000005408 65535 f 0000005409 65535 f 0000005410 65535 f 0000005411 65535 f 0000005412 65535 f 0000005413 65535 f 0000005414 65535 f 0000005415 65535 f 0000005416 65535 f 0000005417 65535 f 0000005418 65535 f 0000005419 65535 f 0000005420 65535 f 0000005421 65535 f 0000005422 65535 f 0000005423 65535 f 0000005424 65535 f 0000005425 65535 f 0000005426 65535 f 0000005427 65535 f 0000005428 65535 f 0000005429 65535 f 0000005430 65535 f 0000005431 65535 f 0000005432 65535 f 0000005433 65535 f 0000005434 65535 f 0000005435 65535 f 0000005436 65535 f 0000005437 65535 f 0000005438 65535 f 0000005439 65535 f 0000005440 65535 f 0000005441 65535 f 0000005442 65535 f 0000005443 65535 f 0000005444 65535 f 0000005445 65535 f 0000005446 65535 f 0000005447 65535 f 0000005448 65535 f 0000005449 65535 f 0000005450 65535 f 0000005451 65535 f 0000005452 65535 f 0000005453 65535 f 0000005454 65535 f 0000005455 65535 f 0000005456 65535 f 0000005457 65535 f 0000005458 65535 f 0000005459 65535 f 0000005460 65535 f 0000005461 65535 f 0000005462 65535 f 0000005463 65535 f 0000005464 65535 f 0000005465 65535 f 0000005466 65535 f 0000005467 65535 f 0000005468 65535 f 0000005469 65535 f 0000005470 65535 f 0000005471 65535 f 0000005472 65535 f 0000005473 65535 f 0000005474 65535 f 0000005475 65535 f 0000005476 65535 f 0000005477 65535 f 0000005478 65535 f 0000005479 65535 f 0000005480 65535 f 0000005481 65535 f 0000005482 65535 f 0000005483 65535 f 0000005484 65535 f 0000005485 65535 f 0000005486 65535 f 0000005487 65535 f 0000005488 65535 f 0000005489 65535 f 0000005490 65535 f 0000005491 65535 f 0000005492 65535 f 0000005493 65535 f 0000005494 65535 f 0000005495 65535 f 0000005496 65535 f 0000005497 65535 f 0000005498 65535 f 0000005499 65535 f 0000005500 65535 f 0000005501 65535 f 0000005502 65535 f 0000005503 65535 f 0000005504 65535 f 0000005505 65535 f 0000005506 65535 f 0000005507 65535 f 0000005508 65535 f 0000005509 65535 f 0000005510 65535 f 0000005511 65535 f 0000005512 65535 f 0000005513 65535 f 0000005514 65535 f 0000005515 65535 f 0000005516 65535 f 0000005517 65535 f 0000005518 65535 f 0000005519 65535 f 0000005520 65535 f 0000005521 65535 f 0000005522 65535 f 0000005523 65535 f 0000005524 65535 f 0000005525 65535 f 0000005526 65535 f 0000005527 65535 f 0000005528 65535 f 0000005529 65535 f 0000005530 65535 f 0000005531 65535 f 0000005532 65535 f 0000005533 65535 f 0000005534 65535 f 0000005535 65535 f 0000005536 65535 f 0000005537 65535 f 0000005538 65535 f 0000005539 65535 f 0000005540 65535 f 0000005541 65535 f 0000005542 65535 f 0000005543 65535 f 0000005544 65535 f 0000005545 65535 f 0000005546 65535 f 0000005547 65535 f 0000005548 65535 f 0000005549 65535 f 0000005550 65535 f 0000005551 65535 f 0000005552 65535 f 0000005553 65535 f 0000005554 65535 f 0000005555 65535 f 0000005556 65535 f 0000005557 65535 f 0000005558 65535 f 0000005559 65535 f 0000005560 65535 f 0000005561 65535 f 0000005562 65535 f 0000005563 65535 f 0000005564 65535 f 0000005565 65535 f 0000005566 65535 f 0000005567 65535 f 0000005568 65535 f 0000005569 65535 f 0000005570 65535 f 0000005571 65535 f 0000005572 65535 f 0000005573 65535 f 0000005574 65535 f 0000005575 65535 f 0000005576 65535 f 0000005577 65535 f 0000005578 65535 f 0000005579 65535 f 0000005580 65535 f 0000005581 65535 f 0000005582 65535 f 0000005583 65535 f 0000005584 65535 f 0000005585 65535 f 0000005586 65535 f 0000005587 65535 f 0000005588 65535 f 0000005589 65535 f 0000005590 65535 f 0000005591 65535 f 0000005592 65535 f 0000005593 65535 f 0000005594 65535 f 0000005595 65535 f 0000005596 65535 f 0000005597 65535 f 0000005598 65535 f 0000005599 65535 f 0000005600 65535 f 0000005601 65535 f 0000005602 65535 f 0000005603 65535 f 0000005604 65535 f 0000005605 65535 f 0000005606 65535 f 0000005607 65535 f 0000005608 65535 f 0000005609 65535 f 0000005610 65535 f 0000005611 65535 f 0000005612 65535 f 0000005613 65535 f 0000005614 65535 f 0000005615 65535 f 0000005616 65535 f 0000005617 65535 f 0000005618 65535 f 0000005619 65535 f 0000005620 65535 f 0000005621 65535 f 0000005622 65535 f 0000005623 65535 f 0000005624 65535 f 0000005625 65535 f 0000005626 65535 f 0000005627 65535 f 0000005628 65535 f 0000005629 65535 f 0000005630 65535 f 0000005631 65535 f 0000005632 65535 f 0000005633 65535 f 0000005634 65535 f 0000005635 65535 f 0000005636 65535 f 0000005637 65535 f 0000005638 65535 f 0000005639 65535 f 0000005640 65535 f 0000005641 65535 f 0000005642 65535 f 0000005643 65535 f 0000005644 65535 f 0000005645 65535 f 0000005646 65535 f 0000005647 65535 f 0000005648 65535 f 0000005649 65535 f 0000005650 65535 f 0000005651 65535 f 0000005652 65535 f 0000005653 65535 f 0000005654 65535 f 0000005655 65535 f 0000005656 65535 f 0000005657 65535 f 0000005658 65535 f 0000005659 65535 f 0000005660 65535 f 0000005661 65535 f 0000005662 65535 f 0000005663 65535 f 0000005664 65535 f 0000005665 65535 f 0000005666 65535 f 0000005667 65535 f 0000005668 65535 f 0000005669 65535 f 0000005670 65535 f 0000005671 65535 f 0000005672 65535 f 0000005673 65535 f 0000005674 65535 f 0000005675 65535 f 0000005676 65535 f 0000005677 65535 f 0000005678 65535 f 0000005679 65535 f 0000005680 65535 f 0000005681 65535 f 0000005682 65535 f 0000005683 65535 f 0000005684 65535 f 0000005685 65535 f 0000005686 65535 f 0000005687 65535 f 0000005688 65535 f 0000005689 65535 f 0000005690 65535 f 0000005691 65535 f 0000005692 65535 f 0000005693 65535 f 0000005694 65535 f 0000005695 65535 f 0000005696 65535 f 0000005697 65535 f 0000005698 65535 f 0000005699 65535 f 0000005700 65535 f 0000005701 65535 f 0000005702 65535 f 0000005703 65535 f 0000005704 65535 f 0000005705 65535 f 0000005706 65535 f 0000005707 65535 f 0000005708 65535 f 0000005709 65535 f 0000005710 65535 f 0000005711 65535 f 0000005712 65535 f 0000005713 65535 f 0000005714 65535 f 0000005715 65535 f 0000005716 65535 f 0000005717 65535 f 0000005718 65535 f 0000005719 65535 f 0000005720 65535 f 0000005721 65535 f 0000005722 65535 f 0000005723 65535 f 0000005724 65535 f 0000005725 65535 f 0000005726 65535 f 0000005727 65535 f 0000005728 65535 f 0000005729 65535 f 0000005730 65535 f 0000005731 65535 f 0000005732 65535 f 0000005733 65535 f 0000005734 65535 f 0000005735 65535 f 0000005736 65535 f 0000005737 65535 f 0000005738 65535 f 0000005739 65535 f 0000005740 65535 f 0000005741 65535 f 0000005742 65535 f 0000005743 65535 f 0000005744 65535 f 0000005745 65535 f 0000005746 65535 f 0000005747 65535 f 0000005748 65535 f 0000005749 65535 f 0000005750 65535 f 0000005751 65535 f 0000005752 65535 f 0000005753 65535 f 0000005754 65535 f 0000005755 65535 f 0000005756 65535 f 0000005757 65535 f 0000005758 65535 f 0000005759 65535 f 0000005760 65535 f 0000005761 65535 f 0000005762 65535 f 0000005763 65535 f 0000005764 65535 f 0000005765 65535 f 0000005766 65535 f 0000005767 65535 f 0000005768 65535 f 0000005769 65535 f 0000005770 65535 f 0000005771 65535 f 0000005772 65535 f 0000005773 65535 f 0000005774 65535 f 0000005775 65535 f 0000005776 65535 f 0000005777 65535 f 0000005778 65535 f 0000005779 65535 f 0000005780 65535 f 0000005781 65535 f 0000005782 65535 f 0000005783 65535 f 0000005784 65535 f 0000005785 65535 f 0000005786 65535 f 0000005787 65535 f 0000005788 65535 f 0000005789 65535 f 0000005790 65535 f 0000005791 65535 f 0000005792 65535 f 0000005793 65535 f 0000005794 65535 f 0000005795 65535 f 0000005796 65535 f 0000005797 65535 f 0000005798 65535 f 0000005799 65535 f 0000005800 65535 f 0000005801 65535 f 0000005802 65535 f 0000005803 65535 f 0000005804 65535 f 0000005805 65535 f 0000005806 65535 f 0000005807 65535 f 0000005808 65535 f 0000005809 65535 f 0000005810 65535 f 0000005811 65535 f 0000005812 65535 f 0000005813 65535 f 0000005814 65535 f 0000005815 65535 f 0000005816 65535 f 0000005817 65535 f 0000005818 65535 f 0000005819 65535 f 0000005820 65535 f 0000005821 65535 f 0000005822 65535 f 0000005823 65535 f 0000005824 65535 f 0000005825 65535 f 0000005826 65535 f 0000005827 65535 f 0000005828 65535 f 0000005829 65535 f 0000005830 65535 f 0000005831 65535 f 0000005832 65535 f 0000005833 65535 f 0000005834 65535 f 0000005835 65535 f 0000005836 65535 f 0000005837 65535 f 0000005838 65535 f 0000005839 65535 f 0000005840 65535 f 0000005841 65535 f 0000005842 65535 f 0000005843 65535 f 0000005844 65535 f 0000005845 65535 f 0000005846 65535 f 0000005847 65535 f 0000005848 65535 f 0000005849 65535 f 0000005850 65535 f 0000005851 65535 f 0000005852 65535 f 0000005853 65535 f 0000005854 65535 f 0000005855 65535 f 0000005856 65535 f 0000005857 65535 f 0000005858 65535 f 0000005859 65535 f 0000005860 65535 f 0000005861 65535 f 0000005862 65535 f 0000005863 65535 f 0000005864 65535 f 0000005865 65535 f 0000005866 65535 f 0000005867 65535 f 0000005868 65535 f 0000005869 65535 f 0000005870 65535 f 0000005871 65535 f 0000005872 65535 f 0000005873 65535 f 0000005874 65535 f 0000005875 65535 f 0000005876 65535 f 0000005877 65535 f 0000005878 65535 f 0000005879 65535 f 0000005880 65535 f 0000005881 65535 f 0000005882 65535 f 0000005883 65535 f 0000005884 65535 f 0000005885 65535 f 0000005886 65535 f 0000005887 65535 f 0000005888 65535 f 0000005889 65535 f 0000005890 65535 f 0000005891 65535 f 0000005892 65535 f 0000005893 65535 f 0000005894 65535 f 0000005895 65535 f 0000005896 65535 f 0000005897 65535 f 0000005898 65535 f 0000005899 65535 f 0000005900 65535 f 0000005901 65535 f 0000005902 65535 f 0000005903 65535 f 0000005904 65535 f 0000005905 65535 f 0000005906 65535 f 0000005907 65535 f 0000005908 65535 f 0000005909 65535 f 0000005910 65535 f 0000005911 65535 f 0000005912 65535 f 0000005913 65535 f 0000005914 65535 f 0000005915 65535 f 0000005916 65535 f 0000005917 65535 f 0000005918 65535 f 0000005919 65535 f 0000005920 65535 f 0000005921 65535 f 0000005922 65535 f 0000005923 65535 f 0000005924 65535 f 0000005925 65535 f 0000005926 65535 f 0000005927 65535 f 0000005928 65535 f 0000005929 65535 f 0000005930 65535 f 0000005931 65535 f 0000005932 65535 f 0000005933 65535 f 0000005934 65535 f 0000005935 65535 f 0000005936 65535 f 0000005937 65535 f 0000005938 65535 f 0000005939 65535 f 0000005940 65535 f 0000005941 65535 f 0000005942 65535 f 0000005943 65535 f 0000005944 65535 f 0000005945 65535 f 0000005946 65535 f 0000005947 65535 f 0000005948 65535 f 0000005949 65535 f 0000005950 65535 f 0000005951 65535 f 0000005952 65535 f 0000005953 65535 f 0000005954 65535 f 0000005955 65535 f 0000005956 65535 f 0000005957 65535 f 0000005958 65535 f 0000005959 65535 f 0000005960 65535 f 0000005961 65535 f 0000005962 65535 f 0000005963 65535 f 0000005964 65535 f 0000005965 65535 f 0000005966 65535 f 0000005967 65535 f 0000005968 65535 f 0000005969 65535 f 0000005970 65535 f 0000005971 65535 f 0000005972 65535 f 0000005973 65535 f 0000005974 65535 f 0000005975 65535 f 0000005976 65535 f 0000005977 65535 f 0000005978 65535 f 0000005979 65535 f 0000005980 65535 f 0000005981 65535 f 0000005982 65535 f 0000005983 65535 f 0000005984 65535 f 0000005985 65535 f 0000005986 65535 f 0000005987 65535 f 0000005988 65535 f 0000005989 65535 f 0000005990 65535 f 0000005991 65535 f 0000005992 65535 f 0000005993 65535 f 0000005994 65535 f 0000005995 65535 f 0000005996 65535 f 0000005997 65535 f 0000005998 65535 f 0000005999 65535 f 0000006000 65535 f 0000006001 65535 f 0000006002 65535 f 0000006003 65535 f 0000006004 65535 f 0000006005 65535 f 0000006006 65535 f 0000006007 65535 f 0000006008 65535 f 0000006009 65535 f 0000006010 65535 f 0000006011 65535 f 0000006012 65535 f 0000006013 65535 f 0000006014 65535 f 0000006015 65535 f 0000006016 65535 f 0000006017 65535 f 0000006018 65535 f 0000006019 65535 f 0000006020 65535 f 0000006021 65535 f 0000006022 65535 f 0000006023 65535 f 0000006024 65535 f 0000006025 65535 f 0000006026 65535 f 0000006027 65535 f 0000006028 65535 f 0000006029 65535 f 0000006030 65535 f 0000006031 65535 f 0000006032 65535 f 0000006033 65535 f 0000006034 65535 f 0000006035 65535 f 0000006036 65535 f 0000006037 65535 f 0000006038 65535 f 0000006039 65535 f 0000006040 65535 f 0000006041 65535 f 0000006042 65535 f 0000006043 65535 f 0000006044 65535 f 0000006045 65535 f 0000006046 65535 f 0000006047 65535 f 0000006048 65535 f 0000006049 65535 f 0000006050 65535 f 0000006051 65535 f 0000006052 65535 f 0000006053 65535 f 0000006054 65535 f 0000006055 65535 f 0000006056 65535 f 0000006057 65535 f 0000006058 65535 f 0000006059 65535 f 0000006060 65535 f 0000006061 65535 f 0000006062 65535 f 0000006063 65535 f 0000006064 65535 f 0000006065 65535 f 0000006066 65535 f 0000006067 65535 f 0000006068 65535 f 0000006069 65535 f 0000006070 65535 f 0000006071 65535 f 0000006072 65535 f 0000006073 65535 f 0000006074 65535 f 0000006075 65535 f 0000006076 65535 f 0000006077 65535 f 0000006078 65535 f 0000006079 65535 f 0000006080 65535 f 0000006081 65535 f 0000006082 65535 f 0000006083 65535 f 0000006084 65535 f 0000006085 65535 f 0000006086 65535 f 0000006087 65535 f 0000006088 65535 f 0000006089 65535 f 0000006090 65535 f 0000006091 65535 f 0000006092 65535 f 0000006093 65535 f 0000006094 65535 f 0000006095 65535 f 0000006096 65535 f 0000006097 65535 f 0000006098 65535 f 0000006099 65535 f 0000006100 65535 f 0000006101 65535 f 0000006102 65535 f 0000006103 65535 f 0000006104 65535 f 0000006105 65535 f 0000006106 65535 f 0000006107 65535 f 0000006108 65535 f 0000006109 65535 f 0000006110 65535 f 0000006111 65535 f 0000006112 65535 f 0000006113 65535 f 0000006114 65535 f 0000006115 65535 f 0000006116 65535 f 0000006117 65535 f 0000006118 65535 f 0000006119 65535 f 0000006120 65535 f 0000006121 65535 f 0000006122 65535 f 0000006123 65535 f 0000006124 65535 f 0000006125 65535 f 0000006126 65535 f 0000006127 65535 f 0000006128 65535 f 0000006129 65535 f 0000006130 65535 f 0000006131 65535 f 0000006132 65535 f 0000006133 65535 f 0000006134 65535 f 0000006135 65535 f 0000006136 65535 f 0000006137 65535 f 0000006138 65535 f 0000006139 65535 f 0000006140 65535 f 0000006141 65535 f 0000006142 65535 f 0000006143 65535 f 0000006144 65535 f 0000006145 65535 f 0000006146 65535 f 0000006147 65535 f 0000006148 65535 f 0000006149 65535 f 0000006150 65535 f 0000006151 65535 f 0000006152 65535 f 0000006153 65535 f 0000006154 65535 f 0000006155 65535 f 0000006156 65535 f 0000006157 65535 f 0000006158 65535 f 0000006159 65535 f 0000006160 65535 f 0000006161 65535 f 0000006162 65535 f 0000006163 65535 f 0000006164 65535 f 0000006165 65535 f 0000006166 65535 f 0000006167 65535 f 0000006168 65535 f 0000006169 65535 f 0000006170 65535 f 0000006171 65535 f 0000006172 65535 f 0000006173 65535 f 0000006174 65535 f 0000006175 65535 f 0000006176 65535 f 0000006177 65535 f 0000006178 65535 f 0000006179 65535 f 0000006180 65535 f 0000006181 65535 f 0000006182 65535 f 0000006183 65535 f 0000006184 65535 f 0000006185 65535 f 0000006186 65535 f 0000006187 65535 f 0000006188 65535 f 0000006189 65535 f 0000006190 65535 f 0000006191 65535 f 0000006192 65535 f 0000006193 65535 f 0000006194 65535 f 0000006195 65535 f 0000006196 65535 f 0000006197 65535 f 0000006198 65535 f 0000006199 65535 f 0000006200 65535 f 0000006201 65535 f 0000006202 65535 f 0000006203 65535 f 0000006204 65535 f 0000006205 65535 f 0000006206 65535 f 0000006207 65535 f 0000006208 65535 f 0000006209 65535 f 0000006210 65535 f 0000006211 65535 f 0000006212 65535 f 0000006213 65535 f 0000006214 65535 f 0000006215 65535 f 0000006216 65535 f 0000006217 65535 f 0000006218 65535 f 0000006219 65535 f 0000006220 65535 f 0000006221 65535 f 0000006222 65535 f 0000006223 65535 f 0000006224 65535 f 0000006225 65535 f 0000006226 65535 f 0000006227 65535 f 0000006228 65535 f 0000006229 65535 f 0000006230 65535 f 0000006231 65535 f 0000006232 65535 f 0000006233 65535 f 0000006234 65535 f 0000006235 65535 f 0000006236 65535 f 0000006237 65535 f 0000006238 65535 f 0000006239 65535 f 0000006240 65535 f 0000006241 65535 f 0000006242 65535 f 0000006243 65535 f 0000006244 65535 f 0000006245 65535 f 0000006246 65535 f 0000006247 65535 f 0000006248 65535 f 0000006249 65535 f 0000006250 65535 f 0000006251 65535 f 0000006252 65535 f 0000006253 65535 f 0000006254 65535 f 0000006255 65535 f 0000006256 65535 f 0000006257 65535 f 0000006258 65535 f 0000006259 65535 f 0000006260 65535 f 0000006261 65535 f 0000006262 65535 f 0000006263 65535 f 0000006264 65535 f 0000006265 65535 f 0000006266 65535 f 0000006267 65535 f 0000006268 65535 f 0000006269 65535 f 0000006270 65535 f 0000006271 65535 f 0000006272 65535 f 0000006273 65535 f 0000006274 65535 f 0000006275 65535 f 0000006276 65535 f 0000006277 65535 f 0000006278 65535 f 0000006279 65535 f 0000006280 65535 f 0000006281 65535 f 0000006282 65535 f 0000006283 65535 f 0000006284 65535 f 0000006285 65535 f 0000006286 65535 f 0000006287 65535 f 0000006288 65535 f 0000006289 65535 f 0000006290 65535 f 0000006291 65535 f 0000006292 65535 f 0000006293 65535 f 0000006294 65535 f 0000006295 65535 f 0000006296 65535 f 0000006297 65535 f 0000006298 65535 f 0000006299 65535 f 0000006300 65535 f 0000006301 65535 f 0000006302 65535 f 0000006303 65535 f 0000006304 65535 f 0000006305 65535 f 0000006306 65535 f 0000006307 65535 f 0000006308 65535 f 0000006309 65535 f 0000006310 65535 f 0000006311 65535 f 0000006312 65535 f 0000006313 65535 f 0000006314 65535 f 0000006315 65535 f 0000006316 65535 f 0000006317 65535 f 0000006318 65535 f 0000006319 65535 f 0000006320 65535 f 0000006321 65535 f 0000006322 65535 f 0000006323 65535 f 0000006324 65535 f 0000006325 65535 f 0000006326 65535 f 0000006327 65535 f 0000006328 65535 f 0000006329 65535 f 0000006330 65535 f 0000006331 65535 f 0000006332 65535 f 0000006333 65535 f 0000006334 65535 f 0000006335 65535 f 0000006336 65535 f 0000006337 65535 f 0000006338 65535 f 0000006339 65535 f 0000006340 65535 f 0000006341 65535 f 0000006342 65535 f 0000006343 65535 f 0000006344 65535 f 0000006345 65535 f 0000006346 65535 f 0000006347 65535 f 0000006348 65535 f 0000006349 65535 f 0000006350 65535 f 0000006351 65535 f 0000006352 65535 f 0000006353 65535 f 0000006354 65535 f 0000006355 65535 f 0000006356 65535 f 0000006357 65535 f 0000006358 65535 f 0000006359 65535 f 0000006360 65535 f 0000006361 65535 f 0000006362 65535 f 0000006363 65535 f 0000006364 65535 f 0000006365 65535 f 0000006366 65535 f 0000006367 65535 f 0000006368 65535 f 0000006369 65535 f 0000006370 65535 f 0000006371 65535 f 0000006372 65535 f 0000006373 65535 f 0000006374 65535 f 0000006375 65535 f 0000006376 65535 f 0000006377 65535 f 0000006378 65535 f 0000006379 65535 f 0000006380 65535 f 0000006381 65535 f 0000006382 65535 f 0000006383 65535 f 0000006384 65535 f 0000006385 65535 f 0000006386 65535 f 0000006387 65535 f 0000006388 65535 f 0000006389 65535 f 0000006390 65535 f 0000006391 65535 f 0000006392 65535 f 0000006393 65535 f 0000006394 65535 f 0000006395 65535 f 0000006396 65535 f 0000006397 65535 f 0000006398 65535 f 0000006399 65535 f 0000006400 65535 f 0000006401 65535 f 0000006402 65535 f 0000006403 65535 f 0000006404 65535 f 0000006405 65535 f 0000006406 65535 f 0000006407 65535 f 0000006408 65535 f 0000006409 65535 f 0000006410 65535 f 0000006411 65535 f 0000006412 65535 f 0000006413 65535 f 0000006414 65535 f 0000006415 65535 f 0000006416 65535 f 0000006417 65535 f 0000006418 65535 f 0000006419 65535 f 0000006420 65535 f 0000006421 65535 f 0000006422 65535 f 0000006423 65535 f 0000006424 65535 f 0000006425 65535 f 0000006426 65535 f 0000006427 65535 f 0000006428 65535 f 0000006429 65535 f 0000006430 65535 f 0000006431 65535 f 0000006432 65535 f 0000006433 65535 f 0000006434 65535 f 0000006435 65535 f 0000006436 65535 f 0000006437 65535 f 0000006438 65535 f 0000006439 65535 f 0000006440 65535 f 0000006441 65535 f 0000006442 65535 f 0000006443 65535 f 0000006444 65535 f 0000006445 65535 f 0000006446 65535 f 0000006447 65535 f 0000006448 65535 f 0000006449 65535 f 0000006450 65535 f 0000006451 65535 f 0000006452 65535 f 0000006453 65535 f 0000006454 65535 f 0000006455 65535 f 0000006456 65535 f 0000006457 65535 f 0000006458 65535 f 0000006459 65535 f 0000006460 65535 f 0000006461 65535 f 0000006462 65535 f 0000006463 65535 f 0000006464 65535 f 0000006465 65535 f 0000006466 65535 f 0000006467 65535 f 0000006468 65535 f 0000006469 65535 f 0000006470 65535 f 0000006471 65535 f 0000006472 65535 f 0000006473 65535 f 0000006474 65535 f 0000006475 65535 f 0000006476 65535 f 0000006477 65535 f 0000006478 65535 f 0000006479 65535 f 0000006480 65535 f 0000006481 65535 f 0000006482 65535 f 0000006483 65535 f 0000006484 65535 f 0000006485 65535 f 0000006486 65535 f 0000006487 65535 f 0000006488 65535 f 0000006489 65535 f 0000006490 65535 f 0000006491 65535 f 0000006492 65535 f 0000006493 65535 f 0000006494 65535 f 0000006495 65535 f 0000006496 65535 f 0000006497 65535 f 0000006498 65535 f 0000006499 65535 f 0000006500 65535 f 0000006501 65535 f 0000006502 65535 f 0000006503 65535 f 0000006504 65535 f 0000006505 65535 f 0000006506 65535 f 0000006507 65535 f 0000006508 65535 f 0000006509 65535 f 0000006510 65535 f 0000006511 65535 f 0000006512 65535 f 0000006513 65535 f 0000006514 65535 f 0000006515 65535 f 0000006516 65535 f 0000006517 65535 f 0000006518 65535 f 0000006519 65535 f 0000006520 65535 f 0000006521 65535 f 0000006522 65535 f 0000006523 65535 f 0000006524 65535 f 0000006525 65535 f 0000006526 65535 f 0000006527 65535 f 0000006528 65535 f 0000006529 65535 f 0000006530 65535 f 0000006531 65535 f 0000006532 65535 f 0000006533 65535 f 0000006534 65535 f 0000006535 65535 f 0000006536 65535 f 0000006537 65535 f 0000006538 65535 f 0000006539 65535 f 0000006540 65535 f 0000006541 65535 f 0000006542 65535 f 0000006543 65535 f 0000006544 65535 f 0000006545 65535 f 0000006546 65535 f 0000006547 65535 f 0000006548 65535 f 0000006549 65535 f 0000006550 65535 f 0000006551 65535 f 0000006552 65535 f 0000006553 65535 f 0000006554 65535 f 0000006555 65535 f 0000006556 65535 f 0000006557 65535 f 0000006558 65535 f 0000006559 65535 f 0000006560 65535 f 0000006561 65535 f 0000006562 65535 f 0000006563 65535 f 0000006564 65535 f 0000006565 65535 f 0000006566 65535 f 0000006567 65535 f 0000006568 65535 f 0000006569 65535 f 0000006570 65535 f 0000006571 65535 f 0000006572 65535 f 0000006573 65535 f 0000006574 65535 f 0000006575 65535 f 0000006576 65535 f 0000006577 65535 f 0000006578 65535 f 0000006579 65535 f 0000006580 65535 f 0000006581 65535 f 0000006582 65535 f 0000006583 65535 f 0000006584 65535 f 0000006585 65535 f 0000006586 65535 f 0000006587 65535 f 0000006588 65535 f 0000006589 65535 f 0000006590 65535 f 0000006591 65535 f 0000006592 65535 f 0000006593 65535 f 0000006594 65535 f 0000006595 65535 f 0000006596 65535 f 0000006597 65535 f 0000006598 65535 f 0000006599 65535 f 0000006600 65535 f 0000006601 65535 f 0000006602 65535 f 0000006603 65535 f 0000006604 65535 f 0000006605 65535 f 0000006606 65535 f 0000006607 65535 f 0000006608 65535 f 0000006609 65535 f 0000006610 65535 f 0000006611 65535 f 0000006612 65535 f 0000006613 65535 f 0000006614 65535 f 0000006615 65535 f 0000006616 65535 f 0000006617 65535 f 0000006618 65535 f 0000006619 65535 f 0000006620 65535 f 0000006621 65535 f 0000006622 65535 f 0000006623 65535 f 0000006624 65535 f 0000006625 65535 f 0000006626 65535 f 0000006627 65535 f 0000006628 65535 f 0000006629 65535 f 0000006630 65535 f 0000006631 65535 f 0000006632 65535 f 0000006633 65535 f 0000006634 65535 f 0000006635 65535 f 0000006636 65535 f 0000006637 65535 f 0000006638 65535 f 0000006639 65535 f 0000006640 65535 f 0000006641 65535 f 0000006642 65535 f 0000006643 65535 f 0000006644 65535 f 0000006645 65535 f 0000006646 65535 f 0000006647 65535 f 0000006648 65535 f 0000006649 65535 f 0000006650 65535 f 0000006651 65535 f 0000006652 65535 f 0000006653 65535 f 0000006654 65535 f 0000006655 65535 f 0000006656 65535 f 0000006657 65535 f 0000006658 65535 f 0000006659 65535 f 0000006660 65535 f 0000006661 65535 f 0000006662 65535 f 0000006663 65535 f 0000006664 65535 f 0000006665 65535 f 0000006666 65535 f 0000006667 65535 f 0000006668 65535 f 0000006669 65535 f 0000006670 65535 f 0000006671 65535 f 0000006672 65535 f 0000006673 65535 f 0000006674 65535 f 0000006675 65535 f 0000006676 65535 f 0000006677 65535 f 0000006678 65535 f 0000006679 65535 f 0000006680 65535 f 0000006681 65535 f 0000006682 65535 f 0000006683 65535 f 0000006684 65535 f 0000006685 65535 f 0000006686 65535 f 0000006687 65535 f 0000006688 65535 f 0000006689 65535 f 0000006690 65535 f 0000006691 65535 f 0000006692 65535 f 0000006693 65535 f 0000006694 65535 f 0000006695 65535 f 0000006696 65535 f 0000006697 65535 f 0000006698 65535 f 0000006699 65535 f 0000006700 65535 f 0000006701 65535 f 0000006702 65535 f 0000006703 65535 f 0000006704 65535 f 0000006705 65535 f 0000006706 65535 f 0000006707 65535 f 0000006708 65535 f 0000006709 65535 f 0000006710 65535 f 0000006711 65535 f 0000006712 65535 f 0000006713 65535 f 0000006714 65535 f 0000006715 65535 f 0000006716 65535 f 0000006717 65535 f 0000006718 65535 f 0000006719 65535 f 0000006720 65535 f 0000006721 65535 f 0000006722 65535 f 0000006723 65535 f 0000006724 65535 f 0000006725 65535 f 0000006726 65535 f 0000006727 65535 f 0000006728 65535 f 0000006729 65535 f 0000006730 65535 f 0000006731 65535 f 0000006732 65535 f 0000006733 65535 f 0000006734 65535 f 0000006735 65535 f 0000006736 65535 f 0000006737 65535 f 0000006738 65535 f 0000006739 65535 f 0000006740 65535 f 0000006741 65535 f 0000006742 65535 f 0000006743 65535 f 0000006744 65535 f 0000006745 65535 f 0000006746 65535 f 0000006747 65535 f 0000006748 65535 f 0000006749 65535 f 0000006750 65535 f 0000006751 65535 f 0000006752 65535 f 0000006753 65535 f 0000006754 65535 f 0000006755 65535 f 0000006756 65535 f 0000006757 65535 f 0000006758 65535 f 0000006759 65535 f 0000006760 65535 f 0000006761 65535 f 0000006762 65535 f 0000006763 65535 f 0000006764 65535 f 0000006765 65535 f 0000006766 65535 f 0000006767 65535 f 0000006768 65535 f 0000006769 65535 f 0000006770 65535 f 0000006771 65535 f 0000006772 65535 f 0000006773 65535 f 0000006774 65535 f 0000006775 65535 f 0000006776 65535 f 0000006777 65535 f 0000006778 65535 f 0000006779 65535 f 0000006780 65535 f 0000006781 65535 f 0000006782 65535 f 0000006783 65535 f 0000006784 65535 f 0000006785 65535 f 0000006786 65535 f 0000006787 65535 f 0000006788 65535 f 0000006789 65535 f 0000006790 65535 f 0000006791 65535 f 0000006792 65535 f 0000006793 65535 f 0000006794 65535 f 0000006795 65535 f 0000006796 65535 f 0000006797 65535 f 0000006798 65535 f 0000006799 65535 f 0000006800 65535 f 0000006801 65535 f 0000006802 65535 f 0000006803 65535 f 0000006804 65535 f 0000006805 65535 f 0000006806 65535 f 0000006807 65535 f 0000006808 65535 f 0000006809 65535 f 0000006810 65535 f 0000006811 65535 f 0000006812 65535 f 0000006813 65535 f 0000006814 65535 f 0000006815 65535 f 0000006816 65535 f 0000006817 65535 f 0000006818 65535 f 0000006819 65535 f 0000006820 65535 f 0000006821 65535 f 0000006822 65535 f 0000006823 65535 f 0000006824 65535 f 0000006825 65535 f 0000006826 65535 f 0000006827 65535 f 0000006828 65535 f 0000006829 65535 f 0000006830 65535 f 0000006831 65535 f 0000006832 65535 f 0000006833 65535 f 0000006834 65535 f 0000006835 65535 f 0000006836 65535 f 0000006837 65535 f 0000006838 65535 f 0000006839 65535 f 0000006840 65535 f 0000006841 65535 f 0000006842 65535 f 0000006843 65535 f 0000006844 65535 f 0000006845 65535 f 0000006846 65535 f 0000006847 65535 f 0000006848 65535 f 0000006849 65535 f 0000006850 65535 f 0000006851 65535 f 0000006852 65535 f 0000006853 65535 f 0000006854 65535 f 0000006855 65535 f 0000006856 65535 f 0000006857 65535 f 0000006858 65535 f 0000006859 65535 f 0000006860 65535 f 0000006861 65535 f 0000006862 65535 f 0000006863 65535 f 0000006864 65535 f 0000006865 65535 f 0000006866 65535 f 0000006867 65535 f 0000006868 65535 f 0000006869 65535 f 0000006870 65535 f 0000006871 65535 f 0000006872 65535 f 0000006873 65535 f 0000006874 65535 f 0000006875 65535 f 0000006876 65535 f 0000006877 65535 f 0000006878 65535 f 0000006879 65535 f 0000006880 65535 f 0000006881 65535 f 0000006882 65535 f 0000006883 65535 f 0000006884 65535 f 0000006885 65535 f 0000006886 65535 f 0000006887 65535 f 0000006888 65535 f 0000006889 65535 f 0000006890 65535 f 0000006891 65535 f 0000006892 65535 f 0000006893 65535 f 0000006894 65535 f 0000006895 65535 f 0000006896 65535 f 0000006897 65535 f 0000006898 65535 f 0000006899 65535 f 0000006900 65535 f 0000006901 65535 f 0000006902 65535 f 0000006903 65535 f 0000006904 65535 f 0000006905 65535 f 0000006906 65535 f 0000006907 65535 f 0000006908 65535 f 0000006909 65535 f 0000006910 65535 f 0000006911 65535 f 0000006912 65535 f 0000006913 65535 f 0000006914 65535 f 0000006915 65535 f 0000006916 65535 f 0000006917 65535 f 0000006918 65535 f 0000006919 65535 f 0000006920 65535 f 0000006921 65535 f 0000006922 65535 f 0000006923 65535 f 0000006924 65535 f 0000006925 65535 f 0000006926 65535 f 0000006927 65535 f 0000006928 65535 f 0000006929 65535 f 0000006930 65535 f 0000006931 65535 f 0000006932 65535 f 0000006933 65535 f 0000006934 65535 f 0000006935 65535 f 0000006936 65535 f 0000006937 65535 f 0000006938 65535 f 0000006939 65535 f 0000006940 65535 f 0000006941 65535 f 0000006942 65535 f 0000006943 65535 f 0000006944 65535 f 0000006945 65535 f 0000006946 65535 f 0000006947 65535 f 0000006948 65535 f 0000006949 65535 f 0000006950 65535 f 0000006951 65535 f 0000006952 65535 f 0000006953 65535 f 0000006954 65535 f 0000006955 65535 f 0000006956 65535 f 0000006957 65535 f 0000006958 65535 f 0000006959 65535 f 0000006960 65535 f 0000006961 65535 f 0000006962 65535 f 0000006963 65535 f 0000006964 65535 f 0000006965 65535 f 0000006966 65535 f 0000006967 65535 f 0000006968 65535 f 0000006969 65535 f 0000006970 65535 f 0000006971 65535 f 0000006972 65535 f 0000006973 65535 f 0000006974 65535 f 0000006975 65535 f 0000006976 65535 f 0000006977 65535 f 0000006978 65535 f 0000006979 65535 f 0000006980 65535 f 0000006981 65535 f 0000006982 65535 f 0000006983 65535 f 0000006984 65535 f 0000006985 65535 f 0000006986 65535 f 0000006987 65535 f 0000006988 65535 f 0000006989 65535 f 0000006990 65535 f 0000006991 65535 f 0000006992 65535 f 0000006993 65535 f 0000006994 65535 f 0000006995 65535 f 0000006996 65535 f 0000006997 65535 f 0000006998 65535 f 0000006999 65535 f 0000007000 65535 f 0000007001 65535 f 0000007002 65535 f 0000007003 65535 f 0000007004 65535 f 0000007005 65535 f 0000007006 65535 f 0000007007 65535 f 0000007008 65535 f 0000007009 65535 f 0000007010 65535 f 0000007011 65535 f 0000007012 65535 f 0000007013 65535 f 0000007014 65535 f 0000007015 65535 f 0000007016 65535 f 0000007017 65535 f 0000007018 65535 f 0000007019 65535 f 0000007020 65535 f 0000007021 65535 f 0000007022 65535 f 0000007023 65535 f 0000007024 65535 f 0000007025 65535 f 0000007026 65535 f 0000007027 65535 f 0000007028 65535 f 0000007029 65535 f 0000007030 65535 f 0000007031 65535 f 0000007032 65535 f 0000007033 65535 f 0000007034 65535 f 0000007035 65535 f 0000007036 65535 f 0000007037 65535 f 0000007038 65535 f 0000007039 65535 f 0000007040 65535 f 0000007041 65535 f 0000007042 65535 f 0000007043 65535 f 0000007044 65535 f 0000007045 65535 f 0000007046 65535 f 0000007047 65535 f 0000007048 65535 f 0000007049 65535 f 0000007050 65535 f 0000007051 65535 f 0000007052 65535 f 0000007053 65535 f 0000007054 65535 f 0000007055 65535 f 0000007056 65535 f 0000007057 65535 f 0000007058 65535 f 0000007059 65535 f 0000007060 65535 f 0000007061 65535 f 0000007062 65535 f 0000007063 65535 f 0000007064 65535 f 0000007065 65535 f 0000007066 65535 f 0000007067 65535 f 0000007068 65535 f 0000007069 65535 f 0000007070 65535 f 0000007071 65535 f 0000007072 65535 f 0000007073 65535 f 0000007074 65535 f 0000007075 65535 f 0000007076 65535 f 0000007077 65535 f 0000007078 65535 f 0000007079 65535 f 0000007080 65535 f 0000007081 65535 f 0000007082 65535 f 0000007083 65535 f 0000007084 65535 f 0000007085 65535 f 0000007086 65535 f 0000007087 65535 f 0000007088 65535 f 0000007089 65535 f 0000007090 65535 f 0000007091 65535 f 0000007092 65535 f 0000007093 65535 f 0000007094 65535 f 0000007095 65535 f 0000007096 65535 f 0000007097 65535 f 0000007098 65535 f 0000007099 65535 f 0000007100 65535 f 0000007101 65535 f 0000007102 65535 f 0000007103 65535 f 0000007104 65535 f 0000007105 65535 f 0000007106 65535 f 0000007107 65535 f 0000007108 65535 f 0000007109 65535 f 0000007110 65535 f 0000007111 65535 f 0000007112 65535 f 0000007113 65535 f 0000007114 65535 f 0000007115 65535 f 0000007116 65535 f 0000007117 65535 f 0000007118 65535 f 0000007119 65535 f 0000007120 65535 f 0000007121 65535 f 0000007122 65535 f 0000007123 65535 f 0000007124 65535 f 0000007125 65535 f 0000007126 65535 f 0000007127 65535 f 0000007128 65535 f 0000007129 65535 f 0000007130 65535 f 0000007131 65535 f 0000007132 65535 f 0000007133 65535 f 0000007134 65535 f 0000007135 65535 f 0000007136 65535 f 0000007137 65535 f 0000007138 65535 f 0000007139 65535 f 0000007140 65535 f 0000007141 65535 f 0000007142 65535 f 0000007143 65535 f 0000007144 65535 f 0000007145 65535 f 0000007146 65535 f 0000007147 65535 f 0000007148 65535 f 0000007149 65535 f 0000007150 65535 f 0000007151 65535 f 0000007152 65535 f 0000007153 65535 f 0000007154 65535 f 0000007155 65535 f 0000007156 65535 f 0000007157 65535 f 0000007158 65535 f 0000007159 65535 f 0000007160 65535 f 0000007161 65535 f 0000007162 65535 f 0000007163 65535 f 0000007164 65535 f 0000007165 65535 f 0000007166 65535 f 0000007167 65535 f 0000007168 65535 f 0000007169 65535 f 0000007170 65535 f 0000007171 65535 f 0000007172 65535 f 0000007173 65535 f 0000007174 65535 f 0000007175 65535 f 0000007176 65535 f 0000007177 65535 f 0000007178 65535 f 0000007179 65535 f 0000007180 65535 f 0000007181 65535 f 0000007182 65535 f 0000007183 65535 f 0000007184 65535 f 0000007185 65535 f 0000007186 65535 f 0000007187 65535 f 0000007188 65535 f 0000007189 65535 f 0000007190 65535 f 0000007191 65535 f 0000007192 65535 f 0000007193 65535 f 0000007194 65535 f 0000007195 65535 f 0000007196 65535 f 0000007197 65535 f 0000007198 65535 f 0000007199 65535 f 0000007200 65535 f 0000007201 65535 f 0000007202 65535 f 0000007203 65535 f 0000007204 65535 f 0000007205 65535 f 0000007206 65535 f 0000007207 65535 f 0000007208 65535 f 0000007209 65535 f 0000007210 65535 f 0000007211 65535 f 0000007212 65535 f 0000007213 65535 f 0000007214 65535 f 0000007215 65535 f 0000007216 65535 f 0000007217 65535 f 0000007218 65535 f 0000007219 65535 f 0000007220 65535 f 0000007221 65535 f 0000007222 65535 f 0000007223 65535 f 0000007224 65535 f 0000007225 65535 f 0000007226 65535 f 0000007227 65535 f 0000007228 65535 f 0000007229 65535 f 0000007230 65535 f 0000007231 65535 f 0000007232 65535 f 0000007233 65535 f 0000007234 65535 f 0000007235 65535 f 0000007236 65535 f 0000007237 65535 f 0000007238 65535 f 0000007239 65535 f 0000007240 65535 f 0000007241 65535 f 0000007242 65535 f 0000007243 65535 f 0000007244 65535 f 0000007245 65535 f 0000007246 65535 f 0000007247 65535 f 0000007248 65535 f 0000007249 65535 f 0000007250 65535 f 0000007251 65535 f 0000007252 65535 f 0000007253 65535 f 0000007254 65535 f 0000007255 65535 f 0000007256 65535 f 0000007257 65535 f 0000007258 65535 f 0000007259 65535 f 0000007260 65535 f 0000007261 65535 f 0000007262 65535 f 0000007263 65535 f 0000007264 65535 f 0000007265 65535 f 0000007266 65535 f 0000007267 65535 f 0000007268 65535 f 0000007269 65535 f 0000007270 65535 f 0000007271 65535 f 0000007272 65535 f 0000007273 65535 f 0000007274 65535 f 0000007275 65535 f 0000007276 65535 f 0000007277 65535 f 0000007278 65535 f 0000007279 65535 f 0000007280 65535 f 0000007281 65535 f 0000007282 65535 f 0000007283 65535 f 0000007284 65535 f 0000007285 65535 f 0000007286 65535 f 0000007287 65535 f 0000007288 65535 f 0000007289 65535 f 0000007290 65535 f 0000007291 65535 f 0000007292 65535 f 0000007293 65535 f 0000007294 65535 f 0000007295 65535 f 0000007296 65535 f 0000007297 65535 f 0000007298 65535 f 0000007299 65535 f 0000007300 65535 f 0000007301 65535 f 0000007302 65535 f 0000007303 65535 f 0000007304 65535 f 0000007305 65535 f 0000007306 65535 f 0000007307 65535 f 0000007308 65535 f 0000007309 65535 f 0000007310 65535 f 0000007311 65535 f 0000007312 65535 f 0000007313 65535 f 0000007314 65535 f 0000007315 65535 f 0000007316 65535 f 0000007317 65535 f 0000007318 65535 f 0000007319 65535 f 0000007320 65535 f 0000007321 65535 f 0000007322 65535 f 0000007323 65535 f 0000007324 65535 f 0000007325 65535 f 0000007326 65535 f 0000007327 65535 f 0000007328 65535 f 0000007329 65535 f 0000007330 65535 f 0000007331 65535 f 0000007332 65535 f 0000007333 65535 f 0000007334 65535 f 0000007335 65535 f 0000007336 65535 f 0000007337 65535 f 0000007338 65535 f 0000007339 65535 f 0000007340 65535 f 0000007341 65535 f 0000007342 65535 f 0000007343 65535 f 0000007344 65535 f 0000007345 65535 f 0000007346 65535 f 0000007347 65535 f 0000007348 65535 f 0000007349 65535 f 0000007350 65535 f 0000007351 65535 f 0000007352 65535 f 0000007353 65535 f 0000007354 65535 f 0000007355 65535 f 0000007356 65535 f 0000007357 65535 f 0000007358 65535 f 0000007359 65535 f 0000007360 65535 f 0000007361 65535 f 0000007362 65535 f 0000007363 65535 f 0000007364 65535 f 0000007365 65535 f 0000007366 65535 f 0000007367 65535 f 0000007368 65535 f 0000007369 65535 f 0000007370 65535 f 0000007371 65535 f 0000007372 65535 f 0000007373 65535 f 0000007374 65535 f 0000007375 65535 f 0000007376 65535 f 0000007377 65535 f 0000007378 65535 f 0000007379 65535 f 0000007380 65535 f 0000007381 65535 f 0000007382 65535 f 0000007383 65535 f 0000007384 65535 f 0000007385 65535 f 0000007386 65535 f 0000007387 65535 f 0000007388 65535 f 0000007389 65535 f 0000007390 65535 f 0000007391 65535 f 0000007392 65535 f 0000007393 65535 f 0000007394 65535 f 0000007395 65535 f 0000007396 65535 f 0000007397 65535 f 0000007398 65535 f 0000007399 65535 f 0000007400 65535 f 0000007401 65535 f 0000007402 65535 f 0000007403 65535 f 0000007404 65535 f 0000007405 65535 f 0000007406 65535 f 0000007407 65535 f 0000007408 65535 f 0000007409 65535 f 0000007410 65535 f 0000007411 65535 f 0000007412 65535 f 0000007413 65535 f 0000007414 65535 f 0000007415 65535 f 0000007416 65535 f 0000007417 65535 f 0000007418 65535 f 0000007419 65535 f 0000007420 65535 f 0000007421 65535 f 0000007422 65535 f 0000007423 65535 f 0000007424 65535 f 0000007425 65535 f 0000007426 65535 f 0000007427 65535 f 0000007428 65535 f 0000007429 65535 f 0000007430 65535 f 0000007431 65535 f 0000007432 65535 f 0000007433 65535 f 0000007434 65535 f 0000007435 65535 f 0000007436 65535 f 0000007437 65535 f 0000007438 65535 f 0000007439 65535 f 0000007440 65535 f 0000007441 65535 f 0000007442 65535 f 0000007443 65535 f 0000007444 65535 f 0000007445 65535 f 0000007446 65535 f 0000007447 65535 f 0000007448 65535 f 0000007449 65535 f 0000007450 65535 f 0000007451 65535 f 0000007452 65535 f 0000007453 65535 f 0000007454 65535 f 0000007455 65535 f 0000007456 65535 f 0000007457 65535 f 0000007458 65535 f 0000007459 65535 f 0000007460 65535 f 0000007461 65535 f 0000007462 65535 f 0000007463 65535 f 0000007464 65535 f 0000007465 65535 f 0000007466 65535 f 0000007467 65535 f 0000007468 65535 f 0000007469 65535 f 0000007470 65535 f 0000007471 65535 f 0000007472 65535 f 0000007473 65535 f 0000007474 65535 f 0000007475 65535 f 0000007476 65535 f 0000007477 65535 f 0000007478 65535 f 0000007479 65535 f 0000007480 65535 f 0000007481 65535 f 0000007482 65535 f 0000007483 65535 f 0000007484 65535 f 0000007485 65535 f 0000007486 65535 f 0000007487 65535 f 0000007488 65535 f 0000007489 65535 f 0000007490 65535 f 0000007491 65535 f 0000007492 65535 f 0000007493 65535 f 0000007494 65535 f 0000007495 65535 f 0000007496 65535 f 0000007497 65535 f 0000007498 65535 f 0000007499 65535 f 0000007500 65535 f 0000007501 65535 f 0000007502 65535 f 0000007503 65535 f 0000007504 65535 f 0000007505 65535 f 0000007506 65535 f 0000007507 65535 f 0000007508 65535 f 0000007509 65535 f 0000007510 65535 f 0000007511 65535 f 0000007512 65535 f 0000007513 65535 f 0000007514 65535 f 0000007515 65535 f 0000007516 65535 f 0000007517 65535 f 0000007518 65535 f 0000007519 65535 f 0000007520 65535 f 0000007521 65535 f 0000007522 65535 f 0000007523 65535 f 0000007524 65535 f 0000007525 65535 f 0000007526 65535 f 0000007527 65535 f 0000007528 65535 f 0000007529 65535 f 0000007530 65535 f 0000007531 65535 f 0000007532 65535 f 0000007533 65535 f 0000007534 65535 f 0000007535 65535 f 0000007536 65535 f 0000007537 65535 f 0000007538 65535 f 0000007539 65535 f 0000007540 65535 f 0000007541 65535 f 0000007542 65535 f 0000007543 65535 f 0000007544 65535 f 0000007545 65535 f 0000007546 65535 f 0000007547 65535 f 0000007548 65535 f 0000007549 65535 f 0000007550 65535 f 0000007551 65535 f 0000007552 65535 f 0000007553 65535 f 0000007554 65535 f 0000007555 65535 f 0000007556 65535 f 0000007557 65535 f 0000007558 65535 f 0000007559 65535 f 0000007560 65535 f 0000007561 65535 f 0000007562 65535 f 0000007563 65535 f 0000007564 65535 f 0000007565 65535 f 0000007566 65535 f 0000007567 65535 f 0000007568 65535 f 0000007569 65535 f 0000007570 65535 f 0000007571 65535 f 0000007572 65535 f 0000007573 65535 f 0000007574 65535 f 0000007575 65535 f 0000007576 65535 f 0000007577 65535 f 0000007578 65535 f 0000007579 65535 f 0000007580 65535 f 0000007581 65535 f 0000007582 65535 f 0000007583 65535 f 0000007584 65535 f 0000007585 65535 f 0000007586 65535 f 0000007587 65535 f 0000007588 65535 f 0000007589 65535 f 0000007590 65535 f 0000007591 65535 f 0000007592 65535 f 0000007593 65535 f 0000007594 65535 f 0000007595 65535 f 0000007596 65535 f 0000007597 65535 f 0000007598 65535 f 0000007599 65535 f 0000007600 65535 f 0000007601 65535 f 0000007602 65535 f 0000007603 65535 f 0000007604 65535 f 0000007605 65535 f 0000007606 65535 f 0000007607 65535 f 0000007608 65535 f 0000007609 65535 f 0000007610 65535 f 0000007611 65535 f 0000007612 65535 f 0000007613 65535 f 0000007614 65535 f 0000007615 65535 f 0000007616 65535 f 0000007617 65535 f 0000007618 65535 f 0000007619 65535 f 0000007620 65535 f 0000007621 65535 f 0000007622 65535 f 0000007623 65535 f 0000007624 65535 f 0000007625 65535 f 0000007626 65535 f 0000007627 65535 f 0000007628 65535 f 0000007629 65535 f 0000007630 65535 f 0000007631 65535 f 0000007632 65535 f 0000007633 65535 f 0000007634 65535 f 0000007635 65535 f 0000007636 65535 f 0000007637 65535 f 0000007638 65535 f 0000007639 65535 f 0000007640 65535 f 0000007641 65535 f 0000007642 65535 f 0000007643 65535 f 0000007644 65535 f 0000007645 65535 f 0000007646 65535 f 0000007647 65535 f 0000007648 65535 f 0000007649 65535 f 0000007650 65535 f 0000007651 65535 f 0000007652 65535 f 0000007653 65535 f 0000007654 65535 f 0000007655 65535 f 0000007656 65535 f 0000007657 65535 f 0000007658 65535 f 0000007659 65535 f 0000007660 65535 f 0000007661 65535 f 0000007662 65535 f 0000007663 65535 f 0000007664 65535 f 0000007665 65535 f 0000007666 65535 f 0000007667 65535 f 0000007668 65535 f 0000007669 65535 f 0000007670 65535 f 0000007671 65535 f 0000007672 65535 f 0000007673 65535 f 0000007674 65535 f 0000007675 65535 f 0000007676 65535 f 0000007677 65535 f 0000007678 65535 f 0000007679 65535 f 0000007680 65535 f 0000007681 65535 f 0000007682 65535 f 0000007683 65535 f 0000007684 65535 f 0000007685 65535 f 0000007686 65535 f 0000007687 65535 f 0000007688 65535 f 0000007689 65535 f 0000007690 65535 f 0000007691 65535 f 0000007692 65535 f 0000007693 65535 f 0000007694 65535 f 0000007695 65535 f 0000007696 65535 f 0000007697 65535 f 0000007698 65535 f 0000007699 65535 f 0000007700 65535 f 0000007701 65535 f 0000007702 65535 f 0000007703 65535 f 0000007704 65535 f 0000007705 65535 f 0000007706 65535 f 0000007707 65535 f 0000007708 65535 f 0000007709 65535 f 0000007710 65535 f 0000007711 65535 f 0000007712 65535 f 0000007713 65535 f 0000007714 65535 f 0000007715 65535 f 0000007716 65535 f 0000007717 65535 f 0000007718 65535 f 0000007719 65535 f 0000007720 65535 f 0000007721 65535 f 0000007722 65535 f 0000007723 65535 f 0000007724 65535 f 0000007725 65535 f 0000007726 65535 f 0000007727 65535 f 0000007728 65535 f 0000007729 65535 f 0000007730 65535 f 0000007731 65535 f 0000007732 65535 f 0000007733 65535 f 0000007734 65535 f 0000007735 65535 f 0000007736 65535 f 0000007737 65535 f 0000007738 65535 f 0000007739 65535 f 0000007740 65535 f 0000007741 65535 f 0000007742 65535 f 0000007743 65535 f 0000007744 65535 f 0000007745 65535 f 0000007746 65535 f 0000007747 65535 f 0000007748 65535 f 0000007749 65535 f 0000007750 65535 f 0000007751 65535 f 0000007752 65535 f 0000007753 65535 f 0000007754 65535 f 0000007755 65535 f 0000007756 65535 f 0000007757 65535 f 0000007758 65535 f 0000007759 65535 f 0000007760 65535 f 0000007761 65535 f 0000007762 65535 f 0000007763 65535 f 0000007764 65535 f 0000007765 65535 f 0000007766 65535 f 0000007767 65535 f 0000007768 65535 f 0000007769 65535 f 0000007770 65535 f 0000007771 65535 f 0000007772 65535 f 0000007773 65535 f 0000007774 65535 f 0000007775 65535 f 0000007776 65535 f 0000007777 65535 f 0000007778 65535 f 0000007779 65535 f 0000007780 65535 f 0000007781 65535 f 0000007782 65535 f 0000007783 65535 f 0000007784 65535 f 0000007785 65535 f 0000007786 65535 f 0000007787 65535 f 0000007788 65535 f 0000007789 65535 f 0000007790 65535 f 0000007791 65535 f 0000007792 65535 f 0000007793 65535 f 0000007794 65535 f 0000007795 65535 f 0000007796 65535 f 0000007797 65535 f 0000007798 65535 f 0000007799 65535 f 0000007800 65535 f 0000007801 65535 f 0000007802 65535 f 0000007803 65535 f 0000007804 65535 f 0000007805 65535 f 0000007806 65535 f 0000007807 65535 f 0000007808 65535 f 0000007809 65535 f 0000007810 65535 f 0000007811 65535 f 0000007812 65535 f 0000007813 65535 f 0000007814 65535 f 0000007815 65535 f 0000007816 65535 f 0000007817 65535 f 0000007818 65535 f 0000007819 65535 f 0000007820 65535 f 0000007821 65535 f 0000007822 65535 f 0000007823 65535 f 0000007824 65535 f 0000007825 65535 f 0000007826 65535 f 0000007827 65535 f 0000007828 65535 f 0000007829 65535 f 0000007830 65535 f 0000007831 65535 f 0000007832 65535 f 0000007833 65535 f 0000007834 65535 f 0000007835 65535 f 0000007836 65535 f 0000007837 65535 f 0000007838 65535 f 0000007839 65535 f 0000007840 65535 f 0000007841 65535 f 0000007842 65535 f 0000007843 65535 f 0000007844 65535 f 0000007845 65535 f 0000007846 65535 f 0000007847 65535 f 0000007848 65535 f 0000007849 65535 f 0000007850 65535 f 0000007851 65535 f 0000007852 65535 f 0000007853 65535 f 0000007854 65535 f 0000007855 65535 f 0000007856 65535 f 0000007857 65535 f 0000007858 65535 f 0000007859 65535 f 0000007860 65535 f 0000007861 65535 f 0000007862 65535 f 0000007863 65535 f 0000007864 65535 f 0000007865 65535 f 0000007866 65535 f 0000007867 65535 f 0000007868 65535 f 0000007869 65535 f 0000007870 65535 f 0000007871 65535 f 0000007872 65535 f 0000007873 65535 f 0000007874 65535 f 0000007875 65535 f 0000007876 65535 f 0000007877 65535 f 0000007878 65535 f 0000007879 65535 f 0000007880 65535 f 0000007881 65535 f 0000007882 65535 f 0000007883 65535 f 0000007884 65535 f 0000007885 65535 f 0000007886 65535 f 0000007887 65535 f 0000007888 65535 f 0000007889 65535 f 0000007890 65535 f 0000007891 65535 f 0000007892 65535 f 0000007893 65535 f 0000007894 65535 f 0000007895 65535 f 0000007896 65535 f 0000007897 65535 f 0000007898 65535 f 0000007899 65535 f 0000007900 65535 f 0000007901 65535 f 0000007902 65535 f 0000007903 65535 f 0000007904 65535 f 0000007905 65535 f 0000007906 65535 f 0000007907 65535 f 0000007908 65535 f 0000007909 65535 f 0000007910 65535 f 0000007911 65535 f 0000007912 65535 f 0000007913 65535 f 0000007914 65535 f 0000007915 65535 f 0000007916 65535 f 0000007917 65535 f 0000007918 65535 f 0000007919 65535 f 0000007920 65535 f 0000007921 65535 f 0000007922 65535 f 0000007923 65535 f 0000007924 65535 f 0000007925 65535 f 0000007926 65535 f 0000007927 65535 f 0000007928 65535 f 0000007929 65535 f 0000007930 65535 f 0000007931 65535 f 0000007932 65535 f 0000007933 65535 f 0000007934 65535 f 0000007935 65535 f 0000007936 65535 f 0000007937 65535 f 0000007938 65535 f 0000007939 65535 f 0000007940 65535 f 0000007941 65535 f 0000007942 65535 f 0000007943 65535 f 0000007944 65535 f 0000007945 65535 f 0000007946 65535 f 0000007947 65535 f 0000007948 65535 f 0000007949 65535 f 0000007950 65535 f 0000007951 65535 f 0000007952 65535 f 0000007953 65535 f 0000007954 65535 f 0000007955 65535 f 0000007956 65535 f 0000007957 65535 f 0000007958 65535 f 0000007959 65535 f 0000007960 65535 f 0000007961 65535 f 0000007962 65535 f 0000007963 65535 f 0000007964 65535 f 0000007965 65535 f 0000007966 65535 f 0000007967 65535 f 0000007968 65535 f 0000007969 65535 f 0000007970 65535 f 0000007971 65535 f 0000007972 65535 f 0000007973 65535 f 0000007974 65535 f 0000007975 65535 f 0000007976 65535 f 0000007977 65535 f 0000007978 65535 f 0000007979 65535 f 0000007980 65535 f 0000007981 65535 f 0000007982 65535 f 0000007983 65535 f 0000007984 65535 f 0000007985 65535 f 0000007986 65535 f 0000007987 65535 f 0000007988 65535 f 0000007989 65535 f 0000007990 65535 f 0000007991 65535 f 0000007992 65535 f 0000007993 65535 f 0000007994 65535 f 0000007995 65535 f 0000007996 65535 f 0000007997 65535 f 0000007998 65535 f 0000007999 65535 f 0000008000 65535 f 0000008001 65535 f 0000008002 65535 f 0000008003 65535 f 0000008004 65535 f 0000008005 65535 f 0000008006 65535 f 0000008007 65535 f 0000008008 65535 f 0000008009 65535 f 0000008010 65535 f 0000008011 65535 f 0000008012 65535 f 0000008013 65535 f 0000008014 65535 f 0000008015 65535 f 0000008016 65535 f 0000008017 65535 f 0000008018 65535 f 0000008019 65535 f 0000008020 65535 f 0000008021 65535 f 0000008022 65535 f 0000008023 65535 f 0000008024 65535 f 0000008025 65535 f 0000008026 65535 f 0000008027 65535 f 0000008028 65535 f 0000008029 65535 f 0000008030 65535 f 0000008031 65535 f 0000008032 65535 f 0000008033 65535 f 0000008034 65535 f 0000008035 65535 f 0000008036 65535 f 0000008037 65535 f 0000008038 65535 f 0000008039 65535 f 0000008040 65535 f 0000008041 65535 f 0000008042 65535 f 0000008043 65535 f 0000008044 65535 f 0000008045 65535 f 0000008046 65535 f 0000008047 65535 f 0000008048 65535 f 0000008049 65535 f 0000008050 65535 f 0000008051 65535 f 0000008052 65535 f 0000008053 65535 f 0000008054 65535 f 0000008055 65535 f 0000008056 65535 f 0000008057 65535 f 0000008058 65535 f 0000008059 65535 f 0000008060 65535 f 0000008061 65535 f 0000008062 65535 f 0000008063 65535 f 0000008064 65535 f 0000008065 65535 f 0000008066 65535 f 0000008067 65535 f 0000008068 65535 f 0000008069 65535 f 0000008070 65535 f 0000008071 65535 f 0000008072 65535 f 0000008073 65535 f 0000008074 65535 f 0000008075 65535 f 0000008076 65535 f 0000008077 65535 f 0000008078 65535 f 0000008079 65535 f 0000008080 65535 f 0000008081 65535 f 0000008082 65535 f 0000008083 65535 f 0000008084 65535 f 0000008085 65535 f 0000008086 65535 f 0000008087 65535 f 0000008088 65535 f 0000008089 65535 f 0000008090 65535 f 0000008091 65535 f 0000008092 65535 f 0000008093 65535 f 0000008094 65535 f 0000008095 65535 f 0000008096 65535 f 0000008097 65535 f 0000008098 65535 f 0000008099 65535 f 0000008100 65535 f 0000008101 65535 f 0000008102 65535 f 0000008103 65535 f 0000008104 65535 f 0000008105 65535 f 0000008106 65535 f 0000008107 65535 f 0000008108 65535 f 0000008109 65535 f 0000008110 65535 f 0000008111 65535 f 0000008112 65535 f 0000008113 65535 f 0000008114 65535 f 0000008115 65535 f 0000008116 65535 f 0000008117 65535 f 0000008118 65535 f 0000008119 65535 f 0000008120 65535 f 0000008121 65535 f 0000008122 65535 f 0000008123 65535 f 0000008124 65535 f 0000008125 65535 f 0000008126 65535 f 0000008127 65535 f 0000008128 65535 f 0000008129 65535 f 0000008130 65535 f 0000008131 65535 f 0000008132 65535 f 0000008133 65535 f 0000008134 65535 f 0000008135 65535 f 0000008136 65535 f 0000008137 65535 f 0000008138 65535 f 0000008139 65535 f 0000008140 65535 f 0000008141 65535 f 0000008142 65535 f 0000008143 65535 f 0000008144 65535 f 0000008145 65535 f 0000008146 65535 f 0000008147 65535 f 0000008148 65535 f 0000008149 65535 f 0000008150 65535 f 0000008151 65535 f 0000008152 65535 f 0000008153 65535 f 0000008154 65535 f 0000008155 65535 f 0000008156 65535 f 0000008157 65535 f 0000008158 65535 f 0000008159 65535 f 0000008160 65535 f 0000008161 65535 f 0000008162 65535 f 0000008163 65535 f 0000008164 65535 f 0000008165 65535 f 0000008166 65535 f 0000008167 65535 f 0000008168 65535 f 0000008169 65535 f 0000008170 65535 f 0000008171 65535 f 0000008172 65535 f 0000008173 65535 f 0000008174 65535 f 0000008175 65535 f 0000008176 65535 f 0000008177 65535 f 0000008178 65535 f 0000008179 65535 f 0000008180 65535 f 0000008181 65535 f 0000008182 65535 f 0000008183 65535 f 0000008184 65535 f 0000008185 65535 f 0000008186 65535 f 0000008187 65535 f 0000008188 65535 f 0000008189 65535 f 0000008190 65535 f 0000008191 65535 f 0000008192 65535 f 0000008193 65535 f 0000008194 65535 f 0000008195 65535 f 0000008196 65535 f 0000008197 65535 f 0000008198 65535 f 0000008199 65535 f 0000008200 65535 f 0000008201 65535 f 0000008202 65535 f 0000008203 65535 f 0000008204 65535 f 0000008205 65535 f 0000008206 65535 f 0000008207 65535 f 0000008208 65535 f 0000008209 65535 f 0000008210 65535 f 0000008211 65535 f 0000008212 65535 f 0000008213 65535 f 0000008214 65535 f 0000008215 65535 f 0000008216 65535 f 0000008217 65535 f 0000008218 65535 f 0000008219 65535 f 0000008220 65535 f 0000008221 65535 f 0000008222 65535 f 0000008223 65535 f 0000008224 65535 f 0000008225 65535 f 0000008226 65535 f 0000008227 65535 f 0000008228 65535 f 0000008229 65535 f 0000008230 65535 f 0000008231 65535 f 0000008232 65535 f 0000008233 65535 f 0000008234 65535 f 0000008235 65535 f 0000008236 65535 f 0000008237 65535 f 0000008238 65535 f 0000008239 65535 f 0000008240 65535 f 0000008241 65535 f 0000008242 65535 f 0000008243 65535 f 0000008244 65535 f 0000008245 65535 f 0000008246 65535 f 0000008247 65535 f 0000008248 65535 f 0000008249 65535 f 0000008250 65535 f 0000008251 65535 f 0000008252 65535 f 0000008253 65535 f 0000008254 65535 f 0000008255 65535 f 0000008256 65535 f 0000008257 65535 f 0000008258 65535 f 0000008259 65535 f 0000008260 65535 f 0000008261 65535 f 0000008262 65535 f 0000008263 65535 f 0000008264 65535 f 0000008265 65535 f 0000008266 65535 f 0000008267 65535 f 0000008268 65535 f 0000008269 65535 f 0000008270 65535 f 0000008271 65535 f 0000008272 65535 f 0000008273 65535 f 0000008274 65535 f 0000008275 65535 f 0000008276 65535 f 0000008277 65535 f 0000008278 65535 f 0000008279 65535 f 0000008280 65535 f 0000008281 65535 f 0000008282 65535 f 0000008283 65535 f 0000008284 65535 f 0000008285 65535 f 0000008286 65535 f 0000008287 65535 f 0000008288 65535 f 0000008289 65535 f 0000008290 65535 f 0000008291 65535 f 0000008292 65535 f 0000008293 65535 f 0000008294 65535 f 0000008295 65535 f 0000008296 65535 f 0000008297 65535 f 0000008298 65535 f 0000008299 65535 f 0000008300 65535 f 0000008301 65535 f 0000008302 65535 f 0000008303 65535 f 0000008304 65535 f 0000008305 65535 f 0000008306 65535 f 0000008307 65535 f 0000008308 65535 f 0000008309 65535 f 0000008310 65535 f 0000008311 65535 f 0000008312 65535 f 0000008313 65535 f 0000008314 65535 f 0000008315 65535 f 0000008316 65535 f 0000008317 65535 f 0000008318 65535 f 0000008319 65535 f 0000008320 65535 f 0000008321 65535 f 0000008322 65535 f 0000008323 65535 f 0000008324 65535 f 0000008325 65535 f 0000008326 65535 f 0000008327 65535 f 0000008328 65535 f 0000008329 65535 f 0000008330 65535 f 0000008331 65535 f 0000008332 65535 f 0000008333 65535 f 0000008334 65535 f 0000008335 65535 f 0000008336 65535 f 0000008337 65535 f 0000008338 65535 f 0000008339 65535 f 0000008340 65535 f 0000008341 65535 f 0000008342 65535 f 0000008343 65535 f 0000008344 65535 f 0000008345 65535 f 0000008346 65535 f 0000008347 65535 f 0000008348 65535 f 0000008349 65535 f 0000008350 65535 f 0000008351 65535 f 0000008352 65535 f 0000008353 65535 f 0000008354 65535 f 0000008355 65535 f 0000008356 65535 f 0000008357 65535 f 0000008358 65535 f 0000008359 65535 f 0000008360 65535 f 0000008361 65535 f 0000008362 65535 f 0000008363 65535 f 0000008364 65535 f 0000008365 65535 f 0000008366 65535 f 0000008367 65535 f 0000008368 65535 f 0000008369 65535 f 0000008370 65535 f 0000008371 65535 f 0000008372 65535 f 0000008373 65535 f 0000008374 65535 f 0000008375 65535 f 0000008376 65535 f 0000008377 65535 f 0000008378 65535 f 0000008379 65535 f 0000008380 65535 f 0000008381 65535 f 0000008382 65535 f 0000008383 65535 f 0000008384 65535 f 0000008385 65535 f 0000008386 65535 f 0000008387 65535 f 0000008388 65535 f 0000008389 65535 f 0000008390 65535 f 0000008391 65535 f 0000008392 65535 f 0000008393 65535 f 0000008394 65535 f 0000008395 65535 f 0000008396 65535 f 0000008397 65535 f 0000008398 65535 f 0000008399 65535 f 0000008400 65535 f 0000008401 65535 f 0000008402 65535 f 0000008403 65535 f 0000008404 65535 f 0000008405 65535 f 0000008406 65535 f 0000008407 65535 f 0000008408 65535 f 0000008409 65535 f 0000008410 65535 f 0000008411 65535 f 0000008412 65535 f 0000008413 65535 f 0000008414 65535 f 0000008415 65535 f 0000008416 65535 f 0000008417 65535 f 0000008418 65535 f 0000008419 65535 f 0000008420 65535 f 0000008421 65535 f 0000008422 65535 f 0000008423 65535 f 0000008424 65535 f 0000008425 65535 f 0000008426 65535 f 0000008427 65535 f 0000008428 65535 f 0000008429 65535 f 0000008430 65535 f 0000008431 65535 f 0000008432 65535 f 0000008433 65535 f 0000008434 65535 f 0000008435 65535 f 0000008436 65535 f 0000008437 65535 f 0000008438 65535 f 0000008439 65535 f 0000008440 65535 f 0000008441 65535 f 0000008442 65535 f 0000008443 65535 f 0000008444 65535 f 0000008445 65535 f 0000008446 65535 f 0000008447 65535 f 0000008448 65535 f 0000008449 65535 f 0000008450 65535 f 0000008451 65535 f 0000008452 65535 f 0000008453 65535 f 0000008454 65535 f 0000008455 65535 f 0000008456 65535 f 0000008457 65535 f 0000008458 65535 f 0000008459 65535 f 0000008460 65535 f 0000008461 65535 f 0000008462 65535 f 0000008463 65535 f 0000008464 65535 f 0000008465 65535 f 0000008466 65535 f 0000008467 65535 f 0000008468 65535 f 0000008469 65535 f 0000008470 65535 f 0000008471 65535 f 0000008472 65535 f 0000008473 65535 f 0000008474 65535 f 0000008475 65535 f 0000008476 65535 f 0000008477 65535 f 0000008478 65535 f 0000008479 65535 f 0000008480 65535 f 0000008481 65535 f 0000008482 65535 f 0000008483 65535 f 0000008484 65535 f 0000008485 65535 f 0000008486 65535 f 0000008487 65535 f 0000008488 65535 f 0000008489 65535 f 0000008490 65535 f 0000008491 65535 f 0000008492 65535 f 0000008493 65535 f 0000008494 65535 f 0000008495 65535 f 0000008496 65535 f 0000008497 65535 f 0000008498 65535 f 0000008499 65535 f 0000008500 65535 f 0000008501 65535 f 0000008502 65535 f 0000008503 65535 f 0000008504 65535 f 0000008505 65535 f 0000008506 65535 f 0000008507 65535 f 0000008508 65535 f 0000008509 65535 f 0000008510 65535 f 0000008511 65535 f 0000008512 65535 f 0000008513 65535 f 0000008514 65535 f 0000008515 65535 f 0000008516 65535 f 0000008517 65535 f 0000008518 65535 f 0000008519 65535 f 0000008520 65535 f 0000008521 65535 f 0000008522 65535 f 0000008523 65535 f 0000008524 65535 f 0000008525 65535 f 0000008526 65535 f 0000008527 65535 f 0000008528 65535 f 0000008529 65535 f 0000008530 65535 f 0000008531 65535 f 0000008532 65535 f 0000008533 65535 f 0000008534 65535 f 0000008535 65535 f 0000008536 65535 f 0000008537 65535 f 0000008538 65535 f 0000008539 65535 f 0000008540 65535 f 0000008541 65535 f 0000008542 65535 f 0000008543 65535 f 0000008544 65535 f 0000008545 65535 f 0000008546 65535 f 0000008547 65535 f 0000008548 65535 f 0000008549 65535 f 0000008550 65535 f 0000008551 65535 f 0000008552 65535 f 0000008553 65535 f 0000008554 65535 f 0000008555 65535 f 0000008556 65535 f 0000008557 65535 f 0000008558 65535 f 0000008559 65535 f 0000008560 65535 f 0000008561 65535 f 0000008562 65535 f 0000008563 65535 f 0000008564 65535 f 0000008565 65535 f 0000008566 65535 f 0000008567 65535 f 0000008568 65535 f 0000008569 65535 f 0000008570 65535 f 0000008571 65535 f 0000008572 65535 f 0000008573 65535 f 0000008574 65535 f 0000008575 65535 f 0000008576 65535 f 0000008577 65535 f 0000008578 65535 f 0000008579 65535 f 0000008580 65535 f 0000008581 65535 f 0000008582 65535 f 0000008583 65535 f 0000008584 65535 f 0000008585 65535 f 0000008586 65535 f 0000008587 65535 f 0000008588 65535 f 0000008589 65535 f 0000008590 65535 f 0000008591 65535 f 0000008592 65535 f 0000008593 65535 f 0000008594 65535 f 0000008595 65535 f 0000008596 65535 f 0000008597 65535 f 0000008598 65535 f 0000008599 65535 f 0000008600 65535 f 0000008601 65535 f 0000008602 65535 f 0000008603 65535 f 0000008604 65535 f 0000008605 65535 f 0000008606 65535 f 0000008607 65535 f 0000008608 65535 f 0000008609 65535 f 0000008610 65535 f 0000008611 65535 f 0000008612 65535 f 0000008613 65535 f 0000008614 65535 f 0000008615 65535 f 0000008616 65535 f 0000008617 65535 f 0000008618 65535 f 0000008619 65535 f 0000008620 65535 f 0000008621 65535 f 0000008622 65535 f 0000008623 65535 f 0000008624 65535 f 0000008625 65535 f 0000008626 65535 f 0000008627 65535 f 0000008628 65535 f 0000008629 65535 f 0000008630 65535 f 0000008631 65535 f 0000008632 65535 f 0000008633 65535 f 0000008634 65535 f 0000008635 65535 f 0000008636 65535 f 0000008637 65535 f 0000008638 65535 f 0000008639 65535 f 0000008640 65535 f 0000008641 65535 f 0000008642 65535 f 0000008643 65535 f 0000008644 65535 f 0000008645 65535 f 0000008646 65535 f 0000008647 65535 f 0000008648 65535 f 0000008649 65535 f 0000008650 65535 f 0000008651 65535 f 0000008652 65535 f 0000008653 65535 f 0000008654 65535 f 0000008655 65535 f 0000008656 65535 f 0000008657 65535 f 0000008658 65535 f 0000008659 65535 f 0000008660 65535 f 0000008661 65535 f 0000008662 65535 f 0000008663 65535 f 0000008664 65535 f 0000008665 65535 f 0000008666 65535 f 0000008667 65535 f 0000008668 65535 f 0000008669 65535 f 0000008670 65535 f 0000008671 65535 f 0000008672 65535 f 0000008673 65535 f 0000008674 65535 f 0000008675 65535 f 0000008676 65535 f 0000008677 65535 f 0000008678 65535 f 0000008679 65535 f 0000008680 65535 f 0000008681 65535 f 0000008682 65535 f 0000008683 65535 f 0000008684 65535 f 0000008685 65535 f 0000008686 65535 f 0000008687 65535 f 0000008688 65535 f 0000008689 65535 f 0000008690 65535 f 0000008691 65535 f 0000008692 65535 f 0000008693 65535 f 0000008694 65535 f 0000008695 65535 f 0000008696 65535 f 0000008697 65535 f 0000008698 65535 f 0000008699 65535 f 0000008700 65535 f 0000008701 65535 f 0000008702 65535 f 0000008703 65535 f 0000008704 65535 f 0000008705 65535 f 0000008706 65535 f 0000008707 65535 f 0000008708 65535 f 0000008709 65535 f 0000008710 65535 f 0000008711 65535 f 0000008712 65535 f 0000008713 65535 f 0000008714 65535 f 0000008715 65535 f 0000008716 65535 f 0000008717 65535 f 0000008718 65535 f 0000008719 65535 f 0000008720 65535 f 0000008721 65535 f 0000008722 65535 f 0000008723 65535 f 0000008724 65535 f 0000008725 65535 f 0000008726 65535 f 0000008727 65535 f 0000008728 65535 f 0000008729 65535 f 0000008730 65535 f 0000008731 65535 f 0000008732 65535 f 0000008733 65535 f 0000008734 65535 f 0000008735 65535 f 0000008736 65535 f 0000008737 65535 f 0000008738 65535 f 0000008739 65535 f 0000008740 65535 f 0000008741 65535 f 0000008742 65535 f 0000008743 65535 f 0000008744 65535 f 0000008745 65535 f 0000008746 65535 f 0000008747 65535 f 0000008748 65535 f 0000008749 65535 f 0000008750 65535 f 0000008751 65535 f 0000008752 65535 f 0000008753 65535 f 0000008754 65535 f 0000008755 65535 f 0000008756 65535 f 0000008757 65535 f 0000008758 65535 f 0000008759 65535 f 0000008760 65535 f 0000008761 65535 f 0000008762 65535 f 0000008763 65535 f 0000008764 65535 f 0000008765 65535 f 0000008766 65535 f 0000008767 65535 f 0000008768 65535 f 0000008769 65535 f 0000008770 65535 f 0000008771 65535 f 0000008772 65535 f 0000008773 65535 f 0000008774 65535 f 0000008775 65535 f 0000008776 65535 f 0000008777 65535 f 0000008778 65535 f 0000008779 65535 f 0000008780 65535 f 0000008781 65535 f 0000008782 65535 f 0000008783 65535 f 0000008784 65535 f 0000008785 65535 f 0000008786 65535 f 0000008787 65535 f 0000008788 65535 f 0000008789 65535 f 0000008790 65535 f 0000008791 65535 f 0000008792 65535 f 0000008793 65535 f 0000008794 65535 f 0000008795 65535 f 0000008796 65535 f 0000008797 65535 f 0000008798 65535 f 0000008799 65535 f 0000008800 65535 f 0000008801 65535 f 0000008802 65535 f 0000008803 65535 f 0000008804 65535 f 0000008805 65535 f 0000008806 65535 f 0000008807 65535 f 0000008808 65535 f 0000008809 65535 f 0000008810 65535 f 0000008811 65535 f 0000008812 65535 f 0000008813 65535 f 0000008814 65535 f 0000008815 65535 f 0000008816 65535 f 0000008817 65535 f 0000008818 65535 f 0000008819 65535 f 0000008820 65535 f 0000008821 65535 f 0000008822 65535 f 0000008823 65535 f 0000008824 65535 f 0000008825 65535 f 0000008826 65535 f 0000008827 65535 f 0000008828 65535 f 0000008829 65535 f 0000008830 65535 f 0000008831 65535 f 0000008832 65535 f 0000008833 65535 f 0000008834 65535 f 0000008835 65535 f 0000008836 65535 f 0000008837 65535 f 0000008838 65535 f 0000008839 65535 f 0000008840 65535 f 0000008841 65535 f 0000008842 65535 f 0000008843 65535 f 0000008844 65535 f 0000008845 65535 f 0000008846 65535 f 0000008847 65535 f 0000008848 65535 f 0000008849 65535 f 0000008850 65535 f 0000008851 65535 f 0000008852 65535 f 0000008853 65535 f 0000008854 65535 f 0000008855 65535 f 0000008856 65535 f 0000008857 65535 f 0000008858 65535 f 0000008859 65535 f 0000008860 65535 f 0000008861 65535 f 0000008862 65535 f 0000008863 65535 f 0000008864 65535 f 0000008865 65535 f 0000008866 65535 f 0000008867 65535 f 0000008868 65535 f 0000008869 65535 f 0000008870 65535 f 0000008871 65535 f 0000008872 65535 f 0000008873 65535 f 0000008874 65535 f 0000008875 65535 f 0000008876 65535 f 0000008877 65535 f 0000008878 65535 f 0000008879 65535 f 0000008880 65535 f 0000008881 65535 f 0000008882 65535 f 0000008883 65535 f 0000008884 65535 f 0000008885 65535 f 0000008886 65535 f 0000008887 65535 f 0000008888 65535 f 0000008889 65535 f 0000008890 65535 f 0000008891 65535 f 0000008892 65535 f 0000008893 65535 f 0000008894 65535 f 0000008895 65535 f 0000008896 65535 f 0000008897 65535 f 0000008898 65535 f 0000008899 65535 f 0000008900 65535 f 0000008901 65535 f 0000008902 65535 f 0000008903 65535 f 0000008904 65535 f 0000008905 65535 f 0000008906 65535 f 0000008907 65535 f 0000008908 65535 f 0000008909 65535 f 0000008910 65535 f 0000008911 65535 f 0000008912 65535 f 0000008913 65535 f 0000008914 65535 f 0000008915 65535 f 0000008916 65535 f 0000008917 65535 f 0000008918 65535 f 0000008919 65535 f 0000008920 65535 f 0000008921 65535 f 0000008922 65535 f 0000008923 65535 f 0000008924 65535 f 0000008925 65535 f 0000008926 65535 f 0000008927 65535 f 0000008928 65535 f 0000008929 65535 f 0000008930 65535 f 0000008931 65535 f 0000008932 65535 f 0000008933 65535 f 0000008934 65535 f 0000008935 65535 f 0000008936 65535 f 0000008937 65535 f 0000008938 65535 f 0000008939 65535 f 0000008940 65535 f 0000008941 65535 f 0000008942 65535 f 0000008943 65535 f 0000008944 65535 f 0000008945 65535 f 0000008946 65535 f 0000008947 65535 f 0000008948 65535 f 0000008949 65535 f 0000008950 65535 f 0000008951 65535 f 0000008952 65535 f 0000008953 65535 f 0000008954 65535 f 0000008955 65535 f 0000008956 65535 f 0000008957 65535 f 0000008958 65535 f 0000008959 65535 f 0000008960 65535 f 0000008961 65535 f 0000008962 65535 f 0000008963 65535 f 0000008964 65535 f 0000008965 65535 f 0000008966 65535 f 0000008967 65535 f 0000008968 65535 f 0000008969 65535 f 0000008970 65535 f 0000008971 65535 f 0000008972 65535 f 0000008973 65535 f 0000008974 65535 f 0000008975 65535 f 0000008976 65535 f 0000008977 65535 f 0000008978 65535 f 0000008979 65535 f 0000008980 65535 f 0000008981 65535 f 0000008982 65535 f 0000008983 65535 f 0000008984 65535 f 0000008985 65535 f 0000008986 65535 f 0000008987 65535 f 0000008988 65535 f 0000008989 65535 f 0000008990 65535 f 0000008991 65535 f 0000008992 65535 f 0000008993 65535 f 0000008994 65535 f 0000008995 65535 f 0000008996 65535 f 0000008997 65535 f 0000008998 65535 f 0000008999 65535 f 0000009000 65535 f 0000009001 65535 f 0000009002 65535 f 0000009003 65535 f 0000009004 65535 f 0000009005 65535 f 0000009006 65535 f 0000009007 65535 f 0000009008 65535 f 0000009009 65535 f 0000009010 65535 f 0000009011 65535 f 0000009012 65535 f 0000009013 65535 f 0000009014 65535 f 0000009015 65535 f 0000009016 65535 f 0000009017 65535 f 0000009018 65535 f 0000009019 65535 f 0000009020 65535 f 0000009021 65535 f 0000009022 65535 f 0000009023 65535 f 0000009024 65535 f 0000009025 65535 f 0000009026 65535 f 0000009027 65535 f 0000009028 65535 f 0000009029 65535 f 0000009030 65535 f 0000009031 65535 f 0000009032 65535 f 0000009033 65535 f 0000009034 65535 f 0000009035 65535 f 0000009036 65535 f 0000009037 65535 f 0000009038 65535 f 0000009039 65535 f 0000009040 65535 f 0000009041 65535 f 0000009042 65535 f 0000009043 65535 f 0000009044 65535 f 0000009045 65535 f 0000009046 65535 f 0000009047 65535 f 0000009048 65535 f 0000009049 65535 f 0000009050 65535 f 0000009051 65535 f 0000009052 65535 f 0000009053 65535 f 0000009054 65535 f 0000009055 65535 f 0000009056 65535 f 0000009057 65535 f 0000009058 65535 f 0000009059 65535 f 0000009060 65535 f 0000009061 65535 f 0000009062 65535 f 0000009063 65535 f 0000009064 65535 f 0000009065 65535 f 0000009066 65535 f 0000009067 65535 f 0000009068 65535 f 0000009069 65535 f 0000009070 65535 f 0000009071 65535 f 0000009072 65535 f 0000009073 65535 f 0000009074 65535 f 0000009075 65535 f 0000009076 65535 f 0000009077 65535 f 0000009078 65535 f 0000009079 65535 f 0000009080 65535 f 0000009081 65535 f 0000009082 65535 f 0000009083 65535 f 0000009084 65535 f 0000009085 65535 f 0000009086 65535 f 0000009087 65535 f 0000009088 65535 f 0000009089 65535 f 0000009090 65535 f 0000009091 65535 f 0000009092 65535 f 0000009093 65535 f 0000009094 65535 f 0000009095 65535 f 0000009096 65535 f 0000009097 65535 f 0000009098 65535 f 0000009099 65535 f 0000009100 65535 f 0000009101 65535 f 0000009102 65535 f 0000009103 65535 f 0000009104 65535 f 0000009105 65535 f 0000009106 65535 f 0000009107 65535 f 0000009108 65535 f 0000009109 65535 f 0000009110 65535 f 0000009111 65535 f 0000009112 65535 f 0000009113 65535 f 0000009114 65535 f 0000009115 65535 f 0000009116 65535 f 0000009117 65535 f 0000009118 65535 f 0000009119 65535 f 0000009120 65535 f 0000009121 65535 f 0000009122 65535 f 0000009123 65535 f 0000009124 65535 f 0000009125 65535 f 0000009126 65535 f 0000009127 65535 f 0000009128 65535 f 0000009129 65535 f 0000009130 65535 f 0000009131 65535 f 0000009132 65535 f 0000009133 65535 f 0000009134 65535 f 0000009135 65535 f 0000009136 65535 f 0000009137 65535 f 0000009138 65535 f 0000009139 65535 f 0000009140 65535 f 0000009141 65535 f 0000009142 65535 f 0000009143 65535 f 0000009144 65535 f 0000009145 65535 f 0000009146 65535 f 0000009147 65535 f 0000009148 65535 f 0000009149 65535 f 0000009150 65535 f 0000009151 65535 f 0000009152 65535 f 0000009153 65535 f 0000009154 65535 f 0000009155 65535 f 0000009156 65535 f 0000009157 65535 f 0000009158 65535 f 0000009159 65535 f 0000009160 65535 f 0000009161 65535 f 0000009162 65535 f 0000009163 65535 f 0000009164 65535 f 0000009165 65535 f 0000009166 65535 f 0000009167 65535 f 0000009168 65535 f 0000009169 65535 f 0000009170 65535 f 0000009171 65535 f 0000009172 65535 f 0000009173 65535 f 0000009174 65535 f 0000009175 65535 f 0000009176 65535 f 0000009177 65535 f 0000009178 65535 f 0000009179 65535 f 0000009180 65535 f 0000009181 65535 f 0000009182 65535 f 0000009183 65535 f 0000009184 65535 f 0000009185 65535 f 0000009186 65535 f 0000009187 65535 f 0000009188 65535 f 0000009189 65535 f 0000009190 65535 f 0000009191 65535 f 0000009192 65535 f 0000009193 65535 f 0000009194 65535 f 0000009195 65535 f 0000009196 65535 f 0000009197 65535 f 0000009198 65535 f 0000009199 65535 f 0000009200 65535 f 0000009201 65535 f 0000009202 65535 f 0000009203 65535 f 0000009204 65535 f 0000009205 65535 f 0000009206 65535 f 0000009207 65535 f 0000009208 65535 f 0000009209 65535 f 0000009210 65535 f 0000009211 65535 f 0000009212 65535 f 0000009213 65535 f 0000009214 65535 f 0000009215 65535 f 0000009216 65535 f 0000009217 65535 f 0000009218 65535 f 0000009219 65535 f 0000009220 65535 f 0000009221 65535 f 0000009222 65535 f 0000009223 65535 f 0000009224 65535 f 0000009225 65535 f 0000009226 65535 f 0000009227 65535 f 0000009228 65535 f 0000009229 65535 f 0000009230 65535 f 0000009231 65535 f 0000009232 65535 f 0000009233 65535 f 0000009234 65535 f 0000009235 65535 f 0000009236 65535 f 0000009237 65535 f 0000009238 65535 f 0000009239 65535 f 0000009240 65535 f 0000009241 65535 f 0000009242 65535 f 0000009243 65535 f 0000009244 65535 f 0000009245 65535 f 0000009246 65535 f 0000009247 65535 f 0000009248 65535 f 0000009249 65535 f 0000009250 65535 f 0000009251 65535 f 0000009252 65535 f 0000009253 65535 f 0000009254 65535 f 0000009255 65535 f 0000009256 65535 f 0000009257 65535 f 0000009258 65535 f 0000009259 65535 f 0000009260 65535 f 0000009261 65535 f 0000009262 65535 f 0000009263 65535 f 0000009264 65535 f 0000009265 65535 f 0000009266 65535 f 0000009267 65535 f 0000009268 65535 f 0000009269 65535 f 0000009270 65535 f 0000009271 65535 f 0000009272 65535 f 0000009273 65535 f 0000009274 65535 f 0000009275 65535 f 0000009276 65535 f 0000009277 65535 f 0000009278 65535 f 0000009279 65535 f 0000009280 65535 f 0000009281 65535 f 0000009282 65535 f 0000009283 65535 f 0000009284 65535 f 0000009285 65535 f 0000009286 65535 f 0000009287 65535 f 0000009288 65535 f 0000009289 65535 f 0000009290 65535 f 0000009291 65535 f 0000009292 65535 f 0000009293 65535 f 0000009294 65535 f 0000009295 65535 f 0000009296 65535 f 0000009297 65535 f 0000009298 65535 f 0000009299 65535 f 0000009300 65535 f 0000009301 65535 f 0000009302 65535 f 0000009303 65535 f 0000009304 65535 f 0000009305 65535 f 0000009306 65535 f 0000009307 65535 f 0000009308 65535 f 0000009309 65535 f 0000009310 65535 f 0000009311 65535 f 0000009312 65535 f 0000009313 65535 f 0000009314 65535 f 0000009315 65535 f 0000009316 65535 f 0000009317 65535 f 0000009318 65535 f 0000009319 65535 f 0000009320 65535 f 0000009321 65535 f 0000009322 65535 f 0000009323 65535 f 0000009324 65535 f 0000009325 65535 f 0000009326 65535 f 0000009327 65535 f 0000009328 65535 f 0000009329 65535 f 0000009330 65535 f 0000009331 65535 f 0000009332 65535 f 0000009333 65535 f 0000009334 65535 f 0000009335 65535 f 0000009336 65535 f 0000009337 65535 f 0000009338 65535 f 0000009339 65535 f 0000009340 65535 f 0000009341 65535 f 0000009342 65535 f 0000009343 65535 f 0000009344 65535 f 0000009345 65535 f 0000009346 65535 f 0000009347 65535 f 0000009348 65535 f 0000009349 65535 f 0000009350 65535 f 0000009351 65535 f 0000009352 65535 f 0000009353 65535 f 0000009354 65535 f 0000009355 65535 f 0000009356 65535 f 0000009357 65535 f 0000009358 65535 f 0000009359 65535 f 0000009360 65535 f 0000009361 65535 f 0000009362 65535 f 0000009363 65535 f 0000009364 65535 f 0000009365 65535 f 0000009366 65535 f 0000009367 65535 f 0000009368 65535 f 0000009369 65535 f 0000009370 65535 f 0000009371 65535 f 0000009372 65535 f 0000009373 65535 f 0000009374 65535 f 0000009375 65535 f 0000009376 65535 f 0000009377 65535 f 0000009378 65535 f 0000009379 65535 f 0000009380 65535 f 0000009381 65535 f 0000009382 65535 f 0000009383 65535 f 0000009384 65535 f 0000009385 65535 f 0000009386 65535 f 0000009387 65535 f 0000009388 65535 f 0000009389 65535 f 0000009390 65535 f 0000009391 65535 f 0000009392 65535 f 0000009393 65535 f 0000009394 65535 f 0000009395 65535 f 0000009396 65535 f 0000009397 65535 f 0000009398 65535 f 0000009399 65535 f 0000009400 65535 f 0000009401 65535 f 0000009402 65535 f 0000009403 65535 f 0000009404 65535 f 0000009405 65535 f 0000009406 65535 f 0000009407 65535 f 0000009408 65535 f 0000009409 65535 f 0000009410 65535 f 0000009411 65535 f 0000009412 65535 f 0000009413 65535 f 0000009414 65535 f 0000009415 65535 f 0000009416 65535 f 0000009417 65535 f 0000009418 65535 f 0000009419 65535 f 0000009420 65535 f 0000009421 65535 f 0000009422 65535 f 0000009423 65535 f 0000009424 65535 f 0000009425 65535 f 0000009426 65535 f 0000009427 65535 f 0000009428 65535 f 0000009429 65535 f 0000009430 65535 f 0000009431 65535 f 0000009432 65535 f 0000009433 65535 f 0000009434 65535 f 0000009435 65535 f 0000009436 65535 f 0000009437 65535 f 0000009438 65535 f 0000009439 65535 f 0000009440 65535 f 0000009441 65535 f 0000009442 65535 f 0000009443 65535 f 0000009444 65535 f 0000009445 65535 f 0000009446 65535 f 0000009447 65535 f 0000009448 65535 f 0000009449 65535 f 0000009450 65535 f 0000009451 65535 f 0000009452 65535 f 0000009453 65535 f 0000009454 65535 f 0000009455 65535 f 0000009456 65535 f 0000009457 65535 f 0000009458 65535 f 0000009459 65535 f 0000009460 65535 f 0000009461 65535 f 0000009462 65535 f 0000009463 65535 f 0000009464 65535 f 0000009465 65535 f 0000009466 65535 f 0000009467 65535 f 0000009468 65535 f 0000009469 65535 f 0000009470 65535 f 0000009471 65535 f 0000009472 65535 f 0000009473 65535 f 0000009474 65535 f 0000009475 65535 f 0000009476 65535 f 0000009477 65535 f 0000009478 65535 f 0000009479 65535 f 0000009480 65535 f 0000009481 65535 f 0000009482 65535 f 0000009483 65535 f 0000009484 65535 f 0000009485 65535 f 0000009486 65535 f 0000009487 65535 f 0000009488 65535 f 0000009489 65535 f 0000009490 65535 f 0000009491 65535 f 0000009492 65535 f 0000009493 65535 f 0000009494 65535 f 0000009495 65535 f 0000009496 65535 f 0000009497 65535 f 0000009498 65535 f 0000009499 65535 f 0000009500 65535 f 0000009501 65535 f 0000009502 65535 f 0000009503 65535 f 0000009504 65535 f 0000009505 65535 f 0000009506 65535 f 0000009507 65535 f 0000009508 65535 f 0000009509 65535 f 0000009510 65535 f 0000009511 65535 f 0000009512 65535 f 0000009513 65535 f 0000009514 65535 f 0000009515 65535 f 0000009516 65535 f 0000009517 65535 f 0000009518 65535 f 0000009519 65535 f 0000009520 65535 f 0000009521 65535 f 0000009522 65535 f 0000009523 65535 f 0000009524 65535 f 0000009525 65535 f 0000009526 65535 f 0000009527 65535 f 0000009528 65535 f 0000009529 65535 f 0000009530 65535 f 0000009531 65535 f 0000009532 65535 f 0000009533 65535 f 0000009534 65535 f 0000009535 65535 f 0000009536 65535 f 0000009537 65535 f 0000009538 65535 f 0000009539 65535 f 0000009540 65535 f 0000009541 65535 f 0000009542 65535 f 0000009543 65535 f 0000009544 65535 f 0000009545 65535 f 0000009546 65535 f 0000009547 65535 f 0000009548 65535 f 0000009549 65535 f 0000009550 65535 f 0000009551 65535 f 0000009552 65535 f 0000009553 65535 f 0000009554 65535 f 0000009555 65535 f 0000009556 65535 f 0000009557 65535 f 0000009558 65535 f 0000009559 65535 f 0000009560 65535 f 0000009561 65535 f 0000009562 65535 f 0000009563 65535 f 0000009564 65535 f 0000009565 65535 f 0000009566 65535 f 0000009567 65535 f 0000009568 65535 f 0000009569 65535 f 0000009570 65535 f 0000009571 65535 f 0000009572 65535 f 0000009573 65535 f 0000009574 65535 f 0000009575 65535 f 0000009576 65535 f 0000009577 65535 f 0000009578 65535 f 0000009579 65535 f 0000009580 65535 f 0000009581 65535 f 0000009582 65535 f 0000009583 65535 f 0000009584 65535 f 0000009585 65535 f 0000009586 65535 f 0000009587 65535 f 0000009588 65535 f 0000009589 65535 f 0000009590 65535 f 0000009591 65535 f 0000009592 65535 f 0000009593 65535 f 0000009594 65535 f 0000009595 65535 f 0000009596 65535 f 0000009597 65535 f 0000009598 65535 f 0000009599 65535 f 0000009600 65535 f 0000009601 65535 f 0000009602 65535 f 0000009603 65535 f 0000009604 65535 f 0000009605 65535 f 0000009606 65535 f 0000009607 65535 f 0000009608 65535 f 0000009609 65535 f 0000009610 65535 f 0000009611 65535 f 0000009612 65535 f 0000009613 65535 f 0000009614 65535 f 0000009615 65535 f 0000009616 65535 f 0000009617 65535 f 0000009618 65535 f 0000009619 65535 f 0000009620 65535 f 0000009621 65535 f 0000009622 65535 f 0000009623 65535 f 0000009624 65535 f 0000009625 65535 f 0000009626 65535 f 0000009627 65535 f 0000009628 65535 f 0000009629 65535 f 0000009630 65535 f 0000009631 65535 f 0000009632 65535 f 0000009633 65535 f 0000009634 65535 f 0000009635 65535 f 0000009636 65535 f 0000009637 65535 f 0000009638 65535 f 0000009639 65535 f 0000009640 65535 f 0000009641 65535 f 0000009642 65535 f 0000009643 65535 f 0000009644 65535 f 0000009645 65535 f 0000009646 65535 f 0000009647 65535 f 0000009648 65535 f 0000009649 65535 f 0000009650 65535 f 0000009651 65535 f 0000009652 65535 f 0000009653 65535 f 0000009654 65535 f 0000009655 65535 f 0000009656 65535 f 0000009657 65535 f 0000009658 65535 f 0000009659 65535 f 0000009660 65535 f 0000009661 65535 f 0000009662 65535 f 0000009663 65535 f 0000009664 65535 f 0000009665 65535 f 0000009666 65535 f 0000009667 65535 f 0000009668 65535 f 0000009669 65535 f 0000009670 65535 f 0000009671 65535 f 0000009672 65535 f 0000009673 65535 f 0000009674 65535 f 0000009675 65535 f 0000009676 65535 f 0000009677 65535 f 0000009678 65535 f 0000009679 65535 f 0000009680 65535 f 0000009681 65535 f 0000009682 65535 f 0000009683 65535 f 0000009684 65535 f 0000009685 65535 f 0000009686 65535 f 0000009687 65535 f 0000009688 65535 f 0000009689 65535 f 0000009690 65535 f 0000009691 65535 f 0000009692 65535 f 0000009693 65535 f 0000009694 65535 f 0000009695 65535 f 0000009696 65535 f 0000009697 65535 f 0000009698 65535 f 0000009699 65535 f 0000009700 65535 f 0000009701 65535 f 0000009702 65535 f 0000009703 65535 f 0000009704 65535 f 0000009705 65535 f 0000009706 65535 f 0000009707 65535 f 0000009708 65535 f 0000009709 65535 f 0000009710 65535 f 0000009711 65535 f 0000009712 65535 f 0000009713 65535 f 0000009714 65535 f 0000009715 65535 f 0000009716 65535 f 0000009717 65535 f 0000009718 65535 f 0000009719 65535 f 0000009720 65535 f 0000009721 65535 f 0000009722 65535 f 0000009723 65535 f 0000009724 65535 f 0000009725 65535 f 0000009726 65535 f 0000009727 65535 f 0000009728 65535 f 0000009729 65535 f 0000009730 65535 f 0000009731 65535 f 0000009732 65535 f 0000009733 65535 f 0000009734 65535 f 0000009735 65535 f 0000009736 65535 f 0000009737 65535 f 0000009738 65535 f 0000009739 65535 f 0000009740 65535 f 0000009741 65535 f 0000009742 65535 f 0000009743 65535 f 0000009744 65535 f 0000009745 65535 f 0000009746 65535 f 0000009747 65535 f 0000009748 65535 f 0000009749 65535 f 0000009750 65535 f 0000009751 65535 f 0000009752 65535 f 0000009753 65535 f 0000009754 65535 f 0000009755 65535 f 0000009756 65535 f 0000009757 65535 f 0000009758 65535 f 0000009759 65535 f 0000009760 65535 f 0000009761 65535 f 0000009762 65535 f 0000009763 65535 f 0000009764 65535 f 0000009765 65535 f 0000009766 65535 f 0000009767 65535 f 0000009768 65535 f 0000009769 65535 f 0000009770 65535 f 0000009771 65535 f 0000009772 65535 f 0000009773 65535 f 0000009774 65535 f 0000009775 65535 f 0000009776 65535 f 0000009777 65535 f 0000009778 65535 f 0000009779 65535 f 0000009780 65535 f 0000009781 65535 f 0000009782 65535 f 0000009783 65535 f 0000009784 65535 f 0000009785 65535 f 0000009786 65535 f 0000009787 65535 f 0000009788 65535 f 0000009789 65535 f 0000009790 65535 f 0000009791 65535 f 0000009792 65535 f 0000009793 65535 f 0000009794 65535 f 0000009795 65535 f 0000009796 65535 f 0000009797 65535 f 0000009798 65535 f 0000009799 65535 f 0000009800 65535 f 0000009801 65535 f 0000009802 65535 f 0000009803 65535 f 0000009804 65535 f 0000009805 65535 f 0000009806 65535 f 0000009807 65535 f 0000009808 65535 f 0000009809 65535 f 0000009810 65535 f 0000009811 65535 f 0000009812 65535 f 0000009813 65535 f 0000009814 65535 f 0000009815 65535 f 0000009816 65535 f 0000009817 65535 f 0000009818 65535 f 0000009819 65535 f 0000009820 65535 f 0000009821 65535 f 0000009822 65535 f 0000009823 65535 f 0000009824 65535 f 0000009825 65535 f 0000009826 65535 f 0000009827 65535 f 0000009828 65535 f 0000009829 65535 f 0000009830 65535 f 0000009831 65535 f 0000009832 65535 f 0000009833 65535 f 0000009834 65535 f 0000009835 65535 f 0000009836 65535 f 0000009837 65535 f 0000009838 65535 f 0000009839 65535 f 0000009840 65535 f 0000009841 65535 f 0000009842 65535 f 0000009843 65535 f 0000009844 65535 f 0000009845 65535 f 0000009846 65535 f 0000009847 65535 f 0000009848 65535 f 0000009849 65535 f 0000009850 65535 f 0000009851 65535 f 0000009852 65535 f 0000009853 65535 f 0000009854 65535 f 0000009855 65535 f 0000009856 65535 f 0000009857 65535 f 0000009858 65535 f 0000009859 65535 f 0000009860 65535 f 0000009861 65535 f 0000009862 65535 f 0000009863 65535 f 0000009864 65535 f 0000009865 65535 f 0000009866 65535 f 0000009867 65535 f 0000009868 65535 f 0000009869 65535 f 0000009870 65535 f 0000009871 65535 f 0000009872 65535 f 0000009873 65535 f 0000009874 65535 f 0000009875 65535 f 0000009876 65535 f 0000009877 65535 f 0000009878 65535 f 0000009879 65535 f 0000009880 65535 f 0000009881 65535 f 0000009882 65535 f 0000009883 65535 f 0000009884 65535 f 0000009885 65535 f 0000009886 65535 f 0000009887 65535 f 0000009888 65535 f 0000009889 65535 f 0000009890 65535 f 0000009891 65535 f 0000009892 65535 f 0000009893 65535 f 0000009894 65535 f 0000009895 65535 f 0000009896 65535 f 0000009897 65535 f 0000009898 65535 f 0000009899 65535 f 0000009900 65535 f 0000009901 65535 f 0000009902 65535 f 0000009903 65535 f 0000009904 65535 f 0000009905 65535 f 0000009906 65535 f 0000009907 65535 f 0000009908 65535 f 0000009909 65535 f 0000009910 65535 f 0000009911 65535 f 0000009912 65535 f 0000009913 65535 f 0000009914 65535 f 0000009915 65535 f 0000009916 65535 f 0000009917 65535 f 0000009918 65535 f 0000009919 65535 f 0000009920 65535 f 0000009921 65535 f 0000009922 65535 f 0000009923 65535 f 0000009924 65535 f 0000009925 65535 f 0000009926 65535 f 0000009927 65535 f 0000009928 65535 f 0000009929 65535 f 0000009930 65535 f 0000009931 65535 f 0000009932 65535 f 0000009933 65535 f 0000009934 65535 f 0000009935 65535 f 0000009936 65535 f 0000009937 65535 f 0000009938 65535 f 0000009939 65535 f 0000009940 65535 f 0000009941 65535 f 0000009942 65535 f 0000009943 65535 f 0000009944 65535 f 0000009945 65535 f 0000009946 65535 f 0000009947 65535 f 0000009948 65535 f 0000009949 65535 f 0000009950 65535 f 0000009951 65535 f 0000009952 65535 f 0000009953 65535 f 0000009954 65535 f 0000009955 65535 f 0000009956 65535 f 0000009957 65535 f 0000009958 65535 f 0000009959 65535 f 0000009960 65535 f 0000009961 65535 f 0000009962 65535 f 0000009963 65535 f 0000009964 65535 f 0000009965 65535 f 0000009966 65535 f 0000009967 65535 f 0000009968 65535 f 0000009969 65535 f 0000009970 65535 f 0000009971 65535 f 0000009972 65535 f 0000009973 65535 f 0000009974 65535 f 0000009975 65535 f 0000009976 65535 f 0000009977 65535 f 0000009978 65535 f 0000009979 65535 f 0000009980 65535 f 0000009981 65535 f 0000009982 65535 f 0000009983 65535 f 0000009984 65535 f 0000009985 65535 f 0000009986 65535 f 0000009987 65535 f 0000009988 65535 f 0000009989 65535 f 0000009990 65535 f 0000009991 65535 f 0000009992 65535 f 0000009993 65535 f 0000009994 65535 f 0000009995 65535 f 0000009996 65535 f 0000009997 65535 f 0000009998 65535 f 0000009999 65535 f 0000010000 65535 f 0000010001 65535 f 0000010002 65535 f 0000010003 65535 f 0000010004 65535 f 0000010005 65535 f 0000010006 65535 f 0000010007 65535 f 0000010008 65535 f 0000010009 65535 f 0000010010 65535 f 0000010011 65535 f 0000010012 65535 f 0000010013 65535 f 0000010014 65535 f 0000010015 65535 f 0000010016 65535 f 0000010017 65535 f 0000010018 65535 f 0000010019 65535 f 0000010020 65535 f 0000010021 65535 f 0000010022 65535 f 0000010023 65535 f 0000010024 65535 f 0000010025 65535 f 0000010026 65535 f 0000010027 65535 f 0000010028 65535 f 0000010029 65535 f 0000010030 65535 f 0000010031 65535 f 0000010032 65535 f 0000010033 65535 f 0000010034 65535 f 0000010035 65535 f 0000010036 65535 f 0000010037 65535 f 0000010038 65535 f 0000010039 65535 f 0000010040 65535 f 0000010041 65535 f 0000010042 65535 f 0000010043 65535 f 0000010044 65535 f 0000010045 65535 f 0000010046 65535 f 0000010047 65535 f 0000010048 65535 f 0000010049 65535 f 0000010050 65535 f 0000010051 65535 f 0000010052 65535 f 0000010053 65535 f 0000010054 65535 f 0000010055 65535 f 0000010056 65535 f 0000010057 65535 f 0000010058 65535 f 0000010059 65535 f 0000010060 65535 f 0000010061 65535 f 0000010062 65535 f 0000010063 65535 f 0000010064 65535 f 0000010065 65535 f 0000010066 65535 f 0000010067 65535 f 0000010068 65535 f 0000010069 65535 f 0000010070 65535 f 0000010071 65535 f 0000010072 65535 f 0000010073 65535 f 0000010074 65535 f 0000010075 65535 f 0000010076 65535 f 0000010077 65535 f 0000010078 65535 f 0000010079 65535 f 0000010080 65535 f 0000010081 65535 f 0000010082 65535 f 0000010083 65535 f 0000010084 65535 f 0000010085 65535 f 0000010086 65535 f 0000010087 65535 f 0000010088 65535 f 0000010089 65535 f 0000010090 65535 f 0000010091 65535 f 0000010092 65535 f 0000010093 65535 f 0000010094 65535 f 0000010095 65535 f 0000010096 65535 f 0000010097 65535 f 0000010098 65535 f 0000010099 65535 f 0000010100 65535 f 0000010101 65535 f 0000010102 65535 f 0000010103 65535 f 0000010104 65535 f 0000010105 65535 f 0000010106 65535 f 0000010107 65535 f 0000010108 65535 f 0000010109 65535 f 0000010110 65535 f 0000010111 65535 f 0000010112 65535 f 0000010113 65535 f 0000010114 65535 f 0000010115 65535 f 0000010116 65535 f 0000010117 65535 f 0000010118 65535 f 0000010119 65535 f 0000010120 65535 f 0000010121 65535 f 0000010122 65535 f 0000010123 65535 f 0000010124 65535 f 0000010125 65535 f 0000010126 65535 f 0000010127 65535 f 0000010128 65535 f 0000010129 65535 f 0000010130 65535 f 0000010131 65535 f 0000010132 65535 f 0000010133 65535 f 0000010134 65535 f 0000010135 65535 f 0000010136 65535 f 0000010137 65535 f 0000010138 65535 f 0000010139 65535 f 0000010140 65535 f 0000010141 65535 f 0000010142 65535 f 0000010143 65535 f 0000010144 65535 f 0000010145 65535 f 0000010146 65535 f 0000010147 65535 f 0000010148 65535 f 0000010149 65535 f 0000010150 65535 f 0000010151 65535 f 0000010152 65535 f 0000010153 65535 f 0000010154 65535 f 0000010155 65535 f 0000010156 65535 f 0000010157 65535 f 0000010158 65535 f 0000010159 65535 f 0000010160 65535 f 0000010161 65535 f 0000010162 65535 f 0000010163 65535 f 0000010164 65535 f 0000010165 65535 f 0000010166 65535 f 0000010167 65535 f 0000010168 65535 f 0000010169 65535 f 0000010170 65535 f 0000010171 65535 f 0000010172 65535 f 0000010173 65535 f 0000010174 65535 f 0000010175 65535 f 0000010176 65535 f 0000010177 65535 f 0000010178 65535 f 0000010179 65535 f 0000010180 65535 f 0000010181 65535 f 0000010182 65535 f 0000010183 65535 f 0000010184 65535 f 0000010185 65535 f 0000010186 65535 f 0000010187 65535 f 0000010188 65535 f 0000010189 65535 f 0000010190 65535 f 0000010191 65535 f 0000010192 65535 f 0000010193 65535 f 0000010194 65535 f 0000010195 65535 f 0000010196 65535 f 0000010197 65535 f 0000010198 65535 f 0000010199 65535 f 0000010200 65535 f 0000010201 65535 f 0000010202 65535 f 0000010203 65535 f 0000010204 65535 f 0000010205 65535 f 0000010206 65535 f 0000010207 65535 f 0000010208 65535 f 0000010209 65535 f 0000010210 65535 f 0000010211 65535 f 0000010212 65535 f 0000010213 65535 f 0000010214 65535 f 0000010215 65535 f 0000010216 65535 f 0000010217 65535 f 0000010218 65535 f 0000010219 65535 f 0000010220 65535 f 0000010221 65535 f 0000010222 65535 f 0000010223 65535 f 0000010224 65535 f 0000010225 65535 f 0000010226 65535 f 0000010227 65535 f 0000010228 65535 f 0000010229 65535 f 0000010230 65535 f 0000010231 65535 f 0000010232 65535 f 0000010233 65535 f 0000010234 65535 f 0000010235 65535 f 0000010236 65535 f 0000010237 65535 f 0000010238 65535 f 0000010239 65535 f 0000010240 65535 f 0000010241 65535 f 0000010242 65535 f 0000010243 65535 f 0000010244 65535 f 0000010245 65535 f 0000010246 65535 f 0000010247 65535 f 0000010248 65535 f 0000010249 65535 f 0000010250 65535 f 0000010251 65535 f 0000010252 65535 f 0000010253 65535 f 0000010254 65535 f 0000010255 65535 f 0000010256 65535 f 0000010257 65535 f 0000010258 65535 f 0000010259 65535 f 0000010260 65535 f 0000010261 65535 f 0000010262 65535 f 0000010263 65535 f 0000010264 65535 f 0000010265 65535 f 0000010266 65535 f 0000010267 65535 f 0000010268 65535 f 0000010269 65535 f 0000010270 65535 f 0000010271 65535 f 0000010272 65535 f 0000010273 65535 f 0000010274 65535 f 0000010275 65535 f 0000010276 65535 f 0000010277 65535 f 0000010278 65535 f 0000010279 65535 f 0000010280 65535 f 0000010281 65535 f 0000010282 65535 f 0000010283 65535 f 0000010284 65535 f 0000010285 65535 f 0000010286 65535 f 0000010287 65535 f 0000010288 65535 f 0000010289 65535 f 0000010290 65535 f 0000010291 65535 f 0000010292 65535 f 0000010293 65535 f 0000010294 65535 f 0000010295 65535 f 0000010296 65535 f 0000010297 65535 f 0000010298 65535 f 0000010299 65535 f 0000010300 65535 f 0000010301 65535 f 0000010302 65535 f 0000010303 65535 f 0000010304 65535 f 0000010305 65535 f 0000010306 65535 f 0000010307 65535 f 0000010308 65535 f 0000010309 65535 f 0000010310 65535 f 0000010311 65535 f 0000010312 65535 f 0000010313 65535 f 0000010314 65535 f 0000010315 65535 f 0000010316 65535 f 0000010317 65535 f 0000010318 65535 f 0000010319 65535 f 0000010320 65535 f 0000010321 65535 f 0000010322 65535 f 0000010323 65535 f 0000010324 65535 f 0000010325 65535 f 0000010326 65535 f 0000010327 65535 f 0000010328 65535 f 0000010329 65535 f 0000010330 65535 f 0000010331 65535 f 0000010332 65535 f 0000010333 65535 f 0000010334 65535 f 0000010335 65535 f 0000010336 65535 f 0000010337 65535 f 0000010338 65535 f 0000010339 65535 f 0000010340 65535 f 0000010341 65535 f 0000010342 65535 f 0000010343 65535 f 0000010344 65535 f 0000010345 65535 f 0000010346 65535 f 0000010347 65535 f 0000010348 65535 f 0000010349 65535 f 0000010350 65535 f 0000010351 65535 f 0000010352 65535 f 0000010353 65535 f 0000010354 65535 f 0000010355 65535 f 0000010356 65535 f 0000010357 65535 f 0000010358 65535 f 0000010359 65535 f 0000010360 65535 f 0000010361 65535 f 0000010362 65535 f 0000010363 65535 f 0000010364 65535 f 0000010365 65535 f 0000010366 65535 f 0000010367 65535 f 0000010368 65535 f 0000010369 65535 f 0000010370 65535 f 0000010371 65535 f 0000010372 65535 f 0000010373 65535 f 0000010374 65535 f 0000010375 65535 f 0000010376 65535 f 0000010377 65535 f 0000010378 65535 f 0000010379 65535 f 0000010380 65535 f 0000010381 65535 f 0000010382 65535 f 0000010383 65535 f 0000010384 65535 f 0000010385 65535 f 0000010386 65535 f 0000010387 65535 f 0000010388 65535 f 0000010389 65535 f 0000010390 65535 f 0000010391 65535 f 0000010392 65535 f 0000010393 65535 f 0000010394 65535 f 0000010395 65535 f 0000010396 65535 f 0000010397 65535 f 0000010398 65535 f 0000010399 65535 f 0000010400 65535 f 0000010401 65535 f 0000010402 65535 f 0000010403 65535 f 0000010404 65535 f 0000010405 65535 f 0000010406 65535 f 0000010407 65535 f 0000010408 65535 f 0000010409 65535 f 0000010410 65535 f 0000010411 65535 f 0000010412 65535 f 0000010413 65535 f 0000010414 65535 f 0000010415 65535 f 0000010416 65535 f 0000010417 65535 f 0000010418 65535 f 0000010419 65535 f 0000010420 65535 f 0000010421 65535 f 0000010422 65535 f 0000010423 65535 f 0000010424 65535 f 0000010425 65535 f 0000010426 65535 f 0000010427 65535 f 0000010428 65535 f 0000010429 65535 f 0000010430 65535 f 0000010431 65535 f 0000010432 65535 f 0000010433 65535 f 0000010434 65535 f 0000010435 65535 f 0000010436 65535 f 0000010437 65535 f 0000010438 65535 f 0000010439 65535 f 0000010440 65535 f 0000010441 65535 f 0000010442 65535 f 0000010443 65535 f 0000010444 65535 f 0000010445 65535 f 0000010446 65535 f 0000010447 65535 f 0000010448 65535 f 0000010449 65535 f 0000010450 65535 f 0000010451 65535 f 0000010452 65535 f 0000010453 65535 f 0000010454 65535 f 0000010455 65535 f 0000010456 65535 f 0000010457 65535 f 0000010458 65535 f 0000010459 65535 f 0000010460 65535 f 0000010461 65535 f 0000010462 65535 f 0000010463 65535 f 0000010464 65535 f 0000010465 65535 f 0000010466 65535 f 0000010467 65535 f 0000010468 65535 f 0000010469 65535 f 0000010470 65535 f 0000010471 65535 f 0000010472 65535 f 0000010473 65535 f 0000010474 65535 f 0000010475 65535 f 0000010476 65535 f 0000010477 65535 f 0000010478 65535 f 0000010479 65535 f 0000010480 65535 f 0000010481 65535 f 0000010482 65535 f 0000010483 65535 f 0000010484 65535 f 0000010485 65535 f 0000010486 65535 f 0000010487 65535 f 0000010488 65535 f 0000010489 65535 f 0000010490 65535 f 0000010491 65535 f 0000010492 65535 f 0000010493 65535 f 0000010494 65535 f 0000010495 65535 f 0000010496 65535 f 0000010497 65535 f 0000010498 65535 f 0000010499 65535 f 0000010500 65535 f 0000010501 65535 f 0000010502 65535 f 0000010503 65535 f 0000010504 65535 f 0000010505 65535 f 0000010506 65535 f 0000010507 65535 f 0000010508 65535 f 0000010509 65535 f 0000010510 65535 f 0000010511 65535 f 0000010512 65535 f 0000010513 65535 f 0000010514 65535 f 0000010515 65535 f 0000010516 65535 f 0000010517 65535 f 0000010518 65535 f 0000010519 65535 f 0000010520 65535 f 0000010521 65535 f 0000010522 65535 f 0000010523 65535 f 0000010524 65535 f 0000010525 65535 f 0000010526 65535 f 0000010527 65535 f 0000010528 65535 f 0000010529 65535 f 0000010530 65535 f 0000010531 65535 f 0000010532 65535 f 0000010533 65535 f 0000010534 65535 f 0000010535 65535 f 0000010536 65535 f 0000010537 65535 f 0000010538 65535 f 0000010539 65535 f 0000010540 65535 f 0000010541 65535 f 0000010542 65535 f 0000010543 65535 f 0000010544 65535 f 0000010545 65535 f 0000010546 65535 f 0000010547 65535 f 0000010548 65535 f 0000010549 65535 f 0000010550 65535 f 0000010551 65535 f 0000010552 65535 f 0000010553 65535 f 0000010554 65535 f 0000010555 65535 f 0000010556 65535 f 0000010557 65535 f 0000010558 65535 f 0000010559 65535 f 0000010560 65535 f 0000010561 65535 f 0000010562 65535 f 0000010563 65535 f 0000010564 65535 f 0000010565 65535 f 0000010566 65535 f 0000010567 65535 f 0000010568 65535 f 0000010569 65535 f 0000010570 65535 f 0000010571 65535 f 0000010572 65535 f 0000010573 65535 f 0000010574 65535 f 0000010575 65535 f 0000010576 65535 f 0000010577 65535 f 0000010578 65535 f 0000010579 65535 f 0000010580 65535 f 0000010581 65535 f 0000010582 65535 f 0000010583 65535 f 0000010584 65535 f 0000010585 65535 f 0000010586 65535 f 0000010587 65535 f 0000010588 65535 f 0000010589 65535 f 0000010590 65535 f 0000010591 65535 f 0000010592 65535 f 0000010593 65535 f 0000010594 65535 f 0000010595 65535 f 0000010596 65535 f 0000010597 65535 f 0000010598 65535 f 0000010599 65535 f 0000010600 65535 f 0000010601 65535 f 0000010602 65535 f 0000010603 65535 f 0000010604 65535 f 0000010605 65535 f 0000010606 65535 f 0000010607 65535 f 0000010608 65535 f 0000010609 65535 f 0000010610 65535 f 0000010611 65535 f 0000010612 65535 f 0000010613 65535 f 0000010614 65535 f 0000010615 65535 f 0000010616 65535 f 0000010617 65535 f 0000010618 65535 f 0000010619 65535 f 0000010620 65535 f 0000010621 65535 f 0000010622 65535 f 0000010623 65535 f 0000010624 65535 f 0000010625 65535 f 0000010626 65535 f 0000010627 65535 f 0000010628 65535 f 0000010629 65535 f 0000010630 65535 f 0000010631 65535 f 0000010632 65535 f 0000010633 65535 f 0000010634 65535 f 0000010635 65535 f 0000010636 65535 f 0000010637 65535 f 0000010638 65535 f 0000010639 65535 f 0000010640 65535 f 0000010641 65535 f 0000010642 65535 f 0000010643 65535 f 0000010644 65535 f 0000010645 65535 f 0000010646 65535 f 0000010647 65535 f 0000010648 65535 f 0000010649 65535 f 0000010650 65535 f 0000010651 65535 f 0000010652 65535 f 0000010653 65535 f 0000010654 65535 f 0000010655 65535 f 0000010656 65535 f 0000010657 65535 f 0000010658 65535 f 0000010659 65535 f 0000010660 65535 f 0000010661 65535 f 0000010662 65535 f 0000010663 65535 f 0000010664 65535 f 0000010665 65535 f 0000010666 65535 f 0000010667 65535 f 0000010668 65535 f 0000010669 65535 f 0000010670 65535 f 0000010671 65535 f 0000010672 65535 f 0000010673 65535 f 0000010674 65535 f 0000010675 65535 f 0000010676 65535 f 0000010677 65535 f 0000010678 65535 f 0000010679 65535 f 0000010680 65535 f 0000010681 65535 f 0000010682 65535 f 0000010683 65535 f 0000010684 65535 f 0000010685 65535 f 0000010686 65535 f 0000010687 65535 f 0000010688 65535 f 0000010689 65535 f 0000010690 65535 f 0000010691 65535 f 0000010692 65535 f 0000010693 65535 f 0000010694 65535 f 0000010695 65535 f 0000010696 65535 f 0000010697 65535 f 0000010698 65535 f 0000010699 65535 f 0000010700 65535 f 0000010701 65535 f 0000010702 65535 f 0000010703 65535 f 0000010704 65535 f 0000010705 65535 f 0000010706 65535 f 0000010707 65535 f 0000010708 65535 f 0000010709 65535 f 0000010710 65535 f 0000010711 65535 f 0000010712 65535 f 0000010713 65535 f 0000010714 65535 f 0000010715 65535 f 0000010716 65535 f 0000010717 65535 f 0000010718 65535 f 0000010719 65535 f 0000010720 65535 f 0000010721 65535 f 0000010722 65535 f 0000010723 65535 f 0000010724 65535 f 0000010725 65535 f 0000010726 65535 f 0000010727 65535 f 0000010728 65535 f 0000010729 65535 f 0000010730 65535 f 0000010731 65535 f 0000010732 65535 f 0000010733 65535 f 0000010734 65535 f 0000010735 65535 f 0000010736 65535 f 0000010737 65535 f 0000010738 65535 f 0000010739 65535 f 0000010740 65535 f 0000010741 65535 f 0000010742 65535 f 0000010743 65535 f 0000010744 65535 f 0000010745 65535 f 0000010746 65535 f 0000010747 65535 f 0000010748 65535 f 0000010749 65535 f 0000010750 65535 f 0000010751 65535 f 0000010752 65535 f 0000010753 65535 f 0000010754 65535 f 0000010755 65535 f 0000010756 65535 f 0000010757 65535 f 0000010758 65535 f 0000010759 65535 f 0000010760 65535 f 0000010761 65535 f 0000010762 65535 f 0000010763 65535 f 0000010764 65535 f 0000010765 65535 f 0000010766 65535 f 0000010767 65535 f 0000010768 65535 f 0000010769 65535 f 0000010770 65535 f 0000010771 65535 f 0000010772 65535 f 0000010773 65535 f 0000010774 65535 f 0000010775 65535 f 0000010776 65535 f 0000010777 65535 f 0000010778 65535 f 0000010779 65535 f 0000010780 65535 f 0000010781 65535 f 0000010782 65535 f 0000010783 65535 f 0000010784 65535 f 0000010785 65535 f 0000010786 65535 f 0000010787 65535 f 0000010788 65535 f 0000010789 65535 f 0000010790 65535 f 0000010791 65535 f 0000010792 65535 f 0000010793 65535 f 0000010794 65535 f 0000010795 65535 f 0000010796 65535 f 0000010797 65535 f 0000010798 65535 f 0000010799 65535 f 0000010800 65535 f 0000010801 65535 f 0000010802 65535 f 0000010803 65535 f 0000010804 65535 f 0000010805 65535 f 0000010806 65535 f 0000010807 65535 f 0000010808 65535 f 0000010809 65535 f 0000010810 65535 f 0000010811 65535 f 0000010812 65535 f 0000010813 65535 f 0000010814 65535 f 0000010815 65535 f 0000010816 65535 f 0000010817 65535 f 0000010818 65535 f 0000010819 65535 f 0000010820 65535 f 0000010821 65535 f 0000010822 65535 f 0000010823 65535 f 0000010824 65535 f 0000010825 65535 f 0000010826 65535 f 0000010827 65535 f 0000010828 65535 f 0000010829 65535 f 0000010830 65535 f 0000010831 65535 f 0000010832 65535 f 0000010833 65535 f 0000010834 65535 f 0000010835 65535 f 0000010836 65535 f 0000010837 65535 f 0000010838 65535 f 0000010839 65535 f 0000010840 65535 f 0000010841 65535 f 0000010842 65535 f 0000010843 65535 f 0000010844 65535 f 0000010845 65535 f 0000010846 65535 f 0000010847 65535 f 0000010848 65535 f 0000010849 65535 f 0000010850 65535 f 0000010851 65535 f 0000010852 65535 f 0000000000 65535 f 0000796508 00000 n 0000796806 00000 n 0000901369 00000 n 0000902002 00000 n 0001003138 00000 n 0001004013 00000 n 0001004533 00000 n 0001004701 00000 n 0001037362 00000 n 0001037716 00000 n 0001148946 00000 n 0001149544 00000 n 0001281834 00000 n 0001282580 00000 n 0001283074 00000 n 0001283457 00000 n 0001330172 00000 n 0001330609 00000 n 0001330993 00000 n 0001331427 00000 n 0001439643 00000 n 0001439948 00000 n 0001495434 00000 n 0001495763 00000 n 0001496063 00000 n 0001496403 00000 n 0001584255 00000 n 0001584754 00000 n 0001585052 00000 n 0001585362 00000 n 0001707904 00000 n 0001708126 00000 n 0001708156 00000 n 0001727116 00000 n 0001727146 00000 n 0001756048 00000 n 0001756350 00000 n 0001769600 00000 n 0001769646 00000 n 0001769876 00000 n 0001864169 00000 n 0001864474 00000 n 0001909471 00000 n 0001909660 00000 n 0001909892 00000 n 0001909922 00000 n 0001930578 00000 n 0001930890 00000 n 0001943453 00000 n 0001943509 00000 n 0001943886 00000 n 0001984984 00000 n 0001985231 00000 n 0001985505 00000 n 0001985779 00000 n 0001986084 00000 n 0001996510 00000 n 0001996557 00000 n 0001996587 00000 n 0002000020 00000 n 0002000050 00000 n 0002003516 00000 n 0002003983 00000 n 0002114313 00000 n 0002114652 00000 n 0002114682 00000 n trailer <<6FF6D0152650B64DBE4A908BBA0B633C>] >> startxref 2136041 %%EOF xref 0 0 trailer <<6FF6D0152650B64DBE4A908BBA0B633C>] /Prev 2136041/XRefStm 2114682>> startxref 2354587 %%EOFlcms2-2.5/doc/src.zip0000755002406300000240000145530012163060730014016 0ustar mariamausersPKo>GL:LittleCMS2.2 API.rtf]ݓ6w|slw*&n%\U(kL\_ HH5CJkHǸj(Nv>O^uFmp|ڲOALn~ț>{C&dx6}J_56uݿx_MĎ.}U&ENxX?_Ǥ(Բ1ml~0۴~N_o$HY]OIfo,ɿyypGܥՐ=$ R!@uy" Rx̚N EB2x|p)sJ=O7i~66i !u--2X+I .a5j0E,*2JPjoEOØoY~?u+#B:U8GTgR9zkCI>OƊ_8~o1F/7)$zd`$Gr??Jp¬(~?葋訧q\NӼnߞ a~@-z,f_ml1(Ms*9Dm}¤KN:2-Cـ0<=cvtV %-ӭvǝЁvU4F5 7i&%TCnsYeŮeLc I$w]7fS:աM]Dtt+S2! 0eپ]T`i^ZҺnՙf{ urd l-%AMjnȶr >R=E23 hKh1qgwB.:1Gߟ;V>ؓ{|zVWHtуCMIqdRM,2Oj5^WJ-bZ뜄AJmO!E@9߈u AY/r3{p\=e]x>sW(9,+`;6R]ȇF> JSVr4ǚNjӒ M/xm2ŷUɶ_ιPx4=m;M)! hO^n?@/҃bm*¡t t%ۺqllk>`s !{c,ȑ]0__෈#{|}' O'G* lMyiofBݬҺO|mXP?MA'05aj VAmr,t]4CpZ{`ֶhm=3vų#z''Q  i(uPmevN_* 'ؑpX<%3nHX%$alt.B t"s]jlM;E ]] y'=|F4QeBWQ".#ȚAA- J]+28ŻCQ@w $u+<0jyQ\x?]!Gqx&oPu+$Kq=(A'&L7N&&I7NM™Ȇہc ǦSolfdq064'(764PbT*!u͊ WkZtjd&|F"ߌnDKgx23GpgΨTVԨF61*J9ǤҝiTF5tIQ9nTFT a'HH|VdY#QD]|$:@hCDg]ɸWDh"}Ȑ\y yc ➜vd6dHTV=y4!sLj,ݙF%ZoTCJ=F%QYiT2j7*9F5uI<˨$JGy]R20ޏuvM?q5d`-< !=OG`+(Q΀*[Q#Y-7GXԀVΠ 0#uz8  `{Ok 8!0fP?…%=SN)>""HH l_ =Z> 1 s? `邈@s !ĕpN}9,"Vj@4&K's+%,á_M]T-5W8D9O9oMwVTcpLz=.죩7ծǼ=ncwwhw\}.2Nss=BFŪ{]֓A8^LwMÂT1KZg,ނ́ $TXɬb#)U! X;8B|b& ue d_\Zm kpK:QH?D'T\zeݢɐ29\ȻnE7D ƃ*{4Z(c Lm'P΄ Pi"4v+›F+XWq7/N^o*?IcGy&dRW )M+?엌_{(\Uig܊L&Y"T?4t^eK-cp!/" , "_ElSyއ\ŰaGy fJ ] gp\K,\#V=`>z=Yp~>8@^2B)ZBIR!# 9D} Er8=0 ུUpm¢LWf/)-ȳmrl@ǓeƒSHx͋MUcU4?=[nN}N8 >z9;bBM% ,:ݱjǖ4MଢۦmvLEZ@dfw_gU2}c\Vb lSqFVLN)[0fFQY(2u9TPϏ܈. }Z# 7(\C>\؝vHb îxlaVXA.ޯ>b+$ y:ؒ@dYHkh"3UY~{;9gt/ꍦYgt~YTWoZW,wL\F׻m;3W"YT=Eyr?&]ZJWݛWxQf@UG?\JwxG:em$*^6:I'&(ody4a!w}EmzB8t"Eҷ'i]*otW.gWv;y[ m41sm&}q]tnN OI|`g/W-ЛpQ38vw$3%3{3GF:@ .!g[_QU8#{ yrmM˩ GRSebEZ b :K=v FAAہאcq(#rLHA1Pܓ/nL&g&!GOLF,s]h-U|Pk;~z+X~RAɹm$cS@<д!4%tmP+UqIӸm);Syۆ= پnoê})VǼYGO%?6f*`{@R9gq9m:uy+Oq%b}#`')cH44 }*Ū3U}UU!l B mvƨIN%'ƎdvYYrX2C͠ 5/'R_.vFtH1˦t9ҳ!g8Yc<'Ly1)/94b A+};^+{[qy>Fw^}//YMyR\uB˴̊ ?C${YOS[f96EgH5k>$ۚM7 ҍ;[`0fw4ъ<.({|7^ZonP3lS& @z} Gqn L_Ш8'R ;xJ6]E)_P7R!׎N5$qm^قbdBu(rGloAlP?.iؽW\]w({A cһ5XjM^wQ whn ]ot}fjtA &_QuR} Gy \>o02@6fy/@2TGaJ^QOHS=GembI.-&DA+OS 7}/<N2dSk6>dӿWZ7 =#=ec4i!~^9NyFSJkҕGDS@ee;เS(E1ЦFZs" >鰄X%dň r|Ʋ^nq2QE=r7|uF-׳C"g+no^Y0?DW9K3Y]ȑJ,"GAn< ǎ"ȾbakO],4:Yvq٢g]e-Ȫ,xadBO]-DQمǕs ESk[PͲ(BA&@9LZMFo䮯fm s,LY4zey ]ݵr? {‡=.ZHK(/V'{'vg]Ƒ57b{]a3g"$cԐ5 DRRqbJO>H5p=0ۘ G o{0O)1{ڨJߎmhnQWyGK :ucqEt}Ț%"I$j˫&]5TsjqTCRԢ[YPEE,pLؗRs{D1KP%MULM1!Ɋ%*2vUžK ɬR{H ]NNK[HTB_r A$"<B2DV;`Y[!!LDſUd5w" Q,CV@T)k;$GQQCH&8+br)"[@Bd]67dQU$QIs"8%^6юB١cv聨 v kmHYƮ$owE}.CCuUEM+\GBf8`W2yIi-ܚMԕ/ǰD#0UjH?đ~]dpwߛ%j]vo5$CN?2A{ cThfY<͟V\m(!1٥e7EL>:]nMvYV 1jފ+- na ^նe,a ^dOt^5ÿCy5يBW{WD&T4^9Cc5+ciRk@*ĝp{iR߉WfVa*y֧\1t"9Ro[Xq9YnJiW\ 2:\qi.kre*RO[2e˱޲cjIbjaMS7 SLM9K]]e0a Ndm;ZF"*-!N^ZSV4WU¿dJEzNI ߆ :kLp!b/\ZD a)aʦVpsT%EE/ӜtfWiq #ǩ|I[Ym y`B'W X1E8N8Y)4S5]9=z{4nTPGE~$[dX~[d97U*:]IvHV >MZqVnT*[$+[ ||sB Nl<{_mvl|؎JYd/)bA#LLY_JO+YDߙg*.Ց _gZ8n,+OR+,w T(K ~V(\vqhԥuI_Pm-j/PUNj3@W)b| oAtvM>ԅĩkD?q vvށːF6γNyG"w.P@R04 W,b&J fRTEѤED#?]78kΞӢnTHQ*a LUz&}I$'E0grr k$UZbR'tt5)E hL'B%Tz T"h--B?ԓtML: Ĝ{eBHu~ KN{hB+L -6$bj{5ST駆(ڠ~7 bRG`),Z~R4Mxf 00XD ^eCե 77ZEShYU-A{ʦLUN,we*b2F]"K2JLA0‘ YVbLV`eUWdVLSRt*;\~m\(k ,궬!T\cefMdDQfU-M=zS4ha Ye]ge45VT=DŽjMV6:]$橡1a t 50`ҹsde@\a4 f $Uh.Դ SdK02> dQe*=clvѲ oh"iY1qpe$eP Cc&'i|$) vi~]h@$egɤ lA3EEeØE3h}0^L%2hQ~ER=P"6Š,@Uj) Ӳ%βfҾ l֬h@ V,'Q663Fee &)FO6a4[P6TO61FZxc>]ceUReCe&"wͰ-б1?S2J[$`u0Ѡ)geD5-+-Bi*8hi%i2:4SE@_P6D: ~iTlTQMYiXPh/F{&z%5;3.s35dPD:O@HVV o5 4\G5|m` TV>E+jZu7HUQAeFC KLv?H0XBTaeӠ[5qʺBɑ ,S W-T@ 2r$2/ay-&PN5SCH&ey@K{d]f8(Y-e0Ӳ"R̈́ұ+(jŠhtvhA&ӞBX#wfj -G Jce3m)F%X!2TBM{@ =6&k A=^"3i-ti)1T2EEz:K0h{t_hvt=M\4ٯcu k0IFO|PW'eEʆA9 xZ hX#bǢeMMT=aDar0τUCx2c2+S{ ei&FХ FHgAXu EZ%1S1("CEe`:%(˖>K /`VpH[~!,-}*ЋfLJ(*i٢,0Ev?e`A,V6e&= ⳁl(CmTzzupUBٔ( R2#*+[`bKe} xDMjf` ~1$Ƙ &<Ԃ\Ltb-@TE* ahUVÖ`Qejm`A]$DdeYoHjhy̟7 KEg {]fo!R TeB,TYtTf3?tʖAmA%YTKpθ :ޖ($#(+ҫ3 FQRYP A dp3`]@☗ e&*%(zBGq&H Fb" 0mXaI%,vXJͰ7pa@S.A;-er/N|Ez[Yy{!NYTL/ȊHJAbƞ|6zx463'&`M/@thhm$5bzodP{90HNl[©lzHڧO3Tn#`703,4^8>9I%UvdGI/TCeѲh$Up GM8{4q r*\Ada.Ȉ @y\¨rz3[4 00) 0v0(5^@LdLdE^JA$xd% yf =@d.H`%}<[Kkb/@4T^)bl !m/  ^+63 /hHRpMAJUF\(^,\ # cMx\UJ/L^l26W[ U>&fcnh'Q Zz(^|*ӉlTՁg#M/ 8ٸ),0Zju ^k))p 0  .#zL)Cl ѯ6TpXA]j<]ZG\pA!)]QËE) YMq#H@'YD /PiNk&8\jfPSJsKYlC4ҦO%DqG\ݒȰ5]E1DtNא p"i~{Z0&c)Y달y3r=Mhϡp+g)MW;;%ii,5%;WuWPJ8S{O]׵`vپ8!|;;vWӇ=*ЦH7@UFR0ѪO9),C˵}Dл}."ܕb%;;@tֶ q8o +Ϗ\/R8^/YʝA,Kx/rΝ_`%)<m{p0I4v8 '"0-hIiFJ8vB9SoEp?Co?/|]0SA4]~;%h=w/|~=>w]psx 0,t@F7/g"0 `t`{мA*: c>ހ^O> 38H3ʾ] uq-)X[]4|C74 buB"hn{,\weh=;84i.^$  t9^<= P~5\@!oélxCDF] PM6o{&)݀ {1sRj{Inހ^z;rv\]!Ͽ٤bh-hbkw܆ A? 9.Jv<E^DO BmB' 812Xs;{f-/a #g-܃ 0Cnv}P-Ky9=E~_ƂYM6`Šw1'),;aS@yeBXR۞ [5!ooJnCs.˩r d2 .z i|Z}8D{Tۇ&ML;yB`EupF׷[;I=rPh R @*q?m 8ӏVM E?X1_< \%:tyY@[ݭq*2ƿDv4bMȸݭg`Lby%wJH9}PI|%]'<͋|ڹyX;0qo87=F~s"nw]$_蚦;?Z<y ևKzIz[۟;欄O@ZƟxAs99u:ҧ '7گ uZ!˜߁H6/#_N~# =. |L'4P$oӑcY-|ן^?I"F^w}dfH\ՊT$k[ Vb-P|Hؔ,eX>ϙ~Y-1ӃЀrl@`@ |e4%5xbvbuzuw5^9ۻs/YQ;o\e4a 'nm̓>IDcim0~0W+ϣ|wc9 AiOJsXf,d vԇ喜Ca:Yxo|fVtRNe0ּs&0e g} >t Ԏ_Pc Ȳӑaib&nI%?8D*F-b'\y)H5͂SD*!&@d٥ D>am (L=O EB4 9_VؐF> 'Ai3WڃɱM.vNj4iqf(L?@ GdH޺+\k82iSq6Hx&jUkWmkڜ9Ӓ"ysӰZh|qoU;*؅XB%02@ư#o=(m] ]) ޝ + %{@îS xW7[*jxM |dqrPd=qT> fS==/ڵlcMetJCJ2\y@Ac avt+ IΔJ:Ep|l8~oN. ͇+a: ?Iϕ?AɄIx,ܸ^#&9 OoT reM0+OyiӍe{/uCspHUV۽3s ?tHb{Xd8H(0``@P6dɎm" qn9a-I7&m:-q&I:m _hN.:Ml4qZ.ajfW`ao3(QD*k6k'{͕uRY-o»_hc{xp9lo5T kGbrhu9eh؅ -AԞ:gf訏:Z+LoV9tl|g9*;5CM ?wԶY=gx(#J<zC_j qp{a~‘SKˆRjppQC55zC 7Ԙ\zV7 D U )JM6.KdիUM-\9jJo`"kޟ>3L^ O*N)ZѧyyѪ'ۀxxh ^8kN4LѰE.~pg׫wH't =У%ҰjǸtSn~.o\O!TNӯW<3af-]'&CLI]W*X_{4?DY~z]4NCd=H/E}~s&aҬ!,Nޑdm֣iz^H_Urp `y.ݦ.KʈaE˯ݙ>eƤB/pg g XqQ?/cb/Y"a1 :u,C!p9#L^}~QE͡JÅ4V5m\eƈ9LϺmn۔ؾ}LFi ysA5K!'fqb5kfD6qƾ}**y!6M'P& E٫g(Ѱ\ M;z#+fmm婍{(_&ؑdg6]\Gt@LϺ)m:di'f#<όz3k4_O7sR柼g6>?zvyZO23C! y} f榚erNsGW}SS2KU1s>S08ff)ay#v?bhlݴcr{ =/54uC0I;yK2OR ; R)mRݓ@!T֍a2W>sTܦ܂< M*ԙ5ꉙs1A ; "?0 m?I0_LLWWכgMlqzb9;n7^y/{ZyoM7ԅdƸ3g:?tmڏ1uX֝py.4`zXVxO K+xjG+Om؃ $1Xt/{at^%v_I녍f;?r7Qc)"hQ~ğv9f^HZwciAE:%ɐ̉g.ZGRw?~TA;cwMOyR<ѷĦ{r kgy)玁A:n Hʖu<,`osoӟ*h 0 a{:EtA4neܷgF* >]>?~,X;EeK171E7/%9hwg-nʇ1&*w)LTB{=7A'zg*q!fx*GH/#=&r Fi0 4G 4Ҁ'+/۞/ߝ GXپ}zRG ߥHNVp'%)']~*aO CK |Goo ’ċuMqh!1GuLBި \ofNE6;<%ۼ\lu=Q ;Œ?;ahƹx;8;x[=BFlE~Bq2z%WAp[w&#`<ׇ/4",,7?fpaH Et",#u"-LD-Ӆ .];˺̠w]eNs`07^ i{ ̬+&f~a3v4W@fsjҟYWoy;*8I;ϴv=X\7QUsu s)-Yz̶;~sd[`[rW?6+ϑj/TE^,M O5:Srӓ4zf!R UMe%}E4Ő56wKf()6OQ,(T2132e胋>REfV:Κ`Cs9X;ژVFgtҽf4K|/HaN޹;;(UzYz򪡆θu_SJs#_lYQ)tM5x.<d5QlkTGJ>KNesEaUrY[2ucLջulF  peYxsm?&%sZ։o JP.ern= 9τk?v" v m4\\6hPO{N#Vτw< `On=?#SSוm RgF5IȢ$ vX5[Oҁ{.CC2HXt֒JZ5Y>̾<;>4nou/ ZM6N:U5MI̚}+NG3uTZk[|:q ^UB/ȊX^/L_#U_6>96pX>))< !Hs=!p7*ES?jd+t5~娂;ϐm7HR{VYcot!K"Ro1-꧄Ov;a}-1v,BENfs&A6B#gG 9d{![GNE_2{ Ka~̿֫mgWLZTmZXyЁfe]"l'psF{p'6ۉXRxmhRx6=`{M?~H*RJx(A" C uݐڞ Yώ+ɯõF ,hFq]ZXѯi~ҍ"ǟ\ČbBw!Am;AfRCTS+Wv6t3$JW%]>Q*u}֮+x}c/s3͉6k'ݳW5i3rgk~':rJZj[gm>v%ͿonQou(SXN##\9[ۑE2UkaTF ᧏?/&1G#i#ܣF xb&r.k*hJ:5%RV+<ρKk<=4M6(:"XaϓR$0,U;x2< XxjS35+Տ|U]7@مg[:$䒦1cRcQ5Z˺eꇧY)j OƢni|yÇOi'3VEiL)X`^ V뭫HΛG1u߱0ֻTЪ5jjգb깍q4al`0~>d!'1};]؋'xX`'}uíF ݯXȿo{s?v@cLk&ȸ"Xo+۟c:-~8i( gAy ],EK/'X wv.(AS2%R:MF24 b"<Ӈ7o_y}͋zD |PrQ%A^aCg/<o-dȆa'>ĸ]Yӱc: t#Jx8zXGXJ Rgyrhs_}}c.cv0ũMji\,/_|r?yC8_YXOY&Ix._!fѯlؑ;' xs)>#p:V4˾|TP0ZM?qO0ca+FAGAJLsJ|PIHYa=͗^|ΞHRs1MEl<𗒂ˇ;*͠ӌ] F67q9!%z伙gq,f'SçWx"UB ]z@90ӵY4LF~|!vz 2q gU*OUv5#۳؞q9KL5|0-C D׎~:s H a(\z_[兟yS̤p]ՕաNR(+(`H@Q OMsr eC!9Cf|-+r ,ÙRTS YBjG#tgC_ϕOUeIE٘?/5D)X UXxz99L -u͔-0FNg:+{n;+;(z :R:?ZK+=b2b+rT(^$+7=Uػ]0bKӧ$k=όjS#}6߾fo SkdEuv=p {Oǂdanv0ގ]|.^9 |]4j[:|vcjfX1hBn1jQz72aHsJ-3[Z*̧r[V[2r+\amcYh:l)VD> sg:bj[p,ZBƛM? Vh)ެqG.y-$Me5/?~y,62ȫ5x&!Z#ON4·+\͔YSxVf5x(]?4YRmnbZ{w,7OfiJf..=K9! .B1n|8 4`Tڋ:r+ɆL3clKd,ܽG[+Zw*m8څ\kFio[ Ce>.KT9OKLz.qSSIevDd枢I)XG}ͱ"|*-~42EC=ɁX>;=jngz~C7d=!Eɪ"6k%'d|JEӶaUSI:RM=pC69 `-ݐᗖaaٿ⁡G-Uo xQ_c dK*kz [?(cY /m;RA BKtt*Grt*[3p* R bk#2 O&Ք!'ykU̲ X;H@d]ڕ?hUs2;Y+ BJ'f,"E¹q j]L{&ۻlХ2\W~l߬fN٩=%IeOέN'ۻ2["WpJx\;|0¤LV SkzIJ*c UvL,.CЄ\COzCQ@Npˆ3pK&9q2=mdYpɾ}jzE4 If'wf#:Ԧoo{3r9A-qHy-䢨}p9ұl8 C#OXN( }F^Hg#'}uEe L&! #͒2*M4"XIr\]j:q LO78exy5nآ,W;5F4^XWyÑd9:u;Ajx\_".!g̓Ct>9._Ngu=LgG󙻕{m:CZ#RHXxo7|UY, f 6T6KZWϪ9gGߎT| %>`~~r%v5Y7 sOBsu>srcc`D[m됛':.xďp/j VV װi r3Vr@SJG}dMX{jgE^~_}Wܛ(tSAЉ#5k\q?hVa\/Oܙ o4NR91y\*?K"}ɘu! xd1J9N3wʽ6 !m)u{Cmb>1?^fG ZW90\K ت]#4U83k :Vb 5cOׯ_^`ǼX6~<#H9~/3%&2=o∘KվGJYt\nkpp9l\nɁkՓ>ߋgpCKO.h3馢zӺبGFڝbv'U L2pvC 4L}\/oW~IJ3Lmώ;O)5l4Ylk I\ѬX`nՑH`i.>ou0n;< 8q:0Xo`#Fb8E _g7 Y)- G'Jب椸g›o?n=PMRͦO.epτ{p~a9ܶ1ݡ4aNf콆2[y_1f>(X "&ԍyl:%w p[]o C_KӥpnX$E1ϯ/}tӋWb`5W%E,A4r<K8Hw'7-?T@ɸ=rEl*)Oeq L,x@ez"WRW֙QݦWt:]. ~n2K@/X:W6m[%ۖ Dڸc*Z)fn+: s0ژr⠝2X+Mg/Jc jipF=u<`AWN~KT~$I7 YxqpZ~zGzQQ1Gt 8ҥqj gw=a V+Ǐ2v+\z񵒻9*K1Bl "&e)_ r*vbr8l*W[uE+pl2@pʚc'&c~ Y$qɲ*Y;kW.6'q\Y!c&}* )2T6jiKg02qNE6dPh jNv-a wn؄+0.UG$ʓNT|?:=NO++63Y(2ݢA]b'b }ÆT4#dVOtd'URUQMν5߸ߝYuNGCГťKS_|Cd8Zڌ1Sy9m$ds[P[s:y 3SKXyxs>Oِ1r,'3[gv3{ SƎ uS(k%Hq%} uoo%RV !ǹzGH'Ht2{Zr toAhg6GoGmc=F<2S1"]M9tpPoidxjDhuq]:*b/<N]֡Jum/ESgөoIt;>@|&_ߐc3u-(ɂk WpzjǹȏICJ'|H>8"|1i0{pd` }U ųF::: ~ GvnUiУgWdŧGqǩO履WќZq`i%W8Xw6F2DQIh^pQJ~8AW5gJ,7cJwC4%1#@'l}=?*GН wdTɓ8ޖSl{[D#ܛ:u{j=:KM!`YtktÛ뷯;r~%]T!&{V![XY mmקC vihOm87#1Rb)m1.Cͧ?wԴǍ`{'h 0h"q0? y.`,`s8ĭaq Vؚa'{hWlUVؒuN|qGTƽBEŇM>a\-[vVr6+QA;v/݉>mEi=P7Ù uFx#_ pSc/{tx5 ֗9< 4UͧWO6KE8(9OM MQ!)sx&I=;d?tI<S7!̻p>ܭaP  'X'JX1.yBrǨZ=xM\xɍfɩ xH#`g6f5|I; yTk|q _,ΆYAo>DScT>7n޿xՇ>|÷2"{cz̨?n4Wfy_h #TcEy"j?s"g[#JO?G_X DE9hP|kQ_&x^4w)zFK]kOz Eo `aTL*Rׄ}=]mV `)z[X5%dqx7KؒJr<xq+݋$,kz5,c1NtO2wǩf o Y(q[є:0R-S4fb}#ꊽ2*~5shi OM/޿sK/TAxHĄoQ-i3#h# }:HdđDQ/o9qᚥ.?vZ=%maNŌqJ1t-+ęhͧhdsFW-np)Ȗ"윤3uA'?OMp84$,]ĸ4SC kG~O Z!KSvtF$R2v~QQY)NXmNﺤ+^JyS kɞG+m8[VFo+?ocs*o?)A6C܈}/QES5M?޺q9ջ@!׃+DoǛ{ lMtȸbbg6VֲMh@s]r:S()Ђ Bi#-~#}wHCG+_BXny{J/џ;>y #Ba`бϴUlA(Z T кK؅x& ĵ EyBWNwL.\3ЌVLBHSA@_@#ϜKv.a*峓H1#2X`7882aB21/kT is4i$!{%T v,ɿ~7_fxZ*xSTق|ym?%xXgtswh0ռ[Lzˬ)aS@1{XA ţ055,a)g OlxU>Týz(\_AU=ʘs#\U*k*[k·]T<_4/Yզ=\ՀRqQ9At]]EFvW #KgN$8c'BB >#AݜɅp)Q? ؆'{BBrFH(y&Qz<~kElxFf!$t@Iq납$ÿ;]J!t()O"09L#E#9*P#Ӯ<롕Pt cx ;mw2=֗y@$ʣ?9&l蚮4)p@/QSKn>lm͋N\Ii%+x+?cԹOs4l, ! |j'\3QҀ-?7& Fkc{N 7rKt#%܃H TY{H~8w)J/J6a. o!rQm 6 a%QʯiRb@6~昞 c>W^e JV[dh@}#ñ~LPfte]TƙITԦRRFtGš/L,77krq=_eg?74?5C1rC}#7ސ|N#𬂕K>6nzQrVA.GHHV[o/#8#n߅;77 |VzA 8f?$  7I&@)ކ \k#&e&s;ڿ[(n0Uk' $k65]"W? ;`Ǜ5)[pVؑ߯C'X{`RAlCi;agG!=bRtp7Y7uI;kxoN19LFl#uE͸~U'R} $UO;I]5#, ĶQEEܵc0-`޺u\-nlWE H,GnPEq==C0o) Wwɶ MP!)xQ͠nQtdj͚Z)8wԛpfn7YF0|ҁ42.q5~Wm ;Ż9_"bFh9:z7Gɫġx 9O/~ӻU]'b .6uQ.yfpn-s{-Ph4Y:}~ TM5]5myɿfZ:`s>j7Kh< InI"k;sx8c*#Eפ5u 63T|8 '&Ry^=T[}M t?ܕL5ܮWب{ &'S#"'V͜D3@*>Qih 9 ^npM(A5m-  gO? cs($]`)Cg;{;tئ hy{CL#<8qS0ax.}4q n>#;cE~MA O.s(1-6N!;h?`ǫ.U9#OjE+8H' Sضö+Y.U1!YԠk*Qk;Ny՚ӊfXnVvǁ6xunԦta ԥGP\W%Gx͡,:Jtա#NAeErܜfvm'ǖ U1Ly de@m'gxcPMrcPn 厎} + j)#Ɓ#-U ۍY%.p-;8=&ZkZ&q CkǽZi*cF&To 9crS 5y4pǞ'U$ʠ_ᱼtz -vOّQM824xF7aueK*W#u L r IPAlYv4O(mp#EvwBvvp$O,s&Q7k-'[ՈO,YB4|n[xpw7t |*pmDǴx婕AdG% ~.3/}2]@ˠ̞ā+2wzn@Zة6hy)9>/(rgӾ"+{|"#֓S]}\jXbwD+S/8P; mkdٞNJ=\5-eVr׸Zw7xi1>X[U1 C5UI^dV|:jLB^uc[XysҴn;-'rN 7 An4y%)9d^|r2)i4w?#q/n:uذɨL.Ds!-6 ʁy07#mQTg%D"3_'-?N?9 (crbƲ?~`gyz|}=*):uɵ9Z$7J6p.:iƞ%G.&w'{+bTYաh+GUXgi9hbIj&S@Jl\d??k ,~4sxrţ_QSebq|@ce^?1(OaIg {+8%nF7}G,ݳ8aq03wNH ;}<}hٵS@Į1hvo[݌}4X:ߗ&Y*e{w=8 N@ luV7p*ϰխ_U'=A}4].ӥ7'qLмok=, ^~ 0]:ai~~qEG9ΤC -wvpgaiuH.5w-62QK9 Sc=Ƿ7c36KEW_/SF;[ p<ϧ.yh= TK?߭Rު ;zv0zM^.l5zǯ+T{DGm9'73߬Lyky ~q8M7p1+'3 DT˧"x gZۮ?/쀥YGu4hwU'?tŃ`6᠈D6lv0 cy$ʉmx#fN ceُelIW&y'^л#Glw@?K3f'NgpI9<~xt5ߍQC"Z1knDA[u$ZrRm38nί\߁#zdHO2cJ9"|F8>C 6A3v@2 )[=Ecw!|iw\~ЗyPC8?[OCžc$|wkmZ_]`>Σc,pykmZs_??y7矯/|ɑ#iH&#G"p$‘Zٗ_/O EW'pzs{}r=3$ϊ Tpt\HRv q5< #1>Ƙf _[0f+tzu q?ETuyྮ J/H.$Wyhfض9#U9k_C{+ay<[κ7p뙙Κ\Әo+ȭx05 x#2WG93#,}v֯W?%♶Rhm͌*@rw`1Ժ[;\Fde{rHmrf]:ɕpk/WghhH%}uZ<&B7`zlz'$3V"1/5.6Kb,jw䌵oqELg ٘ `!bÏL٭!'uYb Ve>lzAud!< AN'\t@  1+6 &>D5Dl~~EafsA0CPTzh cI𵞌X5jV^}uy꫉ 3gnDwJSkL&I nqUAVZBM+D賱2|=:Q'gn8O0$푫J- I7X?_E p:&h#gws棅K"|4oɯH& 9$K(eҝDǺ/;VqF/ =MW_G chfwOa(xomI u17`a՘?=D)PF*Z!ԗ˲shR5sRE9 h=2h!.O5V$d XM2.3K"g]ӵxj9P9+"k',CEѬ'İFMG`C $gd.@ BrkIn&?,=deV9ЬXW~iW]M}:Aud ȁE㈇R6z],Ȗ݆ U2''/QSrrR.sYIOB6@jheMmg XqkhGθ\ (_q:*8:oy2` $s^E>s'Mq/`8<|0ۺےBD:8f)۵ 4p"hMEY@~(߰j;N?7@)hSEeaϞ_]&]fݫ*ñ(Ꝟ[slNjPI|2!WIJ."/`'nTMwTB8r õ#ūBy |4K4=keF=L~W@577]om:hHh%ӐG7 $9+=Ay\dw=Zh' !g;Ys-o]0,rS Jh_o+#~xsKGu!AKzyQKm)É&VbKl䑬ټu|zA zҙxf 4jؐ,Q 4VIFu4-\ nbL߼bP2e& 4S pCm]z!l*i: }>|}f_smB5;D7eHޗMKvBP {- 8  !+M2 K},'N^z&4EoߢIm*rqH E@$cTTlTrGޒI+rH&MרIblõO3'HdyG7sx]^RX  0vgS:*eaJ`NG ^&TWaq@uϸ&]e#ΦPXS.354>3ݫa,G<2jTXEBtg!FAR?&pv,"@vOÅ7uX 'x#Yrh,Akz֝' ; 6zX0[7#ow|G*dbSu{-M.&Xs)aΆ]^ұbF{Qڱ:Qc<{~KbLxPBJ"sg`^ ٜxоt2dn2^ved-Ġ|lU.2%4iW#m,+=Q0烛"u{'5v@Án(ɿqRB^-Ò}㸇]}* 6*S@,Zpp.889iZ$%1/#! @I*1(qD;\#܎|"䷙^ #hw!0RNzoŝPgi/L#;s@Gq[^tĕo(}&HG<yem"Ci@FʓO#VS{!`VV] !r T x,8XV߀CLdpe6$ERs@ Bw& aQp-GC͖Ki-OHh>Pj 爐O4!-ȇYMe`/j3U6{,TȊOOVvrL)|F皲F %g}6͹9g5 Y@E`t)\|)9v <蝠uafx*JX3g=چo5sG=Ù~|jK"+0^DzҲt~Xb06WcʙiQ7697W_V[_"sMfn_ O-8rKnEIC} t:"J}y EʷIe'ކ`6|5! +[[yCp):}!M!Ee Hv:-V^ljd->b![]l![zh ]OK?,ā-Iȳ9|7`p<{gؐt5u#%$hMs Lq?MITV#,XX,^0@k'8 p-7ׯ_%y= sHE0'DN@|-e5NαXF"C ɍuSۅ4~ 8:+KߙySLtFGgK/ ΁rek*q97g eT(?lJO7 K Mݝ>@3֑77\yCUq6GXN4[]<5raGE84m]LLM{z !K^v,\9A13=gCR7*6"5F>a7c\ "s3y18w6F #;XLL.qiyZuD>yzEU^}s J_Gjpt^~Dzḫ+:ALt@a˽b2Q淶 V`A2C Q䔝YOOrMe X pLq.$ݸ[p?-S@|TQ<ڸf8\4+XvTVamn!BSPPK:OCDPzt-0ƝWldPFf E!>1B{rEHODa.YN^6T7dT]\鈊I򂀇SmPz]_jqfDOʬwEcX-"E:?n}/6N%xXr;cT1~e u2҆]#v+s|x2ӖxX_ gr[!xa-t [^iů地ً;|vk2E$?nL3r"H.cWOE|*癩 ۮ?/F쀑_5vy3Ӷk]0tɭJʵ>h: cnl!a[ؚ5<\XsaYmo$Yj0Il'+O[ ~]vrZsaa}gmAh`@ fCAmȽmNWpf_'/}{j~ZlN>$ǯCȹؑyoLrWGEό捎ks񏨅odOH7HE6ь/SzKtgV8QNJDHDњ\E~Oͦ"rh&H'EDћ߮9T4uF4>6&Q"Jm]qPjA R <]khb=V ro)%:HGtэ-[Xy:%>.'3|n1>Ä9H (K{chQK}I^' DoȻ)?@LNNױIŕloPMTROUl \A E,go}c TDΦcah0nG '3V݆d?W J KuW\76>Ws4*Rj⡰P]P\P"8"8ōM7BBD5m =yA7ʑ0Z::mu2L.aTΡFa6;uÈvpBZ2ri&4 tMka<õI@yGo,P6tEzَ{Mknm`7tC%5?,bM0ObsbYX/qW4/) KKyP"Xw 9f 6X:Hz,*19A`Kc~oG͜+F.34ّfO*y2T&r 00x̺UkqO>{P Yjk4eۅ=7?K=b'8X=\ x e2FK^OWtzWqB J/sy61d1PlaȲ65&T8m ?~lPeYůUZT=|O ̲q"dCxzꢆ=16Hvbduo=".o;h.BlCmX R P%o(8`|Zd ;HBXJ9m_zL.@RvM#Y6C;i=ߒI @r= &dn 9 nd3!*lFv+%A{&0T5,88ZmZNX* 1j.y3ϻ|n\)Ur0v 7_@ :'NY"2D1e@3J()mv^>DOud[Ĩs< :bFy1j6@]1}ZYb):s?XTUp-53muv55+'68ְ{VlԎRZQGlKW٧?8aO^ۡi!Z$>pO琈w,dwkK`)'G(eu2ʀm8z[R1Dl:o6 n#vp4H΢/zBEgO?KXEW6&"_^'_ǟ~%=k|_9da9\7O8܈M9=s€0%%)| 4+t<&v h*x">Ťoo;v}g:#"y+x/N\d>ǦjivJ-h' gyKKڊxǷ *eXG :bS/p*hm]\#rwx6H~m79(ͩpr1Ϸ#hmpIA?'',/u:kz^ȾW"{bBfl'7٧~6Xl@Xba\ Y~[M g4b\e#_XƱ^ZfO0fZsH"465Cex@WtjŠoz/i^зb|0_Hwo -!-4twP4rC=6cl5mKm)!c: {!3a% )]^Xh<92{j+~ԩ2Y1T{7%>n=¼3o^헏h0p¸@ɝC_8lФEHGtBҩZc6sV<ryvMj[M@9t?b •9ANR>&d7?,Z@ljPf*@T8%f:PȇtTfdՓ>kmBOb?Bq?$'#0?zWOPa5M8D8D8&[*ͮ]h2]RIWE D-7is>o*"'a?d|WHt#䮜R݇[E Z3‚")aOtWEvowUզ뿥P03TT54ւ3QyߜG$&Eޣ.w9:,}h(͗G W@ճ7e 9Lk<t~fm#;p S j^Н113#>?[*wyA3YSM""0+{ª^b|r} C>8|mR-%lZ)Q rE 5 )Ldsrxsolv\keb!23萊3/ EM5/V=9aM験0́zRm@Nd-bH֞nԣ Qlj۟ՇJ{EbҴrWK0?\J8SNDNraΟuAY$xm%Z ]i >fA ;5|޴!]^5sYdRLt IDr֖8ظ4Ưȗ.G&AvUҽd9Ev5QTu4Ro\_}7o>yYLqww^?Gt_[DH6G؋瘇0;`W &Ǐ9gE^6c;aOɟ7N?̦<7 Bb!=еD{/+km2-vpmC'AFS1;Ia 0n_PLd__N%RBUdt3Ü`_-W5lM KIMAHy,׊vd-9-ɨզK~P0B:г}7uѪ忈ʧ%W:忺2|XS.o!w(FcU '3^2 ]JOp@Uo~ݘ 0f~NC7?~;觅aa׵tYMF1z#Qkxs߶sڵ48r(#&٠nڝ4w5V,45"3%;2Mcou)m *0]4Л/lg2 d<况y4+/N0wp9a[1$pn޹f|j<.VUV4]sWX|&Yq1n^"5҉Z l( ń} h4ƚdy0`klb̅묐+}$+Y:6jl3Tp\/qWSvqHGL8HD&6eXRnd`CΈUA.Q<ܘ9iϡOD ZSyLZM1r9+ :&]S~g+"oBzk̚lxA)/ ;=-4;e#is4gCJ'G@SA2OSHo2z 0$Ro $&J\ U.ptX; Pa c7}b]r׆px0ݰH: 7jmLkjdqnz3ךbg6n_.l=#2{畹 DG%DuhDe_ F/lbb25fgc,kSc"Oefkg˲_5Ϫ?k04E1nMVrmx!jV`n=>WDdoOɟoPu9t3Rh:fӿFDa o91c:ІAسhDH0$Rאr3"R@bP;ƸLDjR~wY0%fTؓ.ԛ4~Tʮ j4~3 g'Ζ ۼ7m$MU'7U+<w%E~V2:a\yCUѕ%xGe9%](: M̰rLjZzdXMg&#@#`?0=BƋumH41ډpؓ ^Pj rIq~"OgD^]\kkczF5N{6>:H: QȝMȣ#9o'W{Dq<;A9QpvFʌboZҝz۱5 fٖzPXRĞpz=w\{9i[Z"mA<0|n-Kfv%PA=9+\]:rf[Z`Tӑ!y@ZcGI٘=\T'dD>A ("K视gyвXs6FI}|۠O׀S0y(s{`ۘf,-Y;n0ȵ@ܘop{:Vvv uR< g1Zmq?/BiT%6 0h{305v(E&9.ICf$*5=ӽ7ŏu`t۴Mp7BضcK:"vzDD1u&$c2meïG6p`4逥 ܸO>toؖGՏRJzD¶xDQs_0@T3Z UM4.$:p: Drb@Zy]pN:͛_gɝs+*Xm_-Adpk3o8ڤ~bX9u2RF#)$}pk:P`5i9_D<]!'OUtoAkN̖D5׿b2^CnL*8MWƯzn~Mwj֗մ j* ڐ#.0w`1הx&pMO\5@Wd]!a?$P^ ?AmI7M/ 5<ʗh΅/hhc,h4F&82)#'}sv [D5$NL* (ioSű?[@knpQ9;ȓO@&\/J2!1mԙ u4L6Ӥ T*gn/`wλ`H[]P2׺2;e5eeHo,΂hOּ{&}9)H#m&},p "ft7q4)rL`^V'Ė& wG$͓Vq4 8|p d`*Sau8FQbx42#䧓L?[: Z1-A؉Nҡ a\?o_:&CŒ{òII`+> 3VKg0[nG* Mz3U@W$~. *uhP3gϪGoDWhTogT<ƲeStyA°UMzGȷ;gw ӛÖxmij:鍦Ya_M°̴>:r6[!=rҸm%oEB{&XhiGjPr0(֭DA鎍)~jEtGUR+A36*Zߍ's}od xnIMᮼqkf4`Q!RvR8R)U{z#S[^POnFj. &. ﵼDV\7(2);^|{H[4-S4g)*DFʛQEB';YYq!ۤ=# 2@ !3 -~*rKqť!&G/uupBA#*:(ob=]\3׼#zw Lhx( C79+s`ZK`!Y06|y8桻:BH ފn ` E%J^F9.SC20pÀ@%ӻ+l%6>M/.KǞ5+XK-'3,jS35M=юݑ% ?Z8[ 3g}X3GY!-~XԼI;ZbR?,j@Evʗ=@'(r-Y4gɀZP2m% Zz{[*Ȥ0=`51! ӏ\1R ȇH }تݩ@Uex!UwJENƍC'A7N3lW<037ʪʏGw^F@. A&g+Vδ~ `Yqg*޸T6-hKAu۝dr'&[O̲{=;R&:Z~k*?%ŬѬ`(Ht{8әqRkAWQ6f.I³m+Lٳ?wےkh|Z,U -dt߃k7eu5>]Q)E` 'He#j0sϷV5%5~HGvHmZn|z4NwLژk/X0;ǵ.p)NOUz1LU.n0`to{nRq`(OƓT]&4DGy3Z]3*Cxk]VxxKkpn7gY@ oy%n\ٔ1 d"|儙~u]`NQ;:0ߢB%5᧦1= N_8Rty2W=^OWtzLӽ\HqTz~\(:<;tWUPx;cΡ:@ˠ`oj=s54c~ޮtG:AצO=-z*dO-!kk"MGj/Ez?DPTUy!z*bc`ޟ~>V5:XJF9yLwJ-XP{q j\mu%Y5抓Ŀg%6/t}c==#E?M3&W- ע`-Ά,lMgU;=Xk-8=2-nUccv?ܭZmW>}?἗8箹AxL}sq~_}9;Rj5JAH$7,h6M|җ561d_ 6֜PA Rư#|A.]ߡ4vnFʱ}AQq]`2~4~ThTvUTKݝ,J60tL N+:{(Sqz[B:Y22LCxxEi׽\@j !to#u8-8kS gAhis-jAGİ oeʓnl5H:FO a{hk!#憀h+@Y7ɨ!LF4GO7Aj=4:A(aѕa{~ >(i2iI%{[q_WL֜=fOEXE(!R椣0k H J.9  ͈ )vԒy6D6dڹ&=d \-Hlemc"hs +s{-fGE4g&5g-9 STdTBͶ3Q/0liF\y,t I\65wmIHk<=#2fG e%J 8 LNLIp#QI[gP ɴ;cMA#e4rq?Y63H󺽖^ @?w_aYcaΎDCHZP uqvN[]KP߰Pe3gI Z-r>$7\zhI*h>}"ɒ[;  YW"̘-kgCRa}}hjy>+̔DM =p2Y=$^- &{dg)"%|ΝE-78]voP:` Mv ϫA=xo0@7S;^z@ho ٺvAA -ZQt,jvXT'n!IQIP_I߶G] CgNx@>XE+7ZN@YFHtP齫)0>x~A-TLv8iVb- X V&Bb Ů9.0v~W]~%Vli$?JR@0iڍ6ŏp!2}9G/0'6^+X yo^S~d-R:[c7:I3)Jw-X ?DL*XGW"x '5{  "^kiAĪx~sEmjx"#Z 𖦡K YYfj-Ќ,A0eQ:63$X47&gۏ q DEϞ H63e=S@1O:WdEO׏ 0p̤  %?-^BoJx ϘygM! :ت *&<jw`-*&01zu]YI͠Rq*d3G٤[5m^[X,JfON^apVl<jwٙIl"12r<<08Ze9l-rY{y{5X꣒pUvwKGZJׅ:S'aBR#;`m7?p/Ȟ # ٸ#‘aԴuI:@wbÿܳ#+#LI-tr<`BNYCʈ,cΗj{V =X ¾qOa~k@ЖR7cB!#o5zC֓7lk6O9M=ٳ.ގd{Wo{!O_OVo|ϘUqit{Qy"WnL3uaY2(1LMajYK&6Nk%f<^tg8.Ƈ7|ǃ!@c==2d{+L w gp ;.vgot?8#2h9.hd>\R[ZK]"UJk9# /17siǙlY?RMܣ1]Ϝ*o -Cq-?D7YHF!2#1Sa|Ҙe+I{? Ɵ"Iu^WX+?jлZ IKn7;'ɭhU^2"ME=+'ש*M5[fYK)tXyI{BHC*EjFPC:KE,&r)sye@C?ۻM:!J"_pP.)KiA)pn4O?~we<| 1lNU37m(YȑY&,M`(d;+hdj -G  8xp"MemYaAr>tq<Ȅ*5PL(F#ȀI9j#Ƈ4A/ hpX=l?ޫPxҔ#EVt$ad` 40knC(uB+gu䉣>uI:)H`O q%n"ac(nԍ]5LjǤM`v$kx4[ܴ]; {VwhpJK~Z3,iг(id;>'KV;=,.FO2%OmG@2谬qwOӰ]LjݔL' a#vV|QH4]FO&ynңGm޴R5Mյ!d^ʳqxoT~qP̥`7l0T] Hx{kf"n}۹jMC) >9;<ۺnp<<ްf~m<-8$< M ɟm2[c[~2Nw&JJh=׿r8-h۷3@JK/%ʳ|6&Up֋;|vk.{+б:(7tDVF<5qsO]q4,md?؎= a۰JlI)~]D":o؋4U)0/=&ӴQ) #e aR& tыTEȚ#-x 3::}{q8or8:q?1M&@cF^vĝV9[( ^*^p2ٕgDVœ)'(Nw  Frsv8ZKuvaQTyS]0k|%KGa130UpG_+3zeOהxv סׂ]P\ڇp:YK u/4 9I]ƒX&bUX5;ܻb{JNj^$#'(b#'WGJ='X˺=ٷ(˲}ꌠQlW8'auWҨLHv͙iݛԣQ?vRpKWRJL l zyd!|.kR!9.#s59=U\{C&JVF@ <]b`حh栳"3U\W%k"st ?}[ ]ނpe?V&h[-,g6f<9G zNZϩ~z@&ej"AFT[Ȗe AeƵV`uJPȼi?(/v3Unp9*߾?" afyf o@tu7KFl2=8=o~)WwWEk&4bﮠ ?*lO4a2z\QtUjr ΈAy4(mo0ДL m:: ~~9j5ᗐ^"Oeͥy%/Xs~|gtҖdңWs@`CuROSW@6#&R Ɋ+$>:spql}b9W6Q؝5E>RuU? =1,7[?!uʞL?nk#s:t/|gy/z􆫵/a;p{Á o(!4ށ7kj(:Í+aKP*p g60Mw ?ZogD?zjcX',;߄+lj+Ԅ+PB \s=PWHiw8PC;m`X9^o"v2v*6~‚6QQ8DCd&;p9^qilf}v36'QM} lE?W3C^ƥae vn .y{^a3.%GP:<䐘SnС088ATP iB$K[ƶʧ.Mg="%;ǑKoxq!g~=-: u\d۽˛y/b]eS7\o䒎 rڬq  Q ԹG,m [eE~m: bᢺV,\Vl.R)ێjj6YqnH/!A.1@_Es$HGx3 4,Yceyh]|@ Ih}Bzc#23gnWDy9B-pIC.mJᜥz8_k|2 ]l(KmuƱ>Z8ahh1( OB2jXKD,:K]]҃ވJwmٷ2(RBK! \>2J=#D)I=q-#E:/tsOH8 /;|&x| C2 (ņB %ε" +(OaA+kc6^O+4 ?n]p{AiG`yf0tzjq"/=JXi:A @^&p%/ Hm.L%c15mlm3WϜ\zW{aw]ݟ^|Y/ܗ7]^}>horöfL\ S^UP#VW|C\a a1fX[ӇC`P2eʓdFHn }a Dj ݾ!I66X LJwd?̱Eó23MAsD,b/;fPp?rgl<Ưls^bT;wq4Cx>e@ 9κ?C-I$3ʀ9d 'zZ2 p< OԕXKSF𼡟G{xm btlc_x.yn;@]vne_nۭ= vGÑnnWnW]veٗ;pM\xkH>h> vx\x[qZx5xW8^}i`CQ"nw4Mw|;P]vne_^݉nkݫomՅnW]vYnߵpҷpuQwG +,t~7OTUv:CUo.v8vcvnW]}i`Ck{qP݃x-n;nw݉p +.˾40݁=[=~~UwÉo{鏿 ۊU3Ky-td ۮ"‹Hx[rêiU +/40ށt"\C N׸V l K0w pUw=o|ov'[R-L/m|tfG[)p///t01V@kjv~-2__ [uq |íT8 ja:|t{6rt+NZ;ۯ BwjhI+T;7SkK H%F&3*m GS8gdvFW㰕5! ū^ d,&I;sn#Brhi4o")ABTlJx{5^jl<lRP%E&$~}E9y"4m÷OD.Fߎ?FYU},U9 x'e(xV`WFRk(M~DT_z®P~ٵ= 1Yخ8<,V3"SQ3aH߈ O,E__@zyǼߐc˾22ՖBΘ{x<` .V9'm{lG3ƬT.P,~Yے_CRu5؍ v=GȜ f(/\tdW?P +FZKa$"{1l=QN!+?5+(a"<5bTtJFL3SGlmun?U*hc܍ B,t؈`ŝߝw.D_R&G!|Xh1;qC3Dٍjj譩?L<|?>zsW߄YԪX+v;<3k-E~!ǂ0GVRygUdlbՕІh]'RO5}:Cpi)]Dl|dba! W_%a@!EXRSYi$Rx@$ZPbKI M0F`FuOj5dZav <-ؖn*s1'L ^H,1aWkZKD5ݛ/@?J-5*ʹij-E 7au.e6Jƕ v(I*oS^@PTNcU{hZ0a?ŽO+ & DuD.=d)&npndnb)֞%ӡ-EEt$={ΰGj鑣IVV"A$Lc=$17 ԁ[ jLFǸvwV)Mw!B.+܌0Zmh^m+,Y"pg> /VҸt. yAj1ʔ2XXku9m>WyQ&Zڻ//8Xb,mA未 k܅).iF°! aZ5)>[Ů.{Yr/n@$ж]3 QkE7@kN Ix{zw+55\9;׋4wʽ "X6g~S/++f ^t6#/饈>[<͛dho^anmAr$MtQ8Jl`bkl {,Rb*F婎J~J!\-KŚmr!Kd`F%Is}B_70=HtSxM#Jo81R³_5 HI_92T4gbS -G`xVǢZ=t`$( u gq4{=mH H rV{J54p ʩbADm~2bQEɼͅ9E#%E#R̻`i(Pu֍1('7(RɌL[O3KS?r45=Ҹ&/1>KDCX|A7HMirlQnIN۫07!C& Ie&1HcU{{]Lr{RNv7ݗۊx))Ot\$ա, t{zr:uXɒb4X3:LvH9h\lD+2gq6ֿrv djJY댃jLL#8(a[5G#N!$՞R aM>c‚r*xXpIۺdeAdB3}-=cP:dAA O8hTPVfIJV I@It`8+>ZRc~KٵE8!JCcwY19Mo(5V~p3Zc]M(fԃG%ES7Gp!yPƺaM0~ TNn3X柄)r̥XXbX3K8\i'@A>EM}=ch|ѐ&|68(Z yCE#{o[.ZdoRDK7[WPъZ;1/Î&VwXh}w;ArW%K)g FI6yAF[͍ Ք eDt @Rs# b憗a ➱'=5o<\kk44@.K:PF]޻9#T/s{//*4Q'!v_Ӈ$VotHS@ҡ_bxew7K>*.8)qkdq,5X3]T";K <])۪n=|3X38]uYs086yȜp^I`rrR I U7ZzƸY -й\ڡ $wc$1vE{:*?n?\\$z<`v03{A`TvTLJe/$p{l\&;/t FDyZ Zы$<;% 7S_W_92T4gbSǫ-ZG`hVǡZcZ.w=a[5GcsN!u$՞R aM>܀c‚r.xXp9I[F3m ?1&A@C t.i@it`8+W.`x+)%?$(!`C%y1^:Uq)5d~psZce9M)@ԃ,G%U;k(bX|c"`au߀IMEƳƼE-)khC *;eu>Ee/?2uͳl:P``Śl:aLشqy#zbnl#KB5n^IP2?Zs0XIy;5|x^NB \axP36lid+jX]QnQYAi>s] {aKSv= $,Jhk CQ&߷\߻eyYw*P]Q4q"EuF=G?w_RĵJ4|$[լ ǿl$J.D[oWnd |ZU36YӃnV=QvpcXb8Ckf8dZCٕ4A*r@u݆@e1y_LtUҝ Lkh {f&9a[-x5~5' 2L'h {f&2N 2y˾ܢ3I5j|\`o6T}g]"Gw%gLC&<6'L|ƧiirSKsTVGXs3H<$oAmi s\|a5 E>:3z;ʪ6Pvf<U*`Y Ś@u}ktL[Z4OeD5ddhOH:,''tً53 xr&x|'DQ>4rp(#5*R;1Qr{?"3j%QLN:ye4vŚs4(U1>Cp؀]{s5Xm | B6#(ʵ=Y/ޢ{o1e__KjKMsO,R"-OX\Fg2XG\ Zے_f>Ț*ŶV*vIBzM',:q}CTy"k&|u%H?z~] ;.ݤgT#.y*kL(p| As|aby\ D-[0@.p XjE,xkR,vm:V1oXvcGq>%ylN/׸ k{9eR2H+"Evɑ̹༆_1M'Aքp|5.g,i؂ A0uasܨ.}2a>Apr޷+@%pϒLg)`)oJ/ X zƗ2^QU22*Y-DApуŹ~u=M$ZTӍy%ܺ[oxh8'rVѵM%m8pΘ5=]2z :+ہ[kۿC()?"Y ,̂p:;9Y$6 P:i%(S-, 6t2(d T?s@fbEDLm\la$ڭ cJiilƼG}Z_`#h!1bhnc`λ@4Ody%?=FQ,Jf:ྤFm3.XdE>O>p>8[%<* JeJxvi[4ZC; R.V׆s`wwN=,bnQXm$y~AXafkHѬadd dGap; U hÉdZ0y?zQ>Q*TU]UX%2-LƜ:]w4iD³hIR…[jӍ|7ܠ)MTYf!o>^ܱiih" PZcx).&4&UI/LSչ9|E? M(*Y ~60 W)7ܐuJ0dbV([䨵UI@KcJP2MVS$ T,8%&0\F[e'mRi <^! ( P5{s3,-g$nGNd-V9.Cx~-(٬tb eVb5`<ʸj 4XLPjj ޲XZxJcSmJ6Ǫm%,¢mM1Y,|>tZŊF%Wzyҏo(M:7]fJlkЧ8D>G(ӊJT>t͙aSNb`ME Yś o*Rweѐ_Y@Lr K8Jq2)CQa9S:!B JMb)_ިrX0}`"IoSf"]TMCcPfۆޛ춠$`>؂a@dIF2"6+rs.7^vGC Eq޸x[^w\%TsC4.vكa9O?HU"Q9[P4p m6lHl(XU^=(q0PM8^ ]K|-:l[Bt;?~|=-+6P %4߉YIѣw<=nf:Z+Ŷ!Q}=EJX)b Оv͠զә'T黢H*+'OчEoXGONliidQP$}/Nk6d_o=1`.9: Pdu uNj.g.CYȭ@ jiUYud;ŏ@Nx?G |n #U |nX_w/s/Wjת]&5f Xan )l(Ckni#Id.|^Wge7 k,R~fM69 $=[q@q"*֓0GuBT\Ґ#Tz3Y'mW"fS)&bE)>h.# USICHi.7׃\#atw&Lf< cq9M]xiA?%b178b:a*H+XvQ)DN :2 t-DN)dy$j B:Spq(6v2 GshHSYMy%p!=Q*Nqv +Uܰċ,w'.xuҵ/5v1;zorA2sKZ ^z'/rL jUKtXr{ }d\`c a0 G#B[:DԳhzi&!*FA{T'J8ýҺm5<{v>,UZ(qg iI6}Ee$^]fj4MQK ]E^ ]VK~-:l[BX,N֒ u[=CltJI5Ux'YF FAg5 Y'VAXX[ ^m4vpg Ӧ˪[m''yb姈e{#͈o4X!N&MnWWb螱6ьIq=>LaXS#˥vW߅d+|#ܢ/@_% Lˮ,+@]v$m!e{?n#?76_778O6Z?E;;Koe!~oS)=bv>* [A'M {VH,ۗK;j=yǕ$OA4O<4~Q剪+gÒO?,\;h.Kf 6 +]X7"z_\W?*sta4g~SȶX %v[>,+MN&DUURgOdho 2Vg[ӏlcus BIFM5c7_Dz:1Hs;[1iQesᤠ'^͑aXEo0 Va `! 7MI`:tOJ`$m29@Mkf8dX\e}cqҚ t A层 bFsf`-*PT -eUԥqw|l)!.겆K{G]džc"]󪊅o= 5uϑgM!g{8t1N["u{B0b0~?<۞ `ec{c!8̦0nݞ `c%c8W0Wn#V0--a>00    [+}a}x] 5a{a>Aۃ1X%;8Se`b { 3;k p(<9@2 c)ÀùÀý0j-- ˹['5C7}8E11q=1qhaH:p`^꺡* ^20 <νǀۓb%`>,eG@a@a@a@aV[Ŏ(|o[\w x+s#L-{b➁m^nOIJ*^8-  ο  ?"zhu{05]:@w 1'0ΎƬ.L7ZX w ڷ'婡e{XZ````t;| 6Au'O7Nq[ '(2hXܺ=/uE_ ù[ŀ` `ܺ=1OYذϘggoIpq=1q`|[FX + .Τ&@[ + {xkzrP6]3>2'PΎ<.{eAj ܺ=1$O36@2HùȀHHHHf5]x7߸°-Cc+rdob2/L.{d>1V[h)g> ndE&d^%y]ȽCȱ{ XPbNPօYmM;Cuփ x8ڷk^PEtߡG8}{0 fp$W{P gGrp$p=0p(Lv7y&\u{Gr92 ' *鐽 @[[\2 + /վ=/u]W\<_-a g'rp"p=0p0|wcO%Ɯ8;KcE0 P[Jv~0000f5]xƺ `ue|ꭥƜ8;|K÷1`1,Xs-,ο,,fos?uE67ɭۃ!Y'fCW܍ɜ 9; hkc/mP놤6.pcK}P ~cNky`21`eV0*~\jj|̢K[2skuM|HjH2FԷ AI36"𰲐%>^GAIQ ^5.x6{%\\ I%6l- URti"g>Z|'IOJ+>|KD4bv)4cygϦh ,Uĺ1c6Cop^+%&[mFy+&>>͚PcR$Ͽ?܅).iZm l~eQjϝ!7_Lc]9m:hko݃#< a!+<זB#`-]-ga$l}˹' FEq)_+C+; K3X}vB%O ^XFn9IBAd.0'YŸ$fWR%Yg(xيm$6@iKxY\gFDg9י(ա#òXݢn>Qw#(14nFFa͐PB3&Xdw@ERs U] y\0LoM?G!hYX }mpV܋ :{i{"`^w7S\R.UUp\NrI4VD9\^s4z_/20fYzJtY@J4kfq=Ҭ;2kH2T [I,H:We̫D{/󂝌횓2Cd v2mix0qʼy"`e^]sRuyyq4<$e^`^Jkyq1i[s/e;kzNgpv0I$k ??ms1)qqfQ6cm.z%-פ2,kl2w?'&g҃(^4aD$l0;$MӫΝt7nt˥?`?.?PD "D>oa CD,L  ۟0=cap=0DX3 aq = !4'dd}bjedɲ*MJZGc[n 2L cXva7Kdlq}S`^C!jErs+pǰ ʮ*\vs 2p.G-ȸkU UwşW AޕCDҥ9!uU4#"y^Ɣ[P;Į"'mmtlGxd"Hߊ0#<5-e,o.@wf`2RΔ/М|qAjL+ױ)?I[9ԫzf~wTW)LjmJ :e8Ƽ ýh̽fy5-k6HS`^p U -k} {r+?y5ex ̋Eyݢ {WK3D_6C$u:KӒ:-l\/@nJnSLHX{OHHq=;ܫUsGUUdUVD&{ߊJrӦf_[EjxJkyBZ?mӆc{epz?p/D/{jNʽs/ p/Ζ 3gKk{qr/WKfܹ gKÅ{eGpD?p/D/R{jNʽ gKÅ{eGpT?p/Dz{羃|vKK=H[{mip}#g{5-k6HS^ծ9):D^܋}hՔ!2p/_^횓rC{a^x[.+;^pp/^ doKd{ڭ {kNʽ{mip/9^2p/^%58X/zjQ7w!7p/^- pOܫ)/Cd^,b3nZ5[=D f_4VD9$[w[kCT P՞heG$hq}-k@]sHKk킉&[)-M%i"-?9čc)~Ňzeg+p=P/D@3hb-g,;^9CCE>URpUp 7gGpn:&Bk Oժ9~+J2qeF+YڦF$}rn6+&rM`_|ؗ/8ؗ]`_ 싃E}5ӯAqtI_Yӵeg28?]||7͇;&rO `|Xv=~kJ 6ad戏kbLЯ_ٱ*.?ЯD"Iܕew_xֆ;DUsG]% !N_;e"V)_ʥ|!_? -9j՜0 `uUH{} +Bt"/.KǏ6/`_M/"`c_WK^s~S7p܋ʎ|^v{ 2p/Gӛw]sbƥfˣ_j>\Os]J6*'Mdj5΂Jzz^rFd^@Jkzq}S/خ9):BRԋB WSZԋ@8Xľבlul|dW՚~eGЯ~q}/W[1R~klЯ{ ιe"`_Z6(b_l}>/`_|m g e"`{e_lP c,`b.L,;^%&68X ZN]L`DnD` |)Ԟ9E;DQ&rڶ3ӫK<&rI _|Wv޽Kk|q&#`v߅/R#֞egkp=0D@+j٠w" =wڼKR"ZGZ#p\KNǏ6p-ZMyp-"`ZfLrc.sǶ "LA#. ӿdY&x~%m?c!c(ِ %{dv 2P2GJr0;10EW0 ;ĕC[x>ܷ}^Kȗ W| 2/qīeRuD/ԉ.լmjD#ɤ 9U3  8XS~8X8Z<8? k LT]}D?L_|Wv>~~jJ ~uὅW*j)xKaǿ‘ɤV}q45\Wv'Kk|qYO]g _$>Aҿn`u^K.?D"¾,'ղA]3 &nd__8-*ɲ@YX],j:-V&UKn%=fkJn=mvYv(~|g3&g)nzώGsL$},Epi6 ifdH!fgQ`bBk /G~ЪLdi&B'>0`X`(Dj&_ $MVu~(QpQP usݕVSSZO:v7nӻﮦw?2tN7T]o$%B'sv"OYhgԴ\j|n 5MqLJ_Jbf985 Fb2EL٫^ dMLı36"4te!{9[K T8 1˿ Q++;ƣf*@ URtd3-'҃+>|KDy~; ;*-UɄ{PF.; Q1 ؕr~#;yw|D0TYxx~#g+l>%*W Uu%SyYxL:PR4]O =9Soy\Z?g JȺ*KPJl!݃ xOHvvY@|]c·k񀿄_,q/`:@ *pӱ\G޼΂ŋ[ZB-7"mA 7k}e-XWap1acߚK$(:$|5= gz2:QTϱU_J(xH:z4lV;,y';iטFxjÅniegG5`i;8 Ej< aƨt0tk\x͋"0O7@*(b-k.'P.D!Z 6UݙZ&@P ̻;'/WorzdQC,D '#aG=>kѱhExha) Soox xsx;3Y ga!'x-l_ki֗jww0Pv#/OE_EA`9~j3l`Xqw`,wY=`<+MSʼn2:@!UTWqLtCYU1x+7 񡐯=wp|X6f>EܦTicUS73#9F/f̍T.NDei^B(v'%r1l7JBˮo?M&a9K`Ao^ +`3ivqֵ,0i $Gq Ο\4`+]ʕV&Xd B@(+GH`$KJ7a@##;VY6BB>IV[B8yqI.[{G  #}h$,Cz@nwVBFY C悩HEll}vy?xp~{[*Axy7/r0іf` x).&4&\ I/MSչ9"3h+/~cGEQ ~V;eKGXBZ3 =zb` \bq*_|\frd (&PIpk-iŐDǟ]-eL2RBVT%:s3̴J4/˴2>M3 &~ex哓XWwaV| м8h '7\qL=Ž?i>rn0= =Uk%ETUXFG'ӏXMΐjӠ.B'z60g\VtAGtu_*?\PTuC^ǑUѼBɨ B Ӧ'7=Q<%kGPƿ]?隍7zGԯbof8S7`ɮY|ruB',sԕekY:F{$olg7a1>wSAkH+cBĆ8O(^c+{&ɄՀ7nzyܔݑx4bȡyk~! gk&te-]LjG.N7D:<H'G{x^IFeC+賰uAnr@;54ᜯvw>=[ mVsY.LrȌo5ݳt䋓MۙNh0z)4sJYSTijjZ,=1zbſ +pdX|4Y, KTCe^;ktEٶ <˴ڕ;'4À% gFp9> 3\a!38553-Yۛ0&j}~xv [-3pa:\&#,VOd).t¢D8V u'0 ӏ%G-1:Z4^8o|#`%C:KҼr.IV4xF>&)\~)&d drq. y rrT%{,I{EH/{SfG{ |oqXܗ6Kص+;P[Nͫ1 Բi"H,sk|Kdq=q~@1v#qe(桱 |BvVCpEm |pNikp_GK,? >I݄F˴d ¢aYF:o\}X'ѝy{X_-wO#WhW0B!QԤS1YA&RP'~}Y{Pu+z 2F71Ÿt{ުn!GX9 )! ӏGnhib/ uB D}X 맔&hKmR}EXVk鹐%"bɕM+hh Ug0W,i*bٴU1H:7H1buO"1gMhYt=}kd#9B.%*5#'8|Iަ=;? r{l$'xt-!!޲rsB귬m=;N ={O6MQ"]qN҇ ] sUGpz<@:ŚHHg =w &@ꝰI<;d: d/d@=HN~!-[M*d }ҳm)lll?l/"23+07V(g)Jciehc)ܙs@b([Y^V-g#nФL< C˿fWS;nč/-9 URti"g>Z˰ D=b{b6܇oɟ]u?UVkZcuuMl+o`}wuY3yHRPg:(iLfEOhZsً53 \ٕ.^AM ΅5Z}(I]l6r6zцp0c I@wdk}w eAIul 9EYi.{f&;v{ kv3DY56qi}EXAxëmr~Z Q1]NPR{P4d @@Ś(?"zh`:بZ㷧4\Ѥ:== P14{[D`Pv4M?Gn({f&Mb|(>5k$UCݓpS|ʗXT7w9PU{XO=C Gi j[F/Qu?O.iH9~U-ەTZ2 4}kfpˠGc#iƚ~vH(5o˹/84Fio஄yԬd`,tw@)F@ ^I` @l$ ` 'kxOA ?D T?ׂ&$!>Kį' iL$E%i;I6GL7 @Xm$3Ixof ,AT&.7d}o: x `p]#f y HV&pv+ޮ-t;lTXo [-aE F= ,6"׼D m6<]l,{FŚbŦ.6+hφRoU{66{ؘΚ(ilhxbY=`iCd [;5` ΃IR)#kfK)\֥KJ]zİ-> ,G0ƤE4 $:m]ޞB\oҌ,'!V?CozKM>< 7oE5Pud7(7`7EyߚJz7yOn:ˈӮd5e,_[&>.>dBa!朞h!=kfx6+MCd(Y\FHR#YhhUX$ @~ZPS׾ ^I``A.fK1P$](|$q^lS da۰q6li2ub*!u> cv6.%yAj1ƣDSdU%2T(Y ܹ YS$]ҌwjöE/k V d,6M Y-ّ,J >xN)E|Fw[)lx Ld`"i~処 YV# &[1Xc:~jUw9I?=gycN&{6$,iPRES&bAWPbL66jU7vHvK0 h.Z\$% ~S%FL^WJGꔡ"^^\_x k=w#XbLxM8FNC?kṾ 2TġQˏ8du7wڦgWzOÏf0TġQ_? y>``Ś;jj TC"CEq+p y<Ś;fܻ3m9T ~<~Ow:_S{~:  ;z+!)Mvh(_3R w,0h =_WyW.}0\c zښa\^a=CpMcEMtx-A"},셥{adQʽc}/ Z!9 $ܛmPG5*qGxAHԈ؛ԩ eMTy[M5>b]Bz u~h{ z)>!Kݨ'^zRjG'v66e ITinߗ۾ 2ˀ//39-_47e{O`jGbp=n3@Uލ={sg<7~CHz>GEc#yb|ڮgV "4ww|XNit\Z LLgQCϽe {':(޾\v4.;Mx޾yY e5>srkG#>u2vE/附nP& ɃW`u :gU!UV y ``Ś4´qt2b6 @,^51XXkfkxnF r'_3nW.H%c \ރ\C*{f&7875 6۠YNxIfbg3G-7TjrS9fK.f{GdX3}'h`j"ǣ4 \EIjF;6ыkk^{ ?ұRV(G<8,@o9 kgF)d0U#D?2Ro^1F#E;xkh*lkj?m\KUPTM'}!J̝S}q<{gRDȢF/@%@kvȡ  }k /%wkosߙǂM񅂩C;M3SpP a;.vzXvIq_jlj9u"8y;t̞3 )_T"8SWۣU#PN'\!4LrLsLr^*2Ϲ|$"q64`y26~<y~f:tA Ӕ$A.dy}5aXC'ֵx⻝8ߝ]ߙg^w /񞖚S)o,Y@3"p~j|8~jXanSd|hx#گOGnA&U9 k Onq$b+c>8bsw|+EbUyy9++7*8;#S8yɳPnFI2ڑe|K ܼmHdWh^3^NZM=w<<ʰmua&(E[O/= :([؝[!);lO.a3] v#b/3;nW+KnQ a]egS0@+gI !,uHO&pF6Q&:yudH4RfڜwmF~m\PwPytAjnjXan'647tze=cX`aFF}v#R;`ʃhD7yCqdy0>䟚iQt  G==qɔG?p40iT#RRҺn##RFW^$5BJ,RY&Sh*; D'ٖɔG w2UO;8p2soHb}B{uG[q(x`9, b^tyU0.<7Go獳o>8*op ƞh]Mw5}pI+ZNm>05*09 ̭7mWOJɝq4/5:O\ioA- ^Wuk;n<_'Ti儖NҒ]~ })= 8.8HӼҰl(ơA*C"x^*UnᎺxʖ=z`B;|8TA3"o%UVp P-ݜ)h@BZ-v:`Z3!&BV뾑QX/@zx䊋<42cbZT7 FPbQ!qzx\9NoX\a$ /kǹn؂lyΥ;\iRlWv|4u@Mځ\čet^oG+%~ᾮ"^y5˫pS4OTݪ{ wn)'Z޻eRp A("ns=;t2mR9wڀNcByc gھ;N6pJˋ<6 ܈_YG!@rp[ȥM`=ۀ3Vo,{a( qTW=*eKo|k(۪ry)h9FTFq=EwVi^̽Y#/'xwSaTND95@^ _+Jd3믄(eVN3F?eTӅE { '̥a(NM M'cv<ٞ$K{)$wSy6F#{Q_()5qw'3{MFɶmjPjtVK|v1͛HNb\ %7ɵ-A!tC `yӯ6PjVnFʭ۸r`^K-T`ޱh77W" 8:qJ0| (Rs+ڀ+D(+07WlK K5/_oSpfr29w`QpTleFl\:ޣpDzUc5x}Pʱ ~(ڤKkd7LdnOPIk *6i}hGC}Hv^Eʊ~/>jisbA-;˭5*6.$ʂ?YzS>IGX$Z1_zXVlWd6+.6[2njDnHw^הopSW<5N|À[mw͍ʵ9PT㺸bנ~PL6+&QIMa$K$)Mw<') 6/jj(?2ˡd_3Th44um!~#/7rl޿Z6o%̈́PYg{gyAlZE{i)~b?VK[W>GSA.}U6qZSiuG邕>|Pe+K։alY(/krFO\/hXOKTT8CG .~{ڶp(h   PG/_]Vz% {S3@'/2x>]1)J}徻G{df}/´v^Ϥc R?? _s6rA ]v;gϥxt IP 6q' & ^'c^(mDÃ"" `d9[NqS4`FDޛ,a> |j|(8k3[qWT">x* e]||NǶޙO=>^ > ^8FI0\n~w—|;CA'Fqy^䊎T&>|K}K/v3gשK?1O{FqTp@`| (U9D X/ܽz?35앲 Ԣ?9_| (8k3[J$g>/u} o (IuI :}2#ew2J|m|I$ӘI}/_8kZ#'>/uO;{sh|;Zdx|Y/*?WE3z|>]=Ȁ20>Eœ^gwKjiZēfi#r".]8kX1)EO{ԥk{Sq}v1ߚ&DR=?=? F$Tm Z?)Ο;߅6q?D}Co R۸vBn OO.\jM~w—u;FӑZ|ۑ5֗7vO a9&Gr|T(. ePa| B\fA*D*@oSX|^sb\( S`4</\x6OVp6/iv0\6-B60r -"-=-⋫9JU<ܱ{ eIQŴ8~ !wpfJ =Ofc{>ө8fP7;o}4q ݻo>KAik3].< + ?s Y6vug叭՞u@p1Jkp.^nuY4x v_ѯfOÿ\,^bNjxՃ 0-XnWv@tjnScᗧ/g-=ƞhtPݞzv猴j/nY>Y`7Uk:P{W{>.h$݊B<uUo&`AljʵsvG&Tޓ d~ϡ.|%)))ɺę=#SVoBcL?dTM4:ĒT^Qs eD0 EXlӵ^ z_A^Ё3?B|Lٌwx }(R\KL.TׁdxӖ^ѵ~/a —,._#zsGj, RTUI;O>;|$[rMNn99ׯ~ VM׀_HB|N~giuO^l+9{RTqyIp7hAp1[!LdU\iU< #}EccP ^ B6Hdf=o6Ys22mϽD5Z +dB' 6Aoz (B:(!ƭgFAo߹ASƠϸ>^ oĢdNK?Yl"fK K[-.E`skF1W5[3p^3@y [}ql-E#VeG:vap&gr mRmeX :ܰ=ܐqJ;!4>p'#Glf,T8M ]=u[AqCBKD |ӘCGEi8s[2-7\Mgc2~[SEǷۆJ7HS ;+<O;;CGӻϷ?'F}~%\iLÄZ5_XS;ȷw/q}]Wmʼ7}ps{}zvaоRmBr7wM5o/Opi!f DhjjӫSǁd~S7xH4 CP }9 el1֦0cMVhu,#X[Bop`n}HGC| gckt>xF&ۧ$A9hlF3Oo Xig,@Z+Q .)jQ&;쨵&YvG{&7GKrnBi1Yjِ@cDpO=lP6/'2::0;;f!NFgtnfgv6X瘃tPaL-dT떰\ظVR:yrO%)CUdOW\Jjl>ɩ`oK*NN\_sXfI=JEdD`A4-#wO>%ePlQjH=ׁԝBIcæu43 ϖ.[z-[>!99@Ui(A#G*U J@xd*Qc`Jw ! Vk_PfɐYHf PfB2v(NlXD!QljE )(R@qKkx"ŃW)ZQ4= e 0): tʧ~`t:/Z6 V$ /(jյGq5(JQ"Z"j5xZ&@6=M:;%JRA!,Q0P)#T*j(Qjx9j٠F=tF$Q24J|15 j(U4ʧ?]Q>j jƨQRQ\QjdsꡋaM'S{Lܞ=snizZ-f[|c-[Zs-5QRptˁpnҴ[U<uK9ꖖkuKMlT8r'[4-ecgXsQniQFuK- SMFX[z[4-e--So u -5juKMlTl8ݢnnҴ[spG-[PnG[ n)Hjr42@ݲi)Cg^@݂u Pxtvց &O# ,:xeKSrO\T.\ZsT.5YrGj9SMFX\mMLŌ %K5xʥ&@6\ r9CsU<5w[SrO\T.\ZsT.5YR pˁ⹹ۚ2K|nrI=Gr7r *m \\OĔ\s5<9K9*kKMlVl9rGxv&gҏ\PrAR K\Z?}ށPhuޒgDZbۋ|cf=n:TN.ܛ` ÕGVt@Gg6&|U8Ҍ%>iI$Ά8u!vR2Vc#u:z/G8=eǩ~Ð}0 B @2Y iMذ#Fm4SSFhlR6^\mlψq@?fW{@9@+U7Y@s:6#p/Up5v¦f,wHꪩv=6k7n-;<eTGW_{?xΒa1&Vjt:a QTHK)'S29{ N5DgySgՋ ;ul)P =MB$'"ߦ#&|z%?Ys:L峾ܘ65\w3HgE;}-F♡v]u!'Uv0YeXs3 jƯ('ӹg?K\{L`8'?./jQT|YzPQ]w~R.:|;=Ro@5h<Ð~0xi> u:D{)7f7NÛ >oWWRDLjVv ZD/:^9i ;D5S oYT9A9Atnlo7{5:Vx)p,pl>D M5*MZAy7ɶy7ws컜lf% kEv^.  L+)H {)PRTRZ̒g`ud:bq lqk`mEsգrr(QH=*.NtaqRq8'eU6Skbo+Ef~+Kd}Y˼0NZ*X8.wSEC0>ׯ,LY?mT:7EIliE%F@׉`{awE[ְUYp_-.Sqͯ21k~Q+X+NpXLo-5}8Dںu:b&(c<_Qŕ +6%M/<]k-5:$^T8,\{1M\>BJKcI'89vt.IW{AwdQ߮OS/_ IlnA8pơMEϕ1M%mB=&W\&u*㍃L$7n^Mk)Kt4 IY)*RRRRd e|+nt*Ld*d*d*d*ASEն =,=#9 9 9 9 2u;Y^Xxj5KtP \F\2222d wN.ZgDX݈HXHXHXHXܛdmpAkˌDBBBƂLN3V6cEABA=b^`=d0d0d0d0@[f3CSAחW7!el]#퀹]Tz%%wr5{}Tg?~֯{J;nDԧ~KkDWNva &= ~ˍ?QZ_ɇ;221  >J{)^O0F1}+A` aF 6Sҫ?0..\]8҅ l5 0Ϭ$tE@ #HV|RJG.p1[Zs L-PQhϽ팶Xv)kd]"+++qre*j.Wul*&67sFbE.eewUO)ػ9yvKdbR:,H\'GF7^'?8.gG;kH 23tH.>̙?|5cϫj5SB̳["8ɟ~Ś\YYPwdc`L r%#(R@ᙶ5 ="njZ a!a뎄urn^ E?O4wϋOy~&f<9NLPy"B:cdɑ:3PzŬl׹# M;D\>:cdɑzA\qVv׳G\b,492\g{[\8+~D\G\G\G\4\8 bge>:cdɑ:a@8|S׹# M Y|}b%zoJ?"###PF" K8|S׹# Mף;D\MM7E\Zq1Xq=q=751q=k}u.B)D\MM7E\Zq1qס8|S׹# Mq:b盚o>:cdɑ:_Y\{q)@ 0=7E\Zq1(q0@zo|S׹# M1#::::e$:1=7E\Zq1(q0@zo|S׹# M1=7E\Zq1p1=7E\Zq1(q0@zo|S׹# M1=7E\Zq1pZ\q)@iqp=7c)z\&GY\ |>"gYhrd[\ |Sqqqq2p0@zo|S׹# M1}7E\Zq1pNA\qiM׳G\b,49N\1q=7c)z\&NJxo5b1q=k}u.B#u_8 b1q=k}u.Bu,.8ߔ~D\G\G\G\L\8 b0q=k}u.B#u?bhq1\Mo>:cdq:a`8ߔ~D\G\G\G\L\8 b0q=k}u.B#u?qp=7`)z\&ljY\ |"gYhrqp=7`)z\&G~|]8 b0q=k}u.Bu,.qM׳G\b,49V\8 BvS3ݏc$jqAdWȎ9Y#sQF'c,fqAdȎYY#sQF+c4bqAdȮ####CpF?"Ev#yȞ>";edɑ!5< "{7{Ȟ>")c&Ѷ' xFP+Mȝ4T ' *&iJv9Br#o  ΀` "{/옧Ȟ>";edɑ!?D~1S=k}Dv.“cC2Adc6"{\'lj쟯/ONo٥"զ8# x "LdOjȞ>";edɑ"{(e"{"W[\mDٹ(# OשڈR=M?####pF3DDڈY#sQF#G마r=b6"{\'G츟lqAdO䠪Ȟ>";edQ"{,e"{"UTDٹ(# OكSDvȞAU1=k}Dv.“#C/oqnqAdO䠪Ȟ>";ed1";B-.Z"~FdGdGdGd$dT=a*"{\'G츂 'rP5AEdZ28WPaDD*ȎȎȎ~9DD9Y#sQF# *ȞA0=k}Dv.“#Dv\A[\9"gEYxrȎ+@ "{"UTDٹ(# OqfqAdOjȞ>";ed ;!?97?C@9[| uIHڐ!ã%e5x,mk* ! ! UE!!߽|~{yWѭH`H^8ѫɑ!5DD[Z:"gEYxrdtDtH1-=k}Dt.“#CwQ--tX2DtDtDtDt>H@@ε '`gDtDtDtDtH@t2%jtH1=k}Dt.“#Ct2ε '^uL{EDZ2_.:"gEYxrdVFQs--4W\ѳGD碌,<92DWFQ,-艬Q5Z8ѫɑ!5SG.эD( ~@:"LDO3>":edɑ!U]&'rF EDZI$ϻ2ey1ix>.,O5Ѩke9Z]m Mqg}]2.mj{$8o7QB-y.QuRdR}ک;<,sBX>\P@ !i< *5^{ԑi"6gނ,-ㅳ AA0@ݍ#:y 'r GDZ2ϼYZ#gEYxrdgނ,-\}sѳGD碌,<92D3oADDY#sQF㙷 K "z"W\}Dѹ(# O [է8#[=\}Dѹ(# O [=\}Dѹ(# O 3o Ѭ'Dv^we˶*ƍҚcg fL~M3f#7"7~hjltV0.П@oO&Cfiۓ,;Mf7>yv۠DB4,f޹HH#" 5lfwVy{Omw6h5m>+WU#" ͻHH w6h5q4<\/&V׃\qu5kbt+SZe_ 0bXřɝ5ٌ>'S{6x#'P@[Y=_3dFy** U7{?w푷&PuƩ7SÔY{ϣf}ޝx_,JCQoEHkơ,)(nZ{ .9YAY~>ر.G6^o`C.Tr4^\{4;9(l4[sϞMdƪ߁TQ s1p[00ZB/[ՍM5c1k[X5KFnz9ލuϾTt9UVSRDВѭ5ypsfqX(l=_\^}ÔP\k.!)`S T3 g DY:QZvfD9ug! }3${$fm&ѐI$0Ivth$`|LL4 DG&$qLL~LL.&DĉEGVDH$H$ ɛn.2&sid^AF&o&9mGL <_՞##g 0~yEw US;횎&x̡4tSp,OxM3͞xG R y?GHGjCBF \_p\Ge۩3Ƿ:]y(¥M.s_sXO*!m%j_h:w>[-ڀ2X}~ˢ_vA)>qHIh}Ōb LFzPh+d`iwppV BBBB=fP9 `IMn6h}8ykhM1)ma ILqOV ZS"S{(?rq#JֈP! $ j4zfG`g"!i!,C.A&~ThOw g՞u`p Rj=YnN Yf_3T4Y<}q=k7DU5;Գ;guuդ1I_"bs/{TvDZOuFtk9CE67T|E/.zRg'&?Cw*}>+2X&k،( 8; z,G 0mDOֲBci4'%AY{Pr"sZUuU7*\5\l -7ntC˹e˵TWQSX/S|[]ٕ g.?\?8[|ɍv (QjݣvDC8q6V&.iӻ7?\Q][p ~6oܰЁ!#W׷.?mTFOTFIlqoЪB9жwyO*N>ej6v*v* {pS\|w7_w?s=Nι+k}~?V >3 `77F?Nv ]٠.2EhE{䤾!R> 'Pe<:UպCc-ZN4肚"/r#5:!s+&Ug_|9zMBaEfF5]2.^v2u4]e5sa}p J?ʐ_ʲڄ{x5!H-3.)Q9Yvx61tyi i/枮]W&o±jp=N~+TWDrm/vAo@fM^i9x/ZЉ1[`_ə3]YҜ9Մ5[EZ׌%-_Ӆ7u3Y(Pd>-K?- r~TS*k {2S  &d[W @Aꤷ%|?{$osdd,57$0%HkNau􍞑uz #go!,0YVAeߟzԏ[-mVK^^%lJ̶hȡfqSԡ ]u^% kUk6 XIM5=5pM29]y1oFb8zwX/֤߯o><ǫҡ~_JvNFЏpkP[,ï$sj=yr,o9\jEXljq@ߠdd:?Ս ݋k}KFaKrc1Ѯؚ hoS62X~fṰuȒ'aSjWٿdoiOh_ 3dg`E㌵d$xݛ)@LuVK:‘Or>:B§@`~t5 ;'O?^՝3K3;~g>{?g???RGv y$ߖ2J%2B,z gy0x<#_W G 7fm(}SFzF6K((9Lv5*jή)%xZ)3}muOuY:_m⪉t `Ix;hJѩ` ch`h:֤X{3c>|=M*)UgI#2DDZdY{[gQNv>Bq6w>ʡ ̢%:Vye0;ċ3FVa5G0]Uj7z}UKKz:+`H[_8n j0`<Ѝ?r&P7vzäkǙ*(f3d~itP~fn/B')Wd-N wGL.7-ztmoCVB7p@ͺ 6"^*m,-/Qel -T+#P};^6ǂtzM?q<׳`p[|+~R[VY\1@ŋ+jkTW=$ԍWAN.ZޮxW UA[)b{$iki W(V1ꔓTk@?ab $NuD:]2ĘX|Aޞ^ޞ?mպ}cR ?#neA躨R(J]+54q.B3=Tö+lh#D厪Cl˄x0A 7W0q K|sFZWWM;P~ۙaU|'H8"0 9hnpCkQD匜o Y~+[ ktF$3iZ풑5g9h{K٪~Ze[NrcR {=G\]D߱~ ^^ݜ^ݲi ga߬crxLxLCCCG.hME׌\l-3uCtdO8RоlL KG'%dq\%>rͶv3L7Bi!7" و\v3 !|Tޠ'^A.mr廰>ew;}?<ˆL~Jj̇bVkT]I)o&m.-,$@9̉;?"DIu:3᷆ߌw#O!Ìjיx Q>eٱC9I݈<`D31{hSX;Is;;o`3@Yx?uG@۹E61@hPKI|Zs# >;O7*\]в$pC!חg\;ZUtk>nUUܯ u1'/?\bE#:uud;}T7$٬Y,w-u)6U۹ͳe>Yv181~3OlȌ6\}tm, v+ڞg/5|)'vܦT=f)m{mߡs!mmBSqbn}~C6]7AmO9;:"ɡ5:cK:HlHlHlG%i$ k@ w N7 p㕲o*,:K2N!/μ4;Tٵ]SϛB5RqufJ|lqS-(]^Xlr꿾ϋˋM8З9cB&}2znBaՕjX!H ! *D~vQ'q5]B"U39LLzle}Z n(&`0@[q쀬N'5K|Ew焬U$;g Œ=_*ǥԨ9vamm7fT o-a}{1DHD!d!qGoJeỳò)U%O<󄯮=fP4#Y*ѹn?]~MG#Ble?#vohJ]:٫p.DƠۻϗW7xAQGjӅzmkvtžS&'`m0]||?rC_Pv5yyw`|5ԩ9i9S;F89<lɆss*o!kgyE&\C\{Kojn3yF:.5L¡&۟[h&"aaN4,G/ Kw[㒧 55OAꃎ*^A)w\D㛋7Cׂ3|9%5^8k 5Q|ƝwE<oTLj 7e֬f[q#*=. b`aOI%G#sNT;^kܼc*ơoߞ~9fh]b.˺м]Q ~.0" 1`GCpI[KWWs's?E' Da}~Lc_bh/O_\Zz=Ѻ@z?fA/q2gll /z*!NEJNoN__53:$fEnЈLC?Νq&zϟ?]{Y}bgwŃ3nv^a{w͇ 5ٍ _vz/6=$퓪O,2=%IJEz3[CuC.A&~ThBOwS g՞u@<<ۍ85PUu: wHꪩvϒ:MY? gYO9^n{١28h݀֍ek~v=J3ZkUWx` bLͺF'v!uI3H dayZ3Ι$|CgEM"J&` BӪz_O`Clw58pi{_|rcQ6 V˹*="vEy#~ɧ~OhNcN q$Z 2 BҠl}A>^^KgR6ڹ-b&`POqX D7eXk+ŚA=bƻ /ڡlPpXQ=y kh23x-" n=_}+W=[r{TiR۸Z6۵MokemkMf;0i onuŝ.zAKBsT,Ծ骆Fn'Ź-:TSg Wf3*Ċy#C,,׵{\:eҤxM[s6)׋-Jf x;pVR-rhU]LxEn/[VZd:.YGdN-xlcG@FvHE*P[BvPɱxB Vlxf6j! 1,M([^R&-(+mr"Qf5,jZc{Ȋąݝ*L}C.}AfoMDP/2&FNt%DtjK"'4blzSL䄚8AUq8n=$ GC ` B5[WjNCߔ5[֗Ėd]S|]A٩ .L`[E#ҧzzntHF @kJt56oãc [^Ǻ0:roF5;~5ᖨ4@߉2)*4ѓƞG"nM E$QlvhJkZďWr]g4<{L'g2ՑSqjnjءp[+X¯eknPHw8e̤ csѸzYʁԯ2񅐳54_;¢miBXK9q͋b+{f&mYSHCHѯ ߕBF~#E|g!| gɚ8x [Brpi#9L ,D014PC+Dq1)0(Q2oQ9wW23l$^[xU8e_[_&{Jn:d m*g ϓE T$V8z@d3^` /ՙͶMĥՂ|{XgUB< Hhǣ FuS}#Eu!1 ˠvBʋ8H9U i\MfT,ܒ$XjJȌKn *AL2l_LȲ~mc 5+:}{y|NZJm ٹ SnB`jLg:x1a{Nm=lftG#ߜf[J[6%~ xCNctY2"ctd$w̮S/6-)R`wi1_H~(2sMkuAF֜Mo{9G:.ԋyVlgSϛdl(Rwl:O?׀jTm# r6%u8#<9Vl[uml5<OG~[O1}A Khg?B^޹!СD:[䣻>5&4PH.2FmqrÅ8j%-{D˂@҃B),PdWOϔ;<9eRZ[Ёa=2->LX7FHoO֜;V f?~ѣ [ ױQS4/30ݡ L5<>vSf_`X;77{Q^AY2зQ0S׼R`]ۻ"gRكUޢEuS&xE[-tS8۷Ҟ:8jRO4=#Y&r)Q0GF:%G޷o,!RSE`iZ>u^_Ct7JFgM)kϞy3~ p'S$5w_FĂ:~_\Egv(' UX€ nؓՌ4X,io?]:N~яV.;b:"ikx³yQA;:gjlF+Mzc0k-ikeޤfEpR>f42꤭8!oD2£7lv z߽D˫P]OU) hAi%$HWG@B{ ڒHUiRIf-RuSɀ-SɀT)si 逭M40tDZGܷ7!SOćv4!0#bM: sX .,׿qmOhд}T;;~ +1u= GTM5vM36knBՌ+ Ioa>h52נ xLr~[Xz<[x5pd ak 4P !P$ŌI3vj*I!5[۔)qmi{nTpϭtu0 q!yLB$2{nuLB8$Z-Z=N``'go/γ- ?o^:d5Q|>g.d/YU##r: L>Xrp$j@W{{VylvCj4E ^}uFH{&4M{E? %F%m[Ggw}#$8b5$K o?ϛ"A(V)vēoޑn^τ ST9:-ۈyIÎ@ }n@ey 30ZBvcy9xD\yÿ(@:V՞Y`c$oR)7 0؟_ kH/ ו0/K_/ mWfnZ@-)؟UV3z/-޽R-Zz>^6ţ{TĵH%R6V +Ke] l2zf:Q\\38rnN7.R00? q#̻ c3E̘oOWږdDxWN2ϣ\WӭIT`G{ߺQ"^ |Bb6i[<0ʡd``7>"oCi3|r_va_Q2!HsM1/6^4>0lD'l̞/:3ڇcZ"#|XȝZ%P}~ t3`c[xgDE Z=Ak,l#@ﱸ)`yǣ?I /O&ҕcP5鿾{@j>yynݯ6IUXrT<۝_VNs\m[e`KwKg5zkrpOn}5/F5qlck؈Gb5'bmQ-Tl{=4tlwiG*z..|8E:~KMS_Šs 5&`FtTM`=` MpcOF8j#t}寏?T_g#LԻFbOeègN3>`*'4XaU\P}'P]|g|C56[Q (hw#~AJDt!R(6d>&Iݖoڍ>Mj9>Cr:ȵN!:~k{=]/):a\ߪQRyĔ T1Ef%@fa]!3F/md#Ȍ6E2yGdzPʣwLrretj@ZPSt|!7:1QWJ%᠂j [ېθ QX#cKN]`-:ouZ/Jt-`{ y ~@ivcB9>M9TMi-: /V bǡoNξ˲vTpvrV_0 ݩjutP(IjB5rN1;*,>\\~ F( wqFkmͫVW~r}l[:(pٔ%{8T7}-ޠaXjf,ʣW i{O*G21Ot nh8b5͏(OkɞȆ=ˡf|hHZ|ܑ6wUb,n\.wMmm7* c5;*&zQy UYŗaM/Wwafɣv.hٙ+7z+#ƕTrJ)H$%U 2`WW/z:fXI\|፮Eja|Sw:7g;`&Dħu t:"lS{UW1u*WVD<ߪj#e R5ɈW58vfנuV@Ժ y>^"z_"Jʆ]XVᬦ;75/\ \yQ)AUa0 M,?ի5tE*Vw/ڙ|n_ilP/Ӯ)7ۚG7l7wYV]G]alVQ-峕Ϊ$mr| y;g͗f)%0i ق'2o2(F8jX|e,jqܹor5.!tX~f > evN6Tj"LL{Q2\j[7 wf<`0Jed *"ŝ,y^[T({بUi?r6M2"I*UW|u;s.171\kqXHA~.{)ޓF| ySE,Y," قU\ :[|_U&M FQMQ Kس.o q/3xeDjo? 0<mudedf_-+2T<0DYWI՟@{>BJ g8]eSo, )@n7/ZN7}f&*SpKo~7m~z#g!7o)2ؾG~(Գ~Y}՞q׵7,x q#CD1q.noPsdM C1Qn0DϦOe dt/x'6lS)# Fm̡uUhon3Njyc;!%ocഠmَl0_wʒR/W"+6WȤK]gyo~"}oTz??_?~݋- -Ia/VabGC{[N ;E_-h[zRn &C7Mjw x [MEi>:ݮzԚI週tbU}}o` pau} L},0r$TPﷻ7+R?~jDZϝBX0ENG;Vȑ<+%9~pt^6OqlؽاXO䶄Zv>4 p=?R?Kf] jOuQ١aʎmH6)zi .m#zzLV_Q!8RWZpnqPkIqImWQX_Vݸurm~o:AAȆNǮ9H~: ɝx܏VCU= d^+\ ZMof^\قB+n_C:F:d"wD#eAE=wEݷ»ZrRM:qIP9Jgyټ:f z ʫg;Npa=AĤKZ>qjqeCkrs#Ї.0?BZm( q(<1%kyZ uazu]fq2ߍ`GByVU"ea?BFb |EBɴ"?2-V0蚳 1ј2dG7kLų[Z=9Uu=g2t/4 lr:, L/s>;!]WX~4Dk$iJG_$fs3wL}r0Ue)fzb{u+w/ S% v \5d2 Ty5Jn{˘ Byw}strZǣܨza@K`,,!l~!ʩG;yhJ,rycGuvn8 Zo,pE_zZjWm#O_qkVk(GitEMwXPqOOm^b -;-dX[omp%AȔˍKݗ26vD+Ai.$UY':uHB9F̣J_G*c )r[~YO ;idJTO9)<8 0d*$kteBI .P^䑦v]FtO1²Y(jqs-RwEV7͐-oC?( \D<K@tjfV\FG78:[:\}>~I*^²Dz,"WǷKS?oy83_ >iR,M˂ӊYʲK:E&SJf|E9ef|I h%_b>N4˝AK z]Ψ,f'WK76[:7 1)z0HOy]#i0Nza:+:ԝNz\6^s_-f_W})=j\._n+Fro =9SpWF%&=lR9=C{O?Qd*r ٧HTg%"9 ڱx=DTtXΉ&t&Dީi]c l.F-5Rukrx:֖w]!p9*vx%Rߕ47yฏ<N`G_D-AEI`}}t,,_} ٤w:pQ$TQtq[pfېv9-XۊMQiR%XqC`œ$߀63Im34=v?ٶز{TuWZWi,w%SOwVܸfU`~JJhGĐ;|]/dut%t'hJޓʦK17Z?ӛ vQ7Nn ӎD녬ɕ| 'v֟b}UO90¬nx8[2J6v ,8[iZ-hkYפMf LQ$h.Eib|~QgM -ox|]˻ j7TuC8q8ϋպ^Hjh{j/ofZUgrb!uК;c7wz3B5tϏQ6${k!LCBe-a:+[<ԝ-\[]kE[̾ [TX{v[<:yj*"<&pd0&}2ƍ1PƖ2E4WF-T)RՒo;#iozʳۺ}t3q':nutO!=dי&QbM6]cR#ZĠ88"'5XYXT(WP=YY=@ljӷFs(NlӵtTv2 ϲȍdu[љWG^m):^3/N졷d<^X^鼏啁y+f( gP>2.9|Иo6my6{wZ2~#>Js,϶}w~io Ƈ7HScb?C{~5 {"8h>醶[[!>VkJ `v{Mb']/b. \Fe5wax7KlvXl~gУSɺabւļiMPR *CW-4ō=rׂlX:ɥ&dv _[ Yj$=cXQ`P]q7j߉Ukxb::N:#:3{ ۯm6[[ƱX՞Y?r,?zQBmW,0:TWG7) IRuBưjLz)mfgKo晈g2,-lH϶Hwl~Bۣ|b͎=~iUE^=jGw=LˇH @bB8A*ͬdJ̔u$F))S9Y0&~7r̀u^C>C{qv6dO)^S4>zdm@L1m?!22[D@#=&:=gP^q}k壕S>;hM卺&کU8pHrS)DZI]EdҊH+""*ojEkEt$v]*"[+""ҊQTD AÀo@Rw>EQAGpW9r:H Et3T-EDo)kN:~:-u [ +PNU~i]*6#s62XP?܁"kn+DPƑ?{FBeQ2ޭ`˓>pW^k I9 ֵG9caT1QwLzw!eg& ]zcŗuI(#]Q5WnSrΣrKr-Lоڮ_ρwRλ@>SFX{gmZ&?_zw>-NQ{{~h͉J6Z&w^$s3W]Ǚ_8[ K3{FJ͊$J-.MSywSx˫yW? Y˲wÓ[hpcE cbߴlBT0,ʈ3 š DB'3e@9x__F$蜃t*h- <tH9zt#>X/.Lsr]~i30WF"|:z[w폻7K2?~yI،J,k.bv 1Pp?LÈǂ МЌL Wd)gl=3Mm<kt+thDxobL.^,kA7_W\T""ob^N_]+k5P__oBH,4xo֜LiKo J]/{꡵*K4. dӢ#`|ʐN!i{b9Gtgd9eөPꄬϗZXIsaKxV;ETtG=ΠsBKſ\,rƊZw1|H8{auFmi5R+XBPX=`#qxqX='Cah_<ʆ {(,$)5:^ o{WuM^f)޵:-wwø:vdM-PhE5T2"Z_Ӻ- C{rh I/䚟ak)&t.1-]t'ҩЫJ䅑. fte1"(Z.cQ=7NܪV#Q Yb#%3VHn 2kBдHe.!srqk5~`3b*;[v|G;zh唨UX+O[c-Wm3ì"цAo̕,ɜ4̬jTZTM Cxdx;we9oƿt~Iտ`2 ?ǔ6ƾ4U^;"9n@giW֨Drw. ;Fԯ|`,U>Dt~sS'ZvM_ɾQqg\=GFu:p|>"B%N0cV> =Ll+Rl.Doǻ>dx=ڮDs w Xqf*N|Dmf 5yR nB4 U`bt\klf/b ؒB#*\a[Ì^̊Kr\obfmN6Soʶgq~2*d* }iAK<رBHGF6u1Ǵ=?p -b#']ۀ[ gb;qf* slb,0ˊnK>lH~)l/7~Y,_7+㣸s#57`n_-/|~ۇ?K+~ҖYBnp-[W޾\, gDUE0|zK%1[_kh/aah6"ahɓ丮@ׂpZt%ÛW!q[r:`Wb*E3ږ rg/7tf*WMPP,z i9uHӓDLjɭWVrbnnXV/*;>)Ʌ2JGzzg:o,5Lnjijnx#9zk>xrk-0-5@\+~}\peMX]SQ7['*KoGV1Ͳcen_@uJ_Ka9DVCH:pk Jğ|=):*F@&V_K*):P%tdF<\]w}Cy@tY_(lӚȩfUnl}6B?e ]L.(V?l\zj6W%@# |I!eбiFG9gQGm&Al lg:.ںӦBOS5F.VBϴutmr?}VªjPٶjcǷeBuĨ }WzG-Ϸ=U#UixrFI Q~p`u>;D #75wma`ŀk P c,_+ۮm*8#u]I ¯?׶H,D:J~˕ME.{9&h#Gb& *sf5)f頀]~xEc,K`?QpY_6=:^,f\)f=]KkX>[=h'K5b6)z(u nW }ީSMt<ʖR^j9M3 71:>CS<䎭3ke[Lw)nff=\Œ}v;]DE X5}#"~"y+ (IU6t@hzèH*sC_[)kjUKiPjcJC`5mdj`4 c*im#+i'}`g2i"+~qOd۫2i祗GQL]¹>[&qS-n>Deiڷa(Eu!eS{==\Q#Zi3+b$28M6VT/xݟu7][y~5,"%.^~@ux;gPwV-鉃:\ N'(\*Jnܫ j.UK6n %w&ҵÈW0oX3IGOx-ŵKUOz=^K!ٲgwV笗hv}-;Or57VWF|1W_ %;&,q6KY}ak)ۀoQf V1C|~=Hٲ|.E&4 ϧ'W4 +z{/@FفXZrqibVh'X" !ԳaD¸sȎ o&&g88NɸCKm'qCO҈ {M wB/\0iĘײ9-}؊cK&Zk;idq;sĶi e6ib9xq]x/w97uqv-зxv祉&xw7榟o}? 4 !'twRX|b1ʼnZ$q>QA} B7w UT#hNd܍00p-0&a*`?01}w` pQ,{2|5]lִ}pXm|Ev 偰ǟ\ġm_ =;7 Bp'0uky.] z^}7 iȢ$Ei z1Y nG^biI:X/^juRW@ %7R; R4Ni>KK- aԢM.x"[0\6Zel.5/M>@6p"\jfR 4€0䅆a+[Ğ% 4 w'nM(:9@6+DArY{" 5pH.LLS@a9&',u!Z-aqH3,?б(3XɂÁX:Vw(e.zP!V_@V >=I:\DY!!ga`I0.cSX Q +c~7ܯ0 AG͑׀}h8;PJK=`1b= q`KYIC<8A%s2Xh`zV v8 (y;65}7aV {/]21q)&\A2f k 4Ia ՆY!V h90E`%#̡ ;H| ;u9a[RȔIaZQ+bLaƆ =L ,]?3cya1u:ƻlKݔ~8ID`vLqİl@5m/v#~ tyÈa9BW`ՄY C:ie .q` ċ,ذ&}>$ǰ#_m +'t E }W >Ǣ"S?`m&*!va&zQ0@Lf ma5xX`R"cAdôp|!x(2;XW&{4 آ!V`X{+c5V]uƣa՚ |hG7-&gEpP}/|\GrA`S),SPmXt1,+;cF ?bW6THsE (BD6a=,?\<:xVp]œ8"`,ip5@Ln;rLxCc1t4'DžvO8$L 4!ZpAF >7, ûr|&/C4^|ura'1>Rs!l6]2]BƬB"1$N=+Ff} YWkx8C}R 1&N.2&b01,ԁ`]J-thE1J5ʰ۰fP!%0S0nC崀=mFb +u20.Ƀ< b(dVhzXB0;r6n1x|3e68xCheE3XcfU̗v"./ SH6!t!4 D`XD;p36"2}h8zbKN  M|fk@:4jt* E d3Q6O<(zZ׋`c."r6 MlF6- ƈaC'a$0(`g)ÏXo38tfG @3;% !AD#Ԅ{ͣKӃt2GoAnciۘNfHAd@| &$c^9Q{N=ZaATAم`OehfE `} $ONa%do]9kY0&|_E j ,Mؼ2XBOšM ߡ\f!3ifJ31~ߍ+Zck3 U(NS]?a]SltsQƯg}$$kWtz2^\iz/O4ݹ:_ܮYnt߿qj:O,[:|2M17}W'W7TD]Q\4|˛w,Ì-=]ɇ~K[MkK<"0ǻkAi3>0 "T` :u'"( #\/b ._..YLI`߱"އftfjeJ`K}mc7,ɧ$On0c*qC񕕁>dS0ұ{7!d߸BݳEWhʄt}9@MaRWm9`%.#ӤCd4)?(lѐȿŞLyI;?e'ce'ceE>2BP8BP{r1FPCn8}nxXᶾJU< > ؍N`ƌ"1bJ!}q ;aadiDZXԡmͩ'zǍ0/'C@a!y A$)&1b "DJ|Z1!J(򸼘$($cs!&X͂mF (d/ *E%E!}4^X 9ɹ0-i8#gY$1'f˩ (mKY4sZz  &% }(GxlRJč0x{cxiš= @Y^B;$=vI/.FgSǵ!f< e E"/JLF 2͆˜BNePF sKxbȞxILF[|ˊ aXAA+PF@)$ RrÍB,3LL-WXT4Ja-K4iZ>>M.J(o9*-8Ȣ@)1,,PX 8 =9J1A\4R <KX1 3AA2傛#̱RJESA[j,gLF!,qcӁ1ĭ,R0"qH/fǂQ#%@t'] 2.) GF,:c !tD2T+!P Ȃ'.aXH8C<0n#nۄ:;71 ! #En-ʟ8#(f) Ǐ`dxxOJyqĥYX!M- 58?$H_ k!)2&2lR1IgXV"X j7`(g%|`Av黾i^4=X=% =[X 8%@a%Fd Q0e`RהVeQ|Ӆ$a6`P!YԌ`ICaAjzc Qx!ރKYXy$I|zITe$4:LdpmI`[p2c4Rhf0m9dh:>o#~e 4,4 "  xf6܋R&-BMQiA f0CK 1&`C%, ?4N}Vtq !ud'2H! Ҍ60f$Q: >Mܣt2 &p%F-@Zfc3*>D(x7!BA:JXR(/EX ǐ$7|Hn$D b4Y,+,{ A!xb ~Aav\/ J'pHX J3oP2+RD>'o,'>y8ɛw3anb: c>\!TRΕL3F@­H^(DG).`YᆹCSJRUS ȅ "p,S.2\ϔ eÁcSY% ++r>BaƷ0r?F ?[ jvX1<7lpو@ ()ÄL\xD xa!<…ChaB~0ld-Su+A)07LaKFb K k /j#DЅ aH# a.!>)B!& c(t"b XӸ,3C?1zXrĄŎqn\J68O ܅x4R)Y0Z .1`0Y™hJNǎaŞ CSP& wЃj0#\YX)"܉dU'Љ``Ms'؄Q&.!HՄZ88}tsϊ۰HSN`qߠ.5gZ 5X-.DeP9I@8ufw( B{$D(SٌJ0Hq/8.$KhE!| c+b)ul]I}EL?rһU|=":LEs?pihv8`0Ȍep ##xЕ, J!O%|ۗHsI_(o!XI)ZfnN(%TIx`=x{Du,‡)(Ijߛ0( L2!`~)lC]&$MAg 2GRXFFzWP }s7\y ''1m2XyYjn(œM>(yקſfJ{'0mR>b%kwiyh/UNzq4cTчzV>Un~D;ydYR\<>Jٔ,BEmNg,+0 JXePCdISfdi \92KC4g&}-gAV lBBuS Y"2a=d+@ӿwn&rX$\"D4H; 3EѣDS:if1g>+XrL@ kVks VdREM^0% @-d5`唩A e~h5fn'kiyLDĄ 7pzC&5I*6ȹITJԕyyE4S:r 7ƌS E}` zס 2-=̣O IZfݧy%vSgQKNȕ j{̧ϡ44#Ԥ|8DKA5wSɉ._nMS ]AX~jѼ!"TEWM!I_; iM.5Ѐn}3L"JN9(r&9B Za&ɱShXBRݣg[čTRnH,OK4<++DL<L"Zݎۑ]?TgIayՑrIrфR %iiR3=h4jF@M#i5@#h4FP4jF@M#i5@#h4׎U<vx%1?쬠4FP4jF@M#i5@#h4FP4jF@M#i5@#h4FP4jF@M#i5@#h4FP4jF@M#i5@#  wGPWa{:RmgTihХi5@#h4FP4jF@M#i5@#h4FP4jW%_>|%4'6`[F0 ͉M#֦@sbkFA9i М4QhNlm(4'6`[F0 ͉M#֦qbv}r_$;+n48E{j#G9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qB9qY!,wV0yu ~7\;YxȦhN)͉7@s"5LHN-+qܦ_:}[nk;K4CH\j-',\(mΒ#7 'i ТV~æG*ݭ% Fn*'kj&smho{sk]QM#8S9'nmN,H֡C!QJJ+h^% FnAN/ DyL<1"'nOA9Ӝ "ʪ*Zݪa9q&ոˤhcq+4!oyrmlʪ'zNկTUY`Gks3HM39^ZUݝbxEnUթ9|pmlcqeV\du'Nē>> ɉ3?v<.gf/ G[X -kW N|wksEC{N"56ipZa!flD'ooA{T roڧP𐇑kAmǑ8 Y CH+89vn2sXjO`;vb'tɅ;#lCZBʼnF{qD lD_N)HXdv`̲m`CqLܓ? 6ն -nEVs?#}9!8qo: 8~[z؇R'#?R;5'!8fzhF绾Y[dA@s="J3|LďIT&{ZΑ,  &iל\xI[; NvhkGsb#bXܪEBj#=Cf9>?: N3Ĭ1kB·^<)UpE,Y2ﳶ^2C't-'wOֲ+ oiN[JjR'u:v"q*d%9P  fA#8ON͍lr+qC7LSchn6+AϦ/'MxflKza Jyzm @M#x7L%D 5ljN4ÉYkKsbyaݯ.N4ƉEkK2/HKryǯc 4ʉEkKJDe9Awˑ} 4ΉY%sDb;AߦCc8~ ? ̀)gi xpXmY^Rm OI 9"-fp;^K8X מvg9k2{9͵D{tHYw?C'=qj;8rl/Mx*Pd@p븉#h0d{$'`Oyg-kttmvO+= =Ed>>֊I 0|+vNN :ќ,{9T3Pő+#'9}+I q*{AX?8N島;[=\ءr5<ʟ#JeY>8.ݛjE|ڔGR]uבY`ڼ ur!)ggo2Ջ }z03n8T{mٿYWA`>vm% L3ԀS)5 [>QÅ8\)q =èE@WJ℧S>0NA+bqQ@maxVw޻7cJoqW[N$iO9(١E5IwXCDv$XXXXϩƋ9]?܄ǖd DO_Bgw059 GɌ"Lf)t҇&:m<]DbB۩x 9ϵ1HV-ڮMګLiw0d3jJ03s)9gIe83Lڳ)d#?2+6|>Ęͧ02M 斱:'l'-ԩp Z1.b :w]aQEcٝ5Y4`T).)6Kw2 > B5m`&TmX`b6)#SeӘLjC:>e3x"[:ɜ|2 #Ӟ˜Y Sՙ--c͙ t1mDWX`MiM1avϞ̂Q3)/}PQ"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A » p D('PA?&"~ @MD@5j""DDPA?&"~ @MD@5j""DDPA?&"~ @MD@5j""DDPA?&"~ @MD@5j""DDPA?&"~ @MD@5j""DDPA?0M5ma 4 }kp ֆ릥2^mAYM-U[N5q ]Q!Bv6݁Wz!5DTèi4-)jP+txf2^mAU?Cu:{:+ʡƻBk- 6ɕ:whoHYJm«_z!5DT]vvNwoưx'2^mAyWa5$GV6-n "h"ժ+6WMh92^mAM<\ t[j"D?LSVK^h\}KgD{qyjb и< 5^h\}B/4.OA>CMl'q& @иP[ hg-B4j"!+kq/dи'k93-2g+J&BKdYڪAe {qy$XTFTFIVd6_rfVƽи<ZT,hBd9MT_Yy {qy$XC:9M}ټ^m]SGC^h\I-*Zhϔj.xW*MNv}׉8Lи'@R&M\&JR=;F,dq/4.OK-MxYMbh^N"ϰƽи<>8mF&Rһ4 hgv9&}؝B4gPzqى`/?~"]R#hl=b=^GCͯWjqvKc,SP]̑)jb|ƽи<,'HsbJfjb\B2ܧ}Vj96W`hMEP-\-=Pr'vGshrΩS2RLehуÕAUTJ/=}jgMJcfU]^9&jʐ!j" >5-MMul#*tnZ*Ĩ$26Wj|e6qe5qj|jOyY6j4zCRLpM&Ve@md3u4}DÜp2jCߊ>J)B(&E0qBQ&.^R OlO-Ǡ̰a c y0ML E>#yWvU"`c%g,d:Dn3 VS#{+ 1=4FиDbgmLx:3M3c>Z:N4FW h4 kĤ'{45zA PՌ=k~tq/4.OAC-jC[46Ah{Ȍ.NP3"!m @XĴ,as2fɽZIs:՘2M-B4֢5L6Nػe~FuebNi @XĴ#z;Io4 hEkb\vnd01'3V}`k'qOGRzP/qB'8diwQB4}jbRWe G8vN~u){qy!41)ਰ~M4͘cN4q/4.OA>9&FepTX?[ƽи<>!`<DB9?ƽи ~_Cᜟ {Ikc]r?S~(Ft[z@皗XՇ#cjLT}p4ܭelpd@ȱ>'M`QoS3'?{'_ c(?Y?C UpQ棝+]^nKk+#ѳw,bZRpOMGhf#38yut\$eA%9w'9Y"w EzgKMK~82s~d4r4dh44q?yե ,@P85 NMN"ywdP$'-g6gĽdU^nKy7;/Cc8! D,y9?E<"J/{M%DT؜>7cڦ dN **1,mʠ^tv.+,4yήҾ 9?\/y.&Wbpk/  yL < N'Z* 檭tQ2i"Jn]d Zz@t-uZ*Eu͋G4 h=QxnJ2^ xHcPs\c:UM^Mݕe/@51-vU 7<+M,'PA?&"~ @MD@5j""DDPA?&"~ @MD@5j""DDPA?&"~ @MD@5j""DD(seB^{2^mA%Z)/n "(D8ӢӕXj"Dۚ8gɨphVz!5ݖg@I5QI28Q)]ĞӠX*"rpɓD)CZ>_.DAvv֔ﺲ{!5D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "@P"D D (@A "h Ş2զb"LM`DhcE]E\je?~ Tre.tuɕr,?p溡TCnL? *"_9-Y|x{C^<ֳ[-s{$:4Õ,m gdzџo\dۧ_Os=vvs9'7yO5%k}{WA:ʕOfTW~u]3Bu0nxe+]ݘbZ 뛐VTrJfVd9+@3L\^6ܖ7,Hً^Z׾3gX2Eo}XjUu@V^ Sµy[/شi\F|ۢ~ڧ䜄7Mt qBpq='TÖ z[p $+]$+Y[>|Bs@K =_[/R7/z:hm38[6f}{'!&sg* yBf?*;'X@֡c#jNM|u"5n7c|\J>Ѵi^}aU?\3bAͶCEͺs ~NX7|ybeŌ߈e73ch hn4nFPnT4 ޻՗LKfZ&dauC*Mlb yјr(;C(t$S=o!$Z^A{w{lw;EN2[myS VZ;fyvAn"ԕV=§#+еYA|>pp8c\P1ڡkW]a]8v9,mw`2ԝ^,YHӌQ*=RH/WyM.w}p:U0tS 5X3a U1Z±s'1fI>#|>{O~l/Rթ_cg9+hs<3Dkjb:3-[U'DcfNż$׎.HQtZ=SSWD6& U'_L:ɢL?xGJtud[,c&ϠDs?*@[^ҍ"s3ub>Ak{_gnoGi-tpNS S"6 +S#ʬJOojVBl8bYdZA,׮I\AGՕOg[`mYvTuʏ:}+]rN'#E}H/ R6 +8%ڬ9ϩ3?қ،'f>KߨvZ~u[[B~Z[i׵lW3+Mg *S 4ųTMF}@>(@ εIrt] @ `FUvX*4nNXGīw'^{ܒKX~1 >5#Sc3! jqZITmjч,9%o`i"Q -5e~`yþ]C,EhU ٤~| j: [ouc[: 봪)91b_cLn=?Ο4ЖC#`IWS\8YLU=xVkYMOkd8҆>E ( U:8{+mX po߻qTGagT0N%tʄrE*zY%ȰsZh?w98ϋ۟Xy" g[d>Eo1^ WO^Yʧf.뱡61wAAң/]>l:Z.,T?-wgGPDWTwEyuWDWw岅]3b#[67uh'ScT2R僓ՙ[3PO|Y( {EU2b+P?Wg" /-_n Zmk[ÞKy `J5IUX'wNLQ+V**!}6KǍ5PSy; VcH= -gL|qvfqnOuSNmGb׮(1u`,:Os-za,>ɻ\_:[ؒmS9ASޖ)RS)GSM9r[ؔZ֔ov~IiѶwOc׌ěHz:#03ԔLLѲS&.x%IKZbv6fɭd'jherUYIXRdyDQTird49M<{}uuL|~["ZF$~LpN1Jڒ˟g6]HCRD*;zWw>㝦>̩m,cюAz>yN^*;Bg% M!sk RL;nPtm*e yiKB[Hɲ('NqD9*Hӌ(ɍmm_$TA[x*7F2l:MHݯ6K6! &*1^ly̽YNie;ZS}8tlӱnN& yBC,7d-f=/JѪrv*;mp$ZwPk-`@y)b@%1ʝy@ix![8C1^KH.5"Kͽ)$.%*O+斐_^0y.:L!3m2SN '3UЯ\$犞{lHm*Ȟ=xaZ"=%MM!P`J:a|UĘvN-z3czp>OOdKO񨩅QR}ڸ*~_|]]g{٣0~:g G[ ־} OF!~j@|{~Nh 1t@ [B|t[]ӲU|s|Y% ^a!{X:-  qHjho;K3q zӞﲈ:9IoltOeN􌠬x4F#b\!N}cc_SZlUϙ e) BKR4W 6;۽,b[ &e|x\>!~.l n7TKn+2męm팮 aP܃Zɫ^b%(|6/ -63jwy? ynF¢dK"\tb~Un9rnܞ>%o4q],o=0& fxc¢ {8-ņK(1S o/Z5-=zk*;u{W$&7t} .]VƤ1iDcBZȬ.22ވBnaP[E]&.Ʋ4vZ~ 6 U9i +J/q G^8)J/)gu C0 *OvV±H/#Me㴲7|R"7FsrY^]' rC f.ȒX4KhIz:N6LSⴿ8ѼfQ|4nsH^h3#$yrp rc9sL-slɃP̂ːGKSd! _5fm>ُW6 5&p[k߇Ly6K%_!4.DBR!! xƤ!7͑,0eVlA\0w.aA\*:Xfpv8 <%*q/Y' u{߱yC\D;YMTBHM;{y!'ęY8 /jnH#6ZܾF7Q>G}qLhڄ 5:B2FZI{5qIl_@ٙ$|d4` .ɂH)-ugw1QKjsi0z aft\|i¸@@ssJv[y_b9^}̑S.#wgI:1IU;ۮb^JSF\*vһ9)0\Bant \+n3`Svmb{kuɈ?mBQ:Y@-{j;-{gL, jDq~C9Ԅ) i-h&}}ϫXן[%gM)Uann/C61_:Mn;!^`t| WƗ x{Ύl֎5*gբdȍe#vƅWrc8<#ԧs:h_wg}j^utd {?Q4hh5r++*BqȾt?*Tqa1-pW12!&t%dii*M~M([i>[z|}ldgt]{lW͈lWMv]Bb#hxt@a*Skajyϭ7~pnE~m 1퐄 txrPqZ˻ B#=0{Pt\jl9U%ۄOn]©Zkr^)@9<K0KuYCZ7qՐtOc+J p=(gtb7d@|(z g,o;3K/tۛˁ;ʦT(ӱ4|p^“XQM^!j\xjCJ3И44&Es3ˆ]L;M`/䱬SkڬcKS~N.T0CqniPǺ 0pxCfdUs%xril 3 X+LРNJw0\1[ó);|?yGzoyo/wKE׉d5)kTIJ62b`0j@ BLヌhҞS5Y}= gi3ۊƬ1@0N" 3萅i0bYi01UFiW @0Jӏ@ES?Κ6mC ^h=krU).ǂ[V_-#-6QF`tE&g۪Oq~:udrVHn8Ҁr ӥ ja+kŶg^JNסхTicaZ;3;k#3,Y tI65^L"J#/de:~@_5eES]3FzfH< i;]ۭ:%̴nHh΀b0]F?,ى6BRaoX{;E^G!pnW :.ySD4T83j,{x(ydFJwS#_y߾lv־yfL˯\|B=Q_j'W 駆 c08+\c5F5Fu7 H9x^ }޲d<6KwAMxEKKM:M.=v 9K͘/,6IΫ/9v`$ھ&=־k=;Kc?^H#pl}<('/6eP\sX<\7m֞{c Rÿ< |%f6K8ImmCk,f831U*\<ʰCo?gIKۄt%BT.- h.|dPbB 뻙#\٬Ar+&'Fow 2 ] GƧVHtt DASĻ=zr?2iǍv;wq; ['1(_ 5BNӬ4sG,#$9k$g894:^:7CRX]4;uKm"~?XeV8qricU56g@Wŀ"di=U]C}1 #7, 0\cv9 v78qM_>ǛGUkx7yxdd{9;C\%srnM7f2$/ՊQsLsw+f"ўT1|Mo,|x lɈ&3Hnɠ*3VnW N5 Y۱E")=N.XPT"Sęˆ&H=~]Z͞GAm>8GksΓ##%k/n[9cݟh7czq_CÅHz)+MvHY.T^0?y;l>SƶgPDp=O{?W$>byɷ7֯ie4wB@*7Yӱ4+Qm9K%l/vj۾x̖[k4mwn)j"ELV%e `./HeYfc#Oj@q̹aͩ[vr.'{~И54fnKO Ӣ=@Cho`zj0|#f^3Ez#"ucRvАdMe|zq~սoZI.׳meu8&My_Ln)1i*.r&+|$`Copp$0kFD8j}Y:4z/2̚dɣYSO!kb1#pHXVFӨڍ7tgچvLΎD9ęEi{Y#ܚdԂg2wK]C{7@iCЄʚ[b*e5AU*MI_7i빴 H[Zǽ1br؇Ɣk~BYl/%HidMˬ3͜UILY j.M~o=H(,&qh$o a·7 $DDm*m`$0@ 3[1s&Po+ͨriX_77j)͚fsoᎳ6dU:}>o@F B*(Nȧ>Z#x45{ˑCB\,vRúxnQcjJlw,$9~M =ڹY܈̪ VHҞm֧R a`p| )7c>%VL$$;9Bg{Vh"f=㢶}I^.YbDbEP}H CFc 1™K#1Ry\#g7bfı#J>5R!~xpED]N[zj:1Tm<{əN I?2TEX}3]7谭CKj/Gn*M"K[r #\nL {Ф={xm{EK]+pfjtD^o0>lQRK]n}|Lo;ti&߶lFF1R7ՠblя17/޸g1/c=˃udY^>󽺜ۤÊ6AKB+ddCƔE x@ۖ~!& Ah9Њ.cG 4a6q+r p޾ Vu$DzZu2KI{'='=±,5EZ>`-mد\7x v;U:eآ͂%Glfn/ uujԬqIe6 U0W;CTUo aF|Uw4~�هw"6M= 3n]馌XgX/Ͼ UB 6 Ց>Z MA_mUS|p?_Nl].6u,>Dz%8{=d]$s7'@ٻPJC *WBuβyҙ g_`Geze~k@ʅ_qu 'X2m:#E2,T<8 u:\$p(PpNp6iQD e,=A$葐b:PKϛå~-]\x2L^CԸߤ=ɺkb2_8>4}f5]Hh{ڞiw JSm`I?a>vpTtKͺnf⦄T:=EC&cş#$||d OJy^Y w~.ej*#Xtp 8Et|nwژ*]%%e|P.x hĒIք=N@D˟E-)5?УG:h9<,׼_yvy^Z͞x)TtK5*)%?F9Aź&abOIp9cg6Yu` vj< 6U3^4Kٞ#_FLrc p'c|u|yAjhOc3aύm ڕouAMHuHu [L@ ؏ fG:S-i,hA,륄㔬J}6ieNq''\ E*{&ӋWa.,Hhf4#5)1(!4TCyL 5M#hFk7jJom!ߦ9Dׄ+:xGAì{nm1Hx Cm q^|8K'/I4Ujhc,3_ Xf7R5#byZidopPm&$T{MKFxZC8 kT\lYxTqlFR"'TA7OʌXN)AHs$ zQb_9N(xݫ6fBiWeGCˬ"x3y`VeM5(opt!ʶ%W>O_?rûKrK$N3,<&h Ɠ~Xa,|Zgj7CbY{|DTv``.?KR>⇷` "ɷ-PC 76$2ŞA:>.jTt(c]Gc'#&hE 1=SK1>[ͻx<;?6(iz M% oLC:S DLX+ͰDIF-m̎~I[{M#oFَ-i@1fxc9Lp%>ia<+*ؐ'Sv ZPи܍Z/˅',}W372SCU޻n }cynfց.=8tY&o@="+s]f,<~wpF_lDj=4xh|L;K* |J{"탏80gX3Y u/9Op{;<[Xm!m|鴬ʨ6VT>1DLw>M@d/7 ߲؋wo2Љ`?}9o~gg.#BNZɠoO߽ye֭ˎv[c0.-MC#߿}z{O_.p3V^ _dq%ZjGo?1+ϵj&A~,V~Ϧꁥʟzȶv {B`3Z5 v&pNt&;afJ۹IN qJLi)Zbj6ƥYYm/Q/ -1:*`4= ٙ0`F=Kɟ`f'̂aݹֻb֝d9ȏź`f]d54魘%v4hG4 ʳ3|-1:ĩVԪƪ\!Oݪ/VAyvVÇ˳Ț誷S>|4Fst:,M+F6sD|>J--:Zr-zc,߿Vl8chsH ʳo?vyVIʤ5I' n~\.7{Fk۝z֜c AG[>o+뻵U9}:ޘ˥Ԛe9v1,e S~s[s%:[I}uܸ3t稕+$hC$h,xgwEccRlyWo#ѳ3G'ȑxs}bL7Gh4qgjF'ɩQfy;,:H![tn6E6yWt,<[PײqGs#1̨+0QuZU&詬OpU' 7_2 m9l"M?8r!_nMBrN&&KhZ\+ye-kP^ڱh>r0YHeIk(|֕Sp۟?O WyvQ'<-'"ܞR&NH8!tx(yrx=yTOYm(l}d O>\ Ti՟V[wLq~}~+H 2S.H*4 h896SFg$HJ.PY[&<,u\z+ףF׮n̛,} gf$ߵpN^L]v1C5)2(q[(0 2yu+0oo߂CϢӟ:9AX5.|2o9΀ ^subԧ0L&S}F`P_>=Culr-t;VxKw,6dyM,3A`vp*DRIU%VmtYyQ c˕Jq x݀utzEk+3d/fF2W{ CzD;U*4(Ym 0$cI4 Yzgb k3㩖]2/kwpFnV7dnlu$q~Ʃ;lee25Z~Jj岯ahSm8bΧ7޽o?_~U3Psf߂@- ^ŻRߗ|Cz( =bu`D%2bwZev1 ?&K'tL,C V^ olFķIzd^Ox^;DziU&9OhϿrB CewuIL\hyM/SpuĨ-fm !W#ˣoN_'/CڷP٘-VfVlk3WwohȊy8*k@,߆159x[`mYv@ӧ>l|1@oRGg\(\{Bq)GKq溳AXDw33G"mJm;z7@&>'}e.LcI4 j4..om'dA516v}KlNCy׸9GLRg&vB}/Fn˻W6^OK >?Lo+ʋ;ksX9,mDZ8d-nnF;dh䮩 a`'4Q?@?JDPyhĒp+W;lTc~> Ͽru{몬x214߱QgQ[ D\ޭ@@ѵsg/jPFB\5j#2D\ -\eu.ɵmGC!˗\r彤ecUe8ҔP, $=WrQ,pW 19-%nXv@>?jXTN LQlO?1sUe#*|y.-o3pDje/Y#py7 Phܴf/H~AZj; )zTSQgQ[qo/~HYKB)27$;Dn%\;ycn쑔ڞ_AgwR=و|Jf˲ڷ2گLmӺN9j^Sۙ^U!􈗉:1!PpB8 no9.`XPx^kv ݕSTc6Wlāt%P$&GFlwS|M:d{VB? br* ?ĈapBݢYZDc#e{MΖ7?Xϝ%,s$Dfd.3uz6&;ŠUXB+/`Q:1DtH|z!F>UAC޿pyfjӰ{R<#n೦>EG)q>j[9i+Kۣ*r(:BKe톼A.liZLhq1: eNaᙈ:V!aĵC3=.iߏ{'BY{+gdZ}:^ĉX3yYN@[/cFFKlFlK3ӑ:QE q6WdI|Ӵ͠]py(yĄ煂쉓m^M~֔Lv)^SdyRi7}&y5K yQ$z#t8U=!Qz # *ڝEu%o}ꇩ}oW; =sWSLXz_IYR5kgEe0!ɃR"kRHEODWӡgbeO vUꦛkAxx?m?~Ahc AhS۵FH̙e'-ѿ:KϷ,rUzEMܮ+*yΙM!qdnBLP "V\z6Y8;h}'$y}B<o$rLq>!/6"MIdsJؑ1fI p}zus~kC8 hBmQWN]iK2جO6}@o)Agm oA/bdqlgYg}-rWZ͙r߻qԱq? =`0N%FU&k/W*zfU{[ M#.syqU};*X?yxPn/:}6lPr>wKrɫ0}5K_̍:FN޻n }cynfց. V6&,C]T]}^]a,рFo~wpF_ldkߴ]djJf" <̭?l\#@gA*0ƚx˳;|d)rs2o&ZycP}O6p'` c2 R(T+Ua91ap>G|ZIvjUu&~鸱jCC^Mށ].l Cީ??ԇt&8qqsQߵmKbx)kd+ q4OЈo@=胣GbrvZton?{.WعuR=z랆YwnG[or'?|=Gs^,9GKގ%|-ysh&kp ońS>F&<9p4|58C;g{td zs7 0r3MhBxdVaּTAGz0/K!jXE䜃Q=jIpFMb}T8`O&|1g.;mZs{NU]qWW7%?6.xWXP6 US2T~qVM zN}  #%:xeFЌD r̼D#L+>>Q?{g1ay[qNlaNvG.Җ[},sGg&Uy pN%ƏmQ@ 08V>VT) 4c/Yp@ua5%;SUY]˟ !_p8g>-Gar護 ad7;ђKX%-9Zr=49'\TWxsNzxbRW+NxR, iT0=ea$Gg]|Լyʟ~KUXU+ճ":ݧcvҝCND;UD|heަ3ָ8+PȌA.d_2\*E' /<WH34y!WI 5hԲ`Rk׭'S^QБ0gc^F,ӿNL;P)&݅GT a=7f8@Avx켗NQYdVS:E|umS:a5D ,"_ Gԝq,rE_ Y /t̼BnFNŞ]5*f"p<'DDYȝbö- #?5(DcXKx!kY;ϙv1{߶; zS@0V+xyS.'m"Os]1₪lj?Lm`0Qt' 1<>qL֮mrk.f0Q>7o_ܱOd~t ㇯d^BM#ftw >\I.p_Ą@b4?43G)c [o1!~liIՎ=ְDMrC5 Hx+g9%y 撆7=O_˹ 2ą vANel@c2s—f;a:lvejCgE SŴUQSeU/Gc5D5yY1 sv* 7*kpoz{jxlk4<㧼&ѿL5s ZqF|Jt|i1P>/eJ/n8VvT!|Jի %'&PZd8(1˫}Sx޸?1;[b@ɀp:hO',ʆ[98Oo{wFl6 u$I?y,FDY5\{d2Y881.b}sO1d ^#%2p9ڬUbUۤKd@bq(mҸ,ʵW?g-R'=ӓwm$f!y""t.k͞ ˟&ceECZBb% -Jn{%?" 0!{r/<#M gn|]qBvph.@"\'ҲqcmM}*2K_ݳ4WY5LE1zЊֳ9/(^RTs|oRm]vAMR0I:SI2ͮB*n⺴'f>Kߨ5tN?|n6`u;mD4kLIm*L%ӕJmҍ^vECڠoIs $뀾nzMVCO~_Lyڹzfh^gq~Y 7Iݤ-Цm{(*m؞LP/zG8Ly$ϋ,A r;s@f]}W/2]_.ի_VZ8fz/Wqٳ'StL;(y' >)7lS4$&%FP LS[7uyëwYo?Vf;3}v|{z>`og~Ⱥx5 V7?ן:S޺l=f@3}qp'iՂRO6c^b ƛ2oݜ[`tL<⢁ƄXю}b>s Q"o޼[{U&4}o}-.f=suھ}E1Nwsǜ:C8Q}n?򅒊lI']m\p ,pݿiB/gNJYlCFwſyf{igy2a6dBž3b{22&Q>.]oeu[f?slӠ9f! s5=ɍ\ĩBߧZkPq{+'UFRn~^3qw +trSTa LU8MTr^>4I+0ﻵ֖"zYH07EƟD@ L;kECN9&,YIYOw{oumPOڦ7nΓai&"~?x?+T:wr l _f>0QĻKox`%m|G3qeYT6e T \͌°D2_à֩m^<\sN\h3D*}> t8 _y?uy960?_ ^V*e-Wn5QӋ|YMjh!ON^uO^Tng]mpʇg{ 9)kg3*_'w]vi m"@ccl>Գ0yx?z C~iI|e7xwC*?k>Ϡw}`CN7ec v{gs}XK e E'zVop}ر!R'Na?kgM{=(/ ̦o jaKR[Z G1.F{<Ӽ } V13tρ'un=i.̓$泑/"iJy2Ͽ?{{y齻)j57f6oo4@Rݔ36|66n z83O|qr@2ooQ*Eng7T?^mdy~;zh`wp+I02>;Qw"66{'#>cV^ϕQ7`|܍~%.x]`?k;c1xajEnM9FSwLGsԭ{9 y}R$JFQyVl`-A^њטC0 r)AK.{1XGaA$[y@7e9/{mm6.Wv?_x@A\vY87Lх}*۹ښѳYUq ~Mپnݭ\h\tg**~/tG?ʇ+EaЈ(1BCq:ZWG(ʎ19)]xf7o15.ރ6m{F>BaMTŻyqQ),%b:PR"p#%(b2')/f&-+?b*C!@]Jŝ0@LiD3XC>"8# pÜH(!MRD\ 8"KTHq'Dq SL_рF(Z70x@E9W$бf*>y DJ1j|D1 H`]q(QED+$`LkP" &`8q@P <$%BHc`r"Τ*YX# Ɓc¨JaC_HRC$i\̔ K (@ Ĝ+#.O|P*XUï&AoRZ c$$q: J,"XPFIKiR'AEQ 0!R@A_iEDz ̤fGX.cVoe2Oh|l?p4b|XD,f>Yrcʰ~n6.`x׶ un$1y1 ^y:ŖcPn@hV:B9͔5ˠnU ,Ƀ D ȅt+ 2ԈUAU=BqT^(-kffe0ps<^t:^Tj!5̪hB Aك<,i^E VC\ͯݼ\2s)KiʙcgE-yzv6f39ļbY)iʛ_s5DžsQ`]n3^Uk4({lSA(y`ۏc!f+L&^۷3ctɕ멂cGuG@+lp!xt>w~@ͥ͝ l6`ceq^ $3TmuFK&;\Y{ UZ;GxМe+,vg V_߳nA)4/ hBRQzUo$UNJipq,% N+[ʱ!VXk~lVXf -/]4,ӤJKK34b+kW92FQizF5|gg.vƷXab,àqELXy `tذfy{Z 6 vڰ`sam]"6ݎc!թ! v;9YU+lX} xp:; ذ^p 66l܂Dtb `mÞ˂-ZÆ֜`Zn`<m/6PaٴJE]'زPTAqɢQS2il94O6\'_~y_da (ya'rǜnR9>Lfݹ~\dZݡ_br\/39ښ| ׋HҀ;~npw绍$H6v9Kv_Ll5Ʌ G%D֑}}+ŠhWG'H ϒrlNc}giҺ]FHt] ,r6^@ ր,#ZPkAG#ƻHhlqg.C֌ ֥@4~q:Mc=XYvd(NR8`r* ;gֱm]|#5k|Y9]}w.eqľ7k_ G]ߏMRzfS?Z875X9NJę+wqT"#mC$z7\ 2Fcy, 2/ Jz H3 b`s*1% XdA_ 8n2b) ,.e#"BI pLՈT@Ya3b8xn*AKeD"yȣ,Lqt(JԆb 49 Zc)ۨ &2 aje*fH$Y,Lm@M Ǣ-WBEA8t50 <ٖǤB%Z$ :iu%)1òj1hL1 "m 8읋@b=Ɗr)%h8fA.S ܃Z 2Gb|_P}rBg8/ YαeȾ }d M{@z昑\K/Զxؓ}r!9t`|L/tx^w=w<':=;.yZ5gmb .Mom}(uZL)Þ6m;k>}5Ӿiq nouIMvL}ۅ=/tE4X[Lt\.N{mհsJ6}!B@ C[ O6#8OqFN7 77>%XS:md{_HfӦv|9ޤN6aHr7iEm T#T´ 91 ݦB@IVPڗQk;&!\$TMz e>]@ ueU/JgALR76DŽ+CGRKKD<4-^ Ox iyj&`4<>:Mf? Yt.XG勬3H$kkl8^|9 >e+rI7ڽ/kY#:^ێY$eލpx{6ql/&N΋~k8N< jc8y6`l?ǒ6= PCZ 8,lG`{_<:˳N_ApwQZ]DpzNgG0TwQ$ 0=:';;n)]~›]L^'`$^5]P:/aПiwi#i|i#i|i㙆|,A_}!B@YVx0N=|׮Ic|>)6N'|lK'eA7,FN܅`,B# ].н?pf"Ib|&!vIiS6`A\_1,s0g`(ljn|o` ^k;0ϴoܽþZUmJ1>;EB1>@p&1>#Qå(EhBG{'Q>[)tCϑEO \HEc|b|f"X!ƧC0)Ӫ1>7b| g6suV9Ap~D7\AKSv7ҹ>UΖ ;O?gx!e_kh@&J⊴5bnY ʹ:wyoFX̼3j1>F ɀ,;&]b|n4 U~u8BV4;wYAiy! ` /kQӘ>DXƛ ?xz޿=_u/;}U?|=ӏ-Sx /ozߟB?ޟ|eh=ozYyn%3ߞ_jߞB\3B< R78/oOwSR6/ji^_ޟssͷuxF[Y׾P` O~40 |լ6胗g*>~ ox+YMuo꿿r)Zo} ؑ*c5L8弊)"r@,=pGW2u0)D]K)a#FJxTl-ϪwR9ǼI*圊A&%yᤗsu& rW1TTsy a:)QQ-=S8.ىuR Q%NKc,;le\N$Lk|'b"~6x[F' G~Jٹckp=? _ sū*YElaɁ<꼤.Sy欋:ͨ& U\A,):k>VÓqs ґʔM1la.FluD5q\>T#JК9*Y ^x|ޫlrp*C"9 e 0$*JīV4V^˦#N 6bI>JtFbCSMMz|(*'+QjFᣩ5(=ϹPEA'U Iߡ %4\H2iHJt6%g%MԤ9K~L rpȪ"|Z):g>(1>$lU3ANk*SVS(r@5]tv%R(q &eiUJ5bh iWZ2RaG+-d拌FTA%HfEhqb+jVԪTQ@f^BA ? h]MLMU6&|Ny:Fm!D5 S*Ra$%VCiT{`QFCi|h2P%M؍bxMdM6rT Hd A$M@I+=W(<&ãUQVMZwB'3( )U F%`R@M2a S5YBKJ )HXoE UU 2s.ҙ;[|Jp%4 H&c֡,* uɰ RzA VW!&ò@6gX1-Tp K(aG96DAՉ%(_;ߊ_oG/ŝ&_L'7;!'~XXk}%xՖd5h>|OGiw=iH}w:zt7]h7# o>=<<JѣmodhSɌ@x=']vj[Oʣ^`oARoYP:sS8vL04|"q b{̞_~T{oΟ~=8gawt•aqpƜ-\i8#4I-\LJ1gz W8LoJ]qp)Aegz W~LoJ*-\iXgz Wgz Wf3+0LoJS!%@V `KoQ BypG>={N-֡y Q'v&$ QIdQAr6TOEZ}rV~A_}!B@'D`Ԓ)f#XEpVWv+BV;k6 A$Ok 8 `[:xx? mY @VB0VB{h!mK4wAܿ(-ă]'^x]#oDiڜ%@-t%FC ._{s]u`;W`|nۯU"D(?)cFʱV\>ivk 7\7tƭ_[ɥ]ۓM;/ڏ͗ ?}7?>m+ %HJ5j\FJ??޹c! jkq|⿳{ܬ3K~oOhbuf_))>}X*|yŪ꼻p zaYs<ѽeVe9n7_vmޱV3f *}_SH]o/'ϯTooޯ7WgE^oxyޡh_mzji&W_˽(|Yp󪬄B ѯ3:ǝ2MOpJܯUgs Ϻc^ C޵L×B!5;:Qywo>ޟKwyJ/|_vt|D;~ [wo/z5Who| WRtU*X;m.-D%^& wK &$1cF{eәqfKf㩽KnC2LG\hEGK^iyun~w 3nwɭWm]r.sF'$sCkT_ObTkUdR:5 u OӍAeݝ*Q-|V_|1x˧zӀ"kѧNC=;`{a^5h†"َ]3m}[ֹok;tn>O]W!gIm V'{KVve_1>]>[ӷd}TYJ:y>;My J)F}jScժ%LOU%d[ţpvosWaM;OZ_)S}J_ɖo?:pmlM&&2xDR SE1S9sNRgm2"P$K--DVM,MX&Y5#gL(6z:c:3r2EhVƠ]O(symZ1:Ja'VuKp0`a(ԄB 2mOER"R$F`)D:3x7)MwA; j6Bh@]JYj UjE5,@GP^-%* 8P-G 7(8R\8MIV ,Ȓ`KE0x8&CG3GN1Z`,0efRL@QMѡj4?(`)h<Cx"G{Kt FmZuC.2QRf\BUqFPE1^nx-pXh/R;@la hEݢ)MNYKYzU7@=?딣/|uhJ (JM7H7 c7O}Q?Ku|Ņ*}UL%'gcx87xc{f6 39n芜1tCm:gos os mmm[탷9n1t+魃9n`pf6-C739niCùCos OjVE['K5=ӽXV]vizN`O`a99^;n?u `۵2:XV*-dz>8ͺo|1Y)QYs[qs]r~zRBռ?:U2h)i;ujkSoU2u\wjUȥuvJzթL%tBejTxV/];5)Z_{vVgU9+썁1#'O >4ȴrjWsd #mU0`׫^yrbի)q FFg!/PȾ`pz)fv:2 L1,/gΫpn2- F:[}0H:jAdp ] m̚z'2ʹMgdPܘA7v*6g+4z*].rl~~&4ꨅR{ RE-Xrg\<-qe)BZj>ƼU細M`<~֟jcɣ9m` SL]g[?ܭ&9MyZb-NԵZB5{c%#dz7&S]a+ʾㅕj``DЌs~9tm4ZE4 -kCQCksLuZ)(YZјmz 9r=}jn鷭uF[4GNI1;)z@ }89ǫtը W:%hgqvlam^:4G?9҃a׬urd^18be]R(C5?;sض,۶.ʚ VJ>nn\8҉?B0ɺ[g\C_l`˭^gtb 58fgv MdPcYe0۱`K qlNƵx3-L| ^g2 ^Z1ZtZndp+F` ocˀސgע/#338#1n9`fdN@g*t?`| Zt~A JFO 6Y!J:V=gT:]I G;'V[lJ [>wDyoZ۹p<!m0R}|$Fғ]ۉ vXElW!*PƽTLK~WGNmөU[Kܒ'ERnIUGUʨ[DRոOLd 'ODRոt1 u,ύ"jDື2ǒOELVSqcz齴IqwZ8I5+p7 T5FA\|6GT5fcЊ[08|c-T5:3=TKi{k.DRո #j6- fmIUy"j4IU"kځ fQ1A$)+Hs!؏5{ьX[3:~mHF, "=Iue*ʣ#ERUHFT5 $FyHDR!#ER`H 瀸A$U21r$U3 &#IU&q=:DR$.zq$CM=F'-L* &v;`I b8x'#vdp nIUNdp; ūS$UIGf# .=SWDRƠd0 @#`iT5d0"CER`t|7 &ёүb|R@ͩXf p jfo+X[3Yoma)/ fnB-N,ͮޞlyxY~l,mcyi$_ ƿ}#)w~Pʼnq#I >, }<;1fgU^J+nK*EhFw2 )Ft,5\T5c37wp>Lg9jVRyS>bc9VoL?^m梴OضrgO@fѭARyLsفO,O z-_ \:ղzn̟8_J?ZŦ>*5hzȏ{ݗOߧWhSbuicRZ^.>"minyĕ .yXPɬ,gJ0֎{0ҽW-?˅ҽ V!]m^a^r%`.r&HRՔ>ATE]bJ:& Wڪ"&%-aPX)LQHp,bl'%ύ0T<+ʥ#Y"\hPFdJolfe%11gΆlω8LWj[UwJYRมRc1Ø8KĨ e)JXJqBjOLʥpLWG-Fp Kicⶔ20D8 -2," !B\̤T6 Br#dFTDcYGN"TEz0MT@JAKz #)t(w^st2q4-h1ZGC{OxPI0i.g+B\B ŪP@tTjh*L ʘBɃ&>C0 vht)A<U 4Dz(+Qr!}R2$01ET 5f>R}LAb3 \hQ%31b @[%anfR6$K)Mks1 tXhJO})&C& 3hPi0}>xov@,9x{V%q@rJ°R#gnz,ǔT )hxH"%j7:NYd{)%܋$Yx%Jbd%q@ ay4$34J D-*t!aȐdð$Fn@[" fTR*ˏ57AbYCE( @$/;8FX7>FRT50 K)Pt¾lcN0B꥘氈Ki)R5IȎza `1W)3I:*%Le p-& X] b*2Q,…HϬ0{pm(0I0 TA|$NcLD`;6*j`-Ѓ ,8(ԤJRjZ {mPsT\3 cs;뺻?OdX>YuA =q@zA%%a0žlErs6m_9S7{ ,@\a7`MJ 2K#foƅ/O}e-!oM 5=#ئLBS8^#6PjUmى!/v[f%CsSD-LRl'CI8Q QS(s ﰈβ/Ҝyr?%G<\#O.ya/x'{ȸ%G/>ᒗ||C{ ^=|l༗|<%GƵ|ׅ^rTiB6M\nfnz m {ϻ܊}!~O4~tƶɞTGI_SK;3e z {),;Olsh75V'u*oS_o3:jܒM|;s6W5S_jS]գzIa&jR)ڄU~v9x| 7!xTIP9vbw΃n3EIiHȉAO=v!(Ukf FW#xkBꀸT]_KW`pꈠ9K* T<^A0G "8>16S)8t,™T%тNӷ-UZ>ۛ%`\jRƒ%UcXuڡTM:+xPo0+ G{NMuC>v[/;HfK~YVK[/|s=S+i@SPhiꟘyp# [btƶ~W L #y,W nB0h2\ucUFw`*B]UbÑ=Cεש ƥzjL"JaVN&F0S;mS#Y _y30 n?O`nXϧ7菊@46LnDd$Q̉VR⟯F.B͘rm~6 9n~ߠ;EoEϫf"4URߚة3/MJ@hmYO#UKh}F#L}}O8zGKo!(G)iT]  UH3 mߴMH"`AЋ鉠~W4RO:pfxzh F zZAomoJ@0Л= D :ɾOH7 z!hߐxt&;&{H}: x%9hF+G:qU._@1;͖+x0u@JG\Ck#e]셠G 4*NϗoBϗoB0(o+-]d<ҕwGtQh`7x4y H}i0Lt +Ron> H}wxx6T=Ź21{@pA=Gt0]ӔR{T~s9aR:.)3JiJK{%~)?nY~JXjy۟)%|: )Wfy +5uS? 55=.L?*jE Z ΖsZX}"l=gZO }~a3/g>-6~>r˘[/|Yvy/֛Ӈ ]@gzM\3?UI/b5|X=jbsޘv6oVϟ#W[D^f--NS|WU\mf3dƦ++WĘ/y笠y;波'1Qjfk+yaɬJM0n6 lkm'oX ,jP.)'D|1aEwMuΩQnZʹt+fO+\nL ؏uy@`;wX?;:qgKgÉKoUCuշ`ܗn=\9֥ݾs<Μ>}2q~zSk56eju'[s(2@x*r 8PftD?/ϟ6?,|a:yl n][m65_}R(v|xvs&vVY.>~s9+6w VB8/,{?=ũaV{s<*F{lXIDD#(0B&'e%KOIoP[ }h5:Lu J)Ju AzVfyNr)I(hF mr\$)&v&C0yl,,.Qc$JC)K##Hn'4t࣡.W9@3z <Tf 81P`AI)sƑ(%h!]P餹QhFҙs?1"1SjEGs"hh4̹C?IZ E4BH$BƋ9B kLc*"6$@91AhmѶVrd%BX5Nw4;7-cR[e.)nBH>Y #) Y]-Rc3nHN aP`.0`,S₶n2\D6& e"lApH6>BI nQp Ȭ>lB0: fiJ1Ary-H"BH4&i#ZH f+j .=yEtk+kpqm.ּ7< x|k?xkNzO5z-ܞ>Wk,,Z@4{,˄ϵt)ŒD{/G \v2:uZ[iwY Fh M;ձcʪUC{7=O2P_ | 'S2<Z* L޸7w-MkTOOIP#ގJP1Mrpfl%E/^SΌV-/+6 ZnjBg poAg=-8kyI*qp wI'k;#jwZ7SV]МY{_:wF.^q1T?8HO}8_ft3ԕ6A}fXR]d(4OPyr=:p,^pT?졞Qw'Z.#dX;3Ύt=gFpz"N>ze]9tqNFL]8tDȓiH(bt3['sfcL|fЗhD68C 7%}XV3Ӹ6϶ijTQᡒA%1-NApޒy*.y0[H?w?u.h<9hXޞ̑\(*H3dQLQ1 J/UC d^>v2;O&aS<+.Ugi'+ng0nwnQo"'pSxpZ T-Ev^սam:ظ7măk,[xOwsP;9( +{CqQuoH74ݪ{ܸ7ܒjQOսA{ FVXQaސn+hTU:IuoH8`0.4:ذ7ZaQu:ҫ 8ؠ7J7EVaސ~QrYVU4Ut'+T4{CVjE[>wޝCqQuoHJ]ASshK[sm-g SCY`-9H?֍S~NXp >?ǿ=R~gy|x{ ׷SE/a=5}7])dz?=*j#o/?'[5=T yzſ7~z3_s r˻?}{u_bɕ7/_~}}⟿>;&`592ac;m9V;^ĕ_?؏QKz|>?ok|}*Uz q 9?Sm޷{w^+ Kf-W|X}͇x_t^>>DҼ%a_뻃}3U^Vy}|ZaǛV[ 򼯃_0TKE(!^_ZDK6»]񋅘;"+T i=6h<oK?hR" əpz)] ^W"K Z/] {_Auǯ_;~7Q6(ig~Ig3nWeT]/rrED_ަ=x~< \}1dnawߪ s>|_|Ygˇ;| dRQCI%9%JSsFJ&N1fZ+f6Қ"̣&FZP[Gs0[x T&wq 4")!&mzIQ%s7'c&3Qi!=,)F&h"2+ =y&9ksQ:h3"s37BgEkIiN{p`MR$]*u)i]%t)!$Nm iy\ d k͜t M>+:]4'ZJH`IbP)@Ɋlp:eN *p%Q+!k VNVI,WXN3hؐ$8V RnR>) ^WMyIlq}Yg3:HE=#@+o@"pB$.dF7eP%)ᤒv@ID QJEei #Q QD- !8?ܕJ#,SF)a' $,2p9Fy2 cAl 6&́:&nՕ1YYF9T()zWpij\Ypw \XPK !s:Щgf!\)Se ,RЇ!{Q3ر@=Rp& "C u-nd֫`%€jx&gzB iK-L(Fp#S"K65L]WMe_I~,)MpЋ3n^[E/ՕcH/b z^i@lߎSzq"G/) ?M/s5Ņ3q'"s3ӑq0ywf_<;gsx<;1D{ĝ\Gy#h %}N^~W阩/'WK)K#R<9zET[\7h'{% A|]AE`{[TB5$P *B"QJ5R Y>QELhQ, ѽ& P5HhRȟ5ܲFSTM 5it2u }\nҫ+_P>| At^C!H\ %lv੼4Cn=mbХ]KH&`yAghJLkxyqb^7Z~[ C~ۺY܁HlyfKA"g>w2~Ӯ_5۾iꣷ{Rێ^kp.Z.,[\e._9s&3fwMJ"nݴ4gA4Ak]uR1lKQg&M^WjofEqx@-دw6sW2IF]ƽ>BPb\Xynds=fF:f]ߥz 4iEiKkx0|ճO u,q>mT3#3-js錳1oum#l r `;1jӠBz>|F5E&12^w:WPdxP^d K-ٛg醱wzF$F53KustaCLK !dlpY|>3kƷ=S^4&C'b'#H}Gzsuu9Iy:eiV7!؄AiNJ7RI&nnɄJw? ELX]e>[rѽͫ]#D=mw%[y[Eܖ辟G\E<G\E<G\Efd;,(oFVgd^G,b.ZVGd4w#:x<~%kkviqmEp<"]E†y,")8^uqxBq>'VV`L܈"xEK&eJl}KOFn6G0+m欚#ks[I)ްW_V>Hc0M}n݈M"RLhA0/ t= 6$ C  IPNr4`PJ~e,`,O>X3H+ L]d`)ffSd12FMn9\t7 uf !K˯sp/L!P\'jR@omcR#HFfqd xt1gq/U+2GmWA-*pĀkVh}%UVfмwVwY>OwYF40$7P =3\"&<)/d' C8 E"ES&UP09`*T[c4_Q2P8Il34F΃+M@.Doí7[ L8 &y %tRV*KvWpm~n^ae*+ *~N뼪Yuլ:믷?&gr?| `G+;"B|ey*Y~FM @(6~u0+tU+F.~r b,}(uObcr{vy]|2ܵȸv7~ke.i We+WurX~}}N}^ʹ\B%eQ8SW[=qS%{!fBzF_3ۤɻV=^Cߜ]A{EyC/\6?;r\ת|n7ms3+.QOq\a_Njf}ZƊ{v X4QEWuG d@7+Jdvyfe]@g^+rԲE-Wd9Fz,_E\ʆYyd%Wwhx7o,_ὲ||c+^(Wdg:1W`,_]|YxLd\"3WyC/1W)T,_^%Wsl+,_A<܀?fY"`T6B,_wkHoEwYDpw!h#jE)U,;Y y }Eq +x:=օcO!QS՗?_@Ѣ~}= n|z><&X=RY~Rǿ3y|g y|>1%_O/_N_^bhӷO6|d/_m/ObraG۶O\G֊j5y>ėok*n͡<}pD/A`YSL/캧>?SR -\ZiߧSzy?fK Դ3>wө\O/ݞN3KO)d>w=Y@/}p*{|z>WysptIsǴ-{'3g:?x gSJ)V쯄V 6\R[Lctn6|;CM 57܍^챖y2ؠ_ßP7O~kݑv;bݙOwV5mkj۬+*CCrȾ뚨ڦ{tm~Mm7t}?jK!%ՒC?Y>%b9`$qC:o_V)t!A_JBNMe0%%-5eiK)p2&$0?IɢJ1Jc3#hP((oIn^Pq ɫLZe[_c~aP[)则ԭw+UYӯQ\bPj*叔sKaP6-s!?*rlߙAmz{Bo_NC{BL0G(s&#v0  s`hPaL0G(o Σp=ށeEPzNYI&LZ6*6v~eEAk}|aN%lKN.,Wob-˰޵H#}?HO o 00fV̔TsST`SUr嘏6Lb/9 P 5(HꚴT=z?ق̐X>C)3#[^g=r+Z4to^&,R5w?ebOJYR3[J3u}9LG'9fZ/,ye94]KucQFؒXhg07Z[YkXMOz ƩG|+'oIw2}>fFA OkRg:<%{I1>f=a9ѵoNl2O|ϭPNٲ+U]<+ e!x~umifշ"?;-ǭxCto!6De{\;ָ #ɤxlr}(sc̜QP?c kǑ3cVXk酥hU֟}FB>>P>쎵NlEJO.ۀuV{B5#X^kै[)q?wzu`!VpE ֫bV~"BQcbVX9(ɡW+ںYAWzu?!֚bU98:}݁VA#ںXk]A{&>!:CpOZ'ZScgGת_}  8kk,OZ.>2W8ѻ|s=) 鸵ru,[j[- /?F.#]Uǿ__~~7~ 1cb3~|.[ˍ&cDk}9>hFϩaD{ v߫ć9ÈvFk hgp'Fcd_3KnwQqFO%2q疻mQqWo>2-] u5DssԽ2Ai"Ckf֞lM^ukwXk_!̂VXeL3 h;F0FUҍtI&ŤDLvS OwC-'{>y0;F ;ã^Q5 ~?XBˑ L`L!%I.xyHbZ*yfc^zZKqK ~rƩP2S4:J:tC>$LZ'T"yH%s+J1bAq'uFC<ЃFp˧R`( E Z[TlRJ|u4#h% Ag%.c! TS4F(A[K#N=b 4Th80 XY\Х;fZmC' ۉۗV792ǹ *jnu"deJ}',EpL#%n%ÕIPF4GGiyT#9I %9F^N#5( }&mܢkF(J')ؐt2ZEI@wH, PN~:#NKKK-!e&ރ'1=mBd^Âj'вr2 )K(*Jb+7fIKp0K`${2FOx\206`P5UAB˹0<9pZM(Bql #N\CBkHw`L( ^1M]W8  O8}$`b~P@@WQDŽr0Pe;uVDa'p,"%.r'4$;AҀ^0IH$ y468jN%KZ*PKdTWDIXȘ 08\/@Gg$%oaX+iJJtL(0ޅ@C)aY$)Hpeafi@F* ! "ȍd82ae~'!&VF0;#@Xn;o {2ݗۗ="C =2.zFiqZƟd4|[_ Lހ?[CKzn("a~+lTø!=uɌ3.B" XY#^BYFb+5+"?VֈWaFb+5+Dx*\Y#^Bg5+"ܙv 93oȌfv+5/ heFL!]3K-Ly4R񨜏钗\3k4!ӌ)]3k4":<:Y3wg/=P@ܼ-G xOA߉ȯ =!K_wd/UYݡj#EAp%#5+Vvg|lV)"F\͂zD@X})eG G_?-p^'fDLmj`6\+{ZnIYĔ&>WYȣ1=Da%rME.3?ݫd3VG;(K%~.g~9F{PZ~74 ?=6nͱr k=Zo;eht4lW@Qc|+gh܊ѧ3F9d|eQ azdɳ'E2`=?rM|9fԬۏ5/$3]KjμIW-)mb~XFh=|&Mw}r2az{1ZgJtI-3v,_gR%[f~m!_3W5eֳ n$zYgza2s]4v){ w`UVI#Y}2SI/.ڒٽsk>'v[ll_F:@);`xnCy?XoGu6-k,d'+s;Yn'qʣ ԯ<rMK9s[g:c7]wsZ{9ݜ^(vsZ s Q+ύܘz9w^xv/!xi7%/!8T sݜV#zan\h.y(e/unNk/ݜ~ͳ%9@ߞӰ$3:nNk/g{>8j7g/:}7mvsPFm%9`vsQOorv٠odi]xnN]i|m=nNk/gE/%lmpn ^8i7%u^9Rܙyk7%׉S6x]i0;vsZr7߿+<݁ðG͙q,5#!?eppw$S8U<yWiqv?j H¼G ]lާsy= ~BYMVmq GϩGwWSp|W/E47r3[=9dbm6{{U?na}tLL'AϏ 5bN823x F ˸/LHfeHvʞvd`G^}-q.3Mhb0Z4Vt+iz4<"SJxz%bC$: $oДUN1"N[O_AH`!t+Bt#PkJddhREbغMC*QS9&{Diڥ)ظ#/##uV4hb8^i ki-g pVId21.ИЪ`_a85*a8n_z&Zh*ԧ@ɈHP T_ʆL orn%e.ҁH.Ef9' MꤡR'JtBۗL) *:p4TV{UOl}oUU W%WJ).bUrZ[\*AUkm]rŪV++V%uu̝^r|_z~Uk&.܂T"q-Zs[~7~A$ "ŷ '"mw@ t4CDDrlZ& 1\lq,$.kqMrb^U$-W?H}(Bǡah{pEF+99?ml5}ʷcrVă[uhݜ]*Ƒp}.y\c\OdܘȸukF{.g0p%fB-8;G2{'Wk5TG&#xl̤"66IE> l^{^F6u+/#8Lxjm=đVڬpW&;]cq}əm燐%d!CȖ뭆|qC- 8eʙ [\w\RT9!W"Y;zwݾj\ﻢzHX2MyQw/M~;ZY[A(Q4g 3|Xkc=6}2ĶFAz ޠoޠgy?Aޠo]4Y>L7E ΁|Et\"y\;.^k9ϱ^v\}cqzxp;CB ?{O䶭wU?p?"^ˇ\$;k/3J4xj} (i4GF@7Mr%"O[yK0ɩ^鉦R0 H0׎bG:vS!.sxaHN8EקDD/B/`csiye30u82 xГ㧑҈afbL |s]X B!b<n 9NLǑO0v}ʉ|Ƒ 2h@|tF`sB|!R36y®w`dD9! es1e@ lGlӢHQA8. 䑻wpPDx່žv|&CYBVi0yH(\Ofg"Cj )l}?pr0gz@cLNt>yHd't#~ӳC2yYcL؎q6BǏe pD\FB;e. d=\ L|̹r8%|+\ԉ # (_h!BS8s "‘  F00 z"8]ߥk8t[$Gv TG8X0f1)X (Ƒ¾? 9YK(g L3:feZ&`X F 0Xn{a8%ӈ<IPԘ0#:X@ fDa˯0@38'dJ ]'APeqȋeF X 2အ8@q F4 P/Dq!)Ď`JA8`\H$r10ݐ0&󠁍#ϋn P> "{ Z:\TP '*TW#G;U?^ih.O{yz#o/^R$}+>#U+^]_{uWH|/KH{ۗ*ʭϓjT|6dޙφ,s;2bs{g>xagC9l93 Y kIQ~_[\OGll2-lj[(C *z)8 XDҬYZ~O}>Zcgyg" M{y7Ltf3a0[N䆹</룙ЯѮٜ3cHUсL1 V9cQ% 9cQ-o|Zm䤂@Us3bXJ sƢ.e挥Y3sҨgXwŜ4N1g,c9c)˙ @ٺ~|Y݄fl93$c(2;lO O<8%6뻾%zs`wr[YI' Wːr'rST[*WԤ5rDB*'GnBP$2fcZړK}U|\G[ij?HvlcgS# iRBVeDwև:y}&ˍ*>,<"r}v^;9n)6+I_Y)2${$S7I[kKm. ifiYnhHڷQ7LlЄ{YMᶚʧwJ\:\jgn$R.@nAyxvʨG- S:m7vZ*OFIeY+\8L6rg\Su]UJe; P烻@hgf 9.|Һ$m[{1=qkM)򉍉a(TqRBڲms> XF0&bV˅j'>Tݩ~}j,j` ׻Վ_CU\+5of^8l v'%::h!`n`~XΥGt]&_JW VwtOUnwЩmC{Xսۥ 6XԽV*i|2jHk^4ƬTU%6v,.8_oax[ GGdm1ѪW7S3K!`^!8;0! *ȃss\NK,O4' {M\f J bUxIh |b{.*`]i C"""injgCʳ'춇-MVfY[)gIC4L{^2n 1]8xA){XzwS{3-n-+`Fz˷v˞$,M)kְ`[cj|/vە1t: ^;+[v`d:V^Y"?~I~!vrg ި3. ps4m9@nRW#;qƬ~d삏Fv}26#;PTf{㌔KY B/,̮yOC% O=5.pyy2Ͱ=| Bnؕh^2\o8uO|HЭlOXɫa,p4vJ iHi/3:qpq}+l]I[cCG^GDSح@ )Up&]>ܯlcfjhLBL˺`ip/]ͺ}AqͱC ~S1iIŔ411rV Wzs, Ė-oZ-V]n 8ef􁃩uƬsHvJRVN7#ϵNUT] nvp'Šg2M#\.xa/02|^27=M"+)m['-H߶7r6T'gZ w1SF8R2- \rp>;$ 98.ARigTr%ACʗʕ0 bL;.{{d-QsH=vYPT~|>CnziRrgR1Z_YWuSeRrecb'׀aװ/;9SjzfZZz ӪJy]J3A*Q2OԪ{63yg.)uJ`q(i^⠺\f|ܡs="Ao+n5s] rLSHZ_mֽ`Jf)3C$֠Ǥv0EܲQX>Nv̰>;sMc1ƎZ% 5a.c‡= /I^Weqj(FGRsmntѹj8n)<  dX Py6)~2(ӣ)SZ*SjQߍ25T-s(+yuNv3aҔ{ԨNibEXz^z)C%} v@5RR_@;C5 s>JK7Ҽ؇R͇uRV&$H&@ETݬ ~|͹ d'Wj{,Riᗗt&{ݾ9^>K멌~|jxl|c.f/HC:ӛV&'z vo_=hq2T]S;Iw =Xjdb^kH7,uxXɴ lXL2Ǯ{խݩr]ciooJj>-ykVf$yϕ=գ9"XވqF<}G?~zw}{N>?QN.9Se~Eu^Y0NQCvF(Utbg-8Ϻf\K?b)h`LwWZl@-_JA^ƒ/Fլk:@73%W߯`8QQN5|ܑɭQ :: 0~=lIN%<6yMArbmy[A)}zγ au)s=uQ4gϹ$k9X uWxO lR޸u߸{7Rjc;syFw@T>Ha 8K ݨKS񫊮I'eC~ r^#ુ3ÖkzT])=OV9n:kt@.?AUv;8$y,4l`{mYƻ u\(W붮nw:{b_)Uݙ121rm%sLSyi=B_!y* g\K H52pRYgwNTu,)v}h>ܩu07͍rGFy*v{׎-!?|%z K_Ar/}8傳V%=29[T.'1JET^e(m61ӢݱRuV_\Y r:4~9&O8D{sv?/[4a'tĘ5&i#  ]`23wn#g铙.˂QOgBAߦ&b1c;ykew'*]Ғsww2~3,[,6@YrlL9la.-{z5s잰1Ǝ&HJIXfxhm^8Hg0炕<}Nlr٤o7Z@\MO`t6F*[[r?㖭@4l'Czt-E'?-V=X~7I%a3I`b]k4:lKUճP% HKOrYdB[7 ԩT\Xhܲ~_&+i<Lʮ?2ecySnMp{pEeR 7HJjRjZ+J"@i.vuL1XZ삋]p1CUڱ"4%L['J &S%hv-X1cSTK^pʨd:ŀ+BzjŽ[,Le% \K91A;,U%'2A;IK=N gH5ԢR^N*/aFSơbbwqjgsVCa8'!.-J٘1LJICv6~>FəaL"qJ"$A9Jwk)'P0֤|D8@u%U {4Ŝ[ @2$L[a4\B)Q$,W>Jy0hDQh%6sBP5KaL{F8q֬@g{Z)JvK/̕|<.9k:k0[F'o@G008Y2oL_g$䫥EŹ!\&Ł_^T_H9ed9L 8wU6S )j.7J(×-!'uQ<%Keٹ,)t>a bH jti 4yVf"Z-f/Tx}>;EAS8 ~>=u/nb.HRrLuT&,;V#85fɄy>exndhyL`}IYS^آ &7ﳊ"xSZ)(SnڼR6@O\q- [)[eH1ay_]wCћc+w|);&7b37c9yIx]aKPl# z 7O)}4ڝ^D~zީ01)f \ڊ#ϻ88v-ޮ]< Ӏk}}9HL0xCMѶxi{A@tj8}&ʼ&SLiw]X>$g E*%]\܏;K6ݖ@}yT+ ">Jgjm3d$*}8GYb8clק8` ;泡;_}8\f &_@"2"~E0y0{T>l'X_Kd=U`>.r(Kv3DZEJCD#ol]y/LG븢u]יgLW1GҵE;N+o{G:[_ !C>LWA;}M7 <1c/0N*YGwsIrg87F[в81i]C[:Jj?#y?l'7.t?7Q3׿n.3t\]WT1ʫz7L~e7,A$?l^k%8A1 ErG?10` QR PVj[ _%?r W# M7b4OBtߎEV}Q׋^AO 4,z_5i[}zXy+n[1Ft ߇V\U+PϠ؊3Zt*^Mm^ZŐƴxURNE7 쳯q*TsrZxvTo4MUJ1m5Hf4)^aoJ@SMc̴wkDaKT2] cܦY6AՑ>`GD"FqЈe (H EmpB|&RM &RR,&Zu-`P&V:XDK0 R"HL-<50S$ /Q*ZҥK{Q<܇21%$&U16y&Zpr39S`@a +\;_DӘ;#Q$tjSL{i,45ie 1qTt_q!آaUMe<}a8 /0>N8>2n?8>f~>;S~>;S ~ns^xV~_Q$g$b9Cύ,pP~v/3So/ (UE~q5&z Y{b- j/XlDQ>tͣC#h򝘯+G4p4&Fg  @|u6kA'="< Z 2zTCcEDEX r}BtCjxC 2dc_ξ:K>ܚyZtԨ5xښ%7!lW=oU|X#"}eػO{YKdD?V"?ogDȰ>1FT\5t:j%DHo̤z)5ԪWAϑ,0{^GAcߓ{6loq 8(qZ j.I"ŷ aPݏ3-,S]=F3x^3 54>ICt Z[cfG  *}XzБD|vɘ4&b=zz3mb7XgY,%uuctּ{P*{PY[ Wj>$wv\CEB腚Mʾ6폋uuoD\CUT[ 5Cu!oj?K-:Tg6֡:T:TƙϽV JZG5+4RS箘@HibĪ{{ >[[x[ђ1NY|,p<偢R&okql|w#|h4$TQei6~x8`b,[ ]hmvR_3Ŵico5O;@__딓;>xlξx?I&DNov_[R %ޮ"Hn,~V6ޖxgлx*9eK\okxN:d Zl-m ̎ ۡV v_ެqEl mv>;d=i4'3d7.6Îё{_ԭWخwH`.OFЎv=:|) 9Nn5܂)AP[СnBڢ듋۪vm:>)(˫B|]QoSk[^sk)o4MEz7]ϵ.RJ7y6\uϴ1ύ&ܼi"=dKTp/k| .Q^2EViu!|UVl|Uy=];g *?g#3tXCS~z3uJb& N)|&ʥb0Qig3>Y%  b)_k'zW%o~ֻdʬVλ)qD]Z{͏#ACk@O# (^\uW\8et5>[;îɓaa-a9@zr2+ D Ya2+ͬճ]a+ @;C+`oF0W g#Jv1U玩'i4"!#l4E<  i" bCUw sezq? $n(=:)z쟬b^ %/z(i~e!r`6eKC9ֳ)PW.V-7T:Z TPO6ٳc/k V\ W wfnL%q2ª6l~zZ`'ېYˬYo[]ֆ?GIϟJ1R/Hcyųrj{~io Ưv; !nb~ڽ]}"30l-l @}W~ܐ)KR߉Xm 48 =pbg\؄l^=Op2YqlqkcMDZHoՔyJXhx-2q'Q) C#Pk(d6qTJoZ 8XJRÔ\SqJX@ZP@')s)u֥AmFbѸ_–i+A҈@<|@YlLh]T {"Bsy@"' -qcGSYŞ3ir8&nO͹lI g\XZo1VYfA4e045JI` x{Ɩ/?Nx~xp88I 6dѭmV!ԲM*NwS䪵Vwlȃ]XY,lB1 3=:%^^˜8N ȵX& _0 KJ+a!אVO LiYGAAԹ`ܵ,z!ra/!:L`G@f!|p0e`Xn,q@ԈHh18VQl{zX1xl2n~lq@9,йɡ ֚xN|M`QFbҁQ:\/̘5toD*B$k@Q|ϳ( w==b=}!׍rqA2LyF-&Dpl qnoY2_pn3u锩̎Y[ÀO.~#\::s<:˶-w'<[G=_m'Ezegd3h=y6òZ*b_gjtBNǂd5 qSD33op"ft'!*'`ʟ$S<~M3?̠SYOW8[ͨCAfG$ J!i^=b;.ygz|Y)A᳛S^>|vsʋ_‡nNyK)/~ ሖNxK)/~ x ^\X&wUdZ2 DaS*,ۙOs"<[h?m -4E_gO̮N hAW^vY\E~y˘."hvCghV!řʙMLqbɘl;ͮ161? ?i`€>ڟ5W4}$( XO#|Nⓝ.w|Ɍ2K&1`nyN!c~8ۮs&} :>R~FȒ'T==MV>QL-;Hܣ#9ש#kBÙE,]qdV$*/>Xϟxt\VAnE1O.?AOwGCmu2 }umvSo7޲{mm00O7޺15zGO|Fބ_,;xXr>AԐmĜ藽r(fo9ŲIl[h-*{; Iz&٬L$>KM"U[9JLZ\ Z%JFeID*ˑ[M%gO Ͻb`Z<-H>>Ԃ*j.aZGXܴff[5{,{Q8"$`x˓FKyrEUoqu?-Ru_v!_w삗-S~d..OSUT9ǝHt.LDngM$^,v qMJ"bCkL Gq=Ј"#\݉Y|Y8rP`FtJA>vǒ@TpA] O߆$TbP`Qs,Yǽ1r O*<$}H:SbV 4U飦.Gc~ dh Y]TUnšfC?bH-瞩y -jиw6t ]Z?‚K5 mU@(?I%t caДD.6٧G%secp ڲ1\L٘l.&AlL6+1=dyPѝb (fcd/ds1i(gc4 -RW6& #\?]٘g<O,> a8į7Nu~ۻy{"% a»d[g8JM>怹3)/D:cm{ؽg#n/UBf}miQڢڪi|I].g]iQ՝^kkjp-cNQ7 lﵲ%;庭{~wm-aE7V9bXӟYh%l>Ŏ?6|ͷ;m) n姬k)Rܥwi0jY ] Ύ2h mΪY`MZlco*cZDIKcm7ըÚd: J]CjOP9`K$epK56& y-Ѣ!OCռǬa+~Jot }pEax|FdGo7[jxFc.>83SmIz`f%18u0Gd_t5b=L*LN]ۢ4房t 2E'Ә/p~i銯EܱͭQD-SP;y`ѝF@Ro3[tħ"L)V*ljEImU{)T4P{)ktPôZ}\IݲBTzlֲa~`hL2¥#\xGm@Z 1w>r-r' QA}F{ڥP{9ֈm0-7M*1@Zn$"oRMεmR2󦍓z㤶􋝑M'S;f`:C; \>Ch6\ԗ\<YHj9?>G]d!\n-s}^.W;Dֳykga`*un{]IJαT+Tvn\ɺiJg/Ppbg)~THxz`-2S'"T助ݣD N(c\#Ӛ}g׈m9)846[eF*9YD* -HI6*6]j”ӄ)}i"HYf7c*X|MJuf"( 9NHƠ*v؇Ц9ujHB9zm~Iϖ?:WB=2 uj $&%7PqPW{W9RHmAxMqʓObX=oZ!勳WH|ή]_CxԒ^Wx83g?wPԠtPP[y2gMł5ߤu4vZ_UkJ$eY[Izm6' }hwnx)A0t_paŷ<۶TCyQV:#fئg2Gmr(ՒmT4L \ӝj˨mTzW:Modn9d? Vmt mW!dvs!Շi {I.wgƖsTΨoW㲱0sاͳT$, ^=?XX){Ze٧B 'Ц)@|c<ўg󣡜6[p϶ѝTx;P,W/)p%m :ȃ.L RT!k"-L:>PGC ko~Ew 4Tz teeCn:RvA$R[$:ò͆uFTdJ31ba0sRBL~)VW^,[pՖq9L_|`is2 Jn V{Ϧ5N)՘;* ..QȆjș+ǵ+##:F.^vR#úNѶyZB~C*rpPK-=x2ZJX_·rViɧ?{oaW+™>7н0GN;P}e/8.gJxbA/#yϱtdc )a"%Tف _oE?aؚ#UEU$ @Ui4]DQ+ޙXJV,.ZfP9Hrl7-Uc>upAb;qki6kޘ$_$#zUWMn2sQ1u2R!Y:Ei=8ٖY}-r#!zFdٳ7_"*'$xˏ $1:+^~ aH0YWِH@<_䊖6䵫c=b3{y"r/C.ET+Axuђ ]l /_OE6AIǩ6~_鱗Ion>R/=_9x:ɤ5AAo>7c"Ish5xD{VR{fc4`/T[>"Nw[psr.Qd"oR-NM ^"k'$z4s#>=] Tw¿LRj^=>xt.Df $?ƖUjN:;P5ZA_A,aԪ2PÊn[=9zXZsi4ԫ% 4`Kpv2ObDyBGYޫڢVu(QVȞ }7n{SdI.Mn8;P5|[MBIkmhbh;|W /P̶pپܙ(W{WydAdZ]moGGv&iVX*˺ >\Uu)^Ŏ;X O#ŎzW<7[ޮ丬i LH*ߛK XĜǞf=gNl-fIHQzLpKkWOOkXK|KtzK%@(g]*1mQOpbfnY͝FŢVnxU9'dCU vN2PC*QFУTp--ކ?گ^_YF2xnT۩sqS%j TXH+a \ l )Fu ۤ\Scݞ;S}%˲id@ICs}/L坮;S }CD,xكTHj#)D*m(63Y۩Te h3}e֙ʋy{a`ݨ]UeJFjũZ$Dӆ~8nEj8g>JigTv|Y|屶dAP3KmXɦ.z__uؼR*h}E=>fov#\v.s&0eLmvT}]OWߗDu1ljW4&~\n /JrLE™tokMO6U5M=99l% j9^U.=՞ZvأeE[@̄J4ף1Œ"UT>_"6Ncۿ^t\RR[zv]!kr_ K=$P d@P]'%A|}64IyZsa+x&Ƨr(1Ӊ Hc_鈩<ՐQC6tO]\t!M]:i8bG-ckF67lg {3]f|g >Wgw-E|uw놞MօK◢ t' gn_q6=DW])8]99FDȿ$ 0r7Z[F)CnnÓB̜Yŧ]ݭyvlaSŖk9=(/?&ےCHuj%ѻtgvbУDz6呂h#>b&dȊ|)@D5 GEQpcv~mݖ 6IK?JDct7r϶]h^郩l~޻btoџe 'X٫/}^.Ӗ~ʤ0Й_G XJf-<\~\b~yzpli43}ҜqQw݃wf7OKPqp]>7|>9rӓuhf,eJe7 J{UAw,+pCui~UK<':yCgMi=SB*o3,11o i)eyn~GE vtWf#Vy_H8ö8e*UJ=+Ėe[ >vӂ*&nNR7ۂn~.Sy.#9.IOWW}ҥ+tRsX8i"IYd{~9ZLO9Lȵ sw 7tDᓖXcEZXIle 2L=p% K-CJsg7{϶Û1"e[,do(},UFiI)WSuQi8pv,[fËq͗bs5K=a,*M[e*]\q! "o8xN|/eؚ1I[GR}wӎ{'a"dž2[si2_Ur|+>})8'83[6_t>__{yiD~ UK UB ڦih5-KZGNcKjrمTQМdQT~4#@_ ASBb(ŨSwܮM*6wYJy>x>Q<"tg]]F{hϿ|k+{L֩h5Kuw(:ؿ:P ~#?_<8Li=z.mwBJ7w8a8Mj1P-fj#uO׮!$/Ͽq+Γt4 Ւ MO5=h ME=zBt^]H(U*lD:kk,K3$ XR/Z2$&+Z*4K<9s)Zd8y<)iʍ]AzXx7_l=h3y7 _|6/9 yvpXǗQz-89jܧJ^#.yL}*g3R|ȐdJ.cا Dv9v>R /7bl({?7dH^ OgNU_m*Y?.O ِ/[,P}#(׮ݲa_CcB9ll[fVKefgW4|!m 7oSWWR;_bM )n-Eh␦¢kS,2qB/u=Wɦ9j\Nam?HdjC3a k6,&W4/Z\B[JےmѾ2ߞh/XtO2sm7b+\TՋvΎʆ0>ѲlI$֥!qa(RlŶ4mUTe&#ʂ/Qތ vwyQz.K>OyEpJ*(:\B4lƆ$٭f%Ezݯ̏$QF1qljȢˑ-J)sj67dsϊ:i-l";HoYΧ'U8TCUj;N_nu8#ΩT=āJ]NAr2Sn6>aWoe|G,)ݧfwk7OA|)%y@mw vf|2a9c.]H!VPQ 1xBgJ 7-2IoNe|E4?v<\.pZ|l> 6 cO 7=<_jIA\e&^)4 :W\*[e_mO6cj~añAs5}]<wg9s|gbUBk$o"3{Ն Oby%:Pu0be&W9V5ʄax*GG#6p'zk5aƥ^8[+)[!W{M}gwEj}a=ڽhz=5S`C=g/̮yʽ@!zJ9PO+[ ]] ncHxo)oyGK/kiZ' --w ) /_]1\5{hf~u=x. ժ_4*sFcų#摮K%-aIrrYy\>s_+x9>Vo5`7ZO W33Tu {G>2E5*~! >O943 48OyJn  u#Ǫ+(my]Pu±" 2_J)+Wʧec (0dYmzzd/Ikv?T1iFC&qv!Y2oi4*@RfE&.iދ%,sM|fn9Vj)c]G[->HTwEwP:5 ܭ $#~ի5JNqd$Ne-A(|[B&xmϢS[ްBcMmB;cd Q \ȅl5 ,w;E[9hūvM0$/U ["Dž]NF)Sb~RMF)1)1tL.!]p:S+ɞwJ F1>wRx VwAŏ)Ѷaf;M? 3JSsV/ܥE%fKYn d %?BkGg#ͩ Ao({а &f6jvVJPzrv ,xeMVB3ݺUgiVTau5r2$F]:%Nq,([zػ@t]㑄jېjt9"r/S(|􍗏jZl<ȂRb.Ͷ))#SW ޱȑ@f^GMy+mIxDy[VfO;L{7G(4B%q2 +El/+w*Jpk|su$MfqYxu>hҶ4w:jRZ#v#ܞ!$#SuᵇZQ##'s4>G*Tv$UFrF)Qhn}fO%")*۾a8ךf ӣܥ%eˍƲ>,PJWb|0hl(`GIޱ61_{p1% d;>;O;/b bAA͗R 2_]2yoLZS:↚!t_.S[44]#Xa XfIXۤZvݶO.Zn7DQᱶvȈ-Xg w|[y%sYvj϶*K{9qxVF@ݠ mV<}{W4%!}2@Fz(cbRk#>].>VOcE&A8Q xӈ1tUG ̴@Qw <8C9}LswgPG|o;ItO% |C/{&' ʼncE U{zd i+&&bnljެ$XmX{Mzny8Ta>[@D荖k-' _+1+M^maX5|g5~.e_d^ǖ[w':O^:RH鯪*qNiϭ2iᐤ65U-A¤΃1ڿtE0ڨĶY̞ԆwQ-tעl\m3_c And!U'G,dZCwNXZ_x Z"5nTȜJkTMvF*F>=x|vOWO^\]Fj)qmvW8R4ftgnUw4;v4iG3Q>hG3;l{@jXhYr[׋yD6:e[1=iۊ5 jjŷ!\To,N5)'P!6rTdr"ďK%mkSRĂBzKL~D"VD|r' j"JW{yj32=S7nH6wDl=~/ZI{.zspde[vG⻖e<]k7*Z%e4(êjaԠYHz{÷_~J̗oͩ[ WRNSwݟQ7zf2AM ^@lWwR) lcA- v FnIxޑFN_88=z@Ĥ?r})|1ܮt+G`Z%mrm7 +v5Z'Cii~e׬}hfU?|fm hY {KQ&,l lz6zuܤP5ÚGEflf?rHjwB O`Q)J46ȏ*+S *PYdeԸ> q^-+=+~vSo`oChK!j6bQ]r3EQ"3h,aE[1UWdyMU14j%*&D"q 1\ɭ)q66=^ V-5uaVS_ հ\] nF&eeBBho%Ej44ܑgS(J2SԠv*3}5eKF(7}T/S])Ebv%B7Z9fW/((b^5-T+lrfOʌn޽xkU"_ܼcr=+ސ<]gxk9`'FZy )V)a?@pwrڦiڦdrit9QņvЋ۞>=*j4oED:vU 60,˃{}۫?>Y$>A8oE,ZWͣ-z㴉c.|ϟnxD~^os%ixr{ktTx7-镡i-=X.vԞݾlr =j+v5]1 ?q"[ 1#[>uRDҝ.pgDLJ{ ^Et+nZjU-=HGCmu??;9402eH7O+ mM\ٮCwOwrb{# ]YnxVnn<3dhȉ3<ϋ(6f2?mփ(Q;zȀ`٦e BaOVb96;D%vrna{7u˷LE ,^9w87u3[t7bv 7c0+4,{ ]܏'m?@ٱ9I`2=v1cfb>Pgz'aizCY1]nFnGsf,+NB7-)pX-+"8V'<@' ]e{<yIdFq:<<a&8;^腶kƄV\*t ]/O*DzW♐,l&w(I'ԭ9D^ s@ 900vA\u:$ѷ͓c!I=7M0t7 &` ϵ0ߌa6LG:龋v2 #G!VŖa̱е!N|? 1M׆@ȉCv^¼ '=# |Bg6@&:P1GA(: @MhRr l;rk2AX0t68t $$Y75\?~ -68fR}veσ51 [bHq&3> o;B%V6"hXlI VC-/qbر?Ѝc#}?݋̈y7?foDcFP04`Z;XZp3-@0(P P0vL/aYdm|%Y$蟍/A:T7-_Za1̛+(Bs9N@c0IA#tbz4#F1߃YNM62Oa5?(a6~endVsLtl|*aBW-XFF̡xa9*؉+y1& "ݞ>\ рFa~~`[C9 AggġB$S^Ǐ@d3>ŀ>B+؂$,?PQPЛkp!^p];_N(Xq:؅;atxU?bA pu YuXx!>;w. v'x!ASbCw`ya]f# cH2^QEF1Is {0(1|>)G(̋6hkK`$s Xc$7fzv:`lC F}R &^lxq)p2$˶MhDP؅ 0a ,"I(F#^cW,m4 ܎vM<$crr $`]:0A㸥=pVp`osH&)'ByXI< "쯇QJ 0~5$`ThL v6,:DV\ B0 `+Y>73-77YDö@ 3\ J!:c8́H'Kf Ex .>B8#,+5FD g2s^5v`('؆Kle@^XiM GsDŽ`@)҈l2vd& 0\ TZp [5\ o'0'^F?O< H&ʆqىNB_ʭa@/oաrY]l!ȊYX8b DKlay`FQaq1t$$e-D,(t PfA Q@J&FP }pA5<ghLsp"fHY]=%pVGXl8Q<ɕg1~FZ0 9 >X]!!B'D0&""p;נ\bl}ɓB#Hlg@op-04V@)s!q ]Jۂ>6z)XH62  /7s8rG+#JC d.gqd[h@=a|ݵaEb5PAMJ`D`$#촉5]Șga&+= -!F!h .qC##q؇-dR@"mF,C8.!ZC{dΧ%'t`["!UeHZ!BO&1@ D=?}HvN4ᄍNDց^E0CeS {! $p dƷ['+@7 1?",BX,dBlBhǐѯmAAz NsZoR-DCοw.pT"Ŵ`'.(V2sPN4ٞ߳0'39|NlYXѝ3BkY{ɪ=c՞kصg3N+!M ~*ߡ'>~rArӂo.6f;g"#{.9\AwvKiο4+< :w$+⫭v U׎af ^UK~'/gb//X/9 8m/x//ȶ٦ѩkx:X]]8]9'`]'=1qBxF*&4VH41M!=Rv_B1?@1v. 1:1^ܯf°w?*]R1C8f/F+JdI3;j@YK8fP#(?x/ʍ4,,S> 1J-kD,Fq ZYJcJXŌd) Kj$ESf@{E4LQGOp1Oňݧ,Zo~}g6?> =h/6]sM7[=rF>iئU4cن;ۑCx ZZB{-&6^7uZHuf=Lx eT~V0$xb}Jxnoj>~vE˟_5{Mԟe7yv5g{U/=%_9u_ V6|ZZw|',q-=m&Cai+ ]#~:V{quvЍ쾈Czg7;moF(h XeGH&lf"6h?V9Gzlfٿ"J8pbduH(L/ɀ@镋T,xSH]j\PRmXY@n_*.dG} +Lh Ή^!wzD.@QR\"/0끇vG;'^LittleCMS2.2 Plugin API.rtf}m6Tpn="x9T2=df/m2wjn!a6̙LIuK]XT+FxFLqE}fB*YaYrXIyN:yҴDzm]^ŲVM\kjU.\YUS.Y*M:*ʸm;9FY^3kٖpM\?~}.Ye.ґ]I/o˸'u@R {!2/ %i-?$Mĉ$RWOyʞ@q,"T*IsO#*nٯZ޹(Bc7!9ODO^TR,xSN$=w-S*@2xH ˗0~59n\Ei5 ylj 8D^ }o?6Z΃%~?Fhc;}bdr5̫d>k X 1 +hlMl \E58h kWpa[]^X15+LW6vgRReR ӑq ]F{R!0N[=r=.<{=g{CGK4HgH܋ʭk2Ϊ⩦Eo,jB+72c˼X&cb9hQKp)]럢j=^IhFdو>*3 ;:sEE-a;_!{2͸^*QmuGkgϛeTCva?DUA& {(hlwweU@W4}R5ޅPWe_/gnݡz;4de|+8BgMIJJE&?nMp"s8Jvu隧J-ɴ޸Θ ʱn {v)4v)5a2; 5FدwkUaiؒ{NC 9:۴1c;j% ռTs0.YÁIFZQ)25M4[+۴i-"n0 ݦpؙǘV Fdw~*>鵻1/:-hx%̹̰ӗ11y|؞j3UJkwd\4TTn.QCt*UjKU`¸D[+~4m77: Ucwa#o{1dt)dqEcNG"2NG~_Zwa:2:} +`h9)~/gD:T\R.TN_+~OVN/g*^7*usRuDD^T.Uwݕ{@zgh ͍3A'u`\=6_`O];[]?wlL>f^-gߝ.ηC7[i^Ta/Rɬp).D$NP{xE!N'iӑTb޽.dWPNbgUJ@-u "G,s܈JhSVTu+?8֊qZab$[AcQMݵ :㸊8HHԦz 0mD&G9@{D2Pjfn3\+$K[q&ٛ1IecgJ>\ɇ; ]gK3/av BGPvFC'2G<sCȣӾ2q 2Τg󙾰pt)#nw{nӊc\T6*"ڢ] aTntoUWy-/"[WLWRE[k>AM^ųwaY=qUXélF-K-f@VE}a^ؼzCbqW$Ky"۶ՕYXf5)_&PI^$2ąe?#˖JMo4CZ'plfK-uX6cRFꕇ򊪰}9FnLٽ#m?R=*fg5+Kq#9]2 2KC̟HG՝_Gԝ;ߖw? ^b2V3,S& qv8-E hb> UCB)0$g1M' W$pGK<ԩda?$*!JaUeFeRfX슫T__UMiޔ `Ri\8V>EA?r^, }Lq:.ҦϭYF'36Ju4OcI^v7jfR~̋r[JB 0G).bcG>\n%գ f,}ly5f2}k~TR$%mK6r`ȃ 0M׃^^E򦶾$}8i !gk1qݱE$_y!_ϫFc), h;^ҨD-EQGyO0~ŏz%ophaYKy $سXX j_kQ#LnK1d=pNN>9Ӆ0t]"/ƈK]½y.޽zK? .Ro-ZS1`;hr?$>$@Kf=˕2{gy&,-Ug'z$~8諪w6GDi68u8wLfLs$O=yo ?~tRUx)5u>za7tU*b~:))[+{5BV˶ql.,d~i}03\0iNMK^?{,КsۜU{UrC#;hRQ' wkφ<.4ǜ׏H'T8Osh:"UŚtm$ź\/;b*Y 7I'![xqhLI !/мhzN kaXBC6EKgΔNUnkky- axe,ہ5~Գ㊷',OP2(˷Ee[~kiH;uGsiۿBI'N_'z8V(Oc"eGO@t.=Y{%ߖw #}Ł;1}'xHyubK?J.2^O|͵8ʑudaPZ浀1c%?o'ҧ]}EG~ѸxS W9prޝ9D:w qy{i^/ה=rcra+?&}u~i kt8ԣA˸ҿFy&ṟDa!FfSc,Q ֌v$K 8v"S%:O)kW"˻K0U=\]?xnReog]B,Cn2z<>oVQY)RkaX%}BzUDw8ِy230r:wUv[ RZ $fӁkCU)=w<#|wR/`9y.w/~@Z/]^N~{0]z7^y-5kֶ׵ԴNVK']I϶ǝ2[(rڪ"jۅS,4tiSvݙ_p+ 2}f |w]3zqyuPKa/Ya!)a'A>F!A _.8w(ip? cpp#&f ˎO?ũ4E b)4ۚ_ +1];уRG"F}գr/5.%&Ӹ[H>No,0"$$[0cN>-a޶'\um||>ゕiM}0/F8$͘Y$icN3F:O#?4èi$Cy$5wD!uǎ9fX±|WJ3t$6 qЪaГsq4s9Mkir=3>CkDzQc9v&o=)G(3ų̏yQ֓Ƣ̨OtQܲlapqyɹئQϏ~F$˘WYH_id|e|~c 0RE>cZшyz{ahC*6 p,5q\Dc??PK7z6yе $XhF99;IF=_M9d܇SJOI2 e$t~8%d܇s[;Iazv?ΏI2J fp\WDܷ8|J&I`;IZ 01SVG@ Bbq8@6? OIqv^L/ 4wD&s#G!NÙdXH{NÉUv%;":@-hN`s;nniy4>S|·y;Ľ w"vqj1)b#,} =uq%h3fc Neaf-dP/u}c}1j'ߘY+lqm7zs׆u /u$o\sϜI5PG >]qs^{n:0IrtaX֞7pvMtYvHtY~x<ȜCԎƜóo2{eF-rzzdE505~x[0"/yL?5}1y޾) ^|mqKvv{9i#0m$:8G?2>cq K4e&l4\c4n,0F7e yqFN`3]s]cTq '3nW.ێ!l q\HtYŨ{ڹ3z_ԯ7kOH} y `ڊFa!C杛fK{X<#nk$p;4.@k3ZfaFG Ҷ ,&̷Į':53nASR5Ȁ4[Hf$4FxjAYvE LҼnhgЗݗfnަy:{M?fn,8 *ڒ+?57MobAO÷# ݐN j1xcxvxˡ n(͋e1:б-be۳rpw`y-C}>C R#nЬ|XŘ{n 9T!vx-jֹe&!ԞLd9h|F-Iep1_:@Yn ,ՃcuCdˢ,ϫnEi[PA׷YM>Wŀeʢ/M ф-LJ>Z &u=GAr}ƭz ZD^_ϫսu<YQН0]*Wep A\1kb)5:oۂ@:8"pJI yyaL )(UFvp SRe\ݿ]OZB"`ME>уFBy:W#xjσE H\T 90% F< Zqerrty'pT ?B=Kq#ՀjGjȄB:AN]K$>{/e{vhK.sո`CFC=>T5e0Ӷ8W1+T[<[}6g2ͳT,׶= T؊ pGrʼA =Lʁ0JGGYu=۲.{wT9 URpjO`4X9z,ʮteFѓ05;`.g `˾4ͱRP+\pe 'sp]LPKwphd:Mk^ w,akNjǵG`(WiF\X[.:8oi8e ->a Z+탐uuzP]AWi2a+ ˠ٭P%hz5JW`GX_uP"P#@ޔ=DU}zKp"-Reϖn v7e*ʰb)ys lu@0Sz2QBpG(ЏȠz%Uz0]7PQȅQ87OHRl*c~< yj,“W˘:s8_m+N dY:{wehB;PWl[J(WPB.GxP$Qe*"ubQˣIGAEX>mm1Ĕ>yZMyÛjRQ'Qr&_MOAUFn4W _EUDE0xV>> 9 Hܠ6b9eφlUv\GӃ\D''(vW ه PȎ.2~0m)]%?>ѲtTV'2B:@wUB2Gy{ YMBMz*mE7uУ^wا=ʎk*S֥߃Lx3W^Iq]%u@b,tMGi32$ sq+JTQAMKdu^gxz!wmX<4Yt!5_;}d:q}̓sfNS RÁ+5`GBpT uoȺX3{ST!P̲aPSMTL\w@zN V3*M %X3߂w84A4ӈ0:GEBUA 74o*LOĩsw"b=vhy#7HMW8Rt * YROO',r Q(xSAB AP`LW,И3xʪ6d7Hm#0]%fiAe$:F滮m 0r8[߈6P3`wz[W =нy0Q`!۱Y646u9ZKxӕ(o*p?S*Em0(tXAӡJ,nnĜDscyÐ|̗hЄ78MO41vSܚ7];hXƣbBxBS-,`з w!@¼լlXiΧ*.=0=RN2بF@` H~}*Ql:g|FU]p hc#d`Y#x&%=d6K֕ǼXHؽXGE v&m_Mq2"++V5~Ç(Mp>~KqFxK`c]&y/蝶e'lflB\yQ2m 8\UE /8+7=pXqa_m7tkyP}*wHN㊪ H 色eďold\DiLm:*,S%YLij*f*ZX}&FLV{eĸj{ Y-"ɫ RUA Qv6|Sdۢ*\D0H(\ >Hsi d{>BWj0Mޓ/j]UI7"iv%dXH~ ;L ǰ&rQt.\pE߷Q]GT7*"P+4 o~\."$T 4 *]H(XrG0o IR}S[NF7 *1gT6a#˙LlGwWDt5Hk)SH! QHT9V֧G#) #du}IaS|j h((-YZ1WOlQ"[o爑;PYgߪKPZv >ToQ#;L( )6~a Mbuq}lXݜp+ɲ aF˧b_KJ^J:$+ !7ސO0ۼ\H}qAtK$=/5GIxb'1+mual],sr K2;{~゚ C+tLG=FU<[4~11v׳kO>HP]x5@9o OMqh.\n嬀-ߩGMQ gU.:_n[Y2)-(EAO]6;;;[5W73Dd[4hLE)"l鱐de慺đJ:V ZqXYgq".ZJpA6aB=n9S+{ݼ`f0~߼>.Vxzw wxB^/MݭI`nOƪ|T_>03?kU.~~,ZWq}VpefKm 2ƗI_FP E=is6[k!Gl!jmguPJǏ:?۵ǞQ2uɎƉX?fD$t^XVZo\@W,o`Y!_$&HjlH^~Lt|VoY_8مN@4𶺏R/;q,C((^ kb |bSVZd'JZRVHXxLDP_˟_f {4Ȭs#) &#HQǎKzUݏϾ#F|Gv%=>>~=q*!ؔ#(;#IMY|ubЭD_L Qۋ:L酨2݀Iw"Sv\Lc\IBy][GFyrFZƋ/O 4Woڎ5h .VIW2=*[{p.g.gVʮy%f0uxs]ઔbeGwۣzzĬw%3ݗL :~vSƮI=f#̔kK2 xdn|%oɳ|9 |~{Ƒw<Sl&l' ,*"d˲2w5/idhxsSՇGmcyui⪿ë/4ףPW_[nRYBPQLjLF:4{v5uec>jz8?ۂkmd{U,q8K4eO^n(!t;-ټ]T(>x2dtU5 IbVdzCg+ vJ-q~ϾzsA뼟ť Ї ;2Jk{𞟤'I1mtZ]]x[ulOKNċ/˘s1[xC9p!zbkҟz' {0Y+!!B/] w L]eW[9j9=ie uL̇IGȻ2j7usYMOa3ƣzt~7|b&_lj\d'5+l)Put,`i*TTG=N';6Iش9[5nCl &MNәZPGfnn Ї˗;\=AKzJ 9rhNjKC\.b(*8b|~k:-bW¬E!,F5؊[?Y7A ?䶺rCwf̴|ȱavؠč}qC}qհIhJb5ء!qBcx'ht[9*s[*_7eFWt0 zǹST<{~0rM{TY+~t!:S8FY:xlɟO)}ˣG57qW L~ʶHCجHoBƚm?ß+7NWw8][+3^NPɻ4[zm kٹ|_0c۬|8<./~xGl|?9@Yw[y:CKBnċ4^.{+.vK74b`F̍*7ѷ@xX9%9aBwub\bŖC[q9qbo¯ڍZ-/?-v[NO%;5Ioo ohTz8h^|5?J-޼CXެl80 iRշp| m7R~BN/.zuL}suU8ȦEƹD(;!t_WշtzkiWovW=y Sΰe#G=;X#bTm+ޝ & M6-;uc$4V"+4ՏdEn d*GX]nBڭvno~[^k znzmw&:fvÊ[#ŏ~13+G8?m4tؾYalq.aqf1:}󻻣f-&Wߎap=GGo^[0!ڬ,8\qKOV!)Rfb<, pMtVeG/gq9p 0X HȞt TEEK<ӀQxH.IMZyx*H"mQiI#mJϰtF׭һ4 t 81[ O'M~T` Be}ɽDc?V\E%oN7i3Pfo`䯆d" 0>: 7w\»>-uĕP իaFW^b8fZ2^}q>]LU\ڹ%>v9Bތʧ1Ӥr^Tk7V䶚Ss^,?+7_uV c_l&N$Rn LUt|UyݺL8jꇺAQ}ߺ]&{4u2W܍q\a׃-r=M:t)~ه:|nT]O.Z*Wޢ/69zя nاs@,ZwG-j_=E.ۼotU=]QKeHV@}\ºU#tvR( @'HF.Oes +Q*0ۃt0(6 6cް[=F2b1"@#^QЭcI&?k<=rO)pաv_T%-T7FrKDR~a5AOgm:pn',ߋ#4S$z2ݧ_`ƴb+Kudȏ^~F1o]pO h4}s/gKz3rMg-/')}5 d3uYzNe\]VNf4K׃)+٧TpslL~T<ӊ'~]wnN{/iӤMF=}mM=mM]S~Q~P_Pc,}HH]__+Ճiu9)Sv;,7- +sի#Yi)S W/*7JݴeVɒU2.?e1_j7Nt`YCyQ݌&o]YZjaeNLq`9]ὦRnQ3[Qӌ<˗qBڗ߇j8{\_ 1-lۜ={ffwoۃ4oA0^FStp)ҥd0}WiY._goǯ_Fkkr&f\\RIxr;&`h|,yRtW4+.6}bTRپZ@x2q_s5Rv /^ױJHhp\l(J`,4&8ꈛW/DaBΫ7db*؜# -JUD ~;Kq.!ȔD[#CZf}~4:8^{˥(paA0AR Hl4&Ap?IFcޱT3Ǩ&2ʒSQ=\ltJYGo VjфIM js<&0gY(A$-*Lp6#颀uJ ,Ya xSa#:3ȖHiR1bhҌ RxQZ y*2N)P_1(P#*Ƙq#䌺PV2GŖ.id6z"F Mh 9dS.66`kC .la!"㘈. ӧE$%k8R+ U, : Ħ<-7e`[EAoR|%Bc>qmp)GR}6M^E [Xs]G<Ëh<-AIMH# 1hxq~frVdB䤞D7.yȳ8ЦO2Rơ@ (PhDs)K nf#@`_ 30 dj$>m]9H=y1x.ʱvPvIF4Λ5+utD` `Z7@Sd2X &MNkT-TqxLNË\@4XD (= (ȎjȈ H)x2VX5r!r!m+}F 't g$C<=pf *($V, NP`@*+l\IPn:%V0H1QDDDf=,qʓLSaFAv:7eEA9@ne!$!0B*!R{H}EpcЖ a%fZejCby¹G!  L'2U ÈL4#bü$gv-P:Z׆tK"E$`JycBr l]1 L@HDB"%2 @DɜDȥ&Va# e%,^DDMQF(x \-=h}IYR@+`V5 N4h•; "Ud|T)'doCAZ Qۄ!] 24a#C$"4}y(X{4l ,-fvPJR|i * cfdPPyHސr V)hy|7% 0DQ>P H$'S2D: #?c.bg.XAcH'_bmL"gP*`5R7D"}4I l&U`\-1yB/T@gEEDF %2i0 N%O85| AjYW < j@lDj]XWd&V7aJl W*[8c1/@މc8nւb}}ji Ql$8`L+p, [$ՠ` z"D ,>dSkRI8^ ^36ռZiӃk$/ 6싪4Be7 .@`"a\ RB Ue$(EcwzMxN+z7QhI3Aخ=Vg 0 UޡUXtUOE*QB1hFVIc.N``4 :(wl!X "Lcy^"UusbD.or|'Ř8 $0S msMT|$ Gmj[IU܁P03`tj`%ݪi4 ĔP* 0{c>Uߗ^XkyZ.4, Z`lDY KUJ5i:4!x@wS3fd%Хk vZ*ы02X)S,0vT y1Α9u[vIhE4+Іi*ɧIm5[ɋ@C@NMY#Ji `y&-)2*rAWM1q1_}qo0 jo`LuBtQkE-L8tAFӰQtWV33-|$H˦ix:!)6oS+D4srXj"8Nb#Ѷ^`KH &r>xP w؎F2V^!Ū`C,@|V;c eQw@"Pg*̍JXnDr4pNG zx?':*uå(fBZ<jD3/~OUזNX|m^vu Ya ܏Dn_K]aHcaO~`oA}Gl^N/&5\+iҌ\;=`SE'q,0 M9b̠eW:%a$ pzYFBģPUpoj2i*A,@k }YTJikcy;ƕ˅c}as@c (rAyKmLX[6^a@ysZJT}3á! }@Cv~%a3" xoRbtXnp/H -Gu@Uobpx'I DCɅĢ 3RЮnJpB5 vzY6t(e)a?sע~Ylx{RbE?9J^lBg@/T[$b8xQWN"F]r=Q?@!Nn0Iy|($)*&,Rcn<=.ЊZ)a3k1TAy+UBvF[#٘4? -F[mKA};rcA9m KW`as#'=x^} Rt!b^Iń*@ਫ7R&fljH`[@p;ס/1 i1Avx x;vv1@pcV?a˄˥̀6l,ŬkHm!P7(ePc#@am:D̙Y5lBr[9 I}X ЍУׅP6"ҟbkI+1fya-'ѱ5Z7s[WhnۀhDBU72>+B|P)mlNx-`h>/a/:+V_K'nA -qxO ~Ws+1F Dj pôJ*6\ֻlt F[Ũ*uƊX3 -'Tk)'C}<5bHuU? =U0yP<|0"xm ͬҘ^=%Cgh,kTǭE3">w_o Y%Hh,ܗFaA GӤ0W ĭ?R kxg.QH֒3.c5 .lCƥMcƨ'4<)h^!V-{W°X'Lt`46 ua VN:jjXp7FqbuC4Z f:R P@nW;؁@y_9[{s6+FXi'7KAV(ZuYo@v9uDEp#2#:Y2fv 8q nD:B./c20Tb)ϴԺװpX[1XWrY-f:U"Z\*  W,o9ݏL0`84Zt ¯pj<a 21Xؘk</t9 j$]>6tvE u4K aT{3q&ԡGUnŏQFFΓ;eDw_dļD>'pa4U߀MW<7#NCcB!Yzc7{ wn֒3@0RS6b댸6Yjff=WBvù\A.F8湹f'.dtd2LBBJkFٶ5JG2Z_h";о3{92ΡR$E0gIacclHȭ+L FZ}3(sSaV 8^A(nbϛFs?gL7!'f}&v eOʂJ-88bCά$D*Q,G hKmW5Œ%#-7sP\L7RzRH NM$54Pxk$j:0j,"uC`cy2M08~p "pbd[w(5_)Gd4/L/F!<*51ҴE55ҭc_ m5hAὪQ3TxA 3!l`N`W f☻lrd029̴j$S!jCgMkÊMᆠyT}~lβ lc+]\X3h}@FoYuwF(JnDMFGa>T45ldwsI[/Y7-ps{7;N`"oPń)!iX&D}t~D]F&)*pjS+/ o[ +QB&K=Ț\QH9}U !O7&ܨMG/H1"yhD<[1ED  cis0/QS̨7CD9A/; ѝMLK ujc®KڍBՈrA3/3C;LN^# Y"\[m=52 [aB]ZVE@&43oz':}GIG%C^BázOJ9˖^(Hi; d4k݌`iEҲbŃb#F]iQ<=A۔r\ibx48g5^wz'r,_˒ZȄ+򐕍mK" s#4J7l91 Siyشz!7Ve$y3D_:zAPzrPes!!X/Ng_ٛ+%Jl2<5]E@#g\Jn%[n9=k޴=9[Nvbloraaex*DVaaVmͿOQW#R1jAT`‰-2jyT;hr PfHͱʡJ lƒX< HcMmU!nCP[1 fA(GGmkJ S V"88nb07 \#w,ۺqϤI#[a1syT f `!IRuT0ZsfM) #82&DYٙsHlduCetilĬ?WV޺՝² יC6Fs+S(k'reU䑔v,&1͟&.0W C 5`mi/aNEJG龈6 g2]|m΄!9HԢ`'Nppm bflvUWzTZ3LrvvMi# fu oeJئX@3J XHԁ\H;sZ2 2mDqt!-u)B4oCQ, :Z70A/ѫNIFT&c 0;ul0*I !6@~WqHjI!H|Y%,YBY4-<4w2ٯV[b4Lf#9Uoc{>~@{~/@`Űȯz >]uۦ=;XY-A-P 5ZƎҷ vDLJRܻy½^V.6ְ]{n}mj̨]c |8fi$Pc0~0qԀ:-jta`kA.-R!\XZ|j2 ..)YKqKAP'k1K6Y~!xyz2Ѓ"xJ/1aP Jj@P=}RW:!1i%4X@p֬G` g]0>>A[  [ "e0\n K E'\>Q,V)cE䢢JZ,P~kE=d66-b0ĥEV} aVpF2]C5rA2Uz+9 r%PbMl%&VFBnѧ7 أFd}y^y@geTy(LV^7;3 )~M0צq "RV̵9MmRs_t!q.ź:_ ,oA'́f|X$U#{X}mtjM$SKMXVkBBVғ ?,88Џ04LXja3цSY^Ÿ1f21z[}%b?rq8֦( ^+mDk5C |+̑_nf2s7Ko&1&|Y8qeګZcG6cչӢ-J m vu/mz0n[g9ȼM+jS\DS+м1Wda40j -*L X'`cD;9Zthd;N)"4%vF*f|N,tmV51J%[f/IU̔u"V%kl6*dݪXU, y? FL-ĵFt cdlfwk  ^tha;{ע9b|=ʋRY`FZWpOi5FX /[4YWڕקo ntJʪ{d?t(k_ʼiR X-@[u+i[ce!:oeZ8XF-l kd#^RO#< -VE-MvjђG mKYrZWquNyA wm X{i̴Te?*uFlQI RF>Ea&-Fto[1= {E0qE l(ےzpsYmD6jt_wQZIBC ;l)ЃgF;;uvMZ-@u=.ɓe\-G%ip`"T@0SՎCɬG?n z4wkY](1EѩBLUha(`<ew=f*aƐ K 4D8KRڰ܌N+,# ۞ աAkI"%XϘ86vnhhxкӁE{lV䮥Y3cvXIi.qİZ_J)q̗E7]t9MGO+el4'gpXknPƺFH\CLvŜPB$O@4BM fLe֤ND;a@똴.I/904 @? zVX'R,Pf-9F,;6q0!-육KOVG2|;#{a7\x30e4'ڗg)kdͭ$+KmmBtI :KڏYX^2aO-j+g-{5jhٕ=w?;V0 Ob&s(4rLn촕+ٲb` jvo~U@J7:g.O 9+2PPdR9qsEwtZ>©5dIk?s!m *Ɓ0FgEUWoD:ɔܷFӳi{@&M-LguhKOm';jP7MY5Zl^ُs !|CYpRYEmO䒎LidCi4U/ԬlmN {2mf\'waY3|$8xA vOh,W҅K pIEfBy}D؈C3NѪ6m\m0Y\LjO36 r6YU@!8EM:O2M~+'uFLojl=D*v"^VX)[[é TԣYk[Y &m]GRz^J]plLkz T>f4Ye]6۲+[4Wwr09XPJvk q{SB<0{ݎ#C, dW}L ar=C0n$4),h3:N~6)1d+6npȶarlNo@_mLl0ADS k[ T2[`PF5lN{j3gҌIG37A !v$$n9Wvk6Uv(L3nhnKRYVF#CkS[X=bZ@ߊxQқl dq;E=v f,+E=ɰƍ6YxxM,ٚ}T[P>T!vs xQKe=E!6N.SZ;cM1E 6)zCј^Oni`OMѱe >:+l[¸q=`_;g'xĶo-9C;4ƒʭK"{ =J,So{f w> $+"2%QA `e^lQqdyx;nus0BZSRȍig/†AV $D[D|-SCHi*LmN4USgD?ܼScGtYnc6^3z}zfh98> HrM1gncDqıo}^TZ;{cAinQaZ<îaS}^fl{[؜cַ{k|@0sZv\6 @6郄)<3pNٮmCoeFƯl$e'Yoz3CB!M,@؈:qt0M.ƾ*{.h)*zÓȶrm[jl#y-Dgp6EȚz Q6tZY=F=6wF}7(|5,{fBZ]GNET"*0ѥnr2ۖn~ ¥,FwXE\l%WFv$7 O,syxTOP&{+w]hoc,CtFy5Akꌙ#B li0e7s͟Ek46VTbKéiS*9,Il-mS' `q-`0x@#kޘ fP쏵&oil-f iLG"<M-]Vc꫕IѮmn*Js hT4_fUS">T@hV\ ,-gSMH ("|A6#"ǭRт~gY=Poմ",UAl3D ^%Ccp)zl6Ң:Bj`IWM >U=@v7s|N/7XC3ͳ:v9KrIs)#>;=TXmR@QCq E3?M٪F}2ZmEc҆Bo]hPu:BXnZjuYJ3Ft^e%K u=X̠,ʳQh'O]Z 'pŦ=Kp.VS'@9Be2~,tCg2f8?5F}=X[rc2u3-AeȍYD 8F'q`g/ݘn,}^g]F;ĥfautZbXEsإQFYN2`VNfW vAi60Pe4Fi3 Ifv;Ka$AmZ=1Է6ʬcKj+z,Avuc`U 6[lvO.R/-ֈN[ sP*%H+YbLS؆2*΋;{ۧ,nCM|TA&cSUXUFAy)b;nPOvNjj4F`DoZnٙEO K8hS(ަUtrQeIKU=& vXw1͛R] 6DYYXaA :7 Ս1qvh1+P4X2#)5s"<*`@Q(l_4c3 Iv#,LtF8f2\6mnsUWcϺyӋ63op*f=شƘ@DU,ΜtB҉|O|wqݭv7:X5 @0)Vxp&:Έv$ЫflQ8jj6 ȵq֪2W!WGSJbNX~Zlz|;󝪈'RY_^vf#9f<Q[á+z,V\'h3yU6-%i ?#lԍ}nܒ "hu9ީ[|4^ڂ&5( 5,'-콎RٟNO~7{!^xxJ{OkqgQl t aa6s;>@ٜ$mbc(ik+F9Ɏ*9g "n{3F8blSjkpFjw[ hHNW>\ʮn%"9jsHjG?`tgpVrux 1cz@QbMA~)#aT&=IoؙUx}miXsT&,cG/<# n²CڻeDh}݈e;Sk:h鿶94ȯw5xp-\6<sLBͬ(^o,H8V|k3R*g &Rj\%'gJU#8CwB `b- q.)4^%4U[Y\kT`Xg l3WUqKSU,Řo,4]'t4-"B˨XmɵnYcUgSq?'??ƿ;?~m?q|O?qD.˲ن1>&??MJoV_9`Eoz;p.0aA߭8ncstQڲ8.*a\-?&ԩ $sL-Oi.Lx`!2[~o>Yn)p졨O>hbno_Ʀ|k~gu׽8S;_|m_7~eyTMƎ_?Ygužœ<+[urnS˿{mnSo?W_1ܛxnS˝(unS"?fݟ[~rp+s˯Zܟ[~rܟ[~^[~rB_1n|enS _1_1ܸWL-w_1_1^_1y++znSߟ[~r-ޟ[~r+s˯Zts˯ZM|enSqnS˝D|nS?N?-bj9hWL-wWL-7c+unS+s˯Z+AunS˭6?X,-bj9镹WL-g-bj9TxenS˹-bjs˯ZfzenS˱^[~r;>ޟ[~rp+s˯Zns˯ZUnV^,~"~e}|G*Ѝ?tVhuVx_[cǔm+gbW1i_':)3~3h9Tx3L_̾-F CnBUPaUkPPI|u g+>{:L%V;Bh*f%cRCւ^ gpz,׭):6=m0^]4Rt(#@,Njv7V,L W1MK*w>/q(PSCGyrS Z?-xEN~SF3~g}nLO;'o(aVVHOITQLwpgD*LjL*^0,*א^3z=L7/Z7g$kk/%;xk>k=~~oZPQRiNAcAbV=$;>gpzo<ʤ;tHxŖ*ېqU-ݴo;G;x; Ac[Z =Kfӝy(8/˹v<(??ޔm%7)+U ޺!mg z1ST$](>_LTC;RH>* M$.8^zڨOxNP3;x:/Q ~z\ evL~})N:[~>~R;ffvGš@ݽ'lS ^LMdV*PxY?Wvp:?MbG2$ƺEpBx)ZͅYrvԷo3uTp|GWLͽ`FRIg!\쐉K/~9݉O>Cן ~(uhn<Ҧ vGJ}7 U͓LkWr*,l(ECYB?3Gzz96:d2O65_ș.):zH>Rݓ&Z^W'/wtEG kd ̼̍RRI9k[kxc#2qTޢ8>[cT5J3GK@ ',i,;A=\r.E~ ~ge|Ngp>7-y N^B`Z*o کkTjqˌ )9e`ؽݔn `⛼G(g=cmIe߼I' aI9UyJ|+?vY8̻NkmG=p^Rsv.p 2#L|ehLdP/]M~/MVf*~>%>Q8^nVZg3xz;˻7& G'\AܪgyRwZc\P(Nɚm2'ڳV!@eK";Zo߃ϦąAV\5Tl iEM1\0g*MG>URdMrVϽަ½Qyh''|Q[BW6ٻ#5ZOg]&ם,g{ҡB;"7JqCg^j T?ЛL).meSF6iolRA(C!'jzB?3xϺGy{Y8i:#u{ VR"c_3#| 6F}w/+[-7W{q2'\;hN$v[brXf4M/F"8{ɱĂ:Z@rK[ZUye>Ѓ{9tu| hv*=d`ɮz 3A~Fr%vvNZe?ύMvvV2}dEly,kl|,Fcul+ߐU)е>ٞ{QWI | A3xd*u~}F=)džAyFycv(@yyբ#Bԩ9mZf u~ ]oQwO5p9\H&X567WUvM5w4d22.\b^::5'2fC?GW5;Nl1y'uMC;n>˷)\! 2:)ՍwzL;y>?c]a脨]lEqќNXM2UÝQߞ%TK5;4U1 Wh<,92s_W>AC =?Ѽs>sfƎT6F4T"C_KsFmoį? Z7DJ2bkr2eaē}JrTug[,S]eD=oevǹ1;:;ej;TnvRsD B.)uUBٽpu4U2Ye!ue:G½CVNe4\peL8|S!gE݁H]̻Etr=08I鏼WTn#=Gu7Qu[e9瑤=Lkvd˺&x#ڥaF 8恭n'q`=Yv(0!gH&oqG.oXIHJ%qTs!K!jCb^O}7{FN^Cr=q^,|Q{ݴNʲ[+U?O*f%yY=@Cč&A~ly;q*[K9ɶ*c)6a9(FyL9!U/;OLz/G1;"Z'0[ew*={!F?*fl;1g:L{*<3#v|d?{@=W?k? YO;x{>by[wd~zZ,>Fs2~){z,u2>ew} |﮷gS}46ةqu ׈7L];&s|X Lpo}uہO]F杼 l[/sF^@(&Wr;o8Rv`u]YM7O1׻zMV^9o)G4檼rG$7ji˯|b,jUƄ߃t؃e-u8uhGzdqj'P&{Kȑr}Wmc8e >ӯX룩Jۃ"Z"S ̸/H2e\ۜ,_#5+z1UݪsK&{i~ ]J_b_UCJCQIǿS|ψ| b=ߨݯ j@iz"NJF]Jwۏ[-|H^>;>noli 1taa[I{ל3j\I M4G3'<>>e]9o 9# :v ﳒo vO*D{%U{WS=a$Gn9u^Z[~[k6g9դ1#޼^Pְ/qV9]={ݗ>~Ob|pdvW"Sg8˷_YgQ|5F> eK$t@捬ܗݤ@XrS¼s vVd8<;Q (Lɛ~?is&~~[5cNÉD+?_?{¯~JnP@ qd$ i㦈Eӡ}L'Y% -̭wV|v;jsh-ɳ{>b]平vq3ƹ[!!4~Rs, F8(##vPG/ jFFX[SRYp7iH)sֺ>幷;qD>@hv,÷PݭHT(2䕩rZ!x̭:!m;0} ^wpxFJTe?0WH~\]快9w mn gKuQS5|9.o5w<|?_cqEh!{X/n"JpeݙˍW2EG-PH8;>i/4QD}==y?cEOc#pVDnt 3N[yB Y^KaԷJ=SG M_ڽ?s=^.{(XդGL-˸Lwt;0ij>Qs#r'wUJGQ=j"1#}a|zv3@\Iݤ XTjúeb[rt[:WڭZªaʶ{q^,|;ݶ ܥiS7 04NT:(z/(SyC2I;_Ί &O٣[uD1r'k2|dy3u {}{US(vÉ1%UV9GnED" {d|-) y={-hv8u^r> 7,^C H'ʯ9o?7#$fZO0hgk9j{Efǩ7'vSV g>HoZSGx`9II0?"\I{xƻG:=~EwȪ|CS?yo<:캽cCy=E@"53Fj:1enH(ݤPFp{^ߥRyd0tdL}:MR )ClS󤅪so21j(ױϏ^YJՃNٻ f9wxdr\'-u+2|⛌7y^HQ'vO,2ˑL?!.9dUr4y-|sx3:ƒ 2_d "P2 + ^ ڔOK`^qU=iցOx^ȷFV`wi)/娩1^Ztoy>:OVag4P9sȴ ͓ԋ MsY̴EoH.;,D?}=!=[٫_.u ^7;+HO:[mSY-Ke%dwdX<>{^<ㇴУP5Z&[eo Tvhn<𡵻m\#*n~}G>&QvOd{g~I7ׯ`(j7y5j#zx֡#'1Sg (숇Op?`*Ʊ۬&н;nr5qÎIOv{G2Oy ?Ok^31mIɺ>:RHT?y1ʑs'Py㛦zx*/>i.,GoBMfщ-{g½5A:QW<@zp+ ?F$4/X.fG=oRQ3k;:1M8_>񒔉=+";Rɴ(wrnYدUcEd0BLL-~#͡k[YPߨrPKX>2[GLQX4?Oz煛Fr(k}.k6H%nv*DsN;nTp8{L^gv>z%LzP~މv}c|i8r$s1gWgkK =SB7=7X)=(L-9.KyXwjrs^?[y >s" f}P9"rOI*/yg (td枳<:w>vYW3[XYU5}P_qLSbՂ]a;4}s ջ.{&:*Qhix9:47=Ӝm NQ/1uNDןE@iAy2#o8KV_z>?X|'A3G5K?藭ǜl+]W#҆Խ=@[,OPg;D5QAg13;|QgϺ+^qB6pgҞѣAnvǠ(@d)chiBJfu*8JCӎNBYi) I\fgLgVgTZf14pMmsQ[ yQPz'N!3\obZS.rF+랞O3 ebKR.=Mv)Jy|e-bO1\O s)q0V=9y%\m"3D8UǞ0 eH& 8nq1` y*3Odp3*J[x.}6y+?7=h _YępwqW[:Qۆ05Ԩx\+c)1hx`tgH.qL&S19NK)3Lߪ9>hO dͳg<-F<9yԞ yUqdf)`6Hu!u_)Z?dpڥ끐FJ|,w_TrZ/[3 µvT  =PKpWWd,n_'ږǠSǷ9{l'3_XnXZ8stKk㰓aKQB7>-17zğKۃ{{{}rc#5CT$Blap:Q,H-0қ9+Fien~ QlɐǠLwtʯ|e3Os4q)~b'I ' VN1˙f((h~zL ='6{89 (kwVQ H#~k"&G8`U?xl^c]٨:ki)(D>$\ @vR@<Жj:Ni?YD99F.RkcĩfbUo {}U٤^c)h,H돻gL3#b8gѷpv!Rr(O [-lb +g (PHW.=a3Ձ$9ʯ`A:-Eijq˙2- q$@NN"<5|H<> 1!䖐N5A[C) iSP-WH@2ڜ]QFأWh?$TtɡQUT c)h8CV{KXF}M\8Ƙ(;BM=:t vk18)pJ9^,>!~G<2`M)P0`8 i0OX\LAVYn P:>#e$"_K80Z;mPV, [p`uHe["yq<"t7e/*bpqE+Wԑ6͟5L9+~4.ڒx\!SYaod9ꍪc4R$Bfq1Bԓ?nCIa(ӱmT8V2 ͋p01/7ުKWi8Z`ĥO!c>HD$SMV!9i,U-MMуYMF!yH(;veq͎G(ŅÐVWj((>8zEaEhp1O[@Gg3ߺVuU 9_/"{bizHFW9Kb`;W`A)iiLDcuYh 'Wa]9%[ 4 #~h[B c䭣WY%9FeO.'=yюg9ܺEF<Ɵ.Erh-D@Chc1T"!CBFD:Kյ83ԫ4: {&(85AADҒYoP.j)e\bk4A[bPB}+rT &-1bI}(|%׆51%D#g X78S\(8 iuŅb!cxY;-X bhp=D%- IzP t KߒԤ.5NfI:6.fՍeYh<)-PE&ve&ǖ$MJ!fYb~:n#~9.lA%u7/;3r\)R')j#l`=@܎ik;!H6[B[@EqM2 Ng&l|:_i>,4Ba j i6fV50G=򫾃!+w,T m8[k] gZ,QQ8VqC$xi<硱'Is(&7D٨y'RM+CU@HAVJÍpG(MPpGkjKBƿJCuy bFۣ- `aȬd^܇~i}eLyrY(+.BK\o+9LG%F:&c٪0AjWŶQ/BEhq3Һ=ާՕfa|4ELaYW`X3FXv\^#0VQvv8| mIN '&uawY8<}-E19&eڦ {3fs7[ʽCa 0'{s;C,$˓r9e?p4iJOaꮨ/q&(]hm2yK!1 _Hv%=mE''!3=(7̈́1YD"gPp  }_)[ ^"$@"{"1u mٮmmfe-EHhU:Qq0i4{phyZm Hʜ+e/+mhmZ|mt ]lSd-Ҝ[D#]$x夓WZ4wN\g4hm,WppDETDc1|Ⱦ ٖ:OcYZmH9Z9ZUa vزSDMEV+yDu&Py%^9#f.yiz cxرN;, CZ]q`wѾ ΍e잫8A\ڍ/h%)*֘j17 37,N&Gii7;dmeH9|-AKcidX$;w:DǍuhqL1D4~+3F*[H9]'2?xhh~/BKÜf&&^W!Q#<[ToY{cv4-d 5=I~3['*-M0 YFT' FD8RoB IJ"Ԏ+G _g{R=@?VR !P,d!|1jU8Fik լ7:.-{D8=gئFzA]#Y8<-~^uEurdQ1kěO=f^( tzIծqG*pxyZ& -\R q7]Е9G4"Ŀa)JX¡}"Nʓ#&(85ABn8ѱJO#wW))JֲiMNDKsyo$Ğ4hd'[++ǟBaH+.. TǡyTLN4poےԜjg=ʯڨMS67y%wN4,40ɴJ|;r,ZF'#P^eds4uw "r$?H{#b^)&UTeGLKΰte:r<%$5^g4V~@@{Wf%(6Wwpv|cm!۟4(y>Ix#F:3ͩ'͖&ppGk1PIzD$yh '[4_K!Aʽ <?' pjl4t7~E<-f,aq&.kl|TP]\(8 iuŅb/?(y4;gt ~4ӌ1,Ո8) ]E]s${i }NSj {48Z OI%xpVtL\4Ntn[r;&~r (,(D!嬵Zt^8Exe!u5g"4Z6̊3|>X $&+ה5fG*M0{УI%pwDc-cLkJ0>b!eQ{i9 e=C AFebi)[qGfz₃ÐVW\(سxjfU睨pM^'SĄ-HstIt5o+j jOfe$xi.]|e͊ Ҁ&8}dTg|Zڔ8j5wȷ]p}_ۈ"?=I:=qEc[ei8D_cĠDhM-5es֕*Њo)>A9;%#X|4L\c/ֺy$1*_#=rhSۨ(yQ)9-D5_ɇ"^/M<6}Lz1,.q&(8XPēr+޽r?]}2::1MKlQL:a^wFg|ZQ&z۶B۾L(l G nόNfDc==ISk̚.謫Yx9{'D-PYhMPpX5ʶ&aff4ӥ9N(5X%;tgRie9+m F#,ECU)u CZ]qF[F6l)_S=dKJ6{0_YC~5`w}nK>E(kY?-yoLĴlH-e ep&C-*/I }i|=EOFq^^OgL>]YxcYr5MN$eΆn _8+h4v#΂.&Ŋx X^jPUntʶ%dH8bź<ۑbW0Zrmm%>}}/{BњRC>4'YΖL֘p%9(X@!Y ..B6Q>Y9imc@qaH+.@@͉W82ۚ53 X1i43[Ԯ=}з%JŨ>z oOZK3e`f/ >9QpYOI.0R%eۗ0 V1yp~#Ǭ2|̒–-ěS;/'qr qF[i)fǕs-T<(E}(si d]hȎ艈L28O8/(zhӫٌc\,њAAAcӱF͉= s]Raúr$[X犚Y1GbѓӺ frb~۫"aH+.X*)i4, qRARVs?!-X 5TGhٴzBkdLpfWKG6,+Y5θ'L7Er`4K)/Mt2x5 ƅ )fXȫnIJNX0xvʒsmGj;2YXFWji6y-DIZ]c2d5,hVp&f0(1&9B49 B$Er\i ŞؾdQ-#5Ә4`mQZaN=/,گaH+.좀}lhR3Wi#hȇH'6G#Ѻ\I9#$C1g83Rz6x<ә4,1[Yh1Z^4yFH3z-={ O/| .RH gC,eds zpgڳ,pkwt=rcjiv!F(-зA6H1n"=@9OUXQDQP2O(HpҘZZJvEFXÝ;rHӹ;ZpGkJCߓbLƌ'p PE~P1lIqjЁX # 24>+7u֧{,Bq+Vx@N:BAr"+|4 F{FD^^VR]۰Z39C]h_C1zF`7ӄp\qȺAcckiT4ΚVM[f^EW mnFrxsNX+IRv( yb(af|ˌHScXq{V^HPذ:#O,xd,",f. qIc 4:^|)OBFo51J^QꀚYa6%XU{k]8ZV`0=4FcwDje53KB^7b1%{ehoe+YyG)` K [s9'B#_csÐVW\(8nه9-t OU$H9J^Zw+I[G$YR"3Y(A-_=gNa%nYK+9>Ml'7"BDc 6F64Rpw6gǶD>mgy[T?1kx3p}_>qJׄ7^5]CZKe%'3'B˯A(Mts&CE_/KeM  Ix9`V%f{>(=PMa +ǣ@ jl22+w yd:$2b'! pY=꽒gI',陹lQl[Y8 iuŅ(`'mDR3XurxCƓ8C!!Ɗ-53h^gW~(;ٺ=g8{j{!=kid8ÚIM*=p /#Χ1Fj/О3+b)+ \(;=k]XQE|-ۙdlq\ZKs*D+mbi(yx(` 19ʨx`\D5`0Z#Lv3fe>li}NW\6<gvG{*88vD!_uG#,'αHD"ߣ&ґd#><'Ŷ(nCo.u;Z-.p - R;gxy%Qgl ͹4BsLE:OWrh^+>U怴 MG&)q6^-GR}:5 ~嬥Qrhm3kY:E)J`1W_P˂% ]EZ\. Fc1 D&o5B嬥uz≷i'Gs9ùS\I@x]B\Myq]8+-Ź }F /Lp/irG{R88Q!CO7DzDY_p+r]9q1a1eʖCkKi J#±^='@($-aH+.By"I92,XaUc)[;*ժA#y1}_veIQ(7v78Lg-m HڐnCedTC1>l<vڴ**1Ec|,ך)ҭc3=7E`*׻VWc4\jGQ^:+oe#=29AW5 OjQOx&ovsoǣL$?0qp 8d!p&WWeNŶ46Ac,G3FtY5Ȓw+yl+:0RV.p -2׊FmnB+mb#*6v,ct;$[.39݊|mȫk529F I|>dHFz}_-bgXIQ1B*5UTO彦benkL~3Z )*>"+n` ~2,S+[JQx\,tw0Օ'{lݸK~Y\=CsY~\ V d]$r KC>M!6MLU8!¡+rgȋ!c@&N֓k\&SspP&fb4 6Tf])1# \N44/S{<eF0a[`J,O@(d cػFZ9rՔBje+6'PyXم-*<+c0f<"=w"A 3ZJ@^Y>CUP+}#W~E-hɺaH+pL #?5yjǥyKy od>B#uUc?ڒ-L}G9ki^A|56Fyu-nf4hOFwYnk`O_Wa08.쯜o"\=8'jǬvVW4nj$n40Sr^Fv "UJnTq";y_UQ08ےZwjaYثk6?w]y A1D.^ /Ƽ  vB?%FݫZ}{,I _Gθ.嬥Օ)(1Ǽ#"Igg/XqIx#Jh2z1{KZ٪:XUh 員kn\+R_W`ҫ'APFWWFGHSh%M35"M%k<9⹻,P/ d(q4{CK >WΔDu.3u^4*g-)S}ƗY>۟@;95Arg_ mۀ$&E>$i]U9kiuQ(hr9UlmfVۮNov9o#Yr員`g}P?A}O'>gwfYuqÐVW\(8nyNp/ nHɿ>n*g-S@hc֭BX{U]9Hv9 3 arCL0SbuMg}Хڃ0:߯f>QpL;Q/W͊> bZ&0aI!x3^9[rIǛ* f`g׋tօsLUlT#&]-y0blfEYuڃ&M7w CNuE];H`=[\`9_5p/::zt \Ev|6Z%Y%(m]\Vt.0'zHmBx9Ywuǥ.]Z$+ĥBF+h>[e,&T`9U,i[Ta'^akس~ S]҉v'~nT|'xzsz; VwC:ov;DWx3+WɝRUKw7 YloI,nכf*\f2$w!h Xv ":-Ո8S >O|W?&#Go63NWwD=v2Z(;`niz/ [n7jy!NPk|yvoH5m׫[YUKuFqw1aw߁> rY:1]-o}9[ 9ιG[Z|Dnnv=Vg=.+y3Ӯ~z^T?;C .YIzN@ $huT6sLUDlQzٷ?݋уm<J 5)FJ|U UOCH1.wrǪӉal)ϊ<&d Q_/ײY<( CvxtlڃcQ3N=2Er;'xn;Nw`frmJ&ǝot3߮\=0dj@SixQSEQo㎮ >,gE dn}QWIm_{:(DG7F{օ;wyvu;dv'R:}FϝNnM n\WUwҰq/Y},{7b .Y%AV<3@P'l] -lZ+Ɂ,d2]l|;Qu\ow8d7ⷙ~^g "}`7vSoPW=pJڌXt^?IJ?& ^A2k5ܷz?={wyKfRixwK.P8=kO yh=67{Z)~]?)ToS 9:-OfT:O^΄ V |kDC$`MvRmp,68Ko .w> F3'Q20w r\h^#4%+ ɧf̢E7Uhԫ]-rtlHq ͍DH[>R͓v~uʇllN( W2Ki_U|EFoA7^zfSщ[g7 wE P%Ф=[+mۧI4KÊ$cO(4fZ=YjN3Z',)laO=ZG;mhxA)vw9Tft.Ǵ=z&.3QF2 ^=_8) 5G (Eܮ>}^T2^z%MiC32Sf6}`?͙ңFkO]ιfw|x1a#p)05J5{GaowD;{{5h\{@Rv`}ߥ;6GH ć̘˭z lnЗ"`_-)&όv@NII z{jގJl^m]~|~Lg㯃l!#m p]&$<4@wXL׎[2 m' O`B勓t:FґD^mVJ<5SqC0JJomWڏx4}?,:]V['v%FYM?-We 1m+^?C]e6m'72I\kV'mY:W&}2>@ke;QjhhhR^BGrmMg LMJPuhE^ ۉhjN.h8ulJ\V(1Av~sL\]/7x8twzmuIiwǴ&|uNiĪ&RQzT*TAgFΌ٣e.|q 21[tPeQ4Q50r5Ktg\Hu0c+'4H[Jh 1=<8n -hzI;-'vO|v IuB5mu=_U+tw+< :vJW=KtMp&&dPt|P Lz]VKX>*Y+M+`\wM/˗`o]BZ9S5!p]t&=U@ķҊ7!YR/R\|XK*[@%M&oitd+<]nrdR!Lӏ 7Fx ; Jx4\;\f &[ NHN-8 tօÏIv̒w4Nw)Y_xy{KۜZ;V%)fN37a% XdeL5}6+]G$Krޘ܅PgF! NG}\jڱze NІ͌nkx i2P푠׿]gZɸCj짿~)O}qFX#t1ځZJz -KH~wl\W5;t8C?!?ylm]|*8HJz6)^6B Wl貁+ō:eދR* #q%h`K%Y:?w ,ID w1zC\C~\(pD eG}udᜲŹV=;D锐ŗvDuF=pG593ϊrK;Й2⪠TG2꧞5uVrz^6]v2yVDq+ +jvbVԾClk$ZTRŻR|(s<wr r̪A!G=5-FVi\~/5k~XPeWNohP!Ңv,OQ)(\eξvzϳ4_+쁂6+%'a\9NOVNߔQ{:X D:׫'.YH!ikQeqzA%nBخՐ+;GGDztC u{nZ9r 5ByhVN3h ,ErH2rH .yo>;bTu(T>ٮWasO+OK@:1vH p?kR,_ (޾~J.=u&HV*uw5aRʙ*gΥ$0e,ϫ(v^X]#a";2cxsQ9X c xmn* 呬g^9T#93:N:oL(5TU񽧕w8@奒1s9ʉG^vOnMzrHpxsm(ܻWת2Zk˄_QG@(?Upn@ߍiG#/=qݽ=vOsM8H-g2/(xqšZ1ࠄ)\YSWu#md9穎dhQ!^bBU40 ۭ|2㘨=V|Ũ*6JSKj͡@db>F3dm"Ԝ:aTI(Ll0\u6:+:VMu7ϽvH ul!ӧ*\<'^1@eMSkG`L8O9ݥ똉)ѰFӠ残2zTEQ愀K~2 D'1,ee2uf< %Gz{4N74d"CMϒ4TPv c1s^<ߺ2U~ !C T:2h᧬?ɐm[F8ׇ _Y&ir4-+o~kq˅qVGe|J1vL޴\mjud #9A+qt-{Q/OiT 9r"GXWrPXM:!hr*u2Mq;w׫d?Ri@9y]S=~| 80'OHVdsaңJ7/M; 7jعٺ +Ƈn FW-x pu`6N?x.^GFv|ÇDOM2X $ ?IU+<{^\3Yz48L$9Hvήl#v.)0)R0ӢEIgƝoyо1f%x>L4>f/`+I؇ Vhf^$LcuXB ȇC7}LmP 4/Գ" ai6.Rv,Gt4 gFԯ0лӺrM7>]:@?vxט515`Dvo z;Wيp|JTGE #(+&M:LjD>:7m D׬rǚXe2ڱb(?EG|ynuiZ Rݍ*7FF<p#iǫL=K6ܜG˱@W>ctBk9'n`^;?m0i;uZ{ }ð;P]o5 -fbwnf-eU7N&y{'OLq8"ur*W4^idv iaύ87F{*a9;vVw=dJ!m .giz$?c 7/azzx\f0ODR j7{+Vx M'J1p?rXG딛qb7Jeg=;`+=S6wbuFR̋ 4؋%33ШXs|ld.r3'1r=7{5z@]㵺SEx:A_zۨ\_5Ka890pTlMrCRUAU~)C$532xL!o4DI:? {Nw~&6a"lqVPvBGeA%㻻<{!dZ:`7*JJH]N9kxt@v:qƥ{4. ]>ޮpKU r^~e@%iqqz1٣#:XdN\~Mo4ځhn{0,It׫4o_EZdy-t^{I:tGW J_(=t1qeUJ 0 [9|W;ںqՃBU-8=>-)ʔS̨*Aw؏z.Rţʂ>ʰ7ɇr8dU,>q9T-IUC'8TniYȦYx&r>TZ~Q y3_d1 ͺ7T\'w7QwtZeYMV)lNk|hef_榭㻞R/Q3dN+v:Ȼ~7VhN3׃o&0kx9?K0_@~/3sy2aE'EF&gFV15H]; r496ƭ'*}Fi]>lT\kG(50] OYS|> V# k(8>:JErju wh+8;زq\Na\ “+GBи4>+gu%?+guSSWިNݦo#MTFqA gnH~ZI-;G:y=S+=%u'ga8 eIWNĨڎ*Ana!a&|6]h7 K UC7qM4DVWξ&,>ҳϺJW;0798֗>RRVzZY靕O򟕕 *+ST&gDն,(*?8*4?+*gE%?+*gESST~IT2UR $YiTZg)eYi9+-4rVZߛG>-G57%#<",7CqkALs9 |ؓnҳҔk%>-g%p[z˧ln3S<3-A]:D;,6Mo,3= I<>1P5XpUV8X٨G_dO@٨#8lxI6;{p/uȩ7\frF 2'~i,bsPY*q6K=p̈ϝB͆>&M& 1:]_o HzxOڥ"48~%H8-AU=[\P5VVv;+QEP]G t]|7iz/ qXn7U?odְntE2ǿ #= H}%cJjl'b{[ONYUw=BO.u(ٳԵR; ^{n{x,yr%Ѯmk'unk(&(̪݇Y/ZCY@;i<ץZ|HTgAU]yjKs uYnsosغw8jJ2l2[Ӈ=tK`%@x.$ѹws2j6@J,KbKM0۬uglڡݜ N\\/I2VqY](*VZM~V'{!g>l0Ű|1h6ƹsڿrH~I2c>7f ømW0dJO}2 ->vu7ZNvy>f+E_"oc6㭎oh:KwRsTh QTs gkHRwU5}/m AxQk\JIrl\UR<_>D'‘MWiօ[Mυ9 NuDSYx昐mq%,:XW4[qOR3ۨm<S/tè_8^^E60Q*EժODV?ז_)$Tv싲A5]7P+tYf"+w{%r{ߑ%Uѭ}pcfmʹu O7{!,̇߬Vi_%-/vl}qz6&[vUHs'MOw1Ʊo뭶^{]c;(1SK:=䝉ۗ8\SEjK*Q)OyvgcY]n7u6eG=Sל)lc%JVB!SuBCGq-o)houH5<4o1IIdIh Me6BT`JkH}4X,q)$KHF)fB}bfM]2ANFcAubP=YA`>{VЪO,}6J#\a ͗i0Z+ 6SeL Alޤj^-pZ6i]xCBPrw71YGa#+ VA2UV)\~ePmMJiʁj@AjyUa;Y#&Kĸv$r[!*p~n{[%7[/co,9HOfIRe 'e@۽Eɪթ+GpC^Gkfd@Éܩ [c%Qޱ)ߤR<IZe޻R7s5pz!6MkaWM"IPҏj6} c\;;, 'uQelPtv3YQ@K\Binvo^; Ke=lt, xb+GxmGj6664h{n$-[Y{^?%h)*%}4̃y=7L{gv!UA]!)2ՓtKRUoՄOOp-1)hM]IFs5/}wV! :j%ތhRiIr`樵"]ydWD76%snr'Xl=:?v<.LlssKKnhR(Z#S^,7)^׺@SB]Yp) T4Jln-R;*^L'Fs`+D~S'HFz¥w߼}-xh-kwi ۫6±Yh.dQ-SlA9W(GI2|(dYbO^aLLfy3˕bC-&cu3.R[FlG4ոc(Cn!O|2*ZQ2^X_Xke /)6fi6qyZ #-G`VX,B82G>QOtLp 8FSp= <)=Vxl~*,hYJQ?s; O;x؋~˫^MV_Bm$HH:`6~ K> "`*~JΉH$ Zת^]R[۽faNi*.u#Vz-i+:8>\v{vrgaRs: TQKpS.+t2sc\S`#$QJYu06 kMo%rUngr,W@]lel@*~"e=LKF8n5$$MUt_(Da/o!$l `]guyCqlf89yK??62gHCgJgdU{X nqݫczv8X›aL9tOfkنu<2Oom&lkVdx}k>8!iwJ0~s2ql+%s$К|G (jajutI#u5i5ֽ1J3eɼ-4bYD?g<\u5V,"o\2"u$T[`N&л86@=쵣8V !/Ǜ͟1a9NgUZ;=~cS%W0Od.f柔$~G][k, 7I`2u!1N׳GSrG ^o}mCU~x7ﲬo29("ʻ_^~$ rVDENf? In#ur\eNwADIRtbim yP\C$V1]Y_ڶ.gRB{`SX4z$r{}B,?DXXQqtlSFVm`pÿc;H5nضRH]_Oo8 ͠Z[6ڭ g<ȤrG2;4.8r.vVrBρ/nO![OZZw&{wrJV1̹|q5w7e"^q|3;G%lr:NՌNxDݙ tܥgw ~ո%|g9U&U]ݺx]{nh7mXb#+PCQV%n ܤ9&Y ^8=dYXL$[V04 a-u4 R'da׹)BpW kXp؍GuuĴ2Qb=BξJʮQ=D5bܮ]xH\kS[c8 x0sF4/fmcJEʶ_g xо).췾P_~nހ×N' 60Wt̸Flfj~U6OY|Ҥ* \79$݃iCrS "8Ԕu%t)tЀ eR_ʱ͘=pjy;N'l۫ʎhׯI kG5i}6Sbc +*c?f PZ=x8v7\ů_ŋ/_NHKxOsRF 7D\Nt %(ʸCԟð0XsY>{M.{{u/mo+@WL֘:( #>7N'za(4 і^v{kZڤ yXK=z}OU`4Ág ;̴]<85xu>aL,P8yԵϼ-Hb2[Lہ ¯Ey%(2UcK/j} SvY.SɏQDmzxf b_DC.*j믮4DB7s#t;"!9,X^@\lΗ9=vQןC<DcZSh-kV?Tbe6_P ) YBA/_+4 \W?Z ݤۇ+e:\CCrs_7a>!<Π? <'p!9ƜFT8kܕs>HLCw(Hi64Ofw2\$.xE:-h!sqHvn^9ŗR׳Uh9:y<ϙdK_=|7`OgvO~CC'LuL~cr=[p^N:jw\$yFQu\}mr>ڈ Qˢl'E>rmO9=t_LN^_Sq͂X>΂)ppZZZvU+WB|K 9ԏJ~m+Eg#ȗ0Zm#f*`rde>)h>[cr]Y˄` 7Py,љvQ8t/8YxD"G3(_hf|b`Nu[iѧ3nvg Ӹk[euv R$fR_ m\v.!p52yyѮpi8Lb}x}24Ǟ(N]y|t]{~~}-u$sŒ'AQMϳ΄YkÌ"Qcɬ~Tx6-ldR8wJJ=Q\wjÂ'W|SH.d>m͡AE2PPfÏ kw7|gdfw\=ѯ~}q̫.< '8@(ȊNd=4V#69iQ҃Y0Ilϼ 5ҬX497߿OW?m;!-Uyg^sU[eˤ6~MH6KS;&ZU&A2Z~H/3Y>ǝ=y(c9%Aخ3#|0ud]^xS'x¾NjɺXAp7VOnV[(rY//[^OE]炅Dׅ5e%?h]MAmg+p?xvQ(]~=_7طbS;~Бb󶬻| >8;d~ {n\3*{㚓 V#aʵ|,u#T-C *Z'P6*S2_[bLqIy T=X6%x2 W_fMc|y gx[դs% V>&U tݖ ŏȸI@#Eq$rpBoprTn{\};☚V))>w U(kU Ngd(<(=Ez9/pUt121iDօsT+ܱ~sHIxU [d.1k{DT+\Aic2Ǹczaô(ş/I1+N]OD`Gq؀mq^[ݪ-OT^> cmWm}bjv(KDiDn7~SɎns> HXbN)?Ƥ-ԥVmRPR },keL~4Y(s}KxrQI'xie㑗Q:fwM5T^Xf?XC-i"f94v2\ڍϽdքwz2]};U4TS}@;Y LZ__.Fbܷ?HY ŖVtD jñn]Z9?RP3WEo|zސ؎41cVR_R7Sůh2"yK~{`J%9ė4wlŻ`ZO^ZzoQV KHCM W,ycF8 >lH5O.Vv/*I;-KdQ(˲dQMZK+3oF#B=IbD㑤/ٮ7x_t>G_ -ǹC ?YQURz%8zUv\,]&XUv ;\պ &64L>v7c^R>J4$D*CFk'>PQQn(э)Xsd>\5r+7rs˼JN[ikDێ3d!7:˪/oK[Cy*nf@ARLmI` 1 PDij^n7[:c+Y9?XNoPH_ޠ՝6 ~ ͮ}ՃBQ|#dl_6=mc)ǣuP[}uX>익{ClDT˹-@g]W'`ެB8MeZW%f1Ԫkb{y{n_o.^=8` m?rD/g~u|MM ` *A儥Zp$RX` RTW2IP)SR  ;Aj k ZsCdpbY{:"pU(i2 mR R FJbXJ@r*c%eq ͠`#pu Ol6 -(UQ7p ]AhĄ8API RTE@K Di#(aFBM84U$hB<8K *B Rc0 WVRk9NABbmšK*&*=`ЍqjJKk }V\ /C* O)1OREl D ľh1`h)X8SH`c 5Hl"UR&(RhA2EaAO0P *B )„hP[Sh@%tK!mh E`D!pB(jQ=3@ʀAjm=te&(EKf1TkW:eДD去>l{{խI4!(]]j 0F/yU4 ~yR<_q`^\S,pXK%E;A t h9 !RZoKSqq,cWR%yQˡ=[JI Zĉ^9r`+>Z8`k)WB-ۑu:d:76؟rCBKc~*)٢rD$1%v w ϣ ؠ "VʱBvTmdR#Ƶ%,JQ'MTwV[]#$)6FM^w8ݶ=E`:UmƒP[[kGVVn+*+s:ڶtd?n{o܌l޾,ZPmu_W8w94t vc[wtN'~8x07zlf gȍNΕX{3=63ZqphuhgȍwfԳ7zFQLc3N<בc3豙цN̍-88KntRclYѹQ%T/vdF/)7_zh+J;!7zڣ#rWfrǮvplӣ'V@ 8ՕlgڐyFۣIxk1YiHrC :tQiGߙaL/C!^sVUAY5KJcde9S#FYru6'۷Y.6y땲r2 #/ƫwd2m=8եgk57r4,/f ,]UyTTOg'eej 60bT#+ߎ C=7EN3=^nJ+ٺA!LΫ9f1z=#8 2NIe>5%lXWXVi7lj O~Fq[MN=9fN/! MߔTGw]O {񺒢Y?fJ#OWuTk ~ ^/o&xKٳipRӝ0mջnr = *Kp|g,[ވ |&mLј"#(C */ˁ뛁St^6j&3On? ڲvw56'e'(/R٬>PEu\U=V(v<Nx(aݗd/~y_j_lr ;Nq:-{ b3'-J/yB솗?>`tSͽNQ9Gix|MwCv]BÜlǣƿ!հa Єqƿs^H;?΂[yЍ"0|~ۇ/Lp[)͇^%O'Ǡa-b ݋M 5Ov?} Gp7_< ^,/M/1_~=[,.g6 hx|| | ГIs>8~\/!Rb%@ê|H5H yv+H^A g> wb(,t.:˾WE= i dt8e^ W<@z|*0`ໟ gHV$ k Ǟ< ydtπQxXW\0=4\|4x>˥^dW%6k GO@5L'5y+LcOgOyWX4~$ 8Ǟ?= ^w3f/R~o?ʦ" '{6} 9ԿIjL,o05>ASÇ]י}!lqj9A h%KMmj0 )7gq_~ٟucPWLb@,6Z~?}7b5BK nM ¼>8pCIRtzhThwXj,#s}L]9Les lzS G, ilOENvVA_4;1V}?p \RdLj&](I5=n٭EV=6ۿ*HI #Lj>l#bjs ͆~[xds::_~]3\]noCne|[4hCnn_w0.ugx{ˬ}5.^ ĿoO'CX[Z(`e1F/z/o~ѳo_tѠx_mkocq,><~C ^65g3U(XH^̧n`_ͣMd o%H{۝+iLU*tj4Ǫ]r&q4D9\f$[~3DpU;魉ֆXkqq3[p4c+:7NǑCۉR-cb#f#;6}lo Ρ3de/sZxzga`-!5Qk<+À!O" Uk NnK8;` LײUD=+EiəztN s< Hdvdi`挑s*+9^֒)X 4q]l l (ctMiڌ>2Nfڎf5n=UF׆;#P#j aehSBԬI;zZt;:akuU-Hvc|C2{&;EƢgZ$v2j3(o4(ÂQPTKms(vHE@m[EٟAJeVw啁 [AhTus牄1e1 aߥ}6=Pht9 ..b Ѵy/\>=0Ǵ(vj^e G>9gt ~GҺ8H^<#.H+OSm'$9;A^^*/_FK{)ŜRl,:ejL 8L7=c|0I2ɻZ@O*MX$ph*)'Sá7= ? 9v8?srZvѰE5R,Ԕl./8ҡq5U~<@a(nFoLCЊ"Vھ(UD.+6}"́TMEaZ|EbL-Ns?X1Lp(I~[d* 4]-T_Uu)Z:=:=9X+fGgղ"˹X$}*nHn`aor@,&80L;I Œ.6`7s*jXY4$b>d,Mz7%&!GK.Ke#EEeM{FE~2o/S"pUdMUҨ)va]sԤ*˶ժazAwQr8hcZg/S3kt} /} 1T[ɸYD,hv4py0U2[b0jX8eouWs mYF+9ǦY^&/M-kx]20HKXCHO >0MA6 {=naV<M7洗X{߰9)z{Yx GXGuxFˋE iUljvdOe8$WSݴ~:< Uu$mp+v׿]pF埖ъ.!}1vW( اOXɦ R'KWhH6W"D+&dئ~:{Wg %Hjv9gb]HxXm]%dT;\:cHQ#?n/C(O,{.V&Nkȥ 0G#vrqxzwU3wZKEIR'Xi#􁾹N҆xwU5ݔoGͥ&,_h1L{PHNX0F&CrrE;-jqwNrBy-.S]\{a@Z抇kr_}5[?Fʅ;9rE2= DHD}dnUS{,o;Clt 3ZXN~(᠋F.$׿=r.9‹@!/|>SB5ulswn4;d:Fo\- +!he ZAs< &h4ձcSk>/ tՂ ST)|o^:'=)Q,Lה~3Df-.<QH$xM=vΰR{#h@>*vҢ}D 8Ժ"EHd-b:@L)"@T7uX:KEF!JLԟr܄?@lcT7#5%HqfA$`kYჳK\:!'gjɑ wTHE=1zI(ɮ2Le,')QR+7-Cb,Xk*&%UG)lެTcA(B{i&55vJT~Bd?2%p}Lf.y9L+OS~ΙM{ A1v:ؒwu:؂+HVB 3Z|}7mmIsBw{c@s"^V~ȓ  nT;:9N=ڏm p´1( 1:IA'wG&}WsN > i[t:)y5gkY\ga+xi{+Al 4`USń^# l {=xh:\WBAvTiffdeJ#dK7rAnO CX Q׈z-}IHnCk&jXk7P2j] ZP\Tnʖ'224ݗtôn(ãk&t tr$ V\Uut6L*bSh?}JQbOuKw?%5%IVl =2~w;'_qO/HHPrd>)fd2Q4@Hd ݇D.Ӳ%&$uR')z11 '#VeD_t.'$3[l4eIVzȫ|.f.&u4nauFH"H-<= 6{r|> NѯF# wkO,@wguȴ.Q*[nh,^Mxu5^`߬=,=s 2^IR Q\3;̦}"*S*(2Mw;φw^,>^S<$O;yh|CU9[(GzUMM7L)E͒74gZX!ROf2Ã$8R!˕ HEp`eꄤ_]p1Z,'_!UǞ նEpZ-9!"_ŋjFX: ]WUvO*V Hw£bSr|)]2s*1˼$pIYri,&QPzMK#l虚"\ExULܹRF(qO"ʲ4X e[T ΂ Bk0f@r G@W5LF9-@Mm[hl2 xK&aeVl6'o%4Vۗjw̴Ő"ڌuֶ'H+7DWɄ6lRvy?_N%zq.m6zRSY[YcJ{|xie+R>О2=-n>{7Sh8U8cDe:kԞCֲS+IVsHiӈ0 ΐVIHO *,U !DMH͆ M:}b%Q)5iEu\%2:j;i* 8;܇K]{2A9Ap~s iM%G(6/7fPJ)bߒk1֪&F{oEQ:3vPn FrGnYU{{v1}3LOC܍,>h )h6Θgx;{VS6eWɰ=.dV1G١꣐b9 OtL'6fHfXUZm=!vKpF`!7-BfXmڜCP\ؐc΄> {c᱇POzކG}m]f$@@*JOZA@wPBo W>;:T S:u]b1suȀH&^6D %v=Zy2êBkW_mziJœ9~Vpr^߾OæŨ2c.DTCU[JORr,8MX` 6?tEy7xsu˫_BĒ$BMd{I9gXfX0 Wgy\+=E9-C?E6hir#xqԤ.-I6iEX0rLB1{6lInE%DRaWRzN SyN/^+L2 R \NR6%"/d&^,p|7b7BDw >ѭPĕƥZհ[j>w,si o!&]lu~^";W>}j#Kbxq bj[(xyDWhȴ[:U?_/&J*mAvGPhB~ ?#ObSF+0;2Ҳ–&/72õ%[LNʱL 3xtNT'i-HA\-sWBu\Wf̾W4`l vE\e:9Xfqg/t,Ud&GIr! z4Z3Zp*}!6br@zMz9OJS:X9Zb/7@j - g!!XܯWgI a/$(v**x'ReZEIf`u0J_"\kx 8iݫ"1>@`?8`<{V"}Y7e[>)00ds/VAܿ}6t/5&NCX6@4 [#>@kj:^qfT~̹JAlW)[>Ec)*-dmoݲ75J6ڤ KBólEB"ZxɒݹCt09۰‚Mfml125SQbUi,Dk)ȏ"&V={BojLP\kBΨED(_YhH@)r_4,5-*{`#NKh'4o@T)`M=j`B+nqMtM1+_c巚:U>[B^O`8(/I^>5k\ܬM_z Ogo%eʂ]IߧoҳUkQQ`ibBI7Tle1\ ^FO颏StB !с=l6, 9?#ϱ:}߯~ ig#ZܐR'H%żw ɑ/_`xPB @FcԤdջ#&fZ%UNVItm!#^x'9[ŽJxS]Y"& oJ2Xr/h-?=g$xѧח& O嵬>yXHiZ&MC=R\?WQޠ^!?!"!:_1anHPRd(4$/j1P GvA2mL+[9vb @S*FAh=țG>Nҷ0פj&:m`UonYQĸ ´264HVdW:ީrK,vfg{RKɢE+ na9FP٩7w`v%jI^9'Pdkj)B;><ҋɶL힊8C~zR~ЅLA(QNrqv>y>I2ZQ}$-\[(Ln@I7;djǯ5 _CqAN0cˎ &C\:?#),Z9(i34Zj$x'əCkMڪGcׇq=GG#kqsdruMM5z&sŚa_xo C'A jr(]gR944 .@,'O T([ R|t#*@CLC/_$neY5AJ^o1!uWEoʒK'^zJ{FJ(],xgALkq튭'OJn< {^dO' қ-nKsKh~p%hPN̳\ kJߦ~9_Ew, ;{vk,g6FM^ ITGHFH~B awآeK,n",4"""sS3}r覫~יAa[Fu% +I8i- 4UW E{ҿѫhz+Fl\c xC8]|.|-'a1"%^E:ɶ~% Qex `Od q{ MMϟڎ$͋`-0 H~X.It5rF~~+@p-,IT_>aE-.#4@z0y&c-ºDd$O!(S鹔c倎GZw+2ӪPuAvDasy܇}.V!+r@iHiS%:תVĐѿzsST:=7fE0+L!GY}ALQ`\ }Vh_d_0T ӓcvA$PWTxycus}8yiUQ{ l5MTLf7ObuS/Ի"SfH.^cO5NdDN1?IŋOqH' q T:DRd8 cSK<(;^1V  O3lkG&[t/Fo"N=vw'NJ؏%et9k:8z6 y(<]w5;IbY䑾iHb<V /7-UOyLE?¾[18ng{ۣ~rx r[[lCۦ#Y֭o!B xnTP{QP9g-{eSs/Y&'fZF]Gq4k*]&ੵR&';j}_te~hz+ ;eK ӝ/0a)\ ͵r52e?1ۨh&km! 3je 5T]5vnrTcQڨ*=PaW5rUӢ[VQƾKy۱x2U j{^&jG9e%F@M4פuwwiMysڮc r ޢ -<@x9b6Th]L& yx.SXo@$)O>efP:t;gfpC5tϥT[#Z8[7Y(C ;x[eHdNUꊣe0?OH}ܲˇ 2ˎz&.nH~htfr~y^[$hAԫr)0e5rI aH>O|.EKfUu([wώ|xN_/[|Z@HNb+~ia|*,;Y4$?=Cbմe&*+;_KBٲ%kFB+a43tb0IDye8We]i ϒs{ -He ҨB5Nٮmv [(VN3Q3%y2r65|&^ǀU4}v^A-T eMjy^f>^F2?H͐Bj'`@Ùm |؜cv`Fѥ[Cϼx$բd+k%<׫4Ywт>&( =)zL 2^/<_ىZ(y81-)NC/dVu Dc 5 U ۪c[-E@^VEhwrMS@uz=CNGq"KpW_XYY~K[ 5V4XiPr;i|;w!L s؆e(z] [fvc6'zZPM(wÒflelZw@3)nԉV ,7SL%k3TWR1Dب 6)pV ҊSX-$>(}*/ XkL$*ܬ,W<6=fmZCG\92[HZ@ Ђjq=iA 2Im{.2MH<;q lV6}AZ)^IT%0rNl׳a^?^͈,&)uCM~H歐B `DGoKi9Fs&gUcEf;)>4[EU5nzoV_Ցg;鮫8q'hl[UYq$\e{4_`tRRM{zm\E ; MkyICZyx8^i١< X|Sݗ ֍={hn=%dij+ %k67VCrkڦ{_uM/8P l8jPU`PG|:o|u/-}CO >#;,բ@[bk! UǚdHctwr4J~@-)ௗ䮸hf[Kڈ$yH&G[\-2YѱەmCuL֏re> JDTK{O0듵/3U+(Tjۘw4*}%w̻sW_y-B c} OHM'dS iHu4i;΋娚bh,o:m[Z6 [BN,UDc|%֢W̢9gXio];-O|># r)\t.Έ֤8Y*!ղg{~ 0=8I+p%pqP;7I/x+9J2`X!&M'ۈ|ꄗA酕zkF^+ y:iw#U!(vqk#OIϹJ֣T ؚX.ckCKi F"u 5>Qss)4D\$*bZMq(HD+vmꝜrb|٪턑$}S02,I_dhuWlĽ|r:J\[T|2'o&"i<2i, bbFݏ ԸԬ$'/ J(vC%28c"$CsS.ok}=}|~oEi=(OS=fQQ_{B*a׳hPkhH瓋W9_tPPMB."}m G C]+ ޢQ휻, G69&Y mϧuO󕘈R `}b:@l"xBjslWH_빴%qd g*y+յXVe4p=d.<.m}`<$5/Xz"e\/ށ'O9mCFw2~G";q85u‹/*vx,`7|2>t6^U>pt.Uu (DIz<;W܆#qN& ȱc#彴#2sNB"瀊 {} ]|Sr{_ܗF)(꫙|$,{M>ߡ+SQW32PBBKڧ,pL_?{^gx"XB0 y?YO˥}Z >oTdGWm5=Zl_W0jD}AN]%…3gXi;:G\Ѡp6C',w4/iі%7$h1.L*bt룰>jQP1*Q<*o%ʯ]MW"~^.V셬v^%F:vÒd@52x!۬ee2.#%ie^v.fiƍbY_HS7g"j sQ;5_Ծe5ߕԼ0Z]1u5˧cRb0ݲ^Ȱ 1:r]PZ/.Be^MOQTB[f*c"E+QhءgRH$ H'~픃l_;郆N}5B*o L7 {٪m -JzDp5|(ۜHLd&L0I,pL$l~;@MCHt |0K.djiV21R\U&ﰅ"eNG_Ll I,ǮY9d>Xe`"@'R[> 89@x:Q0 1e9jô% y6 jCrH:fUq]s-v΃{?6cyۊme ɂJO_@aƱߘB]aPI#UMF]! (1H.65Lvz(M3%ZBoe!mm;х'|00˓]zkA(fCo"OJE@QUKfP#X¬IZv.y ǰ{< D7[44:\r$KYR5^!ӈj !hQE #V& T&L  6KT>:ңW`ld2&? }$71;%hn5af4k.N ۱DthXAqo#%5#Lo<ױmߗխ"Ƞ~*RwHR-W+pjV|zuԜs3G023Wg #dlY2+_)4ۍwbb5cq t%~H&2IʨQTr.\M dȔ*;HnD-Xѣ?MHoD,ujZAfK;^cиG[\>8 US}dS(^4mqb͑tiBYa$" (l V׌ܚHذO{w{1Nv1Lzvv6 j\اpڨe 6d갫 >7Djfʨ_CٸO  Spk`1l ǰ@a, tkIcu1\ dv} j4Iy2k.qoOC{}\ho. |{20`bqGnnİm+'#cwD*>P y5;0ȠjZZ Lc4[ޝӃ aPe+zu^%螮!"[ܴ֪)E](9n*"]rD j5#ְ00䒘l\~> }Pqβ}̗˻gh/GIAF=e_1D?(Ϙmdx~^*ڍ̀FXw,7U0P$iF;:beCXMuEIxQ-w{=XAG5$ 7d `ؤx+xCU-marK<<rQsjbB%ϺV,hM hoV dCک{uqz,^78/B7UVqBn5ĄLF[:P1bޯ=o?/fde # C_i$`4L᝺Lږ[* }e>p{\oIFz(huN,PqI haP`:wtH#04˴U] aR! ^ㅷ XEw6`8--}Zmp<6̜`7E<1+~@D$x>95l*urbxZdboש v;v0Y@ Y}h r;9, xպn؇gЪ!׶ K?<Ȁga JnW͞pl06,ċHw&q$l.}gBLk&b]28nhP X!LND l+$@F*e]PiY((a2^~o⦉MQY^ED3KPз\o|[/CdUS릾=":DG(vz:s"}[i!F-VޮyhA1Hfĩ%$ >C= Iyy/V!4ly9C Z`7Pxm-&mZcj43Oc a2AКp c;,-6\<{[cCcVMzї(J޶%nV*Sp]~{AlW9}gtGxȞ z.ɓSb]{_=xo9ҡ`%  C3 |%$__1m{md(G=JmIw֥9JaIosޣ(%ߟg*Qz#Lz[(G-wWl0ķ=Q|{߿7o]yM*ÝvQG ?ՉɑEQdyjW0DPT}wCCqICi$DWo߽|~v3SqGI>$w3I|QS?Ev4CT&Q"\&u,/GY>NY__G4GI.lIh>C$%ʣ$ߥ$?{ݯWo`b z umKbʕ7p:>}dzI$ۅB%n_Y=Y]z{W~u=5QQ94WjYTTut6jS6*ܯJ`'xZC}| Zt2,ТuA䲤vD\iOEu}(1kH4Y}sZ|z6 ZW h%ӡ:BG)c/u\vT]E/__:Ff0l7Sn)S/* Ͱ:AR']5M6`QeOEq :@G`qfh7łU(/ 5&5=1=s9|2o-Wl] -g,T]gP›[ 1.9&V!nxqj~2_/+]wN`PE|8gqfs,Tz& KN K*Od.ntcW09"o0!wBS> sMA+ + Z~ޥwsejCQUᮯL\Mw[ /P\3mӲu;tsTQ2 ❖$\~).5{˛muY!m}G3.? /!9poxv*ѻew w_AT08t\<1R@гݙ;PUŘz2U_q0a3 KHRI&I8g{ĩ#*C|LS=c _F"tj<=d\^ś3sZ?%3jiE*wMuGE{&7jͮF3X:H He ~}'72R2]1]99.xwaw GpϬ*&y rvkb$'hU? >zˈ*Ez{<+`CWaûp"%k64^HA9"?%ūW'26Dߟ=MMsd:O0 nΰ*MýD#'=2sl& b"^aUb5!HF(">y1UK{0 =dVaJOLvaW(xⱕp.tB(Hf[<}#K ﰌ2IxS-".hzYJo*ZaS~WO~MUuÌޗnpovmfghA+[ZӺ-1n.n*Zh LG 15|D6]EqAtkZ [񨅍9l3l]ۯ/ژ#ޖ͉҆̾,>F4CIG ΅_vTP:dھ:4bEj`͚jN)Ec7 K1>>pcbps2-X"_.p/^u;^CC]`g:"=8[Fvq]P3x[='TDO\BV[(9Aw^"7ǝtO}oޯ#|Y}O~?[b s-#evidO*fhm \VZn6D7\6GsKg|6'Lvo:(}+/7ރ0ۄA/"D$Y7L Y6I< 1^ ueT牖KyL!3L۴l)ȶQD3Kd|zu}ҝ7j7ĸ۾u-8rooISx(@y>Lj&!6MocAspQ3._7&_.Li<-@@٘|.A3rXT>"qUs)b_  "6 -@)@0@۰Gaz>A?z4#@ޠ8[,HDxA\i)R 6ۭu+-5ijBT ŏn\?r^$MRVtHy*9k)z>Ɖ'jZӽqhi8Y++*r(V *뺞^YQUI&ňC7Fx EOP[ ha{~R'F9~t`~.mk8h'yHRd={  S5g9vkN+(+~W  @+ey1 0 r\( LJtx  [tGb^_w_o f2DX5] >ao7CdpϤVτ/%jq/cH0 0 +OW&ɜ)>V;WǬ@5PjFFe=!+1¥8\l5U?$z重ai, S]-͕wۜޏymS)`k s&{``wT9Wx9e$Se.Q=Wx10 ? 4{m}mΎl.s51l@e.wt"+^er|z7rҿ_\[VH3wutGo=17 mezA"56ne6OSݻpLvɩA%g:6)ԖӾz X{{B8 Ҹ~i旁( |B[ ,ϛ}Ɋ0־pN]uu2Ⱥ:fXB .tMQsO' \-lO2`e)ڔi҇w8;Emj(@w'}m`!5`E}OI6b[x"crŁ'WS½qL{mәc|RV@1)lBDh FuM Vhjr>4*Ld6 NZӂ~ɺ !)m=C!6y75A"C2_ϽTDP(dry, ڌ(tCH3Z)n7i S ^C.IRy~٪C .Uw_Lj-YmLKm@W8鿰$!Z~}LC[ @= GY 8cY0n؂τNe3O'>qJRhשI Oq?*c 4cG)?`B_UlcZˌt92=ڰ`8sM3 OSo1|G[>[ | G ݕO ְcXp-:n1$,âpkܰ-AtqWW#pG}#q#?0X|S!%G+KH"r&$}O6 U1ڶtQXnL)g6f ,\w^^B!9Lj9],x\6\.w~vro:X/'G@z:)vêH5:1P6 а̅0%̅a<BU`6vEnyuwnM1wk Lpû]/AC/Pwvlͽnj/"Hn |0=[>z'q#M}6{9I?Pд'>'[`~\UaWp>gߛU n~[eM"等g}{sC1{w@\L?+{쟩6v^H]G mUUcl753/k*FhJxxJ䀸aZ:e? Q{3=T5Y MͰ .ĵ1][T]srMCܯa0p _UMG@uwU[U7t+=Scfؚ6@lRO 3M5lKgSg1 uͦ3<Øخ̲l򝩥*纞`v@U5ӳ1TƎaC/1(efN[j~0T4 )&Gi(١oVMCǞ1OmɢOu])ixP|iaNCɵ-CfT{bMpji6gtSs}BS7qOfl6?gN`h9Va E`Js^'͢y4,t}G%X&GJXW,7}E',d i{׊q“?x㣲fb^5O+mT/b˞-WL#Mm']3♶I 0̉E<s 2 N:Ck5HqT t+k0>|0ZlqF`)i 3g!{8@O.KBc!w!,Ttjt'UmDQiWìg>Ί?Ǡߚy T?gdϣ}wf=Vde=gZj-TISX0)<_1Wߧc3a{Y"CDN5uH;0M#sg[+|Pi `MF g]iyG;m$MN{J?'I+ |cS }+ *{Q})w`/N (ծTˁ9gݶȷҿ U-mum ,O/O by,yoͳYaҖ_u-/bzMqHjvZÀ{ -%Laf#,dLWMձL0)<>L1Wv.Vn;`z*ؗŧWĚplfjʼ_}Z,Uhm;cU>Wҙ?v4ZM_>L%[Nݙ|jS1mMuAVQ6f`cia=տa2ɓ}ieɃS+W#}{Վy56iՌihe*ςC^sݗV:*a20qZ^La6ӪB e1m ^/͗A6v+m #g5G̘#޽oXQgcw$q+$v+y4M3 D2$9F0#:r:m(j-ƒL` kWBոu:PFȥj }49F ҕҕ*4k0;ZΆ\eetep铵܂;,D VZft]ys+k Z䋦~}>k@a<BU,GKp3&hsg1v,v 2}_zA ›_0ވ^Ht篖e |b9h< P )_߳t@l5uVMVgP6 o8!уW@ `<9a2 HΝLʫװ1F-U]/d['lR̥mw:fx=ſ`9S#Pm4,KdǪg)t pD l:ccڦ3t5 umϝji⫎ZZ`[{7@qYh8zھvTWPqLk63&GJ010q,/4˩(5/T|L<?5tӘ{Yfhj8 Cr}j9U-m{nhPW3qol< Pg?u47\m:gq0.L\PBS K9&I CWڪ2f:F_u20e3՜6UN0 C wb`*j{)n5SvU3 +l_5s3=uC}kAj*Srղ,  _sucnc>RjYSS 1ccM<89rMSrdNǪŝy2B<߆!&ųCSj.UVSL|Li3|Lik؅092va`>0vaLL]0va`؅žM"1Y>[8VmS͠g>8Lښ)N<?{h^% $WJ%qY3e*O<4ӄw<]=M_$=Y*=O'O2M <5'ȓODm)Md0sq˯V Z(?Q#Y(i(WmP,g  пO~U`%@F7u-; N>RoH&4e$G d8h_Lڶi TؘD4^$3I*?cTA$ZiH&0Y$3}UvyD2y{dhN"E`/xN#!5`H&1/uH&0 к!("ƠW7[drB,h|`W E23 $,V6FD%[YVOՃXq(6 NgXg2cκI,d7de,0دMD+b@(I_HbfTRF1,<6 #u1"mczJV*0{}{ \Ea0(Fad\LAԫSJR8iz$DSyPt *id"*Yc-Sbz<\Jwqk"Trm ,%JG1T[Ӻ送 );!s% 'D  q 5)vaxSOYS /\B:w&:QP7 ^C%P;/޷Hs4trpE@,i¶ :< xs5Q}8뺆ke ewwZvwwLneay=MzDnea,ѳ[hٴVzUG5#m];j?(4D)d筳7S ג^ٳR#Th*%G!X;|^Qq_} l뜣mvM b;mvMW ܗ]olX9Ҧ ovMoeN9/ٱ6]j벲mع%ל՜Ӕt|Luq4KiV%qu9 Ҏbˤ\n% I V"K3a3Wc .L%|%x(2H>%'h_9%*Pk\rOkh\26[rH2HHxf>U]ߪj=)T25UL~'# t5Ӑt=`鱶Φucm hxݔ'ڜ՛.IwL\tU= yăI7I.3 3%Ox[?t$h'2ѫ s,g 8QTSmyf*^Jh S*;YOԿ,pLRZ+O:&=F/]&I4rk,ϤLe&)fϰ$( XsVl/ke=5WۍSVܲ6.5R%TKikS?9ΛXssemeʚs/`칉bU`Ҟۥ+XsI7Ns%_ĚkȞkr]ݚf칭Y]ٚ+`D'Ys\њ+_Ϛ^W7LU LBE laBE̸ !d9Hޜ0d~G;8?<@n<$x"VnrM{߻Q:tEhP4:)=~~%<"LGWBH}WV8Ji7Oɥ,"4U.lOt_{y|s3_zF~矡֗{rzY<]5CW_]O2Q\'ף#P1RkEH1b-R 0lo,JosB<:MQ-հ3^džkヨrGK8->S!9XFz&%[+Oʈ.<ZY̥B(a }bݮdg5Kեv{5EoPjd@oI-3[8+.q}yCah-1%ޙ5oi.rd2*k?MZC}[uTr+O&n;l9y@-%ֵȎZ(;_45>uFnmN;]!@Nn eލE'H:V~z(;s@27'eRXzhHjZ!RLXY 4r*ӌ3SF׸_d`:_Xm *?2ЩMU\L~eu%QWǏaww._msA"ϙPwF}E86ZYξ~^;M? >nv/gڿ<}{x|ddK}zskTnn6F/n6F/*ltblBWeMTr4lg-)MgrYsWa[`8i#UޫrgkAjz[?ΨǏߝUgHY_8V)+ŕ* :IvDө; gX^+ge4g?-+[9ʮ1ҳx) : + ToUDQh#@_:hwhԊdRBIcJSFlfԥ TgԷ+zG7L Ýie[6SNڮfbJej*&KSpKؿO۳?8=c/+ka-i͆Afx),}_ ~5G dHv*n)cNlpp62 q /<>tA1:v K%3H~(106y lw%}j^3cu}춯~*}ʛW?}}zf;ھXg5FEnN/8.f6p_8G1MwLvx޼ $G1L* ZFkoEV_N1k'B._0xmYRN-jy;11|:خT 6 A[%gkҏ)Qd Ln 4h-ck\1Cml=vZf֋D)X[Jkb!NbRa9wP`o{^keT`:+"X[)R `M-֩@P&"k^Z<)! "du,4DBdNY-"TDQ22 X$,C.$y,ٴ:3:cE6ƤG)P>pMQ"PgrA.I!@ Sg Q9` iMHdX :qZGy QQG"R))9NB$<>Bf;+YHQm) F\ASŔƁrհ&8:/y1@RMYf#޵D@4spt&bMώ}G}=msEH%&%(#gP6Az.kwB<Ű ,?3R:}%e}n~kB8YM.a_RMa_#i մ;PMci ՔzrB5BhrBPz4hLn0XDuT*5NJMf>8!X9T*Փf<]92Y<_{0{"Bu:З~AT짟5iIsjtArrat{rМ'rB&)XFM/م)89XZ4_ʡ鯕n8Hb[s W~%Lޮj18 y48Nz%'n"r}/p^KT֣U=JlSR]?[ZIJ$4%XzIMkү!͑nꋙ2Sq =*[٣ζt ]Z6U*mAml3kaN=k)KG8C\f8 Y [֬ig.?ǫ66S/h?g{5?Y⠒\#&l^}̈́۫;d] Tt} %_d}խ2Oꀣ[Z(on|#98BAd5g[(õ\`[ eepq e82WP逃M,aZu2L=6PiFWPF05lh SaOVjVl.`{ZHˣgG'ggN0>y .3wywK$T*O:oy9'%:8Qwwxމk]qz3b\Kxz >u/`J[\2 l|\x.T-B^,`] OOO+E{LY#&՛S)r`8i>?>|YyN߾\O3ukE.b)_zNc,r m ^쾽WcVO*csK~Z VB!yz~?ߏwJq%,uFE*bF-C i}.}%C{׍iqΫRsS=9%9>ߧ˳Ã>=^tkfux(gեϸ:$w.*w黖.F["йGdpDmvwǴZ@]҅/]׌L!O^u\ ]Ark8D>=7TWwҶp_oD {@vэdAtW> Vl>3t\~2t;<(r^î>QO識3&ҪlOyjhǑ ri4Nu9kdpj:^KrpNഒ1.(Q*[2&XT_,a"St Ɗ^C 2AKIO)+S>SZɎ`_SrRSUq>H濦ڴR ;RZ$I) $U;SNJuqTP`J? )ʎcX+үSh6%ґ)~KRj.]+d=9;^;Tdo^zt=G,8FD9hcNj:qib+pS+}>c;\kU⤶;hL7JnYvGc4OqSέ#;-6UzKDy<;MRwfdOG]]]u.?ӷ4ss,P> ?y-~(?yZ,׆ky^_5}SCFy^J7|h >03C_\YG8uX ?jh~> uL61ڊub}XtvƳ}L]o,GIRί'6}$'vN[O/'}FJ/^ڮ0#}s8w>vkZ dVGF#n\ͯ8n:}ɷfu_w;>寫ӇD|jJw -g62mQ%_t}#YgEo,!}TNg=fk)U)59ơ|\z6o~_@n֛y6%p.o-.׷?3 /t*-Qeдw7׼|q"%/qКǭ60E#z_K0pO+A&.mR OI7Qb~D~&ۗx]=*ѓ'|_҂}m!uc1`adӢuB{w./h>ECȢI̾LF|0Nw#}` [-ɛWցSxưǨØƽa”cg>wvROeZxֿ~Rt2SFſg}_~(g (mKhX$ޟ]- U}yڗŇQH\_ڏN¥8f`?q<,!.GY9ˏ l{͢\eL}/^6:rquhۋ\$ eMuuٯ*ľ5}f7cldKE^/ٽO{broqqҍD25cTqW(ߗM"A=bRimŏ& sAƃwWFYBxĩ78>\}_u/trm`-)fq/9x|gBڹ:? "r=" =@W?/ސCgc.*~u_ 9V[jZ7hZKR[q$[R.9g\EY72|nAm╘0k_]/dxf Vȍ"ۑlۙh_iY=g]h\6ۍdwe0e1a=QƞtGt r]boB1H 5J+t~Q1)2af9!%!ғ)NC*45LӛRtN3֒{)YVU<4>W&ކͥl5ֹA8; c,aLj)1XrlFUKaC=N/6m؄YشS "@ HkG*iEk-b6QH )j*o~SM7Fdޫ:1$Zb41 noX y7bтe/!u@2nc,z;(FIEד6-jE\kФ#6P LɔP FSɛ Alj%JI|' J,xtB0vHdEu23|qŒ((G,왰:.ʬ$x@&|pb`tUɮXG;ӒwN D$S$LZJ.!љAEݏ[Bwժ\Qf<%2S:& $v(Fq̃ݨ!F534I-]/#H=(M#X "6{*D ϞEĪo>K䥨l$G-ŀ 8N +̘IhvB&Bį}#0^&HV"\c *#t:6?!".QaV®VDbKIʓ!<lv& aʈ=u3! gpP$-΃+1"!>" U^ T)94*IXpC\LS8Cɍɶ,N*P0H0gεr!Z b蜫58Pʠ"H=fLa48ad<.1IP P]Z1`QVr\%Za20Mai$Px_RANd܊=@_n \$I4&BfGDGpZC_ؘoFBH:dq}-:gmh簍Oaw`rI0u|!} )*CMb@OLyIT 5G8=6"h#|- 3[؞& ZIмuB (EqRrƳ; 섐2I5C'LL[^AEVL(Vfa7dTiHѹg-4@]%NC<-4H'88}H\ X3* A4$F)JD&&l|`'.@ȸmDJF:JyoL0mEJRK&Xd%µIm2%3Qʊ!\Wȭ9AjIX!i%{t ލ&FJvMD!J +D[qR_lglCJ-)Ã5 Ёl%W,vBv u")$!!%2 ˙A«zQI%LTD>rgB ='qtXR4;+i3/YL.CǑ$HL6sSz:<^;ixV}wmeί KI'TfӨ'-5@ڭRW%  \@d'b<Γ :;A S<"jp$lII1p@D!oS0p^L (B&iN=9G@I' RĀjcgȂ$NK*U)[xB?R=}<ֶ\}a+pw:/xo /}FuV8}ڷrF 0-ͪ˾C#}as巧F2ԘͷۮY%,i3ʟʟ!"SI_7=r`pӉZ$C ,ًU[v,".#Uz@aEV*8b 6,F~1%y6/#,x0* ^e-di3{|zؓyaG~>ۯv￱uۛf<ث{?_ф'~l܊vаU%5J 6k]0^A%4Wh;*DJb#DaPtm]}޲C`,#s\տP_5ϣ ׏8ur~:kӺtLO&Y܆,O>wnb6T)syMm,?SU EJJ`"Mr(].h-Lw>TV[q`?ʮl-~Rw(I-#z9_n^TQiw'|4&JOF-^CZ*WvPY%uӔ\57gˤ9_&52f:|rqFSMO)˅*RdI5-NɵQkK OJ' 'y ./eUI?!x2[A* ۚRiT:#ukm('YKÝ$ڭVfJ:nt%U>wgCZ+?j ͋[FJ3Qj?v4PdcPs /@]gHr{;\7i跈X ;x)JȺm&4]ЩZs\!PKp>eN{bLittleCMS2.2 tutorial.rtf\[s8~ުu5-yr8*UM$$!-k{xa"߹J&NI/Q6`t OgAToJ c0.T,t:fp2\aLZ >p'|Ղ|j&nҘ wM#zUB&T&w)Y i ҍ\gn>lyx86y|nM qKm08fR\ѝd.샥Nv uBT66T4+{="&3G0]t]'t}x|BQ~2vGIa܄q}|؍avxOAМ&'=&J aJ/\͐GbCzzP?Kd&RU]l <>by+x4ɣ$:<tM0k< uCz5[Cm~0LF.Ǔ[LƃkK`gLMj%EH`M~{~[,˾{>Z~|G}LObM&m"X;(6% XICx]FZ2Xns-ɔϲDFJ7Ib\[k Hcw>eD[!2zI'&o6%֪)vjEjMD_7X& Γ/MM5:OEjMI@,وb$X:UQ 6DMDO1[& KYb 6߯C:g5Z.H}P ADI 6@?ƨHd8qkH< xI`s~@7sb,4S=hnV٦l!9%+po_v~Y"! ?S&RVGj8~uQE;]v*1fve^$?`)isx m9غS񨛛AVN`=KCʬ\i5 l%?"SpV۶3#&|f۰-LuI>)V`nUկ ,$:7 @]РR;szxC}|".?5ܷ.MX$|J([o3oĽ`>Мt7n؛jI<O]xJ-"j|..D@H.(WL#WqH1;䛼]nOEfo4a,4Y{!i# u1Q6 etK(,V{DX/o@20nq6 F E=r2Me0<$Ei΅HW_Ň  w>Vthx4MPh JbG@C aK$}w./RK*E Kn,P>UKC-  gTg-$Թ[__'K)P-5,%.AuUAQ(-J&I&_sQybK4 xم_Xr}L0@ɍ{ELyA&-Baڔ n4@Z$qDU +-IYw(,' q%XH b5*+g=l#!xARNZm𔋤}&(Սłw Z5jiJJԇF/?&Z`FHa-6 VIĀ[v9R:Ex{%[iƂJ֐K 7R~xh{JϺSDqD Cg݄ԌyXAz'Շs9y~/:(߯>}9>\|W:B,K-15sh&s8EfM2'^ޙǏqr8ZI:ю,4넞&+`=䎘NMz,N1B,7 8Ԩ?KZ'ӫu¨O u!(Px䄔 ױ@utTQ[nCԣmJ(Ze}0 :+oӤCI|Sj!ʀ1kb:0N-^6Va=Zf K4|HP5ډV(6eF5sCJs8Ш!%\ј;xG{HNE\goF-G=opӨlѿh#Aָ:6Wʋgۚ譩q2S8 e؁ JaAEhI9\?D>AVWE!-\؉q/;ԠJ4ѐ,XƸJ 5@yDE9%<܂tnNlp9xEjTNDjÁcd%a!(h?# ^xQ- ؍ Cvloq{dzw#m>} = "*\^e$s;>oLJyE8>vx\wI5 Wɍ`yzԭcd!DWQIqڰCAq O׻Fi a]%GcFB%cT9s  k2: 뫳k:ƅeS6 Ҵ3{Ā={2t1<X\Hb9 鎗@`fBD0c%2n-` UזDkHU ڔqu SڡzTl@3j̵I5Lq\T30e^I퐘TԨB6čECrL vNzRlQ6NEMq ǓXv0AT P) ˂JRiu'c-f{,t֞TdymW*νq+`V$D p`F? A_爊peI ֠3.0z`XA<]„~@Im,95.בӍFo)q[="%C®\n oбlt8d>6+?.*~RH/^ ~K.4!ǢaM;*䶑^l+l +=]n}[Oi2ʂب%JHSDWz;O7//RT [dI6S Λ_! HnDUn ,z1h]"[ K%Q.aw)C9x|O@F?Ε0YW_ 򽔑VFMm! Rݵc96f xng"7ǙS&L(ظ?f/j)$8諼PbZ8-Dp٧>EQO5\3it}JTvo*ij8'kK|bp\BREa ѿ`>ӭk=*w4dJɾJ@_s+T]󇨑G7yt7o-rP/JMϗDBI06Z)}}t0FR.g^ʿmQwA]z!``SPQwO/Wih^+|®I9Ƿ1G!g 9?Wp.qU\8Q[ z?;!xSz(5D$ 7h^$j)> /T$\&INƎNh&OGYj9B){Ωcg*-AҀE/׊wr|JFÑr] T 􏙠t[D A8iZsE1}[xd5~?,e[c?O)-FW ĕYi*Z sPPc`Ba k"Ko;ZlN`U,#o"ufp[9R4.<ŮϮ%fKɠa`J9VPT3s]b+)ϥoD*yO͈e8T>M=͓2xSPWmi-! ĪVJZ ؑʲoI!d]sZR/=IkVUF*ղd2'pneyаq9pՁbN%56xq_ }*F1,u eoc]Hoz)/xHH⊷CR՚Eh0!;1'TU7Hkj뚕'97[~R^rϢsW;Ijb^6\AK$ m5uF%&O?~ Ġt_'`~lngDQ" W[D||۾r-_y3!y"bYB{xѫ-$=%367/iK}X3uf6kvfs; >Ya)dXd'aQsA5HwK_i.$]u<r$a`Yl<[$|`\'aeqgakvS6> ;wHbH,GB Fx(ycIap?gOjwٓ'웝V/p87`bv[w蛝 _s, И;ϫ,T)ۍuk!dNf+fgf#' $FLRŻW;qnۊvWo-2yxWd|\"O\Yf+6cY\fet;g:!ȓj[~_hK,37$B'Hiqsqp339[_"''5ɟN?4nA#z0y &7M `znOjW ZQӫ7ǟ^`k:=8m~:joN߷zͺaYuZj`%e(iCOqL'}%Ys1/RȆ~m ;OWSj.M/kI֏nIU75Ug}Sj% TA3>E58q91/{M+v E$px_bW,AO4ZKR\c%8m}U`'rK"i%I,L..ܮ 0}:q.otE$@dA4 `xEB;Ẻ>g q/7WN t;48w67G'(9 )V "E8DLo#k(!xPE2NIB$oG>gVV1E 89!ZyC]&eg}"~ %"q&?k#F2eP}u;{sBl!dP }luTFZol ;aawo/:}x}<|)!v2gxy8']q(9?%P=5*aAŎp4sB2v(WY Y앆85E@;y.<\+RdJ&0F>e}?I*B8@i~2l]A["^%U0$:iHJ|f$E|"o@ q^wcq7[!!^m '2M0%v]IҜ|<9mom>>9:<{sKtxpXSpsb}r..s>4F)ṛSv hiUUV[p"u$ωޘcJ /x!BNHrx˻cF~b姒+:t`"}-$}>魕'Q/GkO`;T ~M݋d/28߄8y^vZ;@\lK8&!WxhRyaq{N@< }Dž)#HUD?;yaṊ+ӘDbzTUS4d1iq 2Ԍ 9@4ohA|Ja S;tuZHpgn<ЉPǀ_o1J'*VvWDn4W!x"<^zV~q_RiLōNnSY76o XۥHjO?|w>;]G<ܘYCBqGqɛO/B]Kb֕/7ۥ:VBKR&hu:NAj~\Rt.Shk.c%aP7ۧ:ZA|D<2MNj6+I?Γ2K3 ǒ:q P({i>ĪO_Z—C@iF̒!%ݎ o\Ћji )1}FfPq0 hO:Z D!NgΣ MՃ&\˙ Q~ٶ} AzVFm|D9?ox{ob6 p PU_^ZdR y`*iy`1TPy67&@^ M&>z!hJ+I㻅1*B"\=.A.&m3> %jb%:S^wKȢb.8ܐSDffCA$`&d%$1+ xik oSt\BReElEW2(cƻRflf5W)4MQX~0Aڜrxm)p*/΂`Y+Ad~q?V#ى la0mRh b,Tw'p" dJ=ĩ{ * ('5#x礊| ul͎{_Ifvw}z}Ce:H,"rY` Imul0-Rݹ0o q<Ѳ-[cZÃ/(B9XgWo@e"  tJ_/n!7 b,5:C]ү=~m:9{IG:ʫz (]c:B{ӌtѦo (Cֱd$S,MG@ *yQbm4t?.#Lݪ%kpryRgt(|J+h,~VUBM"sJ\a]ѝ-A":5%(dxdҘ$ BA<-:fa{ 9mgsQpe\*BZټ禺u F Vb{D \rimSsrA*癚)%4ylaa 5rtPbco=<<:KǬjj /hXHfhzĠb2K4(>P$7xpI4?g9/qx/G]`0p:W8`sd@4:/ $ίؕ{ZeX`u="*DDYUk]vU^`44dpŲw T.> }nNN\\x\ͤ_ gq{ˊz$&j"X4HI=p暗25`kj3DUQ)urR^p;Fg-f&3L~]Ǽ HMkoS[ivW9hO9[' n]Ѽq->VU 8cs%3#ľNmF&&e'~]dD7YYAc\R>Mb:4`L% N1p/pejɧK=gF/hG{OED?jH $RJtIQ!;e1.`%&Ɨn}rR5λӠ09QIEOdg;pZ+{-\ȡúuonjrsxm(_ oIONF'bV۪+8!-3׵A)1qfX~ *Q]j `쁔a7G"Us}%Z[QŤA%e"v [(]r&Wؒ}mu7$~c{okm+p9_?$sK+wL.LkV WޑhO;?߾]Y>zud~]4..dWc ƊXR+|NH>voOe*FAC?߈| zG@2, Gt(W8H 3Owsx힜> z*U>q ґGa #4Ӣ2!EJU[RWI ;9ԗMm"<'+ ُb`s6͜+szf.(&&چ9%X܍}ğ \"j{,0DHe}W4~.l#"ʹ/%{igeDQ-2Ule^OJz.%^u[G2/sG^-ɴ?].Ml,I59) w;U_IfC7X FFl@MnMzȥO$1]G]+' T*e@~r[_Օʑ=<H#^P=笆,NF-6'j 深 FZ_&4p4v8W7blO&-ņvr>3H$Y@N(!v.u`ha, 1IڭJ[A*mJZZJ^^# " fO0QnqO*[ݒRvd>Ę`=(qΆs?zs%ZNhM M~v6 AܿdDfH53R=)Tx2C? ]3>_0NJJ)¹or4l~:6dC F+.!˃mRLSNE[>rLMRڪE \^ʒg0fԩv(?5Ep*r壑Ѻ%IfVLJ9=u:/ҟ?ݼA-{d$(pMBKxbɿcwG`[q iZ>;)DYCn53O(uR Ǒ{kL_v@ʇb#~$ ^~ rTOc§o uikpϩU nѻŮldyRqL-CK QI`xz\hΓU]38.—IgN(g9נF77~6McSؚm7,fBmDLF5%tjsK=)4,$K:EoDjށQԫmXD m-12cs&0nsd cq. EuNg+*:%u#erj9rF<"7"@I?;æ^Ƭ0W%tj(#8ar:b N?Mk?fY G|n(* =*rO.f%?ϽR=5VqGk45<[Iڛ+$㥅鹀Ϛa5,`j%":r[h1#)2[n-  : hkȁCX8"DO`4gN5pld2+\А7T Q)GlXG`AC`Vn98vsIAE' J4|0) +CCܑ8Cy2d&iE5"%|Kj%A@%Κs(|0WL0ɗv@7je&oWbiMAђ^,t e؅3i2Ir%n;.$J@B3l&xKr 綛hX*mƃpUH0a\rIPTd*FP=1lmhD5OKD/EJH&(~ZhO!dSC1ƴAWd*Kb3q2*`yS&Lzk!JCQoJql M7yk x_ UŸ͹'I"oy3܋81rqvڡ PƨU *˒]Z`P@dLky:&SBM@C|N,;_rJrJQ]ʘѭ&#Dh#tELzɴP ]n:NBd:"ɨTw=!ٳ nm~+GiZ(PwIZʏ3lɩy=1xE51}Rd L+Y,tz .w6i(cD+Rbi2+qt`86[0:Ĺ]Ed}Fd/hG}` H2Ӭ,; J:_}!bŋJ~s*ͩ7b߷W_&]m-:ķpϟ>ېH ]e*vO٢6={Ix^.3G t:>]J4|郻odA1Wzk"tbKC⎛1dkIDy5{};Oo,1|ekK2cRY{TQM9B@0ȶ$ͱQ ލIYK4/X+ >XW.1ȩTe º]8 x46Kݬs ڛQC-z3)q$/ d:bUVoNPЌqW! 8w4MY#JTU-s b:4电s^Æ?+|&tnW]0qY 8D7l!-90{Bc71U6ʘa%fahd+ bUAy͍Y$(ϡK`p!!3+FF֬dD8L}Jޑ+@ ҈Mp6**2%G;Rt)kQ0$*ÚEԜ$x'̡s$b6XfGvoߧ"͌sr-j(I^ZYKJ@x 'HkisQk3A>!ʃa|\)ԙFƷj<Ǿ,muHى2 RquGޙ)}J ݲr<5; Yen35)b2Nq[Ѩf3i908 x~/纼[ T?cbg/MǕLTXqz$el7*3L@0ǚB'93?OR\1n!TAO<2>Z%?IU(qDV'!ʓjD#-jm5G%+N"OtY*? gX2L6 h&%,F,I+tܣ$+cgǰ\SY̅Ku+D\:ӹ$Om=֬$,UF{ggݏouv>,1lKRO/,!%1C7L5SIn ۓqBzegvmC8_ۆ?]m ɤ{5wwHֽ;g.SLxr+a'S5ѿF$7CK})l^٨w'g[D1$d< K11^L/(Hq`GYt`4E5 *~4G`~$+lEe A{GUFbzX+viN N$.vH@*>*,]av5$aG1=|=xmH۽xJpp$#Sԛ :n|3g\~̳^$CI7ژ$c,㔫B{hs Rg+ޥN>A tӤ@FQkx  A 9# lq}ky1jr%*> w]9@X\^SI9>vcE @!RBLƝJ? ⃀( Z&Jik3g%zOp\SQTJ+{Cz.k` 4d'v Ǚf)D"y+@n\e?ړgSfB3߂frx k Kihb(hL&rL+5m Aj9#E-7LLp]{7ǭfxx@k& Rfo3j3,>UFB<#Dkyg,?gCO@F&ghj1[HMR.*%hjxZoLGF)*'D2cjKֶhmB ea>h7h'+.,Pw*(dh:B8NG!p\ri'&&gⲴErVmFM ;5T "8^>b@H!y552+ 37.Ƿ,~)aqg<0M\$-*/tXC1h`Rv&+Fj5ɽ?Ad /.Z .G \ˑL`5U)L5q"buI ^bsfl:=Ή6Ͽ"\ sXf'0%MpO%mFAb7ke$ʆ$Q6K:%|n5n?dFaVτ:,|3{ Mvu r&e^N=!˰.` Ta߰hLўL!4MR ]w=Gh\AbӰӋ O)'/$12Je} >暉$||,a68%?JbmS Jopgz+ :T6Wض^Bϟ[K5^I,;w|^dj;7 ,@NZV8͠ [W5j -vc)bуQ JLfMO4$*tRlPZ'ۻBHFH ں  @<8l&1ྉR"zЭڑq W\H ?)nFb 7eDGȈZif2.,;3 AvF5Xms=~24^F)WYw[Z(*EN--lJ(lDy_][f z>1, _NTV1k0PEz_DXǿ1ׂ ˔^Lhqq| v|AIt8E n(zw%W#Gxn9SȞz,dIhh:d)^&?k"P!D0(O)4L? Si(-H*}*g&ePz>p_-65iR+~p[|._>})2,I`Goz~{Em :ŏm5Gy'G']~c~. ]}TVm0W}%GdA٭~ߣ=><>~hm:̧N[Ð m駓W Xf9)#Ӕ i͉KKLFE`P2Cx0 5Go4kN}ï"Rc{cb{7%Y1 5!S'ґD tTJt4\$Qz)j7\HatB'ZY<֮]U\@:~&~tΛ CUp<բ]$bAE2 K!2+as,*bN$ϵ^-juR%]2v?iiGѮ4@e 7/2|qf(r :, MWH gT׌fȣTw5=ň-Kz$WNxG )~1],S"AZSCE!AnZE%.",q4b8v&`Z"TkV u[ 1睟3#Q=:bA.QR=raԾ QIu(CRQc~t)o>pp}R"H_PAN N½K 6Bt#|.M{'`^Wэ%bgD7<Qx~Oi& yt>2 ƒ6 i0 F,!x}ӎXV$o; ϤTe.]p"r sOy"lf~}6.Qj &}7& K]!j=t30Eϡ-noD:MsV;Ot;Y҂ '*Y"]$QaPjt3 4B=F^Dv)HwdKğ 2Ra{Z@|ZDE^gL]ڏ<@yW-Aw6BRD4MB5BbkD^ 65ĺJZe<I{$I."G[_n.-gn(B։;lt"FN4*S^4[>z։ǔm@q`JV!\q.G:,UFZ~q<3+] v"@%xN3-2@\R) q#q%A >"wHʤwwct*t'7HZ-5^~LbE<^ ԽSn`K9aD.5ϚIްBG> /P\Pbmج~ 7Sm+X+N?B>Uszywߓ1.7OwY͛b/X<F,P?& K0yIف? eƣ1eVy2Vg"DX=`:]ٯdtGc xVXѐy4+FVjT iQg$E]dy}8|$=أo3@[0 5TeA_4Kc'Ze 2H+*NWL!P.$vsؒA Zgo8MjzrX@aAcw9Gcv!6Oi)smXG1I6Ւ) "&U/D> ]ଗܤE`j0/+e%\/:gpKFq:0ꀙ>qnoVaw.;%D>Xb/nrlaxTne._KXtA@/NmK u1,rղGbCBFsd' Tq]Hn9Ϗv-} -L kHHCDc-fBn|5{GZgMsQp*-C"~T )Jʱ%K̨!ࠊ#'J_6fMN{ucأݕ;aϕQ @K@$,_jf5w$WH* X % JK8U|lA}X;`ԧjkrB^DsZIkSs -{@e% jp\\{!1l}~Nq7}k(.OJɥild>|v+ .r=njc"Q54eJqA4Wc$iTBYiBp)Gg 'Y9#t\3}OuшOL>*];Sx*ɗow4AtI8ɤ?%tyR;Ef|8 Ft>^f'%=5e(2W+r&D 4MGWrZhhQr󙦔rakz)<+H/O%6 'sTfywJk凎2Ns u.#qH af%ܛveMRy2A󥉱l(d4NkšuۥZ v $}6;mZ/؈(aQ[XWZZaH4{z-*s6qd+s_*ҀӢUdܐΟ*T+8N1{yCM_ѯMZy8Prc̕5l4C#%aXymMu/c|cV;,<꜎ XT.cW@%7HĀY{pB~}/ώ7l~Iљh,C8< σ7hȑ|Dh?$HfR|fA' 롤mT80ubW+\CicT·YUx:kb7Q3FVY2$m/y!vX6#|"Zo{bt7&ŷvgg`ؤpjF>X@VZFts%29 ,Bc-};JdAa;rD5VJ.C)V:_ 3uk3%(sW\,K%vm}+wind5ILR Uѹev"1א!n2 Io'wCa; ݡ8rL+ӏ;9'9 *mcZg)0Nxf3wߘU\|̲b)};ybV^1m׳o.<,8Z#MV:VY!m9W:z ą:c:Hc8*& ӱX&y|KQG*#F]fAL1Q3](Nb)m;墮&A .q喱n*ZaD#^ #%az7s-!=ądZ;[B7ޡ|+«&I3fi4AMn}\ ɮdjM)$țnLd c,PX<MJ7!F'ၶ.XK2G\1$؂%Ri[ٸD!% sdXq+Iv@*ӶxD0v}Dx[q7X%o~cbښTa!&!hPZT⧴}xppj#n+*{1敫g |nTrMt%o'Fac"6gW# $<43]2qo(ḆGHW"5.=K<<}DNqNOeQV3Q:6 b"gbG}t9ȸ΢o5CG?-8X 1lଣ9Sojw&x LlRt>jA(Rk0!4KE4!Il}:c{h*8Xߌ/?|`<".++ 2xuI^ԝ+7u >{VIP=q꺘DeԛXb}jWW_m\I )1u֕Y[k;0>@eFA+>`XqָBBZT m] 3`,^ň/h[ң]4Dm޹-[B#y:H"vOG]MkaTn'iBh۝):t Yi%4١[<#\J)sp! ݻZt[gğE{5Ev5Ҵ6+aLg0Xd'J)!N%_f?aUks8GŘZbUXR0Ƌ>L#kbDP~mfG󮽉# 7N*7ЬIMz3HUwo&_M2Tb(]`cШlrDj z\յa7[$ijK,Z$Y?mq"ҔFo$~Ӧ U_[@qG 0]zF͔9/b2`TalF'@?LʦJvwS[B۩L[G1xV f3T뼢!uWлR)֑<}ߕX4'C/|tk#%ZArJy:*^z_BuoՙZ|VS]27z2sK}yB}."A]U >Qf\\v T>gʣ;D)6*Lwf7E[' l_.I"J&QOx4Ndl`h\e.>/?:юJ'-bzc%UoȮWvKͺySmչ|k+?vټcE`Rp^۠,iZ =ٓuZԾV>O*pme-xK1"еKYHq+/}f̿߭n5zؗ4Y a94jTgM[}:}[xlӲ_6? Gb]3Ȁ|L=Nf 76^YEZ$m#W֌oՆA↭r]]{:cn_do? )t- fj5b>5k%m69^`r|K?fKuq#Օ9-GQdtwoB 闏Hz`\}3cjt;,:bZ>?Hp'ѫI#m_MOx,KDו%}IˋqsGwGjλi2JH$ c?z˼HΩ–TR=_a!TUʎ2\;9J@NBmk7$jYshW["g}h凤+96wi,}Oi$ B ^s)& V*+!e AQJ\Ĩ]*ʯw n (@$a cPVa}*%>>"^N㗎罗aTНfHȣ:fB4wDX()m8ӂӝ^R@4,V'#?bR#'ߨ-sa0y/Cv ϑF༎\1CtM8- UU*(D_cE&N~q}IiqM \ ϥ~FtQ4Ht^0<|lËVzUu]](+퇽Trp:2#-']m0X6ɇ|*Qۋ)c\'}9ԐO hY[*Xr.Ďs&cRj%Ȫޣg1j:򕋇rSP+MGlK&@D|0MON"%ipmsCX:lgB Z#8] r|K,$;fLˑ+S-a|AvYrǡB<# I]&p0Ht]@|lap7ucq*2RrT&ЏIO`;'9tItA}p? cM>s_qwL[wRIgk:bFk۔hbǰ$~A h06dsf7I bVSM%p#1,RNrWFΛ'aa7Ԉy)l *iMHŮ dWTe䥺7 +_fŏefyCtl4wg`nP=#Tv*a"N`̉ĸ"bQlKEQ("(ab1-jul;p̌rzX;oQJ* Í8+ $6=ԩ?rIYJ5IaVu 0;vSPRqD) "O}lcWdCEq#᦬UJAf7*h)!\",1!+"˖e FCc%miRܢϐ#+'+8%W3ˀ.!+ZD^}_s* jT3r:̐>21謹fjv+ƩhaӢH\4IM:ϝkMH?C,"z5IϹ 8˂*$Vtf/{oMlJ'sfwUp6I: F=k ^@B|tW#6/tCN㐏.Ly`^i5yUVb)% 9}=z;c. ~HZ߆K1bR.[@ 2bwCcŽyM"I b^r=u}" qpƯLra Wnbi-P᰻OVVkآݽӉ%vrX9X|JrUQ˧f7-*٦ ·h$i$ǧ$z7>ޙe)I +VmMl1tEuY4v!g=qyէPt\'Ɲs|7 fDXۻ.qf(,pa:w䬉͍alb!)%_O$>#&pt'TWX|&յgH{yR-ޯ~ۋs3 a$e5Cͼ/iУ=̅laç$ab4D d_ 8S;\ |CbxCsaTGK<N .sݻ8VEkX0Ul=D uz># v0|wA.!tq죬l7r)Bhv^e=myYb*0sX:oȕ70xp]CW2[$YUǹiTzsX&ϤTC yލH gYG SrsI)_9_Cۣ7ڰ}٘uꮰ˚,MKvֆCgxObo),_`.m u}:Y /_d=m8'P4щEsdB*4oBR2S8YV{BzdC9 6T"?dך;Iɠ%ڇc^ʃ`R FeP<%4pdsG#a7UyNqwfգ$hܑh28ݛvE./a0 /9L ҤX4N3a$MQ[&.M*ta{颀W0}Qk2h&--Ɉ B_ FR "멮:'Q I2IEX/E7a RbatDԣOOL]mA:g˧Ǻ20,ݚ7I ^ҨYZV~f&YN+?ݻA% ջ|=uv߶vǏ4png$7{\+ԂpҚsߔo@Y"˿7۵Voɕw~l~bQw WW7b CeJ p 7fBVTx^uK3 E)d)yO d }9,AT(iU3_Hu٥֩˺SɩD;[80$U1؏S%b-;UTa]Oa%eDG]dSt%F-=Ɉ!贞6IQ2ˋl9\AGc)mJ!NjF^pN?I<:}kpF8DڏV_S [ wzHuXcT(՘9 6LuaOQ]Hbyat ־K=N9.}*|PL_#V՘ٶSdpO-ae!pSR+d ]:59SsIr0eʗUˣ݃7?Ĺlᡱ w4Qh*Ru/2.ŮauZƥlUٯ9hE{@ eB+=TW|h~ŸϪ63 89FgԼGIF۴i8*OӇMX[ߐȊIH`@n \Xw6%M?!~;{tۏtvE.bɨy~NI=Nf69|eHA O9)'2^,H6N/3ɢ2j I%<#_>0I>(~־{3w(xwV|zq/ݼJ/DsJ/s] '+oiiud/_>/EiPO&c9z$4CE"KM=@B?'#w6ٌ1&&ۋCs( |R:JӼ\S.VޚZs)6&bP)B#z q| Pq;Q3:a%ځ uU`zoF/7֫_#suU\&/'VLy-R\:8%t3J6! *sh}f}EܓCxYՐ'F6}<ݙ9+;"K偺] M<;xNŊ{Ҍ^%יl jg|K Q؟n8FVݐq4;~|%δ1y<ĵn *_wMZP׆/?)$V7N?6OWج<:~Wydk7 rz+1D+A"|/Jd54/1ՔNƞ>G0r)1ğ!C/vyR EG11=? yu6AюwvTTXf njC0;[A4aub|4,($VGhq~Մf 6bUKQ[d6xɌ_8.w=xЇ .k{ փfJ;3ۜR ά-{BU>Kds\;F^F1Ibr0Y"g| ŝ:6}n9| KNGBҧvICSϤɾ||盞o|/fs}k)RIcd//6v/}AdCsvb/]!EKΥ\n6^Z-צf]`5,`K˯펚F_669}F|U-zsI`j.Qqn05Ŧ/Ws+buM}='ޅ3fW|%.;Ij:a;VQ" flbt-|9ߴNOf'%l9wr6J[ ψ|ù-FptP,UO_SLfmE]o_}nnPadaFaҳy'\2֕B}ԗ1䉏fC)zdqbaG;; W<\a~F Eu arzrldV@?-*\wO_漏990j@K=uJjp@/e>EiLQR҃U`Mɬ~Fȟfc6-_EmreFz0ԐgEL v5b7 W$L}VxH%b0ζ=)#XX?){ՙ҄s4GT A5ۊ㩅N ":2St,Tj%)g^.e=[Ĝ";/g)#}7tMĚLy#C^qRuʺ$?'d# A`ɀRDrTM<rݠku;r[&m ϠHu-'Zi?Pdلa_^}UD:79R%VVZ*XR;Ɵn9/#@pMFQHuq9d</՜$e #{_j=?jm yA'{c+%V ȯ̥}9v|F#h.w6>^URZƬh@8֘9)t?s^f>%Dyd:yٵ uB1}dv]yصQy*F5hyž/kGh;I޵>m~֌>$DC-YHj;bM*!dw_w8Hudr!^{,nǓi?qaŝPHV[x]nд9L0}P&<'MowmMcPr1 @E;ɨ7'EEZtmrC k`vh*dk3cS1 [K$ϱAHGh ;}C Emz~PC?1(ߏC>HyMgDc$;;K:V }≊{Dxc_ZTtN9 59M0{,I h̡}M 'Ajߔ!2%֑zܗ;OfiS0 b8,)6[3YMY7@~#9 MqڄJ* >$Lu07vC{~<3jQNCƁZMLB&>C~[rz;>#}]Ng ^y3M0|Τߥ 7tTr&ҊgeAC,ǜ4>W̓ߙ;na%6+T* IAwY!MGL7ʧFvL]8`}J\ar2sGo)m4S4}ir"'ה}؅ 7`xhrAxC/!*nwcF=jE5gӥ|>}˅wB<Vp]OղvbɣWO D!+J5΋m 5 -AMɔx5 r @h0NyhkEf"G%-KF5loŊA7D^Th1=u s(:wYP''_dlXNN?NmuK^.4-i^aI2-CófBIiqgk^_C*Bi}Z6R@d>%hU5.t.Z?k`3xfLZ2ΆhGrxn%+>~}GPe YrbEȽPCio~1z"l0I8l-8?lR;Nbo}:#>UOh$g)xh] _`|}t! ! zf3d4hx?TwU}Sz)VT+8HVl:! M9LEN٢(]0!H7g)JlQaf \%Wm_U?*ۉc ϋ (-X~0K?1WdnnΗwr<>8n,KoҔ֋9 F{{5[#'g{b!gYVIv'Kᑓjp@ďOT`O)y̖j3!Ѓ0ً5Z)N?#B\@"狿CA. W_=sr1ީqT9jOP-NFP0L{NoOLj0M>{J}O,Z֞QWnjF8i>Y6Yd}]n B)0ʐ͒aۗm=[+j"R`eO$˪O%O?]GL: LittleCMS2.2 API.rtfPKWo>^ ~LittleCMS2.2 Plugin API.rtfPKp>eN{b LittleCMS2.2 tutorial.rtfPKYlcms2-2.5/configure0000755002406300000240000216345412163060730013651 0ustar mariamausers#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for lcms2 2.5. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='lcms2' PACKAGE_TARNAME='lcms2' PACKAGE_VERSION='2.5' PACKAGE_STRING='lcms2 2.5' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS TIFFICC_DEPLIBS JPEGICC_DEPLIBS LCMS_LIB_DEPLIBS LIB_TIFF HasTIFF_FALSE HasTIFF_TRUE LIB_ZLIB HasZLIB_FALSE HasZLIB_TRUE LIB_JPEG HasJPEG_FALSE HasJPEG_TRUE LIB_MATH inline MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE LIBTOOL_DEPS CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL OBJDUMP DLLTOOL AS am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBRARY_AGE LIBRARY_REVISION LIBRARY_CURRENT target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_jpeg with_tiff with_zlib enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_maintainer_mode ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures lcms2 2.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/lcms2] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of lcms2 2.5:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-jpeg disable JPEG support --without-tiff disable TIFF support --without-zlib disable ZLIB support --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF lcms2 configure 2.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by lcms2 $as_me 2.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # # Libtool library revision control info # See the libtool documentation under the heading "Libtool's versioning # system" in order to understand the meaning of these fields # # Here are a set of rules to help you update your library version # information: # # 1. Start with version information of `0:0:0' for each libtool library. # 2. Update the version information only immediately before a public # release of your software. More frequent updates are unnecessary, and # only guarantee that the current interface number gets larger faster. # 3. If the library source code has changed at all since the last update, # then increment revision (`c:r:a' becomes `c:r+1:a'). # 4. If any interfaces have been added, removed, or changed since the last # update, increment current, and set revision to 0. # 5. If any interfaces have been added since the last public release, then # increment age. # 6. If any interfaces have been removed since the last public release, # then set age to 0. # LIBRARY_CURRENT=2 LIBRARY_REVISION=5 LIBRARY_AGE=0 # Obtain system type by running config.guess ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='lcms2' VERSION='2.5' # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Disable JPEG. # Check whether --with-jpeg was given. if test "${with_jpeg+set}" = set; then : withval=$with_jpeg; with_jpeg=$withval else with_jpeg='yes' fi # Disable TIFF. # Check whether --with-tiff was given. if test "${with_tiff+set}" = set; then : withval=$with_tiff; with_tiff=$withval else with_tiff='yes' fi # Disable ZLIB # Check whether --with-zlib was given. if test "${with_zlib+set}" = set; then : withval=$with_zlib; with_zlib=$withval else with_zlib='yes' fi # Check for programs DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi case $ac_cv_prog_cc_stdc in #( no) : ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; } if ${ac_cv_prog_cc_c99+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #include // Check varargs macros. These examples are taken from C99 6.10.3.5. #define debug(...) fprintf (stderr, __VA_ARGS__) #define showlist(...) puts (#__VA_ARGS__) #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) static void test_varargs_macros (void) { int x = 1234; int y = 5678; debug ("Flag"); debug ("X = %d\n", x); showlist (The first, second, and third items.); report (x>y, "x is %d but y is %d", x, y); } // Check long long types. #define BIG64 18446744073709551615ull #define BIG32 4294967295ul #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) #if !BIG_OK your preprocessor is broken; #endif #if BIG_OK #else your preprocessor is broken; #endif static long long int bignum = -9223372036854775807LL; static unsigned long long int ubignum = BIG64; struct incomplete_array { int datasize; double data[]; }; struct named_init { int number; const wchar_t *name; double average; }; typedef const char *ccp; static inline int test_restrict (ccp restrict text) { // See if C++-style comments work. // Iterate through items via the restricted pointer. // Also check for declarations in for loops. for (unsigned int i = 0; *(text+i) != '\0'; ++i) continue; return 0; } // Check varargs and va_copy. static void test_varargs (const char *format, ...) { va_list args; va_start (args, format); va_list args_copy; va_copy (args_copy, args); const char *str; int number; float fnumber; while (*format) { switch (*format++) { case 's': // string str = va_arg (args_copy, const char *); break; case 'd': // int number = va_arg (args_copy, int); break; case 'f': // float fnumber = va_arg (args_copy, double); break; default: break; } } va_end (args_copy); va_end (args); } int main () { // Check bool. _Bool success = false; // Check restrict. if (test_restrict ("String literal") == 0) success = true; char *restrict newvar = "Another string"; // Check varargs. test_varargs ("s, d' f .", "string", 65, 34.234); test_varargs_macros (); // Check flexible array members. struct incomplete_array *ia = malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; // Check named initializers. struct named_init ni = { .number = 34, .name = L"Test wide string", .average = 543.34343, }; ni.number = 58; int dynamic_array[ni.number]; dynamic_array[ni.number - 1] = 543; // work around unused variable warnings return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' || dynamic_array[ni.number - 1] != 543); ; return 0; } _ACEOF for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c99=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c99" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c99" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 $as_echo "$ac_cv_prog_cc_c99" >&6; } ;; esac if test "x$ac_cv_prog_cc_c99" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 else ac_cv_prog_cc_stdc=no fi fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 $as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } if ${ac_cv_prog_cc_stdc+:} false; then : $as_echo_n "(cached) " >&6 fi case $ac_cv_prog_cc_stdc in #( no) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; #( '') : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 $as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi #AM_PROG_LD #AC_SUBST(LD) #AC_PROG_INSTALL #AC_PROG_MAKE_SET #AC_PROG_LN_S # # Tests for Windows # # Configure libtool # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4' macro_revision='1.3294' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' lt_prog_compiler_pic='-Xcompiler -fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; haiku*) version_type=linux need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; haiku*) version_type=linux need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # Add configure option --enable-maintainer-mode which enables dependency # checking and generation useful to package maintainers. This is made an # option to avoid confusing end users. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # If the C compiler supports the keyword inline, do nothing. Otherwise # define inline to __inline__ or __inline if it accepts one of those, # otherwise define inline to be empty. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac # If words are stored with the most significant byte first (like # Motorola and SPARC CPUs), define `WORDS_BIGENDIAN'. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac # # Find math library # LIB_MATH='' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5 $as_echo_n "checking for sqrt in -lm... " >&6; } if ${ac_cv_lib_m_sqrt+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sqrt (); int main () { return sqrt (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_sqrt=yes else ac_cv_lib_m_sqrt=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5 $as_echo "$ac_cv_lib_m_sqrt" >&6; } if test "x$ac_cv_lib_m_sqrt" = xyes; then : LIB_MATH="-lm" fi LIBS="$LIB_MATH $LIBS" # # Check for JPEG # have_jpeg='no' LIB_JPEG='' if test ! "$with_jpeg" = 'no' then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JPEG support " >&5 $as_echo_n "checking for JPEG support ... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } failed=0; passed=0; ac_fn_c_check_header_mongrel "$LINENO" "jconfig.h" "ac_cv_header_jconfig_h" "$ac_includes_default" if test "x$ac_cv_header_jconfig_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi ac_fn_c_check_header_mongrel "$LINENO" "jerror.h" "ac_cv_header_jerror_h" "$ac_includes_default" if test "x$ac_cv_header_jerror_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi ac_fn_c_check_header_mongrel "$LINENO" "jmorecfg.h" "ac_cv_header_jmorecfg_h" "$ac_includes_default" if test "x$ac_cv_header_jmorecfg_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi ac_fn_c_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default" if test "x$ac_cv_header_jpeglib_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_read_header in -ljpeg" >&5 $as_echo_n "checking for jpeg_read_header in -ljpeg... " >&6; } if ${ac_cv_lib_jpeg_jpeg_read_header+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char jpeg_read_header (); int main () { return jpeg_read_header (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_jpeg_jpeg_read_header=yes else ac_cv_lib_jpeg_jpeg_read_header=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_read_header" >&5 $as_echo "$ac_cv_lib_jpeg_jpeg_read_header" >&6; } if test "x$ac_cv_lib_jpeg_jpeg_read_header" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi # Test for compatible JPEG library if test ! "$ac_cv_jpeg_version_ok" = 'yes' ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JPEG library is version 6b or later" >&5 $as_echo_n "checking for JPEG library is version 6b or later... " >&6; } if ${ac_cv_jpeg_version_ok+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { #if JPEG_LIB_VERSION < 62 #error IJG JPEG library must be version 6b or newer! #endif return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_jpeg_version_ok='yes' else ac_cv_jpeg_version_ok='no' fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_jpeg_version_ok" >&5 $as_echo "$ac_cv_jpeg_version_ok" >&6; } if test "$ac_cv_jpeg_version_ok" = 'yes' ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } passed=`expr $passed + 1` else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } failed=`expr $failed + 1` fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if JPEG package is complete" >&5 $as_echo_n "checking if JPEG package is complete... " >&6; } if test $passed -gt 0 then if test $failed -gt 0 then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5 $as_echo "no -- some components failed test" >&6; } have_jpeg='no (failed tests)' else LIB_JPEG='-ljpeg' LIBS="$LIB_JPEG $LIBS" $as_echo "#define HasJPEG 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_jpeg='yes' fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$have_jpeg" = 'yes'; then HasJPEG_TRUE= HasJPEG_FALSE='#' else HasJPEG_TRUE='#' HasJPEG_FALSE= fi # # Check for ZLIB # have_zlib='no' if test ! "$with_zlib" = 'no' || test ! "$with_png" = 'no' then LIB_ZLIB='' { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB support " >&5 $as_echo_n "checking for ZLIB support ... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } failed=0; passed=0; ac_fn_c_check_header_mongrel "$LINENO" "zconf.h" "ac_cv_header_zconf_h" "$ac_includes_default" if test "x$ac_cv_header_zconf_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress in -lz" >&5 $as_echo_n "checking for compress in -lz... " >&6; } if ${ac_cv_lib_z_compress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char compress (); int main () { return compress (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_compress=yes else ac_cv_lib_z_compress=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_compress" >&5 $as_echo "$ac_cv_lib_z_compress" >&6; } if test "x$ac_cv_lib_z_compress" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uncompress in -lz" >&5 $as_echo_n "checking for uncompress in -lz... " >&6; } if ${ac_cv_lib_z_uncompress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uncompress (); int main () { return uncompress (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_uncompress=yes else ac_cv_lib_z_uncompress=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_uncompress" >&5 $as_echo "$ac_cv_lib_z_uncompress" >&6; } if test "x$ac_cv_lib_z_uncompress" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char deflate (); int main () { return deflate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_deflate=yes else ac_cv_lib_z_deflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } if test "x$ac_cv_lib_z_deflate" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5 $as_echo_n "checking for inflate in -lz... " >&6; } if ${ac_cv_lib_z_inflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char inflate (); int main () { return inflate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_inflate=yes else ac_cv_lib_z_inflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5 $as_echo "$ac_cv_lib_z_inflate" >&6; } if test "x$ac_cv_lib_z_inflate" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzseek in -lz" >&5 $as_echo_n "checking for gzseek in -lz... " >&6; } if ${ac_cv_lib_z_gzseek+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gzseek (); int main () { return gzseek (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_gzseek=yes else ac_cv_lib_z_gzseek=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzseek" >&5 $as_echo "$ac_cv_lib_z_gzseek" >&6; } if test "x$ac_cv_lib_z_gzseek" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gztell in -lz" >&5 $as_echo_n "checking for gztell in -lz... " >&6; } if ${ac_cv_lib_z_gztell+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gztell (); int main () { return gztell (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_gztell=yes else ac_cv_lib_z_gztell=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gztell" >&5 $as_echo "$ac_cv_lib_z_gztell" >&6; } if test "x$ac_cv_lib_z_gztell" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ZLIB package is complete" >&5 $as_echo_n "checking if ZLIB package is complete... " >&6; } if test $passed -gt 0 then if test $failed -gt 0 then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5 $as_echo "no -- some components failed test" >&6; } have_zlib='no (failed tests)' else LIB_ZLIB='-lz' LIBS="$LIB_ZLIB $LIBS" $as_echo "#define HasZLIB 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_zlib='yes' fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$have_zlib" = 'yes'; then HasZLIB_TRUE= HasZLIB_FALSE='#' else HasZLIB_TRUE='#' HasZLIB_FALSE= fi # # Check for TIFF # have_tiff='no' LIB_TIFF='' if test ! "$with_tiff" = 'no' then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFF support " >&5 $as_echo_n "checking for TIFF support ... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } failed=0; passed=0; ac_fn_c_check_header_mongrel "$LINENO" "tiff.h" "ac_cv_header_tiff_h" "$ac_includes_default" if test "x$ac_cv_header_tiff_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default" if test "x$ac_cv_header_tiffio_h" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFOpen in -ltiff" >&5 $as_echo_n "checking for TIFFOpen in -ltiff... " >&6; } if ${ac_cv_lib_tiff_TIFFOpen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltiff $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char TIFFOpen (); int main () { return TIFFOpen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tiff_TIFFOpen=yes else ac_cv_lib_tiff_TIFFOpen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFOpen" >&5 $as_echo "$ac_cv_lib_tiff_TIFFOpen" >&6; } if test "x$ac_cv_lib_tiff_TIFFOpen" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFClientOpen in -ltiff" >&5 $as_echo_n "checking for TIFFClientOpen in -ltiff... " >&6; } if ${ac_cv_lib_tiff_TIFFClientOpen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltiff $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char TIFFClientOpen (); int main () { return TIFFClientOpen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tiff_TIFFClientOpen=yes else ac_cv_lib_tiff_TIFFClientOpen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFClientOpen" >&5 $as_echo "$ac_cv_lib_tiff_TIFFClientOpen" >&6; } if test "x$ac_cv_lib_tiff_TIFFClientOpen" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFIsByteSwapped in -ltiff" >&5 $as_echo_n "checking for TIFFIsByteSwapped in -ltiff... " >&6; } if ${ac_cv_lib_tiff_TIFFIsByteSwapped+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltiff $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char TIFFIsByteSwapped (); int main () { return TIFFIsByteSwapped (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_tiff_TIFFIsByteSwapped=yes else ac_cv_lib_tiff_TIFFIsByteSwapped=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFIsByteSwapped" >&5 $as_echo "$ac_cv_lib_tiff_TIFFIsByteSwapped" >&6; } if test "x$ac_cv_lib_tiff_TIFFIsByteSwapped" = xyes; then : passed=`expr $passed + 1` else failed=`expr $failed + 1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if TIFF package is complete" >&5 $as_echo_n "checking if TIFF package is complete... " >&6; } if test $passed -gt 0 then if test $failed -gt 0 then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5 $as_echo "no -- some components failed test" >&6; } have_tiff='no (failed tests)' else LIB_TIFF='-ltiff' LIBS="$LIB_TIFF $LIBS" $as_echo "#define HasTIFF 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_tiff='yes' for ac_header in tiffconf.h do : ac_fn_c_check_header_mongrel "$LINENO" "tiffconf.h" "ac_cv_header_tiffconf_h" "$ac_includes_default" if test "x$ac_cv_header_tiffconf_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_TIFFCONF_H 1 _ACEOF fi done fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "$have_tiff" = 'yes'; then HasTIFF_TRUE= HasTIFF_FALSE='#' else HasTIFF_TRUE='#' HasTIFF_FALSE= fi # Libraries that the LCMS library depends on LCMS_LIB_DEPLIBS="$LIB_MATH" LCMS_LIB_DEPLIBS=`echo $LCMS_LIB_DEPLIBS | sed -e 's/ */ /g'` # Libraries that the jpegicc program depends on JPEGICC_DEPLIBS="$LIB_JPEG $LIB_MATH" JPEGICC_DEPLIBS=`echo $JPEGICC_DEPLIBS | sed -e 's/ */ /g'` # Libraries that the tifficc program depends on TIFFICC_DEPLIBS="$LIB_TIFF $LIB_JPEG $LIB_ZLIB $LIB_MATH" TIFFICC_DEPLIBS=`echo $TIFFICC_DEPLIBS | sed -e 's/ */ /g'` LIBS='' # # Perform substitutions # ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files lcms2.pc" ac_config_files="$ac_config_files include/Makefile" ac_config_files="$ac_config_files src/Makefile" ac_config_files="$ac_config_files utils/tificc/Makefile" ac_config_files="$ac_config_files utils/transicc/Makefile" ac_config_files="$ac_config_files utils/linkicc/Makefile" ac_config_files="$ac_config_files utils/jpgicc/Makefile" ac_config_files="$ac_config_files utils/psicc/Makefile" ac_config_files="$ac_config_files testbed/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HasJPEG_TRUE}" && test -z "${HasJPEG_FALSE}"; then as_fn_error $? "conditional \"HasJPEG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HasZLIB_TRUE}" && test -z "${HasZLIB_FALSE}"; then as_fn_error $? "conditional \"HasZLIB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HasTIFF_TRUE}" && test -z "${HasTIFF_FALSE}"; then as_fn_error $? "conditional \"HasTIFF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by lcms2 $as_me 2.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ lcms2 config.status 2.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "lcms2.pc") CONFIG_FILES="$CONFIG_FILES lcms2.pc" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "utils/tificc/Makefile") CONFIG_FILES="$CONFIG_FILES utils/tificc/Makefile" ;; "utils/transicc/Makefile") CONFIG_FILES="$CONFIG_FILES utils/transicc/Makefile" ;; "utils/linkicc/Makefile") CONFIG_FILES="$CONFIG_FILES utils/linkicc/Makefile" ;; "utils/jpgicc/Makefile") CONFIG_FILES="$CONFIG_FILES utils/jpgicc/Makefile" ;; "utils/psicc/Makefile") CONFIG_FILES="$CONFIG_FILES utils/psicc/Makefile" ;; "testbed/Makefile") CONFIG_FILES="$CONFIG_FILES testbed/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010 Free Software Foundation, # Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi lcms2-2.5/Projects/0000755002406300000240000000000012163061353013516 5ustar mariamauserslcms2-2.5/Projects/VC2008/0000755002406300000240000000000012163061353014340 5ustar mariamauserslcms2-2.5/Projects/VC2008/lcms2_static/0000755002406300000240000000000012163061353016727 5ustar mariamauserslcms2-2.5/Projects/VC2008/lcms2_static/lcms2_static.vcproj0000644002406300000240000001271512163060730022547 0ustar mariamausers lcms2-2.5/Projects/VC2008/lcms2_DLL/0000755002406300000240000000000012163061353016053 5ustar mariamauserslcms2-2.5/Projects/VC2008/lcms2_DLL/lcms2_DLL.vcproj0000644002406300000240000001516112163060730021015 0ustar mariamausers lcms2-2.5/Projects/VC2008/tifficc/0000755002406300000240000000000012163061353015747 5ustar mariamauserslcms2-2.5/Projects/VC2008/tifficc/tifficc.vcproj0000644002406300000240000001032012163060730020575 0ustar mariamausers lcms2-2.5/Projects/VC2008/psicc/0000755002406300000240000000000012163061353015441 5ustar mariamauserslcms2-2.5/Projects/VC2008/psicc/psicc.vcproj0000644002406300000240000001005512163060730017766 0ustar mariamausers lcms2-2.5/Projects/VC2008/tiffdiff/0000755002406300000240000000000012163061353016121 5ustar mariamauserslcms2-2.5/Projects/VC2008/tiffdiff/tiffdiff.vcproj0000644002406300000240000001021212163060730021121 0ustar mariamausers lcms2-2.5/Projects/VC2008/lcms2.rc0000644002406300000240000000507612163060730015714 0ustar mariamausers//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #define APSTUDIO_HIDDEN_SYMBOLS #include "windows.h" #undef APSTUDIO_HIDDEN_SYMBOLS ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Spanish (Modern) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) #ifdef _WIN32 LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN #pragma code_page(1252) #endif //_WIN32 #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version // 1 VERSIONINFO FILEVERSION 2,3,0,0 PRODUCTVERSION 2,3,0,0 FILEFLAGSMASK 0x0L #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" BEGIN VALUE "Comments", "\0" VALUE "CompanyName", "Marti Maria\0" VALUE "FileDescription", "lcms color engine\0" VALUE "FileVersion", "2.3\0" VALUE "InternalName", "lcms\0" VALUE "LegalCopyright", "Copyright () Marti Maria 2011\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "lcms2.dll\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "LittleCMS color engine\0" VALUE "ProductVersion", "2, 0, 3, 0\0" VALUE "SpecialBuild", "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #endif // !_MAC #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // Spanish (Modern) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED lcms2-2.5/Projects/VC2008/jpegicc/0000755002406300000240000000000012163061353015744 5ustar mariamauserslcms2-2.5/Projects/VC2008/jpegicc/jpegicc.vcproj0000644002406300000240000001032512163060730020574 0ustar mariamausers lcms2-2.5/Projects/VC2008/linkicc/0000755002406300000240000000000012163061353015754 5ustar mariamauserslcms2-2.5/Projects/VC2008/linkicc/linkicc.vcproj0000644002406300000240000001007112163060730020612 0ustar mariamausers lcms2-2.5/Projects/VC2008/transicc/0000755002406300000240000000000012163061353016146 5ustar mariamauserslcms2-2.5/Projects/VC2008/transicc/transicc.vcproj0000644002406300000240000001021212163060730021173 0ustar mariamausers lcms2-2.5/Projects/VC2008/lcms2.sln0000755002406300000240000003364212163060730016107 0ustar mariamausers Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testbed", "testbed\testbed.vcproj", "{928A3A2B-46EF-4279-959C-513B3652FF0E}" ProjectSection(ProjectDependencies) = postProject {71DEDE59-3F1E-486B-A899-4283000F76B5} = {71DEDE59-3F1E-486B-A899-4283000F76B5} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tifficc", "tifficc\tifficc.vcproj", "{2256DE16-ED92-4A6F-9C54-F65BB61E64A2}" ProjectSection(ProjectDependencies) = postProject {71DEDE59-3F1E-486B-A899-4283000F76B5} = {71DEDE59-3F1E-486B-A899-4283000F76B5} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lcms2_DLL", "lcms2_DLL\lcms2_DLL.vcproj", "{8C51BE48-ADB8-4089-A9EC-F6BF993A0548}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linkicc", "linkicc\linkicc.vcproj", "{FBFBE1DC-DB84-4BA1-9552-B4780F457849}" ProjectSection(ProjectDependencies) = postProject {71DEDE59-3F1E-486B-A899-4283000F76B5} = {71DEDE59-3F1E-486B-A899-4283000F76B5} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transicc", "transicc\transicc.vcproj", "{9EE22D66-C849-474C-9ED5-C3E141DAB160}" ProjectSection(ProjectDependencies) = postProject {71DEDE59-3F1E-486B-A899-4283000F76B5} = {71DEDE59-3F1E-486B-A899-4283000F76B5} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpegicc", "jpegicc\jpegicc.vcproj", "{62812507-F926-4968-96A9-17678460AD90}" ProjectSection(ProjectDependencies) = postProject {71DEDE59-3F1E-486B-A899-4283000F76B5} = {71DEDE59-3F1E-486B-A899-4283000F76B5} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiffdiff", "tiffdiff\tiffdiff.vcproj", "{75B91835-CCD7-48BE-A606-A9C997D5DBEE}" ProjectSection(ProjectDependencies) = postProject {71DEDE59-3F1E-486B-A899-4283000F76B5} = {71DEDE59-3F1E-486B-A899-4283000F76B5} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lcms2_static", "lcms2_static\lcms2_static.vcproj", "{71DEDE59-3F1E-486B-A899-4283000F76B5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "psicc", "psicc\psicc.vcproj", "{EF6A8851-65FE-46F5-B9EF-14F0B671F693}" ProjectSection(ProjectDependencies) = postProject {71DEDE59-3F1E-486B-A899-4283000F76B5} = {71DEDE59-3F1E-486B-A899-4283000F76B5} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|Win32.ActiveCfg = Debug|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|Win32.Build.0 = Debug|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|x64.ActiveCfg = Debug|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|Win32.ActiveCfg = Release|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|Win32.Build.0 = Release|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|x64.ActiveCfg = Release|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|Win32.ActiveCfg = Debug|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|Win32.Build.0 = Debug|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|x64.ActiveCfg = Debug|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|Win32.ActiveCfg = Release|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|Win32.Build.0 = Release|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|x64.ActiveCfg = Release|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|Win32.ActiveCfg = Debug|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|Win32.Build.0 = Debug|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|x64.ActiveCfg = Debug|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|Win32.ActiveCfg = Release|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|Win32.Build.0 = Release|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|x64.ActiveCfg = Release|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|Win32.ActiveCfg = Debug|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|Win32.Build.0 = Debug|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|x64.ActiveCfg = Debug|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|Win32.ActiveCfg = Release|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|Win32.Build.0 = Release|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|x64.ActiveCfg = Release|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|Win32.ActiveCfg = Debug|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|Win32.Build.0 = Debug|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|x64.ActiveCfg = Debug|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|Win32.ActiveCfg = Release|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|Win32.Build.0 = Release|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|x64.ActiveCfg = Release|Win32 {62812507-F926-4968-96A9-17678460AD90}.Debug|Win32.ActiveCfg = Debug|Win32 {62812507-F926-4968-96A9-17678460AD90}.Debug|Win32.Build.0 = Debug|Win32 {62812507-F926-4968-96A9-17678460AD90}.Debug|x64.ActiveCfg = Debug|Win32 {62812507-F926-4968-96A9-17678460AD90}.Release|Win32.ActiveCfg = Release|Win32 {62812507-F926-4968-96A9-17678460AD90}.Release|Win32.Build.0 = Release|Win32 {62812507-F926-4968-96A9-17678460AD90}.Release|x64.ActiveCfg = Release|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|Win32.ActiveCfg = Debug|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|Win32.Build.0 = Debug|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|x64.ActiveCfg = Debug|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|Win32.ActiveCfg = Release|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|Win32.Build.0 = Release|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|x64.ActiveCfg = Release|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|Win32.ActiveCfg = Debug|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|Win32.Build.0 = Debug|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|x64.ActiveCfg = Debug|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|Win32.ActiveCfg = Release|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|Win32.Build.0 = Release|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|x64.ActiveCfg = Release|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|Win32.ActiveCfg = Debug|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|Win32.Build.0 = Debug|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|x64.ActiveCfg = Debug|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|Win32.ActiveCfg = Release|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|Win32.Build.0 = Release|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal lcms2-2.5/Projects/VC2008/resource.h0000644002406300000240000000066312163060730016343 0ustar mariamausers//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by lcms.rc // // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif lcms2-2.5/Projects/VC2008/testbed/0000755002406300000240000000000012163061353015772 5ustar mariamauserslcms2-2.5/Projects/VC2008/testbed/testbed.vcproj0000644002406300000240000001003312163060730020644 0ustar mariamausers lcms2-2.5/Projects/VC2010/0000755002406300000240000000000012163061353014331 5ustar mariamauserslcms2-2.5/Projects/VC2010/lcms2_static/0000755002406300000240000000000012163061353016720 5ustar mariamauserslcms2-2.5/Projects/VC2010/lcms2_static/lcms2_static.vcproj0000644002406300000240000001216012163060730022532 0ustar mariamausers lcms2-2.5/Projects/VC2010/lcms2_static/lcms2_static.vcxproj0000644002406300000240000002545312163060730022733 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {71DEDE59-3F1E-486B-A899-4283000F76B5} lcms2_static Win32Proj StaticLibrary Unicode true StaticLibrary Unicode true StaticLibrary Unicode StaticLibrary Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\Lib\MS\ ..\..\..\Lib\MS\ $(Configuration)\ $(Configuration)\ ..\..\..\Lib\MS\ ..\..\..\Lib\MS\ $(Configuration)\ $(Configuration)\ AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 EditAndContinue true Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true Full true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase Speed true true OnlyExplicitInline false true Full true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase Speed true true OnlyExplicitInline false true lcms2-2.5/Projects/VC2010/lcms2_static/lcms2_static.vcxproj.filters0000644002406300000240000000737612163060730024406 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Source Files lcms2-2.5/Projects/VC2010/lcms2_DLL/0000755002406300000240000000000012163061353016044 5ustar mariamauserslcms2-2.5/Projects/VC2010/lcms2_DLL/lcms2_DLL.vcproj0000644002406300000240000001434312163060730021007 0ustar mariamausers lcms2-2.5/Projects/VC2010/lcms2_DLL/lcms2_DLL.vcxproj.filters0000644002406300000240000001016712163060730022646 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Source Files Resource Files Resource Files Source Files lcms2-2.5/Projects/VC2010/lcms2_DLL/lcms2_DLL.vcxproj0000644002406300000240000003234712163060730021203 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548} lcms2_DLL Win32Proj DynamicLibrary Unicode true DynamicLibrary Unicode true DynamicLibrary Unicode DynamicLibrary Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset lcms2 lcms2 lcms2 lcms2 Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true ..\..\..\src\lcms2.def true Windows MachineX86 $(OutDir)$(TargetName)$(TargetExt) Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true true Windows $(OutDir)$(TargetName)$(TargetExt) Full true Speed true true true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase true OnlyExplicitInline true ..\..\..\src\lcms2.def true Windows true true MachineX86 $(OutDir)$(TargetName)$(TargetExt) Full true Speed true true true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase true OnlyExplicitInline true true Windows true true $(OutDir)$(TargetName)$(TargetExt) lcms2-2.5/Projects/VC2010/tifficc/0000755002406300000240000000000012163061353015740 5ustar mariamauserslcms2-2.5/Projects/VC2010/tifficc/tifficc.vcproj0000644002406300000240000001032612163060730020574 0ustar mariamausers lcms2-2.5/Projects/VC2010/tifficc/tifficc.vcxproj0000644002406300000240000002737312163060730020776 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2} tifficc Win32Proj Application Unicode true Application Unicode true Application Unicode Application Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset $(IncludePath);;C:\tiff-4.0.2\libtiff $(IncludePath);;C:\tiff-4.0.2\libtiff $(LibraryPath);;C:\tiff-4.0.2\libtiff $(LibraryPath);;C:\tiff-4.0.2\libtiff $(IncludePath);;C:\tiff-4.0.2\libtiff $(IncludePath);;C:\tiff-4.0.2\libtiff $(LibraryPath);;C:\tiff-4.0.2\libtiff $(LibraryPath);;C:\tiff-4.0.2\libtiff Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true libtiff.lib;%(AdditionalDependencies) true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console true true MachineX86 MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2010/tifficc/tifficc.vcxproj.filters0000644002406300000240000000242212163060730022431 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Header Files lcms2-2.5/Projects/VC2010/psicc/0000755002406300000240000000000012163061353015432 5ustar mariamauserslcms2-2.5/Projects/VC2010/psicc/psicc.vcxproj.filters0000644002406300000240000000220612163060730021615 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files lcms2-2.5/Projects/VC2010/psicc/psicc.vcxproj0000644002406300000240000002443512163060730020156 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693} psicc Win32Proj Application Unicode true Application Unicode true Application Unicode Application Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDLL Level4 EditAndContinue true true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true Console true true MachineX86 MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2010/psicc/psicc.vcproj0000644002406300000240000001005512163060730017757 0ustar mariamausers lcms2-2.5/Projects/VC2010/tiffdiff/0000755002406300000240000000000012163061353016112 5ustar mariamauserslcms2-2.5/Projects/VC2010/tiffdiff/tiffdiff.vcxproj0000644002406300000240000002756612163060730021326 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE} tiffdiff Win32Proj Application Unicode true Application Unicode true Application Unicode Application Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 EditAndContinue true libtiff.lib;%(AdditionalDependencies) true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console true true MachineX86 $(OutDir)$(TargetName)$(TargetExt) MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console true true $(OutDir)$(TargetName)$(TargetExt) {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2010/tiffdiff/tiffdiff.vcxproj.filters0000644002406300000240000000221112163060730022751 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files lcms2-2.5/Projects/VC2010/tiffdiff/tiffdiff.vcproj0000644002406300000240000001022012163060730021111 0ustar mariamausers lcms2-2.5/Projects/VC2010/lcms2.rc0000644002406300000240000000452012163060730015676 0ustar mariamausers// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #define APSTUDIO_HIDDEN_SYMBOLS #include "windows.h" #undef APSTUDIO_HIDDEN_SYMBOLS ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Spanish (Spain, International Sort) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN #pragma code_page(1252) ///////////////////////////////////////////////////////////////////////////// // // Version // 1 VERSIONINFO FILEVERSION 2,5,0,0 PRODUCTVERSION 2,5,0,0 FILEFLAGSMASK 0x0L #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "Marti Maria" VALUE "FileDescription", "lcms color engine" VALUE "FileVersion", "2.5.0.0" VALUE "InternalName", "lcms" VALUE "LegalCopyright", "Copyright Marti Maria 2013" VALUE "OriginalFilename", "lcms2.dll" VALUE "ProductName", "LittleCMS color engine" VALUE "ProductVersion", "2.5.0.0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // Spanish (Spain, International Sort) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED lcms2-2.5/Projects/VC2010/jpegicc/0000755002406300000240000000000012163061353015735 5ustar mariamauserslcms2-2.5/Projects/VC2010/jpegicc/jpegicc.vcxproj.filters0000644002406300000240000000236712163060730022433 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files lcms2-2.5/Projects/VC2010/jpegicc/jpegicc.vcproj0000644002406300000240000001033412163060730020565 0ustar mariamausers lcms2-2.5/Projects/VC2010/jpegicc/jpegicc.vcxproj0000644002406300000240000002772712163060730020773 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {62812507-F926-4968-96A9-17678460AD90} jpegicc Win32Proj Application Unicode true Application Unicode true Application Unicode Application Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset $(IncludePath);;C:\jpeg-8d $(IncludePath);;C:\jpeg-8d $(LibraryPath);C:\jpeg-8d\ $(LibraryPath);;C:\jpeg-8d $(IncludePath);;C:\jpeg-8d $(IncludePath);;C:\jpeg-8d $(LibraryPath);C:\jpeg-8d\ $(LibraryPath);;C:\jpeg-8d Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 EditAndContinue true libjpeg.lib;%(AdditionalDependencies) true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 ProgramDatabase true libjpeg.lib;%(AdditionalDependencies) true Console Full true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase Speed true true true libjpeg.lib;%(AdditionalDependencies) true Console true true MachineX86 Full true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreaded true Level3 ProgramDatabase Speed true true true libjpeg.lib;%(AdditionalDependencies) true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2010/linkicc/0000755002406300000240000000000012163061353015745 5ustar mariamauserslcms2-2.5/Projects/VC2010/linkicc/linkicc.vcproj0000644002406300000240000001007112163060730020603 0ustar mariamausers lcms2-2.5/Projects/VC2010/linkicc/linkicc.vcxproj.filters0000644002406300000240000000221212163060730022440 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files lcms2-2.5/Projects/VC2010/linkicc/linkicc.vcxproj0000644002406300000240000002444312163060730021003 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849} linkicc Win32Proj Application Unicode true Application Unicode true Application Unicode Application Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDLL Level4 EditAndContinue true true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true Console true true MachineX86 MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2010/transicc/0000755002406300000240000000000012163061353016137 5ustar mariamauserslcms2-2.5/Projects/VC2010/transicc/transicc.vcxproj0000644002406300000240000002460512163060730021367 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160} transicc Win32Proj Application Unicode true Application Unicode true Application Unicode Application Unicode <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 EditAndContinue true true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 ProgramDatabase true true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true Console true true MachineX86 MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase true true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2010/transicc/transicc.vcproj0000644002406300000240000001021212163060730021164 0ustar mariamausers lcms2-2.5/Projects/VC2010/transicc/transicc.vcxproj.filters0000644002406300000240000000242612163060730023033 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Header Files lcms2-2.5/Projects/VC2010/lcms2.sln0000755002406300000240000003453212163060730016077 0ustar mariamausers Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testbed", "testbed\testbed.vcxproj", "{928A3A2B-46EF-4279-959C-513B3652FF0E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tifficc", "tifficc\tifficc.vcxproj", "{2256DE16-ED92-4A6F-9C54-F65BB61E64A2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lcms2_DLL", "lcms2_DLL\lcms2_DLL.vcxproj", "{8C51BE48-ADB8-4089-A9EC-F6BF993A0548}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linkicc", "linkicc\linkicc.vcxproj", "{FBFBE1DC-DB84-4BA1-9552-B4780F457849}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transicc", "transicc\transicc.vcxproj", "{9EE22D66-C849-474C-9ED5-C3E141DAB160}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpegicc", "jpegicc\jpegicc.vcxproj", "{62812507-F926-4968-96A9-17678460AD90}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiffdiff", "tiffdiff\tiffdiff.vcxproj", "{75B91835-CCD7-48BE-A606-A9C997D5DBEE}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lcms2_static", "lcms2_static\lcms2_static.vcxproj", "{71DEDE59-3F1E-486B-A899-4283000F76B5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "psicc", "psicc\psicc.vcxproj", "{EF6A8851-65FE-46F5-B9EF-14F0B671F693}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|Win32.ActiveCfg = Debug|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|Win32.Build.0 = Debug|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|x64.ActiveCfg = Debug|x64 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|x64.Build.0 = Debug|x64 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|Win32.ActiveCfg = Release|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|Win32.Build.0 = Release|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|x64.ActiveCfg = Release|x64 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|x64.Build.0 = Release|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|Win32.ActiveCfg = Debug|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|Win32.Build.0 = Debug|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|x64.ActiveCfg = Debug|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|x64.Build.0 = Debug|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|Win32.ActiveCfg = Release|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|Win32.Build.0 = Release|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|x64.ActiveCfg = Release|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|x64.Build.0 = Release|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|Win32.ActiveCfg = Debug|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|Win32.Build.0 = Debug|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|x64.ActiveCfg = Debug|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|x64.Build.0 = Debug|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|Win32.ActiveCfg = Release|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|Win32.Build.0 = Release|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|x64.ActiveCfg = Release|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|x64.Build.0 = Release|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|Win32.ActiveCfg = Debug|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|Win32.Build.0 = Debug|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|x64.ActiveCfg = Debug|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|x64.Build.0 = Debug|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|Win32.ActiveCfg = Release|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|Win32.Build.0 = Release|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|x64.ActiveCfg = Release|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|x64.Build.0 = Release|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|Win32.ActiveCfg = Debug|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|Win32.Build.0 = Debug|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|x64.ActiveCfg = Debug|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|x64.Build.0 = Debug|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|Win32.ActiveCfg = Release|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|Win32.Build.0 = Release|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|x64.ActiveCfg = Release|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|x64.Build.0 = Release|x64 {62812507-F926-4968-96A9-17678460AD90}.Debug|Win32.ActiveCfg = Debug|Win32 {62812507-F926-4968-96A9-17678460AD90}.Debug|Win32.Build.0 = Debug|Win32 {62812507-F926-4968-96A9-17678460AD90}.Debug|x64.ActiveCfg = Debug|x64 {62812507-F926-4968-96A9-17678460AD90}.Debug|x64.Build.0 = Debug|x64 {62812507-F926-4968-96A9-17678460AD90}.Release|Win32.ActiveCfg = Release|Win32 {62812507-F926-4968-96A9-17678460AD90}.Release|Win32.Build.0 = Release|Win32 {62812507-F926-4968-96A9-17678460AD90}.Release|x64.ActiveCfg = Release|x64 {62812507-F926-4968-96A9-17678460AD90}.Release|x64.Build.0 = Release|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|Win32.ActiveCfg = Debug|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|Win32.Build.0 = Debug|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|x64.ActiveCfg = Debug|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|x64.Build.0 = Debug|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|Win32.ActiveCfg = Release|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|Win32.Build.0 = Release|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|x64.ActiveCfg = Release|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|x64.Build.0 = Release|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|Win32.ActiveCfg = Debug|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|Win32.Build.0 = Debug|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|x64.ActiveCfg = Debug|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|x64.Build.0 = Debug|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|Win32.ActiveCfg = Release|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|Win32.Build.0 = Release|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|x64.ActiveCfg = Release|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|x64.Build.0 = Release|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|Win32.ActiveCfg = Debug|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|Win32.Build.0 = Debug|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|x64.ActiveCfg = Debug|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|x64.Build.0 = Debug|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|Win32.ActiveCfg = Release|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|Win32.Build.0 = Release|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|x64.ActiveCfg = Release|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal lcms2-2.5/Projects/VC2010/resource.h0000644002406300000240000000065612163060730016336 0ustar mariamausers//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by lcms2.rc // // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif lcms2-2.5/Projects/VC2010/testbed/0000755002406300000240000000000012163061353015763 5ustar mariamauserslcms2-2.5/Projects/VC2010/testbed/testbed.vcxproj0000644002406300000240000002572712163060730021045 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {928A3A2B-46EF-4279-959C-513B3652FF0E} testbed Win32Proj Application Unicode true Application Unicode true Application Unicode Application Unicode <_ProjectFileVersion>10.0.21006.1 $(Configuration)\ $(Configuration)\ true true ..\..\..\testbed\ ..\..\..\testbed\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset ..\..\..\testbed\ ..\..\..\testbed\ Disabled ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true true Console MachineX86 false Disabled ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level3 ProgramDatabase true true Console false Full true Speed true true ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL false true NotSet Level3 ProgramDatabase Cdecl true true Console true true MachineX86 false Full true Speed true true ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreaded false true NotSet Level3 ProgramDatabase Cdecl true true Console true true false {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2010/testbed/testbed.vcxproj.filters0000644002406300000240000000165212163060730022503 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files lcms2-2.5/Projects/VC2010/testbed/testbed.vcproj0000644002406300000240000001003312163060730020635 0ustar mariamausers lcms2-2.5/Projects/.gitignore0000644002406300000240000000006112163060730015501 0ustar mariamausers**.opensdf **.sdf **.suo **.user Debug/ Release/ lcms2-2.5/Projects/mac/0000755002406300000240000000000012163061353014256 5ustar mariamauserslcms2-2.5/Projects/mac/._.DS_Store0000755002406300000240000000000012163060730016145 0ustar mariamauserslcms2-2.5/Projects/mac/.DS_Store0000755002406300000240000001400412163060730015741 0ustar mariamausersBud1leCMSfw LittleCMSfwi0blob*icnv LittleCMSfwvhshorY  @ @ @ @ EDSDB ` @ @ @lcms2-2.5/Projects/mac/LittleCMS/0000755002406300000240000000000012163061353016056 5ustar mariamauserslcms2-2.5/Projects/mac/LittleCMS/._.DS_Store0000755002406300000240000000000012163060730017745 0ustar mariamauserslcms2-2.5/Projects/mac/LittleCMS/English.lproj/0000755002406300000240000000000012163061353020574 5ustar mariamauserslcms2-2.5/Projects/mac/LittleCMS/English.lproj/InfoPlist.strings0000755002406300000240000000022412163060730024115 0ustar mariamausers/* Localized versions of Info.plist keys */ CFBundleName = "LittleCMS"; lcms2-2.5/Projects/mac/LittleCMS/TestBed-Info.plist0000644002406300000240000000123712163060730021357 0ustar mariamausers CFBundleDevelopmentRegion English CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier com.yourcompany.TestBed CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType BNDL CFBundleSignature ???? CFBundleVersion 1.0 CSResourcesFileMapped yes lcms2-2.5/Projects/mac/LittleCMS/Info.plist0000644002406300000240000000140112163060730020020 0ustar mariamausers CFBundleDevelopmentRegion English CFBundleExecutable LittleCMS CFBundleIconFile CFBundleIdentifier com.apple.carbonframeworktemplate CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType FMWK CFBundleShortVersionString 1.01 CFBundleSignature lcms CFBundleVersion 2.4 CSResourcesFileMapped lcms2-2.5/Projects/mac/LittleCMS/LittleCMS.xcodeproj/0000755002406300000240000000000012163061353021652 5ustar mariamauserslcms2-2.5/Projects/mac/LittleCMS/LittleCMS.xcodeproj/project.pbxproj0000644002406300000240000006202312163060730024727 0ustar mariamausers// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 44; objects = { /* Begin PBXBuildFile section */ 546B294910AC5E4A0054D33A /* cmscam02.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293110AC5E4A0054D33A /* cmscam02.c */; }; 546B294A10AC5E4A0054D33A /* cmscgats.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293210AC5E4A0054D33A /* cmscgats.c */; }; 546B294B10AC5E4A0054D33A /* cmscnvrt.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293310AC5E4A0054D33A /* cmscnvrt.c */; }; 546B294C10AC5E4A0054D33A /* cmserr.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293410AC5E4A0054D33A /* cmserr.c */; }; 546B294D10AC5E4A0054D33A /* cmsgamma.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293510AC5E4A0054D33A /* cmsgamma.c */; }; 546B294E10AC5E4A0054D33A /* cmsgmt.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293610AC5E4A0054D33A /* cmsgmt.c */; }; 546B294F10AC5E4A0054D33A /* cmsintrp.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293710AC5E4A0054D33A /* cmsintrp.c */; }; 546B295010AC5E4A0054D33A /* cmsio0.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293810AC5E4A0054D33A /* cmsio0.c */; }; 546B295110AC5E4A0054D33A /* cmsio1.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293910AC5E4A0054D33A /* cmsio1.c */; }; 546B295210AC5E4A0054D33A /* cmslut.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293A10AC5E4A0054D33A /* cmslut.c */; }; 546B295310AC5E4A0054D33A /* cmsmd5.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293B10AC5E4A0054D33A /* cmsmd5.c */; }; 546B295410AC5E4A0054D33A /* cmsmtrx.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293C10AC5E4A0054D33A /* cmsmtrx.c */; }; 546B295510AC5E4A0054D33A /* cmsnamed.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293D10AC5E4A0054D33A /* cmsnamed.c */; }; 546B295610AC5E4A0054D33A /* cmsopt.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293E10AC5E4A0054D33A /* cmsopt.c */; }; 546B295710AC5E4A0054D33A /* cmspack.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B293F10AC5E4A0054D33A /* cmspack.c */; }; 546B295810AC5E4A0054D33A /* cmspcs.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294010AC5E4A0054D33A /* cmspcs.c */; }; 546B295910AC5E4A0054D33A /* cmsplugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294110AC5E4A0054D33A /* cmsplugin.c */; }; 546B295A10AC5E4A0054D33A /* cmsps2.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294210AC5E4A0054D33A /* cmsps2.c */; }; 546B295B10AC5E4A0054D33A /* cmssamp.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294310AC5E4A0054D33A /* cmssamp.c */; }; 546B295C10AC5E4A0054D33A /* cmssm.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294410AC5E4A0054D33A /* cmssm.c */; }; 546B295D10AC5E4A0054D33A /* cmstypes.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294510AC5E4A0054D33A /* cmstypes.c */; }; 546B295E10AC5E4A0054D33A /* cmsvirt.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294610AC5E4A0054D33A /* cmsvirt.c */; }; 546B295F10AC5E4A0054D33A /* cmswtpnt.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294710AC5E4A0054D33A /* cmswtpnt.c */; }; 546B296010AC5E4A0054D33A /* cmsxform.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B294810AC5E4A0054D33A /* cmsxform.c */; }; 546B296310AC5E600054D33A /* lcms2.h in Headers */ = {isa = PBXBuildFile; fileRef = 546B296110AC5E600054D33A /* lcms2.h */; settings = {ATTRIBUTES = (Public, ); }; }; 546B296410AC5E600054D33A /* lcms2_plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 546B296210AC5E600054D33A /* lcms2_plugin.h */; settings = {ATTRIBUTES = (Public, ); }; }; 546B29AE10AC68410054D33A /* testcms2.c in Sources */ = {isa = PBXBuildFile; fileRef = 546B29AD10AC68410054D33A /* testcms2.c */; }; 54DBD06115A202B200180017 /* cmshalf.c in Sources */ = {isa = PBXBuildFile; fileRef = 54DBD06015A202B200180017 /* cmshalf.c */; }; 54DBD06215A202BB00180017 /* cmshalf.c in Sources */ = {isa = PBXBuildFile; fileRef = 54DBD06015A202B200180017 /* cmshalf.c */; }; 8D07F2BE0486CC7A007CD1D0 /* LittleCMS_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 32BAE0B70371A74B00C91783 /* LittleCMS_Prefix.pch */; settings = {ATTRIBUTES = (Private, ); }; }; 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; 8D07F2C40486CC7A007CD1D0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB77AAFE841565C02AAC07 /* Carbon.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 546B29A710AC67870054D33A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; proxyType = 1; remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; remoteInfo = LittleCMS; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 08FB77AAFE841565C02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; 32BAE0B70371A74B00C91783 /* LittleCMS_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LittleCMS_Prefix.pch; sourceTree = ""; }; 546B293110AC5E4A0054D33A /* cmscam02.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmscam02.c; path = ../../../src/cmscam02.c; sourceTree = SOURCE_ROOT; }; 546B293210AC5E4A0054D33A /* cmscgats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmscgats.c; path = ../../../src/cmscgats.c; sourceTree = SOURCE_ROOT; }; 546B293310AC5E4A0054D33A /* cmscnvrt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmscnvrt.c; path = ../../../src/cmscnvrt.c; sourceTree = SOURCE_ROOT; }; 546B293410AC5E4A0054D33A /* cmserr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmserr.c; path = ../../../src/cmserr.c; sourceTree = SOURCE_ROOT; }; 546B293510AC5E4A0054D33A /* cmsgamma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsgamma.c; path = ../../../src/cmsgamma.c; sourceTree = SOURCE_ROOT; }; 546B293610AC5E4A0054D33A /* cmsgmt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsgmt.c; path = ../../../src/cmsgmt.c; sourceTree = SOURCE_ROOT; }; 546B293710AC5E4A0054D33A /* cmsintrp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsintrp.c; path = ../../../src/cmsintrp.c; sourceTree = SOURCE_ROOT; }; 546B293810AC5E4A0054D33A /* cmsio0.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsio0.c; path = ../../../src/cmsio0.c; sourceTree = SOURCE_ROOT; }; 546B293910AC5E4A0054D33A /* cmsio1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsio1.c; path = ../../../src/cmsio1.c; sourceTree = SOURCE_ROOT; }; 546B293A10AC5E4A0054D33A /* cmslut.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmslut.c; path = ../../../src/cmslut.c; sourceTree = SOURCE_ROOT; }; 546B293B10AC5E4A0054D33A /* cmsmd5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsmd5.c; path = ../../../src/cmsmd5.c; sourceTree = SOURCE_ROOT; }; 546B293C10AC5E4A0054D33A /* cmsmtrx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsmtrx.c; path = ../../../src/cmsmtrx.c; sourceTree = SOURCE_ROOT; }; 546B293D10AC5E4A0054D33A /* cmsnamed.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsnamed.c; path = ../../../src/cmsnamed.c; sourceTree = SOURCE_ROOT; }; 546B293E10AC5E4A0054D33A /* cmsopt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsopt.c; path = ../../../src/cmsopt.c; sourceTree = SOURCE_ROOT; }; 546B293F10AC5E4A0054D33A /* cmspack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmspack.c; path = ../../../src/cmspack.c; sourceTree = SOURCE_ROOT; }; 546B294010AC5E4A0054D33A /* cmspcs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmspcs.c; path = ../../../src/cmspcs.c; sourceTree = SOURCE_ROOT; }; 546B294110AC5E4A0054D33A /* cmsplugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsplugin.c; path = ../../../src/cmsplugin.c; sourceTree = SOURCE_ROOT; }; 546B294210AC5E4A0054D33A /* cmsps2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsps2.c; path = ../../../src/cmsps2.c; sourceTree = SOURCE_ROOT; }; 546B294310AC5E4A0054D33A /* cmssamp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmssamp.c; path = ../../../src/cmssamp.c; sourceTree = SOURCE_ROOT; }; 546B294410AC5E4A0054D33A /* cmssm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmssm.c; path = ../../../src/cmssm.c; sourceTree = SOURCE_ROOT; }; 546B294510AC5E4A0054D33A /* cmstypes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmstypes.c; path = ../../../src/cmstypes.c; sourceTree = SOURCE_ROOT; }; 546B294610AC5E4A0054D33A /* cmsvirt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsvirt.c; path = ../../../src/cmsvirt.c; sourceTree = SOURCE_ROOT; }; 546B294710AC5E4A0054D33A /* cmswtpnt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmswtpnt.c; path = ../../../src/cmswtpnt.c; sourceTree = SOURCE_ROOT; }; 546B294810AC5E4A0054D33A /* cmsxform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmsxform.c; path = ../../../src/cmsxform.c; sourceTree = SOURCE_ROOT; }; 546B296110AC5E600054D33A /* lcms2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lcms2.h; path = ../../../include/lcms2.h; sourceTree = SOURCE_ROOT; }; 546B296210AC5E600054D33A /* lcms2_plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lcms2_plugin.h; path = ../../../include/lcms2_plugin.h; sourceTree = SOURCE_ROOT; }; 546B296B10AC5EAA0054D33A /* TestBed-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TestBed-Info.plist"; sourceTree = ""; }; 546B29A310AC677E0054D33A /* testbed */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testbed; sourceTree = BUILT_PRODUCTS_DIR; }; 546B29AC10AC682F0054D33A /* lcms2_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lcms2_internal.h; path = ../../../src/lcms2_internal.h; sourceTree = SOURCE_ROOT; }; 546B29AD10AC68410054D33A /* testcms2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testcms2.c; path = ../../../testbed/testcms2.c; sourceTree = SOURCE_ROOT; }; 54DBD06015A202B200180017 /* cmshalf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cmshalf.c; path = ../../../src/cmshalf.c; sourceTree = ""; }; 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; 8D07F2C80486CC7A007CD1D0 /* LittleCMS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LittleCMS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 546B29A110AC677E0054D33A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 8D07F2C30486CC7A007CD1D0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8D07F2C40486CC7A007CD1D0 /* Carbon.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 034768DDFF38A45A11DB9C8B /* Products */ = { isa = PBXGroup; children = ( 8D07F2C80486CC7A007CD1D0 /* LittleCMS.framework */, 546B29A310AC677E0054D33A /* testbed */, ); name = Products; sourceTree = ""; }; 0867D691FE84028FC02AAC07 /* LittleCMS */ = { isa = PBXGroup; children = ( 08FB77ACFE841707C02AAC07 /* Source */, 089C1665FE841158C02AAC07 /* Resources */, 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, 034768DDFF38A45A11DB9C8B /* Products */, 546B296B10AC5EAA0054D33A /* TestBed-Info.plist */, ); name = LittleCMS; sourceTree = ""; }; 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { isa = PBXGroup; children = ( 08FB77AAFE841565C02AAC07 /* Carbon.framework */, ); name = "External Frameworks and Libraries"; sourceTree = ""; }; 089C1665FE841158C02AAC07 /* Resources */ = { isa = PBXGroup; children = ( 8D07F2C70486CC7A007CD1D0 /* Info.plist */, 089C1666FE841158C02AAC07 /* InfoPlist.strings */, ); name = Resources; sourceTree = ""; }; 08FB77ACFE841707C02AAC07 /* Source */ = { isa = PBXGroup; children = ( 54DBD06015A202B200180017 /* cmshalf.c */, 546B29AD10AC68410054D33A /* testcms2.c */, 546B29AC10AC682F0054D33A /* lcms2_internal.h */, 546B296110AC5E600054D33A /* lcms2.h */, 546B296210AC5E600054D33A /* lcms2_plugin.h */, 546B293110AC5E4A0054D33A /* cmscam02.c */, 546B293210AC5E4A0054D33A /* cmscgats.c */, 546B293310AC5E4A0054D33A /* cmscnvrt.c */, 546B293410AC5E4A0054D33A /* cmserr.c */, 546B293510AC5E4A0054D33A /* cmsgamma.c */, 546B293610AC5E4A0054D33A /* cmsgmt.c */, 546B293710AC5E4A0054D33A /* cmsintrp.c */, 546B293810AC5E4A0054D33A /* cmsio0.c */, 546B293910AC5E4A0054D33A /* cmsio1.c */, 546B293A10AC5E4A0054D33A /* cmslut.c */, 546B293B10AC5E4A0054D33A /* cmsmd5.c */, 546B293C10AC5E4A0054D33A /* cmsmtrx.c */, 546B293D10AC5E4A0054D33A /* cmsnamed.c */, 546B293E10AC5E4A0054D33A /* cmsopt.c */, 546B293F10AC5E4A0054D33A /* cmspack.c */, 546B294010AC5E4A0054D33A /* cmspcs.c */, 546B294110AC5E4A0054D33A /* cmsplugin.c */, 546B294210AC5E4A0054D33A /* cmsps2.c */, 546B294310AC5E4A0054D33A /* cmssamp.c */, 546B294410AC5E4A0054D33A /* cmssm.c */, 546B294510AC5E4A0054D33A /* cmstypes.c */, 546B294610AC5E4A0054D33A /* cmsvirt.c */, 546B294710AC5E4A0054D33A /* cmswtpnt.c */, 546B294810AC5E4A0054D33A /* cmsxform.c */, 32BAE0B70371A74B00C91783 /* LittleCMS_Prefix.pch */, ); name = Source; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 8D07F2BD0486CC7A007CD1D0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 8D07F2BE0486CC7A007CD1D0 /* LittleCMS_Prefix.pch in Headers */, 546B296310AC5E600054D33A /* lcms2.h in Headers */, 546B296410AC5E600054D33A /* lcms2_plugin.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 546B29A210AC677E0054D33A /* testbed */ = { isa = PBXNativeTarget; buildConfigurationList = 546B29AB10AC67C30054D33A /* Build configuration list for PBXNativeTarget "testbed" */; buildPhases = ( 546B29A010AC677E0054D33A /* Sources */, 546B29A110AC677E0054D33A /* Frameworks */, ); buildRules = ( ); dependencies = ( 546B29A810AC67870054D33A /* PBXTargetDependency */, ); name = testbed; productName = testbed; productReference = 546B29A310AC677E0054D33A /* testbed */; productType = "com.apple.product-type.tool"; }; 8D07F2BC0486CC7A007CD1D0 /* LittleCMS */ = { isa = PBXNativeTarget; buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "LittleCMS" */; buildPhases = ( 8D07F2BD0486CC7A007CD1D0 /* Headers */, 8D07F2BF0486CC7A007CD1D0 /* Resources */, 8D07F2C10486CC7A007CD1D0 /* Sources */, 8D07F2C30486CC7A007CD1D0 /* Frameworks */, 8D07F2C50486CC7A007CD1D0 /* Rez */, ); buildRules = ( ); dependencies = ( ); name = LittleCMS; productInstallPath = "$(HOME)/Library/Frameworks"; productName = LittleCMS; productReference = 8D07F2C80486CC7A007CD1D0 /* LittleCMS.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 0867D690FE84028FC02AAC07 /* Project object */ = { isa = PBXProject; buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "LittleCMS" */; compatibilityVersion = "Xcode 3.0"; hasScannedForEncodings = 1; mainGroup = 0867D691FE84028FC02AAC07 /* LittleCMS */; productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 8D07F2BC0486CC7A007CD1D0 /* LittleCMS */, 546B29A210AC677E0054D33A /* testbed */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8D07F2BF0486CC7A007CD1D0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D07F2C00486CC7A007CD1D0 /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXRezBuildPhase section */ 8D07F2C50486CC7A007CD1D0 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXRezBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 546B29A010AC677E0054D33A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 546B29AE10AC68410054D33A /* testcms2.c in Sources */, 54DBD06115A202B200180017 /* cmshalf.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 8D07F2C10486CC7A007CD1D0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 546B294910AC5E4A0054D33A /* cmscam02.c in Sources */, 546B294A10AC5E4A0054D33A /* cmscgats.c in Sources */, 546B294B10AC5E4A0054D33A /* cmscnvrt.c in Sources */, 546B294C10AC5E4A0054D33A /* cmserr.c in Sources */, 546B294D10AC5E4A0054D33A /* cmsgamma.c in Sources */, 546B294E10AC5E4A0054D33A /* cmsgmt.c in Sources */, 546B294F10AC5E4A0054D33A /* cmsintrp.c in Sources */, 546B295010AC5E4A0054D33A /* cmsio0.c in Sources */, 546B295110AC5E4A0054D33A /* cmsio1.c in Sources */, 546B295210AC5E4A0054D33A /* cmslut.c in Sources */, 546B295310AC5E4A0054D33A /* cmsmd5.c in Sources */, 546B295410AC5E4A0054D33A /* cmsmtrx.c in Sources */, 546B295510AC5E4A0054D33A /* cmsnamed.c in Sources */, 546B295610AC5E4A0054D33A /* cmsopt.c in Sources */, 546B295710AC5E4A0054D33A /* cmspack.c in Sources */, 546B295810AC5E4A0054D33A /* cmspcs.c in Sources */, 546B295910AC5E4A0054D33A /* cmsplugin.c in Sources */, 546B295A10AC5E4A0054D33A /* cmsps2.c in Sources */, 546B295B10AC5E4A0054D33A /* cmssamp.c in Sources */, 546B295C10AC5E4A0054D33A /* cmssm.c in Sources */, 546B295D10AC5E4A0054D33A /* cmstypes.c in Sources */, 546B295E10AC5E4A0054D33A /* cmsvirt.c in Sources */, 546B295F10AC5E4A0054D33A /* cmswtpnt.c in Sources */, 546B296010AC5E4A0054D33A /* cmsxform.c in Sources */, 54DBD06215A202BB00180017 /* cmshalf.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 546B29A810AC67870054D33A /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 8D07F2BC0486CC7A007CD1D0 /* LittleCMS */; targetProxy = 546B29A710AC67870054D33A /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C1667FE841158C02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 4FADC24308B4156D00ABE55E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; GCC_CHAR_IS_UNSIGNED_CHAR = YES; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = LittleCMS_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Frameworks"; LIBRARY_STYLE = DYNAMIC; MACH_O_TYPE = mh_dylib; PRODUCT_NAME = LittleCMS; WRAPPER_EXTENSION = framework; ZERO_LINK = YES; }; name = Debug; }; 4FADC24408B4156D00ABE55E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = ( ppc, i386, ); DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_VERSION = A; GCC_CHAR_IS_UNSIGNED_CHAR = YES; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = LittleCMS_Prefix.pch; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Frameworks"; LIBRARY_STYLE = DYNAMIC; MACH_O_TYPE = mh_dylib; PRODUCT_NAME = LittleCMS; WRAPPER_EXTENSION = framework; }; name = Release; }; 4FADC24708B4156D00ABE55E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; LINK_WITH_STANDARD_LIBRARIES = YES; MACH_O_TYPE = mh_execute; OTHER_LDFLAGS = ""; PREBINDING = NO; SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static; }; name = Debug; }; 4FADC24808B4156D00ABE55E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; LINK_WITH_STANDARD_LIBRARIES = YES; MACH_O_TYPE = mh_execute; OTHER_LDFLAGS = ""; PREBINDING = NO; SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static; }; name = Release; }; 546B29A510AC677F0054D33A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; INSTALL_PATH = /usr/local/bin; OTHER_LDFLAGS = ( "-framework", Carbon, "-framework", LittleCMS, ); PREBINDING = NO; PRODUCT_NAME = testbed; ZERO_LINK = YES; }; name = Debug; }; 546B29A610AC677F0054D33A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; INSTALL_PATH = /usr/local/bin; OTHER_LDFLAGS = ( "-framework", Carbon, "-framework", LittleCMS, ); PREBINDING = NO; PRODUCT_NAME = testbed; ZERO_LINK = NO; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "LittleCMS" */ = { isa = XCConfigurationList; buildConfigurations = ( 4FADC24308B4156D00ABE55E /* Debug */, 4FADC24408B4156D00ABE55E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "LittleCMS" */ = { isa = XCConfigurationList; buildConfigurations = ( 4FADC24708B4156D00ABE55E /* Debug */, 4FADC24808B4156D00ABE55E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 546B29AB10AC67C30054D33A /* Build configuration list for PBXNativeTarget "testbed" */ = { isa = XCConfigurationList; buildConfigurations = ( 546B29A510AC677F0054D33A /* Debug */, 546B29A610AC677F0054D33A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 0867D690FE84028FC02AAC07 /* Project object */; } lcms2-2.5/Projects/mac/LittleCMS/LittleCMS.xcodeproj/mariama.mode1v30000644002406300000240000012150012163060730024456 0ustar mariamausers ActivePerspectiveName Project AllowedModules BundleLoadPath MaxInstances n Module PBXSmartGroupTreeModule Name Groups and Files Outline View BundleLoadPath MaxInstances n Module PBXNavigatorGroup Name Editor BundleLoadPath MaxInstances n Module XCTaskListModule Name Task List BundleLoadPath MaxInstances n Module XCDetailModule Name File and Smart Group Detail Viewer BundleLoadPath MaxInstances 1 Module PBXBuildResultsModule Name Detailed Build Results Viewer BundleLoadPath MaxInstances 1 Module PBXProjectFindModule Name Project Batch Find Tool BundleLoadPath MaxInstances n Module XCProjectFormatConflictsModule Name Project Format Conflicts List BundleLoadPath MaxInstances n Module PBXBookmarksModule Name Bookmarks Tool BundleLoadPath MaxInstances n Module PBXClassBrowserModule Name Class Browser BundleLoadPath MaxInstances n Module PBXCVSModule Name Source Code Control Tool BundleLoadPath MaxInstances n Module PBXDebugBreakpointsModule Name Debug Breakpoints Tool BundleLoadPath MaxInstances n Module XCDockableInspector Name Inspector BundleLoadPath MaxInstances n Module PBXOpenQuicklyModule Name Open Quickly Tool BundleLoadPath MaxInstances 1 Module PBXDebugSessionModule Name Debugger BundleLoadPath MaxInstances 1 Module PBXDebugCLIModule Name Debug Console BundleLoadPath MaxInstances n Module XCSnapshotModule Name Snapshots Tool BundlePath /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources Description DefaultDescriptionKey DockingSystemVisible Extension mode1v3 FavBarConfig PBXProjectModuleGUID 546B299810AC669D0054D33A XCBarModuleItemNames XCBarModuleItems FirstTimeWindowDisplayed Identifier com.apple.perspectives.project.mode1v3 MajorVersion 33 MinorVersion 0 Name Default Notifications XCObserverAutoDisconnectKey XCObserverDefintionKey PBXStatusErrorsKey 0 XCObserverFactoryKey XCPerspectivesSpecificationIdentifier XCObserverGUIDKey XCObserverProjectIdentifier XCObserverNotificationKey PBXStatusBuildStateMessageNotification XCObserverTargetKey XCMainBuildResultsModuleGUID XCObserverTriggerKey awakenModuleWithObserver: XCObserverValidationKey PBXStatusErrorsKey 2 XCObserverAutoDisconnectKey XCObserverDefintionKey PBXStatusWarningsKey 0 XCObserverFactoryKey XCPerspectivesSpecificationIdentifier XCObserverGUIDKey XCObserverProjectIdentifier XCObserverNotificationKey PBXStatusBuildStateMessageNotification XCObserverTargetKey XCMainBuildResultsModuleGUID XCObserverTriggerKey awakenModuleWithObserver: XCObserverValidationKey PBXStatusWarningsKey 2 OpenEditors PerspectiveWidths -1 -1 Perspectives ChosenToolbarItems active-target-popup active-buildstyle-popup action NSToolbarFlexibleSpaceItem buildOrClean build-and-goOrGo com.apple.ide.PBXToolbarStopButton get-info toggle-editor NSToolbarFlexibleSpaceItem com.apple.pbx.toolbar.searchfield ControllerClassBaseName IconName WindowOfProjectWithEditor Identifier perspective.project IsVertical Layout BecomeActive ContentConfiguration PBXBottomSmartGroupGIDs 1C37FBAC04509CD000000102 1C37FAAC04509CD000000102 1C08E77C0454961000C914BD 1C37FABC05509CD000000102 1C37FABC05539CD112110102 E2644B35053B69B200211256 1C37FABC04509CD000100104 1CC0EA4004350EF90044410B 1CC0EA4004350EF90041110B PBXProjectModuleGUID 1CE0B1FE06471DED0097A5F4 PBXProjectModuleLabel Files PBXProjectStructureProvided yes PBXSmartGroupTreeModuleColumnData PBXSmartGroupTreeModuleColumnWidthsKey 389 PBXSmartGroupTreeModuleColumnsKey_v4 MainColumn PBXSmartGroupTreeModuleOutlineStateKey_v7 PBXSmartGroupTreeModuleOutlineStateExpansionKey 0867D691FE84028FC02AAC07 1C37FBAC04509CD000000102 1C37FABC05509CD000000102 E2644B35053B69B200211256 PBXSmartGroupTreeModuleOutlineStateSelectionKey 7 6 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey {{0, 0}, {389, 946}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch XCSharingToken com.apple.Xcode.GFSharingToken GeometryConfiguration Frame {{0, 0}, {406, 964}} GroupTreeTableConfiguration MainColumn 389 RubberWindowFrame 145 -306 1537 1005 0 0 1600 1178 Module PBXSmartGroupTreeModule Proportion 406pt Dock ContentConfiguration PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel testcms2.c PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel testcms2.c _historyCapacity 0 bookmark 54C0D5B915A2072100A94CDC history 546B29DA10AC6B6E0054D33A 546B29F510AC6C480054D33A 54DBD07515A206A100180017 prevStack 546B29E010AC6B6E0054D33A 546B29E110AC6B6E0054D33A SplitCount 1 StatusBarVisibility GeometryConfiguration Frame {{0, 0}, {1126, 0}} RubberWindowFrame 145 -306 1537 1005 0 0 1600 1178 Module PBXNavigatorGroup Proportion 0pt ContentConfiguration PBXProjectModuleGUID 1CE0B20506471E060097A5F4 PBXProjectModuleLabel Detail GeometryConfiguration Frame {{0, 5}, {1126, 959}} RubberWindowFrame 145 -306 1537 1005 0 0 1600 1178 Module XCDetailModule Proportion 959pt Proportion 1126pt Name Project ServiceClasses XCModuleDock PBXSmartGroupTreeModule XCModuleDock PBXNavigatorGroup XCDetailModule TableOfContents 54C0D5B315A206F900A94CDC 1CE0B1FE06471DED0097A5F4 54C0D5B415A206F900A94CDC 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 ToolbarConfiguration xcode.toolbar.config.defaultV3 ControllerClassBaseName IconName WindowOfProject Identifier perspective.morph IsVertical 0 Layout BecomeActive 1 ContentConfiguration PBXBottomSmartGroupGIDs 1C37FBAC04509CD000000102 1C37FAAC04509CD000000102 1C08E77C0454961000C914BD 1C37FABC05509CD000000102 1C37FABC05539CD112110102 E2644B35053B69B200211256 1C37FABC04509CD000100104 1CC0EA4004350EF90044410B 1CC0EA4004350EF90041110B PBXProjectModuleGUID 11E0B1FE06471DED0097A5F4 PBXProjectModuleLabel Files PBXProjectStructureProvided yes PBXSmartGroupTreeModuleColumnData PBXSmartGroupTreeModuleColumnWidthsKey 186 PBXSmartGroupTreeModuleColumnsKey_v4 MainColumn PBXSmartGroupTreeModuleOutlineStateKey_v7 PBXSmartGroupTreeModuleOutlineStateExpansionKey 29B97314FDCFA39411CA2CEA 1C37FABC05509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey {{0, 0}, {186, 337}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch 1 XCSharingToken com.apple.Xcode.GFSharingToken GeometryConfiguration Frame {{0, 0}, {203, 355}} GroupTreeTableConfiguration MainColumn 186 RubberWindowFrame 373 269 690 397 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion 100% Name Morph PreferredWidth 300 ServiceClasses XCModuleDock PBXSmartGroupTreeModule TableOfContents 11E0B1FE06471DED0097A5F4 ToolbarConfiguration xcode.toolbar.config.default.shortV3 PerspectivesBarVisible ShelfIsVisible SourceDescription file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' StatusbarIsVisible TimeStamp 362940193.69248402 ToolbarDisplayMode 1 ToolbarIsVisible ToolbarSizeMode 1 Type Perspectives UpdateMessage The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? WindowJustification 5 WindowOrderList 546B297610AC61DD0054D33A /Users/mariama/lcms2-2.4/Projects/mac/LittleCMS/LittleCMS.xcodeproj WindowString 145 -306 1537 1005 0 0 1600 1178 WindowToolsV3 FirstTimeWindowDisplayed Identifier windowTool.build IsVertical Layout Dock ContentConfiguration PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel StatusBarVisibility GeometryConfiguration Frame {{0, 0}, {897, 417}} RubberWindowFrame 645 215 897 912 0 0 1600 1178 Module PBXNavigatorGroup Proportion 417pt BecomeActive ContentConfiguration PBXProjectModuleGUID XCMainBuildResultsModuleGUID PBXProjectModuleLabel Build XCBuildResultsTrigger_Collapse 1021 XCBuildResultsTrigger_Open 1013 GeometryConfiguration Frame {{0, 422}, {897, 449}} RubberWindowFrame 645 215 897 912 0 0 1600 1178 Module PBXBuildResultsModule Proportion 449pt Proportion 871pt Name Build Results ServiceClasses PBXBuildResultsModule StatusbarIsVisible TableOfContents 546B297610AC61DD0054D33A 54C0D5B815A2071B00A94CDC 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID ToolbarConfiguration xcode.toolbar.config.buildV3 WindowString 645 215 897 912 0 0 1600 1178 WindowToolGUID 546B297610AC61DD0054D33A WindowToolIsVisible FirstTimeWindowDisplayed Identifier windowTool.debugger IsVertical Layout Dock ContentConfiguration Debugger HorizontalSplitView _collapsingFrameDimension 0.0 _indexOfCollapsedView 0 _percentageOfCollapsedView 0.0 isCollapsed yes sizes {{0, 0}, {316, 185}} {{316, 0}, {378, 185}} VerticalSplitView _collapsingFrameDimension 0.0 _indexOfCollapsedView 0 _percentageOfCollapsedView 0.0 isCollapsed yes sizes {{0, 0}, {694, 185}} {{0, 185}, {694, 196}} LauncherConfigVersion 8 PBXProjectModuleGUID 1C162984064C10D400B95A72 PBXProjectModuleLabel Debug - GLUTExamples (Underwater) GeometryConfiguration DebugConsoleVisible None DebugConsoleWindowFrame {{200, 200}, {500, 300}} DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame {{0, 0}, {694, 381}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration Name 120 Value 85 Summary 148 Frame {{316, 0}, {378, 185}} RubberWindowFrame 406 715 694 422 0 0 1600 1178 RubberWindowFrame 406 715 694 422 0 0 1600 1178 Module PBXDebugSessionModule Proportion 381pt Proportion 381pt Name Debugger ServiceClasses PBXDebugSessionModule StatusbarIsVisible TableOfContents 1CD10A99069EF8BA00B06720 546B29C910AC6A970054D33A 1C162984064C10D400B95A72 546B29CA10AC6A970054D33A 546B29CB10AC6A970054D33A 546B29CC10AC6A970054D33A 546B29CD10AC6A970054D33A 546B29CE10AC6A970054D33A ToolbarConfiguration xcode.toolbar.config.debugV3 WindowString 406 715 694 422 0 0 1600 1178 WindowToolGUID 1CD10A99069EF8BA00B06720 WindowToolIsVisible Identifier windowTool.find Layout Dock Dock ContentConfiguration PBXProjectModuleGUID 1CDD528C0622207200134675 PBXProjectModuleLabel <No Editor> PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 1CD0528D0623707200166675 SplitCount 1 StatusBarVisibility 1 GeometryConfiguration Frame {{0, 0}, {781, 167}} RubberWindowFrame 62 385 781 470 0 0 1440 878 Module PBXNavigatorGroup Proportion 781pt Proportion 50% BecomeActive 1 ContentConfiguration PBXProjectModuleGUID 1CD0528E0623707200166675 PBXProjectModuleLabel Project Find GeometryConfiguration Frame {{8, 0}, {773, 254}} RubberWindowFrame 62 385 781 470 0 0 1440 878 Module PBXProjectFindModule Proportion 50% Proportion 428pt Name Project Find ServiceClasses PBXProjectFindModule StatusbarIsVisible 1 TableOfContents 1C530D57069F1CE1000CFCEE 1C530D58069F1CE1000CFCEE 1C530D59069F1CE1000CFCEE 1CDD528C0622207200134675 1C530D5A069F1CE1000CFCEE 1CE0B1FE06471DED0097A5F4 1CD0528E0623707200166675 WindowString 62 385 781 470 0 0 1440 878 WindowToolGUID 1C530D57069F1CE1000CFCEE WindowToolIsVisible 0 Identifier MENUSEPARATOR FirstTimeWindowDisplayed Identifier windowTool.debuggerConsole IsVertical Layout Dock BecomeActive ContentConfiguration PBXProjectModuleGUID 1C78EAAC065D492600B07095 PBXProjectModuleLabel Debugger Console GeometryConfiguration Frame {{0, 0}, {814, 470}} RubberWindowFrame 406 626 814 511 0 0 1600 1178 Module PBXDebugCLIModule Proportion 470pt Proportion 470pt Name Debugger Console ServiceClasses PBXDebugCLIModule StatusbarIsVisible TableOfContents 1C78EAAD065D492600B07095 546B29CF10AC6A970054D33A 1C78EAAC065D492600B07095 ToolbarConfiguration xcode.toolbar.config.consoleV3 WindowString 406 626 814 511 0 0 1600 1178 WindowToolGUID 1C78EAAD065D492600B07095 WindowToolIsVisible Identifier windowTool.snapshots Layout Dock Module XCSnapshotModule Proportion 100% Proportion 100% Name Snapshots ServiceClasses XCSnapshotModule StatusbarIsVisible Yes ToolbarConfiguration xcode.toolbar.config.snapshots WindowString 315 824 300 550 0 0 1440 878 WindowToolIsVisible Yes Identifier windowTool.scm Layout Dock ContentConfiguration PBXProjectModuleGUID 1C78EAB2065D492600B07095 PBXProjectModuleLabel <No Editor> PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 1C78EAB3065D492600B07095 SplitCount 1 StatusBarVisibility 1 GeometryConfiguration Frame {{0, 0}, {452, 0}} RubberWindowFrame 743 379 452 308 0 0 1280 1002 Module PBXNavigatorGroup Proportion 0pt BecomeActive 1 ContentConfiguration PBXProjectModuleGUID 1CD052920623707200166675 PBXProjectModuleLabel SCM GeometryConfiguration ConsoleFrame {{0, 259}, {452, 0}} Frame {{0, 7}, {452, 259}} RubberWindowFrame 743 379 452 308 0 0 1280 1002 TableConfiguration Status 30 FileName 199 Path 197.09500122070312 TableFrame {{0, 0}, {452, 250}} Module PBXCVSModule Proportion 262pt Proportion 266pt Name SCM ServiceClasses PBXCVSModule StatusbarIsVisible 1 TableOfContents 1C78EAB4065D492600B07095 1C78EAB5065D492600B07095 1C78EAB2065D492600B07095 1CD052920623707200166675 ToolbarConfiguration xcode.toolbar.config.scm WindowString 743 379 452 308 0 0 1280 1002 Identifier windowTool.breakpoints IsVertical 0 Layout Dock BecomeActive 1 ContentConfiguration PBXBottomSmartGroupGIDs 1C77FABC04509CD000000102 PBXProjectModuleGUID 1CE0B1FE06471DED0097A5F4 PBXProjectModuleLabel Files PBXProjectStructureProvided no PBXSmartGroupTreeModuleColumnData PBXSmartGroupTreeModuleColumnWidthsKey 168 PBXSmartGroupTreeModuleColumnsKey_v4 MainColumn PBXSmartGroupTreeModuleOutlineStateKey_v7 PBXSmartGroupTreeModuleOutlineStateExpansionKey 1C77FABC04509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey {{0, 0}, {168, 350}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch 0 GeometryConfiguration Frame {{0, 0}, {185, 368}} GroupTreeTableConfiguration MainColumn 168 RubberWindowFrame 315 424 744 409 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion 185pt ContentConfiguration PBXProjectModuleGUID 1CA1AED706398EBD00589147 PBXProjectModuleLabel Detail GeometryConfiguration Frame {{190, 0}, {554, 368}} RubberWindowFrame 315 424 744 409 0 0 1440 878 Module XCDetailModule Proportion 554pt Proportion 368pt MajorVersion 3 MinorVersion 0 Name Breakpoints ServiceClasses PBXSmartGroupTreeModule XCDetailModule StatusbarIsVisible 1 TableOfContents 1CDDB66807F98D9800BB5817 1CDDB66907F98D9800BB5817 1CE0B1FE06471DED0097A5F4 1CA1AED706398EBD00589147 ToolbarConfiguration xcode.toolbar.config.breakpointsV3 WindowString 315 424 744 409 0 0 1440 878 WindowToolGUID 1CDDB66807F98D9800BB5817 WindowToolIsVisible 1 Identifier windowTool.debugAnimator Layout Dock Module PBXNavigatorGroup Proportion 100% Proportion 100% Name Debug Visualizer ServiceClasses PBXNavigatorGroup StatusbarIsVisible 1 ToolbarConfiguration xcode.toolbar.config.debugAnimatorV3 WindowString 100 100 700 500 0 0 1280 1002 Identifier windowTool.bookmarks Layout Dock Module PBXBookmarksModule Proportion 100% Proportion 100% Name Bookmarks ServiceClasses PBXBookmarksModule StatusbarIsVisible 0 WindowString 538 42 401 187 0 0 1280 1002 Identifier windowTool.projectFormatConflicts Layout Dock Module XCProjectFormatConflictsModule Proportion 100% Proportion 100% Name Project Format Conflicts ServiceClasses XCProjectFormatConflictsModule StatusbarIsVisible 0 WindowContentMinSize 450 300 WindowString 50 850 472 307 0 0 1440 877 Identifier windowTool.classBrowser Layout Dock BecomeActive 1 ContentConfiguration OptionsSetName Hierarchy, all classes PBXProjectModuleGUID 1CA6456E063B45B4001379D8 PBXProjectModuleLabel Class Browser - NSObject GeometryConfiguration ClassesFrame {{0, 0}, {374, 96}} ClassesTreeTableConfiguration PBXClassNameColumnIdentifier 208 PBXClassBookColumnIdentifier 22 Frame {{0, 0}, {630, 331}} MembersFrame {{0, 105}, {374, 395}} MembersTreeTableConfiguration PBXMemberTypeIconColumnIdentifier 22 PBXMemberNameColumnIdentifier 216 PBXMemberTypeColumnIdentifier 97 PBXMemberBookColumnIdentifier 22 PBXModuleWindowStatusBarHidden2 1 RubberWindowFrame 385 179 630 352 0 0 1440 878 Module PBXClassBrowserModule Proportion 332pt Proportion 332pt Name Class Browser ServiceClasses PBXClassBrowserModule StatusbarIsVisible 0 TableOfContents 1C0AD2AF069F1E9B00FABCE6 1C0AD2B0069F1E9B00FABCE6 1CA6456E063B45B4001379D8 ToolbarConfiguration xcode.toolbar.config.classbrowser WindowString 385 179 630 352 0 0 1440 878 WindowToolGUID 1C0AD2AF069F1E9B00FABCE6 WindowToolIsVisible 0 Identifier windowTool.refactoring IncludeInToolsMenu 0 Layout Dock BecomeActive 1 GeometryConfiguration Frame {0, 0}, {500, 335} RubberWindowFrame {0, 0}, {500, 335} Module XCRefactoringModule Proportion 100% Proportion 100% Name Refactoring ServiceClasses XCRefactoringModule WindowString 200 200 500 356 0 0 1920 1200 lcms2-2.5/Projects/mac/LittleCMS/LittleCMS.xcodeproj/mariama.pbxuser0000644002406300000240000002242012163060730024671 0ustar mariamausers// !$*UTF8*$! { 0867D690FE84028FC02AAC07 /* Project object */ = { activeArchitecture = ppc; activeBuildConfigurationName = Release; activeExecutable = 546B29A410AC677E0054D33A /* testbed */; activeTarget = 8D07F2BC0486CC7A007CD1D0 /* LittleCMS */; addToTargets = ( 546B29A210AC677E0054D33A /* testbed */, ); codeSenseManager = 546B293010AC5E210054D33A /* Code sense */; executables = ( 546B29A410AC677E0054D33A /* testbed */, ); perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; PBXFileTableDataSourceColumnWidthsKey = ( 200, 200, 760, ); PBXFileTableDataSourceColumnsKey = ( PBXBookmarksDataSource_LocationID, PBXBookmarksDataSource_NameID, PBXBookmarksDataSource_CommentsID, ); }; PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; PBXFileTableDataSourceColumnWidthsKey = ( 20, 300, 840, ); PBXFileTableDataSourceColumnsKey = ( PBXErrorsWarningsDataSource_TypeID, PBXErrorsWarningsDataSource_MessageID, PBXErrorsWarningsDataSource_LocationID, ); }; PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; PBXFileTableDataSourceColumnWidthsKey = ( 22, 300, 838, ); PBXFileTableDataSourceColumnsKey = ( PBXExecutablesDataSource_ActiveFlagID, PBXExecutablesDataSource_NameID, PBXExecutablesDataSource_CommentsID, ); }; PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, 887, 20, 48, 43, 43, 20, ); PBXFileTableDataSourceColumnsKey = ( PBXFileDataSource_FiletypeID, PBXFileDataSource_Filename_ColumnID, PBXFileDataSource_Built_ColumnID, PBXFileDataSource_ObjectSize_ColumnID, PBXFileDataSource_Errors_ColumnID, PBXFileDataSource_Warnings_ColumnID, PBXFileDataSource_Target_ColumnID, ); }; PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID; PBXFileTableDataSourceColumnWidthsKey = ( 200, 964, ); PBXFileTableDataSourceColumnsKey = ( PBXFindDataSource_MessageID, PBXFindDataSource_LocationID, ); }; PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID; PBXFileTableDataSourceColumnWidthsKey = ( 16, 200, 50, 890, ); PBXFileTableDataSourceColumnsKey = ( PBXSymbolsDataSource_SymbolTypeIconID, PBXSymbolsDataSource_SymbolNameID, PBXSymbolsDataSource_SymbolTypeID, PBXSymbolsDataSource_ReferenceNameID, ); }; PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, 20, 926, 20, 48.16259765625, 43, 43, 20, ); PBXFileTableDataSourceColumnsKey = ( PBXFileDataSource_SCM_ColumnID, PBXFileDataSource_FiletypeID, PBXFileDataSource_Filename_ColumnID, PBXFileDataSource_Built_ColumnID, PBXFileDataSource_ObjectSize_ColumnID, PBXFileDataSource_Errors_ColumnID, PBXFileDataSource_Warnings_ColumnID, PBXFileDataSource_Target_ColumnID, ); }; PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, 847, 60, 20, 48, 43, 43, ); PBXFileTableDataSourceColumnsKey = ( PBXFileDataSource_FiletypeID, PBXFileDataSource_Filename_ColumnID, PBXTargetDataSource_PrimaryAttribute, PBXFileDataSource_Built_ColumnID, PBXFileDataSource_ObjectSize_ColumnID, PBXFileDataSource_Errors_ColumnID, PBXFileDataSource_Warnings_ColumnID, ); }; PBXPerProjectTemplateStateSaveDate = 362940143; PBXWorkspaceStateSaveDate = 362940143; }; perUserProjectItems = { 546B29DA10AC6B6E0054D33A = 546B29DA10AC6B6E0054D33A /* PBXTextBookmark */; 546B29E010AC6B6E0054D33A = 546B29E010AC6B6E0054D33A /* PBXTextBookmark */; 546B29E110AC6B6E0054D33A = 546B29E110AC6B6E0054D33A /* PBXTextBookmark */; 546B29E210AC6B6E0054D33A = 546B29E210AC6B6E0054D33A /* PBXTextBookmark */; 546B29F510AC6C480054D33A = 546B29F510AC6C480054D33A /* PBXTextBookmark */; 54C0D5B215A206F900A94CDC /* PBXTextBookmark */ = 54C0D5B215A206F900A94CDC /* PBXTextBookmark */; 54C0D5B915A2072100A94CDC /* PBXTextBookmark */ = 54C0D5B915A2072100A94CDC /* PBXTextBookmark */; 54DBD07515A206A100180017 = 54DBD07515A206A100180017 /* PBXTextBookmark */; }; sourceControlManager = 546B292F10AC5E210054D33A /* Source Control */; userBuildSettings = { }; }; 546B292F10AC5E210054D33A /* Source Control */ = { isa = PBXSourceControlManager; fallbackIsa = XCSourceControlManager; isSCMEnabled = 0; scmConfiguration = { }; }; 546B293010AC5E210054D33A /* Code sense */ = { isa = PBXCodeSenseManager; indexTemplatePath = ""; }; 546B293810AC5E4A0054D33A /* cmsio0.c */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1065, 24374}}"; sepNavSelRange = "{25921, 0}"; sepNavVisRange = "{0, 0}"; }; }; 546B296B10AC5EAA0054D33A /* TestBed-Info.plist */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1128, 522}}"; sepNavSelRange = "{172, 5}"; sepNavVisRange = "{0, 671}"; }; }; 546B299D10AC672A0054D33A /* RunUnitTests */ = { isa = PBXFileReference; lastKnownFileType = text.script.sh; name = RunUnitTests; path = /Developer/Tools/RunUnitTests; sourceTree = ""; }; 546B29A210AC677E0054D33A /* testbed */ = { activeExec = 0; executables = ( 546B29A410AC677E0054D33A /* testbed */, ); }; 546B29A410AC677E0054D33A /* testbed */ = { isa = PBXExecutable; activeArgIndices = ( ); argumentStrings = ( ); autoAttachOnCrash = 1; breakpointsEnabled = 0; configStateDict = { }; customDataFormattersEnabled = 1; debuggerPlugin = GDBDebugging; disassemblyDisplayState = 0; dylibVariantSuffix = ""; enableDebugStr = 1; environmentEntries = ( ); executableSystemSymbolLevel = 0; executableUserSymbolLevel = 0; libgmallocEnabled = 0; name = testbed; savedGlobals = { }; sourceDirectories = ( ); variableFormatDictionary = { }; }; 546B29AD10AC68410054D33A /* testcms2.c */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1065, 110054}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 0}"; sepNavWindowFrame = "{{61, 247}, {1099, 884}}"; }; }; 546B29DA10AC6B6E0054D33A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B299D10AC672A0054D33A /* RunUnitTests */; name = "RunUnitTests: 298"; rLen = 5; rLoc = 9244; rType = 0; vrLen = 172; vrLoc = 9140; }; 546B29E010AC6B6E0054D33A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B299D10AC672A0054D33A /* RunUnitTests */; name = "RunUnitTests: 298"; rLen = 5; rLoc = 9244; rType = 0; vrLen = 172; vrLoc = 9140; }; 546B29E110AC6B6E0054D33A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B296B10AC5EAA0054D33A /* TestBed-Info.plist */; name = "TestBed-Info.plist: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 662; vrLoc = 0; }; 546B29E210AC6B6E0054D33A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B29AD10AC68410054D33A /* testcms2.c */; name = "testcms2.c: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 1115; vrLoc = 0; }; 546B29F510AC6C480054D33A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B296B10AC5EAA0054D33A /* TestBed-Info.plist */; name = "TestBed-Info.plist: 5"; rLen = 5; rLoc = 172; rType = 0; vrLen = 671; vrLoc = 0; }; 54C0D5B215A206F900A94CDC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B29AD10AC68410054D33A /* testcms2.c */; name = "testcms2.c: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 0; vrLoc = 0; }; 54C0D5B915A2072100A94CDC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B29AD10AC68410054D33A /* testcms2.c */; name = "testcms2.c: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 0; vrLoc = 0; }; 54DBD07515A206A100180017 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 546B29AD10AC68410054D33A /* testcms2.c */; name = "testcms2.c: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 0; vrLoc = 0; }; 8D07F2BC0486CC7A007CD1D0 /* LittleCMS */ = { activeExec = 0; }; } lcms2-2.5/Projects/mac/LittleCMS/.DS_Store0000755002406300000240000001400412163060730017541 0ustar mariamausersBud1%  @ @ @ @ E%DSDB` @ @ @lcms2-2.5/Projects/mac/LittleCMS/LittleCMS_Prefix.pch0000644002406300000240000000017612163060730021671 0ustar mariamausers// // Prefix header for all source files of the 'LittleCMS' target in the 'LittleCMS' project. // #include lcms2-2.5/Projects/cppcheck/0000755002406300000240000000000012163061353015276 5ustar mariamauserslcms2-2.5/Projects/cppcheck/lcms2.cppcheck0000755002406300000240000000032212163060730020016 0ustar mariamausers

lcms2-2.5/Projects/VC2012/0000755002406300000240000000000012163061353014333 5ustar mariamauserslcms2-2.5/Projects/VC2012/lcms2_static/0000755002406300000240000000000012163061353016722 5ustar mariamauserslcms2-2.5/Projects/VC2012/lcms2_static/lcms2_static.vcproj0000755002406300000240000001216012163060730022537 0ustar mariamausers lcms2-2.5/Projects/VC2012/lcms2_static/lcms2_static.vcxproj0000755002406300000240000002654112163060730022737 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {71DEDE59-3F1E-486B-A899-4283000F76B5} lcms2_static Win32Proj StaticLibrary Unicode true v110 StaticLibrary Unicode true v110 StaticLibrary Unicode v110 StaticLibrary Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\Lib\MS\ ..\..\..\Lib\MS\ $(Configuration)\ $(Configuration)\ ..\..\..\Lib\MS\ ..\..\..\Lib\MS\ $(Configuration)\ $(Configuration)\ AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) true EnableFastChecks Level4 EditAndContinue true MultiThreadedDebugDLL Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true MaxSpeed true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase Speed true false OnlyExplicitInline false true Precise false false true true MaxSpeed true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase Speed true true OnlyExplicitInline false true true true lcms2-2.5/Projects/VC2012/lcms2_static/lcms2_static.vcxproj.filters0000755002406300000240000000737612163060730024413 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Source Files lcms2-2.5/Projects/VC2012/lcms2_DLL/0000755002406300000240000000000012163061353016046 5ustar mariamauserslcms2-2.5/Projects/VC2012/lcms2_DLL/lcms2_DLL.vcproj0000755002406300000240000001434312163060730021014 0ustar mariamausers lcms2-2.5/Projects/VC2012/lcms2_DLL/lcms2_DLL.vcxproj.filters0000755002406300000240000001016712163060730022653 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Source Files Resource Files Resource Files Source Files lcms2-2.5/Projects/VC2012/lcms2_DLL/lcms2_DLL.vcxproj0000755002406300000240000003322112163060730021200 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548} lcms2_DLL Win32Proj DynamicLibrary Unicode true v110 DynamicLibrary Unicode true v110 DynamicLibrary Unicode v110 DynamicLibrary Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset lcms2 lcms2 lcms2 lcms2 Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true ..\..\..\src\lcms2.def true Windows MachineX86 Disabled ../../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true true Windows $(OutDir)$(TargetName)$(TargetExt) Full true Speed true true true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase true OnlyExplicitInline true true ..\..\..\src\lcms2.def true Windows true true MachineX86 true Full true Speed true true true ../../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;CMS_DLL_BUILD;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase true OnlyExplicitInline true true Windows true true true lcms2-2.5/Projects/VC2012/tifficc/0000755002406300000240000000000012163061353015742 5ustar mariamauserslcms2-2.5/Projects/VC2012/tifficc/tifficc.vcproj0000755002406300000240000001032612163060730020601 0ustar mariamausers lcms2-2.5/Projects/VC2012/tifficc/tifficc.vcxproj0000755002406300000240000003057512163060730021001 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2} tifficc Win32Proj Application Unicode true v110 Application Unicode true v110 Application Unicode v110 Application Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset $(IncludePath);C:\tiff-4.0.2\libtiff $(IncludePath);C:\tiff-4.0.2\libtiff $(LibraryPath);C:\tiff-4.0.2\libtiff $(LibraryPath);C:\tiff-4.0.2\libtiff $(IncludePath);C:\tiff-4.0.2\libtiff $(IncludePath);C:\tiff-4.0.2\libtiff $(LibraryPath);C:\tiff-4.0.2\libtiff $(LibraryPath);C:\tiff-4.0.2\libtiff Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true libtiff.lib;%(AdditionalDependencies) true Console MachineX86 false Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console false MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true libtiff.lib;%(AdditionalDependencies) true Console true true MachineX86 false true MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console true true false {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2012/tifficc/tifficc.vcxproj.filters0000755002406300000240000000242212163060730022436 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Header Files lcms2-2.5/Projects/VC2012/psicc/0000755002406300000240000000000012163061353015434 5ustar mariamauserslcms2-2.5/Projects/VC2012/psicc/psicc.vcxproj.filters0000755002406300000240000000220612163060730021622 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files lcms2-2.5/Projects/VC2012/psicc/psicc.vcxproj0000755002406300000240000002516712163060730020166 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693} psicc Win32Proj Application Unicode true v110 Application Unicode true v110 Application Unicode v110 Application Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDLL Level4 EditAndContinue true true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true true Console true true MachineX86 true MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2012/psicc/psicc.vcproj0000755002406300000240000001005512163060730017764 0ustar mariamausers lcms2-2.5/Projects/VC2012/tiffdiff/0000755002406300000240000000000012163061353016114 5ustar mariamauserslcms2-2.5/Projects/VC2012/tiffdiff/tiffdiff.vcxproj0000755002406300000240000003100012163060730021305 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE} tiffdiff Win32Proj Application Unicode true v110 Application Unicode true v110 Application Unicode v110 Application Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;c:\tiff-4.0.2\libtiff;$(IncludePath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) C:\jpeg-8d;C:\tiff-4.0.2\libtiff;$(LibraryPath) Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level4 EditAndContinue true libtiff.lib;%(AdditionalDependencies) true Console MachineX86 false Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console false MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true libtiff.lib;%(AdditionalDependencies) true Console true true MachineX86 $(OutDir)$(TargetName)$(TargetExt) false true MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true libtiff.lib;%(AdditionalDependencies) true Console true true $(OutDir)$(TargetName)$(TargetExt) false {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2012/tiffdiff/tiffdiff.vcxproj.filters0000755002406300000240000000221112163060730022756 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files lcms2-2.5/Projects/VC2012/tiffdiff/tiffdiff.vcproj0000755002406300000240000001022012163060730021116 0ustar mariamausers lcms2-2.5/Projects/VC2012/lcms2.rc0000755002406300000240000000467012163060730015711 0ustar mariamausers// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #define APSTUDIO_HIDDEN_SYMBOLS #include "windows.h" #undef APSTUDIO_HIDDEN_SYMBOLS ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Spanish (Spain, International Sort) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESN) LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MODERN #pragma code_page(1252) ///////////////////////////////////////////////////////////////////////////// // // Version // 1 VERSIONINFO FILEVERSION 2,5,0,0 PRODUCTVERSION 2,5,0,0 FILEFLAGSMASK 0x0L #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" BEGIN VALUE "CompanyName", "Marti Maria" VALUE "FileDescription", "lcms color engine" VALUE "FileVersion", "2.5.0.0" VALUE "InternalName", "lcms" VALUE "LegalCopyright", "Copyright Marti Maria 2013" VALUE "OriginalFilename", "lcms2.dll" VALUE "ProductName", "LittleCMS color engine" VALUE "ProductVersion", "2.5.0.0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1252 END END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // Spanish (Spain, International Sort) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED lcms2-2.5/Projects/VC2012/jpegicc/0000755002406300000240000000000012163061353015737 5ustar mariamauserslcms2-2.5/Projects/VC2012/jpegicc/jpegicc.vcxproj.filters0000755002406300000240000000236712163060730022440 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files lcms2-2.5/Projects/VC2012/jpegicc/jpegicc.vcproj0000755002406300000240000001033412163060730020572 0ustar mariamausers lcms2-2.5/Projects/VC2012/jpegicc/jpegicc.vcxproj0000755002406300000240000003114112163060730020761 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {62812507-F926-4968-96A9-17678460AD90} jpegicc Win32Proj Application Unicode true v110 Application Unicode true v110 Application Unicode v110 Application Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset $(IncludePath);;C:\jpeg-8d $(IncludePath);;C:\jpeg-8d $(LibraryPath);;C:\jpeg-8d $(LibraryPath);;C:\jpeg-8d $(IncludePath);;C:\jpeg-8d $(IncludePath);;C:\jpeg-8d $(LibraryPath);;C:\jpeg-8d $(LibraryPath);;C:\jpeg-8d Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level4 EditAndContinue true libjpeg.lib;%(AdditionalDependencies) true Console MachineX86 false Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 ProgramDatabase true libjpeg.lib;%(AdditionalDependencies) true Console false Full true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level3 ProgramDatabase Speed true true true true libjpeg.lib;%(AdditionalDependencies) true Console true true MachineX86 false true Full true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreaded true Level3 ProgramDatabase Speed true true true libjpeg.lib;%(AdditionalDependencies) true Console true true false {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2012/linkicc/0000755002406300000240000000000012163061353015747 5ustar mariamauserslcms2-2.5/Projects/VC2012/linkicc/linkicc.vcproj0000755002406300000240000001007112163060730020610 0ustar mariamausers lcms2-2.5/Projects/VC2012/linkicc/linkicc.vcxproj.filters0000755002406300000240000000221212163060730022445 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files lcms2-2.5/Projects/VC2012/linkicc/linkicc.vcxproj0000755002406300000240000002517512163060730021013 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849} linkicc Win32Proj Application Unicode true v110 Application Unicode true v110 Application Unicode v110 Application Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDLL Level4 EditAndContinue true true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level4 ProgramDatabase true true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true true Console true true MachineX86 true MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2012/transicc/0000755002406300000240000000000012163061353016141 5ustar mariamauserslcms2-2.5/Projects/VC2012/transicc/transicc.vcxproj0000755002406300000240000002533712163060730021377 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160} transicc Win32Proj Application Unicode true v110 Application Unicode true v110 Application Unicode v110 Application Unicode v110 <_ProjectFileVersion>10.0.21006.1 ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ true true ..\..\..\bin\ ..\..\..\bin\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level4 EditAndContinue true true Console MachineX86 Disabled ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level4 ProgramDatabase true true Console MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL true Level4 ProgramDatabase true true true Console true true MachineX86 true MaxSpeed true ../../../include;../../../utils/common;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreaded true Level4 ProgramDatabase true true Console true true {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2012/transicc/transicc.vcproj0000755002406300000240000001021212163060730021171 0ustar mariamausers lcms2-2.5/Projects/VC2012/transicc/transicc.vcxproj.filters0000755002406300000240000000242612163060730023040 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Header Files lcms2-2.5/Projects/VC2012/lcms2.sln0000755002406300000240000003531212163060730016076 0ustar mariamausers Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testbed", "testbed\testbed.vcxproj", "{928A3A2B-46EF-4279-959C-513B3652FF0E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tifficc", "tifficc\tifficc.vcxproj", "{2256DE16-ED92-4A6F-9C54-F65BB61E64A2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lcms2_DLL", "lcms2_DLL\lcms2_DLL.vcxproj", "{8C51BE48-ADB8-4089-A9EC-F6BF993A0548}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linkicc", "linkicc\linkicc.vcxproj", "{FBFBE1DC-DB84-4BA1-9552-B4780F457849}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transicc", "transicc\transicc.vcxproj", "{9EE22D66-C849-474C-9ED5-C3E141DAB160}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jpegicc", "jpegicc\jpegicc.vcxproj", "{62812507-F926-4968-96A9-17678460AD90}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiffdiff", "tiffdiff\tiffdiff.vcxproj", "{75B91835-CCD7-48BE-A606-A9C997D5DBEE}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lcms2_static", "lcms2_static\lcms2_static.vcxproj", "{71DEDE59-3F1E-486B-A899-4283000F76B5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "psicc", "psicc\psicc.vcxproj", "{EF6A8851-65FE-46F5-B9EF-14F0B671F693}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|Win32.ActiveCfg = Debug|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|Win32.Build.0 = Debug|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|x64.ActiveCfg = Debug|x64 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Debug|x64.Build.0 = Debug|x64 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|Win32.ActiveCfg = Release|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|Win32.Build.0 = Release|Win32 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|x64.ActiveCfg = Release|x64 {928A3A2B-46EF-4279-959C-513B3652FF0E}.Release|x64.Build.0 = Release|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|Win32.ActiveCfg = Debug|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|Win32.Build.0 = Debug|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|x64.ActiveCfg = Debug|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Debug|x64.Build.0 = Debug|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|Win32.ActiveCfg = Release|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|Win32.Build.0 = Release|Win32 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|x64.ActiveCfg = Release|x64 {2256DE16-ED92-4A6F-9C54-F65BB61E64A2}.Release|x64.Build.0 = Release|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|Win32.ActiveCfg = Debug|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|Win32.Build.0 = Debug|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|x64.ActiveCfg = Debug|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Debug|x64.Build.0 = Debug|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|Win32.ActiveCfg = Release|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|Win32.Build.0 = Release|Win32 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|x64.ActiveCfg = Release|x64 {8C51BE48-ADB8-4089-A9EC-F6BF993A0548}.Release|x64.Build.0 = Release|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|Win32.ActiveCfg = Debug|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|Win32.Build.0 = Debug|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|x64.ActiveCfg = Debug|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Debug|x64.Build.0 = Debug|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|Win32.ActiveCfg = Release|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|Win32.Build.0 = Release|Win32 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|x64.ActiveCfg = Release|x64 {FBFBE1DC-DB84-4BA1-9552-B4780F457849}.Release|x64.Build.0 = Release|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|Win32.ActiveCfg = Debug|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|Win32.Build.0 = Debug|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|x64.ActiveCfg = Debug|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Debug|x64.Build.0 = Debug|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|Win32.ActiveCfg = Release|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|Win32.Build.0 = Release|Win32 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|x64.ActiveCfg = Release|x64 {9EE22D66-C849-474C-9ED5-C3E141DAB160}.Release|x64.Build.0 = Release|x64 {62812507-F926-4968-96A9-17678460AD90}.Debug|Win32.ActiveCfg = Debug|Win32 {62812507-F926-4968-96A9-17678460AD90}.Debug|Win32.Build.0 = Debug|Win32 {62812507-F926-4968-96A9-17678460AD90}.Debug|x64.ActiveCfg = Debug|x64 {62812507-F926-4968-96A9-17678460AD90}.Debug|x64.Build.0 = Debug|x64 {62812507-F926-4968-96A9-17678460AD90}.Release|Win32.ActiveCfg = Release|Win32 {62812507-F926-4968-96A9-17678460AD90}.Release|Win32.Build.0 = Release|Win32 {62812507-F926-4968-96A9-17678460AD90}.Release|x64.ActiveCfg = Release|x64 {62812507-F926-4968-96A9-17678460AD90}.Release|x64.Build.0 = Release|x64 {62812507-F926-4968-96A9-17678460AD90}.Release|x64.Deploy.0 = Release|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|Win32.ActiveCfg = Debug|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|Win32.Build.0 = Debug|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|x64.ActiveCfg = Debug|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Debug|x64.Build.0 = Debug|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|Win32.ActiveCfg = Release|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|Win32.Build.0 = Release|Win32 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|x64.ActiveCfg = Release|x64 {75B91835-CCD7-48BE-A606-A9C997D5DBEE}.Release|x64.Build.0 = Release|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|Win32.ActiveCfg = Debug|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|Win32.Build.0 = Debug|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|x64.ActiveCfg = Debug|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Debug|x64.Build.0 = Debug|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|Win32.ActiveCfg = Release|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|Win32.Build.0 = Release|Win32 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|x64.ActiveCfg = Release|x64 {71DEDE59-3F1E-486B-A899-4283000F76B5}.Release|x64.Build.0 = Release|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|Win32.ActiveCfg = Debug|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|Win32.Build.0 = Debug|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|x64.ActiveCfg = Debug|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Debug|x64.Build.0 = Debug|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|Win32.ActiveCfg = Release|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|Win32.Build.0 = Release|Win32 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|x64.ActiveCfg = Release|x64 {EF6A8851-65FE-46F5-B9EF-14F0B671F693}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution QtVersion = $(DefaultQtVersion) EndGlobalSection EndGlobal lcms2-2.5/Projects/VC2012/resource.h0000755002406300000240000000065612163060730016343 0ustar mariamausers//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by lcms2.rc // // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 101 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif lcms2-2.5/Projects/VC2012/testbed/0000755002406300000240000000000012163061353015765 5ustar mariamauserslcms2-2.5/Projects/VC2012/testbed/testbed.vcxproj0000755002406300000240000002646212163060730021047 0ustar mariamausers Debug Win32 Debug x64 Release Win32 Release x64 {928A3A2B-46EF-4279-959C-513B3652FF0E} testbed Win32Proj Application Unicode true v110 Application Unicode true v110 Application Unicode v110 Application Unicode v110 <_ProjectFileVersion>10.0.21006.1 $(Configuration)\ $(Configuration)\ true true ..\..\..\testbed\ ..\..\..\testbed\ $(Configuration)\ $(Configuration)\ false false AllRules.ruleset AllRules.ruleset AllRules.ruleset AllRules.ruleset ..\..\..\testbed\ ..\..\..\testbed\ Disabled ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL Level3 EditAndContinue true true Console MachineX86 false Disabled ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug Level3 ProgramDatabase true true Console false Full true Speed true false ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreadedDLL false true NotSet Level3 ProgramDatabase Cdecl true true true Console true true MachineX86 false true Full true Speed true true ../../../include;../../../src;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) MultiThreaded false true NotSet Level3 ProgramDatabase Cdecl true true Console true true false {71dede59-3f1e-486b-a899-4283000f76b5} false lcms2-2.5/Projects/VC2012/testbed/testbed.vcxproj.filters0000755002406300000240000000167712163060730022517 0ustar mariamausers {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files lcms2-2.5/Projects/VC2012/testbed/testbed.vcproj0000755002406300000240000001003312163060730020642 0ustar mariamausers lcms2-2.5/Projects/BorlandC_5.5/0000755002406300000240000000000012163061353015571 5ustar mariamauserslcms2-2.5/Projects/BorlandC_5.5/lcmsdll.lk0000644002406300000240000000063312163060730017553 0ustar mariamausers/x/aa/c/Tpd C0D32.OBJ+ cmscam02.obj+ cmscgats.obj+ cmscnvrt.obj+ cmserr.obj+ cmsgamma.obj+ cmsgmt.obj+ cmshalf.obj+ cmsintrp.obj+ cmsio0.obj+ cmsio1.obj+ cmslut.obj+ cmsmd5.obj+ cmsmtrx.obj+ cmsnamed.obj+ cmsopt.obj+ cmspack.obj+ cmspcs.obj+ cmsplugin.obj+ cmsps2.obj+ cmssamp.obj+ cmssm.obj+ cmstypes.obj+ cmsvirt.obj+ cmswtpnt.obj+ cmsxform.obj ..\..\bin\lcms2.dll cw32mt.lib import32.lib ..\..\src\lcms2.deflcms2-2.5/Projects/BorlandC_5.5/lcms2.rc0000644002406300000240000000100712163060730017133 0ustar mariamausers 1 VERSIONINFO FILEVERSION 2, 4, 0, 0 PRODUCTVERSION 2, 4, 0, 0 FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_DLL { BLOCK "StringFileInfo" { BLOCK "040904E4" { VALUE "CompanyName", "Marti Maria\000\000" VALUE "FileDescription", "lcms color engine\000" VALUE "FileVersion", "2.04\000\000" VALUE "InternalName", "lcms2\000" VALUE "LegalCopyright", "Copyright Marti Maria 2012\000\000" VALUE "OriginalFilename", "lcms2.dll\000" } } BLOCK "VarFileInfo" { VALUE "Translation", 0x409, 1252 } } lcms2-2.5/Projects/BorlandC_5.5/lcmsdll.lst0000644002406300000240000000120212163060730017740 0ustar mariamausers-5 -C -DCMS_DLL -DCMS_DLL_BUILD -I..\..\include -K -O2 -a8 -d -ff -w -wucp -wsig -wdef -wnod -wamb -OS -RT- -R- -tWM -tWD -w- -x- -c ..\..\src\cmscam02.c ..\..\src\cmscgats.c ..\..\src\cmscnvrt.c ..\..\src\cmserr.c ..\..\src\cmsgamma.c ..\..\src\cmsgmt.c ..\..\src\cmsintrp.c ..\..\src\cmsio0.c ..\..\src\cmsio1.c ..\..\src\cmslut.c ..\..\src\cmsmd5.c ..\..\src\cmsmtrx.c ..\..\src\cmsnamed.c ..\..\src\cmsopt.c ..\..\src\cmspack.c ..\..\src\cmspcs.c ..\..\src\cmsplugin.c ..\..\src\cmsps2.c ..\..\src\cmssamp.c ..\..\src\cmssm.c ..\..\src\cmstypes.c ..\..\src\cmsvirt.c ..\..\src\cmswtpnt.c ..\..\src\cmsxform.c ..\..\src\cmshalf.c lcms2-2.5/Projects/BorlandC_5.5/mklcmsdll.bat0000644002406300000240000000043412163060730020242 0ustar mariamausers@echo off echo. echo This will build the littlecms DLL using Borland C 5.5 compiler. echo. echo Press Ctrl-C to abort, or pause bcc32 @lcmsdll.lst if errorlevel 0 ilink32 @lcmsdll.lk if errorlevel 0 brc32 -fe ..\..\bin\lcms2.dll lcms2.rc del *.obj del *.res echo Done! lcms2-2.5/configure.ac0000644002406300000240000001734612163060730014224 0ustar mariamausers# # LittleCMS 2 configure script # AC_PREREQ(2.60) # # Set the package name and version # AC_INIT(lcms2,2.5) # # Libtool library revision control info # See the libtool documentation under the heading "Libtool's versioning # system" in order to understand the meaning of these fields # # Here are a set of rules to help you update your library version # information: # # 1. Start with version information of `0:0:0' for each libtool library. # 2. Update the version information only immediately before a public # release of your software. More frequent updates are unnecessary, and # only guarantee that the current interface number gets larger faster. # 3. If the library source code has changed at all since the last update, # then increment revision (`c:r:a' becomes `c:r+1:a'). # 4. If any interfaces have been added, removed, or changed since the last # update, increment current, and set revision to 0. # 5. If any interfaces have been added since the last public release, then # increment age. # 6. If any interfaces have been removed since the last public release, # then set age to 0. # LIBRARY_CURRENT=2 LIBRARY_REVISION=5 LIBRARY_AGE=0 AC_SUBST(LIBRARY_CURRENT)dnl AC_SUBST(LIBRARY_REVISION)dnl AC_SUBST(LIBRARY_AGE)dnl # Obtain system type by running config.guess AC_CANONICAL_HOST AM_INIT_AUTOMAKE([foreign 1.7.2 no-define dist-zip]) # Disable JPEG. AC_ARG_WITH(jpeg, [ --without-jpeg disable JPEG support], [with_jpeg=$withval], [with_jpeg='yes']) # Disable TIFF. AC_ARG_WITH(tiff, [ --without-tiff disable TIFF support], [with_tiff=$withval], [with_tiff='yes']) # Disable ZLIB AC_ARG_WITH(zlib, [ --without-zlib disable ZLIB support], [with_zlib=$withval], [with_zlib='yes']) # Check for programs AC_PROG_CC_STDC AC_PROG_CPP AC_PROG_CXX #AM_PROG_LD #AC_SUBST(LD) #AC_PROG_INSTALL #AC_PROG_MAKE_SET #AC_PROG_LN_S # # Tests for Windows # AC_EXEEXT AC_OBJEXT # Configure libtool AC_ENABLE_SHARED AC_ENABLE_STATIC AC_LIBTOOL_WIN32_DLL AC_LIBTOOL_SETUP AC_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS) # Add configure option --enable-maintainer-mode which enables dependency # checking and generation useful to package maintainers. This is made an # option to avoid confusing end users. AM_MAINTAINER_MODE # If the C compiler supports the keyword inline, do nothing. Otherwise # define inline to __inline__ or __inline if it accepts one of those, # otherwise define inline to be empty. AC_C_INLINE AC_SUBST(inline) # If words are stored with the most significant byte first (like # Motorola and SPARC CPUs), define `WORDS_BIGENDIAN'. AC_C_BIGENDIAN # # Find math library # LIB_MATH='' AC_CHECK_LIB(m,sqrt,LIB_MATH="-lm",,) LIBS="$LIB_MATH $LIBS" AC_SUBST(LIB_MATH) # # Check for JPEG # have_jpeg='no' LIB_JPEG='' if test ! "$with_jpeg" = 'no' then AC_MSG_CHECKING(for JPEG support ) AC_MSG_RESULT() failed=0; passed=0; AC_CHECK_HEADER(jconfig.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_HEADER(jerror.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_HEADER(jmorecfg.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_HEADER(jpeglib.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_LIB(jpeg,jpeg_read_header,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) # Test for compatible JPEG library if test ! "$ac_cv_jpeg_version_ok" = 'yes' ; then AC_CACHE_CHECK(for JPEG library is version 6b or later, ac_cv_jpeg_version_ok, [AC_TRY_COMPILE( #include #include #include , changequote(<<, >>)dnl << #if JPEG_LIB_VERSION < 62 #error IJG JPEG library must be version 6b or newer! #endif return 0; >>, changequote([, ])dnl ac_cv_jpeg_version_ok='yes', ac_cv_jpeg_version_ok='no')]) if test "$ac_cv_jpeg_version_ok" = 'yes' ; then AC_MSG_RESULT(yes) passed=`expr $passed + 1` else AC_MSG_RESULT(no) failed=`expr $failed + 1` fi fi AC_MSG_CHECKING(if JPEG package is complete) if test $passed -gt 0 then if test $failed -gt 0 then AC_MSG_RESULT(no -- some components failed test) have_jpeg='no (failed tests)' else LIB_JPEG='-ljpeg' LIBS="$LIB_JPEG $LIBS" AC_DEFINE(HasJPEG,1,Define if you have JPEG library) AC_MSG_RESULT(yes) have_jpeg='yes' fi else AC_MSG_RESULT(no) fi fi AM_CONDITIONAL(HasJPEG, test "$have_jpeg" = 'yes') AC_SUBST(LIB_JPEG) # # Check for ZLIB # have_zlib='no' dnl PNG requires zlib so enable zlib check if PNG is requested if test ! "$with_zlib" = 'no' || test ! "$with_png" = 'no' then LIB_ZLIB='' AC_MSG_CHECKING(for ZLIB support ) AC_MSG_RESULT() failed=0; passed=0; AC_CHECK_HEADER(zconf.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_HEADER(zlib.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_LIB(z,compress,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_CHECK_LIB(z,uncompress,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_CHECK_LIB(z,deflate,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_CHECK_LIB(z,inflate,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_CHECK_LIB(z,gzseek,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_CHECK_LIB(z,gztell,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_MSG_CHECKING(if ZLIB package is complete) if test $passed -gt 0 then if test $failed -gt 0 then AC_MSG_RESULT(no -- some components failed test) have_zlib='no (failed tests)' else LIB_ZLIB='-lz' LIBS="$LIB_ZLIB $LIBS" AC_DEFINE(HasZLIB,1,Define if you have zlib compression library) AC_MSG_RESULT(yes) have_zlib='yes' fi else AC_MSG_RESULT(no) fi fi AM_CONDITIONAL(HasZLIB, test "$have_zlib" = 'yes') AC_SUBST(LIB_ZLIB) # # Check for TIFF # have_tiff='no' LIB_TIFF='' if test ! "$with_tiff" = 'no' then AC_MSG_CHECKING(for TIFF support ) AC_MSG_RESULT() failed=0; passed=0; AC_CHECK_HEADER(tiff.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_HEADER(tiffio.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`) AC_CHECK_LIB(tiff,TIFFOpen,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_CHECK_LIB(tiff,TIFFClientOpen,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_CHECK_LIB(tiff,TIFFIsByteSwapped,passed=`expr $passed + 1`,failed=`expr $failed + 1`,) AC_MSG_CHECKING(if TIFF package is complete) if test $passed -gt 0 then if test $failed -gt 0 then AC_MSG_RESULT(no -- some components failed test) have_tiff='no (failed tests)' else LIB_TIFF='-ltiff' LIBS="$LIB_TIFF $LIBS" AC_DEFINE(HasTIFF,1,Define if you have TIFF library) AC_MSG_RESULT(yes) have_tiff='yes' AC_CHECK_HEADERS(tiffconf.h) fi else AC_MSG_RESULT(no) fi fi AM_CONDITIONAL(HasTIFF, test "$have_tiff" = 'yes') AC_SUBST(LIB_TIFF) # Libraries that the LCMS library depends on LCMS_LIB_DEPLIBS="$LIB_MATH" LCMS_LIB_DEPLIBS=`echo $LCMS_LIB_DEPLIBS | sed -e 's/ */ /g'` AC_SUBST(LCMS_LIB_DEPLIBS) # Libraries that the jpegicc program depends on JPEGICC_DEPLIBS="$LIB_JPEG $LIB_MATH" JPEGICC_DEPLIBS=`echo $JPEGICC_DEPLIBS | sed -e 's/ */ /g'` AC_SUBST(JPEGICC_DEPLIBS) # Libraries that the tifficc program depends on TIFFICC_DEPLIBS="$LIB_TIFF $LIB_JPEG $LIB_ZLIB $LIB_MATH" TIFFICC_DEPLIBS=`echo $TIFFICC_DEPLIBS | sed -e 's/ */ /g'` AC_SUBST(TIFFICC_DEPLIBS) LIBS='' # # Perform substitutions # AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([lcms2.pc]) AC_CONFIG_FILES([include/Makefile]) AC_CONFIG_FILES([src/Makefile]) AC_CONFIG_FILES([utils/tificc/Makefile]) AC_CONFIG_FILES([utils/transicc/Makefile]) AC_CONFIG_FILES([utils/linkicc/Makefile]) AC_CONFIG_FILES([utils/jpgicc/Makefile]) AC_CONFIG_FILES([utils/psicc/Makefile]) AC_CONFIG_FILES([testbed/Makefile]) AC_OUTPUT lcms2-2.5/include/0000755002406300000240000000000012163061555013354 5ustar mariamauserslcms2-2.5/include/Makefile.in0000644002406300000240000003477712163060730015435 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for include directory # Based on a work by Bob Friesenhahn VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = include DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(includedir)" HEADERS = $(include_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ include_HEADERS = lcms2.h lcms2_plugin.h EXTRA_DIST = lcms2.h lcms2_plugin.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-includeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/include/lcms2_plugin.h0000644002406300000240000006515112163060730016125 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // // This is the plug-in header file. Normal LittleCMS clients should not use it. // It is provided for plug-in writters that may want to access the support // functions to do low level operations. All plug-in related structures // are defined here. Including this file forces to include the standard API too. #ifndef _lcms_plugin_H // Deal with Microsoft's attempt at deprecating C standard runtime functions #ifdef _MSC_VER # if (_MSC_VER >= 1400) # ifndef _CRT_SECURE_NO_DEPRECATE # define _CRT_SECURE_NO_DEPRECATE # endif # ifndef _CRT_SECURE_NO_WARNINGS # define _CRT_SECURE_NO_WARNINGS # endif # endif #endif #ifndef _lcms2_H #include "lcms2.h" #endif // We need some standard C functions. #include #include #include #include #include #ifndef CMS_USE_CPP_API # ifdef __cplusplus extern "C" { # endif #endif // Vector & Matrix operations ----------------------------------------------------------------------- // Axis of the matrix/array. No specific meaning at all. #define VX 0 #define VY 1 #define VZ 2 // Vectors typedef struct { cmsFloat64Number n[3]; } cmsVEC3; // 3x3 Matrix typedef struct { cmsVEC3 v[3]; } cmsMAT3; CMSAPI void CMSEXPORT _cmsVEC3init(cmsVEC3* r, cmsFloat64Number x, cmsFloat64Number y, cmsFloat64Number z); CMSAPI void CMSEXPORT _cmsVEC3minus(cmsVEC3* r, const cmsVEC3* a, const cmsVEC3* b); CMSAPI void CMSEXPORT _cmsVEC3cross(cmsVEC3* r, const cmsVEC3* u, const cmsVEC3* v); CMSAPI cmsFloat64Number CMSEXPORT _cmsVEC3dot(const cmsVEC3* u, const cmsVEC3* v); CMSAPI cmsFloat64Number CMSEXPORT _cmsVEC3length(const cmsVEC3* a); CMSAPI cmsFloat64Number CMSEXPORT _cmsVEC3distance(const cmsVEC3* a, const cmsVEC3* b); CMSAPI void CMSEXPORT _cmsMAT3identity(cmsMAT3* a); CMSAPI cmsBool CMSEXPORT _cmsMAT3isIdentity(const cmsMAT3* a); CMSAPI void CMSEXPORT _cmsMAT3per(cmsMAT3* r, const cmsMAT3* a, const cmsMAT3* b); CMSAPI cmsBool CMSEXPORT _cmsMAT3inverse(const cmsMAT3* a, cmsMAT3* b); CMSAPI cmsBool CMSEXPORT _cmsMAT3solve(cmsVEC3* x, cmsMAT3* a, cmsVEC3* b); CMSAPI void CMSEXPORT _cmsMAT3eval(cmsVEC3* r, const cmsMAT3* a, const cmsVEC3* v); // Error logging ------------------------------------------------------------------------------------- CMSAPI void CMSEXPORT cmsSignalError(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *ErrorText, ...); // Memory management ---------------------------------------------------------------------------------- CMSAPI void* CMSEXPORT _cmsMalloc(cmsContext ContextID, cmsUInt32Number size); CMSAPI void* CMSEXPORT _cmsMallocZero(cmsContext ContextID, cmsUInt32Number size); CMSAPI void* CMSEXPORT _cmsCalloc(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size); CMSAPI void* CMSEXPORT _cmsRealloc(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize); CMSAPI void CMSEXPORT _cmsFree(cmsContext ContextID, void* Ptr); CMSAPI void* CMSEXPORT _cmsDupMem(cmsContext ContextID, const void* Org, cmsUInt32Number size); // I/O handler ---------------------------------------------------------------------------------- struct _cms_io_handler { void* stream; // Associated stream, which is implemented differently depending on media. cmsContext ContextID; cmsUInt32Number UsedSpace; cmsUInt32Number ReportedSize; char PhysicalFile[cmsMAX_PATH]; cmsUInt32Number (* Read)(struct _cms_io_handler* iohandler, void *Buffer, cmsUInt32Number size, cmsUInt32Number count); cmsBool (* Seek)(struct _cms_io_handler* iohandler, cmsUInt32Number offset); cmsBool (* Close)(struct _cms_io_handler* iohandler); cmsUInt32Number (* Tell)(struct _cms_io_handler* iohandler); cmsBool (* Write)(struct _cms_io_handler* iohandler, cmsUInt32Number size, const void* Buffer); }; // Endianess adjust functions CMSAPI cmsUInt16Number CMSEXPORT _cmsAdjustEndianess16(cmsUInt16Number Word); CMSAPI cmsUInt32Number CMSEXPORT _cmsAdjustEndianess32(cmsUInt32Number Value); CMSAPI void CMSEXPORT _cmsAdjustEndianess64(cmsUInt64Number* Result, cmsUInt64Number* QWord); // Helper IO functions CMSAPI cmsBool CMSEXPORT _cmsReadUInt8Number(cmsIOHANDLER* io, cmsUInt8Number* n); CMSAPI cmsBool CMSEXPORT _cmsReadUInt16Number(cmsIOHANDLER* io, cmsUInt16Number* n); CMSAPI cmsBool CMSEXPORT _cmsReadUInt32Number(cmsIOHANDLER* io, cmsUInt32Number* n); CMSAPI cmsBool CMSEXPORT _cmsReadFloat32Number(cmsIOHANDLER* io, cmsFloat32Number* n); CMSAPI cmsBool CMSEXPORT _cmsReadUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n); CMSAPI cmsBool CMSEXPORT _cmsRead15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number* n); CMSAPI cmsBool CMSEXPORT _cmsReadXYZNumber(cmsIOHANDLER* io, cmsCIEXYZ* XYZ); CMSAPI cmsBool CMSEXPORT _cmsReadUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, cmsUInt16Number* Array); CMSAPI cmsBool CMSEXPORT _cmsWriteUInt8Number(cmsIOHANDLER* io, cmsUInt8Number n); CMSAPI cmsBool CMSEXPORT _cmsWriteUInt16Number(cmsIOHANDLER* io, cmsUInt16Number n); CMSAPI cmsBool CMSEXPORT _cmsWriteUInt32Number(cmsIOHANDLER* io, cmsUInt32Number n); CMSAPI cmsBool CMSEXPORT _cmsWriteFloat32Number(cmsIOHANDLER* io, cmsFloat32Number n); CMSAPI cmsBool CMSEXPORT _cmsWriteUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n); CMSAPI cmsBool CMSEXPORT _cmsWrite15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number n); CMSAPI cmsBool CMSEXPORT _cmsWriteXYZNumber(cmsIOHANDLER* io, const cmsCIEXYZ* XYZ); CMSAPI cmsBool CMSEXPORT _cmsWriteUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, const cmsUInt16Number* Array); // ICC base tag typedef struct { cmsTagTypeSignature sig; cmsInt8Number reserved[4]; } _cmsTagBase; // Type base helper functions CMSAPI cmsTagTypeSignature CMSEXPORT _cmsReadTypeBase(cmsIOHANDLER* io); CMSAPI cmsBool CMSEXPORT _cmsWriteTypeBase(cmsIOHANDLER* io, cmsTagTypeSignature sig); // Alignment functions CMSAPI cmsBool CMSEXPORT _cmsReadAlignment(cmsIOHANDLER* io); CMSAPI cmsBool CMSEXPORT _cmsWriteAlignment(cmsIOHANDLER* io); // To deal with text streams. 2K at most CMSAPI cmsBool CMSEXPORT _cmsIOPrintf(cmsIOHANDLER* io, const char* frm, ...); // Fixed point helper functions CMSAPI cmsFloat64Number CMSEXPORT _cms8Fixed8toDouble(cmsUInt16Number fixed8); CMSAPI cmsUInt16Number CMSEXPORT _cmsDoubleTo8Fixed8(cmsFloat64Number val); CMSAPI cmsFloat64Number CMSEXPORT _cms15Fixed16toDouble(cmsS15Fixed16Number fix32); CMSAPI cmsS15Fixed16Number CMSEXPORT _cmsDoubleTo15Fixed16(cmsFloat64Number v); // Date/time helper functions CMSAPI void CMSEXPORT _cmsEncodeDateTimeNumber(cmsDateTimeNumber *Dest, const struct tm *Source); CMSAPI void CMSEXPORT _cmsDecodeDateTimeNumber(const cmsDateTimeNumber *Source, struct tm *Dest); //---------------------------------------------------------------------------------------------------------- // Shared callbacks for user data typedef void (* _cmsFreeUserDataFn)(cmsContext ContextID, void* Data); typedef void* (* _cmsDupUserDataFn)(cmsContext ContextID, const void* Data); //---------------------------------------------------------------------------------------------------------- // Plug-in foundation #define cmsPluginMagicNumber 0x61637070 // 'acpp' #define cmsPluginMemHandlerSig 0x6D656D48 // 'memH' #define cmsPluginInterpolationSig 0x696E7048 // 'inpH' #define cmsPluginParametricCurveSig 0x70617248 // 'parH' #define cmsPluginFormattersSig 0x66726D48 // 'frmH #define cmsPluginTagTypeSig 0x74797048 // 'typH' #define cmsPluginTagSig 0x74616748 // 'tagH' #define cmsPluginRenderingIntentSig 0x696E7448 // 'intH' #define cmsPluginMultiProcessElementSig 0x6D706548 // 'mpeH' #define cmsPluginOptimizationSig 0x6F707448 // 'optH' #define cmsPluginTransformSig 0x7A666D48 // 'xfmH' typedef struct _cmsPluginBaseStruct { cmsUInt32Number Magic; // 'acpp' signature cmsUInt32Number ExpectedVersion; // Expected version of LittleCMS cmsUInt32Number Type; // Type of plug-in struct _cmsPluginBaseStruct* Next; // For multiple plugin definition. NULL for end of list. } cmsPluginBase; // Maximum number of types in a plugin array #define MAX_TYPES_IN_LCMS_PLUGIN 20 //---------------------------------------------------------------------------------------------------------- // Memory handler. Each new plug-in type replaces current behaviour typedef struct { cmsPluginBase base; // Required void * (* MallocPtr)(cmsContext ContextID, cmsUInt32Number size); void (* FreePtr)(cmsContext ContextID, void *Ptr); void * (* ReallocPtr)(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize); // Optional void * (* MallocZeroPtr)(cmsContext ContextID, cmsUInt32Number size); void * (* CallocPtr)(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size); void * (* DupPtr)(cmsContext ContextID, const void* Org, cmsUInt32Number size); } cmsPluginMemHandler; // ------------------------------------------------------------------------------------------------------------------ // Interpolation. 16 bits and floating point versions. struct _cms_interp_struc; // Interpolation callbacks // 16 bits forward interpolation. This function performs precision-limited linear interpolation // and is supposed to be quite fast. Implementation may be tetrahedral or trilinear, and plug-ins may // choose to implement any other interpolation algorithm. typedef void (* _cmsInterpFn16)(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const struct _cms_interp_struc* p); // Floating point forward interpolation. Full precision interpolation using floats. This is not a // time critical function. Implementation may be tetrahedral or trilinear, and plug-ins may // choose to implement any other interpolation algorithm. typedef void (* _cmsInterpFnFloat)(cmsFloat32Number const Input[], cmsFloat32Number Output[], const struct _cms_interp_struc* p); // This type holds a pointer to an interpolator that can be either 16 bits or float typedef union { _cmsInterpFn16 Lerp16; // Forward interpolation in 16 bits _cmsInterpFnFloat LerpFloat; // Forward interpolation in floating point } cmsInterpFunction; // Flags for interpolator selection #define CMS_LERP_FLAGS_16BITS 0x0000 // The default #define CMS_LERP_FLAGS_FLOAT 0x0001 // Requires different implementation #define CMS_LERP_FLAGS_TRILINEAR 0x0100 // Hint only #define MAX_INPUT_DIMENSIONS 8 typedef struct _cms_interp_struc { // Used on all interpolations. Supplied by lcms2 when calling the interpolation function cmsContext ContextID; // The calling thread cmsUInt32Number dwFlags; // Keep original flags cmsUInt32Number nInputs; // != 1 only in 3D interpolation cmsUInt32Number nOutputs; // != 1 only in 3D interpolation cmsUInt32Number nSamples[MAX_INPUT_DIMENSIONS]; // Valid on all kinds of tables cmsUInt32Number Domain[MAX_INPUT_DIMENSIONS]; // Domain = nSamples - 1 cmsUInt32Number opta[MAX_INPUT_DIMENSIONS]; // Optimization for 3D CLUT. This is the number of nodes premultiplied for each // dimension. For example, in 7 nodes, 7, 7^2 , 7^3, 7^4, etc. On non-regular // Samplings may vary according of the number of nodes for each dimension. const void *Table; // Points to the actual interpolation table cmsInterpFunction Interpolation; // Points to the function to do the interpolation } cmsInterpParams; // Interpolators factory typedef cmsInterpFunction (* cmsInterpFnFactory)(cmsUInt32Number nInputChannels, cmsUInt32Number nOutputChannels, cmsUInt32Number dwFlags); // The plug-in typedef struct { cmsPluginBase base; // Points to a user-supplied function which implements the factory cmsInterpFnFactory InterpolatorsFactory; } cmsPluginInterpolation; //---------------------------------------------------------------------------------------------------------- // Parametric curves. A negative type means same function but analytically inverted. Max. number of params is 10 // Evaluator callback for user-suplied parametric curves. May implement more than one type typedef cmsFloat64Number (* cmsParametricCurveEvaluator)(cmsInt32Number Type, const cmsFloat64Number Params[10], cmsFloat64Number R); // Plug-in may implement an arbitrary number of parametric curves typedef struct { cmsPluginBase base; cmsUInt32Number nFunctions; // Number of supported functions cmsUInt32Number FunctionTypes[MAX_TYPES_IN_LCMS_PLUGIN]; // The identification types cmsUInt32Number ParameterCount[MAX_TYPES_IN_LCMS_PLUGIN]; // Number of parameters for each function cmsParametricCurveEvaluator Evaluator; // The evaluator } cmsPluginParametricCurves; //---------------------------------------------------------------------------------------------------------- // Formatters. This plug-in adds new handlers, replacing them if they already exist. Formatters dealing with // cmsFloat32Number (bps = 4) or double (bps = 0) types are requested via FormatterFloat callback. Others come across // Formatter16 callback struct _cmstransform_struct; typedef cmsUInt8Number* (* cmsFormatter16)(register struct _cmstransform_struct* CMMcargo, register cmsUInt16Number Values[], register cmsUInt8Number* Buffer, register cmsUInt32Number Stride); typedef cmsUInt8Number* (* cmsFormatterFloat)(struct _cmstransform_struct* CMMcargo, cmsFloat32Number Values[], cmsUInt8Number* Buffer, cmsUInt32Number Stride); // This type holds a pointer to a formatter that can be either 16 bits or cmsFloat32Number typedef union { cmsFormatter16 Fmt16; cmsFormatterFloat FmtFloat; } cmsFormatter; #define CMS_PACK_FLAGS_16BITS 0x0000 #define CMS_PACK_FLAGS_FLOAT 0x0001 typedef enum { cmsFormatterInput=0, cmsFormatterOutput=1 } cmsFormatterDirection; typedef cmsFormatter (* cmsFormatterFactory)(cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8 cmsFormatterDirection Dir, cmsUInt32Number dwFlags); // precision // Plug-in may implement an arbitrary number of formatters typedef struct { cmsPluginBase base; cmsFormatterFactory FormattersFactory; } cmsPluginFormatters; //---------------------------------------------------------------------------------------------------------- // Tag type handler. Each type is free to return anything it wants, and it is up to the caller to // know in advance what is the type contained in the tag. typedef struct _cms_typehandler_struct { cmsTagTypeSignature Signature; // The signature of the type // Allocates and reads items void * (* ReadPtr)(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag); // Writes n Items cmsBool (* WritePtr)(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems); // Duplicate an item or array of items void* (* DupPtr)(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n); // Free all resources void (* FreePtr)(struct _cms_typehandler_struct* self, void *Ptr); // Additional parameters used by the calling thread cmsContext ContextID; cmsUInt32Number ICCVersion; } cmsTagTypeHandler; // Each plug-in implements a single type typedef struct { cmsPluginBase base; cmsTagTypeHandler Handler; } cmsPluginTagType; //---------------------------------------------------------------------------------------------------------- // This is the tag plugin, which identifies tags. For writing, a pointer to function is provided. // This function should return the desired type for this tag, given the version of profile // and the data being serialized. typedef struct { cmsUInt32Number ElemCount; // If this tag needs an array, how many elements should keep // For reading. cmsUInt32Number nSupportedTypes; // In how many types this tag can come (MAX_TYPES_IN_LCMS_PLUGIN maximum) cmsTagTypeSignature SupportedTypes[MAX_TYPES_IN_LCMS_PLUGIN]; // For writting cmsTagTypeSignature (* DecideType)(cmsFloat64Number ICCVersion, const void *Data); } cmsTagDescriptor; // Plug-in implements a single tag typedef struct { cmsPluginBase base; cmsTagSignature Signature; cmsTagDescriptor Descriptor; } cmsPluginTag; //---------------------------------------------------------------------------------------------------------- // Custom intents. This function should join all profiles specified in the array in // a single LUT. Any custom intent in the chain redirects to custom function. If more than // one custom intent is found, the one located first is invoked. Usually users should use only one // custom intent, so mixing custom intents in same multiprofile transform is not supported. typedef cmsPipeline* (* cmsIntentFn)( cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); // Each plug-in defines a single intent number. typedef struct { cmsPluginBase base; cmsUInt32Number Intent; cmsIntentFn Link; char Description[256]; } cmsPluginRenderingIntent; // The default ICC intents (perceptual, saturation, rel.col and abs.col) CMSAPI cmsPipeline* CMSEXPORT _cmsDefaultICCintents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); //---------------------------------------------------------------------------------------------------------- // Pipelines, Multi Process Elements. typedef void (* _cmsStageEvalFn) (const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage* mpe); typedef void*(* _cmsStageDupElemFn) (cmsStage* mpe); typedef void (* _cmsStageFreeElemFn) (cmsStage* mpe); // This function allocates a generic MPE CMSAPI cmsStage* CMSEXPORT _cmsStageAllocPlaceholder(cmsContext ContextID, cmsStageSignature Type, cmsUInt32Number InputChannels, cmsUInt32Number OutputChannels, _cmsStageEvalFn EvalPtr, // Points to fn that evaluates the element (always in floating point) _cmsStageDupElemFn DupElemPtr, // Points to a fn that duplicates the stage _cmsStageFreeElemFn FreePtr, // Points to a fn that sets the element free void* Data); // A generic pointer to whatever memory needed by the element typedef struct { cmsPluginBase base; cmsTagTypeHandler Handler; } cmsPluginMultiProcessElement; // Data kept in "Element" member of cmsStage // Curves typedef struct { cmsUInt32Number nCurves; cmsToneCurve** TheCurves; } _cmsStageToneCurvesData; // Matrix typedef struct { cmsFloat64Number* Double; // floating point for the matrix cmsFloat64Number* Offset; // The offset } _cmsStageMatrixData; // CLUT typedef struct { union { // Can have only one of both representations at same time cmsUInt16Number* T; // Points to the table 16 bits table cmsFloat32Number* TFloat; // Points to the cmsFloat32Number table } Tab; cmsInterpParams* Params; cmsUInt32Number nEntries; cmsBool HasFloatValues; } _cmsStageCLutData; //---------------------------------------------------------------------------------------------------------- // Optimization. Using this plug-in, additional optimization strategies may be implemented. // The function should return TRUE if any optimization is done on the LUT, this terminates // the optimization search. Or FALSE if it is unable to optimize and want to give a chance // to the rest of optimizers. typedef void (* _cmsOPTeval16Fn)(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register const void* Data); typedef cmsBool (* _cmsOPToptimizeFn)(cmsPipeline** Lut, cmsUInt32Number Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags); // This function may be used to set the optional evaluator and a block of private data. If private data is being used, an optional // duplicator and free functions should also be specified in order to duplicate the LUT construct. Use NULL to inhibit such functionality. CMSAPI void CMSEXPORT _cmsPipelineSetOptimizationParameters(cmsPipeline* Lut, _cmsOPTeval16Fn Eval16, void* PrivateData, _cmsFreeUserDataFn FreePrivateDataFn, _cmsDupUserDataFn DupPrivateDataFn); typedef struct { cmsPluginBase base; // Optimize entry point _cmsOPToptimizeFn OptimizePtr; } cmsPluginOptimization; //---------------------------------------------------------------------------------------------------------- // Full xform typedef void (* _cmsTransformFn)(struct _cmstransform_struct *CMMcargo, const void* InputBuffer, void* OutputBuffer, cmsUInt32Number Size, cmsUInt32Number Stride); typedef cmsBool (* _cmsTransformFactory)(_cmsTransformFn* xform, void** UserData, _cmsFreeUserDataFn* FreePrivateDataFn, cmsPipeline** Lut, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags); // Retrieve user data as specified by the factory CMSAPI void CMSEXPORT _cmsSetTransformUserData(struct _cmstransform_struct *CMMcargo, void* ptr, _cmsFreeUserDataFn FreePrivateDataFn); CMSAPI void * CMSEXPORT _cmsGetTransformUserData(struct _cmstransform_struct *CMMcargo); // Retrieve formatters CMSAPI void CMSEXPORT _cmsGetTransformFormatters16 (struct _cmstransform_struct *CMMcargo, cmsFormatter16* FromInput, cmsFormatter16* ToOutput); CMSAPI void CMSEXPORT _cmsGetTransformFormattersFloat(struct _cmstransform_struct *CMMcargo, cmsFormatterFloat* FromInput, cmsFormatterFloat* ToOutput); typedef struct { cmsPluginBase base; // Transform entry point _cmsTransformFactory Factory; } cmsPluginTransform; #ifndef CMS_USE_CPP_API # ifdef __cplusplus } # endif #endif #define _lcms_plugin_H #endif lcms2-2.5/include/Makefile.am0000644002406300000240000000022712163060730015403 0ustar mariamausers# # Makefile for include directory # Based on a work by Bob Friesenhahn include_HEADERS = lcms2.h lcms2_plugin.h EXTRA_DIST = lcms2.h lcms2_plugin.h lcms2-2.5/include/lcms2.h0000644002406300000240000027702312163060730014552 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2013 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // // Version 2.5 // #ifndef _lcms2_H // ********** Configuration toggles **************************************** // Uncomment this one if you are using big endian machines // #define CMS_USE_BIG_ENDIAN 1 // Uncomment this one if your compiler/machine does NOT support the // "long long" type. // #define CMS_DONT_USE_INT64 1 // Uncomment this if your compiler doesn't work with fast floor function // #define CMS_DONT_USE_FAST_FLOOR 1 // Uncomment this line if you want lcms to use the black point tag in profile, // if commented, lcms will compute the black point by its own. // It is safer to leave it commented out // #define CMS_USE_PROFILE_BLACK_POINT_TAG 1 // Uncomment this line if you are compiling as C++ and want a C++ API // #define CMS_USE_CPP_API // Uncomment this line if you need strict CGATS syntax. Makes CGATS files to // require "KEYWORD" on undefined identifiers, keep it comented out unless needed // #define CMS_STRICT_CGATS 1 // Uncomment to get rid of the tables for "half" float support // #define CMS_NO_HALF_SUPPORT 1 // ********** End of configuration toggles ****************************** // Needed for streams #include // Needed for portability (C99 per 7.1.2) #include #include #include #ifndef CMS_USE_CPP_API # ifdef __cplusplus extern "C" { # endif #endif // Version/release #define LCMS_VERSION 2050 // I will give the chance of redefining basic types for compilers that are not fully C99 compliant #ifndef CMS_BASIC_TYPES_ALREADY_DEFINED // Base types typedef unsigned char cmsUInt8Number; // That is guaranteed by the C99 spec typedef signed char cmsInt8Number; // That is guaranteed by the C99 spec #if CHAR_BIT != 8 # error "Unable to find 8 bit type, unsupported compiler" #endif // IEEE float storage numbers typedef float cmsFloat32Number; typedef double cmsFloat64Number; // 16-bit base types #if (USHRT_MAX == 65535U) typedef unsigned short cmsUInt16Number; #elif (UINT_MAX == 65535U) typedef unsigned int cmsUInt16Number; #else # error "Unable to find 16 bits unsigned type, unsupported compiler" #endif #if (SHRT_MAX == 32767) typedef short cmsInt16Number; #elif (INT_MAX == 32767) typedef int cmsInt16Number; #else # error "Unable to find 16 bits signed type, unsupported compiler" #endif // 32-bit base type #if (UINT_MAX == 4294967295U) typedef unsigned int cmsUInt32Number; #elif (ULONG_MAX == 4294967295U) typedef unsigned long cmsUInt32Number; #else # error "Unable to find 32 bit unsigned type, unsupported compiler" #endif #if (INT_MAX == +2147483647) typedef int cmsInt32Number; #elif (LONG_MAX == +2147483647) typedef long cmsInt32Number; #else # error "Unable to find 32 bit signed type, unsupported compiler" #endif // 64-bit base types #ifndef CMS_DONT_USE_INT64 # if (ULONG_MAX == 18446744073709551615U) typedef unsigned long cmsUInt64Number; # elif (ULLONG_MAX == 18446744073709551615U) typedef unsigned long long cmsUInt64Number; # else # define CMS_DONT_USE_INT64 1 # endif # if (LONG_MAX == +9223372036854775807) typedef long cmsInt64Number; # elif (LLONG_MAX == +9223372036854775807) typedef long long cmsInt64Number; # else # define CMS_DONT_USE_INT64 1 # endif #endif #endif // In the case 64 bit numbers are not supported by the compiler #ifdef CMS_DONT_USE_INT64 typedef cmsUInt32Number cmsUInt64Number[2]; typedef cmsInt32Number cmsInt64Number[2]; #endif // Derivative types typedef cmsUInt32Number cmsSignature; typedef cmsUInt16Number cmsU8Fixed8Number; typedef cmsInt32Number cmsS15Fixed16Number; typedef cmsUInt32Number cmsU16Fixed16Number; // Boolean type, which will be using the native integer typedef int cmsBool; // Try to detect windows #if defined (_WIN32) || defined(_WIN64) || defined(WIN32) || defined(_WIN32_) # define CMS_IS_WINDOWS_ 1 #endif #ifdef _MSC_VER # define CMS_IS_WINDOWS_ 1 #endif #ifdef __BORLANDC__ # define CMS_IS_WINDOWS_ 1 #endif // Try to detect big endian platforms. This list can be endless, so only some checks are performed over here. // you can pass this toggle to the compiler by using -DCMS_USE_BIG_ENDIAN or something similar #if defined(_HOST_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || defined(WORDS_BIGENDIAN) # define CMS_USE_BIG_ENDIAN 1 #endif #if defined(__sgi__) || defined(__sgi) || defined(__powerpc__) || defined(sparc) # define CMS_USE_BIG_ENDIAN 1 #endif #if defined(__ppc__) || defined(__s390__) || defined(__s390x__) # define CMS_USE_BIG_ENDIAN 1 #endif #ifdef TARGET_CPU_PPC # if TARGET_CPU_PPC # define CMS_USE_BIG_ENDIAN 1 # endif #endif #ifdef macintosh # ifdef __BIG_ENDIAN__ # define CMS_USE_BIG_ENDIAN 1 # endif #endif // Calling convention -- this is hardly platform and compiler dependent #ifdef CMS_IS_WINDOWS_ # if defined(CMS_DLL) || defined(CMS_DLL_BUILD) # ifdef __BORLANDC__ # define CMSEXPORT __stdcall _export # define CMSAPI # else # define CMSEXPORT _stdcall # ifdef CMS_DLL_BUILD # define CMSAPI __declspec(dllexport) # else # define CMSAPI __declspec(dllimport) # endif # endif # else # define CMSEXPORT # define CMSAPI # endif #else # define CMSEXPORT # define CMSAPI #endif // Some common definitions #define cmsMAX_PATH 256 #ifndef FALSE # define FALSE 0 #endif #ifndef TRUE # define TRUE 1 #endif // D50 XYZ normalized to Y=1.0 #define cmsD50X 0.9642 #define cmsD50Y 1.0 #define cmsD50Z 0.8249 // V4 perceptual black #define cmsPERCEPTUAL_BLACK_X 0.00336 #define cmsPERCEPTUAL_BLACK_Y 0.0034731 #define cmsPERCEPTUAL_BLACK_Z 0.00287 // Definitions in ICC spec #define cmsMagicNumber 0x61637370 // 'acsp' #define lcmsSignature 0x6c636d73 // 'lcms' // Base ICC type definitions typedef enum { cmsSigChromaticityType = 0x6368726D, // 'chrm' cmsSigColorantOrderType = 0x636C726F, // 'clro' cmsSigColorantTableType = 0x636C7274, // 'clrt' cmsSigCrdInfoType = 0x63726469, // 'crdi' cmsSigCurveType = 0x63757276, // 'curv' cmsSigDataType = 0x64617461, // 'data' cmsSigDictType = 0x64696374, // 'dict' cmsSigDateTimeType = 0x6474696D, // 'dtim' cmsSigDeviceSettingsType = 0x64657673, // 'devs' cmsSigLut16Type = 0x6d667432, // 'mft2' cmsSigLut8Type = 0x6d667431, // 'mft1' cmsSigLutAtoBType = 0x6d414220, // 'mAB ' cmsSigLutBtoAType = 0x6d424120, // 'mBA ' cmsSigMeasurementType = 0x6D656173, // 'meas' cmsSigMultiLocalizedUnicodeType = 0x6D6C7563, // 'mluc' cmsSigMultiProcessElementType = 0x6D706574, // 'mpet' cmsSigNamedColorType = 0x6E636f6C, // 'ncol' -- DEPRECATED! cmsSigNamedColor2Type = 0x6E636C32, // 'ncl2' cmsSigParametricCurveType = 0x70617261, // 'para' cmsSigProfileSequenceDescType = 0x70736571, // 'pseq' cmsSigProfileSequenceIdType = 0x70736964, // 'psid' cmsSigResponseCurveSet16Type = 0x72637332, // 'rcs2' cmsSigS15Fixed16ArrayType = 0x73663332, // 'sf32' cmsSigScreeningType = 0x7363726E, // 'scrn' cmsSigSignatureType = 0x73696720, // 'sig ' cmsSigTextType = 0x74657874, // 'text' cmsSigTextDescriptionType = 0x64657363, // 'desc' cmsSigU16Fixed16ArrayType = 0x75663332, // 'uf32' cmsSigUcrBgType = 0x62666420, // 'bfd ' cmsSigUInt16ArrayType = 0x75693136, // 'ui16' cmsSigUInt32ArrayType = 0x75693332, // 'ui32' cmsSigUInt64ArrayType = 0x75693634, // 'ui64' cmsSigUInt8ArrayType = 0x75693038, // 'ui08' cmsSigVcgtType = 0x76636774, // 'vcgt' cmsSigViewingConditionsType = 0x76696577, // 'view' cmsSigXYZType = 0x58595A20 // 'XYZ ' } cmsTagTypeSignature; // Base ICC tag definitions typedef enum { cmsSigAToB0Tag = 0x41324230, // 'A2B0' cmsSigAToB1Tag = 0x41324231, // 'A2B1' cmsSigAToB2Tag = 0x41324232, // 'A2B2' cmsSigBlueColorantTag = 0x6258595A, // 'bXYZ' cmsSigBlueMatrixColumnTag = 0x6258595A, // 'bXYZ' cmsSigBlueTRCTag = 0x62545243, // 'bTRC' cmsSigBToA0Tag = 0x42324130, // 'B2A0' cmsSigBToA1Tag = 0x42324131, // 'B2A1' cmsSigBToA2Tag = 0x42324132, // 'B2A2' cmsSigCalibrationDateTimeTag = 0x63616C74, // 'calt' cmsSigCharTargetTag = 0x74617267, // 'targ' cmsSigChromaticAdaptationTag = 0x63686164, // 'chad' cmsSigChromaticityTag = 0x6368726D, // 'chrm' cmsSigColorantOrderTag = 0x636C726F, // 'clro' cmsSigColorantTableTag = 0x636C7274, // 'clrt' cmsSigColorantTableOutTag = 0x636C6F74, // 'clot' cmsSigColorimetricIntentImageStateTag = 0x63696973, // 'ciis' cmsSigCopyrightTag = 0x63707274, // 'cprt' cmsSigCrdInfoTag = 0x63726469, // 'crdi' cmsSigDataTag = 0x64617461, // 'data' cmsSigDateTimeTag = 0x6474696D, // 'dtim' cmsSigDeviceMfgDescTag = 0x646D6E64, // 'dmnd' cmsSigDeviceModelDescTag = 0x646D6464, // 'dmdd' cmsSigDeviceSettingsTag = 0x64657673, // 'devs' cmsSigDToB0Tag = 0x44324230, // 'D2B0' cmsSigDToB1Tag = 0x44324231, // 'D2B1' cmsSigDToB2Tag = 0x44324232, // 'D2B2' cmsSigDToB3Tag = 0x44324233, // 'D2B3' cmsSigBToD0Tag = 0x42324430, // 'B2D0' cmsSigBToD1Tag = 0x42324431, // 'B2D1' cmsSigBToD2Tag = 0x42324432, // 'B2D2' cmsSigBToD3Tag = 0x42324433, // 'B2D3' cmsSigGamutTag = 0x67616D74, // 'gamt' cmsSigGrayTRCTag = 0x6b545243, // 'kTRC' cmsSigGreenColorantTag = 0x6758595A, // 'gXYZ' cmsSigGreenMatrixColumnTag = 0x6758595A, // 'gXYZ' cmsSigGreenTRCTag = 0x67545243, // 'gTRC' cmsSigLuminanceTag = 0x6C756d69, // 'lumi' cmsSigMeasurementTag = 0x6D656173, // 'meas' cmsSigMediaBlackPointTag = 0x626B7074, // 'bkpt' cmsSigMediaWhitePointTag = 0x77747074, // 'wtpt' cmsSigNamedColorTag = 0x6E636f6C, // 'ncol' // Deprecated by the ICC cmsSigNamedColor2Tag = 0x6E636C32, // 'ncl2' cmsSigOutputResponseTag = 0x72657370, // 'resp' cmsSigPerceptualRenderingIntentGamutTag = 0x72696730, // 'rig0' cmsSigPreview0Tag = 0x70726530, // 'pre0' cmsSigPreview1Tag = 0x70726531, // 'pre1' cmsSigPreview2Tag = 0x70726532, // 'pre2' cmsSigProfileDescriptionTag = 0x64657363, // 'desc' cmsSigProfileDescriptionMLTag = 0x6473636d, // 'dscm' cmsSigProfileSequenceDescTag = 0x70736571, // 'pseq' cmsSigProfileSequenceIdTag = 0x70736964, // 'psid' cmsSigPs2CRD0Tag = 0x70736430, // 'psd0' cmsSigPs2CRD1Tag = 0x70736431, // 'psd1' cmsSigPs2CRD2Tag = 0x70736432, // 'psd2' cmsSigPs2CRD3Tag = 0x70736433, // 'psd3' cmsSigPs2CSATag = 0x70733273, // 'ps2s' cmsSigPs2RenderingIntentTag = 0x70733269, // 'ps2i' cmsSigRedColorantTag = 0x7258595A, // 'rXYZ' cmsSigRedMatrixColumnTag = 0x7258595A, // 'rXYZ' cmsSigRedTRCTag = 0x72545243, // 'rTRC' cmsSigSaturationRenderingIntentGamutTag = 0x72696732, // 'rig2' cmsSigScreeningDescTag = 0x73637264, // 'scrd' cmsSigScreeningTag = 0x7363726E, // 'scrn' cmsSigTechnologyTag = 0x74656368, // 'tech' cmsSigUcrBgTag = 0x62666420, // 'bfd ' cmsSigViewingCondDescTag = 0x76756564, // 'vued' cmsSigViewingConditionsTag = 0x76696577, // 'view' cmsSigVcgtTag = 0x76636774, // 'vcgt' cmsSigMetaTag = 0x6D657461 // 'meta' } cmsTagSignature; // ICC Technology tag typedef enum { cmsSigDigitalCamera = 0x6463616D, // 'dcam' cmsSigFilmScanner = 0x6673636E, // 'fscn' cmsSigReflectiveScanner = 0x7273636E, // 'rscn' cmsSigInkJetPrinter = 0x696A6574, // 'ijet' cmsSigThermalWaxPrinter = 0x74776178, // 'twax' cmsSigElectrophotographicPrinter = 0x6570686F, // 'epho' cmsSigElectrostaticPrinter = 0x65737461, // 'esta' cmsSigDyeSublimationPrinter = 0x64737562, // 'dsub' cmsSigPhotographicPaperPrinter = 0x7270686F, // 'rpho' cmsSigFilmWriter = 0x6670726E, // 'fprn' cmsSigVideoMonitor = 0x7669646D, // 'vidm' cmsSigVideoCamera = 0x76696463, // 'vidc' cmsSigProjectionTelevision = 0x706A7476, // 'pjtv' cmsSigCRTDisplay = 0x43525420, // 'CRT ' cmsSigPMDisplay = 0x504D4420, // 'PMD ' cmsSigAMDisplay = 0x414D4420, // 'AMD ' cmsSigPhotoCD = 0x4B504344, // 'KPCD' cmsSigPhotoImageSetter = 0x696D6773, // 'imgs' cmsSigGravure = 0x67726176, // 'grav' cmsSigOffsetLithography = 0x6F666673, // 'offs' cmsSigSilkscreen = 0x73696C6B, // 'silk' cmsSigFlexography = 0x666C6578, // 'flex' cmsSigMotionPictureFilmScanner = 0x6D706673, // 'mpfs' cmsSigMotionPictureFilmRecorder = 0x6D706672, // 'mpfr' cmsSigDigitalMotionPictureCamera = 0x646D7063, // 'dmpc' cmsSigDigitalCinemaProjector = 0x64636A70 // 'dcpj' } cmsTechnologySignature; // ICC Color spaces typedef enum { cmsSigXYZData = 0x58595A20, // 'XYZ ' cmsSigLabData = 0x4C616220, // 'Lab ' cmsSigLuvData = 0x4C757620, // 'Luv ' cmsSigYCbCrData = 0x59436272, // 'YCbr' cmsSigYxyData = 0x59787920, // 'Yxy ' cmsSigRgbData = 0x52474220, // 'RGB ' cmsSigGrayData = 0x47524159, // 'GRAY' cmsSigHsvData = 0x48535620, // 'HSV ' cmsSigHlsData = 0x484C5320, // 'HLS ' cmsSigCmykData = 0x434D594B, // 'CMYK' cmsSigCmyData = 0x434D5920, // 'CMY ' cmsSigMCH1Data = 0x4D434831, // 'MCH1' cmsSigMCH2Data = 0x4D434832, // 'MCH2' cmsSigMCH3Data = 0x4D434833, // 'MCH3' cmsSigMCH4Data = 0x4D434834, // 'MCH4' cmsSigMCH5Data = 0x4D434835, // 'MCH5' cmsSigMCH6Data = 0x4D434836, // 'MCH6' cmsSigMCH7Data = 0x4D434837, // 'MCH7' cmsSigMCH8Data = 0x4D434838, // 'MCH8' cmsSigMCH9Data = 0x4D434839, // 'MCH9' cmsSigMCHAData = 0x4D434841, // 'MCHA' cmsSigMCHBData = 0x4D434842, // 'MCHB' cmsSigMCHCData = 0x4D434843, // 'MCHC' cmsSigMCHDData = 0x4D434844, // 'MCHD' cmsSigMCHEData = 0x4D434845, // 'MCHE' cmsSigMCHFData = 0x4D434846, // 'MCHF' cmsSigNamedData = 0x6e6d636c, // 'nmcl' cmsSig1colorData = 0x31434C52, // '1CLR' cmsSig2colorData = 0x32434C52, // '2CLR' cmsSig3colorData = 0x33434C52, // '3CLR' cmsSig4colorData = 0x34434C52, // '4CLR' cmsSig5colorData = 0x35434C52, // '5CLR' cmsSig6colorData = 0x36434C52, // '6CLR' cmsSig7colorData = 0x37434C52, // '7CLR' cmsSig8colorData = 0x38434C52, // '8CLR' cmsSig9colorData = 0x39434C52, // '9CLR' cmsSig10colorData = 0x41434C52, // 'ACLR' cmsSig11colorData = 0x42434C52, // 'BCLR' cmsSig12colorData = 0x43434C52, // 'CCLR' cmsSig13colorData = 0x44434C52, // 'DCLR' cmsSig14colorData = 0x45434C52, // 'ECLR' cmsSig15colorData = 0x46434C52, // 'FCLR' cmsSigLuvKData = 0x4C75764B // 'LuvK' } cmsColorSpaceSignature; // ICC Profile Class typedef enum { cmsSigInputClass = 0x73636E72, // 'scnr' cmsSigDisplayClass = 0x6D6E7472, // 'mntr' cmsSigOutputClass = 0x70727472, // 'prtr' cmsSigLinkClass = 0x6C696E6B, // 'link' cmsSigAbstractClass = 0x61627374, // 'abst' cmsSigColorSpaceClass = 0x73706163, // 'spac' cmsSigNamedColorClass = 0x6e6d636c // 'nmcl' } cmsProfileClassSignature; // ICC Platforms typedef enum { cmsSigMacintosh = 0x4150504C, // 'APPL' cmsSigMicrosoft = 0x4D534654, // 'MSFT' cmsSigSolaris = 0x53554E57, // 'SUNW' cmsSigSGI = 0x53474920, // 'SGI ' cmsSigTaligent = 0x54474E54, // 'TGNT' cmsSigUnices = 0x2A6E6978 // '*nix' // From argyll -- Not official } cmsPlatformSignature; // Reference gamut #define cmsSigPerceptualReferenceMediumGamut 0x70726d67 //'prmg' // For cmsSigColorimetricIntentImageStateTag #define cmsSigSceneColorimetryEstimates 0x73636F65 //'scoe' #define cmsSigSceneAppearanceEstimates 0x73617065 //'sape' #define cmsSigFocalPlaneColorimetryEstimates 0x66706365 //'fpce' #define cmsSigReflectionHardcopyOriginalColorimetry 0x72686F63 //'rhoc' #define cmsSigReflectionPrintOutputColorimetry 0x72706F63 //'rpoc' // Multi process elements types typedef enum { cmsSigCurveSetElemType = 0x63767374, //'cvst' cmsSigMatrixElemType = 0x6D617466, //'matf' cmsSigCLutElemType = 0x636C7574, //'clut' cmsSigBAcsElemType = 0x62414353, // 'bACS' cmsSigEAcsElemType = 0x65414353, // 'eACS' // Custom from here, not in the ICC Spec cmsSigXYZ2LabElemType = 0x6C327820, // 'l2x ' cmsSigLab2XYZElemType = 0x78326C20, // 'x2l ' cmsSigNamedColorElemType = 0x6E636C20, // 'ncl ' cmsSigLabV2toV4 = 0x32203420, // '2 4 ' cmsSigLabV4toV2 = 0x34203220, // '4 2 ' // Identities cmsSigIdentityElemType = 0x69646E20, // 'idn ' // Float to floatPCS cmsSigLab2FloatPCS = 0x64326C20, // 'd2l ' cmsSigFloatPCS2Lab = 0x6C326420, // 'l2d ' cmsSigXYZ2FloatPCS = 0x64327820, // 'd2x ' cmsSigFloatPCS2XYZ = 0x78326420 // 'x2d ' } cmsStageSignature; // Types of CurveElements typedef enum { cmsSigFormulaCurveSeg = 0x70617266, // 'parf' cmsSigSampledCurveSeg = 0x73616D66, // 'samf' cmsSigSegmentedCurve = 0x63757266 // 'curf' } cmsCurveSegSignature; // Used in ResponseCurveType #define cmsSigStatusA 0x53746141 //'StaA' #define cmsSigStatusE 0x53746145 //'StaE' #define cmsSigStatusI 0x53746149 //'StaI' #define cmsSigStatusT 0x53746154 //'StaT' #define cmsSigStatusM 0x5374614D //'StaM' #define cmsSigDN 0x444E2020 //'DN ' #define cmsSigDNP 0x444E2050 //'DN P' #define cmsSigDNN 0x444E4E20 //'DNN ' #define cmsSigDNNP 0x444E4E50 //'DNNP' // Device attributes, currently defined values correspond to the low 4 bytes // of the 8 byte attribute quantity #define cmsReflective 0 #define cmsTransparency 1 #define cmsGlossy 0 #define cmsMatte 2 // Common structures in ICC tags typedef struct { cmsUInt32Number len; cmsUInt32Number flag; cmsUInt8Number data[1]; } cmsICCData; // ICC date time typedef struct { cmsUInt16Number year; cmsUInt16Number month; cmsUInt16Number day; cmsUInt16Number hours; cmsUInt16Number minutes; cmsUInt16Number seconds; } cmsDateTimeNumber; // ICC XYZ typedef struct { cmsS15Fixed16Number X; cmsS15Fixed16Number Y; cmsS15Fixed16Number Z; } cmsEncodedXYZNumber; // Profile ID as computed by MD5 algorithm typedef union { cmsUInt8Number ID8[16]; cmsUInt16Number ID16[8]; cmsUInt32Number ID32[4]; } cmsProfileID; // ---------------------------------------------------------------------------------------------- // ICC profile internal base types. Strictly, shouldn't be declared in this header, but maybe // somebody want to use this info for accessing profile header directly, so here it is. // Profile header -- it is 32-bit aligned, so no issues are expected on alignment typedef struct { cmsUInt32Number size; // Profile size in bytes cmsSignature cmmId; // CMM for this profile cmsUInt32Number version; // Format version number cmsProfileClassSignature deviceClass; // Type of profile cmsColorSpaceSignature colorSpace; // Color space of data cmsColorSpaceSignature pcs; // PCS, XYZ or Lab only cmsDateTimeNumber date; // Date profile was created cmsSignature magic; // Magic Number to identify an ICC profile cmsPlatformSignature platform; // Primary Platform cmsUInt32Number flags; // Various bit settings cmsSignature manufacturer; // Device manufacturer cmsUInt32Number model; // Device model number cmsUInt64Number attributes; // Device attributes cmsUInt32Number renderingIntent;// Rendering intent cmsEncodedXYZNumber illuminant; // Profile illuminant cmsSignature creator; // Profile creator cmsProfileID profileID; // Profile ID using MD5 cmsInt8Number reserved[28]; // Reserved for future use } cmsICCHeader; // ICC base tag typedef struct { cmsTagTypeSignature sig; cmsInt8Number reserved[4]; } cmsTagBase; // A tag entry in directory typedef struct { cmsTagSignature sig; // The tag signature cmsUInt32Number offset; // Start of tag cmsUInt32Number size; // Size in bytes } cmsTagEntry; // ---------------------------------------------------------------------------------------------- // Little CMS specific typedefs typedef void* cmsContext; // Context identifier for multithreaded environments typedef void* cmsHANDLE ; // Generic handle typedef void* cmsHPROFILE; // Opaque typedefs to hide internals typedef void* cmsHTRANSFORM; #define cmsMAXCHANNELS 16 // Maximum number of channels in ICC profiles // Format of pixel is defined by one cmsUInt32Number, using bit fields as follows // // 2 1 0 // 3 2 10987 6 5 4 3 2 1 098 7654 321 // A O TTTTT U Y F P X S EEE CCCC BBB // // A: Floating point -- With this flag we can differentiate 16 bits as float and as int // O: Optimized -- previous optimization already returns the final 8-bit value // T: Pixeltype // F: Flavor 0=MinIsBlack(Chocolate) 1=MinIsWhite(Vanilla) // P: Planar? 0=Chunky, 1=Planar // X: swap 16 bps endianess? // S: Do swap? ie, BGR, KYMC // E: Extra samples // C: Channels (Samples per pixel) // B: bytes per sample // Y: Swap first - changes ABGR to BGRA and KCMY to CMYK #define FLOAT_SH(a) ((a) << 22) #define OPTIMIZED_SH(s) ((s) << 21) #define COLORSPACE_SH(s) ((s) << 16) #define SWAPFIRST_SH(s) ((s) << 14) #define FLAVOR_SH(s) ((s) << 13) #define PLANAR_SH(p) ((p) << 12) #define ENDIAN16_SH(e) ((e) << 11) #define DOSWAP_SH(e) ((e) << 10) #define EXTRA_SH(e) ((e) << 7) #define CHANNELS_SH(c) ((c) << 3) #define BYTES_SH(b) (b) // These macros unpack format specifiers into integers #define T_FLOAT(a) (((a)>>22)&1) #define T_OPTIMIZED(o) (((o)>>21)&1) #define T_COLORSPACE(s) (((s)>>16)&31) #define T_SWAPFIRST(s) (((s)>>14)&1) #define T_FLAVOR(s) (((s)>>13)&1) #define T_PLANAR(p) (((p)>>12)&1) #define T_ENDIAN16(e) (((e)>>11)&1) #define T_DOSWAP(e) (((e)>>10)&1) #define T_EXTRA(e) (((e)>>7)&7) #define T_CHANNELS(c) (((c)>>3)&15) #define T_BYTES(b) ((b)&7) // Pixel types #define PT_ANY 0 // Don't check colorspace // 1 & 2 are reserved #define PT_GRAY 3 #define PT_RGB 4 #define PT_CMY 5 #define PT_CMYK 6 #define PT_YCbCr 7 #define PT_YUV 8 // Lu'v' #define PT_XYZ 9 #define PT_Lab 10 #define PT_YUVK 11 // Lu'v'K #define PT_HSV 12 #define PT_HLS 13 #define PT_Yxy 14 #define PT_MCH1 15 #define PT_MCH2 16 #define PT_MCH3 17 #define PT_MCH4 18 #define PT_MCH5 19 #define PT_MCH6 20 #define PT_MCH7 21 #define PT_MCH8 22 #define PT_MCH9 23 #define PT_MCH10 24 #define PT_MCH11 25 #define PT_MCH12 26 #define PT_MCH13 27 #define PT_MCH14 28 #define PT_MCH15 29 #define PT_LabV2 30 // Identical to PT_Lab, but using the V2 old encoding // Some (not all!) representations #ifndef TYPE_RGB_8 // TYPE_RGB_8 is a very common identifier, so don't include ours // if user has it already defined. #define TYPE_GRAY_8 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)) #define TYPE_GRAY_8_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(1)|FLAVOR_SH(1)) #define TYPE_GRAY_16 (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)) #define TYPE_GRAY_16_REV (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|FLAVOR_SH(1)) #define TYPE_GRAY_16_SE (COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_GRAYA_8 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)) #define TYPE_GRAYA_16 (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)) #define TYPE_GRAYA_16_SE (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_GRAYA_8_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_GRAYA_16_PLANAR (COLORSPACE_SH(PT_GRAY)|EXTRA_SH(1)|CHANNELS_SH(1)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_RGB_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_RGB_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_BGR_8 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_BGR_8_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1)) #define TYPE_RGB_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_RGB_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_RGB_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_BGR_16 (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_BGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) #define TYPE_BGR_16_SE (COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_RGBA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_RGBA_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_RGBA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_RGBA_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_RGBA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_ARGB_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)) #define TYPE_ARGB_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1)) #define TYPE_ARGB_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)) #define TYPE_ABGR_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_ABGR_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|PLANAR_SH(1)) #define TYPE_ABGR_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_ABGR_16_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|PLANAR_SH(1)) #define TYPE_ABGR_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_BGRA_8 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) #define TYPE_BGRA_8_PLANAR (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|PLANAR_SH(1)) #define TYPE_BGRA_16 (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) #define TYPE_BGRA_16_SE (COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) #define TYPE_CMY_8 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_CMY_8_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_CMY_16 (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_CMY_16_PLANAR (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_CMY_16_SE (COLORSPACE_SH(PT_CMY)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_CMYK_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)) #define TYPE_CMYKA_8 (COLORSPACE_SH(PT_CMYK)|EXTRA_SH(1)|CHANNELS_SH(4)|BYTES_SH(1)) #define TYPE_CMYK_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)) #define TYPE_YUVK_8 TYPE_CMYK_8_REV #define TYPE_CMYK_8_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_CMYK_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)) #define TYPE_CMYK_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)) #define TYPE_YUVK_16 TYPE_CMYK_16_REV #define TYPE_CMYK_16_PLANAR (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_CMYK_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_KCMY_8 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|SWAPFIRST_SH(1)) #define TYPE_KCMY_8_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) #define TYPE_KCMY_16 (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|SWAPFIRST_SH(1)) #define TYPE_KCMY_16_REV (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1)|SWAPFIRST_SH(1)) #define TYPE_KCMY_16_SE (COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1)|SWAPFIRST_SH(1)) #define TYPE_CMYK5_8 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1)) #define TYPE_CMYK5_16 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)) #define TYPE_CMYK5_16_SE (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC5_8 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC5_16 (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC5_16_SE (COLORSPACE_SH(PT_MCH5)|CHANNELS_SH(5)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_CMYK6_8 (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1)) #define TYPE_CMYK6_8_PLANAR (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_CMYK6_16 (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)) #define TYPE_CMYK6_16_PLANAR (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_CMYK6_16_SE (COLORSPACE_SH(PT_MCH6)|CHANNELS_SH(6)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_CMYK7_8 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1)) #define TYPE_CMYK7_16 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)) #define TYPE_CMYK7_16_SE (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC7_8 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC7_16 (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC7_16_SE (COLORSPACE_SH(PT_MCH7)|CHANNELS_SH(7)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_CMYK8_8 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1)) #define TYPE_CMYK8_16 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)) #define TYPE_CMYK8_16_SE (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC8_8 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC8_16 (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC8_16_SE (COLORSPACE_SH(PT_MCH8)|CHANNELS_SH(8)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_CMYK9_8 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1)) #define TYPE_CMYK9_16 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)) #define TYPE_CMYK9_16_SE (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC9_8 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC9_16 (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC9_16_SE (COLORSPACE_SH(PT_MCH9)|CHANNELS_SH(9)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_CMYK10_8 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1)) #define TYPE_CMYK10_16 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)) #define TYPE_CMYK10_16_SE (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC10_8 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC10_16 (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC10_16_SE (COLORSPACE_SH(PT_MCH10)|CHANNELS_SH(10)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_CMYK11_8 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1)) #define TYPE_CMYK11_16 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)) #define TYPE_CMYK11_16_SE (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC11_8 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC11_16 (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC11_16_SE (COLORSPACE_SH(PT_MCH11)|CHANNELS_SH(11)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) #define TYPE_CMYK12_8 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1)) #define TYPE_CMYK12_16 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)) #define TYPE_CMYK12_16_SE (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|ENDIAN16_SH(1)) #define TYPE_KYMC12_8 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(1)|DOSWAP_SH(1)) #define TYPE_KYMC12_16 (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_KYMC12_16_SE (COLORSPACE_SH(PT_MCH12)|CHANNELS_SH(12)|BYTES_SH(2)|DOSWAP_SH(1)|ENDIAN16_SH(1)) // Colorimetric #define TYPE_XYZ_16 (COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_Lab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_LabV2_8 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_ALab_8 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1)) #define TYPE_ALabV2_8 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1)) #define TYPE_Lab_16 (COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_LabV2_16 (COLORSPACE_SH(PT_LabV2)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_Yxy_16 (COLORSPACE_SH(PT_Yxy)|CHANNELS_SH(3)|BYTES_SH(2)) // YCbCr #define TYPE_YCbCr_8 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_YCbCr_8_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_YCbCr_16 (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_YCbCr_16_PLANAR (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_YCbCr_16_SE (COLORSPACE_SH(PT_YCbCr)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) // YUV #define TYPE_YUV_8 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_YUV_8_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_YUV_16 (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_YUV_16_PLANAR (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_YUV_16_SE (COLORSPACE_SH(PT_YUV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) // HLS #define TYPE_HLS_8 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_HLS_8_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_HLS_16 (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_HLS_16_PLANAR (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_HLS_16_SE (COLORSPACE_SH(PT_HLS)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) // HSV #define TYPE_HSV_8 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)) #define TYPE_HSV_8_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(1)|PLANAR_SH(1)) #define TYPE_HSV_16 (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_HSV_16_PLANAR (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|PLANAR_SH(1)) #define TYPE_HSV_16_SE (COLORSPACE_SH(PT_HSV)|CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1)) // Named color index. Only 16 bits allowed (don't check colorspace) #define TYPE_NAMED_COLOR_INDEX (CHANNELS_SH(1)|BYTES_SH(2)) // Float formatters. #define TYPE_XYZ_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(4)) #define TYPE_Lab_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(4)) #define TYPE_LabA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)) #define TYPE_GRAY_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(4)) #define TYPE_RGB_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)) #define TYPE_RGBA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)) #define TYPE_ARGB_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|SWAPFIRST_SH(1)) #define TYPE_BGR_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)) #define TYPE_BGRA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) #define TYPE_ABGR_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(4)|DOSWAP_SH(1)) #define TYPE_CMYK_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(4)) // Floating point formatters. // NOTE THAT 'BYTES' FIELD IS SET TO ZERO ON DLB because 8 bytes overflows the bitfield #define TYPE_XYZ_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|CHANNELS_SH(3)|BYTES_SH(0)) #define TYPE_Lab_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_Lab)|CHANNELS_SH(3)|BYTES_SH(0)) #define TYPE_GRAY_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(0)) #define TYPE_RGB_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)) #define TYPE_BGR_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(0)|DOSWAP_SH(1)) #define TYPE_CMYK_DBL (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(0)) // IEEE 754-2008 "half" #define TYPE_GRAY_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_GRAY)|CHANNELS_SH(1)|BYTES_SH(2)) #define TYPE_RGB_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_RGBA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_CMYK_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_CMYK)|CHANNELS_SH(4)|BYTES_SH(2)) #define TYPE_RGBA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)) #define TYPE_ARGB_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|SWAPFIRST_SH(1)) #define TYPE_BGR_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) #define TYPE_BGRA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1)) #define TYPE_ABGR_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_RGB)|CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1)) #endif // Colorspaces typedef struct { cmsFloat64Number X; cmsFloat64Number Y; cmsFloat64Number Z; } cmsCIEXYZ; typedef struct { cmsFloat64Number x; cmsFloat64Number y; cmsFloat64Number Y; } cmsCIExyY; typedef struct { cmsFloat64Number L; cmsFloat64Number a; cmsFloat64Number b; } cmsCIELab; typedef struct { cmsFloat64Number L; cmsFloat64Number C; cmsFloat64Number h; } cmsCIELCh; typedef struct { cmsFloat64Number J; cmsFloat64Number C; cmsFloat64Number h; } cmsJCh; typedef struct { cmsCIEXYZ Red; cmsCIEXYZ Green; cmsCIEXYZ Blue; } cmsCIEXYZTRIPLE; typedef struct { cmsCIExyY Red; cmsCIExyY Green; cmsCIExyY Blue; } cmsCIExyYTRIPLE; // Illuminant types for structs below #define cmsILLUMINANT_TYPE_UNKNOWN 0x0000000 #define cmsILLUMINANT_TYPE_D50 0x0000001 #define cmsILLUMINANT_TYPE_D65 0x0000002 #define cmsILLUMINANT_TYPE_D93 0x0000003 #define cmsILLUMINANT_TYPE_F2 0x0000004 #define cmsILLUMINANT_TYPE_D55 0x0000005 #define cmsILLUMINANT_TYPE_A 0x0000006 #define cmsILLUMINANT_TYPE_E 0x0000007 #define cmsILLUMINANT_TYPE_F8 0x0000008 typedef struct { cmsUInt32Number Observer; // 0 = unknown, 1=CIE 1931, 2=CIE 1964 cmsCIEXYZ Backing; // Value of backing cmsUInt32Number Geometry; // 0=unknown, 1=45/0, 0/45 2=0d, d/0 cmsFloat64Number Flare; // 0..1.0 cmsUInt32Number IlluminantType; } cmsICCMeasurementConditions; typedef struct { cmsCIEXYZ IlluminantXYZ; // Not the same struct as CAM02, cmsCIEXYZ SurroundXYZ; // This is for storing the tag cmsUInt32Number IlluminantType; // viewing condition } cmsICCViewingConditions; // Support of non-standard functions -------------------------------------------------------------------------------------- CMSAPI int CMSEXPORT cmsstrcasecmp(const char* s1, const char* s2); CMSAPI long int CMSEXPORT cmsfilelength(FILE* f); // Plug-In registering --------------------------------------------------------------------------------------------------- CMSAPI cmsBool CMSEXPORT cmsPlugin(void* Plugin); CMSAPI cmsBool CMSEXPORT cmsPluginTHR(cmsContext ContextID, void* Plugin); CMSAPI void CMSEXPORT cmsUnregisterPlugins(void); // Error logging ---------------------------------------------------------------------------------------------------------- // There is no error handling at all. When a function fails, it returns proper value. // For example, all create functions does return NULL on failure. Other may return FALSE. // It may be interesting, for the developer, to know why the function is failing. // for that reason, lcms2 does offer a logging function. This function will get // an ENGLISH string with some clues on what is going wrong. You can show this // info to the end user if you wish, or just create some sort of log on disk. // The logging function should NOT terminate the program, as this obviously can leave // unfreed resources. It is the programmer's responsibility to check each function // return code to make sure it didn't fail. #define cmsERROR_UNDEFINED 0 #define cmsERROR_FILE 1 #define cmsERROR_RANGE 2 #define cmsERROR_INTERNAL 3 #define cmsERROR_NULL 4 #define cmsERROR_READ 5 #define cmsERROR_SEEK 6 #define cmsERROR_WRITE 7 #define cmsERROR_UNKNOWN_EXTENSION 8 #define cmsERROR_COLORSPACE_CHECK 9 #define cmsERROR_ALREADY_DEFINED 10 #define cmsERROR_BAD_SIGNATURE 11 #define cmsERROR_CORRUPTION_DETECTED 12 #define cmsERROR_NOT_SUITABLE 13 // Error logger is called with the ContextID when a message is raised. This gives the // chance to know which thread is responsible of the warning and any environment associated // with it. Non-multithreading applications may safely ignore this parameter. // Note that under certain special circumstances, ContextID may be NULL. typedef void (* cmsLogErrorHandlerFunction)(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text); // Allows user to set any specific logger CMSAPI void CMSEXPORT cmsSetLogErrorHandler(cmsLogErrorHandlerFunction Fn); // Conversions -------------------------------------------------------------------------------------------------------------- // Returns pointers to constant structs CMSAPI const cmsCIEXYZ* CMSEXPORT cmsD50_XYZ(void); CMSAPI const cmsCIExyY* CMSEXPORT cmsD50_xyY(void); // Colorimetric space conversions CMSAPI void CMSEXPORT cmsXYZ2xyY(cmsCIExyY* Dest, const cmsCIEXYZ* Source); CMSAPI void CMSEXPORT cmsxyY2XYZ(cmsCIEXYZ* Dest, const cmsCIExyY* Source); CMSAPI void CMSEXPORT cmsXYZ2Lab(const cmsCIEXYZ* WhitePoint, cmsCIELab* Lab, const cmsCIEXYZ* xyz); CMSAPI void CMSEXPORT cmsLab2XYZ(const cmsCIEXYZ* WhitePoint, cmsCIEXYZ* xyz, const cmsCIELab* Lab); CMSAPI void CMSEXPORT cmsLab2LCh(cmsCIELCh*LCh, const cmsCIELab* Lab); CMSAPI void CMSEXPORT cmsLCh2Lab(cmsCIELab* Lab, const cmsCIELCh* LCh); // Encoding /Decoding on PCS CMSAPI void CMSEXPORT cmsLabEncoded2Float(cmsCIELab* Lab, const cmsUInt16Number wLab[3]); CMSAPI void CMSEXPORT cmsLabEncoded2FloatV2(cmsCIELab* Lab, const cmsUInt16Number wLab[3]); CMSAPI void CMSEXPORT cmsFloat2LabEncoded(cmsUInt16Number wLab[3], const cmsCIELab* Lab); CMSAPI void CMSEXPORT cmsFloat2LabEncodedV2(cmsUInt16Number wLab[3], const cmsCIELab* Lab); CMSAPI void CMSEXPORT cmsXYZEncoded2Float(cmsCIEXYZ* fxyz, const cmsUInt16Number XYZ[3]); CMSAPI void CMSEXPORT cmsFloat2XYZEncoded(cmsUInt16Number XYZ[3], const cmsCIEXYZ* fXYZ); // DeltaE metrics CMSAPI cmsFloat64Number CMSEXPORT cmsDeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); CMSAPI cmsFloat64Number CMSEXPORT cmsCIE94DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); CMSAPI cmsFloat64Number CMSEXPORT cmsBFDdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2); CMSAPI cmsFloat64Number CMSEXPORT cmsCMCdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number l, cmsFloat64Number c); CMSAPI cmsFloat64Number CMSEXPORT cmsCIE2000DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number Kl, cmsFloat64Number Kc, cmsFloat64Number Kh); // Temperature <-> Chromaticity (Black body) CMSAPI cmsBool CMSEXPORT cmsWhitePointFromTemp(cmsCIExyY* WhitePoint, cmsFloat64Number TempK); CMSAPI cmsBool CMSEXPORT cmsTempFromWhitePoint(cmsFloat64Number* TempK, const cmsCIExyY* WhitePoint); // Chromatic adaptation CMSAPI cmsBool CMSEXPORT cmsAdaptToIlluminant(cmsCIEXYZ* Result, const cmsCIEXYZ* SourceWhitePt, const cmsCIEXYZ* Illuminant, const cmsCIEXYZ* Value); // CIECAM02 --------------------------------------------------------------------------------------------------- // Viewing conditions. Please note those are CAM model viewing conditions, and not the ICC tag viewing // conditions, which I'm naming cmsICCViewingConditions to make differences evident. Unfortunately, the tag // cannot deal with surround La, Yb and D value so is basically useless to store CAM02 viewing conditions. #define AVG_SURROUND 1 #define DIM_SURROUND 2 #define DARK_SURROUND 3 #define CUTSHEET_SURROUND 4 #define D_CALCULATE (-1) typedef struct { cmsCIEXYZ whitePoint; cmsFloat64Number Yb; cmsFloat64Number La; int surround; cmsFloat64Number D_value; } cmsViewingConditions; CMSAPI cmsHANDLE CMSEXPORT cmsCIECAM02Init(cmsContext ContextID, const cmsViewingConditions* pVC); CMSAPI void CMSEXPORT cmsCIECAM02Done(cmsHANDLE hModel); CMSAPI void CMSEXPORT cmsCIECAM02Forward(cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut); CMSAPI void CMSEXPORT cmsCIECAM02Reverse(cmsHANDLE hModel, const cmsJCh* pIn, cmsCIEXYZ* pOut); // Tone curves ----------------------------------------------------------------------------------------- // This describes a curve segment. For a table of supported types, see the manual. User can increase the number of // available types by using a proper plug-in. Parametric segments allow 10 parameters at most typedef struct { cmsFloat32Number x0, x1; // Domain; for x0 < x <= x1 cmsInt32Number Type; // Parametric type, Type == 0 means sampled segment. Negative values are reserved cmsFloat64Number Params[10]; // Parameters if Type != 0 cmsUInt32Number nGridPoints; // Number of grid points if Type == 0 cmsFloat32Number* SampledPoints; // Points to an array of floats if Type == 0 } cmsCurveSegment; // The internal representation is none of your business. typedef struct _cms_curve_struct cmsToneCurve; CMSAPI cmsToneCurve* CMSEXPORT cmsBuildSegmentedToneCurve(cmsContext ContextID, cmsInt32Number nSegments, const cmsCurveSegment Segments[]); CMSAPI cmsToneCurve* CMSEXPORT cmsBuildParametricToneCurve(cmsContext ContextID, cmsInt32Number Type, const cmsFloat64Number Params[]); CMSAPI cmsToneCurve* CMSEXPORT cmsBuildGamma(cmsContext ContextID, cmsFloat64Number Gamma); CMSAPI cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurve16(cmsContext ContextID, cmsInt32Number nEntries, const cmsUInt16Number values[]); CMSAPI cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurveFloat(cmsContext ContextID, cmsUInt32Number nEntries, const cmsFloat32Number values[]); CMSAPI void CMSEXPORT cmsFreeToneCurve(cmsToneCurve* Curve); CMSAPI void CMSEXPORT cmsFreeToneCurveTriple(cmsToneCurve* Curve[3]); CMSAPI cmsToneCurve* CMSEXPORT cmsDupToneCurve(const cmsToneCurve* Src); CMSAPI cmsToneCurve* CMSEXPORT cmsReverseToneCurve(const cmsToneCurve* InGamma); CMSAPI cmsToneCurve* CMSEXPORT cmsReverseToneCurveEx(cmsInt32Number nResultSamples, const cmsToneCurve* InGamma); CMSAPI cmsToneCurve* CMSEXPORT cmsJoinToneCurve(cmsContext ContextID, const cmsToneCurve* X, const cmsToneCurve* Y, cmsUInt32Number nPoints); CMSAPI cmsBool CMSEXPORT cmsSmoothToneCurve(cmsToneCurve* Tab, cmsFloat64Number lambda); CMSAPI cmsFloat32Number CMSEXPORT cmsEvalToneCurveFloat(const cmsToneCurve* Curve, cmsFloat32Number v); CMSAPI cmsUInt16Number CMSEXPORT cmsEvalToneCurve16(const cmsToneCurve* Curve, cmsUInt16Number v); CMSAPI cmsBool CMSEXPORT cmsIsToneCurveMultisegment(const cmsToneCurve* InGamma); CMSAPI cmsBool CMSEXPORT cmsIsToneCurveLinear(const cmsToneCurve* Curve); CMSAPI cmsBool CMSEXPORT cmsIsToneCurveMonotonic(const cmsToneCurve* t); CMSAPI cmsBool CMSEXPORT cmsIsToneCurveDescending(const cmsToneCurve* t); CMSAPI cmsInt32Number CMSEXPORT cmsGetToneCurveParametricType(const cmsToneCurve* t); CMSAPI cmsFloat64Number CMSEXPORT cmsEstimateGamma(const cmsToneCurve* t, cmsFloat64Number Precision); // Tone curve tabular estimation CMSAPI cmsUInt32Number CMSEXPORT cmsGetToneCurveEstimatedTableEntries(const cmsToneCurve* t); CMSAPI const cmsUInt16Number* CMSEXPORT cmsGetToneCurveEstimatedTable(const cmsToneCurve* t); // Implements pipelines of multi-processing elements ------------------------------------------------------------- // Nothing to see here, move along typedef struct _cmsPipeline_struct cmsPipeline; typedef struct _cmsStage_struct cmsStage; // Those are hi-level pipelines CMSAPI cmsPipeline* CMSEXPORT cmsPipelineAlloc(cmsContext ContextID, cmsUInt32Number InputChannels, cmsUInt32Number OutputChannels); CMSAPI void CMSEXPORT cmsPipelineFree(cmsPipeline* lut); CMSAPI cmsPipeline* CMSEXPORT cmsPipelineDup(const cmsPipeline* Orig); CMSAPI cmsContext CMSEXPORT cmsGetPipelineContextID(const cmsPipeline* lut); CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineInputChannels(const cmsPipeline* lut); CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineOutputChannels(const cmsPipeline* lut); CMSAPI cmsUInt32Number CMSEXPORT cmsPipelineStageCount(const cmsPipeline* lut); CMSAPI cmsStage* CMSEXPORT cmsPipelineGetPtrToFirstStage(const cmsPipeline* lut); CMSAPI cmsStage* CMSEXPORT cmsPipelineGetPtrToLastStage(const cmsPipeline* lut); CMSAPI void CMSEXPORT cmsPipelineEval16(const cmsUInt16Number In[], cmsUInt16Number Out[], const cmsPipeline* lut); CMSAPI void CMSEXPORT cmsPipelineEvalFloat(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsPipeline* lut); CMSAPI cmsBool CMSEXPORT cmsPipelineEvalReverseFloat(cmsFloat32Number Target[], cmsFloat32Number Result[], cmsFloat32Number Hint[], const cmsPipeline* lut); CMSAPI cmsBool CMSEXPORT cmsPipelineCat(cmsPipeline* l1, const cmsPipeline* l2); CMSAPI cmsBool CMSEXPORT cmsPipelineSetSaveAs8bitsFlag(cmsPipeline* lut, cmsBool On); // Where to place/locate the stages in the pipeline chain typedef enum { cmsAT_BEGIN, cmsAT_END } cmsStageLoc; CMSAPI int CMSEXPORT cmsPipelineInsertStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage* mpe); CMSAPI void CMSEXPORT cmsPipelineUnlinkStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage** mpe); // This function is quite useful to analyze the structure of a Pipeline and retrieve the Stage elements // that conform the Pipeline. It should be called with the Pipeline, the number of expected elements and // then a list of expected types followed with a list of double pointers to Stage elements. If // the function founds a match with current pipeline, it fills the pointers and returns TRUE // if not, returns FALSE without touching anything. CMSAPI cmsBool CMSEXPORT cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, cmsUInt32Number n, ...); // Matrix has double precision and CLUT has only float precision. That is because an ICC profile can encode // matrices with far more precision that CLUTS CMSAPI cmsStage* CMSEXPORT cmsStageAllocIdentity(cmsContext ContextID, cmsUInt32Number nChannels); CMSAPI cmsStage* CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Number nChannels, cmsToneCurve* const Curves[]); CMSAPI cmsStage* CMSEXPORT cmsStageAllocMatrix(cmsContext ContextID, cmsUInt32Number Rows, cmsUInt32Number Cols, const cmsFloat64Number* Matrix, const cmsFloat64Number* Offset); CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table); CMSAPI cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table); CMSAPI cmsStage* CMSEXPORT cmsStageDup(cmsStage* mpe); CMSAPI void CMSEXPORT cmsStageFree(cmsStage* mpe); CMSAPI cmsStage* CMSEXPORT cmsStageNext(const cmsStage* mpe); CMSAPI cmsUInt32Number CMSEXPORT cmsStageInputChannels(const cmsStage* mpe); CMSAPI cmsUInt32Number CMSEXPORT cmsStageOutputChannels(const cmsStage* mpe); CMSAPI cmsStageSignature CMSEXPORT cmsStageType(const cmsStage* mpe); CMSAPI void* CMSEXPORT cmsStageData(const cmsStage* mpe); // Sampling typedef cmsInt32Number (* cmsSAMPLER16) (register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo); typedef cmsInt32Number (* cmsSAMPLERFLOAT)(register const cmsFloat32Number In[], register cmsFloat32Number Out[], register void * Cargo); // Use this flag to prevent changes being written to destination #define SAMPLER_INSPECT 0x01000000 // For CLUT only CMSAPI cmsBool CMSEXPORT cmsStageSampleCLut16bit(cmsStage* mpe, cmsSAMPLER16 Sampler, void* Cargo, cmsUInt32Number dwFlags); CMSAPI cmsBool CMSEXPORT cmsStageSampleCLutFloat(cmsStage* mpe, cmsSAMPLERFLOAT Sampler, void* Cargo, cmsUInt32Number dwFlags); // Slicers CMSAPI cmsBool CMSEXPORT cmsSliceSpace16(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], cmsSAMPLER16 Sampler, void * Cargo); CMSAPI cmsBool CMSEXPORT cmsSliceSpaceFloat(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], cmsSAMPLERFLOAT Sampler, void * Cargo); // Multilocalized Unicode management --------------------------------------------------------------------------------------- typedef struct _cms_MLU_struct cmsMLU; #define cmsNoLanguage "\0\0" #define cmsNoCountry "\0\0" CMSAPI cmsMLU* CMSEXPORT cmsMLUalloc(cmsContext ContextID, cmsUInt32Number nItems); CMSAPI void CMSEXPORT cmsMLUfree(cmsMLU* mlu); CMSAPI cmsMLU* CMSEXPORT cmsMLUdup(const cmsMLU* mlu); CMSAPI cmsBool CMSEXPORT cmsMLUsetASCII(cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], const char* ASCIIString); CMSAPI cmsBool CMSEXPORT cmsMLUsetWide(cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], const wchar_t* WideString); CMSAPI cmsUInt32Number CMSEXPORT cmsMLUgetASCII(const cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], char* Buffer, cmsUInt32Number BufferSize); CMSAPI cmsUInt32Number CMSEXPORT cmsMLUgetWide(const cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], wchar_t* Buffer, cmsUInt32Number BufferSize); CMSAPI cmsBool CMSEXPORT cmsMLUgetTranslation(const cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], char ObtainedLanguage[3], char ObtainedCountry[3]); CMSAPI cmsUInt32Number CMSEXPORT cmsMLUtranslationsCount(const cmsMLU* mlu); CMSAPI cmsBool CMSEXPORT cmsMLUtranslationsCodes(const cmsMLU* mlu, cmsUInt32Number idx, char LanguageCode[3], char CountryCode[3]); // Undercolorremoval & black generation ------------------------------------------------------------------------------------- typedef struct { cmsToneCurve* Ucr; cmsToneCurve* Bg; cmsMLU* Desc; } cmsUcrBg; // Screening ---------------------------------------------------------------------------------------------------------------- #define cmsPRINTER_DEFAULT_SCREENS 0x0001 #define cmsFREQUENCE_UNITS_LINES_CM 0x0000 #define cmsFREQUENCE_UNITS_LINES_INCH 0x0002 #define cmsSPOT_UNKNOWN 0 #define cmsSPOT_PRINTER_DEFAULT 1 #define cmsSPOT_ROUND 2 #define cmsSPOT_DIAMOND 3 #define cmsSPOT_ELLIPSE 4 #define cmsSPOT_LINE 5 #define cmsSPOT_SQUARE 6 #define cmsSPOT_CROSS 7 typedef struct { cmsFloat64Number Frequency; cmsFloat64Number ScreenAngle; cmsUInt32Number SpotShape; } cmsScreeningChannel; typedef struct { cmsUInt32Number Flag; cmsUInt32Number nChannels; cmsScreeningChannel Channels[cmsMAXCHANNELS]; } cmsScreening; // Named color ----------------------------------------------------------------------------------------------------------------- typedef struct _cms_NAMEDCOLORLIST_struct cmsNAMEDCOLORLIST; CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsAllocNamedColorList(cmsContext ContextID, cmsUInt32Number n, cmsUInt32Number ColorantCount, const char* Prefix, const char* Suffix); CMSAPI void CMSEXPORT cmsFreeNamedColorList(cmsNAMEDCOLORLIST* v); CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsDupNamedColorList(const cmsNAMEDCOLORLIST* v); CMSAPI cmsBool CMSEXPORT cmsAppendNamedColor(cmsNAMEDCOLORLIST* v, const char* Name, cmsUInt16Number PCS[3], cmsUInt16Number Colorant[cmsMAXCHANNELS]); CMSAPI cmsUInt32Number CMSEXPORT cmsNamedColorCount(const cmsNAMEDCOLORLIST* v); CMSAPI cmsInt32Number CMSEXPORT cmsNamedColorIndex(const cmsNAMEDCOLORLIST* v, const char* Name); CMSAPI cmsBool CMSEXPORT cmsNamedColorInfo(const cmsNAMEDCOLORLIST* NamedColorList, cmsUInt32Number nColor, char* Name, char* Prefix, char* Suffix, cmsUInt16Number* PCS, cmsUInt16Number* Colorant); // Retrieve named color list from transform CMSAPI cmsNAMEDCOLORLIST* CMSEXPORT cmsGetNamedColorList(cmsHTRANSFORM xform); // Profile sequence ----------------------------------------------------------------------------------------------------- // Profile sequence descriptor. Some fields come from profile sequence descriptor tag, others // come from Profile Sequence Identifier Tag typedef struct { cmsSignature deviceMfg; cmsSignature deviceModel; cmsUInt64Number attributes; cmsTechnologySignature technology; cmsProfileID ProfileID; cmsMLU* Manufacturer; cmsMLU* Model; cmsMLU* Description; } cmsPSEQDESC; typedef struct { cmsUInt32Number n; cmsContext ContextID; cmsPSEQDESC* seq; } cmsSEQ; CMSAPI cmsSEQ* CMSEXPORT cmsAllocProfileSequenceDescription(cmsContext ContextID, cmsUInt32Number n); CMSAPI cmsSEQ* CMSEXPORT cmsDupProfileSequenceDescription(const cmsSEQ* pseq); CMSAPI void CMSEXPORT cmsFreeProfileSequenceDescription(cmsSEQ* pseq); // Dictionaries -------------------------------------------------------------------------------------------------------- typedef struct _cmsDICTentry_struct { struct _cmsDICTentry_struct* Next; cmsMLU *DisplayName; cmsMLU *DisplayValue; wchar_t* Name; wchar_t* Value; } cmsDICTentry; CMSAPI cmsHANDLE CMSEXPORT cmsDictAlloc(cmsContext ContextID); CMSAPI void CMSEXPORT cmsDictFree(cmsHANDLE hDict); CMSAPI cmsHANDLE CMSEXPORT cmsDictDup(cmsHANDLE hDict); CMSAPI cmsBool CMSEXPORT cmsDictAddEntry(cmsHANDLE hDict, const wchar_t* Name, const wchar_t* Value, const cmsMLU *DisplayName, const cmsMLU *DisplayValue); CMSAPI const cmsDICTentry* CMSEXPORT cmsDictGetEntryList(cmsHANDLE hDict); CMSAPI const cmsDICTentry* CMSEXPORT cmsDictNextEntry(const cmsDICTentry* e); // Access to Profile data ---------------------------------------------------------------------------------------------- CMSAPI cmsHPROFILE CMSEXPORT cmsCreateProfilePlaceholder(cmsContext ContextID); CMSAPI cmsContext CMSEXPORT cmsGetProfileContextID(cmsHPROFILE hProfile); CMSAPI cmsInt32Number CMSEXPORT cmsGetTagCount(cmsHPROFILE hProfile); CMSAPI cmsTagSignature CMSEXPORT cmsGetTagSignature(cmsHPROFILE hProfile, cmsUInt32Number n); CMSAPI cmsBool CMSEXPORT cmsIsTag(cmsHPROFILE hProfile, cmsTagSignature sig); // Read and write pre-formatted data CMSAPI void* CMSEXPORT cmsReadTag(cmsHPROFILE hProfile, cmsTagSignature sig); CMSAPI cmsBool CMSEXPORT cmsWriteTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data); CMSAPI cmsBool CMSEXPORT cmsLinkTag(cmsHPROFILE hProfile, cmsTagSignature sig, cmsTagSignature dest); CMSAPI cmsTagSignature CMSEXPORT cmsTagLinkedTo(cmsHPROFILE hProfile, cmsTagSignature sig); // Read and write raw data CMSAPI cmsInt32Number CMSEXPORT cmsReadRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, void* Buffer, cmsUInt32Number BufferSize); CMSAPI cmsBool CMSEXPORT cmsWriteRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data, cmsUInt32Number Size); // Access header data #define cmsEmbeddedProfileFalse 0x00000000 #define cmsEmbeddedProfileTrue 0x00000001 #define cmsUseAnywhere 0x00000000 #define cmsUseWithEmbeddedDataOnly 0x00000002 CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderFlags(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsGetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number* Flags); CMSAPI void CMSEXPORT cmsGetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID); CMSAPI cmsBool CMSEXPORT cmsGetHeaderCreationDateTime(cmsHPROFILE hProfile, struct tm *Dest); CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderRenderingIntent(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsSetHeaderFlags(cmsHPROFILE hProfile, cmsUInt32Number Flags); CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderManufacturer(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsSetHeaderManufacturer(cmsHPROFILE hProfile, cmsUInt32Number manufacturer); CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderCreator(cmsHPROFILE hProfile); CMSAPI cmsUInt32Number CMSEXPORT cmsGetHeaderModel(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsSetHeaderModel(cmsHPROFILE hProfile, cmsUInt32Number model); CMSAPI void CMSEXPORT cmsSetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number Flags); CMSAPI void CMSEXPORT cmsSetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID); CMSAPI void CMSEXPORT cmsSetHeaderRenderingIntent(cmsHPROFILE hProfile, cmsUInt32Number RenderingIntent); CMSAPI cmsColorSpaceSignature CMSEXPORT cmsGetPCS(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsSetPCS(cmsHPROFILE hProfile, cmsColorSpaceSignature pcs); CMSAPI cmsColorSpaceSignature CMSEXPORT cmsGetColorSpace(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsSetColorSpace(cmsHPROFILE hProfile, cmsColorSpaceSignature sig); CMSAPI cmsProfileClassSignature CMSEXPORT cmsGetDeviceClass(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsSetDeviceClass(cmsHPROFILE hProfile, cmsProfileClassSignature sig); CMSAPI void CMSEXPORT cmsSetProfileVersion(cmsHPROFILE hProfile, cmsFloat64Number Version); CMSAPI cmsFloat64Number CMSEXPORT cmsGetProfileVersion(cmsHPROFILE hProfile); CMSAPI cmsUInt32Number CMSEXPORT cmsGetEncodedICCversion(cmsHPROFILE hProfile); CMSAPI void CMSEXPORT cmsSetEncodedICCversion(cmsHPROFILE hProfile, cmsUInt32Number Version); // How profiles may be used #define LCMS_USED_AS_INPUT 0 #define LCMS_USED_AS_OUTPUT 1 #define LCMS_USED_AS_PROOF 2 CMSAPI cmsBool CMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection); CMSAPI cmsBool CMSEXPORT cmsIsMatrixShaper(cmsHPROFILE hProfile); CMSAPI cmsBool CMSEXPORT cmsIsCLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection); // Translate form/to our notation to ICC CMSAPI cmsColorSpaceSignature CMSEXPORT _cmsICCcolorSpace(int OurNotation); CMSAPI int CMSEXPORT _cmsLCMScolorSpace(cmsColorSpaceSignature ProfileSpace); CMSAPI cmsUInt32Number CMSEXPORT cmsChannelsOf(cmsColorSpaceSignature ColorSpace); // Build a suitable formatter for the colorspace of this profile CMSAPI cmsUInt32Number CMSEXPORT cmsFormatterForColorspaceOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat); CMSAPI cmsUInt32Number CMSEXPORT cmsFormatterForPCSOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat); // Localized info typedef enum { cmsInfoDescription = 0, cmsInfoManufacturer = 1, cmsInfoModel = 2, cmsInfoCopyright = 3 } cmsInfoType; CMSAPI cmsUInt32Number CMSEXPORT cmsGetProfileInfo(cmsHPROFILE hProfile, cmsInfoType Info, const char LanguageCode[3], const char CountryCode[3], wchar_t* Buffer, cmsUInt32Number BufferSize); CMSAPI cmsUInt32Number CMSEXPORT cmsGetProfileInfoASCII(cmsHPROFILE hProfile, cmsInfoType Info, const char LanguageCode[3], const char CountryCode[3], char* Buffer, cmsUInt32Number BufferSize); // IO handlers ---------------------------------------------------------------------------------------------------------- typedef struct _cms_io_handler cmsIOHANDLER; CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromFile(cmsContext ContextID, const char* FileName, const char* AccessMode); CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromStream(cmsContext ContextID, FILE* Stream); CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromMem(cmsContext ContextID, void *Buffer, cmsUInt32Number size, const char* AccessMode); CMSAPI cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromNULL(cmsContext ContextID); CMSAPI cmsBool CMSEXPORT cmsCloseIOhandler(cmsIOHANDLER* io); // MD5 message digest -------------------------------------------------------------------------------------------------- CMSAPI cmsBool CMSEXPORT cmsMD5computeID(cmsHPROFILE hProfile); // Profile high level funtions ------------------------------------------------------------------------------------------ CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess); CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFileTHR(cmsContext ContextID, const char *ICCProfile, const char *sAccess); CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char* sAccess); CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromStreamTHR(cmsContext ContextID, FILE* ICCProfile, const char* sAccess); CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromMem(const void * MemPtr, cmsUInt32Number dwSize); CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromMemTHR(cmsContext ContextID, const void * MemPtr, cmsUInt32Number dwSize); CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromIOhandlerTHR(cmsContext ContextID, cmsIOHANDLER* io); CMSAPI cmsBool CMSEXPORT cmsCloseProfile(cmsHPROFILE hProfile); CMSAPI cmsBool CMSEXPORT cmsSaveProfileToFile(cmsHPROFILE hProfile, const char* FileName); CMSAPI cmsBool CMSEXPORT cmsSaveProfileToStream(cmsHPROFILE hProfile, FILE* Stream); CMSAPI cmsBool CMSEXPORT cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, cmsUInt32Number* BytesNeeded); CMSAPI cmsUInt32Number CMSEXPORT cmsSaveProfileToIOhandler(cmsHPROFILE hProfile, cmsIOHANDLER* io); // Predefined virtual profiles ------------------------------------------------------------------------------------------ CMSAPI cmsHPROFILE CMSEXPORT cmsCreateRGBProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint, const cmsCIExyYTRIPLE* Primaries, cmsToneCurve* const TransferFunction[3]); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateRGBProfile(const cmsCIExyY* WhitePoint, const cmsCIExyYTRIPLE* Primaries, cmsToneCurve* const TransferFunction[3]); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateGrayProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint, const cmsToneCurve* TransferFunction); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateGrayProfile(const cmsCIExyY* WhitePoint, const cmsToneCurve* TransferFunction); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLinkTHR(cmsContext ContextID, cmsColorSpaceSignature ColorSpace, cmsToneCurve* const TransferFunctions[]); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLink(cmsColorSpaceSignature ColorSpace, cmsToneCurve* const TransferFunctions[]); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLinkTHR(cmsContext ContextID, cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLink(cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab2ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab2Profile(const cmsCIExyY* WhitePoint); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab4ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateLab4Profile(const cmsCIExyY* WhitePoint); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateXYZProfileTHR(cmsContext ContextID); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateXYZProfile(void); CMSAPI cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfileTHR(cmsContext ContextID); CMSAPI cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfile(void); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfileTHR(cmsContext ContextID, int nLUTPoints, cmsFloat64Number Bright, cmsFloat64Number Contrast, cmsFloat64Number Hue, cmsFloat64Number Saturation, int TempSrc, int TempDest); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfile(int nLUTPoints, cmsFloat64Number Bright, cmsFloat64Number Contrast, cmsFloat64Number Hue, cmsFloat64Number Saturation, int TempSrc, int TempDest); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateNULLProfileTHR(cmsContext ContextID); CMSAPI cmsHPROFILE CMSEXPORT cmsCreateNULLProfile(void); // Converts a transform to a devicelink profile CMSAPI cmsHPROFILE CMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, cmsFloat64Number Version, cmsUInt32Number dwFlags); // Intents ---------------------------------------------------------------------------------------------- // ICC Intents #define INTENT_PERCEPTUAL 0 #define INTENT_RELATIVE_COLORIMETRIC 1 #define INTENT_SATURATION 2 #define INTENT_ABSOLUTE_COLORIMETRIC 3 // Non-ICC intents #define INTENT_PRESERVE_K_ONLY_PERCEPTUAL 10 #define INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC 11 #define INTENT_PRESERVE_K_ONLY_SATURATION 12 #define INTENT_PRESERVE_K_PLANE_PERCEPTUAL 13 #define INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC 14 #define INTENT_PRESERVE_K_PLANE_SATURATION 15 // Call with NULL as parameters to get the intent count CMSAPI cmsUInt32Number CMSEXPORT cmsGetSupportedIntents(cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions); // Flags #define cmsFLAGS_NOCACHE 0x0040 // Inhibit 1-pixel cache #define cmsFLAGS_NOOPTIMIZE 0x0100 // Inhibit optimizations #define cmsFLAGS_NULLTRANSFORM 0x0200 // Don't transform anyway // Proofing flags #define cmsFLAGS_GAMUTCHECK 0x1000 // Out of Gamut alarm #define cmsFLAGS_SOFTPROOFING 0x4000 // Do softproofing // Misc #define cmsFLAGS_BLACKPOINTCOMPENSATION 0x2000 #define cmsFLAGS_NOWHITEONWHITEFIXUP 0x0004 // Don't fix scum dot #define cmsFLAGS_HIGHRESPRECALC 0x0400 // Use more memory to give better accurancy #define cmsFLAGS_LOWRESPRECALC 0x0800 // Use less memory to minimize resouces // For devicelink creation #define cmsFLAGS_8BITS_DEVICELINK 0x0008 // Create 8 bits devicelinks #define cmsFLAGS_GUESSDEVICECLASS 0x0020 // Guess device class (for transform2devicelink) #define cmsFLAGS_KEEP_SEQUENCE 0x0080 // Keep profile sequence for devicelink creation // Specific to a particular optimizations #define cmsFLAGS_FORCE_CLUT 0x0002 // Force CLUT optimization #define cmsFLAGS_CLUT_POST_LINEARIZATION 0x0001 // create postlinearization tables if possible #define cmsFLAGS_CLUT_PRE_LINEARIZATION 0x0010 // create prelinearization tables if possible // Fine-tune control over number of gridpoints #define cmsFLAGS_GRIDPOINTS(n) (((n) & 0xFF) << 16) // CRD special #define cmsFLAGS_NODEFAULTRESOURCEDEF 0x01000000 // Transforms --------------------------------------------------------------------------------------------------- CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateTransformTHR(cmsContext ContextID, cmsHPROFILE Input, cmsUInt32Number InputFormat, cmsHPROFILE Output, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags); CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateTransform(cmsHPROFILE Input, cmsUInt32Number InputFormat, cmsHPROFILE Output, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags); CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransformTHR(cmsContext ContextID, cmsHPROFILE Input, cmsUInt32Number InputFormat, cmsHPROFILE Output, cmsUInt32Number OutputFormat, cmsHPROFILE Proofing, cmsUInt32Number Intent, cmsUInt32Number ProofingIntent, cmsUInt32Number dwFlags); CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransform(cmsHPROFILE Input, cmsUInt32Number InputFormat, cmsHPROFILE Output, cmsUInt32Number OutputFormat, cmsHPROFILE Proofing, cmsUInt32Number Intent, cmsUInt32Number ProofingIntent, cmsUInt32Number dwFlags); CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransformTHR(cmsContext ContextID, cmsHPROFILE hProfiles[], cmsUInt32Number nProfiles, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags); CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransform(cmsHPROFILE hProfiles[], cmsUInt32Number nProfiles, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags); CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateExtendedTransform(cmsContext ContextID, cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[], cmsBool BPC[], cmsUInt32Number Intents[], cmsFloat64Number AdaptationStates[], cmsHPROFILE hGamutProfile, cmsUInt32Number nGamutPCSposition, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, cmsUInt32Number dwFlags); CMSAPI void CMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform); CMSAPI void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, const void * InputBuffer, void * OutputBuffer, cmsUInt32Number Size); CMSAPI void CMSEXPORT cmsDoTransformStride(cmsHTRANSFORM Transform, const void * InputBuffer, void * OutputBuffer, cmsUInt32Number Size, cmsUInt32Number Stride); CMSAPI void CMSEXPORT cmsSetAlarmCodes(cmsUInt16Number NewAlarm[cmsMAXCHANNELS]); CMSAPI void CMSEXPORT cmsGetAlarmCodes(cmsUInt16Number NewAlarm[cmsMAXCHANNELS]); // Adaptation state for absolute colorimetric intent CMSAPI cmsFloat64Number CMSEXPORT cmsSetAdaptationState(cmsFloat64Number d); // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed CMSAPI cmsContext CMSEXPORT cmsGetTransformContextID(cmsHTRANSFORM hTransform); // Grab the input/output formats CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformInputFormat(cmsHTRANSFORM hTransform); CMSAPI cmsUInt32Number CMSEXPORT cmsGetTransformOutputFormat(cmsHTRANSFORM hTransform); // For backwards compatibility CMSAPI cmsBool CMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat); // PostScript ColorRenderingDictionary and ColorSpaceArray ---------------------------------------------------- typedef enum { cmsPS_RESOURCE_CSA, cmsPS_RESOURCE_CRD } cmsPSResourceType; // lcms2 unified method to access postscript color resources CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptColorResource(cmsContext ContextID, cmsPSResourceType Type, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, cmsIOHANDLER* io); CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptCSA(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen); CMSAPI cmsUInt32Number CMSEXPORT cmsGetPostScriptCRD(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen); // IT8.7 / CGATS.17-200x handling ----------------------------------------------------------------------------- CMSAPI cmsHANDLE CMSEXPORT cmsIT8Alloc(cmsContext ContextID); CMSAPI void CMSEXPORT cmsIT8Free(cmsHANDLE hIT8); // Tables CMSAPI cmsUInt32Number CMSEXPORT cmsIT8TableCount(cmsHANDLE hIT8); CMSAPI cmsInt32Number CMSEXPORT cmsIT8SetTable(cmsHANDLE hIT8, cmsUInt32Number nTable); // Persistence CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromFile(cmsContext ContextID, const char* cFileName); CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromMem(cmsContext ContextID, void *Ptr, cmsUInt32Number len); // CMSAPI cmsHANDLE CMSEXPORT cmsIT8LoadFromIOhandler(cmsContext ContextID, cmsIOHANDLER* io); CMSAPI cmsBool CMSEXPORT cmsIT8SaveToFile(cmsHANDLE hIT8, const char* cFileName); CMSAPI cmsBool CMSEXPORT cmsIT8SaveToMem(cmsHANDLE hIT8, void *MemPtr, cmsUInt32Number* BytesNeeded); // Properties CMSAPI const char* CMSEXPORT cmsIT8GetSheetType(cmsHANDLE hIT8); CMSAPI cmsBool CMSEXPORT cmsIT8SetSheetType(cmsHANDLE hIT8, const char* Type); CMSAPI cmsBool CMSEXPORT cmsIT8SetComment(cmsHANDLE hIT8, const char* cComment); CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyStr(cmsHANDLE hIT8, const char* cProp, const char *Str); CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyDbl(cmsHANDLE hIT8, const char* cProp, cmsFloat64Number Val); CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyHex(cmsHANDLE hIT8, const char* cProp, cmsUInt32Number Val); CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char* SubKey, const char *Buffer); CMSAPI cmsBool CMSEXPORT cmsIT8SetPropertyUncooked(cmsHANDLE hIT8, const char* Key, const char* Buffer); CMSAPI const char* CMSEXPORT cmsIT8GetProperty(cmsHANDLE hIT8, const char* cProp); CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetPropertyDbl(cmsHANDLE hIT8, const char* cProp); CMSAPI const char* CMSEXPORT cmsIT8GetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char *SubKey); CMSAPI cmsUInt32Number CMSEXPORT cmsIT8EnumProperties(cmsHANDLE hIT8, char ***PropertyNames); CMSAPI cmsUInt32Number CMSEXPORT cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char* cProp, const char ***SubpropertyNames); // Datasets CMSAPI const char* CMSEXPORT cmsIT8GetDataRowCol(cmsHANDLE hIT8, int row, int col); CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataRowColDbl(cmsHANDLE hIT8, int row, int col); CMSAPI cmsBool CMSEXPORT cmsIT8SetDataRowCol(cmsHANDLE hIT8, int row, int col, const char* Val); CMSAPI cmsBool CMSEXPORT cmsIT8SetDataRowColDbl(cmsHANDLE hIT8, int row, int col, cmsFloat64Number Val); CMSAPI const char* CMSEXPORT cmsIT8GetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample); CMSAPI cmsFloat64Number CMSEXPORT cmsIT8GetDataDbl(cmsHANDLE hIT8, const char* cPatch, const char* cSample); CMSAPI cmsBool CMSEXPORT cmsIT8SetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample, const char *Val); CMSAPI cmsBool CMSEXPORT cmsIT8SetDataDbl(cmsHANDLE hIT8, const char* cPatch, const char* cSample, cmsFloat64Number Val); CMSAPI int CMSEXPORT cmsIT8FindDataFormat(cmsHANDLE hIT8, const char* cSample); CMSAPI cmsBool CMSEXPORT cmsIT8SetDataFormat(cmsHANDLE hIT8, int n, const char *Sample); CMSAPI int CMSEXPORT cmsIT8EnumDataFormat(cmsHANDLE hIT8, char ***SampleNames); CMSAPI const char* CMSEXPORT cmsIT8GetPatchName(cmsHANDLE hIT8, int nPatch, char* buffer); CMSAPI int CMSEXPORT cmsIT8GetPatchByName(cmsHANDLE hIT8, const char *cPatch); // The LABEL extension CMSAPI int CMSEXPORT cmsIT8SetTableByLabel(cmsHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType); CMSAPI cmsBool CMSEXPORT cmsIT8SetIndexColumn(cmsHANDLE hIT8, const char* cSample); // Formatter for double CMSAPI void CMSEXPORT cmsIT8DefineDblFormat(cmsHANDLE hIT8, const char* Formatter); // Gamut boundary description routines ------------------------------------------------------------------------------ CMSAPI cmsHANDLE CMSEXPORT cmsGBDAlloc(cmsContext ContextID); CMSAPI void CMSEXPORT cmsGBDFree(cmsHANDLE hGBD); CMSAPI cmsBool CMSEXPORT cmsGDBAddPoint(cmsHANDLE hGBD, const cmsCIELab* Lab); CMSAPI cmsBool CMSEXPORT cmsGDBCompute(cmsHANDLE hGDB, cmsUInt32Number dwFlags); CMSAPI cmsBool CMSEXPORT cmsGDBCheckPoint(cmsHANDLE hGBD, const cmsCIELab* Lab); // Feature detection ---------------------------------------------------------------------------------------------- // Estimate the black point CMSAPI cmsBool CMSEXPORT cmsDetectBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags); CMSAPI cmsBool CMSEXPORT cmsDetectDestinationBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags); // Estimate total area coverage CMSAPI cmsFloat64Number CMSEXPORT cmsDetectTAC(cmsHPROFILE hProfile); // Poor man's gamut mapping CMSAPI cmsBool CMSEXPORT cmsDesaturateLab(cmsCIELab* Lab, double amax, double amin, double bmax, double bmin); #ifndef CMS_USE_CPP_API # ifdef __cplusplus } # endif #endif #define _lcms2_H #endif lcms2-2.5/INSTALL0000644002406300000240000000005512163060730012754 0ustar mariamausers Please see the documentation in doc folder lcms2-2.5/src/0000755002406300000240000000000012164224271012515 5ustar mariamauserslcms2-2.5/src/cmsmd5.c0000644002406300000240000002242112163060730014047 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- #include "lcms2_internal.h" #ifdef CMS_USE_BIG_ENDIAN static void byteReverse(cmsUInt8Number * buf, cmsUInt32Number longs) { do { cmsUInt32Number t = _cmsAdjustEndianess32(*(cmsUInt32Number *) buf); *(cmsUInt32Number *) buf = t; buf += sizeof(cmsUInt32Number); } while (--longs); } #else #define byteReverse(buf, len) #endif typedef struct { cmsUInt32Number buf[4]; cmsUInt32Number bits[2]; cmsUInt8Number in[64]; cmsContext ContextID; } _cmsMD5; #define F1(x, y, z) (z ^ (x & (y ^ z))) #define F2(x, y, z) F1(z, x, y) #define F3(x, y, z) (x ^ y ^ z) #define F4(x, y, z) (y ^ (x | ~z)) #define STEP(f, w, x, y, z, data, s) \ ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) static void MD5_Transform(cmsUInt32Number buf[4], cmsUInt32Number in[16]) { register cmsUInt32Number a, b, c, d; a = buf[0]; b = buf[1]; c = buf[2]; d = buf[3]; STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); buf[0] += a; buf[1] += b; buf[2] += c; buf[3] += d; } // Create a MD5 object static cmsHANDLE MD5alloc(cmsContext ContextID) { _cmsMD5* ctx = (_cmsMD5*) _cmsMallocZero(ContextID, sizeof(_cmsMD5)); if (ctx == NULL) return NULL; ctx ->ContextID = ContextID; ctx->buf[0] = 0x67452301; ctx->buf[1] = 0xefcdab89; ctx->buf[2] = 0x98badcfe; ctx->buf[3] = 0x10325476; ctx->bits[0] = 0; ctx->bits[1] = 0; return (cmsHANDLE) ctx; } static void MD5add(cmsHANDLE Handle, cmsUInt8Number* buf, cmsUInt32Number len) { _cmsMD5* ctx = (_cmsMD5*) Handle; cmsUInt32Number t; t = ctx->bits[0]; if ((ctx->bits[0] = t + (len << 3)) < t) ctx->bits[1]++; ctx->bits[1] += len >> 29; t = (t >> 3) & 0x3f; if (t) { cmsUInt8Number *p = (cmsUInt8Number *) ctx->in + t; t = 64 - t; if (len < t) { memmove(p, buf, len); return; } memmove(p, buf, t); byteReverse(ctx->in, 16); MD5_Transform(ctx->buf, (cmsUInt32Number *) ctx->in); buf += t; len -= t; } while (len >= 64) { memmove(ctx->in, buf, 64); byteReverse(ctx->in, 16); MD5_Transform(ctx->buf, (cmsUInt32Number *) ctx->in); buf += 64; len -= 64; } memmove(ctx->in, buf, len); } // Destroy the object and return the checksum static void MD5finish(cmsProfileID* ProfileID, cmsHANDLE Handle) { _cmsMD5* ctx = (_cmsMD5*) Handle; cmsUInt32Number count; cmsUInt8Number *p; count = (ctx->bits[0] >> 3) & 0x3F; p = ctx->in + count; *p++ = 0x80; count = 64 - 1 - count; if (count < 8) { memset(p, 0, count); byteReverse(ctx->in, 16); MD5_Transform(ctx->buf, (cmsUInt32Number *) ctx->in); memset(ctx->in, 0, 56); } else { memset(p, 0, count - 8); } byteReverse(ctx->in, 14); ((cmsUInt32Number *) ctx->in)[14] = ctx->bits[0]; ((cmsUInt32Number *) ctx->in)[15] = ctx->bits[1]; MD5_Transform(ctx->buf, (cmsUInt32Number *) ctx->in); byteReverse((cmsUInt8Number *) ctx->buf, 4); memmove(ProfileID ->ID8, ctx->buf, 16); _cmsFree(ctx ->ContextID, ctx); } // Assuming io points to an ICC profile, compute and store MD5 checksum // In the header, rendering intentent, attributes and ID should be set to zero // before computing MD5 checksum (per 6.1.13 in ICC spec) cmsBool CMSEXPORT cmsMD5computeID(cmsHPROFILE hProfile) { cmsContext ContextID; cmsUInt32Number BytesNeeded; cmsUInt8Number* Mem = NULL; cmsHANDLE MD5 = NULL; _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; _cmsICCPROFILE Keep; _cmsAssert(hProfile != NULL); ContextID = cmsGetProfileContextID(hProfile); // Save a copy of the profile header memmove(&Keep, Icc, sizeof(_cmsICCPROFILE)); // Set RI, attributes and ID memset(&Icc ->attributes, 0, sizeof(Icc ->attributes)); Icc ->RenderingIntent = 0; memset(&Icc ->ProfileID, 0, sizeof(Icc ->ProfileID)); // Compute needed storage if (!cmsSaveProfileToMem(hProfile, NULL, &BytesNeeded)) goto Error; // Allocate memory Mem = (cmsUInt8Number*) _cmsMalloc(ContextID, BytesNeeded); if (Mem == NULL) goto Error; // Save to temporary storage if (!cmsSaveProfileToMem(hProfile, Mem, &BytesNeeded)) goto Error; // Create MD5 object MD5 = MD5alloc(ContextID); if (MD5 == NULL) goto Error; // Add all bytes MD5add(MD5, Mem, BytesNeeded); // Temp storage is no longer needed _cmsFree(ContextID, Mem); // Restore header memmove(Icc, &Keep, sizeof(_cmsICCPROFILE)); // And store the ID MD5finish(&Icc ->ProfileID, MD5); return TRUE; Error: // Free resources as something went wrong // "MD5" cannot be other than NULL here, so no need to free it if (Mem != NULL) _cmsFree(ContextID, Mem); memmove(Icc, &Keep, sizeof(_cmsICCPROFILE)); return FALSE; } lcms2-2.5/src/cmstypes.c0000644002406300000240000052774512163060730014551 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Tag Serialization ----------------------------------------------------------------------------- // This file implements every single tag and tag type as described in the ICC spec. Some types // have been deprecated, like ncl and Data. There is no implementation for those types as there // are no profiles holding them. The programmer can also extend this list by defining his own types // by using the appropiate plug-in. There are three types of plug ins regarding that. First type // allows to define new tags using any existing type. Next plug-in type allows to define new types // and the third one is very specific: allows to extend the number of elements in the multiprofile // elements special type. //-------------------------------------------------------------------------------------------------- // Some broken types #define cmsCorbisBrokenXYZtype ((cmsTagTypeSignature) 0x17A505B8) #define cmsMonacoBrokenCurveType ((cmsTagTypeSignature) 0x9478ee00) // This is the linked list that keeps track of the defined types typedef struct _cmsTagTypeLinkedList_st { cmsTagTypeHandler Handler; struct _cmsTagTypeLinkedList_st* Next; } _cmsTagTypeLinkedList; // Some macros to define callbacks. #define READ_FN(x) Type_##x##_Read #define WRITE_FN(x) Type_##x##_Write #define FREE_FN(x) Type_##x##_Free #define DUP_FN(x) Type_##x##_Dup // Helper macro to define a handler. Callbacks do have a fixed naming convention. #define TYPE_HANDLER(t, x) { (t), READ_FN(x), WRITE_FN(x), DUP_FN(x), FREE_FN(x), NULL, 0 } // Helper macro to define a MPE handler. Callbacks do have a fixed naming convention #define TYPE_MPE_HANDLER(t, x) { (t), READ_FN(x), WRITE_FN(x), GenericMPEdup, GenericMPEfree, NULL, 0 } // Register a new type handler. This routine is shared between normal types and MPE static cmsBool RegisterTypesPlugin(cmsContext id, cmsPluginBase* Data, _cmsTagTypeLinkedList* LinkedList, cmsUInt32Number DefaultListCount) { cmsPluginTagType* Plugin = (cmsPluginTagType*) Data; _cmsTagTypeLinkedList *pt, *Anterior = NULL; // Calling the function with NULL as plug-in would unregister the plug in. if (Data == NULL) { LinkedList[DefaultListCount-1].Next = NULL; return TRUE; } pt = Anterior = LinkedList; while (pt != NULL) { if (Plugin->Handler.Signature == pt -> Handler.Signature) { pt ->Handler = Plugin ->Handler; // Replace old behaviour. // Note that since no memory is allocated, unregister does not // reset this action. return TRUE; } Anterior = pt; pt = pt ->Next; } // Registering happens in plug-in memory pool pt = (_cmsTagTypeLinkedList*) _cmsPluginMalloc(id, sizeof(_cmsTagTypeLinkedList)); if (pt == NULL) return FALSE; pt ->Handler = Plugin ->Handler; pt ->Next = NULL; if (Anterior) Anterior -> Next = pt; return TRUE; } // Return handler for a given type or NULL if not found. Shared between normal types and MPE static cmsTagTypeHandler* GetHandler(cmsTagTypeSignature sig, _cmsTagTypeLinkedList* LinkedList) { _cmsTagTypeLinkedList* pt; for (pt = LinkedList; pt != NULL; pt = pt ->Next) { if (sig == pt -> Handler.Signature) return &pt ->Handler; } return NULL; } // Auxiliar to convert UTF-32 to UTF-16 in some cases static cmsBool _cmsWriteWCharArray(cmsIOHANDLER* io, cmsUInt32Number n, const wchar_t* Array) { cmsUInt32Number i; _cmsAssert(io != NULL); _cmsAssert(!(Array == NULL && n > 0)); for (i=0; i < n; i++) { if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) Array[i])) return FALSE; } return TRUE; } static cmsBool _cmsReadWCharArray(cmsIOHANDLER* io, cmsUInt32Number n, wchar_t* Array) { cmsUInt32Number i; cmsUInt16Number tmp; _cmsAssert(io != NULL); for (i=0; i < n; i++) { if (Array != NULL) { if (!_cmsReadUInt16Number(io, &tmp)) return FALSE; Array[i] = (wchar_t) tmp; } else { if (!_cmsReadUInt16Number(io, NULL)) return FALSE; } } return TRUE; } // To deal with position tables typedef cmsBool (* PositionTableEntryFn)(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Cargo, cmsUInt32Number n, cmsUInt32Number SizeOfTag); // Helper function to deal with position tables as decribed in ICC spec 4.3 // A table of n elements is readed, where first comes n records containing offsets and sizes and // then a block containing the data itself. This allows to reuse same data in more than one entry static cmsBool ReadPositionTable(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number Count, cmsUInt32Number BaseOffset, void *Cargo, PositionTableEntryFn ElementFn) { cmsUInt32Number i; cmsUInt32Number *ElementOffsets = NULL, *ElementSizes = NULL; // Let's take the offsets to each element ElementOffsets = (cmsUInt32Number *) _cmsCalloc(io ->ContextID, Count, sizeof(cmsUInt32Number)); if (ElementOffsets == NULL) goto Error; ElementSizes = (cmsUInt32Number *) _cmsCalloc(io ->ContextID, Count, sizeof(cmsUInt32Number)); if (ElementSizes == NULL) goto Error; for (i=0; i < Count; i++) { if (!_cmsReadUInt32Number(io, &ElementOffsets[i])) goto Error; if (!_cmsReadUInt32Number(io, &ElementSizes[i])) goto Error; ElementOffsets[i] += BaseOffset; } // Seek to each element and read it for (i=0; i < Count; i++) { if (!io -> Seek(io, ElementOffsets[i])) goto Error; // This is the reader callback if (!ElementFn(self, io, Cargo, i, ElementSizes[i])) goto Error; } // Success if (ElementOffsets != NULL) _cmsFree(io ->ContextID, ElementOffsets); if (ElementSizes != NULL) _cmsFree(io ->ContextID, ElementSizes); return TRUE; Error: if (ElementOffsets != NULL) _cmsFree(io ->ContextID, ElementOffsets); if (ElementSizes != NULL) _cmsFree(io ->ContextID, ElementSizes); return FALSE; } // Same as anterior, but for write position tables static cmsBool WritePositionTable(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number SizeOfTag, cmsUInt32Number Count, cmsUInt32Number BaseOffset, void *Cargo, PositionTableEntryFn ElementFn) { cmsUInt32Number i; cmsUInt32Number DirectoryPos, CurrentPos, Before; cmsUInt32Number *ElementOffsets = NULL, *ElementSizes = NULL; // Create table ElementOffsets = (cmsUInt32Number *) _cmsCalloc(io ->ContextID, Count, sizeof(cmsUInt32Number)); if (ElementOffsets == NULL) goto Error; ElementSizes = (cmsUInt32Number *) _cmsCalloc(io ->ContextID, Count, sizeof(cmsUInt32Number)); if (ElementSizes == NULL) goto Error; // Keep starting position of curve offsets DirectoryPos = io ->Tell(io); // Write a fake directory to be filled latter on for (i=0; i < Count; i++) { if (!_cmsWriteUInt32Number(io, 0)) goto Error; // Offset if (!_cmsWriteUInt32Number(io, 0)) goto Error; // size } // Write each element. Keep track of the size as well. for (i=0; i < Count; i++) { Before = io ->Tell(io); ElementOffsets[i] = Before - BaseOffset; // Callback to write... if (!ElementFn(self, io, Cargo, i, SizeOfTag)) goto Error; // Now the size ElementSizes[i] = io ->Tell(io) - Before; } // Write the directory CurrentPos = io ->Tell(io); if (!io ->Seek(io, DirectoryPos)) goto Error; for (i=0; i < Count; i++) { if (!_cmsWriteUInt32Number(io, ElementOffsets[i])) goto Error; if (!_cmsWriteUInt32Number(io, ElementSizes[i])) goto Error; } if (!io ->Seek(io, CurrentPos)) goto Error; if (ElementOffsets != NULL) _cmsFree(io ->ContextID, ElementOffsets); if (ElementSizes != NULL) _cmsFree(io ->ContextID, ElementSizes); return TRUE; Error: if (ElementOffsets != NULL) _cmsFree(io ->ContextID, ElementOffsets); if (ElementSizes != NULL) _cmsFree(io ->ContextID, ElementSizes); return FALSE; } // ******************************************************************************** // Type XYZ. Only one value is allowed // ******************************************************************************** //The XYZType contains an array of three encoded values for the XYZ tristimulus //values. Tristimulus values must be non-negative. The signed encoding allows for //implementation optimizations by minimizing the number of fixed formats. static void *Type_XYZ_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsCIEXYZ* xyz; *nItems = 0; xyz = (cmsCIEXYZ*) _cmsMallocZero(self ->ContextID, sizeof(cmsCIEXYZ)); if (xyz == NULL) return NULL; if (!_cmsReadXYZNumber(io, xyz)) { _cmsFree(self ->ContextID, xyz); return NULL; } *nItems = 1; return (void*) xyz; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_XYZ_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { return _cmsWriteXYZNumber(io, (cmsCIEXYZ*) Ptr); cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_XYZ_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, sizeof(cmsCIEXYZ)); cmsUNUSED_PARAMETER(n); } static void Type_XYZ_Free(struct _cms_typehandler_struct* self, void *Ptr) { _cmsFree(self ->ContextID, Ptr); } static cmsTagTypeSignature DecideXYZtype(cmsFloat64Number ICCVersion, const void *Data) { return cmsSigXYZType; cmsUNUSED_PARAMETER(ICCVersion); cmsUNUSED_PARAMETER(Data); } // ******************************************************************************** // Type chromaticity. Only one value is allowed // ******************************************************************************** // The chromaticity tag type provides basic chromaticity data and type of // phosphors or colorants of a monitor to applications and utilities. static void *Type_Chromaticity_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsCIExyYTRIPLE* chrm; cmsUInt16Number nChans, Table; *nItems = 0; chrm = (cmsCIExyYTRIPLE*) _cmsMallocZero(self ->ContextID, sizeof(cmsCIExyYTRIPLE)); if (chrm == NULL) return NULL; if (!_cmsReadUInt16Number(io, &nChans)) goto Error; // Let's recover from a bug introduced in early versions of lcms1 if (nChans == 0 && SizeOfTag == 32) { if (!_cmsReadUInt16Number(io, NULL)) goto Error; if (!_cmsReadUInt16Number(io, &nChans)) goto Error; } if (nChans != 3) goto Error; if (!_cmsReadUInt16Number(io, &Table)) goto Error; if (!_cmsRead15Fixed16Number(io, &chrm ->Red.x)) goto Error; if (!_cmsRead15Fixed16Number(io, &chrm ->Red.y)) goto Error; chrm ->Red.Y = 1.0; if (!_cmsRead15Fixed16Number(io, &chrm ->Green.x)) goto Error; if (!_cmsRead15Fixed16Number(io, &chrm ->Green.y)) goto Error; chrm ->Green.Y = 1.0; if (!_cmsRead15Fixed16Number(io, &chrm ->Blue.x)) goto Error; if (!_cmsRead15Fixed16Number(io, &chrm ->Blue.y)) goto Error; chrm ->Blue.Y = 1.0; *nItems = 1; return (void*) chrm; Error: _cmsFree(self ->ContextID, (void*) chrm); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool SaveOneChromaticity(cmsFloat64Number x, cmsFloat64Number y, cmsIOHANDLER* io) { if (!_cmsWriteUInt32Number(io, _cmsDoubleTo15Fixed16(x))) return FALSE; if (!_cmsWriteUInt32Number(io, _cmsDoubleTo15Fixed16(y))) return FALSE; return TRUE; } static cmsBool Type_Chromaticity_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsCIExyYTRIPLE* chrm = (cmsCIExyYTRIPLE*) Ptr; if (!_cmsWriteUInt16Number(io, 3)) return FALSE; // nChannels if (!_cmsWriteUInt16Number(io, 0)) return FALSE; // Table if (!SaveOneChromaticity(chrm -> Red.x, chrm -> Red.y, io)) return FALSE; if (!SaveOneChromaticity(chrm -> Green.x, chrm -> Green.y, io)) return FALSE; if (!SaveOneChromaticity(chrm -> Blue.x, chrm -> Blue.y, io)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_Chromaticity_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, sizeof(cmsCIExyYTRIPLE)); cmsUNUSED_PARAMETER(n); } static void Type_Chromaticity_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigColorantOrderType // ******************************************************************************** // This is an optional tag which specifies the laydown order in which colorants will // be printed on an n-colorant device. The laydown order may be the same as the // channel generation order listed in the colorantTableTag or the channel order of a // colour space such as CMYK, in which case this tag is not needed. When this is not // the case (for example, ink-towers sometimes use the order KCMY), this tag may be // used to specify the laydown order of the colorants. static void *Type_ColorantOrderType_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt8Number* ColorantOrder; cmsUInt32Number Count; *nItems = 0; if (!_cmsReadUInt32Number(io, &Count)) return NULL; if (Count > cmsMAXCHANNELS) return NULL; ColorantOrder = (cmsUInt8Number*) _cmsCalloc(self ->ContextID, cmsMAXCHANNELS, sizeof(cmsUInt8Number)); if (ColorantOrder == NULL) return NULL; // We use FF as end marker memset(ColorantOrder, 0xFF, cmsMAXCHANNELS * sizeof(cmsUInt8Number)); if (io ->Read(io, ColorantOrder, sizeof(cmsUInt8Number), Count) != Count) { _cmsFree(self ->ContextID, (void*) ColorantOrder); return NULL; } *nItems = 1; return (void*) ColorantOrder; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_ColorantOrderType_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUInt8Number* ColorantOrder = (cmsUInt8Number*) Ptr; cmsUInt32Number i, sz, Count; // Get the length for (Count=i=0; i < cmsMAXCHANNELS; i++) { if (ColorantOrder[i] != 0xFF) Count++; } if (!_cmsWriteUInt32Number(io, Count)) return FALSE; sz = Count * sizeof(cmsUInt8Number); if (!io -> Write(io, sz, ColorantOrder)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_ColorantOrderType_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, cmsMAXCHANNELS * sizeof(cmsUInt8Number)); cmsUNUSED_PARAMETER(n); } static void Type_ColorantOrderType_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigS15Fixed16ArrayType // ******************************************************************************** // This type represents an array of generic 4-byte/32-bit fixed point quantity. // The number of values is determined from the size of the tag. static void *Type_S15Fixed16_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsFloat64Number* array_double; cmsUInt32Number i, n; *nItems = 0; n = SizeOfTag / sizeof(cmsUInt32Number); array_double = (cmsFloat64Number*) _cmsCalloc(self ->ContextID, n, sizeof(cmsFloat64Number)); if (array_double == NULL) return NULL; for (i=0; i < n; i++) { if (!_cmsRead15Fixed16Number(io, &array_double[i])) { _cmsFree(self ->ContextID, array_double); return NULL; } } *nItems = n; return (void*) array_double; } static cmsBool Type_S15Fixed16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsFloat64Number* Value = (cmsFloat64Number*) Ptr; cmsUInt32Number i; for (i=0; i < nItems; i++) { if (!_cmsWrite15Fixed16Number(io, Value[i])) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(self); } static void* Type_S15Fixed16_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, n * sizeof(cmsFloat64Number)); } static void Type_S15Fixed16_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigU16Fixed16ArrayType // ******************************************************************************** // This type represents an array of generic 4-byte/32-bit quantity. // The number of values is determined from the size of the tag. static void *Type_U16Fixed16_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsFloat64Number* array_double; cmsUInt32Number v; cmsUInt32Number i, n; *nItems = 0; n = SizeOfTag / sizeof(cmsUInt32Number); array_double = (cmsFloat64Number*) _cmsCalloc(self ->ContextID, n, sizeof(cmsFloat64Number)); if (array_double == NULL) return NULL; for (i=0; i < n; i++) { if (!_cmsReadUInt32Number(io, &v)) { _cmsFree(self ->ContextID, (void*) array_double); return NULL; } // Convert to cmsFloat64Number array_double[i] = (cmsFloat64Number) (v / 65536.0); } *nItems = n; return (void*) array_double; } static cmsBool Type_U16Fixed16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsFloat64Number* Value = (cmsFloat64Number*) Ptr; cmsUInt32Number i; for (i=0; i < nItems; i++) { cmsUInt32Number v = (cmsUInt32Number) floor(Value[i]*65536.0 + 0.5); if (!_cmsWriteUInt32Number(io, v)) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(self); } static void* Type_U16Fixed16_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, n * sizeof(cmsFloat64Number)); } static void Type_U16Fixed16_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigSignatureType // ******************************************************************************** // // The signatureType contains a four-byte sequence, Sequences of less than four // characters are padded at the end with spaces, 20h. // Typically this type is used for registered tags that can be displayed on many // development systems as a sequence of four characters. static void *Type_Signature_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsSignature* SigPtr = (cmsSignature*) _cmsMalloc(self ->ContextID, sizeof(cmsSignature)); if (SigPtr == NULL) return NULL; if (!_cmsReadUInt32Number(io, SigPtr)) return NULL; *nItems = 1; return SigPtr; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_Signature_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsSignature* SigPtr = (cmsSignature*) Ptr; return _cmsWriteUInt32Number(io, *SigPtr); cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_Signature_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, n * sizeof(cmsSignature)); } static void Type_Signature_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigTextType // ******************************************************************************** // // The textType is a simple text structure that contains a 7-bit ASCII text string. // The length of the string is obtained by subtracting 8 from the element size portion // of the tag itself. This string must be terminated with a 00h byte. static void *Type_Text_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { char* Text = NULL; cmsMLU* mlu = NULL; // Create a container mlu = cmsMLUalloc(self ->ContextID, 1); if (mlu == NULL) return NULL; *nItems = 0; // We need to store the "\0" at the end, so +1 if (SizeOfTag == UINT_MAX) goto Error; Text = (char*) _cmsMalloc(self ->ContextID, SizeOfTag + 1); if (Text == NULL) goto Error; if (io -> Read(io, Text, sizeof(char), SizeOfTag) != SizeOfTag) goto Error; // Make sure text is properly ended Text[SizeOfTag] = 0; *nItems = 1; // Keep the result if (!cmsMLUsetASCII(mlu, cmsNoLanguage, cmsNoCountry, Text)) goto Error; _cmsFree(self ->ContextID, Text); return (void*) mlu; Error: if (mlu != NULL) cmsMLUfree(mlu); if (Text != NULL) _cmsFree(self ->ContextID, Text); return NULL; } // The conversion implies to choose a language. So, we choose the actual language. static cmsBool Type_Text_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsMLU* mlu = (cmsMLU*) Ptr; cmsUInt32Number size; cmsBool rc; char* Text; // Get the size of the string. Note there is an extra "\0" at the end size = cmsMLUgetASCII(mlu, cmsNoLanguage, cmsNoCountry, NULL, 0); if (size == 0) return FALSE; // Cannot be zero! // Create memory Text = (char*) _cmsMalloc(self ->ContextID, size); cmsMLUgetASCII(mlu, cmsNoLanguage, cmsNoCountry, Text, size); // Write it, including separator rc = io ->Write(io, size, Text); _cmsFree(self ->ContextID, Text); return rc; cmsUNUSED_PARAMETER(nItems); } static void* Type_Text_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsMLUdup((cmsMLU*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_Text_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsMLU* mlu = (cmsMLU*) Ptr; cmsMLUfree(mlu); return; cmsUNUSED_PARAMETER(self); } static cmsTagTypeSignature DecideTextType(cmsFloat64Number ICCVersion, const void *Data) { if (ICCVersion >= 4.0) return cmsSigMultiLocalizedUnicodeType; return cmsSigTextType; cmsUNUSED_PARAMETER(Data); } // ******************************************************************************** // Type cmsSigDataType // ******************************************************************************** // General purpose data type static void *Type_Data_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsICCData* BinData; cmsUInt32Number LenOfData; *nItems = 0; if (SizeOfTag < sizeof(cmsUInt32Number)) return NULL; LenOfData = SizeOfTag - sizeof(cmsUInt32Number); if (LenOfData > INT_MAX) return NULL; BinData = (cmsICCData*) _cmsMalloc(self ->ContextID, sizeof(cmsICCData) + LenOfData - 1); if (BinData == NULL) return NULL; BinData ->len = LenOfData; if (!_cmsReadUInt32Number(io, &BinData->flag)) { _cmsFree(self ->ContextID, BinData); return NULL; } if (io -> Read(io, BinData ->data, sizeof(cmsUInt8Number), LenOfData) != LenOfData) { _cmsFree(self ->ContextID, BinData); return NULL; } *nItems = 1; return (void*) BinData; } static cmsBool Type_Data_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsICCData* BinData = (cmsICCData*) Ptr; if (!_cmsWriteUInt32Number(io, BinData ->flag)) return FALSE; return io ->Write(io, BinData ->len, BinData ->data); cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_Data_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { cmsICCData* BinData = (cmsICCData*) Ptr; return _cmsDupMem(self ->ContextID, Ptr, sizeof(cmsICCData) + BinData ->len - 1); cmsUNUSED_PARAMETER(n); } static void Type_Data_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigTextDescriptionType // ******************************************************************************** static void *Type_Text_Description_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { char* Text = NULL; cmsMLU* mlu = NULL; cmsUInt32Number AsciiCount; cmsUInt32Number i, UnicodeCode, UnicodeCount; cmsUInt16Number ScriptCodeCode, Dummy; cmsUInt8Number ScriptCodeCount; *nItems = 0; // One dword should be there if (SizeOfTag < sizeof(cmsUInt32Number)) return NULL; // Read len of ASCII if (!_cmsReadUInt32Number(io, &AsciiCount)) return NULL; SizeOfTag -= sizeof(cmsUInt32Number); // Check for size if (SizeOfTag < AsciiCount) return NULL; // All seems Ok, allocate the container mlu = cmsMLUalloc(self ->ContextID, 1); if (mlu == NULL) return NULL; // As many memory as size of tag Text = (char*) _cmsMalloc(self ->ContextID, AsciiCount + 1); if (Text == NULL) goto Error; // Read it if (io ->Read(io, Text, sizeof(char), AsciiCount) != AsciiCount) goto Error; SizeOfTag -= AsciiCount; // Make sure there is a terminator Text[AsciiCount] = 0; // Set the MLU entry. From here we can be tolerant to wrong types if (!cmsMLUsetASCII(mlu, cmsNoLanguage, cmsNoCountry, Text)) goto Error; _cmsFree(self ->ContextID, (void*) Text); Text = NULL; // Skip Unicode code if (SizeOfTag < 2* sizeof(cmsUInt32Number)) goto Done; if (!_cmsReadUInt32Number(io, &UnicodeCode)) goto Done; if (!_cmsReadUInt32Number(io, &UnicodeCount)) goto Done; SizeOfTag -= 2* sizeof(cmsUInt32Number); if (SizeOfTag < UnicodeCount*sizeof(cmsUInt16Number)) goto Done; for (i=0; i < UnicodeCount; i++) { if (!io ->Read(io, &Dummy, sizeof(cmsUInt16Number), 1)) goto Done; } SizeOfTag -= UnicodeCount*sizeof(cmsUInt16Number); // Skip ScriptCode code if present. Some buggy profiles does have less // data that stricttly required. We need to skip it as this type may come // embedded in other types. if (SizeOfTag >= sizeof(cmsUInt16Number) + sizeof(cmsUInt8Number) + 67) { if (!_cmsReadUInt16Number(io, &ScriptCodeCode)) goto Done; if (!_cmsReadUInt8Number(io, &ScriptCodeCount)) goto Done; // Skip rest of tag for (i=0; i < 67; i++) { if (!io ->Read(io, &Dummy, sizeof(cmsUInt8Number), 1)) goto Error; } } Done: *nItems = 1; return mlu; Error: if (Text) _cmsFree(self ->ContextID, (void*) Text); if (mlu) cmsMLUfree(mlu); return NULL; } // This tag can come IN UNALIGNED SIZE. In order to prevent issues, we force zeros on description to align it static cmsBool Type_Text_Description_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsMLU* mlu = (cmsMLU*) Ptr; char *Text = NULL; wchar_t *Wide = NULL; cmsUInt32Number len, len_aligned, len_filler_alignment; cmsBool rc = FALSE; char Filler[68]; // Used below for writting zeroes memset(Filler, 0, sizeof(Filler)); // Get the len of string len = cmsMLUgetASCII(mlu, cmsNoLanguage, cmsNoCountry, NULL, 0); // From ICC3.4: It has been found that textDescriptionType can contain misaligned data //(see clause 4.1 for the definition of aligned). Because the Unicode language // code and Unicode count immediately follow the ASCII description, their // alignment is not correct if the ASCII count is not a multiple of four. The // ScriptCode code is misaligned when the ASCII count is odd. Profile reading and // writing software must be written carefully in order to handle these alignment // problems. // Compute an aligned size len_aligned = _cmsALIGNLONG(len); len_filler_alignment = len_aligned - len; // Null strings if (len <= 0) { Text = (char*) _cmsDupMem(self ->ContextID, "", sizeof(char)); Wide = (wchar_t*) _cmsDupMem(self ->ContextID, L"", sizeof(wchar_t)); } else { // Create independent buffers Text = (char*) _cmsCalloc(self ->ContextID, len, sizeof(char)); if (Text == NULL) goto Error; Wide = (wchar_t*) _cmsCalloc(self ->ContextID, len, sizeof(wchar_t)); if (Wide == NULL) goto Error; // Get both representations. cmsMLUgetASCII(mlu, cmsNoLanguage, cmsNoCountry, Text, len * sizeof(char)); cmsMLUgetWide(mlu, cmsNoLanguage, cmsNoCountry, Wide, len * sizeof(wchar_t)); } // * cmsUInt32Number count; * Description length // * cmsInt8Number desc[count] * NULL terminated ascii string // * cmsUInt32Number ucLangCode; * UniCode language code // * cmsUInt32Number ucCount; * UniCode description length // * cmsInt16Number ucDesc[ucCount];* The UniCode description // * cmsUInt16Number scCode; * ScriptCode code // * cmsUInt8Number scCount; * ScriptCode count // * cmsInt8Number scDesc[67]; * ScriptCode Description if (!_cmsWriteUInt32Number(io, len_aligned)) goto Error; if (!io ->Write(io, len, Text)) goto Error; if (!io ->Write(io, len_filler_alignment, Filler)) goto Error; if (!_cmsWriteUInt32Number(io, 0)) goto Error; // ucLanguageCode // This part is tricky: we need an aligned tag size, and the ScriptCode part // takes 70 bytes, so we need 2 extra bytes to do the alignment if (!_cmsWriteUInt32Number(io, len_aligned+1)) goto Error; // Note that in some compilers sizeof(cmsUInt16Number) != sizeof(wchar_t) if (!_cmsWriteWCharArray(io, len, Wide)) goto Error; if (!_cmsWriteUInt16Array(io, len_filler_alignment+1, (cmsUInt16Number*) Filler)) goto Error; // ScriptCode Code & count (unused) if (!_cmsWriteUInt16Number(io, 0)) goto Error; if (!_cmsWriteUInt8Number(io, 0)) goto Error; if (!io ->Write(io, 67, Filler)) goto Error; rc = TRUE; Error: if (Text) _cmsFree(self ->ContextID, Text); if (Wide) _cmsFree(self ->ContextID, Wide); return rc; cmsUNUSED_PARAMETER(nItems); } static void* Type_Text_Description_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsMLUdup((cmsMLU*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_Text_Description_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsMLU* mlu = (cmsMLU*) Ptr; cmsMLUfree(mlu); return; cmsUNUSED_PARAMETER(self); } static cmsTagTypeSignature DecideTextDescType(cmsFloat64Number ICCVersion, const void *Data) { if (ICCVersion >= 4.0) return cmsSigMultiLocalizedUnicodeType; return cmsSigTextDescriptionType; cmsUNUSED_PARAMETER(Data); } // ******************************************************************************** // Type cmsSigCurveType // ******************************************************************************** static void *Type_Curve_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt32Number Count; cmsToneCurve* NewGamma; *nItems = 0; if (!_cmsReadUInt32Number(io, &Count)) return NULL; switch (Count) { case 0: // Linear. { cmsFloat64Number SingleGamma = 1.0; NewGamma = cmsBuildParametricToneCurve(self ->ContextID, 1, &SingleGamma); if (!NewGamma) return NULL; *nItems = 1; return NewGamma; } case 1: // Specified as the exponent of gamma function { cmsUInt16Number SingleGammaFixed; cmsFloat64Number SingleGamma; if (!_cmsReadUInt16Number(io, &SingleGammaFixed)) return NULL; SingleGamma = _cms8Fixed8toDouble(SingleGammaFixed); *nItems = 1; return cmsBuildParametricToneCurve(self ->ContextID, 1, &SingleGamma); } default: // Curve if (Count > 0x7FFF) return NULL; // This is to prevent bad guys for doing bad things NewGamma = cmsBuildTabulatedToneCurve16(self ->ContextID, Count, NULL); if (!NewGamma) return NULL; if (!_cmsReadUInt16Array(io, Count, NewGamma -> Table16)) return NULL; *nItems = 1; return NewGamma; } cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_Curve_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsToneCurve* Curve = (cmsToneCurve*) Ptr; if (Curve ->nSegments == 1 && Curve ->Segments[0].Type == 1) { // Single gamma, preserve number cmsUInt16Number SingleGammaFixed = _cmsDoubleTo8Fixed8(Curve ->Segments[0].Params[0]); if (!_cmsWriteUInt32Number(io, 1)) return FALSE; if (!_cmsWriteUInt16Number(io, SingleGammaFixed)) return FALSE; return TRUE; } if (!_cmsWriteUInt32Number(io, Curve ->nEntries)) return FALSE; return _cmsWriteUInt16Array(io, Curve ->nEntries, Curve ->Table16); cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_Curve_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsDupToneCurve((cmsToneCurve*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_Curve_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsToneCurve* gamma = (cmsToneCurve*) Ptr; cmsFreeToneCurve(gamma); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigParametricCurveType // ******************************************************************************** // Decide which curve type to use on writting static cmsTagTypeSignature DecideCurveType(cmsFloat64Number ICCVersion, const void *Data) { cmsToneCurve* Curve = (cmsToneCurve*) Data; if (ICCVersion < 4.0) return cmsSigCurveType; if (Curve ->nSegments != 1) return cmsSigCurveType; // Only 1-segment curves can be saved as parametric if (Curve ->Segments[0].Type < 0) return cmsSigCurveType; // Only non-inverted curves if (Curve ->Segments[0].Type > 5) return cmsSigCurveType; // Only ICC parametric curves return cmsSigParametricCurveType; } static void *Type_ParametricCurve_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { static const int ParamsByType[] = { 1, 3, 4, 5, 7 }; cmsFloat64Number Params[10]; cmsUInt16Number Type; int i, n; cmsToneCurve* NewGamma; if (!_cmsReadUInt16Number(io, &Type)) return NULL; if (!_cmsReadUInt16Number(io, NULL)) return NULL; // Reserved if (Type > 4) { cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown parametric curve type '%d'", Type); return NULL; } memset(Params, 0, sizeof(Params)); n = ParamsByType[Type]; for (i=0; i < n; i++) { if (!_cmsRead15Fixed16Number(io, &Params[i])) return NULL; } NewGamma = cmsBuildParametricToneCurve(self ->ContextID, Type+1, Params); *nItems = 1; return NewGamma; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_ParametricCurve_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsToneCurve* Curve = (cmsToneCurve*) Ptr; int i, nParams, typen; static const int ParamsByType[] = { 0, 1, 3, 4, 5, 7 }; typen = Curve -> Segments[0].Type; if (Curve ->nSegments > 1 || typen < 1) { cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Multisegment or Inverted parametric curves cannot be written"); return FALSE; } if (typen > 5) { cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported parametric curve"); return FALSE; } nParams = ParamsByType[typen]; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) (Curve ->Segments[0].Type - 1))) return FALSE; if (!_cmsWriteUInt16Number(io, 0)) return FALSE; // Reserved for (i=0; i < nParams; i++) { if (!_cmsWrite15Fixed16Number(io, Curve -> Segments[0].Params[i])) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_ParametricCurve_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsDupToneCurve((cmsToneCurve*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_ParametricCurve_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsToneCurve* gamma = (cmsToneCurve*) Ptr; cmsFreeToneCurve(gamma); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigDateTimeType // ******************************************************************************** // A 12-byte value representation of the time and date, where the byte usage is assigned // as specified in table 1. The actual values are encoded as 16-bit unsigned integers // (uInt16Number - see 5.1.6). // // All the dateTimeNumber values in a profile shall be in Coordinated Universal Time // (UTC, also known as GMT or ZULU Time). Profile writers are required to convert local // time to UTC when setting these values. Programmes that display these values may show // the dateTimeNumber as UTC, show the equivalent local time (at current locale), or // display both UTC and local versions of the dateTimeNumber. static void *Type_DateTime_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsDateTimeNumber timestamp; struct tm * NewDateTime; *nItems = 0; NewDateTime = (struct tm*) _cmsMalloc(self ->ContextID, sizeof(struct tm)); if (NewDateTime == NULL) return NULL; if (io->Read(io, ×tamp, sizeof(cmsDateTimeNumber), 1) != 1) return NULL; _cmsDecodeDateTimeNumber(×tamp, NewDateTime); *nItems = 1; return NewDateTime; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_DateTime_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { struct tm * DateTime = (struct tm*) Ptr; cmsDateTimeNumber timestamp; _cmsEncodeDateTimeNumber(×tamp, DateTime); if (!io ->Write(io, sizeof(cmsDateTimeNumber), ×tamp)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_DateTime_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, sizeof(struct tm)); cmsUNUSED_PARAMETER(n); } static void Type_DateTime_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type icMeasurementType // ******************************************************************************** /* The measurementType information refers only to the internal profile data and is meant to provide profile makers an alternative to the default measurement specifications. */ static void *Type_Measurement_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsICCMeasurementConditions mc; memset(&mc, 0, sizeof(mc)); if (!_cmsReadUInt32Number(io, &mc.Observer)) return NULL; if (!_cmsReadXYZNumber(io, &mc.Backing)) return NULL; if (!_cmsReadUInt32Number(io, &mc.Geometry)) return NULL; if (!_cmsRead15Fixed16Number(io, &mc.Flare)) return NULL; if (!_cmsReadUInt32Number(io, &mc.IlluminantType)) return NULL; *nItems = 1; return _cmsDupMem(self ->ContextID, &mc, sizeof(cmsICCMeasurementConditions)); cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_Measurement_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsICCMeasurementConditions* mc =(cmsICCMeasurementConditions*) Ptr; if (!_cmsWriteUInt32Number(io, mc->Observer)) return FALSE; if (!_cmsWriteXYZNumber(io, &mc->Backing)) return FALSE; if (!_cmsWriteUInt32Number(io, mc->Geometry)) return FALSE; if (!_cmsWrite15Fixed16Number(io, mc->Flare)) return FALSE; if (!_cmsWriteUInt32Number(io, mc->IlluminantType)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_Measurement_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, sizeof(cmsICCMeasurementConditions)); cmsUNUSED_PARAMETER(n); } static void Type_Measurement_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigMultiLocalizedUnicodeType // ******************************************************************************** // // Do NOT trust SizeOfTag as there is an issue on the definition of profileSequenceDescTag. See the TechNote from // Max Derhak and Rohit Patil about this: basically the size of the string table should be guessed and cannot be // taken from the size of tag if this tag is embedded as part of bigger structures (profileSequenceDescTag, for instance) // static void *Type_MLU_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsMLU* mlu; cmsUInt32Number Count, RecLen, NumOfWchar; cmsUInt32Number SizeOfHeader; cmsUInt32Number Len, Offset; cmsUInt32Number i; wchar_t* Block; cmsUInt32Number BeginOfThisString, EndOfThisString, LargestPosition; *nItems = 0; if (!_cmsReadUInt32Number(io, &Count)) return NULL; if (!_cmsReadUInt32Number(io, &RecLen)) return NULL; if (RecLen != 12) { cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "multiLocalizedUnicodeType of len != 12 is not supported."); return NULL; } mlu = cmsMLUalloc(self ->ContextID, Count); if (mlu == NULL) return NULL; mlu ->UsedEntries = Count; SizeOfHeader = 12 * Count + sizeof(_cmsTagBase); LargestPosition = 0; for (i=0; i < Count; i++) { if (!_cmsReadUInt16Number(io, &mlu ->Entries[i].Language)) goto Error; if (!_cmsReadUInt16Number(io, &mlu ->Entries[i].Country)) goto Error; // Now deal with Len and offset. if (!_cmsReadUInt32Number(io, &Len)) goto Error; if (!_cmsReadUInt32Number(io, &Offset)) goto Error; // Check for overflow if (Offset < (SizeOfHeader + 8)) goto Error; // True begin of the string BeginOfThisString = Offset - SizeOfHeader - 8; // Ajust to wchar_t elements mlu ->Entries[i].Len = (Len * sizeof(wchar_t)) / sizeof(cmsUInt16Number); mlu ->Entries[i].StrW = (BeginOfThisString * sizeof(wchar_t)) / sizeof(cmsUInt16Number); // To guess maximum size, add offset + len EndOfThisString = BeginOfThisString + Len; if (EndOfThisString > LargestPosition) LargestPosition = EndOfThisString; } // Now read the remaining of tag and fill all strings. Substract the directory SizeOfTag = (LargestPosition * sizeof(wchar_t)) / sizeof(cmsUInt16Number); if (SizeOfTag == 0) { Block = NULL; NumOfWchar = 0; } else { Block = (wchar_t*) _cmsMalloc(self ->ContextID, SizeOfTag); if (Block == NULL) goto Error; NumOfWchar = SizeOfTag / sizeof(wchar_t); if (!_cmsReadWCharArray(io, NumOfWchar, Block)) goto Error; } mlu ->MemPool = Block; mlu ->PoolSize = SizeOfTag; mlu ->PoolUsed = SizeOfTag; *nItems = 1; return (void*) mlu; Error: if (mlu) cmsMLUfree(mlu); return NULL; } static cmsBool Type_MLU_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsMLU* mlu =(cmsMLU*) Ptr; cmsUInt32Number HeaderSize; cmsUInt32Number Len, Offset; int i; if (Ptr == NULL) { // Empty placeholder if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 12)) return FALSE; return TRUE; } if (!_cmsWriteUInt32Number(io, mlu ->UsedEntries)) return FALSE; if (!_cmsWriteUInt32Number(io, 12)) return FALSE; HeaderSize = 12 * mlu ->UsedEntries + sizeof(_cmsTagBase); for (i=0; i < mlu ->UsedEntries; i++) { Len = mlu ->Entries[i].Len; Offset = mlu ->Entries[i].StrW; Len = (Len * sizeof(cmsUInt16Number)) / sizeof(wchar_t); Offset = (Offset * sizeof(cmsUInt16Number)) / sizeof(wchar_t) + HeaderSize + 8; if (!_cmsWriteUInt16Number(io, mlu ->Entries[i].Language)) return FALSE; if (!_cmsWriteUInt16Number(io, mlu ->Entries[i].Country)) return FALSE; if (!_cmsWriteUInt32Number(io, Len)) return FALSE; if (!_cmsWriteUInt32Number(io, Offset)) return FALSE; } if (!_cmsWriteWCharArray(io, mlu ->PoolUsed / sizeof(wchar_t), (wchar_t*) mlu ->MemPool)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_MLU_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsMLUdup((cmsMLU*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_MLU_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsMLUfree((cmsMLU*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigLut8Type // ******************************************************************************** // Decide which LUT type to use on writting static cmsTagTypeSignature DecideLUTtypeA2B(cmsFloat64Number ICCVersion, const void *Data) { cmsPipeline* Lut = (cmsPipeline*) Data; if (ICCVersion < 4.0) { if (Lut ->SaveAs8Bits) return cmsSigLut8Type; return cmsSigLut16Type; } else { return cmsSigLutAtoBType; } } static cmsTagTypeSignature DecideLUTtypeB2A(cmsFloat64Number ICCVersion, const void *Data) { cmsPipeline* Lut = (cmsPipeline*) Data; if (ICCVersion < 4.0) { if (Lut ->SaveAs8Bits) return cmsSigLut8Type; return cmsSigLut16Type; } else { return cmsSigLutBtoAType; } } /* This structure represents a colour transform using tables of 8-bit precision. This type contains four processing elements: a 3 by 3 matrix (which shall be the identity matrix unless the input colour space is XYZ), a set of one dimensional input tables, a multidimensional lookup table, and a set of one dimensional output tables. Data is processed using these elements via the following sequence: (matrix) -> (1d input tables) -> (multidimensional lookup table - CLUT) -> (1d output tables) Byte Position Field Length (bytes) Content Encoded as... 8 1 Number of Input Channels (i) uInt8Number 9 1 Number of Output Channels (o) uInt8Number 10 1 Number of CLUT grid points (identical for each side) (g) uInt8Number 11 1 Reserved for padding (fill with 00h) 12..15 4 Encoded e00 parameter s15Fixed16Number */ // Read 8 bit tables as gamma functions static cmsBool Read8bitTables(cmsContext ContextID, cmsIOHANDLER* io, cmsPipeline* lut, int nChannels) { cmsUInt8Number* Temp = NULL; int i, j; cmsToneCurve* Tables[cmsMAXCHANNELS]; if (nChannels > cmsMAXCHANNELS) return FALSE; if (nChannels <= 0) return FALSE; memset(Tables, 0, sizeof(Tables)); Temp = (cmsUInt8Number*) _cmsMalloc(ContextID, 256); if (Temp == NULL) return FALSE; for (i=0; i < nChannels; i++) { Tables[i] = cmsBuildTabulatedToneCurve16(ContextID, 256, NULL); if (Tables[i] == NULL) goto Error; } for (i=0; i < nChannels; i++) { if (io ->Read(io, Temp, 256, 1) != 1) goto Error; for (j=0; j < 256; j++) Tables[i]->Table16[j] = (cmsUInt16Number) FROM_8_TO_16(Temp[j]); } _cmsFree(ContextID, Temp); Temp = NULL; if (!cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, nChannels, Tables))) goto Error; for (i=0; i < nChannels; i++) cmsFreeToneCurve(Tables[i]); return TRUE; Error: for (i=0; i < nChannels; i++) { if (Tables[i]) cmsFreeToneCurve(Tables[i]); } if (Temp) _cmsFree(ContextID, Temp); return FALSE; } static cmsBool Write8bitTables(cmsContext ContextID, cmsIOHANDLER* io, cmsUInt32Number n, _cmsStageToneCurvesData* Tables) { int j; cmsUInt32Number i; cmsUInt8Number val; for (i=0; i < n; i++) { if (Tables) { // Usual case of identity curves if ((Tables ->TheCurves[i]->nEntries == 2) && (Tables->TheCurves[i]->Table16[0] == 0) && (Tables->TheCurves[i]->Table16[1] == 65535)) { for (j=0; j < 256; j++) { if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) j)) return FALSE; } } else if (Tables ->TheCurves[i]->nEntries != 256) { cmsSignalError(ContextID, cmsERROR_RANGE, "LUT8 needs 256 entries on prelinearization"); return FALSE; } else for (j=0; j < 256; j++) { if (Tables != NULL) val = (cmsUInt8Number) FROM_16_TO_8(Tables->TheCurves[i]->Table16[j]); else val = (cmsUInt8Number) j; if (!_cmsWriteUInt8Number(io, val)) return FALSE; } } } return TRUE; } // Check overflow static cmsUInt32Number uipow(cmsUInt32Number n, cmsUInt32Number a, cmsUInt32Number b) { cmsUInt32Number rv = 1, rc; if (a == 0) return 0; if (n == 0) return 0; for (; b > 0; b--) { rv *= a; // Check for overflow if (rv > UINT_MAX / a) return (cmsUInt32Number) -1; } rc = rv * n; if (rv != rc / n) return (cmsUInt32Number) -1; return rc; } // That will create a MPE LUT with Matrix, pre tables, CLUT and post tables. // 8 bit lut may be scaled easely to v4 PCS, but we need also to properly adjust // PCS on BToAxx tags and AtoB if abstract. We need to fix input direction. static void *Type_LUT8_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt8Number InputChannels, OutputChannels, CLUTpoints; cmsUInt8Number* Temp = NULL; cmsPipeline* NewLUT = NULL; cmsUInt32Number nTabSize, i; cmsFloat64Number Matrix[3*3]; *nItems = 0; if (!_cmsReadUInt8Number(io, &InputChannels)) goto Error; if (!_cmsReadUInt8Number(io, &OutputChannels)) goto Error; if (!_cmsReadUInt8Number(io, &CLUTpoints)) goto Error; if (CLUTpoints == 1) goto Error; // Impossible value, 0 for no CLUT and then 2 at least // Padding if (!_cmsReadUInt8Number(io, NULL)) goto Error; // Do some checking if (InputChannels > cmsMAXCHANNELS) goto Error; if (OutputChannels > cmsMAXCHANNELS) goto Error; // Allocates an empty Pipeline NewLUT = cmsPipelineAlloc(self ->ContextID, InputChannels, OutputChannels); if (NewLUT == NULL) goto Error; // Read the Matrix if (!_cmsRead15Fixed16Number(io, &Matrix[0])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[1])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[2])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[3])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[4])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[5])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[6])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[7])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[8])) goto Error; // Only operates if not identity... if ((InputChannels == 3) && !_cmsMAT3isIdentity((cmsMAT3*) Matrix)) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_BEGIN, cmsStageAllocMatrix(self ->ContextID, 3, 3, Matrix, NULL))) goto Error; } // Get input tables if (!Read8bitTables(self ->ContextID, io, NewLUT, InputChannels)) goto Error; // Get 3D CLUT. Check the overflow.... nTabSize = uipow(OutputChannels, CLUTpoints, InputChannels); if (nTabSize == (cmsUInt32Number) -1) goto Error; if (nTabSize > 0) { cmsUInt16Number *PtrW, *T; PtrW = T = (cmsUInt16Number*) _cmsCalloc(self ->ContextID, nTabSize, sizeof(cmsUInt16Number)); if (T == NULL) goto Error; Temp = (cmsUInt8Number*) _cmsMalloc(self ->ContextID, nTabSize); if (Temp == NULL) goto Error; if (io ->Read(io, Temp, nTabSize, 1) != 1) goto Error; for (i = 0; i < nTabSize; i++) { *PtrW++ = FROM_8_TO_16(Temp[i]); } _cmsFree(self ->ContextID, Temp); Temp = NULL; if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, cmsStageAllocCLut16bit(self ->ContextID, CLUTpoints, InputChannels, OutputChannels, T))) goto Error; _cmsFree(self ->ContextID, T); } // Get output tables if (!Read8bitTables(self ->ContextID, io, NewLUT, OutputChannels)) goto Error; *nItems = 1; return NewLUT; Error: if (NewLUT != NULL) cmsPipelineFree(NewLUT); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } // We only allow a specific MPE structure: Matrix plus prelin, plus clut, plus post-lin. static cmsBool Type_LUT8_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUInt32Number j, nTabSize; cmsUInt8Number val; cmsPipeline* NewLUT = (cmsPipeline*) Ptr; cmsStage* mpe; _cmsStageToneCurvesData* PreMPE = NULL, *PostMPE = NULL; _cmsStageMatrixData* MatMPE = NULL; _cmsStageCLutData* clut = NULL; int clutPoints; // Disassemble the LUT into components. mpe = NewLUT -> Elements; if (mpe ->Type == cmsSigMatrixElemType) { MatMPE = (_cmsStageMatrixData*) mpe ->Data; mpe = mpe -> Next; } if (mpe != NULL && mpe ->Type == cmsSigCurveSetElemType) { PreMPE = (_cmsStageToneCurvesData*) mpe ->Data; mpe = mpe -> Next; } if (mpe != NULL && mpe ->Type == cmsSigCLutElemType) { clut = (_cmsStageCLutData*) mpe -> Data; mpe = mpe ->Next; } if (mpe != NULL && mpe ->Type == cmsSigCurveSetElemType) { PostMPE = (_cmsStageToneCurvesData*) mpe ->Data; mpe = mpe -> Next; } // That should be all if (mpe != NULL) { cmsSignalError(mpe->ContextID, cmsERROR_UNKNOWN_EXTENSION, "LUT is not suitable to be saved as LUT8"); return FALSE; } if (clut == NULL) clutPoints = 0; else clutPoints = clut->Params->nSamples[0]; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) NewLUT ->InputChannels)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) NewLUT ->OutputChannels)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) clutPoints)) return FALSE; if (!_cmsWriteUInt8Number(io, 0)) return FALSE; // Padding if (MatMPE != NULL) { if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[0])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[1])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[2])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[3])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[4])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[5])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[6])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[7])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[8])) return FALSE; } else { if (!_cmsWrite15Fixed16Number(io, 1)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 1)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 1)) return FALSE; } // The prelinearization table if (!Write8bitTables(self ->ContextID, io, NewLUT ->InputChannels, PreMPE)) return FALSE; nTabSize = uipow(NewLUT->OutputChannels, clutPoints, NewLUT ->InputChannels); if (nTabSize == (cmsUInt32Number) -1) return FALSE; if (nTabSize > 0) { // The 3D CLUT. if (clut != NULL) { for (j=0; j < nTabSize; j++) { val = (cmsUInt8Number) FROM_16_TO_8(clut ->Tab.T[j]); if (!_cmsWriteUInt8Number(io, val)) return FALSE; } } } // The postlinearization table if (!Write8bitTables(self ->ContextID, io, NewLUT ->OutputChannels, PostMPE)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_LUT8_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsPipelineDup((cmsPipeline*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_LUT8_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsPipelineFree((cmsPipeline*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigLut16Type // ******************************************************************************** // Read 16 bit tables as gamma functions static cmsBool Read16bitTables(cmsContext ContextID, cmsIOHANDLER* io, cmsPipeline* lut, int nChannels, int nEntries) { int i; cmsToneCurve* Tables[cmsMAXCHANNELS]; // Maybe an empty table? (this is a lcms extension) if (nEntries <= 0) return TRUE; // Check for malicious profiles if (nEntries < 2) return FALSE; if (nChannels > cmsMAXCHANNELS) return FALSE; // Init table to zero memset(Tables, 0, sizeof(Tables)); for (i=0; i < nChannels; i++) { Tables[i] = cmsBuildTabulatedToneCurve16(ContextID, nEntries, NULL); if (Tables[i] == NULL) goto Error; if (!_cmsReadUInt16Array(io, nEntries, Tables[i]->Table16)) goto Error; } // Add the table (which may certainly be an identity, but this is up to the optimizer, not the reading code) if (!cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, nChannels, Tables))) goto Error; for (i=0; i < nChannels; i++) cmsFreeToneCurve(Tables[i]); return TRUE; Error: for (i=0; i < nChannels; i++) { if (Tables[i]) cmsFreeToneCurve(Tables[i]); } return FALSE; } static cmsBool Write16bitTables(cmsContext ContextID, cmsIOHANDLER* io, _cmsStageToneCurvesData* Tables) { int j; cmsUInt32Number i; cmsUInt16Number val; int nEntries; _cmsAssert(Tables != NULL); nEntries = Tables->TheCurves[0]->nEntries; for (i=0; i < Tables ->nCurves; i++) { for (j=0; j < nEntries; j++) { val = Tables->TheCurves[i]->Table16[j]; if (!_cmsWriteUInt16Number(io, val)) return FALSE; } } return TRUE; cmsUNUSED_PARAMETER(ContextID); } static void *Type_LUT16_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt8Number InputChannels, OutputChannels, CLUTpoints; cmsPipeline* NewLUT = NULL; cmsUInt32Number nTabSize; cmsFloat64Number Matrix[3*3]; cmsUInt16Number InputEntries, OutputEntries; *nItems = 0; if (!_cmsReadUInt8Number(io, &InputChannels)) return NULL; if (!_cmsReadUInt8Number(io, &OutputChannels)) return NULL; if (!_cmsReadUInt8Number(io, &CLUTpoints)) return NULL; // 255 maximum // Padding if (!_cmsReadUInt8Number(io, NULL)) return NULL; // Do some checking if (InputChannels > cmsMAXCHANNELS) goto Error; if (OutputChannels > cmsMAXCHANNELS) goto Error; // Allocates an empty LUT NewLUT = cmsPipelineAlloc(self ->ContextID, InputChannels, OutputChannels); if (NewLUT == NULL) goto Error; // Read the Matrix if (!_cmsRead15Fixed16Number(io, &Matrix[0])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[1])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[2])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[3])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[4])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[5])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[6])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[7])) goto Error; if (!_cmsRead15Fixed16Number(io, &Matrix[8])) goto Error; // Only operates on 3 channels if ((InputChannels == 3) && !_cmsMAT3isIdentity((cmsMAT3*) Matrix)) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, cmsStageAllocMatrix(self ->ContextID, 3, 3, Matrix, NULL))) goto Error; } if (!_cmsReadUInt16Number(io, &InputEntries)) goto Error; if (!_cmsReadUInt16Number(io, &OutputEntries)) goto Error; if (InputEntries > 0x7FFF || OutputEntries > 0x7FFF) goto Error; if (CLUTpoints == 1) goto Error; // Impossible value, 0 for no CLUT and then 2 at least // Get input tables if (!Read16bitTables(self ->ContextID, io, NewLUT, InputChannels, InputEntries)) goto Error; // Get 3D CLUT nTabSize = uipow(OutputChannels, CLUTpoints, InputChannels); if (nTabSize == (cmsUInt32Number) -1) goto Error; if (nTabSize > 0) { cmsUInt16Number *T; T = (cmsUInt16Number*) _cmsCalloc(self ->ContextID, nTabSize, sizeof(cmsUInt16Number)); if (T == NULL) goto Error; if (!_cmsReadUInt16Array(io, nTabSize, T)) { _cmsFree(self ->ContextID, T); goto Error; } if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, cmsStageAllocCLut16bit(self ->ContextID, CLUTpoints, InputChannels, OutputChannels, T))) { _cmsFree(self ->ContextID, T); goto Error; } _cmsFree(self ->ContextID, T); } // Get output tables if (!Read16bitTables(self ->ContextID, io, NewLUT, OutputChannels, OutputEntries)) goto Error; *nItems = 1; return NewLUT; Error: if (NewLUT != NULL) cmsPipelineFree(NewLUT); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } // We only allow some specific MPE structures: Matrix plus prelin, plus clut, plus post-lin. // Some empty defaults are created for missing parts static cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUInt32Number nTabSize; cmsPipeline* NewLUT = (cmsPipeline*) Ptr; cmsStage* mpe; _cmsStageToneCurvesData* PreMPE = NULL, *PostMPE = NULL; _cmsStageMatrixData* MatMPE = NULL; _cmsStageCLutData* clut = NULL; int i, InputChannels, OutputChannels, clutPoints; // Disassemble the LUT into components. mpe = NewLUT -> Elements; if (mpe != NULL && mpe ->Type == cmsSigMatrixElemType) { MatMPE = (_cmsStageMatrixData*) mpe ->Data; mpe = mpe -> Next; } if (mpe != NULL && mpe ->Type == cmsSigCurveSetElemType) { PreMPE = (_cmsStageToneCurvesData*) mpe ->Data; mpe = mpe -> Next; } if (mpe != NULL && mpe ->Type == cmsSigCLutElemType) { clut = (_cmsStageCLutData*) mpe -> Data; mpe = mpe ->Next; } if (mpe != NULL && mpe ->Type == cmsSigCurveSetElemType) { PostMPE = (_cmsStageToneCurvesData*) mpe ->Data; mpe = mpe -> Next; } // That should be all if (mpe != NULL) { cmsSignalError(mpe->ContextID, cmsERROR_UNKNOWN_EXTENSION, "LUT is not suitable to be saved as LUT16"); return FALSE; } InputChannels = cmsPipelineInputChannels(NewLUT); OutputChannels = cmsPipelineOutputChannels(NewLUT); if (clut == NULL) clutPoints = 0; else clutPoints = clut->Params->nSamples[0]; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) InputChannels)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) OutputChannels)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) clutPoints)) return FALSE; if (!_cmsWriteUInt8Number(io, 0)) return FALSE; // Padding if (MatMPE != NULL) { if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[0])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[1])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[2])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[3])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[4])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[5])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[6])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[7])) return FALSE; if (!_cmsWrite15Fixed16Number(io, MatMPE -> Double[8])) return FALSE; } else { if (!_cmsWrite15Fixed16Number(io, 1)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 1)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 1)) return FALSE; } if (PreMPE != NULL) { if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) PreMPE ->TheCurves[0]->nEntries)) return FALSE; } else { if (!_cmsWriteUInt16Number(io, 2)) return FALSE; } if (PostMPE != NULL) { if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) PostMPE ->TheCurves[0]->nEntries)) return FALSE; } else { if (!_cmsWriteUInt16Number(io, 2)) return FALSE; } // The prelinearization table if (PreMPE != NULL) { if (!Write16bitTables(self ->ContextID, io, PreMPE)) return FALSE; } else { for (i=0; i < InputChannels; i++) { if (!_cmsWriteUInt16Number(io, 0)) return FALSE; if (!_cmsWriteUInt16Number(io, 0xffff)) return FALSE; } } nTabSize = uipow(OutputChannels, clutPoints, InputChannels); if (nTabSize == (cmsUInt32Number) -1) return FALSE; if (nTabSize > 0) { // The 3D CLUT. if (clut != NULL) { if (!_cmsWriteUInt16Array(io, nTabSize, clut->Tab.T)) return FALSE; } } // The postlinearization table if (PostMPE != NULL) { if (!Write16bitTables(self ->ContextID, io, PostMPE)) return FALSE; } else { for (i=0; i < OutputChannels; i++) { if (!_cmsWriteUInt16Number(io, 0)) return FALSE; if (!_cmsWriteUInt16Number(io, 0xffff)) return FALSE; } } return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_LUT16_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsPipelineDup((cmsPipeline*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_LUT16_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsPipelineFree((cmsPipeline*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigLutAToBType // ******************************************************************************** // V4 stuff. Read matrix for LutAtoB and LutBtoA static cmsStage* ReadMatrix(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number Offset) { cmsFloat64Number dMat[3*3]; cmsFloat64Number dOff[3]; cmsStage* Mat; // Go to address if (!io -> Seek(io, Offset)) return NULL; // Read the Matrix if (!_cmsRead15Fixed16Number(io, &dMat[0])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[1])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[2])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[3])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[4])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[5])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[6])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[7])) return NULL; if (!_cmsRead15Fixed16Number(io, &dMat[8])) return NULL; if (!_cmsRead15Fixed16Number(io, &dOff[0])) return NULL; if (!_cmsRead15Fixed16Number(io, &dOff[1])) return NULL; if (!_cmsRead15Fixed16Number(io, &dOff[2])) return NULL; Mat = cmsStageAllocMatrix(self ->ContextID, 3, 3, dMat, dOff); return Mat; } // V4 stuff. Read CLUT part for LutAtoB and LutBtoA static cmsStage* ReadCLUT(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number Offset, int InputChannels, int OutputChannels) { cmsUInt8Number gridPoints8[cmsMAXCHANNELS]; // Number of grid points in each dimension. cmsUInt32Number GridPoints[cmsMAXCHANNELS], i; cmsUInt8Number Precision; cmsStage* CLUT; _cmsStageCLutData* Data; if (!io -> Seek(io, Offset)) return NULL; if (io -> Read(io, gridPoints8, cmsMAXCHANNELS, 1) != 1) return NULL; for (i=0; i < cmsMAXCHANNELS; i++) { if (gridPoints8[i] == 1) return NULL; // Impossible value, 0 for no CLUT and then 2 at least GridPoints[i] = gridPoints8[i]; } if (!_cmsReadUInt8Number(io, &Precision)) return NULL; if (!_cmsReadUInt8Number(io, NULL)) return NULL; if (!_cmsReadUInt8Number(io, NULL)) return NULL; if (!_cmsReadUInt8Number(io, NULL)) return NULL; CLUT = cmsStageAllocCLut16bitGranular(self ->ContextID, GridPoints, InputChannels, OutputChannels, NULL); if (CLUT == NULL) return NULL; Data = (_cmsStageCLutData*) CLUT ->Data; // Precision can be 1 or 2 bytes if (Precision == 1) { cmsUInt8Number v; for (i=0; i < Data ->nEntries; i++) { if (io ->Read(io, &v, sizeof(cmsUInt8Number), 1) != 1) return NULL; Data ->Tab.T[i] = FROM_8_TO_16(v); } } else if (Precision == 2) { if (!_cmsReadUInt16Array(io, Data->nEntries, Data ->Tab.T)) return NULL; } else { cmsSignalError(self ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown precision of '%d'", Precision); return NULL; } return CLUT; } static cmsToneCurve* ReadEmbeddedCurve(struct _cms_typehandler_struct* self, cmsIOHANDLER* io) { cmsTagTypeSignature BaseType; cmsUInt32Number nItems; BaseType = _cmsReadTypeBase(io); switch (BaseType) { case cmsSigCurveType: return (cmsToneCurve*) Type_Curve_Read(self, io, &nItems, 0); case cmsSigParametricCurveType: return (cmsToneCurve*) Type_ParametricCurve_Read(self, io, &nItems, 0); default: { char String[5]; _cmsTagSignature2String(String, (cmsTagSignature) BaseType); cmsSignalError(self ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown curve type '%s'", String); } return NULL; } } // Read a set of curves from specific offset static cmsStage* ReadSetOfCurves(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number Offset, cmsUInt32Number nCurves) { cmsToneCurve* Curves[cmsMAXCHANNELS]; cmsUInt32Number i; cmsStage* Lin = NULL; if (nCurves > cmsMAXCHANNELS) return FALSE; if (!io -> Seek(io, Offset)) return FALSE; for (i=0; i < nCurves; i++) Curves[i] = NULL; for (i=0; i < nCurves; i++) { Curves[i] = ReadEmbeddedCurve(self, io); if (Curves[i] == NULL) goto Error; if (!_cmsReadAlignment(io)) goto Error; } Lin = cmsStageAllocToneCurves(self ->ContextID, nCurves, Curves); Error: for (i=0; i < nCurves; i++) cmsFreeToneCurve(Curves[i]); return Lin; } // LutAtoB type // This structure represents a colour transform. The type contains up to five processing // elements which are stored in the AtoBTag tag in the following order: a set of one // dimensional curves, a 3 by 3 matrix with offset terms, a set of one dimensional curves, // a multidimensional lookup table, and a set of one dimensional output curves. // Data are processed using these elements via the following sequence: // //("A" curves) -> (multidimensional lookup table - CLUT) -> ("M" curves) -> (matrix) -> ("B" curves). // /* It is possible to use any or all of these processing elements. At least one processing element must be included.Only the following combinations are allowed: B M - Matrix - B A - CLUT - B A - CLUT - M - Matrix - B */ static void* Type_LUTA2B_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt32Number BaseOffset; cmsUInt8Number inputChan; // Number of input channels cmsUInt8Number outputChan; // Number of output channels cmsUInt32Number offsetB; // Offset to first "B" curve cmsUInt32Number offsetMat; // Offset to matrix cmsUInt32Number offsetM; // Offset to first "M" curve cmsUInt32Number offsetC; // Offset to CLUT cmsUInt32Number offsetA; // Offset to first "A" curve cmsPipeline* NewLUT = NULL; BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); if (!_cmsReadUInt8Number(io, &inputChan)) return NULL; if (!_cmsReadUInt8Number(io, &outputChan)) return NULL; if (!_cmsReadUInt16Number(io, NULL)) return NULL; if (!_cmsReadUInt32Number(io, &offsetB)) return NULL; if (!_cmsReadUInt32Number(io, &offsetMat)) return NULL; if (!_cmsReadUInt32Number(io, &offsetM)) return NULL; if (!_cmsReadUInt32Number(io, &offsetC)) return NULL; if (!_cmsReadUInt32Number(io, &offsetA)) return NULL; // Allocates an empty LUT NewLUT = cmsPipelineAlloc(self ->ContextID, inputChan, outputChan); if (NewLUT == NULL) return NULL; if (offsetA!= 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io, BaseOffset + offsetA, inputChan))) goto Error; } if (offsetC != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadCLUT(self, io, BaseOffset + offsetC, inputChan, outputChan))) goto Error; } if (offsetM != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io, BaseOffset + offsetM, outputChan))) goto Error; } if (offsetMat != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadMatrix(self, io, BaseOffset + offsetMat))) goto Error; } if (offsetB != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io, BaseOffset + offsetB, outputChan))) goto Error; } *nItems = 1; return NewLUT; Error: cmsPipelineFree(NewLUT); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } // Write a set of curves static cmsBool WriteMatrix(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsStage* mpe) { _cmsStageMatrixData* m = (_cmsStageMatrixData*) mpe -> Data; // Write the Matrix if (!_cmsWrite15Fixed16Number(io, m -> Double[0])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[1])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[2])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[3])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[4])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[5])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[6])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[7])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Double[8])) return FALSE; if (m ->Offset != NULL) { if (!_cmsWrite15Fixed16Number(io, m -> Offset[0])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Offset[1])) return FALSE; if (!_cmsWrite15Fixed16Number(io, m -> Offset[2])) return FALSE; } else { if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(self); } // Write a set of curves static cmsBool WriteSetOfCurves(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsTagTypeSignature Type, cmsStage* mpe) { cmsUInt32Number i, n; cmsTagTypeSignature CurrentType; cmsToneCurve** Curves; n = cmsStageOutputChannels(mpe); Curves = _cmsStageGetPtrToCurveSet(mpe); for (i=0; i < n; i++) { // If this is a table-based curve, use curve type even on V4 CurrentType = Type; if ((Curves[i] ->nSegments == 0)|| ((Curves[i]->nSegments == 2) && (Curves[i] ->Segments[1].Type == 0)) ) CurrentType = cmsSigCurveType; else if (Curves[i] ->Segments[0].Type < 0) CurrentType = cmsSigCurveType; if (!_cmsWriteTypeBase(io, CurrentType)) return FALSE; switch (CurrentType) { case cmsSigCurveType: if (!Type_Curve_Write(self, io, Curves[i], 1)) return FALSE; break; case cmsSigParametricCurveType: if (!Type_ParametricCurve_Write(self, io, Curves[i], 1)) return FALSE; break; default: { char String[5]; _cmsTagSignature2String(String, (cmsTagSignature) Type); cmsSignalError(self ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown curve type '%s'", String); } return FALSE; } if (!_cmsWriteAlignment(io)) return FALSE; } return TRUE; } static cmsBool WriteCLUT(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt8Number Precision, cmsStage* mpe) { cmsUInt8Number gridPoints[cmsMAXCHANNELS]; // Number of grid points in each dimension. cmsUInt32Number i; _cmsStageCLutData* CLUT = ( _cmsStageCLutData*) mpe -> Data; if (CLUT ->HasFloatValues) { cmsSignalError(self ->ContextID, cmsERROR_NOT_SUITABLE, "Cannot save floating point data, CLUT are 8 or 16 bit only"); return FALSE; } memset(gridPoints, 0, sizeof(gridPoints)); for (i=0; i < (cmsUInt32Number) CLUT ->Params ->nInputs; i++) gridPoints[i] = (cmsUInt8Number) CLUT ->Params ->nSamples[i]; if (!io -> Write(io, cmsMAXCHANNELS*sizeof(cmsUInt8Number), gridPoints)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) Precision)) return FALSE; if (!_cmsWriteUInt8Number(io, 0)) return FALSE; if (!_cmsWriteUInt8Number(io, 0)) return FALSE; if (!_cmsWriteUInt8Number(io, 0)) return FALSE; // Precision can be 1 or 2 bytes if (Precision == 1) { for (i=0; i < CLUT->nEntries; i++) { if (!_cmsWriteUInt8Number(io, FROM_16_TO_8(CLUT->Tab.T[i]))) return FALSE; } } else if (Precision == 2) { if (!_cmsWriteUInt16Array(io, CLUT->nEntries, CLUT ->Tab.T)) return FALSE; } else { cmsSignalError(self ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown precision of '%d'", Precision); return FALSE; } if (!_cmsWriteAlignment(io)) return FALSE; return TRUE; } static cmsBool Type_LUTA2B_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsPipeline* Lut = (cmsPipeline*) Ptr; int inputChan, outputChan; cmsStage *A = NULL, *B = NULL, *M = NULL; cmsStage * Matrix = NULL; cmsStage * CLUT = NULL; cmsUInt32Number offsetB = 0, offsetMat = 0, offsetM = 0, offsetC = 0, offsetA = 0; cmsUInt32Number BaseOffset, DirectoryPos, CurrentPos; // Get the base for all offsets BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); if (Lut ->Elements != NULL) if (!cmsPipelineCheckAndRetreiveStages(Lut, 1, cmsSigCurveSetElemType, &B)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 3, cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType, &M, &Matrix, &B)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 3, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType, &A, &CLUT, &B)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 5, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType, &A, &CLUT, &M, &Matrix, &B)) { cmsSignalError(self->ContextID, cmsERROR_NOT_SUITABLE, "LUT is not suitable to be saved as LutAToB"); return FALSE; } // Get input, output channels inputChan = cmsPipelineInputChannels(Lut); outputChan = cmsPipelineOutputChannels(Lut); // Write channel count if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) inputChan)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) outputChan)) return FALSE; if (!_cmsWriteUInt16Number(io, 0)) return FALSE; // Keep directory to be filled latter DirectoryPos = io ->Tell(io); // Write the directory if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (A != NULL) { offsetA = io ->Tell(io) - BaseOffset; if (!WriteSetOfCurves(self, io, cmsSigParametricCurveType, A)) return FALSE; } if (CLUT != NULL) { offsetC = io ->Tell(io) - BaseOffset; if (!WriteCLUT(self, io, Lut ->SaveAs8Bits ? 1 : 2, CLUT)) return FALSE; } if (M != NULL) { offsetM = io ->Tell(io) - BaseOffset; if (!WriteSetOfCurves(self, io, cmsSigParametricCurveType, M)) return FALSE; } if (Matrix != NULL) { offsetMat = io ->Tell(io) - BaseOffset; if (!WriteMatrix(self, io, Matrix)) return FALSE; } if (B != NULL) { offsetB = io ->Tell(io) - BaseOffset; if (!WriteSetOfCurves(self, io, cmsSigParametricCurveType, B)) return FALSE; } CurrentPos = io ->Tell(io); if (!io ->Seek(io, DirectoryPos)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetB)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetMat)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetM)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetC)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetA)) return FALSE; if (!io ->Seek(io, CurrentPos)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_LUTA2B_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsPipelineDup((cmsPipeline*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_LUTA2B_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsPipelineFree((cmsPipeline*) Ptr); return; cmsUNUSED_PARAMETER(self); } // LutBToA type static void* Type_LUTB2A_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt8Number inputChan; // Number of input channels cmsUInt8Number outputChan; // Number of output channels cmsUInt32Number BaseOffset; // Actual position in file cmsUInt32Number offsetB; // Offset to first "B" curve cmsUInt32Number offsetMat; // Offset to matrix cmsUInt32Number offsetM; // Offset to first "M" curve cmsUInt32Number offsetC; // Offset to CLUT cmsUInt32Number offsetA; // Offset to first "A" curve cmsPipeline* NewLUT = NULL; BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); if (!_cmsReadUInt8Number(io, &inputChan)) return NULL; if (!_cmsReadUInt8Number(io, &outputChan)) return NULL; // Padding if (!_cmsReadUInt16Number(io, NULL)) return NULL; if (!_cmsReadUInt32Number(io, &offsetB)) return NULL; if (!_cmsReadUInt32Number(io, &offsetMat)) return NULL; if (!_cmsReadUInt32Number(io, &offsetM)) return NULL; if (!_cmsReadUInt32Number(io, &offsetC)) return NULL; if (!_cmsReadUInt32Number(io, &offsetA)) return NULL; // Allocates an empty LUT NewLUT = cmsPipelineAlloc(self ->ContextID, inputChan, outputChan); if (NewLUT == NULL) return NULL; if (offsetB != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io, BaseOffset + offsetB, inputChan))) goto Error; } if (offsetMat != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadMatrix(self, io, BaseOffset + offsetMat))) goto Error; } if (offsetM != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io, BaseOffset + offsetM, inputChan))) goto Error; } if (offsetC != 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadCLUT(self, io, BaseOffset + offsetC, inputChan, outputChan))) goto Error; } if (offsetA!= 0) { if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, ReadSetOfCurves(self, io, BaseOffset + offsetA, outputChan))) goto Error; } *nItems = 1; return NewLUT; Error: cmsPipelineFree(NewLUT); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } /* B B - Matrix - M B - CLUT - A B - Matrix - M - CLUT - A */ static cmsBool Type_LUTB2A_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsPipeline* Lut = (cmsPipeline*) Ptr; int inputChan, outputChan; cmsStage *A = NULL, *B = NULL, *M = NULL; cmsStage *Matrix = NULL; cmsStage *CLUT = NULL; cmsUInt32Number offsetB = 0, offsetMat = 0, offsetM = 0, offsetC = 0, offsetA = 0; cmsUInt32Number BaseOffset, DirectoryPos, CurrentPos; BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); if (!cmsPipelineCheckAndRetreiveStages(Lut, 1, cmsSigCurveSetElemType, &B)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 3, cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType, &B, &Matrix, &M)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 3, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType, &B, &CLUT, &A)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 5, cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType, &B, &Matrix, &M, &CLUT, &A)) { cmsSignalError(self->ContextID, cmsERROR_NOT_SUITABLE, "LUT is not suitable to be saved as LutBToA"); return FALSE; } inputChan = cmsPipelineInputChannels(Lut); outputChan = cmsPipelineOutputChannels(Lut); if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) inputChan)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) outputChan)) return FALSE; if (!_cmsWriteUInt16Number(io, 0)) return FALSE; DirectoryPos = io ->Tell(io); if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (A != NULL) { offsetA = io ->Tell(io) - BaseOffset; if (!WriteSetOfCurves(self, io, cmsSigParametricCurveType, A)) return FALSE; } if (CLUT != NULL) { offsetC = io ->Tell(io) - BaseOffset; if (!WriteCLUT(self, io, Lut ->SaveAs8Bits ? 1 : 2, CLUT)) return FALSE; } if (M != NULL) { offsetM = io ->Tell(io) - BaseOffset; if (!WriteSetOfCurves(self, io, cmsSigParametricCurveType, M)) return FALSE; } if (Matrix != NULL) { offsetMat = io ->Tell(io) - BaseOffset; if (!WriteMatrix(self, io, Matrix)) return FALSE; } if (B != NULL) { offsetB = io ->Tell(io) - BaseOffset; if (!WriteSetOfCurves(self, io, cmsSigParametricCurveType, B)) return FALSE; } CurrentPos = io ->Tell(io); if (!io ->Seek(io, DirectoryPos)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetB)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetMat)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetM)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetC)) return FALSE; if (!_cmsWriteUInt32Number(io, offsetA)) return FALSE; if (!io ->Seek(io, CurrentPos)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_LUTB2A_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsPipelineDup((cmsPipeline*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_LUTB2A_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsPipelineFree((cmsPipeline*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigColorantTableType // ******************************************************************************** /* The purpose of this tag is to identify the colorants used in the profile by a unique name and set of XYZ or L*a*b* values to give the colorant an unambiguous value. The first colorant listed is the colorant of the first device channel of a lut tag. The second colorant listed is the colorant of the second device channel of a lut tag, and so on. */ static void *Type_ColorantTable_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt32Number i, Count; cmsNAMEDCOLORLIST* List; char Name[34]; cmsUInt16Number PCS[3]; if (!_cmsReadUInt32Number(io, &Count)) return NULL; if (Count > cmsMAXCHANNELS) { cmsSignalError(self->ContextID, cmsERROR_RANGE, "Too many colorants '%d'", Count); return NULL; } List = cmsAllocNamedColorList(self ->ContextID, Count, 0, "", ""); for (i=0; i < Count; i++) { if (io ->Read(io, Name, 32, 1) != 1) goto Error; Name[33] = 0; if (!_cmsReadUInt16Array(io, 3, PCS)) goto Error; if (!cmsAppendNamedColor(List, Name, PCS, NULL)) goto Error; } *nItems = 1; return List; Error: *nItems = 0; cmsFreeNamedColorList(List); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } // Saves a colorant table. It is using the named color structure for simplicity sake static cmsBool Type_ColorantTable_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsNAMEDCOLORLIST* NamedColorList = (cmsNAMEDCOLORLIST*) Ptr; int i, nColors; nColors = cmsNamedColorCount(NamedColorList); if (!_cmsWriteUInt32Number(io, nColors)) return FALSE; for (i=0; i < nColors; i++) { char root[33]; cmsUInt16Number PCS[3]; if (!cmsNamedColorInfo(NamedColorList, i, root, NULL, NULL, PCS, NULL)) return 0; root[32] = 0; if (!io ->Write(io, 32, root)) return FALSE; if (!_cmsWriteUInt16Array(io, 3, PCS)) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_ColorantTable_Dup(struct _cms_typehandler_struct* self, const void* Ptr, cmsUInt32Number n) { cmsNAMEDCOLORLIST* nc = (cmsNAMEDCOLORLIST*) Ptr; return (void*) cmsDupNamedColorList(nc); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_ColorantTable_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsFreeNamedColorList((cmsNAMEDCOLORLIST*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigNamedColor2Type // ******************************************************************************** // //The namedColor2Type is a count value and array of structures that provide color //coordinates for 7-bit ASCII color names. For each named color, a PCS and optional //device representation of the color are given. Both representations are 16-bit values. //The device representation corresponds to the headers color space of data field. //This representation should be consistent with the number of device components //field in the namedColor2Type. If this field is 0, device coordinates are not provided. //The PCS representation corresponds to the headers PCS field. The PCS representation //is always provided. Color names are fixed-length, 32-byte fields including null //termination. In order to maintain maximum portability, it is strongly recommended //that special characters of the 7-bit ASCII set not be used. static void *Type_NamedColor_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt32Number vendorFlag; // Bottom 16 bits for ICC use cmsUInt32Number count; // Count of named colors cmsUInt32Number nDeviceCoords; // Num of device coordinates char prefix[32]; // Prefix for each color name char suffix[32]; // Suffix for each color name cmsNAMEDCOLORLIST* v; cmsUInt32Number i; *nItems = 0; if (!_cmsReadUInt32Number(io, &vendorFlag)) return NULL; if (!_cmsReadUInt32Number(io, &count)) return NULL; if (!_cmsReadUInt32Number(io, &nDeviceCoords)) return NULL; if (io -> Read(io, prefix, 32, 1) != 1) return NULL; if (io -> Read(io, suffix, 32, 1) != 1) return NULL; prefix[31] = suffix[31] = 0; v = cmsAllocNamedColorList(self ->ContextID, count, nDeviceCoords, prefix, suffix); if (v == NULL) { cmsSignalError(self->ContextID, cmsERROR_RANGE, "Too many named colors '%d'", count); return NULL; } if (nDeviceCoords > cmsMAXCHANNELS) { cmsSignalError(self->ContextID, cmsERROR_RANGE, "Too many device coordinates '%d'", nDeviceCoords); return 0; } for (i=0; i < count; i++) { cmsUInt16Number PCS[3]; cmsUInt16Number Colorant[cmsMAXCHANNELS]; char Root[33]; memset(Colorant, 0, sizeof(Colorant)); if (io -> Read(io, Root, 32, 1) != 1) return NULL; if (!_cmsReadUInt16Array(io, 3, PCS)) goto Error; if (!_cmsReadUInt16Array(io, nDeviceCoords, Colorant)) goto Error; if (!cmsAppendNamedColor(v, Root, PCS, Colorant)) goto Error; } *nItems = 1; return (void*) v ; Error: cmsFreeNamedColorList(v); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } // Saves a named color list into a named color profile static cmsBool Type_NamedColor_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsNAMEDCOLORLIST* NamedColorList = (cmsNAMEDCOLORLIST*) Ptr; char prefix[32]; // Prefix for each color name char suffix[32]; // Suffix for each color name int i, nColors; nColors = cmsNamedColorCount(NamedColorList); if (!_cmsWriteUInt32Number(io, 0)) return FALSE; if (!_cmsWriteUInt32Number(io, nColors)) return FALSE; if (!_cmsWriteUInt32Number(io, NamedColorList ->ColorantCount)) return FALSE; strncpy(prefix, (const char*) NamedColorList->Prefix, 32); strncpy(suffix, (const char*) NamedColorList->Suffix, 32); suffix[31] = prefix[31] = 0; if (!io ->Write(io, 32, prefix)) return FALSE; if (!io ->Write(io, 32, suffix)) return FALSE; for (i=0; i < nColors; i++) { cmsUInt16Number PCS[3]; cmsUInt16Number Colorant[cmsMAXCHANNELS]; char Root[33]; if (!cmsNamedColorInfo(NamedColorList, i, Root, NULL, NULL, PCS, Colorant)) return 0; if (!io ->Write(io, 32 , Root)) return FALSE; if (!_cmsWriteUInt16Array(io, 3, PCS)) return FALSE; if (!_cmsWriteUInt16Array(io, NamedColorList ->ColorantCount, Colorant)) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_NamedColor_Dup(struct _cms_typehandler_struct* self, const void* Ptr, cmsUInt32Number n) { cmsNAMEDCOLORLIST* nc = (cmsNAMEDCOLORLIST*) Ptr; return (void*) cmsDupNamedColorList(nc); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_NamedColor_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsFreeNamedColorList((cmsNAMEDCOLORLIST*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigProfileSequenceDescType // ******************************************************************************** // This type is an array of structures, each of which contains information from the // header fields and tags from the original profiles which were combined to create // the final profile. The order of the structures is the order in which the profiles // were combined and includes a structure for the final profile. This provides a // description of the profile sequence from source to destination, // typically used with the DeviceLink profile. static cmsBool ReadEmbeddedText(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsMLU** mlu, cmsUInt32Number SizeOfTag) { cmsTagTypeSignature BaseType; cmsUInt32Number nItems; BaseType = _cmsReadTypeBase(io); switch (BaseType) { case cmsSigTextType: if (*mlu) cmsMLUfree(*mlu); *mlu = (cmsMLU*)Type_Text_Read(self, io, &nItems, SizeOfTag); return (*mlu != NULL); case cmsSigTextDescriptionType: if (*mlu) cmsMLUfree(*mlu); *mlu = (cmsMLU*) Type_Text_Description_Read(self, io, &nItems, SizeOfTag); return (*mlu != NULL); /* TBD: Size is needed for MLU, and we have no idea on which is the available size */ case cmsSigMultiLocalizedUnicodeType: if (*mlu) cmsMLUfree(*mlu); *mlu = (cmsMLU*) Type_MLU_Read(self, io, &nItems, SizeOfTag); return (*mlu != NULL); default: return FALSE; } } static void *Type_ProfileSequenceDesc_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsSEQ* OutSeq; cmsUInt32Number i, Count; *nItems = 0; if (!_cmsReadUInt32Number(io, &Count)) return NULL; if (SizeOfTag < sizeof(cmsUInt32Number)) return NULL; SizeOfTag -= sizeof(cmsUInt32Number); OutSeq = cmsAllocProfileSequenceDescription(self ->ContextID, Count); if (OutSeq == NULL) return NULL; OutSeq ->n = Count; // Get structures as well for (i=0; i < Count; i++) { cmsPSEQDESC* sec = &OutSeq -> seq[i]; if (!_cmsReadUInt32Number(io, &sec ->deviceMfg)) goto Error; if (SizeOfTag < sizeof(cmsUInt32Number)) goto Error; SizeOfTag -= sizeof(cmsUInt32Number); if (!_cmsReadUInt32Number(io, &sec ->deviceModel)) goto Error; if (SizeOfTag < sizeof(cmsUInt32Number)) goto Error; SizeOfTag -= sizeof(cmsUInt32Number); if (!_cmsReadUInt64Number(io, &sec ->attributes)) goto Error; if (SizeOfTag < sizeof(cmsUInt64Number)) goto Error; SizeOfTag -= sizeof(cmsUInt64Number); if (!_cmsReadUInt32Number(io, (cmsUInt32Number *)&sec ->technology)) goto Error; if (SizeOfTag < sizeof(cmsUInt32Number)) goto Error; SizeOfTag -= sizeof(cmsUInt32Number); if (!ReadEmbeddedText(self, io, &sec ->Manufacturer, SizeOfTag)) goto Error; if (!ReadEmbeddedText(self, io, &sec ->Model, SizeOfTag)) goto Error; } *nItems = 1; return OutSeq; Error: cmsFreeProfileSequenceDescription(OutSeq); return NULL; } // Aux--Embed a text description type. It can be of type text description or multilocalized unicode // and it depends of the version number passed on cmsTagDescriptor structure instead of stack static cmsBool SaveDescription(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsMLU* Text) { if (self ->ICCVersion < 0x4000000) { if (!_cmsWriteTypeBase(io, cmsSigTextDescriptionType)) return FALSE; return Type_Text_Description_Write(self, io, Text, 1); } else { if (!_cmsWriteTypeBase(io, cmsSigMultiLocalizedUnicodeType)) return FALSE; return Type_MLU_Write(self, io, Text, 1); } } static cmsBool Type_ProfileSequenceDesc_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsSEQ* Seq = (cmsSEQ*) Ptr; cmsUInt32Number i; if (!_cmsWriteUInt32Number(io, Seq->n)) return FALSE; for (i=0; i < Seq ->n; i++) { cmsPSEQDESC* sec = &Seq -> seq[i]; if (!_cmsWriteUInt32Number(io, sec ->deviceMfg)) return FALSE; if (!_cmsWriteUInt32Number(io, sec ->deviceModel)) return FALSE; if (!_cmsWriteUInt64Number(io, &sec ->attributes)) return FALSE; if (!_cmsWriteUInt32Number(io, sec ->technology)) return FALSE; if (!SaveDescription(self, io, sec ->Manufacturer)) return FALSE; if (!SaveDescription(self, io, sec ->Model)) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_ProfileSequenceDesc_Dup(struct _cms_typehandler_struct* self, const void* Ptr, cmsUInt32Number n) { return (void*) cmsDupProfileSequenceDescription((cmsSEQ*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_ProfileSequenceDesc_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsFreeProfileSequenceDescription((cmsSEQ*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigProfileSequenceIdType // ******************************************************************************** /* In certain workflows using ICC Device Link Profiles, it is necessary to identify the original profiles that were combined to create the Device Link Profile. This type is an array of structures, each of which contains information for identification of a profile used in a sequence */ static cmsBool ReadSeqID(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Cargo, cmsUInt32Number n, cmsUInt32Number SizeOfTag) { cmsSEQ* OutSeq = (cmsSEQ*) Cargo; cmsPSEQDESC* seq = &OutSeq ->seq[n]; if (io -> Read(io, seq ->ProfileID.ID8, 16, 1) != 1) return FALSE; if (!ReadEmbeddedText(self, io, &seq ->Description, SizeOfTag)) return FALSE; return TRUE; } static void *Type_ProfileSequenceId_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsSEQ* OutSeq; cmsUInt32Number Count; cmsUInt32Number BaseOffset; *nItems = 0; // Get actual position as a basis for element offsets BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); // Get table count if (!_cmsReadUInt32Number(io, &Count)) return NULL; SizeOfTag -= sizeof(cmsUInt32Number); // Allocate an empty structure OutSeq = cmsAllocProfileSequenceDescription(self ->ContextID, Count); if (OutSeq == NULL) return NULL; // Read the position table if (!ReadPositionTable(self, io, Count, BaseOffset, OutSeq, ReadSeqID)) { cmsFreeProfileSequenceDescription(OutSeq); return NULL; } // Success *nItems = 1; return OutSeq; } static cmsBool WriteSeqID(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Cargo, cmsUInt32Number n, cmsUInt32Number SizeOfTag) { cmsSEQ* Seq = (cmsSEQ*) Cargo; if (!io ->Write(io, 16, Seq ->seq[n].ProfileID.ID8)) return FALSE; // Store here the MLU if (!SaveDescription(self, io, Seq ->seq[n].Description)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_ProfileSequenceId_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsSEQ* Seq = (cmsSEQ*) Ptr; cmsUInt32Number BaseOffset; // Keep the base offset BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); // This is the table count if (!_cmsWriteUInt32Number(io, Seq ->n)) return FALSE; // This is the position table and content if (!WritePositionTable(self, io, 0, Seq ->n, BaseOffset, Seq, WriteSeqID)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_ProfileSequenceId_Dup(struct _cms_typehandler_struct* self, const void* Ptr, cmsUInt32Number n) { return (void*) cmsDupProfileSequenceDescription((cmsSEQ*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_ProfileSequenceId_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsFreeProfileSequenceDescription((cmsSEQ*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigUcrBgType // ******************************************************************************** /* This type contains curves representing the under color removal and black generation and a text string which is a general description of the method used for the ucr/bg. */ static void *Type_UcrBg_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUcrBg* n = (cmsUcrBg*) _cmsMallocZero(self ->ContextID, sizeof(cmsUcrBg)); cmsUInt32Number CountUcr, CountBg; char* ASCIIString; *nItems = 0; if (n == NULL) return NULL; // First curve is Under color removal if (!_cmsReadUInt32Number(io, &CountUcr)) return NULL; if (SizeOfTag < sizeof(cmsUInt32Number)) return NULL; SizeOfTag -= sizeof(cmsUInt32Number); n ->Ucr = cmsBuildTabulatedToneCurve16(self ->ContextID, CountUcr, NULL); if (n ->Ucr == NULL) return NULL; if (!_cmsReadUInt16Array(io, CountUcr, n ->Ucr->Table16)) return NULL; if (SizeOfTag < sizeof(cmsUInt32Number)) return NULL; SizeOfTag -= CountUcr * sizeof(cmsUInt16Number); // Second curve is Black generation if (!_cmsReadUInt32Number(io, &CountBg)) return NULL; if (SizeOfTag < sizeof(cmsUInt32Number)) return NULL; SizeOfTag -= sizeof(cmsUInt32Number); n ->Bg = cmsBuildTabulatedToneCurve16(self ->ContextID, CountBg, NULL); if (n ->Bg == NULL) return NULL; if (!_cmsReadUInt16Array(io, CountBg, n ->Bg->Table16)) return NULL; if (SizeOfTag < CountBg * sizeof(cmsUInt16Number)) return NULL; SizeOfTag -= CountBg * sizeof(cmsUInt16Number); if (SizeOfTag == UINT_MAX) return NULL; // Now comes the text. The length is specified by the tag size n ->Desc = cmsMLUalloc(self ->ContextID, 1); if (n ->Desc == NULL) return NULL; ASCIIString = (char*) _cmsMalloc(self ->ContextID, SizeOfTag + 1); if (io ->Read(io, ASCIIString, sizeof(char), SizeOfTag) != SizeOfTag) return NULL; ASCIIString[SizeOfTag] = 0; cmsMLUsetASCII(n ->Desc, cmsNoLanguage, cmsNoCountry, ASCIIString); _cmsFree(self ->ContextID, ASCIIString); *nItems = 1; return (void*) n; } static cmsBool Type_UcrBg_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUcrBg* Value = (cmsUcrBg*) Ptr; cmsUInt32Number TextSize; char* Text; // First curve is Under color removal if (!_cmsWriteUInt32Number(io, Value ->Ucr ->nEntries)) return FALSE; if (!_cmsWriteUInt16Array(io, Value ->Ucr ->nEntries, Value ->Ucr ->Table16)) return FALSE; // Then black generation if (!_cmsWriteUInt32Number(io, Value ->Bg ->nEntries)) return FALSE; if (!_cmsWriteUInt16Array(io, Value ->Bg ->nEntries, Value ->Bg ->Table16)) return FALSE; // Now comes the text. The length is specified by the tag size TextSize = cmsMLUgetASCII(Value ->Desc, cmsNoLanguage, cmsNoCountry, NULL, 0); Text = (char*) _cmsMalloc(self ->ContextID, TextSize); if (cmsMLUgetASCII(Value ->Desc, cmsNoLanguage, cmsNoCountry, Text, TextSize) != TextSize) return FALSE; if (!io ->Write(io, TextSize, Text)) return FALSE; _cmsFree(self ->ContextID, Text); return TRUE; cmsUNUSED_PARAMETER(nItems); } static void* Type_UcrBg_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { cmsUcrBg* Src = (cmsUcrBg*) Ptr; cmsUcrBg* NewUcrBg = (cmsUcrBg*) _cmsMallocZero(self ->ContextID, sizeof(cmsUcrBg)); if (NewUcrBg == NULL) return NULL; NewUcrBg ->Bg = cmsDupToneCurve(Src ->Bg); NewUcrBg ->Ucr = cmsDupToneCurve(Src ->Ucr); NewUcrBg ->Desc = cmsMLUdup(Src ->Desc); return (void*) NewUcrBg; cmsUNUSED_PARAMETER(n); } static void Type_UcrBg_Free(struct _cms_typehandler_struct* self, void *Ptr) { cmsUcrBg* Src = (cmsUcrBg*) Ptr; if (Src ->Ucr) cmsFreeToneCurve(Src ->Ucr); if (Src ->Bg) cmsFreeToneCurve(Src ->Bg); if (Src ->Desc) cmsMLUfree(Src ->Desc); _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigCrdInfoType // ******************************************************************************** /* This type contains the PostScript product name to which this profile corresponds and the names of the companion CRDs. Recall that a single profile can generate multiple CRDs. It is implemented as a MLU being the language code "PS" and then country varies for each element: nm: PostScript product name #0: Rendering intent 0 CRD name #1: Rendering intent 1 CRD name #2: Rendering intent 2 CRD name #3: Rendering intent 3 CRD name */ // Auxiliar, read an string specified as count + string static cmsBool ReadCountAndSting(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsMLU* mlu, cmsUInt32Number* SizeOfTag, const char* Section) { cmsUInt32Number Count; char* Text; if (*SizeOfTag < sizeof(cmsUInt32Number)) return FALSE; if (!_cmsReadUInt32Number(io, &Count)) return FALSE; if (Count > UINT_MAX - sizeof(cmsUInt32Number)) return FALSE; if (*SizeOfTag < Count + sizeof(cmsUInt32Number)) return FALSE; Text = (char*) _cmsMalloc(self ->ContextID, Count+1); if (Text == NULL) return FALSE; if (io ->Read(io, Text, sizeof(cmsUInt8Number), Count) != Count) { _cmsFree(self ->ContextID, Text); return FALSE; } Text[Count] = 0; cmsMLUsetASCII(mlu, "PS", Section, Text); _cmsFree(self ->ContextID, Text); *SizeOfTag -= (Count + sizeof(cmsUInt32Number)); return TRUE; } static cmsBool WriteCountAndSting(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsMLU* mlu, const char* Section) { cmsUInt32Number TextSize; char* Text; TextSize = cmsMLUgetASCII(mlu, "PS", Section, NULL, 0); Text = (char*) _cmsMalloc(self ->ContextID, TextSize); if (!_cmsWriteUInt32Number(io, TextSize)) return FALSE; if (cmsMLUgetASCII(mlu, "PS", Section, Text, TextSize) == 0) return FALSE; if (!io ->Write(io, TextSize, Text)) return FALSE; _cmsFree(self ->ContextID, Text); return TRUE; } static void *Type_CrdInfo_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsMLU* mlu = cmsMLUalloc(self ->ContextID, 5); *nItems = 0; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "nm")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#0")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#1")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#2")) goto Error; if (!ReadCountAndSting(self, io, mlu, &SizeOfTag, "#3")) goto Error; *nItems = 1; return (void*) mlu; Error: cmsMLUfree(mlu); return NULL; } static cmsBool Type_CrdInfo_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsMLU* mlu = (cmsMLU*) Ptr; if (!WriteCountAndSting(self, io, mlu, "nm")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#0")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#1")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#2")) goto Error; if (!WriteCountAndSting(self, io, mlu, "#3")) goto Error; return TRUE; Error: return FALSE; cmsUNUSED_PARAMETER(nItems); } static void* Type_CrdInfo_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsMLUdup((cmsMLU*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_CrdInfo_Free(struct _cms_typehandler_struct* self, void *Ptr) { cmsMLUfree((cmsMLU*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigScreeningType // ******************************************************************************** // //The screeningType describes various screening parameters including screen //frequency, screening angle, and spot shape. static void *Type_Screening_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsScreening* sc = NULL; cmsUInt32Number i; sc = (cmsScreening*) _cmsMallocZero(self ->ContextID, sizeof(cmsScreening)); if (sc == NULL) return NULL; *nItems = 0; if (!_cmsReadUInt32Number(io, &sc ->Flag)) goto Error; if (!_cmsReadUInt32Number(io, &sc ->nChannels)) goto Error; if (sc ->nChannels > cmsMAXCHANNELS - 1) sc ->nChannels = cmsMAXCHANNELS - 1; for (i=0; i < sc ->nChannels; i++) { if (!_cmsRead15Fixed16Number(io, &sc ->Channels[i].Frequency)) goto Error; if (!_cmsRead15Fixed16Number(io, &sc ->Channels[i].ScreenAngle)) goto Error; if (!_cmsReadUInt32Number(io, &sc ->Channels[i].SpotShape)) goto Error; } *nItems = 1; return (void*) sc; Error: if (sc != NULL) _cmsFree(self ->ContextID, sc); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_Screening_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsScreening* sc = (cmsScreening* ) Ptr; cmsUInt32Number i; if (!_cmsWriteUInt32Number(io, sc ->Flag)) return FALSE; if (!_cmsWriteUInt32Number(io, sc ->nChannels)) return FALSE; for (i=0; i < sc ->nChannels; i++) { if (!_cmsWrite15Fixed16Number(io, sc ->Channels[i].Frequency)) return FALSE; if (!_cmsWrite15Fixed16Number(io, sc ->Channels[i].ScreenAngle)) return FALSE; if (!_cmsWriteUInt32Number(io, sc ->Channels[i].SpotShape)) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_Screening_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, sizeof(cmsScreening)); cmsUNUSED_PARAMETER(n); } static void Type_Screening_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigViewingConditionsType // ******************************************************************************** // //This type represents a set of viewing condition parameters including: //CIE absolute illuminant white point tristimulus values and CIE absolute //surround tristimulus values. static void *Type_ViewingConditions_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsICCViewingConditions* vc = NULL; vc = (cmsICCViewingConditions*) _cmsMallocZero(self ->ContextID, sizeof(cmsICCViewingConditions)); if (vc == NULL) return NULL; *nItems = 0; if (!_cmsReadXYZNumber(io, &vc ->IlluminantXYZ)) goto Error; if (!_cmsReadXYZNumber(io, &vc ->SurroundXYZ)) goto Error; if (!_cmsReadUInt32Number(io, &vc ->IlluminantType)) goto Error; *nItems = 1; return (void*) vc; Error: if (vc != NULL) _cmsFree(self ->ContextID, vc); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_ViewingConditions_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsICCViewingConditions* sc = (cmsICCViewingConditions* ) Ptr; if (!_cmsWriteXYZNumber(io, &sc ->IlluminantXYZ)) return FALSE; if (!_cmsWriteXYZNumber(io, &sc ->SurroundXYZ)) return FALSE; if (!_cmsWriteUInt32Number(io, sc ->IlluminantType)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void* Type_ViewingConditions_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return _cmsDupMem(self ->ContextID, Ptr, sizeof(cmsScreening)); cmsUNUSED_PARAMETER(n); } static void Type_ViewingConditions_Free(struct _cms_typehandler_struct* self, void* Ptr) { _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigMultiProcessElementType // ******************************************************************************** static void* GenericMPEdup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsStageDup((cmsStage*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void GenericMPEfree(struct _cms_typehandler_struct* self, void *Ptr) { cmsStageFree((cmsStage*) Ptr); return; cmsUNUSED_PARAMETER(self); } // Each curve is stored in one or more curve segments, with break-points specified between curve segments. // The first curve segment always starts at Infinity, and the last curve segment always ends at +Infinity. The // first and last curve segments shall be specified in terms of a formula, whereas the other segments shall be // specified either in terms of a formula, or by a sampled curve. // Read an embedded segmented curve static cmsToneCurve* ReadSegmentedCurve(struct _cms_typehandler_struct* self, cmsIOHANDLER* io) { cmsCurveSegSignature ElementSig; cmsUInt32Number i, j; cmsUInt16Number nSegments; cmsCurveSegment* Segments; cmsToneCurve* Curve; cmsFloat32Number PrevBreak = -1E22F; // - infinite // Take signature and channels for each element. if (!_cmsReadUInt32Number(io, (cmsUInt32Number*) &ElementSig)) return NULL; // That should be a segmented curve if (ElementSig != cmsSigSegmentedCurve) return NULL; if (!_cmsReadUInt32Number(io, NULL)) return NULL; if (!_cmsReadUInt16Number(io, &nSegments)) return NULL; if (!_cmsReadUInt16Number(io, NULL)) return NULL; if (nSegments < 1) return NULL; Segments = (cmsCurveSegment*) _cmsCalloc(self ->ContextID, nSegments, sizeof(cmsCurveSegment)); if (Segments == NULL) return NULL; // Read breakpoints for (i=0; i < (cmsUInt32Number) nSegments - 1; i++) { Segments[i].x0 = PrevBreak; if (!_cmsReadFloat32Number(io, &Segments[i].x1)) goto Error; PrevBreak = Segments[i].x1; } Segments[nSegments-1].x0 = PrevBreak; Segments[nSegments-1].x1 = 1E22F; // A big cmsFloat32Number number // Read segments for (i=0; i < nSegments; i++) { if (!_cmsReadUInt32Number(io, (cmsUInt32Number*) &ElementSig)) goto Error; if (!_cmsReadUInt32Number(io, NULL)) goto Error; switch (ElementSig) { case cmsSigFormulaCurveSeg: { cmsUInt16Number Type; cmsUInt32Number ParamsByType[] = {4, 5, 5 }; if (!_cmsReadUInt16Number(io, &Type)) goto Error; if (!_cmsReadUInt16Number(io, NULL)) goto Error; Segments[i].Type = Type + 6; if (Type > 2) goto Error; for (j=0; j < ParamsByType[Type]; j++) { cmsFloat32Number f; if (!_cmsReadFloat32Number(io, &f)) goto Error; Segments[i].Params[j] = f; } } break; case cmsSigSampledCurveSeg: { cmsUInt32Number Count; if (!_cmsReadUInt32Number(io, &Count)) return NULL; Segments[i].nGridPoints = Count; Segments[i].SampledPoints = (cmsFloat32Number*) _cmsCalloc(self ->ContextID, Count, sizeof(cmsFloat32Number)); if (Segments[i].SampledPoints == NULL) goto Error; for (j=0; j < Count; j++) { if (!_cmsReadFloat32Number(io, &Segments[i].SampledPoints[j])) goto Error; } } break; default: { char String[5]; _cmsTagSignature2String(String, (cmsTagSignature) ElementSig); cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown curve element type '%s' found.", String); } return NULL; } } Curve = cmsBuildSegmentedToneCurve(self ->ContextID, nSegments, Segments); for (i=0; i < nSegments; i++) { if (Segments[i].SampledPoints) _cmsFree(self ->ContextID, Segments[i].SampledPoints); } _cmsFree(self ->ContextID, Segments); return Curve; Error: if (Segments) _cmsFree(self ->ContextID, Segments); return NULL; } static cmsBool ReadMPECurve(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Cargo, cmsUInt32Number n, cmsUInt32Number SizeOfTag) { cmsToneCurve** GammaTables = ( cmsToneCurve**) Cargo; GammaTables[n] = ReadSegmentedCurve(self, io); return (GammaTables[n] != NULL); cmsUNUSED_PARAMETER(SizeOfTag); } static void *Type_MPEcurve_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsStage* mpe = NULL; cmsUInt16Number InputChans, OutputChans; cmsUInt32Number i, BaseOffset; cmsToneCurve** GammaTables; *nItems = 0; // Get actual position as a basis for element offsets BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); if (!_cmsReadUInt16Number(io, &InputChans)) return NULL; if (!_cmsReadUInt16Number(io, &OutputChans)) return NULL; if (InputChans != OutputChans) return NULL; GammaTables = (cmsToneCurve**) _cmsCalloc(self ->ContextID, InputChans, sizeof(cmsToneCurve*)); if (GammaTables == NULL) return NULL; if (ReadPositionTable(self, io, InputChans, BaseOffset, GammaTables, ReadMPECurve)) { mpe = cmsStageAllocToneCurves(self ->ContextID, InputChans, GammaTables); } else { mpe = NULL; } for (i=0; i < InputChans; i++) { if (GammaTables[i]) cmsFreeToneCurve(GammaTables[i]); } _cmsFree(self ->ContextID, GammaTables); *nItems = (mpe != NULL) ? 1 : 0; return mpe; cmsUNUSED_PARAMETER(SizeOfTag); } // Write a single segmented curve. NO CHECK IS PERFORMED ON VALIDITY static cmsBool WriteSegmentedCurve(cmsIOHANDLER* io, cmsToneCurve* g) { cmsUInt32Number i, j; cmsCurveSegment* Segments = g ->Segments; cmsUInt32Number nSegments = g ->nSegments; if (!_cmsWriteUInt32Number(io, cmsSigSegmentedCurve)) goto Error; if (!_cmsWriteUInt32Number(io, 0)) goto Error; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) nSegments)) goto Error; if (!_cmsWriteUInt16Number(io, 0)) goto Error; // Write the break-points for (i=0; i < nSegments - 1; i++) { if (!_cmsWriteFloat32Number(io, Segments[i].x1)) goto Error; } // Write the segments for (i=0; i < g ->nSegments; i++) { cmsCurveSegment* ActualSeg = Segments + i; if (ActualSeg -> Type == 0) { // This is a sampled curve if (!_cmsWriteUInt32Number(io, (cmsUInt32Number) cmsSigSampledCurveSeg)) goto Error; if (!_cmsWriteUInt32Number(io, 0)) goto Error; if (!_cmsWriteUInt32Number(io, ActualSeg -> nGridPoints)) goto Error; for (j=0; j < g ->Segments[i].nGridPoints; j++) { if (!_cmsWriteFloat32Number(io, ActualSeg -> SampledPoints[j])) goto Error; } } else { int Type; cmsUInt32Number ParamsByType[] = { 4, 5, 5 }; // This is a formula-based if (!_cmsWriteUInt32Number(io, (cmsUInt32Number) cmsSigFormulaCurveSeg)) goto Error; if (!_cmsWriteUInt32Number(io, 0)) goto Error; // We only allow 1, 2 and 3 as types Type = ActualSeg ->Type - 6; if (Type > 2 || Type < 0) goto Error; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) Type)) goto Error; if (!_cmsWriteUInt16Number(io, 0)) goto Error; for (j=0; j < ParamsByType[Type]; j++) { if (!_cmsWriteFloat32Number(io, (cmsFloat32Number) ActualSeg ->Params[j])) goto Error; } } // It seems there is no need to align. Code is here, and for safety commented out // if (!_cmsWriteAlignment(io)) goto Error; } return TRUE; Error: return FALSE; } static cmsBool WriteMPECurve(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Cargo, cmsUInt32Number n, cmsUInt32Number SizeOfTag) { _cmsStageToneCurvesData* Curves = (_cmsStageToneCurvesData*) Cargo; return WriteSegmentedCurve(io, Curves ->TheCurves[n]); cmsUNUSED_PARAMETER(SizeOfTag); cmsUNUSED_PARAMETER(self); } // Write a curve, checking first for validity static cmsBool Type_MPEcurve_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUInt32Number BaseOffset; cmsStage* mpe = (cmsStage*) Ptr; _cmsStageToneCurvesData* Curves = (_cmsStageToneCurvesData*) mpe ->Data; BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); // Write the header. Since those are curves, input and output channels are same if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) mpe ->InputChannels)) return FALSE; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) mpe ->InputChannels)) return FALSE; if (!WritePositionTable(self, io, 0, mpe ->InputChannels, BaseOffset, Curves, WriteMPECurve)) return FALSE; return TRUE; cmsUNUSED_PARAMETER(nItems); } // The matrix is organized as an array of PxQ+Q elements, where P is the number of input channels to the // matrix, and Q is the number of output channels. The matrix elements are each float32Numbers. The array // is organized as follows: // array = [e11, e12, , e1P, e21, e22, , e2P, , eQ1, eQ2, , eQP, e1, e2, , eQ] static void *Type_MPEmatrix_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsStage* mpe; cmsUInt16Number InputChans, OutputChans; cmsUInt32Number nElems, i; cmsFloat64Number* Matrix; cmsFloat64Number* Offsets; if (!_cmsReadUInt16Number(io, &InputChans)) return NULL; if (!_cmsReadUInt16Number(io, &OutputChans)) return NULL; nElems = InputChans * OutputChans; // Input and output chans may be ANY (up to 0xffff) Matrix = (cmsFloat64Number*) _cmsCalloc(self ->ContextID, nElems, sizeof(cmsFloat64Number)); if (Matrix == NULL) return NULL; Offsets = (cmsFloat64Number*) _cmsCalloc(self ->ContextID, OutputChans, sizeof(cmsFloat64Number)); if (Offsets == NULL) { _cmsFree(self ->ContextID, Matrix); return NULL; } for (i=0; i < nElems; i++) { cmsFloat32Number v; if (!_cmsReadFloat32Number(io, &v)) return NULL; Matrix[i] = v; } for (i=0; i < OutputChans; i++) { cmsFloat32Number v; if (!_cmsReadFloat32Number(io, &v)) return NULL; Offsets[i] = v; } mpe = cmsStageAllocMatrix(self ->ContextID, OutputChans, InputChans, Matrix, Offsets); _cmsFree(self ->ContextID, Matrix); _cmsFree(self ->ContextID, Offsets); *nItems = 1; return mpe; cmsUNUSED_PARAMETER(SizeOfTag); } static cmsBool Type_MPEmatrix_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUInt32Number i, nElems; cmsStage* mpe = (cmsStage*) Ptr; _cmsStageMatrixData* Matrix = (_cmsStageMatrixData*) mpe ->Data; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) mpe ->InputChannels)) return FALSE; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) mpe ->OutputChannels)) return FALSE; nElems = mpe ->InputChannels * mpe ->OutputChannels; for (i=0; i < nElems; i++) { if (!_cmsWriteFloat32Number(io, (cmsFloat32Number) Matrix->Double[i])) return FALSE; } for (i=0; i < mpe ->OutputChannels; i++) { if (Matrix ->Offset == NULL) { if (!_cmsWriteFloat32Number(io, 0)) return FALSE; } else { if (!_cmsWriteFloat32Number(io, (cmsFloat32Number) Matrix->Offset[i])) return FALSE; } } return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } static void *Type_MPEclut_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsStage* mpe = NULL; cmsUInt16Number InputChans, OutputChans; cmsUInt8Number Dimensions8[16]; cmsUInt32Number i, nMaxGrids, GridPoints[MAX_INPUT_DIMENSIONS]; _cmsStageCLutData* clut; if (!_cmsReadUInt16Number(io, &InputChans)) return NULL; if (!_cmsReadUInt16Number(io, &OutputChans)) return NULL; if (InputChans == 0) goto Error; if (OutputChans == 0) goto Error; if (io ->Read(io, Dimensions8, sizeof(cmsUInt8Number), 16) != 16) goto Error; // Copy MAX_INPUT_DIMENSIONS at most. Expand to cmsUInt32Number nMaxGrids = InputChans > MAX_INPUT_DIMENSIONS ? MAX_INPUT_DIMENSIONS : InputChans; for (i=0; i < nMaxGrids; i++) GridPoints[i] = (cmsUInt32Number) Dimensions8[i]; // Allocate the true CLUT mpe = cmsStageAllocCLutFloatGranular(self ->ContextID, GridPoints, InputChans, OutputChans, NULL); if (mpe == NULL) goto Error; // Read the data clut = (_cmsStageCLutData*) mpe ->Data; for (i=0; i < clut ->nEntries; i++) { if (!_cmsReadFloat32Number(io, &clut ->Tab.TFloat[i])) goto Error; } *nItems = 1; return mpe; Error: *nItems = 0; if (mpe != NULL) cmsStageFree(mpe); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } // Write a CLUT in floating point static cmsBool Type_MPEclut_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUInt8Number Dimensions8[16]; cmsUInt32Number i; cmsStage* mpe = (cmsStage*) Ptr; _cmsStageCLutData* clut = (_cmsStageCLutData*) mpe ->Data; // Check for maximum number of channels if (mpe -> InputChannels > 15) return FALSE; // Only floats are supported in MPE if (clut ->HasFloatValues == FALSE) return FALSE; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) mpe ->InputChannels)) return FALSE; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) mpe ->OutputChannels)) return FALSE; memset(Dimensions8, 0, sizeof(Dimensions8)); for (i=0; i < mpe ->InputChannels; i++) Dimensions8[i] = (cmsUInt8Number) clut ->Params ->nSamples[i]; if (!io ->Write(io, 16, Dimensions8)) return FALSE; for (i=0; i < clut ->nEntries; i++) { if (!_cmsWriteFloat32Number(io, clut ->Tab.TFloat[i])) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(nItems); cmsUNUSED_PARAMETER(self); } // This is the list of built-in MPE types static _cmsTagTypeLinkedList SupportedMPEtypes[] = { {{ (cmsTagTypeSignature) cmsSigBAcsElemType, NULL, NULL, NULL, NULL, NULL, 0 }, &SupportedMPEtypes[1] }, // Ignore those elements for now {{ (cmsTagTypeSignature) cmsSigEAcsElemType, NULL, NULL, NULL, NULL, NULL, 0 }, &SupportedMPEtypes[2] }, // (That's what the spec says) {TYPE_MPE_HANDLER((cmsTagTypeSignature) cmsSigCurveSetElemType, MPEcurve), &SupportedMPEtypes[3] }, {TYPE_MPE_HANDLER((cmsTagTypeSignature) cmsSigMatrixElemType, MPEmatrix), &SupportedMPEtypes[4] }, {TYPE_MPE_HANDLER((cmsTagTypeSignature) cmsSigCLutElemType, MPEclut), NULL }, }; #define DEFAULT_MPE_TYPE_COUNT (sizeof(SupportedMPEtypes) / sizeof(_cmsTagTypeLinkedList)) static cmsBool ReadMPEElem(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Cargo, cmsUInt32Number n, cmsUInt32Number SizeOfTag) { cmsStageSignature ElementSig; cmsTagTypeHandler* TypeHandler; cmsUInt32Number nItems; cmsPipeline *NewLUT = (cmsPipeline *) Cargo; // Take signature and channels for each element. if (!_cmsReadUInt32Number(io, (cmsUInt32Number*) &ElementSig)) return FALSE; // The reserved placeholder if (!_cmsReadUInt32Number(io, NULL)) return FALSE; // Read diverse MPE types TypeHandler = GetHandler((cmsTagTypeSignature) ElementSig, SupportedMPEtypes); if (TypeHandler == NULL) { char String[5]; _cmsTagSignature2String(String, (cmsTagSignature) ElementSig); // An unknown element was found. cmsSignalError(self ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown MPE type '%s' found.", String); return FALSE; } // If no read method, just ignore the element (valid for cmsSigBAcsElemType and cmsSigEAcsElemType) // Read the MPE. No size is given if (TypeHandler ->ReadPtr != NULL) { // This is a real element which should be read and processed if (!cmsPipelineInsertStage(NewLUT, cmsAT_END, (cmsStage*) TypeHandler ->ReadPtr(self, io, &nItems, SizeOfTag))) return FALSE; } return TRUE; cmsUNUSED_PARAMETER(SizeOfTag); cmsUNUSED_PARAMETER(n); } // This is the main dispatcher for MPE static void *Type_MPE_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt16Number InputChans, OutputChans; cmsUInt32Number ElementCount; cmsPipeline *NewLUT = NULL; cmsUInt32Number BaseOffset; // Get actual position as a basis for element offsets BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); // Read channels and element count if (!_cmsReadUInt16Number(io, &InputChans)) return NULL; if (!_cmsReadUInt16Number(io, &OutputChans)) return NULL; // Allocates an empty LUT NewLUT = cmsPipelineAlloc(self ->ContextID, InputChans, OutputChans); if (NewLUT == NULL) return NULL; if (!_cmsReadUInt32Number(io, &ElementCount)) return NULL; if (!ReadPositionTable(self, io, ElementCount, BaseOffset, NewLUT, ReadMPEElem)) { if (NewLUT != NULL) cmsPipelineFree(NewLUT); *nItems = 0; return NULL; } // Success *nItems = 1; return NewLUT; cmsUNUSED_PARAMETER(SizeOfTag); } // This one is a liitle bit more complex, so we don't use position tables this time. static cmsBool Type_MPE_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsUInt32Number i, BaseOffset, DirectoryPos, CurrentPos; int inputChan, outputChan; cmsUInt32Number ElemCount; cmsUInt32Number *ElementOffsets = NULL, *ElementSizes = NULL, Before; cmsStageSignature ElementSig; cmsPipeline* Lut = (cmsPipeline*) Ptr; cmsStage* Elem = Lut ->Elements; cmsTagTypeHandler* TypeHandler; BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); inputChan = cmsPipelineInputChannels(Lut); outputChan = cmsPipelineOutputChannels(Lut); ElemCount = cmsPipelineStageCount(Lut); ElementOffsets = (cmsUInt32Number *) _cmsCalloc(self ->ContextID, ElemCount, sizeof(cmsUInt32Number)); if (ElementOffsets == NULL) goto Error; ElementSizes = (cmsUInt32Number *) _cmsCalloc(self ->ContextID, ElemCount, sizeof(cmsUInt32Number)); if (ElementSizes == NULL) goto Error; // Write the head if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) inputChan)) goto Error; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) outputChan)) goto Error; if (!_cmsWriteUInt32Number(io, (cmsUInt16Number) ElemCount)) goto Error; DirectoryPos = io ->Tell(io); // Write a fake directory to be filled latter on for (i=0; i < ElemCount; i++) { if (!_cmsWriteUInt32Number(io, 0)) goto Error; // Offset if (!_cmsWriteUInt32Number(io, 0)) goto Error; // size } // Write each single tag. Keep track of the size as well. for (i=0; i < ElemCount; i++) { ElementOffsets[i] = io ->Tell(io) - BaseOffset; ElementSig = Elem ->Type; TypeHandler = GetHandler((cmsTagTypeSignature) ElementSig, SupportedMPEtypes); if (TypeHandler == NULL) { char String[5]; _cmsTagSignature2String(String, (cmsTagSignature) ElementSig); // An unknow element was found. cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Found unknown MPE type '%s'", String); goto Error; } if (!_cmsWriteUInt32Number(io, ElementSig)) goto Error; if (!_cmsWriteUInt32Number(io, 0)) goto Error; Before = io ->Tell(io); if (!TypeHandler ->WritePtr(self, io, Elem, 1)) goto Error; if (!_cmsWriteAlignment(io)) goto Error; ElementSizes[i] = io ->Tell(io) - Before; Elem = Elem ->Next; } // Write the directory CurrentPos = io ->Tell(io); if (!io ->Seek(io, DirectoryPos)) goto Error; for (i=0; i < ElemCount; i++) { if (!_cmsWriteUInt32Number(io, ElementOffsets[i])) goto Error; if (!_cmsWriteUInt32Number(io, ElementSizes[i])) goto Error; } if (!io ->Seek(io, CurrentPos)) goto Error; if (ElementOffsets != NULL) _cmsFree(self ->ContextID, ElementOffsets); if (ElementSizes != NULL) _cmsFree(self ->ContextID, ElementSizes); return TRUE; Error: if (ElementOffsets != NULL) _cmsFree(self ->ContextID, ElementOffsets); if (ElementSizes != NULL) _cmsFree(self ->ContextID, ElementSizes); return FALSE; cmsUNUSED_PARAMETER(nItems); } static void* Type_MPE_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsPipelineDup((cmsPipeline*) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_MPE_Free(struct _cms_typehandler_struct* self, void *Ptr) { cmsPipelineFree((cmsPipeline*) Ptr); return; cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type cmsSigVcgtType // ******************************************************************************** #define cmsVideoCardGammaTableType 0 #define cmsVideoCardGammaFormulaType 1 // Used internally typedef struct { double Gamma; double Min; double Max; } _cmsVCGTGAMMA; static void *Type_vcgt_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsUInt32Number TagType, n, i; cmsToneCurve** Curves; *nItems = 0; // Read tag type if (!_cmsReadUInt32Number(io, &TagType)) return NULL; // Allocate space for the array Curves = ( cmsToneCurve**) _cmsCalloc(self ->ContextID, 3, sizeof(cmsToneCurve*)); if (Curves == NULL) return NULL; // There are two possible flavors switch (TagType) { // Gamma is stored as a table case cmsVideoCardGammaTableType: { cmsUInt16Number nChannels, nElems, nBytes; // Check channel count, which should be 3 (we don't support monochrome this time) if (!_cmsReadUInt16Number(io, &nChannels)) goto Error; if (nChannels != 3) { cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported number of channels for VCGT '%d'", nChannels); goto Error; } // Get Table element count and bytes per element if (!_cmsReadUInt16Number(io, &nElems)) goto Error; if (!_cmsReadUInt16Number(io, &nBytes)) goto Error; // Adobe's quirk fixup. Fixing broken profiles... if (nElems == 256 && nBytes == 1 && SizeOfTag == 1576) nBytes = 2; // Populate tone curves for (n=0; n < 3; n++) { Curves[n] = cmsBuildTabulatedToneCurve16(self ->ContextID, nElems, NULL); if (Curves[n] == NULL) goto Error; // On depending on byte depth switch (nBytes) { // One byte, 0..255 case 1: for (i=0; i < nElems; i++) { cmsUInt8Number v; if (!_cmsReadUInt8Number(io, &v)) goto Error; Curves[n] ->Table16[i] = FROM_8_TO_16(v); } break; // One word 0..65535 case 2: if (!_cmsReadUInt16Array(io, nElems, Curves[n]->Table16)) goto Error; break; // Unsupported default: cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported bit depth for VCGT '%d'", nBytes * 8); goto Error; } } // For all 3 channels } break; // In this case, gamma is stored as a formula case cmsVideoCardGammaFormulaType: { _cmsVCGTGAMMA Colorant[3]; // Populate tone curves for (n=0; n < 3; n++) { double Params[10]; if (!_cmsRead15Fixed16Number(io, &Colorant[n].Gamma)) goto Error; if (!_cmsRead15Fixed16Number(io, &Colorant[n].Min)) goto Error; if (!_cmsRead15Fixed16Number(io, &Colorant[n].Max)) goto Error; // Parametric curve type 5 is: // Y = (aX + b)^Gamma + e | X >= d // Y = cX + f | X < d // vcgt formula is: // Y = (Max Min) * (X ^ Gamma) + Min // So, the translation is // a = (Max Min) ^ ( 1 / Gamma) // e = Min // b=c=d=f=0 Params[0] = Colorant[n].Gamma; Params[1] = pow((Colorant[n].Max - Colorant[n].Min), (1.0 / Colorant[n].Gamma)); Params[2] = 0; Params[3] = 0; Params[4] = 0; Params[5] = Colorant[n].Min; Params[6] = 0; Curves[n] = cmsBuildParametricToneCurve(self ->ContextID, 5, Params); if (Curves[n] == NULL) goto Error; } } break; // Unsupported default: cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported tag type for VCGT '%d'", TagType); goto Error; } *nItems = 1; return (void*) Curves; // Regret, free all resources Error: cmsFreeToneCurveTriple(Curves); _cmsFree(self ->ContextID, Curves); return NULL; cmsUNUSED_PARAMETER(SizeOfTag); } // We don't support all flavors, only 16bits tables and formula static cmsBool Type_vcgt_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsToneCurve** Curves = (cmsToneCurve**) Ptr; cmsUInt32Number i, j; if (cmsGetToneCurveParametricType(Curves[0]) == 5 && cmsGetToneCurveParametricType(Curves[1]) == 5 && cmsGetToneCurveParametricType(Curves[2]) == 5) { if (!_cmsWriteUInt32Number(io, cmsVideoCardGammaFormulaType)) return FALSE; // Save parameters for (i=0; i < 3; i++) { _cmsVCGTGAMMA v; v.Gamma = Curves[i] ->Segments[0].Params[0]; v.Min = Curves[i] ->Segments[0].Params[5]; v.Max = pow(Curves[i] ->Segments[0].Params[1], v.Gamma) + v.Min; if (!_cmsWrite15Fixed16Number(io, v.Gamma)) return FALSE; if (!_cmsWrite15Fixed16Number(io, v.Min)) return FALSE; if (!_cmsWrite15Fixed16Number(io, v.Max)) return FALSE; } } else { // Always store as a table of 256 words if (!_cmsWriteUInt32Number(io, cmsVideoCardGammaTableType)) return FALSE; if (!_cmsWriteUInt16Number(io, 3)) return FALSE; if (!_cmsWriteUInt16Number(io, 256)) return FALSE; if (!_cmsWriteUInt16Number(io, 2)) return FALSE; for (i=0; i < 3; i++) { for (j=0; j < 256; j++) { cmsFloat32Number v = cmsEvalToneCurveFloat(Curves[i], (cmsFloat32Number) (j / 255.0)); cmsUInt16Number n = _cmsQuickSaturateWord(v * 65535.0); if (!_cmsWriteUInt16Number(io, n)) return FALSE; } } } return TRUE; cmsUNUSED_PARAMETER(self); cmsUNUSED_PARAMETER(nItems); } static void* Type_vcgt_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { cmsToneCurve** OldCurves = (cmsToneCurve**) Ptr; cmsToneCurve** NewCurves; NewCurves = ( cmsToneCurve**) _cmsCalloc(self ->ContextID, 3, sizeof(cmsToneCurve*)); if (NewCurves == NULL) return NULL; NewCurves[0] = cmsDupToneCurve(OldCurves[0]); NewCurves[1] = cmsDupToneCurve(OldCurves[1]); NewCurves[2] = cmsDupToneCurve(OldCurves[2]); return (void*) NewCurves; cmsUNUSED_PARAMETER(n); } static void Type_vcgt_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsFreeToneCurveTriple((cmsToneCurve**) Ptr); _cmsFree(self ->ContextID, Ptr); } // ******************************************************************************** // Type cmsSigDictType // ******************************************************************************** // Single column of the table can point to wchar or MLUC elements. Holds arrays of data typedef struct { cmsContext ContextID; cmsUInt32Number *Offsets; cmsUInt32Number *Sizes; } _cmsDICelem; typedef struct { _cmsDICelem Name, Value, DisplayName, DisplayValue; } _cmsDICarray; // Allocate an empty array element static cmsBool AllocElem(cmsContext ContextID, _cmsDICelem* e, cmsUInt32Number Count) { e->Offsets = (cmsUInt32Number *) _cmsCalloc(ContextID, Count, sizeof(cmsUInt32Number)); if (e->Offsets == NULL) return FALSE; e->Sizes = (cmsUInt32Number *) _cmsCalloc(ContextID, Count, sizeof(cmsUInt32Number)); if (e->Sizes == NULL) { _cmsFree(ContextID, e -> Offsets); return FALSE; } e ->ContextID = ContextID; return TRUE; } // Free an array element static void FreeElem(_cmsDICelem* e) { if (e ->Offsets != NULL) _cmsFree(e -> ContextID, e -> Offsets); if (e ->Sizes != NULL) _cmsFree(e -> ContextID, e -> Sizes); e->Offsets = e ->Sizes = NULL; } // Get rid of whole array static void FreeArray( _cmsDICarray* a) { if (a ->Name.Offsets != NULL) FreeElem(&a->Name); if (a ->Value.Offsets != NULL) FreeElem(&a ->Value); if (a ->DisplayName.Offsets != NULL) FreeElem(&a->DisplayName); if (a ->DisplayValue.Offsets != NULL) FreeElem(&a ->DisplayValue); } // Allocate whole array static cmsBool AllocArray(cmsContext ContextID, _cmsDICarray* a, cmsUInt32Number Count, cmsUInt32Number Length) { // Empty values memset(a, 0, sizeof(_cmsDICarray)); // On depending on record size, create column arrays if (!AllocElem(ContextID, &a ->Name, Count)) goto Error; if (!AllocElem(ContextID, &a ->Value, Count)) goto Error; if (Length > 16) { if (!AllocElem(ContextID, &a -> DisplayName, Count)) goto Error; } if (Length > 24) { if (!AllocElem(ContextID, &a ->DisplayValue, Count)) goto Error; } return TRUE; Error: FreeArray(a); return FALSE; } // Read one element static cmsBool ReadOneElem(cmsIOHANDLER* io, _cmsDICelem* e, cmsUInt32Number i, cmsUInt32Number BaseOffset) { if (!_cmsReadUInt32Number(io, &e->Offsets[i])) return FALSE; if (!_cmsReadUInt32Number(io, &e ->Sizes[i])) return FALSE; // An offset of zero has special meaning and shal be preserved if (e ->Offsets[i] > 0) e ->Offsets[i] += BaseOffset; return TRUE; } static cmsBool ReadOffsetArray(cmsIOHANDLER* io, _cmsDICarray* a, cmsUInt32Number Count, cmsUInt32Number Length, cmsUInt32Number BaseOffset) { cmsUInt32Number i; // Read column arrays for (i=0; i < Count; i++) { if (!ReadOneElem(io, &a -> Name, i, BaseOffset)) return FALSE; if (!ReadOneElem(io, &a -> Value, i, BaseOffset)) return FALSE; if (Length > 16) { if (!ReadOneElem(io, &a ->DisplayName, i, BaseOffset)) return FALSE; } if (Length > 24) { if (!ReadOneElem(io, & a -> DisplayValue, i, BaseOffset)) return FALSE; } } return TRUE; } // Write one element static cmsBool WriteOneElem(cmsIOHANDLER* io, _cmsDICelem* e, cmsUInt32Number i) { if (!_cmsWriteUInt32Number(io, e->Offsets[i])) return FALSE; if (!_cmsWriteUInt32Number(io, e ->Sizes[i])) return FALSE; return TRUE; } static cmsBool WriteOffsetArray(cmsIOHANDLER* io, _cmsDICarray* a, cmsUInt32Number Count, cmsUInt32Number Length) { cmsUInt32Number i; for (i=0; i < Count; i++) { if (!WriteOneElem(io, &a -> Name, i)) return FALSE; if (!WriteOneElem(io, &a -> Value, i)) return FALSE; if (Length > 16) { if (!WriteOneElem(io, &a -> DisplayName, i)) return FALSE; } if (Length > 24) { if (!WriteOneElem(io, &a -> DisplayValue, i)) return FALSE; } } return TRUE; } static cmsBool ReadOneWChar(cmsIOHANDLER* io, _cmsDICelem* e, cmsUInt32Number i, wchar_t ** wcstr) { cmsUInt32Number nChars; // Special case for undefined strings (see ICC Votable // Proposal Submission, Dictionary Type and Metadata TAG Definition) if (e -> Offsets[i] == 0) { *wcstr = NULL; return TRUE; } if (!io -> Seek(io, e -> Offsets[i])) return FALSE; nChars = e ->Sizes[i] / sizeof(cmsUInt16Number); *wcstr = (wchar_t*) _cmsMallocZero(e ->ContextID, (nChars + 1) * sizeof(wchar_t)); if (*wcstr == NULL) return FALSE; if (!_cmsReadWCharArray(io, nChars, *wcstr)) { _cmsFree(e ->ContextID, *wcstr); return FALSE; } // End of string marker (*wcstr)[nChars] = 0; return TRUE; } static cmsUInt32Number mywcslen(const wchar_t *s) { const wchar_t *p; p = s; while (*p) p++; return (cmsUInt32Number)(p - s); } static cmsBool WriteOneWChar(cmsIOHANDLER* io, _cmsDICelem* e, cmsUInt32Number i, const wchar_t * wcstr, cmsUInt32Number BaseOffset) { cmsUInt32Number Before = io ->Tell(io); cmsUInt32Number n; e ->Offsets[i] = Before - BaseOffset; if (wcstr == NULL) { e ->Sizes[i] = 0; e ->Offsets[i] = 0; return TRUE; } n = mywcslen(wcstr); if (!_cmsWriteWCharArray(io, n, wcstr)) return FALSE; e ->Sizes[i] = io ->Tell(io) - Before; return TRUE; } static cmsBool ReadOneMLUC(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, _cmsDICelem* e, cmsUInt32Number i, cmsMLU** mlu) { cmsUInt32Number nItems = 0; // A way to get null MLUCs if (e -> Offsets[i] == 0 || e ->Sizes[i] == 0) { *mlu = NULL; return TRUE; } if (!io -> Seek(io, e -> Offsets[i])) return FALSE; *mlu = (cmsMLU*) Type_MLU_Read(self, io, &nItems, e ->Sizes[i]); return *mlu != NULL; } static cmsBool WriteOneMLUC(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, _cmsDICelem* e, cmsUInt32Number i, const cmsMLU* mlu, cmsUInt32Number BaseOffset) { cmsUInt32Number Before; // Special case for undefined strings (see ICC Votable // Proposal Submission, Dictionary Type and Metadata TAG Definition) if (mlu == NULL) { e ->Sizes[i] = 0; e ->Offsets[i] = 0; return TRUE; } Before = io ->Tell(io); e ->Offsets[i] = Before - BaseOffset; if (!Type_MLU_Write(self, io, (void*) mlu, 1)) return FALSE; e ->Sizes[i] = io ->Tell(io) - Before; return TRUE; } static void *Type_Dictionary_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsUInt32Number* nItems, cmsUInt32Number SizeOfTag) { cmsHANDLE hDict; cmsUInt32Number i, Count, Length; cmsUInt32Number BaseOffset; _cmsDICarray a; wchar_t *NameWCS = NULL, *ValueWCS = NULL; cmsMLU *DisplayNameMLU = NULL, *DisplayValueMLU=NULL; cmsBool rc; *nItems = 0; // Get actual position as a basis for element offsets BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); // Get name-value record count if (!_cmsReadUInt32Number(io, &Count)) return NULL; SizeOfTag -= sizeof(cmsUInt32Number); // Get rec length if (!_cmsReadUInt32Number(io, &Length)) return NULL; SizeOfTag -= sizeof(cmsUInt32Number); // Check for valid lengths if (Length != 16 && Length != 24 && Length != 32) { cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown record length in dictionary '%d'", Length); return NULL; } // Creates an empty dictionary hDict = cmsDictAlloc(self -> ContextID); if (hDict == NULL) return NULL; // On depending on record size, create column arrays if (!AllocArray(self -> ContextID, &a, Count, Length)) goto Error; // Read column arrays if (!ReadOffsetArray(io, &a, Count, Length, BaseOffset)) goto Error; // Seek to each element and read it for (i=0; i < Count; i++) { if (!ReadOneWChar(io, &a.Name, i, &NameWCS)) goto Error; if (!ReadOneWChar(io, &a.Value, i, &ValueWCS)) goto Error; if (Length > 16) { if (!ReadOneMLUC(self, io, &a.DisplayName, i, &DisplayNameMLU)) goto Error; } if (Length > 24) { if (!ReadOneMLUC(self, io, &a.DisplayValue, i, &DisplayValueMLU)) goto Error; } if (NameWCS == NULL || ValueWCS == NULL) { cmsSignalError(self->ContextID, cmsERROR_CORRUPTION_DETECTED, "Bad dictionary Name/Value"); rc = FALSE; } else { rc = cmsDictAddEntry(hDict, NameWCS, ValueWCS, DisplayNameMLU, DisplayValueMLU); } if (NameWCS != NULL) _cmsFree(self ->ContextID, NameWCS); if (ValueWCS != NULL) _cmsFree(self ->ContextID, ValueWCS); if (DisplayNameMLU != NULL) cmsMLUfree(DisplayNameMLU); if (DisplayValueMLU != NULL) cmsMLUfree(DisplayValueMLU); if (!rc) goto Error; } FreeArray(&a); *nItems = 1; return (void*) hDict; Error: FreeArray(&a); cmsDictFree(hDict); return NULL; } static cmsBool Type_Dictionary_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsHANDLE hDict = (cmsHANDLE) Ptr; const cmsDICTentry* p; cmsBool AnyName, AnyValue; cmsUInt32Number i, Count, Length; cmsUInt32Number DirectoryPos, CurrentPos, BaseOffset; _cmsDICarray a; if (hDict == NULL) return FALSE; BaseOffset = io ->Tell(io) - sizeof(_cmsTagBase); // Let's inspect the dictionary Count = 0; AnyName = FALSE; AnyValue = FALSE; for (p = cmsDictGetEntryList(hDict); p != NULL; p = cmsDictNextEntry(p)) { if (p ->DisplayName != NULL) AnyName = TRUE; if (p ->DisplayValue != NULL) AnyValue = TRUE; Count++; } Length = 16; if (AnyName) Length += 8; if (AnyValue) Length += 8; if (!_cmsWriteUInt32Number(io, Count)) return FALSE; if (!_cmsWriteUInt32Number(io, Length)) return FALSE; // Keep starting position of offsets table DirectoryPos = io ->Tell(io); // Allocate offsets array if (!AllocArray(self ->ContextID, &a, Count, Length)) goto Error; // Write a fake directory to be filled latter on if (!WriteOffsetArray(io, &a, Count, Length)) goto Error; // Write each element. Keep track of the size as well. p = cmsDictGetEntryList(hDict); for (i=0; i < Count; i++) { if (!WriteOneWChar(io, &a.Name, i, p ->Name, BaseOffset)) goto Error; if (!WriteOneWChar(io, &a.Value, i, p ->Value, BaseOffset)) goto Error; if (p ->DisplayName != NULL) { if (!WriteOneMLUC(self, io, &a.DisplayName, i, p ->DisplayName, BaseOffset)) goto Error; } if (p ->DisplayValue != NULL) { if (!WriteOneMLUC(self, io, &a.DisplayValue, i, p ->DisplayValue, BaseOffset)) goto Error; } p = cmsDictNextEntry(p); } // Write the directory CurrentPos = io ->Tell(io); if (!io ->Seek(io, DirectoryPos)) goto Error; if (!WriteOffsetArray(io, &a, Count, Length)) goto Error; if (!io ->Seek(io, CurrentPos)) goto Error; FreeArray(&a); return TRUE; Error: FreeArray(&a); return FALSE; cmsUNUSED_PARAMETER(nItems); } static void* Type_Dictionary_Dup(struct _cms_typehandler_struct* self, const void *Ptr, cmsUInt32Number n) { return (void*) cmsDictDup((cmsHANDLE) Ptr); cmsUNUSED_PARAMETER(n); cmsUNUSED_PARAMETER(self); } static void Type_Dictionary_Free(struct _cms_typehandler_struct* self, void* Ptr) { cmsDictFree((cmsHANDLE) Ptr); cmsUNUSED_PARAMETER(self); } // ******************************************************************************** // Type support main routines // ******************************************************************************** // This is the list of built-in types static _cmsTagTypeLinkedList SupportedTagTypes[] = { {TYPE_HANDLER(cmsSigChromaticityType, Chromaticity), &SupportedTagTypes[1] }, {TYPE_HANDLER(cmsSigColorantOrderType, ColorantOrderType), &SupportedTagTypes[2] }, {TYPE_HANDLER(cmsSigS15Fixed16ArrayType, S15Fixed16), &SupportedTagTypes[3] }, {TYPE_HANDLER(cmsSigU16Fixed16ArrayType, U16Fixed16), &SupportedTagTypes[4] }, {TYPE_HANDLER(cmsSigTextType, Text), &SupportedTagTypes[5] }, {TYPE_HANDLER(cmsSigTextDescriptionType, Text_Description), &SupportedTagTypes[6] }, {TYPE_HANDLER(cmsSigCurveType, Curve), &SupportedTagTypes[7] }, {TYPE_HANDLER(cmsSigParametricCurveType, ParametricCurve), &SupportedTagTypes[8] }, {TYPE_HANDLER(cmsSigDateTimeType, DateTime), &SupportedTagTypes[9] }, {TYPE_HANDLER(cmsSigLut8Type, LUT8), &SupportedTagTypes[10] }, {TYPE_HANDLER(cmsSigLut16Type, LUT16), &SupportedTagTypes[11] }, {TYPE_HANDLER(cmsSigColorantTableType, ColorantTable), &SupportedTagTypes[12] }, {TYPE_HANDLER(cmsSigNamedColor2Type, NamedColor), &SupportedTagTypes[13] }, {TYPE_HANDLER(cmsSigMultiLocalizedUnicodeType, MLU), &SupportedTagTypes[14] }, {TYPE_HANDLER(cmsSigProfileSequenceDescType, ProfileSequenceDesc), &SupportedTagTypes[15] }, {TYPE_HANDLER(cmsSigSignatureType, Signature), &SupportedTagTypes[16] }, {TYPE_HANDLER(cmsSigMeasurementType, Measurement), &SupportedTagTypes[17] }, {TYPE_HANDLER(cmsSigDataType, Data), &SupportedTagTypes[18] }, {TYPE_HANDLER(cmsSigLutAtoBType, LUTA2B), &SupportedTagTypes[19] }, {TYPE_HANDLER(cmsSigLutBtoAType, LUTB2A), &SupportedTagTypes[20] }, {TYPE_HANDLER(cmsSigUcrBgType, UcrBg), &SupportedTagTypes[21] }, {TYPE_HANDLER(cmsSigCrdInfoType, CrdInfo), &SupportedTagTypes[22] }, {TYPE_HANDLER(cmsSigMultiProcessElementType, MPE), &SupportedTagTypes[23] }, {TYPE_HANDLER(cmsSigScreeningType, Screening), &SupportedTagTypes[24] }, {TYPE_HANDLER(cmsSigViewingConditionsType, ViewingConditions), &SupportedTagTypes[25] }, {TYPE_HANDLER(cmsSigXYZType, XYZ), &SupportedTagTypes[26] }, {TYPE_HANDLER(cmsCorbisBrokenXYZtype, XYZ), &SupportedTagTypes[27] }, {TYPE_HANDLER(cmsMonacoBrokenCurveType, Curve), &SupportedTagTypes[28] }, {TYPE_HANDLER(cmsSigProfileSequenceIdType, ProfileSequenceId), &SupportedTagTypes[29] }, {TYPE_HANDLER(cmsSigDictType, Dictionary), &SupportedTagTypes[30] }, {TYPE_HANDLER(cmsSigVcgtType, vcgt), NULL } }; #define DEFAULT_TAG_TYPE_COUNT (sizeof(SupportedTagTypes) / sizeof(_cmsTagTypeLinkedList)) // Both kind of plug-ins share same structure cmsBool _cmsRegisterTagTypePlugin(cmsContext id, cmsPluginBase* Data) { return RegisterTypesPlugin(id, Data, SupportedTagTypes, DEFAULT_TAG_TYPE_COUNT); } cmsBool _cmsRegisterMultiProcessElementPlugin(cmsContext id, cmsPluginBase* Data) { return RegisterTypesPlugin(id, Data, SupportedMPEtypes, DEFAULT_MPE_TYPE_COUNT); } // Wrapper for tag types cmsTagTypeHandler* _cmsGetTagTypeHandler(cmsTagTypeSignature sig) { return GetHandler(sig, SupportedTagTypes); } // ******************************************************************************** // Tag support main routines // ******************************************************************************** typedef struct _cmsTagLinkedList_st { cmsTagSignature Signature; cmsTagDescriptor Descriptor; struct _cmsTagLinkedList_st* Next; } _cmsTagLinkedList; // This is the list of built-in tags static _cmsTagLinkedList SupportedTags[] = { { cmsSigAToB0Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutAtoBType, cmsSigLut8Type}, DecideLUTtypeA2B}, &SupportedTags[1]}, { cmsSigAToB1Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutAtoBType, cmsSigLut8Type}, DecideLUTtypeA2B}, &SupportedTags[2]}, { cmsSigAToB2Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutAtoBType, cmsSigLut8Type}, DecideLUTtypeA2B}, &SupportedTags[3]}, { cmsSigBToA0Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutBtoAType, cmsSigLut8Type}, DecideLUTtypeB2A}, &SupportedTags[4]}, { cmsSigBToA1Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutBtoAType, cmsSigLut8Type}, DecideLUTtypeB2A}, &SupportedTags[5]}, { cmsSigBToA2Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutBtoAType, cmsSigLut8Type}, DecideLUTtypeB2A}, &SupportedTags[6]}, // Allow corbis and its broken XYZ type { cmsSigRedColorantTag, { 1, 2, { cmsSigXYZType, cmsCorbisBrokenXYZtype }, DecideXYZtype}, &SupportedTags[7]}, { cmsSigGreenColorantTag, { 1, 2, { cmsSigXYZType, cmsCorbisBrokenXYZtype }, DecideXYZtype}, &SupportedTags[8]}, { cmsSigBlueColorantTag, { 1, 2, { cmsSigXYZType, cmsCorbisBrokenXYZtype }, DecideXYZtype}, &SupportedTags[9]}, { cmsSigRedTRCTag, { 1, 3, { cmsSigCurveType, cmsSigParametricCurveType, cmsMonacoBrokenCurveType }, DecideCurveType}, &SupportedTags[10]}, { cmsSigGreenTRCTag, { 1, 3, { cmsSigCurveType, cmsSigParametricCurveType, cmsMonacoBrokenCurveType }, DecideCurveType}, &SupportedTags[11]}, { cmsSigBlueTRCTag, { 1, 3, { cmsSigCurveType, cmsSigParametricCurveType, cmsMonacoBrokenCurveType }, DecideCurveType}, &SupportedTags[12]}, { cmsSigCalibrationDateTimeTag, { 1, 1, { cmsSigDateTimeType }, NULL}, &SupportedTags[13]}, { cmsSigCharTargetTag, { 1, 1, { cmsSigTextType }, NULL}, &SupportedTags[14]}, { cmsSigChromaticAdaptationTag, { 9, 1, { cmsSigS15Fixed16ArrayType }, NULL}, &SupportedTags[15]}, { cmsSigChromaticityTag, { 1, 1, { cmsSigChromaticityType }, NULL}, &SupportedTags[16]}, { cmsSigColorantOrderTag, { 1, 1, { cmsSigColorantOrderType }, NULL}, &SupportedTags[17]}, { cmsSigColorantTableTag, { 1, 1, { cmsSigColorantTableType }, NULL}, &SupportedTags[18]}, { cmsSigColorantTableOutTag, { 1, 1, { cmsSigColorantTableType }, NULL}, &SupportedTags[19]}, { cmsSigCopyrightTag, { 1, 3, { cmsSigTextType, cmsSigMultiLocalizedUnicodeType, cmsSigTextDescriptionType}, DecideTextType}, &SupportedTags[20]}, { cmsSigDateTimeTag, { 1, 1, { cmsSigDateTimeType }, NULL}, &SupportedTags[21]}, { cmsSigDeviceMfgDescTag, { 1, 3, { cmsSigTextDescriptionType, cmsSigMultiLocalizedUnicodeType, cmsSigTextType}, DecideTextDescType}, &SupportedTags[22]}, { cmsSigDeviceModelDescTag, { 1, 3, { cmsSigTextDescriptionType, cmsSigMultiLocalizedUnicodeType, cmsSigTextType}, DecideTextDescType}, &SupportedTags[23]}, { cmsSigGamutTag, { 1, 3, { cmsSigLut16Type, cmsSigLutBtoAType, cmsSigLut8Type }, DecideLUTtypeB2A}, &SupportedTags[24]}, { cmsSigGrayTRCTag, { 1, 2, { cmsSigCurveType, cmsSigParametricCurveType }, DecideCurveType}, &SupportedTags[25]}, { cmsSigLuminanceTag, { 1, 1, { cmsSigXYZType }, NULL}, &SupportedTags[26]}, { cmsSigMediaBlackPointTag, { 1, 2, { cmsSigXYZType, cmsCorbisBrokenXYZtype }, NULL}, &SupportedTags[27]}, { cmsSigMediaWhitePointTag, { 1, 2, { cmsSigXYZType, cmsCorbisBrokenXYZtype }, NULL}, &SupportedTags[28]}, { cmsSigNamedColor2Tag, { 1, 1, { cmsSigNamedColor2Type }, NULL}, &SupportedTags[29]}, { cmsSigPreview0Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutBtoAType, cmsSigLut8Type }, DecideLUTtypeB2A}, &SupportedTags[30]}, { cmsSigPreview1Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutBtoAType, cmsSigLut8Type }, DecideLUTtypeB2A}, &SupportedTags[31]}, { cmsSigPreview2Tag, { 1, 3, { cmsSigLut16Type, cmsSigLutBtoAType, cmsSigLut8Type }, DecideLUTtypeB2A}, &SupportedTags[32]}, { cmsSigProfileDescriptionTag, { 1, 3, { cmsSigTextDescriptionType, cmsSigMultiLocalizedUnicodeType, cmsSigTextType}, DecideTextDescType}, &SupportedTags[33]}, { cmsSigProfileSequenceDescTag, { 1, 1, { cmsSigProfileSequenceDescType }, NULL}, &SupportedTags[34]}, { cmsSigTechnologyTag, { 1, 1, { cmsSigSignatureType }, NULL}, &SupportedTags[35]}, { cmsSigColorimetricIntentImageStateTag, { 1, 1, { cmsSigSignatureType }, NULL}, &SupportedTags[36]}, { cmsSigPerceptualRenderingIntentGamutTag, { 1, 1, { cmsSigSignatureType }, NULL}, &SupportedTags[37]}, { cmsSigSaturationRenderingIntentGamutTag, { 1, 1, { cmsSigSignatureType }, NULL}, &SupportedTags[38]}, { cmsSigMeasurementTag, { 1, 1, { cmsSigMeasurementType }, NULL}, &SupportedTags[39]}, { cmsSigPs2CRD0Tag, { 1, 1, { cmsSigDataType }, NULL}, &SupportedTags[40]}, { cmsSigPs2CRD1Tag, { 1, 1, { cmsSigDataType }, NULL}, &SupportedTags[41]}, { cmsSigPs2CRD2Tag, { 1, 1, { cmsSigDataType }, NULL}, &SupportedTags[42]}, { cmsSigPs2CRD3Tag, { 1, 1, { cmsSigDataType }, NULL}, &SupportedTags[43]}, { cmsSigPs2CSATag, { 1, 1, { cmsSigDataType }, NULL}, &SupportedTags[44]}, { cmsSigPs2RenderingIntentTag, { 1, 1, { cmsSigDataType }, NULL}, &SupportedTags[45]}, { cmsSigViewingCondDescTag, { 1, 3, { cmsSigTextDescriptionType, cmsSigMultiLocalizedUnicodeType, cmsSigTextType}, DecideTextDescType}, &SupportedTags[46]}, { cmsSigUcrBgTag, { 1, 1, { cmsSigUcrBgType}, NULL}, &SupportedTags[47]}, { cmsSigCrdInfoTag, { 1, 1, { cmsSigCrdInfoType}, NULL}, &SupportedTags[48]}, { cmsSigDToB0Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[49]}, { cmsSigDToB1Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[50]}, { cmsSigDToB2Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[51]}, { cmsSigDToB3Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[52]}, { cmsSigBToD0Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[53]}, { cmsSigBToD1Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[54]}, { cmsSigBToD2Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[55]}, { cmsSigBToD3Tag, { 1, 1, { cmsSigMultiProcessElementType}, NULL}, &SupportedTags[56]}, { cmsSigScreeningDescTag, { 1, 1, { cmsSigTextDescriptionType }, NULL}, &SupportedTags[57]}, { cmsSigViewingConditionsTag, { 1, 1, { cmsSigViewingConditionsType }, NULL}, &SupportedTags[58]}, { cmsSigScreeningTag, { 1, 1, { cmsSigScreeningType}, NULL }, &SupportedTags[59]}, { cmsSigVcgtTag, { 1, 1, { cmsSigVcgtType}, NULL }, &SupportedTags[60]}, { cmsSigMetaTag, { 1, 1, { cmsSigDictType}, NULL }, &SupportedTags[61]}, { cmsSigProfileSequenceIdTag, { 1, 1, { cmsSigProfileSequenceIdType}, NULL }, &SupportedTags[62]}, { cmsSigProfileDescriptionMLTag,{ 1, 1, { cmsSigMultiLocalizedUnicodeType}, NULL}, NULL} }; /* Not supported Why ======================= ========================================= cmsSigOutputResponseTag ==> WARNING, POSSIBLE PATENT ON THIS SUBJECT! cmsSigNamedColorTag ==> Deprecated cmsSigDataTag ==> Ancient, unused cmsSigDeviceSettingsTag ==> Deprecated, useless */ #define DEFAULT_TAG_COUNT (sizeof(SupportedTags) / sizeof(_cmsTagLinkedList)) cmsBool _cmsRegisterTagPlugin(cmsContext id, cmsPluginBase* Data) { cmsPluginTag* Plugin = (cmsPluginTag*) Data; _cmsTagLinkedList *pt, *Anterior; if (Data == NULL) { SupportedTags[DEFAULT_TAG_COUNT-1].Next = NULL; return TRUE; } pt = Anterior = SupportedTags; while (pt != NULL) { if (Plugin->Signature == pt -> Signature) { pt ->Descriptor = Plugin ->Descriptor; // Replace old behaviour return TRUE; } Anterior = pt; pt = pt ->Next; } pt = (_cmsTagLinkedList*) _cmsPluginMalloc(id, sizeof(_cmsTagLinkedList)); if (pt == NULL) return FALSE; pt ->Signature = Plugin ->Signature; pt ->Descriptor = Plugin ->Descriptor; pt ->Next = NULL; if (Anterior != NULL) Anterior -> Next = pt; return TRUE; } // Return a descriptor for a given tag or NULL cmsTagDescriptor* _cmsGetTagDescriptor(cmsTagSignature sig) { _cmsTagLinkedList* pt; for (pt = SupportedTags; pt != NULL; pt = pt ->Next) { if (sig == pt -> Signature) return &pt ->Descriptor; } return NULL; } lcms2-2.5/src/cmslut.c0000644002406300000240000014314212163060730014172 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Allocates an empty multi profile element cmsStage* CMSEXPORT _cmsStageAllocPlaceholder(cmsContext ContextID, cmsStageSignature Type, cmsUInt32Number InputChannels, cmsUInt32Number OutputChannels, _cmsStageEvalFn EvalPtr, _cmsStageDupElemFn DupElemPtr, _cmsStageFreeElemFn FreePtr, void* Data) { cmsStage* ph = (cmsStage*) _cmsMallocZero(ContextID, sizeof(cmsStage)); if (ph == NULL) return NULL; ph ->ContextID = ContextID; ph ->Type = Type; ph ->Implements = Type; // By default, no clue on what is implementing ph ->InputChannels = InputChannels; ph ->OutputChannels = OutputChannels; ph ->EvalPtr = EvalPtr; ph ->DupElemPtr = DupElemPtr; ph ->FreePtr = FreePtr; ph ->Data = Data; return ph; } static void EvaluateIdentity(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { memmove(Out, In, mpe ->InputChannels * sizeof(cmsFloat32Number)); } cmsStage* CMSEXPORT cmsStageAllocIdentity(cmsContext ContextID, cmsUInt32Number nChannels) { return _cmsStageAllocPlaceholder(ContextID, cmsSigIdentityElemType, nChannels, nChannels, EvaluateIdentity, NULL, NULL, NULL); } // Conversion functions. From floating point to 16 bits static void FromFloatTo16(const cmsFloat32Number In[], cmsUInt16Number Out[], cmsUInt32Number n) { cmsUInt32Number i; for (i=0; i < n; i++) { Out[i] = _cmsQuickSaturateWord(In[i] * 65535.0); } } // From 16 bits to floating point static void From16ToFloat(const cmsUInt16Number In[], cmsFloat32Number Out[], cmsUInt32Number n) { cmsUInt32Number i; for (i=0; i < n; i++) { Out[i] = (cmsFloat32Number) In[i] / 65535.0F; } } // This function is quite useful to analyze the structure of a LUT and retrieve the MPE elements // that conform the LUT. It should be called with the LUT, the number of expected elements and // then a list of expected types followed with a list of cmsFloat64Number pointers to MPE elements. If // the function founds a match with current pipeline, it fills the pointers and returns TRUE // if not, returns FALSE without touching anything. Setting pointers to NULL does bypass // the storage process. cmsBool CMSEXPORT cmsPipelineCheckAndRetreiveStages(const cmsPipeline* Lut, cmsUInt32Number n, ...) { va_list args; cmsUInt32Number i; cmsStage* mpe; cmsStageSignature Type; void** ElemPtr; // Make sure same number of elements if (cmsPipelineStageCount(Lut) != n) return FALSE; va_start(args, n); // Iterate across asked types mpe = Lut ->Elements; for (i=0; i < n; i++) { // Get asked type Type = (cmsStageSignature)va_arg(args, cmsStageSignature); if (mpe ->Type != Type) { va_end(args); // Mismatch. We are done. return FALSE; } mpe = mpe ->Next; } // Found a combination, fill pointers if not NULL mpe = Lut ->Elements; for (i=0; i < n; i++) { ElemPtr = va_arg(args, void**); if (ElemPtr != NULL) *ElemPtr = mpe; mpe = mpe ->Next; } va_end(args); return TRUE; } // Below there are implementations for several types of elements. Each type may be implemented by a // evaluation function, a duplication function, a function to free resources and a constructor. // ************************************************************************************************* // Type cmsSigCurveSetElemType (curves) // ************************************************************************************************* cmsToneCurve** _cmsStageGetPtrToCurveSet(const cmsStage* mpe) { _cmsStageToneCurvesData* Data = (_cmsStageToneCurvesData*) mpe ->Data; return Data ->TheCurves; } static void EvaluateCurves(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { _cmsStageToneCurvesData* Data; cmsUInt32Number i; _cmsAssert(mpe != NULL); Data = (_cmsStageToneCurvesData*) mpe ->Data; if (Data == NULL) return; if (Data ->TheCurves == NULL) return; for (i=0; i < Data ->nCurves; i++) { Out[i] = cmsEvalToneCurveFloat(Data ->TheCurves[i], In[i]); } } static void CurveSetElemTypeFree(cmsStage* mpe) { _cmsStageToneCurvesData* Data; cmsUInt32Number i; _cmsAssert(mpe != NULL); Data = (_cmsStageToneCurvesData*) mpe ->Data; if (Data == NULL) return; if (Data ->TheCurves != NULL) { for (i=0; i < Data ->nCurves; i++) { if (Data ->TheCurves[i] != NULL) cmsFreeToneCurve(Data ->TheCurves[i]); } } _cmsFree(mpe ->ContextID, Data ->TheCurves); _cmsFree(mpe ->ContextID, Data); } static void* CurveSetDup(cmsStage* mpe) { _cmsStageToneCurvesData* Data = (_cmsStageToneCurvesData*) mpe ->Data; _cmsStageToneCurvesData* NewElem; cmsUInt32Number i; NewElem = (_cmsStageToneCurvesData*) _cmsMallocZero(mpe ->ContextID, sizeof(_cmsStageToneCurvesData)); if (NewElem == NULL) return NULL; NewElem ->nCurves = Data ->nCurves; NewElem ->TheCurves = (cmsToneCurve**) _cmsCalloc(mpe ->ContextID, NewElem ->nCurves, sizeof(cmsToneCurve*)); if (NewElem ->TheCurves == NULL) goto Error; for (i=0; i < NewElem ->nCurves; i++) { // Duplicate each curve. It may fail. NewElem ->TheCurves[i] = cmsDupToneCurve(Data ->TheCurves[i]); if (NewElem ->TheCurves[i] == NULL) goto Error; } return (void*) NewElem; Error: if (NewElem ->TheCurves != NULL) { for (i=0; i < NewElem ->nCurves; i++) { if (NewElem ->TheCurves[i]) cmsFreeToneCurve(NewElem ->TheCurves[i]); } } _cmsFree(mpe ->ContextID, NewElem ->TheCurves); _cmsFree(mpe ->ContextID, NewElem); return NULL; } // Curves == NULL forces identity curves cmsStage* CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Number nChannels, cmsToneCurve* const Curves[]) { cmsUInt32Number i; _cmsStageToneCurvesData* NewElem; cmsStage* NewMPE; NewMPE = _cmsStageAllocPlaceholder(ContextID, cmsSigCurveSetElemType, nChannels, nChannels, EvaluateCurves, CurveSetDup, CurveSetElemTypeFree, NULL ); if (NewMPE == NULL) return NULL; NewElem = (_cmsStageToneCurvesData*) _cmsMallocZero(ContextID, sizeof(_cmsStageToneCurvesData)); if (NewElem == NULL) { cmsStageFree(NewMPE); return NULL; } NewMPE ->Data = (void*) NewElem; NewElem ->nCurves = nChannels; NewElem ->TheCurves = (cmsToneCurve**) _cmsCalloc(ContextID, nChannels, sizeof(cmsToneCurve*)); if (NewElem ->TheCurves == NULL) { cmsStageFree(NewMPE); return NULL; } for (i=0; i < nChannels; i++) { if (Curves == NULL) { NewElem ->TheCurves[i] = cmsBuildGamma(ContextID, 1.0); } else { NewElem ->TheCurves[i] = cmsDupToneCurve(Curves[i]); } if (NewElem ->TheCurves[i] == NULL) { cmsStageFree(NewMPE); return NULL; } } return NewMPE; } // Create a bunch of identity curves cmsStage* _cmsStageAllocIdentityCurves(cmsContext ContextID, int nChannels) { cmsStage* mpe = cmsStageAllocToneCurves(ContextID, nChannels, NULL); if (mpe == NULL) return NULL; mpe ->Implements = cmsSigIdentityElemType; return mpe; } // ************************************************************************************************* // Type cmsSigMatrixElemType (Matrices) // ************************************************************************************************* // Special care should be taken here because precision loss. A temporary cmsFloat64Number buffer is being used static void EvaluateMatrix(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { cmsUInt32Number i, j; _cmsStageMatrixData* Data = (_cmsStageMatrixData*) mpe ->Data; cmsFloat64Number Tmp; // Input is already in 0..1.0 notation for (i=0; i < mpe ->OutputChannels; i++) { Tmp = 0; for (j=0; j < mpe->InputChannels; j++) { Tmp += In[j] * Data->Double[i*mpe->InputChannels + j]; } if (Data ->Offset != NULL) Tmp += Data->Offset[i]; Out[i] = (cmsFloat32Number) Tmp; } // Output in 0..1.0 domain } // Duplicate a yet-existing matrix element static void* MatrixElemDup(cmsStage* mpe) { _cmsStageMatrixData* Data = (_cmsStageMatrixData*) mpe ->Data; _cmsStageMatrixData* NewElem; cmsUInt32Number sz; NewElem = (_cmsStageMatrixData*) _cmsMallocZero(mpe ->ContextID, sizeof(_cmsStageMatrixData)); if (NewElem == NULL) return NULL; sz = mpe ->InputChannels * mpe ->OutputChannels; NewElem ->Double = (cmsFloat64Number*) _cmsDupMem(mpe ->ContextID, Data ->Double, sz * sizeof(cmsFloat64Number)) ; if (Data ->Offset) NewElem ->Offset = (cmsFloat64Number*) _cmsDupMem(mpe ->ContextID, Data ->Offset, mpe -> OutputChannels * sizeof(cmsFloat64Number)) ; return (void*) NewElem; } static void MatrixElemTypeFree(cmsStage* mpe) { _cmsStageMatrixData* Data = (_cmsStageMatrixData*) mpe ->Data; if (Data == NULL) return; if (Data ->Double) _cmsFree(mpe ->ContextID, Data ->Double); if (Data ->Offset) _cmsFree(mpe ->ContextID, Data ->Offset); _cmsFree(mpe ->ContextID, mpe ->Data); } cmsStage* CMSEXPORT cmsStageAllocMatrix(cmsContext ContextID, cmsUInt32Number Rows, cmsUInt32Number Cols, const cmsFloat64Number* Matrix, const cmsFloat64Number* Offset) { cmsUInt32Number i, n; _cmsStageMatrixData* NewElem; cmsStage* NewMPE; n = Rows * Cols; // Check for overflow if (n == 0) return NULL; if (n >= UINT_MAX / Cols) return NULL; if (n >= UINT_MAX / Rows) return NULL; if (n < Rows || n < Cols) return NULL; NewMPE = _cmsStageAllocPlaceholder(ContextID, cmsSigMatrixElemType, Cols, Rows, EvaluateMatrix, MatrixElemDup, MatrixElemTypeFree, NULL ); if (NewMPE == NULL) return NULL; NewElem = (_cmsStageMatrixData*) _cmsMallocZero(ContextID, sizeof(_cmsStageMatrixData)); if (NewElem == NULL) return NULL; NewElem ->Double = (cmsFloat64Number*) _cmsCalloc(ContextID, n, sizeof(cmsFloat64Number)); if (NewElem->Double == NULL) { MatrixElemTypeFree(NewMPE); return NULL; } for (i=0; i < n; i++) { NewElem ->Double[i] = Matrix[i]; } if (Offset != NULL) { NewElem ->Offset = (cmsFloat64Number*) _cmsCalloc(ContextID, Cols, sizeof(cmsFloat64Number)); if (NewElem->Offset == NULL) { MatrixElemTypeFree(NewMPE); return NULL; } for (i=0; i < Cols; i++) { NewElem ->Offset[i] = Offset[i]; } } NewMPE ->Data = (void*) NewElem; return NewMPE; } // ************************************************************************************************* // Type cmsSigCLutElemType // ************************************************************************************************* // Evaluate in true floating point static void EvaluateCLUTfloat(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { _cmsStageCLutData* Data = (_cmsStageCLutData*) mpe ->Data; Data -> Params ->Interpolation.LerpFloat(In, Out, Data->Params); } // Convert to 16 bits, evaluate, and back to floating point static void EvaluateCLUTfloatIn16(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { _cmsStageCLutData* Data = (_cmsStageCLutData*) mpe ->Data; cmsUInt16Number In16[MAX_STAGE_CHANNELS], Out16[MAX_STAGE_CHANNELS]; _cmsAssert(mpe ->InputChannels <= MAX_STAGE_CHANNELS); _cmsAssert(mpe ->OutputChannels <= MAX_STAGE_CHANNELS); FromFloatTo16(In, In16, mpe ->InputChannels); Data -> Params ->Interpolation.Lerp16(In16, Out16, Data->Params); From16ToFloat(Out16, Out, mpe ->OutputChannels); } // Given an hypercube of b dimensions, with Dims[] number of nodes by dimension, calculate the total amount of nodes static cmsUInt32Number CubeSize(const cmsUInt32Number Dims[], cmsUInt32Number b) { cmsUInt32Number rv, dim; _cmsAssert(Dims != NULL); for (rv = 1; b > 0; b--) { dim = Dims[b-1]; if (dim == 0) return 0; // Error rv *= dim; // Check for overflow if (rv > UINT_MAX / dim) return 0; } return rv; } static void* CLUTElemDup(cmsStage* mpe) { _cmsStageCLutData* Data = (_cmsStageCLutData*) mpe ->Data; _cmsStageCLutData* NewElem; NewElem = (_cmsStageCLutData*) _cmsMallocZero(mpe ->ContextID, sizeof(_cmsStageCLutData)); if (NewElem == NULL) return NULL; NewElem ->nEntries = Data ->nEntries; NewElem ->HasFloatValues = Data ->HasFloatValues; if (Data ->Tab.T) { if (Data ->HasFloatValues) { NewElem ->Tab.TFloat = (cmsFloat32Number*) _cmsDupMem(mpe ->ContextID, Data ->Tab.TFloat, Data ->nEntries * sizeof (cmsFloat32Number)); if (NewElem ->Tab.TFloat == NULL) goto Error; } else { NewElem ->Tab.T = (cmsUInt16Number*) _cmsDupMem(mpe ->ContextID, Data ->Tab.T, Data ->nEntries * sizeof (cmsUInt16Number)); if (NewElem ->Tab.TFloat == NULL) goto Error; } } NewElem ->Params = _cmsComputeInterpParamsEx(mpe ->ContextID, Data ->Params ->nSamples, Data ->Params ->nInputs, Data ->Params ->nOutputs, NewElem ->Tab.T, Data ->Params ->dwFlags); if (NewElem->Params != NULL) return (void*) NewElem; Error: if (NewElem->Tab.T) // This works for both types _cmsFree(mpe ->ContextID, NewElem -> Tab.T); _cmsFree(mpe ->ContextID, NewElem); return NULL; } static void CLutElemTypeFree(cmsStage* mpe) { _cmsStageCLutData* Data = (_cmsStageCLutData*) mpe ->Data; // Already empty if (Data == NULL) return; // This works for both types if (Data -> Tab.T) _cmsFree(mpe ->ContextID, Data -> Tab.T); _cmsFreeInterpParams(Data ->Params); _cmsFree(mpe ->ContextID, mpe ->Data); } // Allocates a 16-bit multidimensional CLUT. This is evaluated at 16-bit precision. Table may have different // granularity on each dimension. cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table) { cmsUInt32Number i, n; _cmsStageCLutData* NewElem; cmsStage* NewMPE; _cmsAssert(clutPoints != NULL); if (inputChan > MAX_INPUT_DIMENSIONS) { cmsSignalError(ContextID, cmsERROR_RANGE, "Too many input channels (%d channels, max=%d)", inputChan, MAX_INPUT_DIMENSIONS); return NULL; } NewMPE = _cmsStageAllocPlaceholder(ContextID, cmsSigCLutElemType, inputChan, outputChan, EvaluateCLUTfloatIn16, CLUTElemDup, CLutElemTypeFree, NULL ); if (NewMPE == NULL) return NULL; NewElem = (_cmsStageCLutData*) _cmsMallocZero(ContextID, sizeof(_cmsStageCLutData)); if (NewElem == NULL) { cmsStageFree(NewMPE); return NULL; } NewMPE ->Data = (void*) NewElem; NewElem -> nEntries = n = outputChan * CubeSize(clutPoints, inputChan); NewElem -> HasFloatValues = FALSE; if (n == 0) { cmsStageFree(NewMPE); return NULL; } NewElem ->Tab.T = (cmsUInt16Number*) _cmsCalloc(ContextID, n, sizeof(cmsUInt16Number)); if (NewElem ->Tab.T == NULL) { cmsStageFree(NewMPE); return NULL; } if (Table != NULL) { for (i=0; i < n; i++) { NewElem ->Tab.T[i] = Table[i]; } } NewElem ->Params = _cmsComputeInterpParamsEx(ContextID, clutPoints, inputChan, outputChan, NewElem ->Tab.T, CMS_LERP_FLAGS_16BITS); if (NewElem ->Params == NULL) { cmsStageFree(NewMPE); return NULL; } return NewMPE; } cmsStage* CMSEXPORT cmsStageAllocCLut16bit(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsUInt16Number* Table) { cmsUInt32Number Dimensions[MAX_INPUT_DIMENSIONS]; int i; // Our resulting LUT would be same gridpoints on all dimensions for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Dimensions[i] = nGridPoints; return cmsStageAllocCLut16bitGranular(ContextID, Dimensions, inputChan, outputChan, Table); } cmsStage* CMSEXPORT cmsStageAllocCLutFloat(cmsContext ContextID, cmsUInt32Number nGridPoints, cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table) { cmsUInt32Number Dimensions[MAX_INPUT_DIMENSIONS]; int i; // Our resulting LUT would be same gridpoints on all dimensions for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Dimensions[i] = nGridPoints; return cmsStageAllocCLutFloatGranular(ContextID, Dimensions, inputChan, outputChan, Table); } cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const cmsUInt32Number clutPoints[], cmsUInt32Number inputChan, cmsUInt32Number outputChan, const cmsFloat32Number* Table) { cmsUInt32Number i, n; _cmsStageCLutData* NewElem; cmsStage* NewMPE; _cmsAssert(clutPoints != NULL); if (inputChan > MAX_INPUT_DIMENSIONS) { cmsSignalError(ContextID, cmsERROR_RANGE, "Too many input channels (%d channels, max=%d)", inputChan, MAX_INPUT_DIMENSIONS); return NULL; } NewMPE = _cmsStageAllocPlaceholder(ContextID, cmsSigCLutElemType, inputChan, outputChan, EvaluateCLUTfloat, CLUTElemDup, CLutElemTypeFree, NULL); if (NewMPE == NULL) return NULL; NewElem = (_cmsStageCLutData*) _cmsMallocZero(ContextID, sizeof(_cmsStageCLutData)); if (NewElem == NULL) { cmsStageFree(NewMPE); return NULL; } NewMPE ->Data = (void*) NewElem; // There is a potential integer overflow on conputing n and nEntries. NewElem -> nEntries = n = outputChan * CubeSize(clutPoints, inputChan); NewElem -> HasFloatValues = TRUE; if (n == 0) { cmsStageFree(NewMPE); return NULL; } NewElem ->Tab.TFloat = (cmsFloat32Number*) _cmsCalloc(ContextID, n, sizeof(cmsFloat32Number)); if (NewElem ->Tab.TFloat == NULL) { cmsStageFree(NewMPE); return NULL; } if (Table != NULL) { for (i=0; i < n; i++) { NewElem ->Tab.TFloat[i] = Table[i]; } } NewElem ->Params = _cmsComputeInterpParamsEx(ContextID, clutPoints, inputChan, outputChan, NewElem ->Tab.TFloat, CMS_LERP_FLAGS_FLOAT); if (NewElem ->Params == NULL) { cmsStageFree(NewMPE); return NULL; } return NewMPE; } static int IdentitySampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { int nChan = *(int*) Cargo; int i; for (i=0; i < nChan; i++) Out[i] = In[i]; return 1; } // Creates an MPE that just copies input to output cmsStage* _cmsStageAllocIdentityCLut(cmsContext ContextID, int nChan) { cmsUInt32Number Dimensions[MAX_INPUT_DIMENSIONS]; cmsStage* mpe ; int i; for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Dimensions[i] = 2; mpe = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, nChan, nChan, NULL); if (mpe == NULL) return NULL; if (!cmsStageSampleCLut16bit(mpe, IdentitySampler, &nChan, 0)) { cmsStageFree(mpe); return NULL; } mpe ->Implements = cmsSigIdentityElemType; return mpe; } // Quantize a value 0 <= i < MaxSamples to 0..0xffff cmsUInt16Number _cmsQuantizeVal(cmsFloat64Number i, int MaxSamples) { cmsFloat64Number x; x = ((cmsFloat64Number) i * 65535.) / (cmsFloat64Number) (MaxSamples - 1); return _cmsQuickSaturateWord(x); } // This routine does a sweep on whole input space, and calls its callback // function on knots. returns TRUE if all ok, FALSE otherwise. cmsBool CMSEXPORT cmsStageSampleCLut16bit(cmsStage* mpe, cmsSAMPLER16 Sampler, void * Cargo, cmsUInt32Number dwFlags) { int i, t, nTotalPoints, index, rest; int nInputs, nOutputs; cmsUInt32Number* nSamples; cmsUInt16Number In[MAX_INPUT_DIMENSIONS+1], Out[MAX_STAGE_CHANNELS]; _cmsStageCLutData* clut; if (mpe == NULL) return FALSE; clut = (_cmsStageCLutData*) mpe->Data; if (clut == NULL) return FALSE; nSamples = clut->Params ->nSamples; nInputs = clut->Params ->nInputs; nOutputs = clut->Params ->nOutputs; if (nInputs <= 0) return FALSE; if (nOutputs <= 0) return FALSE; if (nInputs > MAX_INPUT_DIMENSIONS) return FALSE; if (nOutputs >= MAX_STAGE_CHANNELS) return FALSE; nTotalPoints = CubeSize(nSamples, nInputs); if (nTotalPoints == 0) return FALSE; index = 0; for (i = 0; i < nTotalPoints; i++) { rest = i; for (t = nInputs-1; t >=0; --t) { cmsUInt32Number Colorant = rest % nSamples[t]; rest /= nSamples[t]; In[t] = _cmsQuantizeVal(Colorant, nSamples[t]); } if (clut ->Tab.T != NULL) { for (t=0; t < nOutputs; t++) Out[t] = clut->Tab.T[index + t]; } if (!Sampler(In, Out, Cargo)) return FALSE; if (!(dwFlags & SAMPLER_INSPECT)) { if (clut ->Tab.T != NULL) { for (t=0; t < nOutputs; t++) clut->Tab.T[index + t] = Out[t]; } } index += nOutputs; } return TRUE; } // Same as anterior, but for floting point cmsBool CMSEXPORT cmsStageSampleCLutFloat(cmsStage* mpe, cmsSAMPLERFLOAT Sampler, void * Cargo, cmsUInt32Number dwFlags) { int i, t, nTotalPoints, index, rest; int nInputs, nOutputs; cmsUInt32Number* nSamples; cmsFloat32Number In[MAX_INPUT_DIMENSIONS+1], Out[MAX_STAGE_CHANNELS]; _cmsStageCLutData* clut = (_cmsStageCLutData*) mpe->Data; nSamples = clut->Params ->nSamples; nInputs = clut->Params ->nInputs; nOutputs = clut->Params ->nOutputs; if (nInputs <= 0) return FALSE; if (nOutputs <= 0) return FALSE; if (nInputs > MAX_INPUT_DIMENSIONS) return FALSE; if (nOutputs >= MAX_STAGE_CHANNELS) return FALSE; nTotalPoints = CubeSize(nSamples, nInputs); if (nTotalPoints == 0) return FALSE; index = 0; for (i = 0; i < nTotalPoints; i++) { rest = i; for (t = nInputs-1; t >=0; --t) { cmsUInt32Number Colorant = rest % nSamples[t]; rest /= nSamples[t]; In[t] = (cmsFloat32Number) (_cmsQuantizeVal(Colorant, nSamples[t]) / 65535.0); } if (clut ->Tab.TFloat != NULL) { for (t=0; t < nOutputs; t++) Out[t] = clut->Tab.TFloat[index + t]; } if (!Sampler(In, Out, Cargo)) return FALSE; if (!(dwFlags & SAMPLER_INSPECT)) { if (clut ->Tab.TFloat != NULL) { for (t=0; t < nOutputs; t++) clut->Tab.TFloat[index + t] = Out[t]; } } index += nOutputs; } return TRUE; } // This routine does a sweep on whole input space, and calls its callback // function on knots. returns TRUE if all ok, FALSE otherwise. cmsBool CMSEXPORT cmsSliceSpace16(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], cmsSAMPLER16 Sampler, void * Cargo) { int i, t, nTotalPoints, rest; cmsUInt16Number In[cmsMAXCHANNELS]; if (nInputs >= cmsMAXCHANNELS) return FALSE; nTotalPoints = CubeSize(clutPoints, nInputs); if (nTotalPoints == 0) return FALSE; for (i = 0; i < nTotalPoints; i++) { rest = i; for (t = nInputs-1; t >=0; --t) { cmsUInt32Number Colorant = rest % clutPoints[t]; rest /= clutPoints[t]; In[t] = _cmsQuantizeVal(Colorant, clutPoints[t]); } if (!Sampler(In, NULL, Cargo)) return FALSE; } return TRUE; } cmsInt32Number CMSEXPORT cmsSliceSpaceFloat(cmsUInt32Number nInputs, const cmsUInt32Number clutPoints[], cmsSAMPLERFLOAT Sampler, void * Cargo) { int i, t, nTotalPoints, rest; cmsFloat32Number In[cmsMAXCHANNELS]; if (nInputs >= cmsMAXCHANNELS) return FALSE; nTotalPoints = CubeSize(clutPoints, nInputs); if (nTotalPoints == 0) return FALSE; for (i = 0; i < nTotalPoints; i++) { rest = i; for (t = nInputs-1; t >=0; --t) { cmsUInt32Number Colorant = rest % clutPoints[t]; rest /= clutPoints[t]; In[t] = (cmsFloat32Number) (_cmsQuantizeVal(Colorant, clutPoints[t]) / 65535.0); } if (!Sampler(In, NULL, Cargo)) return FALSE; } return TRUE; } // ******************************************************************************** // Type cmsSigLab2XYZElemType // ******************************************************************************** static void EvaluateLab2XYZ(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { cmsCIELab Lab; cmsCIEXYZ XYZ; const cmsFloat64Number XYZadj = MAX_ENCODEABLE_XYZ; // V4 rules Lab.L = In[0] * 100.0; Lab.a = In[1] * 255.0 - 128.0; Lab.b = In[2] * 255.0 - 128.0; cmsLab2XYZ(NULL, &XYZ, &Lab); // From XYZ, range 0..19997 to 0..1.0, note that 1.99997 comes from 0xffff // encoded as 1.15 fixed point, so 1 + (32767.0 / 32768.0) Out[0] = (cmsFloat32Number) ((cmsFloat64Number) XYZ.X / XYZadj); Out[1] = (cmsFloat32Number) ((cmsFloat64Number) XYZ.Y / XYZadj); Out[2] = (cmsFloat32Number) ((cmsFloat64Number) XYZ.Z / XYZadj); return; cmsUNUSED_PARAMETER(mpe); } // No dup or free routines needed, as the structure has no pointers in it. cmsStage* _cmsStageAllocLab2XYZ(cmsContext ContextID) { return _cmsStageAllocPlaceholder(ContextID, cmsSigLab2XYZElemType, 3, 3, EvaluateLab2XYZ, NULL, NULL, NULL); } // ******************************************************************************** // v2 L=100 is supposed to be placed on 0xFF00. There is no reasonable // number of gridpoints that would make exact match. However, a prelinearization // of 258 entries, would map 0xFF00 exactly on entry 257, and this is good to avoid scum dot. // Almost all what we need but unfortunately, the rest of entries should be scaled by // (255*257/256) and this is not exact. cmsStage* _cmsStageAllocLabV2ToV4curves(cmsContext ContextID) { cmsStage* mpe; cmsToneCurve* LabTable[3]; int i, j; LabTable[0] = cmsBuildTabulatedToneCurve16(ContextID, 258, NULL); LabTable[1] = cmsBuildTabulatedToneCurve16(ContextID, 258, NULL); LabTable[2] = cmsBuildTabulatedToneCurve16(ContextID, 258, NULL); for (j=0; j < 3; j++) { if (LabTable[j] == NULL) { cmsFreeToneCurveTriple(LabTable); return NULL; } // We need to map * (0xffff / 0xff00), thats same as (257 / 256) // So we can use 258-entry tables to do the trick (i / 257) * (255 * 257) * (257 / 256); for (i=0; i < 257; i++) { LabTable[j]->Table16[i] = (cmsUInt16Number) ((i * 0xffff + 0x80) >> 8); } LabTable[j] ->Table16[257] = 0xffff; } mpe = cmsStageAllocToneCurves(ContextID, 3, LabTable); cmsFreeToneCurveTriple(LabTable); if (mpe == NULL) return NULL; mpe ->Implements = cmsSigLabV2toV4; return mpe; } // ******************************************************************************** // Matrix-based conversion, which is more accurate, but slower and cannot properly be saved in devicelink profiles cmsStage* _cmsStageAllocLabV2ToV4(cmsContext ContextID) { static const cmsFloat64Number V2ToV4[] = { 65535.0/65280.0, 0, 0, 0, 65535.0/65280.0, 0, 0, 0, 65535.0/65280.0 }; cmsStage *mpe = cmsStageAllocMatrix(ContextID, 3, 3, V2ToV4, NULL); if (mpe == NULL) return mpe; mpe ->Implements = cmsSigLabV2toV4; return mpe; } // Reverse direction cmsStage* _cmsStageAllocLabV4ToV2(cmsContext ContextID) { static const cmsFloat64Number V4ToV2[] = { 65280.0/65535.0, 0, 0, 0, 65280.0/65535.0, 0, 0, 0, 65280.0/65535.0 }; cmsStage *mpe = cmsStageAllocMatrix(ContextID, 3, 3, V4ToV2, NULL); if (mpe == NULL) return mpe; mpe ->Implements = cmsSigLabV4toV2; return mpe; } // To Lab to float. Note that the MPE gives numbers in normal Lab range // and we need 0..1.0 range for the formatters // L* : 0...100 => 0...1.0 (L* / 100) // ab* : -128..+127 to 0..1 ((ab* + 128) / 255) cmsStage* _cmsStageNormalizeFromLabFloat(cmsContext ContextID) { static const cmsFloat64Number a1[] = { 1.0/100.0, 0, 0, 0, 1.0/255.0, 0, 0, 0, 1.0/255.0 }; static const cmsFloat64Number o1[] = { 0, 128.0/255.0, 128.0/255.0 }; cmsStage *mpe = cmsStageAllocMatrix(ContextID, 3, 3, a1, o1); if (mpe == NULL) return mpe; mpe ->Implements = cmsSigLab2FloatPCS; return mpe; } // Fom XYZ to floating point PCS cmsStage* _cmsStageNormalizeFromXyzFloat(cmsContext ContextID) { #define n (32768.0/65535.0) static const cmsFloat64Number a1[] = { n, 0, 0, 0, n, 0, 0, 0, n }; #undef n cmsStage *mpe = cmsStageAllocMatrix(ContextID, 3, 3, a1, NULL); if (mpe == NULL) return mpe; mpe ->Implements = cmsSigXYZ2FloatPCS; return mpe; } cmsStage* _cmsStageNormalizeToLabFloat(cmsContext ContextID) { static const cmsFloat64Number a1[] = { 100.0, 0, 0, 0, 255.0, 0, 0, 0, 255.0 }; static const cmsFloat64Number o1[] = { 0, -128.0, -128.0 }; cmsStage *mpe = cmsStageAllocMatrix(ContextID, 3, 3, a1, o1); if (mpe == NULL) return mpe; mpe ->Implements = cmsSigFloatPCS2Lab; return mpe; } cmsStage* _cmsStageNormalizeToXyzFloat(cmsContext ContextID) { #define n (65535.0/32768.0) static const cmsFloat64Number a1[] = { n, 0, 0, 0, n, 0, 0, 0, n }; #undef n cmsStage *mpe = cmsStageAllocMatrix(ContextID, 3, 3, a1, NULL); if (mpe == NULL) return mpe; mpe ->Implements = cmsSigFloatPCS2XYZ; return mpe; } // ******************************************************************************** // Type cmsSigXYZ2LabElemType // ******************************************************************************** static void EvaluateXYZ2Lab(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { cmsCIELab Lab; cmsCIEXYZ XYZ; const cmsFloat64Number XYZadj = MAX_ENCODEABLE_XYZ; // From 0..1.0 to XYZ XYZ.X = In[0] * XYZadj; XYZ.Y = In[1] * XYZadj; XYZ.Z = In[2] * XYZadj; cmsXYZ2Lab(NULL, &Lab, &XYZ); // From V4 Lab to 0..1.0 Out[0] = (cmsFloat32Number) (Lab.L / 100.0); Out[1] = (cmsFloat32Number) ((Lab.a + 128.0) / 255.0); Out[2] = (cmsFloat32Number) ((Lab.b + 128.0) / 255.0); return; cmsUNUSED_PARAMETER(mpe); } cmsStage* _cmsStageAllocXYZ2Lab(cmsContext ContextID) { return _cmsStageAllocPlaceholder(ContextID, cmsSigXYZ2LabElemType, 3, 3, EvaluateXYZ2Lab, NULL, NULL, NULL); } // ******************************************************************************** // For v4, S-Shaped curves are placed in a/b axis to increase resolution near gray cmsStage* _cmsStageAllocLabPrelin(cmsContext ContextID) { cmsToneCurve* LabTable[3]; cmsFloat64Number Params[1] = {2.4} ; LabTable[0] = cmsBuildGamma(ContextID, 1.0); LabTable[1] = cmsBuildParametricToneCurve(ContextID, 108, Params); LabTable[2] = cmsBuildParametricToneCurve(ContextID, 108, Params); return cmsStageAllocToneCurves(ContextID, 3, LabTable); } // Free a single MPE void CMSEXPORT cmsStageFree(cmsStage* mpe) { if (mpe ->FreePtr) mpe ->FreePtr(mpe); _cmsFree(mpe ->ContextID, mpe); } cmsUInt32Number CMSEXPORT cmsStageInputChannels(const cmsStage* mpe) { return mpe ->InputChannels; } cmsUInt32Number CMSEXPORT cmsStageOutputChannels(const cmsStage* mpe) { return mpe ->OutputChannels; } cmsStageSignature CMSEXPORT cmsStageType(const cmsStage* mpe) { return mpe -> Type; } void* CMSEXPORT cmsStageData(const cmsStage* mpe) { return mpe -> Data; } cmsStage* CMSEXPORT cmsStageNext(const cmsStage* mpe) { return mpe -> Next; } // Duplicates an MPE cmsStage* CMSEXPORT cmsStageDup(cmsStage* mpe) { cmsStage* NewMPE; if (mpe == NULL) return NULL; NewMPE = _cmsStageAllocPlaceholder(mpe ->ContextID, mpe ->Type, mpe ->InputChannels, mpe ->OutputChannels, mpe ->EvalPtr, mpe ->DupElemPtr, mpe ->FreePtr, NULL); if (NewMPE == NULL) return NULL; NewMPE ->Implements = mpe ->Implements; if (mpe ->DupElemPtr) { NewMPE ->Data = mpe ->DupElemPtr(mpe); if (NewMPE->Data == NULL) { cmsStageFree(NewMPE); return NULL; } } else { NewMPE ->Data = NULL; } return NewMPE; } // *********************************************************************************************************** // This function sets up the channel count static void BlessLUT(cmsPipeline* lut) { // We can set the input/ouput channels only if we have elements. if (lut ->Elements != NULL) { cmsStage *First, *Last; First = cmsPipelineGetPtrToFirstStage(lut); Last = cmsPipelineGetPtrToLastStage(lut); if (First != NULL)lut ->InputChannels = First ->InputChannels; if (Last != NULL) lut ->OutputChannels = Last ->OutputChannels; } } // Default to evaluate the LUT on 16 bit-basis. Precision is retained. static void _LUTeval16(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register const void* D) { cmsPipeline* lut = (cmsPipeline*) D; cmsStage *mpe; cmsFloat32Number Storage[2][MAX_STAGE_CHANNELS]; int Phase = 0, NextPhase; From16ToFloat(In, &Storage[Phase][0], lut ->InputChannels); for (mpe = lut ->Elements; mpe != NULL; mpe = mpe ->Next) { NextPhase = Phase ^ 1; mpe ->EvalPtr(&Storage[Phase][0], &Storage[NextPhase][0], mpe); Phase = NextPhase; } FromFloatTo16(&Storage[Phase][0], Out, lut ->OutputChannels); } // Does evaluate the LUT on cmsFloat32Number-basis. static void _LUTevalFloat(register const cmsFloat32Number In[], register cmsFloat32Number Out[], const void* D) { cmsPipeline* lut = (cmsPipeline*) D; cmsStage *mpe; cmsFloat32Number Storage[2][MAX_STAGE_CHANNELS]; int Phase = 0, NextPhase; memmove(&Storage[Phase][0], In, lut ->InputChannels * sizeof(cmsFloat32Number)); for (mpe = lut ->Elements; mpe != NULL; mpe = mpe ->Next) { NextPhase = Phase ^ 1; mpe ->EvalPtr(&Storage[Phase][0], &Storage[NextPhase][0], mpe); Phase = NextPhase; } memmove(Out, &Storage[Phase][0], lut ->OutputChannels * sizeof(cmsFloat32Number)); } // LUT Creation & Destruction cmsPipeline* CMSEXPORT cmsPipelineAlloc(cmsContext ContextID, cmsUInt32Number InputChannels, cmsUInt32Number OutputChannels) { cmsPipeline* NewLUT; if (InputChannels >= cmsMAXCHANNELS || OutputChannels >= cmsMAXCHANNELS) return NULL; NewLUT = (cmsPipeline*) _cmsMallocZero(ContextID, sizeof(cmsPipeline)); if (NewLUT == NULL) return NULL; NewLUT -> InputChannels = InputChannels; NewLUT -> OutputChannels = OutputChannels; NewLUT ->Eval16Fn = _LUTeval16; NewLUT ->EvalFloatFn = _LUTevalFloat; NewLUT ->DupDataFn = NULL; NewLUT ->FreeDataFn = NULL; NewLUT ->Data = NewLUT; NewLUT ->ContextID = ContextID; BlessLUT(NewLUT); return NewLUT; } cmsContext CMSEXPORT cmsGetPipelineContextID(const cmsPipeline* lut) { _cmsAssert(lut != NULL); return lut ->ContextID; } cmsUInt32Number CMSEXPORT cmsPipelineInputChannels(const cmsPipeline* lut) { _cmsAssert(lut != NULL); return lut ->InputChannels; } cmsUInt32Number CMSEXPORT cmsPipelineOutputChannels(const cmsPipeline* lut) { _cmsAssert(lut != NULL); return lut ->OutputChannels; } // Free a profile elements LUT void CMSEXPORT cmsPipelineFree(cmsPipeline* lut) { cmsStage *mpe, *Next; if (lut == NULL) return; for (mpe = lut ->Elements; mpe != NULL; mpe = Next) { Next = mpe ->Next; cmsStageFree(mpe); } if (lut ->FreeDataFn) lut ->FreeDataFn(lut ->ContextID, lut ->Data); _cmsFree(lut ->ContextID, lut); } // Default to evaluate the LUT on 16 bit-basis. void CMSEXPORT cmsPipelineEval16(const cmsUInt16Number In[], cmsUInt16Number Out[], const cmsPipeline* lut) { _cmsAssert(lut != NULL); lut ->Eval16Fn(In, Out, lut->Data); } // Does evaluate the LUT on cmsFloat32Number-basis. void CMSEXPORT cmsPipelineEvalFloat(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsPipeline* lut) { _cmsAssert(lut != NULL); lut ->EvalFloatFn(In, Out, lut); } // Duplicates a LUT cmsPipeline* CMSEXPORT cmsPipelineDup(const cmsPipeline* lut) { cmsPipeline* NewLUT; cmsStage *NewMPE, *Anterior = NULL, *mpe; cmsBool First = TRUE; if (lut == NULL) return NULL; NewLUT = cmsPipelineAlloc(lut ->ContextID, lut ->InputChannels, lut ->OutputChannels); if (NewLUT == NULL) return NULL; for (mpe = lut ->Elements; mpe != NULL; mpe = mpe ->Next) { NewMPE = cmsStageDup(mpe); if (NewMPE == NULL) { cmsPipelineFree(NewLUT); return NULL; } if (First) { NewLUT ->Elements = NewMPE; First = FALSE; } else { Anterior ->Next = NewMPE; } Anterior = NewMPE; } NewLUT ->Eval16Fn = lut ->Eval16Fn; NewLUT ->EvalFloatFn = lut ->EvalFloatFn; NewLUT ->DupDataFn = lut ->DupDataFn; NewLUT ->FreeDataFn = lut ->FreeDataFn; if (NewLUT ->DupDataFn != NULL) NewLUT ->Data = NewLUT ->DupDataFn(lut ->ContextID, lut->Data); NewLUT ->SaveAs8Bits = lut ->SaveAs8Bits; BlessLUT(NewLUT); return NewLUT; } int CMSEXPORT cmsPipelineInsertStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage* mpe) { cmsStage* Anterior = NULL, *pt; if (lut == NULL || mpe == NULL) return FALSE; switch (loc) { case cmsAT_BEGIN: mpe ->Next = lut ->Elements; lut ->Elements = mpe; break; case cmsAT_END: if (lut ->Elements == NULL) lut ->Elements = mpe; else { for (pt = lut ->Elements; pt != NULL; pt = pt -> Next) Anterior = pt; Anterior ->Next = mpe; mpe ->Next = NULL; } break; default:; return FALSE; } BlessLUT(lut); return TRUE; } // Unlink an element and return the pointer to it void CMSEXPORT cmsPipelineUnlinkStage(cmsPipeline* lut, cmsStageLoc loc, cmsStage** mpe) { cmsStage *Anterior, *pt, *Last; cmsStage *Unlinked = NULL; // If empty LUT, there is nothing to remove if (lut ->Elements == NULL) { if (mpe) *mpe = NULL; return; } // On depending on the strategy... switch (loc) { case cmsAT_BEGIN: { cmsStage* elem = lut ->Elements; lut ->Elements = elem -> Next; elem ->Next = NULL; Unlinked = elem; } break; case cmsAT_END: Anterior = Last = NULL; for (pt = lut ->Elements; pt != NULL; pt = pt -> Next) { Anterior = Last; Last = pt; } Unlinked = Last; // Next already points to NULL // Truncate the chain if (Anterior) Anterior ->Next = NULL; else lut ->Elements = NULL; break; default:; } if (mpe) *mpe = Unlinked; else cmsStageFree(Unlinked); BlessLUT(lut); } // Concatenate two LUT into a new single one cmsBool CMSEXPORT cmsPipelineCat(cmsPipeline* l1, const cmsPipeline* l2) { cmsStage* mpe; // If both LUTS does not have elements, we need to inherit // the number of channels if (l1 ->Elements == NULL && l2 ->Elements == NULL) { l1 ->InputChannels = l2 ->InputChannels; l1 ->OutputChannels = l2 ->OutputChannels; } // Cat second for (mpe = l2 ->Elements; mpe != NULL; mpe = mpe ->Next) { // We have to dup each element if (!cmsPipelineInsertStage(l1, cmsAT_END, cmsStageDup(mpe))) return FALSE; } BlessLUT(l1); return TRUE; } cmsBool CMSEXPORT cmsPipelineSetSaveAs8bitsFlag(cmsPipeline* lut, cmsBool On) { cmsBool Anterior = lut ->SaveAs8Bits; lut ->SaveAs8Bits = On; return Anterior; } cmsStage* CMSEXPORT cmsPipelineGetPtrToFirstStage(const cmsPipeline* lut) { return lut ->Elements; } cmsStage* CMSEXPORT cmsPipelineGetPtrToLastStage(const cmsPipeline* lut) { cmsStage *mpe, *Anterior = NULL; for (mpe = lut ->Elements; mpe != NULL; mpe = mpe ->Next) Anterior = mpe; return Anterior; } cmsUInt32Number CMSEXPORT cmsPipelineStageCount(const cmsPipeline* lut) { cmsStage *mpe; cmsUInt32Number n; for (n=0, mpe = lut ->Elements; mpe != NULL; mpe = mpe ->Next) n++; return n; } // This function may be used to set the optional evaluator and a block of private data. If private data is being used, an optional // duplicator and free functions should also be specified in order to duplicate the LUT construct. Use NULL to inhibit such functionality. void CMSEXPORT _cmsPipelineSetOptimizationParameters(cmsPipeline* Lut, _cmsOPTeval16Fn Eval16, void* PrivateData, _cmsFreeUserDataFn FreePrivateDataFn, _cmsDupUserDataFn DupPrivateDataFn) { Lut ->Eval16Fn = Eval16; Lut ->DupDataFn = DupPrivateDataFn; Lut ->FreeDataFn = FreePrivateDataFn; Lut ->Data = PrivateData; } // ----------------------------------------------------------- Reverse interpolation // Here's how it goes. The derivative Df(x) of the function f is the linear // transformation that best approximates f near the point x. It can be represented // by a matrix A whose entries are the partial derivatives of the components of f // with respect to all the coordinates. This is know as the Jacobian // // The best linear approximation to f is given by the matrix equation: // // y-y0 = A (x-x0) // // So, if x0 is a good "guess" for the zero of f, then solving for the zero of this // linear approximation will give a "better guess" for the zero of f. Thus let y=0, // and since y0=f(x0) one can solve the above equation for x. This leads to the // Newton's method formula: // // xn+1 = xn - A-1 f(xn) // // where xn+1 denotes the (n+1)-st guess, obtained from the n-th guess xn in the // fashion described above. Iterating this will give better and better approximations // if you have a "good enough" initial guess. #define JACOBIAN_EPSILON 0.001f #define INVERSION_MAX_ITERATIONS 30 // Increment with reflexion on boundary static void IncDelta(cmsFloat32Number *Val) { if (*Val < (1.0 - JACOBIAN_EPSILON)) *Val += JACOBIAN_EPSILON; else *Val -= JACOBIAN_EPSILON; } // Euclidean distance between two vectors of n elements each one static cmsFloat32Number EuclideanDistance(cmsFloat32Number a[], cmsFloat32Number b[], int n) { cmsFloat32Number sum = 0; int i; for (i=0; i < n; i++) { cmsFloat32Number dif = b[i] - a[i]; sum += dif * dif; } return sqrtf(sum); } // Evaluate a LUT in reverse direction. It only searches on 3->3 LUT. Uses Newton method // // x1 <- x - [J(x)]^-1 * f(x) // // lut: The LUT on where to do the search // Target: LabK, 3 values of Lab plus destination K which is fixed // Result: The obtained CMYK // Hint: Location where begin the search cmsBool CMSEXPORT cmsPipelineEvalReverseFloat(cmsFloat32Number Target[], cmsFloat32Number Result[], cmsFloat32Number Hint[], const cmsPipeline* lut) { cmsUInt32Number i, j; cmsFloat64Number error, LastError = 1E20; cmsFloat32Number fx[4], x[4], xd[4], fxd[4]; cmsVEC3 tmp, tmp2; cmsMAT3 Jacobian; // Only 3->3 and 4->3 are supported if (lut ->InputChannels != 3 && lut ->InputChannels != 4) return FALSE; if (lut ->OutputChannels != 3) return FALSE; // Take the hint as starting point if specified if (Hint == NULL) { // Begin at any point, we choose 1/3 of CMY axis x[0] = x[1] = x[2] = 0.3f; } else { // Only copy 3 channels from hint... for (j=0; j < 3; j++) x[j] = Hint[j]; } // If Lut is 4-dimensions, then grab target[3], which is fixed if (lut ->InputChannels == 4) { x[3] = Target[3]; } else x[3] = 0; // To keep lint happy // Iterate for (i = 0; i < INVERSION_MAX_ITERATIONS; i++) { // Get beginning fx cmsPipelineEvalFloat(x, fx, lut); // Compute error error = EuclideanDistance(fx, Target, 3); // If not convergent, return last safe value if (error >= LastError) break; // Keep latest values LastError = error; for (j=0; j < lut ->InputChannels; j++) Result[j] = x[j]; // Found an exact match? if (error <= 0) break; // Obtain slope (the Jacobian) for (j = 0; j < 3; j++) { xd[0] = x[0]; xd[1] = x[1]; xd[2] = x[2]; xd[3] = x[3]; // Keep fixed channel IncDelta(&xd[j]); cmsPipelineEvalFloat(xd, fxd, lut); Jacobian.v[0].n[j] = ((fxd[0] - fx[0]) / JACOBIAN_EPSILON); Jacobian.v[1].n[j] = ((fxd[1] - fx[1]) / JACOBIAN_EPSILON); Jacobian.v[2].n[j] = ((fxd[2] - fx[2]) / JACOBIAN_EPSILON); } // Solve system tmp2.n[0] = fx[0] - Target[0]; tmp2.n[1] = fx[1] - Target[1]; tmp2.n[2] = fx[2] - Target[2]; if (!_cmsMAT3solve(&tmp, &Jacobian, &tmp2)) return FALSE; // Move our guess x[0] -= (cmsFloat32Number) tmp.n[0]; x[1] -= (cmsFloat32Number) tmp.n[1]; x[2] -= (cmsFloat32Number) tmp.n[2]; // Some clipping.... for (j=0; j < 3; j++) { if (x[j] < 0) x[j] = 0; else if (x[j] > 1.0) x[j] = 1.0; } } return TRUE; } lcms2-2.5/src/cmsio1.c0000644002406300000240000010260412163060730014054 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Read tags using low-level functions, provides necessary glue code to adapt versions, etc. // LUT tags static const cmsTagSignature Device2PCS16[] = {cmsSigAToB0Tag, // Perceptual cmsSigAToB1Tag, // Relative colorimetric cmsSigAToB2Tag, // Saturation cmsSigAToB1Tag }; // Absolute colorimetric static const cmsTagSignature Device2PCSFloat[] = {cmsSigDToB0Tag, // Perceptual cmsSigDToB1Tag, // Relative colorimetric cmsSigDToB2Tag, // Saturation cmsSigDToB3Tag }; // Absolute colorimetric static const cmsTagSignature PCS2Device16[] = {cmsSigBToA0Tag, // Perceptual cmsSigBToA1Tag, // Relative colorimetric cmsSigBToA2Tag, // Saturation cmsSigBToA1Tag }; // Absolute colorimetric static const cmsTagSignature PCS2DeviceFloat[] = {cmsSigBToD0Tag, // Perceptual cmsSigBToD1Tag, // Relative colorimetric cmsSigBToD2Tag, // Saturation cmsSigBToD3Tag }; // Absolute colorimetric // Factors to convert from 1.15 fixed point to 0..1.0 range and vice-versa #define InpAdj (1.0/MAX_ENCODEABLE_XYZ) // (65536.0/(65535.0*2.0)) #define OutpAdj (MAX_ENCODEABLE_XYZ) // ((2.0*65535.0)/65536.0) // Several resources for gray conversions. static const cmsFloat64Number GrayInputMatrix[] = { (InpAdj*cmsD50X), (InpAdj*cmsD50Y), (InpAdj*cmsD50Z) }; static const cmsFloat64Number OneToThreeInputMatrix[] = { 1, 1, 1 }; static const cmsFloat64Number PickYMatrix[] = { 0, (OutpAdj*cmsD50Y), 0 }; static const cmsFloat64Number PickLstarMatrix[] = { 1, 0, 0 }; // Get a media white point fixing some issues found in certain old profiles cmsBool _cmsReadMediaWhitePoint(cmsCIEXYZ* Dest, cmsHPROFILE hProfile) { cmsCIEXYZ* Tag; _cmsAssert(Dest != NULL); Tag = (cmsCIEXYZ*) cmsReadTag(hProfile, cmsSigMediaWhitePointTag); // If no wp, take D50 if (Tag == NULL) { *Dest = *cmsD50_XYZ(); return TRUE; } // V2 display profiles should give D50 if (cmsGetEncodedICCversion(hProfile) < 0x4000000) { if (cmsGetDeviceClass(hProfile) == cmsSigDisplayClass) { *Dest = *cmsD50_XYZ(); return TRUE; } } // All seems ok *Dest = *Tag; return TRUE; } // Chromatic adaptation matrix. Fix some issues as well cmsBool _cmsReadCHAD(cmsMAT3* Dest, cmsHPROFILE hProfile) { cmsMAT3* Tag; _cmsAssert(Dest != NULL); Tag = (cmsMAT3*) cmsReadTag(hProfile, cmsSigChromaticAdaptationTag); if (Tag != NULL) { *Dest = *Tag; return TRUE; } // No CHAD available, default it to identity _cmsMAT3identity(Dest); // V2 display profiles should give D50 if (cmsGetEncodedICCversion(hProfile) < 0x4000000) { if (cmsGetDeviceClass(hProfile) == cmsSigDisplayClass) { cmsCIEXYZ* White = (cmsCIEXYZ*) cmsReadTag(hProfile, cmsSigMediaWhitePointTag); if (White == NULL) { _cmsMAT3identity(Dest); return TRUE; } return _cmsAdaptationMatrix(Dest, NULL, White, cmsD50_XYZ()); } } return TRUE; } // Auxiliar, read colorants as a MAT3 structure. Used by any function that needs a matrix-shaper static cmsBool ReadICCMatrixRGB2XYZ(cmsMAT3* r, cmsHPROFILE hProfile) { cmsCIEXYZ *PtrRed, *PtrGreen, *PtrBlue; _cmsAssert(r != NULL); PtrRed = (cmsCIEXYZ *) cmsReadTag(hProfile, cmsSigRedColorantTag); PtrGreen = (cmsCIEXYZ *) cmsReadTag(hProfile, cmsSigGreenColorantTag); PtrBlue = (cmsCIEXYZ *) cmsReadTag(hProfile, cmsSigBlueColorantTag); if (PtrRed == NULL || PtrGreen == NULL || PtrBlue == NULL) return FALSE; _cmsVEC3init(&r -> v[0], PtrRed -> X, PtrGreen -> X, PtrBlue -> X); _cmsVEC3init(&r -> v[1], PtrRed -> Y, PtrGreen -> Y, PtrBlue -> Y); _cmsVEC3init(&r -> v[2], PtrRed -> Z, PtrGreen -> Z, PtrBlue -> Z); return TRUE; } // Gray input pipeline static cmsPipeline* BuildGrayInputMatrixPipeline(cmsHPROFILE hProfile) { cmsToneCurve *GrayTRC; cmsPipeline* Lut; cmsContext ContextID = cmsGetProfileContextID(hProfile); GrayTRC = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigGrayTRCTag); if (GrayTRC == NULL) return NULL; Lut = cmsPipelineAlloc(ContextID, 1, 3); if (Lut == NULL) goto Error; if (cmsGetPCS(hProfile) == cmsSigLabData) { // In this case we implement the profile as an identity matrix plus 3 tone curves cmsUInt16Number Zero[2] = { 0x8080, 0x8080 }; cmsToneCurve* EmptyTab; cmsToneCurve* LabCurves[3]; EmptyTab = cmsBuildTabulatedToneCurve16(ContextID, 2, Zero); if (EmptyTab == NULL) goto Error; LabCurves[0] = GrayTRC; LabCurves[1] = EmptyTab; LabCurves[2] = EmptyTab; if (!cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocMatrix(ContextID, 3, 1, OneToThreeInputMatrix, NULL)) || !cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, 3, LabCurves))) { cmsFreeToneCurve(EmptyTab); goto Error; } cmsFreeToneCurve(EmptyTab); } else { if (!cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, 1, &GrayTRC)) || !cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocMatrix(ContextID, 3, 1, GrayInputMatrix, NULL))) goto Error; } return Lut; Error: cmsFreeToneCurve(GrayTRC); cmsPipelineFree(Lut); return NULL; } // RGB Matrix shaper static cmsPipeline* BuildRGBInputMatrixShaper(cmsHPROFILE hProfile) { cmsPipeline* Lut; cmsMAT3 Mat; cmsToneCurve *Shapes[3]; cmsContext ContextID = cmsGetProfileContextID(hProfile); int i, j; if (!ReadICCMatrixRGB2XYZ(&Mat, hProfile)) return NULL; // XYZ PCS in encoded in 1.15 format, and the matrix output comes in 0..0xffff range, so // we need to adjust the output by a factor of (0x10000/0xffff) to put data in // a 1.16 range, and then a >> 1 to obtain 1.15. The total factor is (65536.0)/(65535.0*2) for (i=0; i < 3; i++) for (j=0; j < 3; j++) Mat.v[i].n[j] *= InpAdj; Shapes[0] = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigRedTRCTag); Shapes[1] = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigGreenTRCTag); Shapes[2] = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigBlueTRCTag); if (!Shapes[0] || !Shapes[1] || !Shapes[2]) return NULL; Lut = cmsPipelineAlloc(ContextID, 3, 3); if (Lut != NULL) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, 3, Shapes)) || !cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocMatrix(ContextID, 3, 3, (cmsFloat64Number*) &Mat, NULL))) goto Error; // Note that it is certainly possible a single profile would have a LUT based // tag for output working in lab and a matrix-shaper for the fallback cases. // This is not allowed by the spec, but this code is tolerant to those cases if (cmsGetPCS(hProfile) == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocXYZ2Lab(ContextID))) goto Error; } } return Lut; Error: cmsPipelineFree(Lut); return NULL; } // Read the DToAX tag, adjusting the encoding of Lab or XYZ if neded static cmsPipeline* _cmsReadFloatInputTag(cmsHPROFILE hProfile, cmsTagSignature tagFloat) { cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsPipeline* Lut = cmsPipelineDup((cmsPipeline*) cmsReadTag(hProfile, tagFloat)); cmsColorSpaceSignature spc = cmsGetColorSpace(hProfile); cmsColorSpaceSignature PCS = cmsGetPCS(hProfile); if (Lut == NULL) return NULL; // input and output of transform are in lcms 0..1 encoding. If XYZ or Lab spaces are used, // these need to be normalized into the appropriate ranges (Lab = 100,0,0, XYZ=1.0,1.0,1.0) if ( spc == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageNormalizeToLabFloat(ContextID))) goto Error; } else if (spc == cmsSigXYZData) { if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageNormalizeToXyzFloat(ContextID))) goto Error; } if ( PCS == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageNormalizeFromLabFloat(ContextID))) goto Error; } else if( PCS == cmsSigXYZData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageNormalizeFromXyzFloat(ContextID))) goto Error; } return Lut; Error: cmsPipelineFree(Lut); return NULL; } // Read and create a BRAND NEW MPE LUT from a given profile. All stuff dependent of version, etc // is adjusted here in order to create a LUT that takes care of all those details cmsPipeline* _cmsReadInputLUT(cmsHPROFILE hProfile, int Intent) { cmsTagTypeSignature OriginalType; cmsTagSignature tag16 = Device2PCS16[Intent]; cmsTagSignature tagFloat = Device2PCSFloat[Intent]; cmsContext ContextID = cmsGetProfileContextID(hProfile); // On named color, take the appropiate tag if (cmsGetDeviceClass(hProfile) == cmsSigNamedColorClass) { cmsPipeline* Lut; cmsNAMEDCOLORLIST* nc = (cmsNAMEDCOLORLIST*) cmsReadTag(hProfile, cmsSigNamedColor2Tag); if (nc == NULL) return NULL; Lut = cmsPipelineAlloc(ContextID, 0, 0); if (Lut == NULL) { cmsFreeNamedColorList(nc); return NULL; } if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageAllocNamedColor(nc, TRUE)) || !cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocLabV2ToV4(ContextID))) { cmsPipelineFree(Lut); return NULL; } return Lut; } if (cmsIsTag(hProfile, tagFloat)) { // Float tag takes precedence // Floating point LUT are always V4, but the encoding range is no // longer 0..1.0, so we need to add an stage depending on the color space return _cmsReadFloatInputTag(hProfile, tagFloat); } // Revert to perceptual if no tag is found if (!cmsIsTag(hProfile, tag16)) { tag16 = Device2PCS16[0]; } if (cmsIsTag(hProfile, tag16)) { // Is there any LUT-Based table? // Check profile version and LUT type. Do the necessary adjustments if needed // First read the tag cmsPipeline* Lut = (cmsPipeline*) cmsReadTag(hProfile, tag16); if (Lut == NULL) return NULL; // After reading it, we have now info about the original type OriginalType = _cmsGetTagTrueType(hProfile, tag16); // The profile owns the Lut, so we need to copy it Lut = cmsPipelineDup(Lut); // We need to adjust data only for Lab16 on output if (OriginalType != cmsSigLut16Type || cmsGetPCS(hProfile) != cmsSigLabData) return Lut; // If the input is Lab, add also a conversion at the begin if (cmsGetColorSpace(hProfile) == cmsSigLabData && !cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageAllocLabV4ToV2(ContextID))) goto Error; // Add a matrix for conversion V2 to V4 Lab PCS if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocLabV2ToV4(ContextID))) goto Error; return Lut; Error: cmsPipelineFree(Lut); return NULL; } // Lut was not found, try to create a matrix-shaper // Check if this is a grayscale profile. if (cmsGetColorSpace(hProfile) == cmsSigGrayData) { // if so, build appropiate conversion tables. // The tables are the PCS iluminant, scaled across GrayTRC return BuildGrayInputMatrixPipeline(hProfile); } // Not gray, create a normal matrix-shaper return BuildRGBInputMatrixShaper(hProfile); } // --------------------------------------------------------------------------------------------------------------- // Gray output pipeline. // XYZ -> Gray or Lab -> Gray. Since we only know the GrayTRC, we need to do some assumptions. Gray component will be // given by Y on XYZ PCS and by L* on Lab PCS, Both across inverse TRC curve. // The complete pipeline on XYZ is Matrix[3:1] -> Tone curve and in Lab Matrix[3:1] -> Tone Curve as well. static cmsPipeline* BuildGrayOutputPipeline(cmsHPROFILE hProfile) { cmsToneCurve *GrayTRC, *RevGrayTRC; cmsPipeline* Lut; cmsContext ContextID = cmsGetProfileContextID(hProfile); GrayTRC = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigGrayTRCTag); if (GrayTRC == NULL) return NULL; RevGrayTRC = cmsReverseToneCurve(GrayTRC); if (RevGrayTRC == NULL) return NULL; Lut = cmsPipelineAlloc(ContextID, 3, 1); if (Lut == NULL) { cmsFreeToneCurve(RevGrayTRC); return NULL; } if (cmsGetPCS(hProfile) == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocMatrix(ContextID, 1, 3, PickLstarMatrix, NULL))) goto Error; } else { if (!cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocMatrix(ContextID, 1, 3, PickYMatrix, NULL))) goto Error; } if (!cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, 1, &RevGrayTRC))) goto Error; cmsFreeToneCurve(RevGrayTRC); return Lut; Error: cmsFreeToneCurve(RevGrayTRC); cmsPipelineFree(Lut); return NULL; } static cmsPipeline* BuildRGBOutputMatrixShaper(cmsHPROFILE hProfile) { cmsPipeline* Lut; cmsToneCurve *Shapes[3], *InvShapes[3]; cmsMAT3 Mat, Inv; int i, j; cmsContext ContextID = cmsGetProfileContextID(hProfile); if (!ReadICCMatrixRGB2XYZ(&Mat, hProfile)) return NULL; if (!_cmsMAT3inverse(&Mat, &Inv)) return NULL; // XYZ PCS in encoded in 1.15 format, and the matrix input should come in 0..0xffff range, so // we need to adjust the input by a << 1 to obtain a 1.16 fixed and then by a factor of // (0xffff/0x10000) to put data in 0..0xffff range. Total factor is (2.0*65535.0)/65536.0; for (i=0; i < 3; i++) for (j=0; j < 3; j++) Inv.v[i].n[j] *= OutpAdj; Shapes[0] = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigRedTRCTag); Shapes[1] = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigGreenTRCTag); Shapes[2] = (cmsToneCurve *) cmsReadTag(hProfile, cmsSigBlueTRCTag); if (!Shapes[0] || !Shapes[1] || !Shapes[2]) return NULL; InvShapes[0] = cmsReverseToneCurve(Shapes[0]); InvShapes[1] = cmsReverseToneCurve(Shapes[1]); InvShapes[2] = cmsReverseToneCurve(Shapes[2]); if (!InvShapes[0] || !InvShapes[1] || !InvShapes[2]) { return NULL; } Lut = cmsPipelineAlloc(ContextID, 3, 3); if (Lut != NULL) { // Note that it is certainly possible a single profile would have a LUT based // tag for output working in lab and a matrix-shaper for the fallback cases. // This is not allowed by the spec, but this code is tolerant to those cases if (cmsGetPCS(hProfile) == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocLab2XYZ(ContextID))) goto Error; } if (!cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocMatrix(ContextID, 3, 3, (cmsFloat64Number*) &Inv, NULL)) || !cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocToneCurves(ContextID, 3, InvShapes))) goto Error; } cmsFreeToneCurveTriple(InvShapes); return Lut; Error: cmsFreeToneCurveTriple(InvShapes); cmsPipelineFree(Lut); return NULL; } // Change CLUT interpolation to trilinear static void ChangeInterpolationToTrilinear(cmsPipeline* Lut) { cmsStage* Stage; for (Stage = cmsPipelineGetPtrToFirstStage(Lut); Stage != NULL; Stage = cmsStageNext(Stage)) { if (cmsStageType(Stage) == cmsSigCLutElemType) { _cmsStageCLutData* CLUT = (_cmsStageCLutData*) Stage ->Data; CLUT ->Params->dwFlags |= CMS_LERP_FLAGS_TRILINEAR; _cmsSetInterpolationRoutine(CLUT ->Params); } } } // Read the DToAX tag, adjusting the encoding of Lab or XYZ if neded static cmsPipeline* _cmsReadFloatOutputTag(cmsHPROFILE hProfile, cmsTagSignature tagFloat) { cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsPipeline* Lut = cmsPipelineDup((cmsPipeline*) cmsReadTag(hProfile, tagFloat)); cmsColorSpaceSignature PCS = cmsGetPCS(hProfile); cmsColorSpaceSignature dataSpace = cmsGetColorSpace(hProfile); if (Lut == NULL) return NULL; // If PCS is Lab or XYZ, the floating point tag is accepting data in the space encoding, // and since the formatter has already accomodated to 0..1.0, we should undo this change if ( PCS == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageNormalizeToLabFloat(ContextID))) goto Error; } else if (PCS == cmsSigXYZData) { if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageNormalizeToXyzFloat(ContextID))) goto Error; } // the output can be Lab or XYZ, in which case normalisation is needed on the end of the pipeline if ( dataSpace == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageNormalizeFromLabFloat(ContextID))) goto Error; } else if (dataSpace == cmsSigXYZData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageNormalizeFromXyzFloat(ContextID))) goto Error; } return Lut; Error: cmsPipelineFree(Lut); return NULL; } // Create an output MPE LUT from agiven profile. Version mismatches are handled here cmsPipeline* _cmsReadOutputLUT(cmsHPROFILE hProfile, int Intent) { cmsTagTypeSignature OriginalType; cmsTagSignature tag16 = PCS2Device16[Intent]; cmsTagSignature tagFloat = PCS2DeviceFloat[Intent]; cmsContext ContextID = cmsGetProfileContextID(hProfile); if (cmsIsTag(hProfile, tagFloat)) { // Float tag takes precedence // Floating point LUT are always V4 return _cmsReadFloatOutputTag(hProfile, tagFloat); } // Revert to perceptual if no tag is found if (!cmsIsTag(hProfile, tag16)) { tag16 = PCS2Device16[0]; } if (cmsIsTag(hProfile, tag16)) { // Is there any LUT-Based table? // Check profile version and LUT type. Do the necessary adjustments if needed // First read the tag cmsPipeline* Lut = (cmsPipeline*) cmsReadTag(hProfile, tag16); if (Lut == NULL) return NULL; // After reading it, we have info about the original type OriginalType = _cmsGetTagTrueType(hProfile, tag16); // The profile owns the Lut, so we need to copy it Lut = cmsPipelineDup(Lut); if (Lut == NULL) return NULL; // Now it is time for a controversial stuff. I found that for 3D LUTS using // Lab used as indexer space, trilinear interpolation should be used if (cmsGetPCS(hProfile) == cmsSigLabData) ChangeInterpolationToTrilinear(Lut); // We need to adjust data only for Lab and Lut16 type if (OriginalType != cmsSigLut16Type || cmsGetPCS(hProfile) != cmsSigLabData) return Lut; // Add a matrix for conversion V4 to V2 Lab PCS if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageAllocLabV4ToV2(ContextID))) goto Error; // If the output is Lab, add also a conversion at the end if (cmsGetColorSpace(hProfile) == cmsSigLabData) if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocLabV2ToV4(ContextID))) goto Error; return Lut; Error: cmsPipelineFree(Lut); return NULL; } // Lut not found, try to create a matrix-shaper // Check if this is a grayscale profile. if (cmsGetColorSpace(hProfile) == cmsSigGrayData) { // if so, build appropiate conversion tables. // The tables are the PCS iluminant, scaled across GrayTRC return BuildGrayOutputPipeline(hProfile); } // Not gray, create a normal matrix-shaper, which only operates in XYZ space return BuildRGBOutputMatrixShaper(hProfile); } // --------------------------------------------------------------------------------------------------------------- // Read the AToD0 tag, adjusting the encoding of Lab or XYZ if neded static cmsPipeline* _cmsReadFloatDevicelinkTag(cmsHPROFILE hProfile, cmsTagSignature tagFloat) { cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsPipeline* Lut = cmsPipelineDup((cmsPipeline*) cmsReadTag(hProfile, tagFloat)); cmsColorSpaceSignature PCS = cmsGetPCS(hProfile); cmsColorSpaceSignature spc = cmsGetColorSpace(hProfile); if (Lut == NULL) return NULL; if (spc == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageNormalizeToLabFloat(ContextID))) goto Error; } else if (spc == cmsSigXYZData) { if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageNormalizeToXyzFloat(ContextID))) goto Error; } if (PCS == cmsSigLabData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageNormalizeFromLabFloat(ContextID))) goto Error; } else if (PCS == cmsSigXYZData) { if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageNormalizeFromXyzFloat(ContextID))) goto Error; } return Lut; Error: cmsPipelineFree(Lut); return NULL; } // This one includes abstract profiles as well. Matrix-shaper cannot be obtained on that device class. The // tag name here may default to AToB0 cmsPipeline* _cmsReadDevicelinkLUT(cmsHPROFILE hProfile, int Intent) { cmsPipeline* Lut; cmsTagTypeSignature OriginalType; cmsTagSignature tag16 = Device2PCS16[Intent]; cmsTagSignature tagFloat = Device2PCSFloat[Intent]; cmsContext ContextID = cmsGetProfileContextID(hProfile); // On named color, take the appropiate tag if (cmsGetDeviceClass(hProfile) == cmsSigNamedColorClass) { cmsNAMEDCOLORLIST* nc = (cmsNAMEDCOLORLIST*) cmsReadTag(hProfile, cmsSigNamedColor2Tag); if (nc == NULL) return NULL; Lut = cmsPipelineAlloc(ContextID, 0, 0); if (Lut == NULL) goto Error; if (!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageAllocNamedColor(nc, FALSE))) goto Error; if (cmsGetColorSpace(hProfile) == cmsSigLabData) if (!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocLabV2ToV4(ContextID))) goto Error; return Lut; Error: cmsPipelineFree(Lut); cmsFreeNamedColorList(nc); return NULL; } if (cmsIsTag(hProfile, tagFloat)) { // Float tag takes precedence // Floating point LUT are always V return _cmsReadFloatDevicelinkTag(hProfile, tagFloat); } tagFloat = Device2PCSFloat[0]; if (cmsIsTag(hProfile, tagFloat)) { return cmsPipelineDup((cmsPipeline*) cmsReadTag(hProfile, tagFloat)); } if (!cmsIsTag(hProfile, tag16)) { // Is there any LUT-Based table? tag16 = Device2PCS16[0]; if (!cmsIsTag(hProfile, tag16)) return NULL; } // Check profile version and LUT type. Do the necessary adjustments if needed // Read the tag Lut = (cmsPipeline*) cmsReadTag(hProfile, tag16); if (Lut == NULL) return NULL; // The profile owns the Lut, so we need to copy it Lut = cmsPipelineDup(Lut); if (Lut == NULL) return NULL; // Now it is time for a controversial stuff. I found that for 3D LUTS using // Lab used as indexer space, trilinear interpolation should be used if (cmsGetColorSpace(hProfile) == cmsSigLabData) ChangeInterpolationToTrilinear(Lut); // After reading it, we have info about the original type OriginalType = _cmsGetTagTrueType(hProfile, tag16); // We need to adjust data for Lab16 on output if (OriginalType != cmsSigLut16Type) return Lut; // Here it is possible to get Lab on both sides if (cmsGetPCS(hProfile) == cmsSigLabData) { if(!cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageAllocLabV4ToV2(ContextID))) goto Error2; } if (cmsGetColorSpace(hProfile) == cmsSigLabData) { if(!cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocLabV2ToV4(ContextID))) goto Error2; } return Lut; Error2: cmsPipelineFree(Lut); return NULL; } // --------------------------------------------------------------------------------------------------------------- // Returns TRUE if the profile is implemented as matrix-shaper cmsBool CMSEXPORT cmsIsMatrixShaper(cmsHPROFILE hProfile) { switch (cmsGetColorSpace(hProfile)) { case cmsSigGrayData: return cmsIsTag(hProfile, cmsSigGrayTRCTag); case cmsSigRgbData: return (cmsIsTag(hProfile, cmsSigRedColorantTag) && cmsIsTag(hProfile, cmsSigGreenColorantTag) && cmsIsTag(hProfile, cmsSigBlueColorantTag) && cmsIsTag(hProfile, cmsSigRedTRCTag) && cmsIsTag(hProfile, cmsSigGreenTRCTag) && cmsIsTag(hProfile, cmsSigBlueTRCTag)); default: return FALSE; } } // Returns TRUE if the intent is implemented as CLUT cmsBool CMSEXPORT cmsIsCLUT(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection) { const cmsTagSignature* TagTable; // For devicelinks, the supported intent is that one stated in the header if (cmsGetDeviceClass(hProfile) == cmsSigLinkClass) { return (cmsGetHeaderRenderingIntent(hProfile) == Intent); } switch (UsedDirection) { case LCMS_USED_AS_INPUT: TagTable = Device2PCS16; break; case LCMS_USED_AS_OUTPUT:TagTable = PCS2Device16; break; // For proofing, we need rel. colorimetric in output. Let's do some recursion case LCMS_USED_AS_PROOF: return cmsIsIntentSupported(hProfile, Intent, LCMS_USED_AS_INPUT) && cmsIsIntentSupported(hProfile, INTENT_RELATIVE_COLORIMETRIC, LCMS_USED_AS_OUTPUT); default: cmsSignalError(cmsGetProfileContextID(hProfile), cmsERROR_RANGE, "Unexpected direction (%d)", UsedDirection); return FALSE; } return cmsIsTag(hProfile, TagTable[Intent]); } // Return info about supported intents cmsBool CMSEXPORT cmsIsIntentSupported(cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number UsedDirection) { if (cmsIsCLUT(hProfile, Intent, UsedDirection)) return TRUE; // Is there any matrix-shaper? If so, the intent is supported. This is a bit odd, since V2 matrix shaper // does not fully support relative colorimetric because they cannot deal with non-zero black points, but // many profiles claims that, and this is certainly not true for V4 profiles. Lets answer "yes" no matter // the accuracy would be less than optimal in rel.col and v2 case. return cmsIsMatrixShaper(hProfile); } // --------------------------------------------------------------------------------------------------------------- // Read both, profile sequence description and profile sequence id if present. Then combine both to // create qa unique structure holding both. Shame on ICC to store things in such complicated way. cmsSEQ* _cmsReadProfileSequence(cmsHPROFILE hProfile) { cmsSEQ* ProfileSeq; cmsSEQ* ProfileId; cmsSEQ* NewSeq; cmsUInt32Number i; // Take profile sequence description first ProfileSeq = (cmsSEQ*) cmsReadTag(hProfile, cmsSigProfileSequenceDescTag); // Take profile sequence ID ProfileId = (cmsSEQ*) cmsReadTag(hProfile, cmsSigProfileSequenceIdTag); if (ProfileSeq == NULL && ProfileId == NULL) return NULL; if (ProfileSeq == NULL) return cmsDupProfileSequenceDescription(ProfileId); if (ProfileId == NULL) return cmsDupProfileSequenceDescription(ProfileSeq); // We have to mix both together. For that they must agree if (ProfileSeq ->n != ProfileId ->n) return cmsDupProfileSequenceDescription(ProfileSeq); NewSeq = cmsDupProfileSequenceDescription(ProfileSeq); // Ok, proceed to the mixing if (NewSeq != NULL) { for (i=0; i < ProfileSeq ->n; i++) { memmove(&NewSeq ->seq[i].ProfileID, &ProfileId ->seq[i].ProfileID, sizeof(cmsProfileID)); NewSeq ->seq[i].Description = cmsMLUdup(ProfileId ->seq[i].Description); } } return NewSeq; } // Dump the contents of profile sequence in both tags (if v4 available) cmsBool _cmsWriteProfileSequence(cmsHPROFILE hProfile, const cmsSEQ* seq) { if (!cmsWriteTag(hProfile, cmsSigProfileSequenceDescTag, seq)) return FALSE; if (cmsGetProfileVersion(hProfile) >= 4.0) { if (!cmsWriteTag(hProfile, cmsSigProfileSequenceIdTag, seq)) return FALSE; } return TRUE; } // Auxiliar, read and duplicate a MLU if found. static cmsMLU* GetMLUFromProfile(cmsHPROFILE h, cmsTagSignature sig) { cmsMLU* mlu = (cmsMLU*) cmsReadTag(h, sig); if (mlu == NULL) return NULL; return cmsMLUdup(mlu); } // Create a sequence description out of an array of profiles cmsSEQ* _cmsCompileProfileSequence(cmsContext ContextID, cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[]) { cmsUInt32Number i; cmsSEQ* seq = cmsAllocProfileSequenceDescription(ContextID, nProfiles); if (seq == NULL) return NULL; for (i=0; i < nProfiles; i++) { cmsPSEQDESC* ps = &seq ->seq[i]; cmsHPROFILE h = hProfiles[i]; cmsTechnologySignature* techpt; cmsGetHeaderAttributes(h, &ps ->attributes); cmsGetHeaderProfileID(h, ps ->ProfileID.ID8); ps ->deviceMfg = cmsGetHeaderManufacturer(h); ps ->deviceModel = cmsGetHeaderModel(h); techpt = (cmsTechnologySignature*) cmsReadTag(h, cmsSigTechnologyTag); if (techpt == NULL) ps ->technology = (cmsTechnologySignature) 0; else ps ->technology = *techpt; ps ->Manufacturer = GetMLUFromProfile(h, cmsSigDeviceMfgDescTag); ps ->Model = GetMLUFromProfile(h, cmsSigDeviceModelDescTag); ps ->Description = GetMLUFromProfile(h, cmsSigProfileDescriptionTag); } return seq; } // ------------------------------------------------------------------------------------------------------------------- static const cmsMLU* GetInfo(cmsHPROFILE hProfile, cmsInfoType Info) { cmsTagSignature sig; switch (Info) { case cmsInfoDescription: sig = cmsSigProfileDescriptionTag; break; case cmsInfoManufacturer: sig = cmsSigDeviceMfgDescTag; break; case cmsInfoModel: sig = cmsSigDeviceModelDescTag; break; case cmsInfoCopyright: sig = cmsSigCopyrightTag; break; default: return NULL; } return (cmsMLU*) cmsReadTag(hProfile, sig); } cmsUInt32Number CMSEXPORT cmsGetProfileInfo(cmsHPROFILE hProfile, cmsInfoType Info, const char LanguageCode[3], const char CountryCode[3], wchar_t* Buffer, cmsUInt32Number BufferSize) { const cmsMLU* mlu = GetInfo(hProfile, Info); if (mlu == NULL) return 0; return cmsMLUgetWide(mlu, LanguageCode, CountryCode, Buffer, BufferSize); } cmsUInt32Number CMSEXPORT cmsGetProfileInfoASCII(cmsHPROFILE hProfile, cmsInfoType Info, const char LanguageCode[3], const char CountryCode[3], char* Buffer, cmsUInt32Number BufferSize) { const cmsMLU* mlu = GetInfo(hProfile, Info); if (mlu == NULL) return 0; return cmsMLUgetASCII(mlu, LanguageCode, CountryCode, Buffer, BufferSize); } lcms2-2.5/src/cmsmtrx.c0000644002406300000240000001306312163060730014356 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" #define DSWAP(x, y) {cmsFloat64Number tmp = (x); (x)=(y); (y)=tmp;} // Initiate a vector void CMSEXPORT _cmsVEC3init(cmsVEC3* r, cmsFloat64Number x, cmsFloat64Number y, cmsFloat64Number z) { r -> n[VX] = x; r -> n[VY] = y; r -> n[VZ] = z; } // Vector substraction void CMSEXPORT _cmsVEC3minus(cmsVEC3* r, const cmsVEC3* a, const cmsVEC3* b) { r -> n[VX] = a -> n[VX] - b -> n[VX]; r -> n[VY] = a -> n[VY] - b -> n[VY]; r -> n[VZ] = a -> n[VZ] - b -> n[VZ]; } // Vector cross product void CMSEXPORT _cmsVEC3cross(cmsVEC3* r, const cmsVEC3* u, const cmsVEC3* v) { r ->n[VX] = u->n[VY] * v->n[VZ] - v->n[VY] * u->n[VZ]; r ->n[VY] = u->n[VZ] * v->n[VX] - v->n[VZ] * u->n[VX]; r ->n[VZ] = u->n[VX] * v->n[VY] - v->n[VX] * u->n[VY]; } // Vector dot product cmsFloat64Number CMSEXPORT _cmsVEC3dot(const cmsVEC3* u, const cmsVEC3* v) { return u->n[VX] * v->n[VX] + u->n[VY] * v->n[VY] + u->n[VZ] * v->n[VZ]; } // Euclidean length cmsFloat64Number CMSEXPORT _cmsVEC3length(const cmsVEC3* a) { return sqrt(a ->n[VX] * a ->n[VX] + a ->n[VY] * a ->n[VY] + a ->n[VZ] * a ->n[VZ]); } // Euclidean distance cmsFloat64Number CMSEXPORT _cmsVEC3distance(const cmsVEC3* a, const cmsVEC3* b) { cmsFloat64Number d1 = a ->n[VX] - b ->n[VX]; cmsFloat64Number d2 = a ->n[VY] - b ->n[VY]; cmsFloat64Number d3 = a ->n[VZ] - b ->n[VZ]; return sqrt(d1*d1 + d2*d2 + d3*d3); } // 3x3 Identity void CMSEXPORT _cmsMAT3identity(cmsMAT3* a) { _cmsVEC3init(&a-> v[0], 1.0, 0.0, 0.0); _cmsVEC3init(&a-> v[1], 0.0, 1.0, 0.0); _cmsVEC3init(&a-> v[2], 0.0, 0.0, 1.0); } static cmsBool CloseEnough(cmsFloat64Number a, cmsFloat64Number b) { return fabs(b - a) < (1.0 / 65535.0); } cmsBool CMSEXPORT _cmsMAT3isIdentity(const cmsMAT3* a) { cmsMAT3 Identity; int i, j; _cmsMAT3identity(&Identity); for (i=0; i < 3; i++) for (j=0; j < 3; j++) if (!CloseEnough(a ->v[i].n[j], Identity.v[i].n[j])) return FALSE; return TRUE; } // Multiply two matrices void CMSEXPORT _cmsMAT3per(cmsMAT3* r, const cmsMAT3* a, const cmsMAT3* b) { #define ROWCOL(i, j) \ a->v[i].n[0]*b->v[0].n[j] + a->v[i].n[1]*b->v[1].n[j] + a->v[i].n[2]*b->v[2].n[j] _cmsVEC3init(&r-> v[0], ROWCOL(0,0), ROWCOL(0,1), ROWCOL(0,2)); _cmsVEC3init(&r-> v[1], ROWCOL(1,0), ROWCOL(1,1), ROWCOL(1,2)); _cmsVEC3init(&r-> v[2], ROWCOL(2,0), ROWCOL(2,1), ROWCOL(2,2)); #undef ROWCOL //(i, j) } // Inverse of a matrix b = a^(-1) cmsBool CMSEXPORT _cmsMAT3inverse(const cmsMAT3* a, cmsMAT3* b) { cmsFloat64Number det, c0, c1, c2; c0 = a -> v[1].n[1]*a -> v[2].n[2] - a -> v[1].n[2]*a -> v[2].n[1]; c1 = -a -> v[1].n[0]*a -> v[2].n[2] + a -> v[1].n[2]*a -> v[2].n[0]; c2 = a -> v[1].n[0]*a -> v[2].n[1] - a -> v[1].n[1]*a -> v[2].n[0]; det = a -> v[0].n[0]*c0 + a -> v[0].n[1]*c1 + a -> v[0].n[2]*c2; if (fabs(det) < MATRIX_DET_TOLERANCE) return FALSE; // singular matrix; can't invert b -> v[0].n[0] = c0/det; b -> v[0].n[1] = (a -> v[0].n[2]*a -> v[2].n[1] - a -> v[0].n[1]*a -> v[2].n[2])/det; b -> v[0].n[2] = (a -> v[0].n[1]*a -> v[1].n[2] - a -> v[0].n[2]*a -> v[1].n[1])/det; b -> v[1].n[0] = c1/det; b -> v[1].n[1] = (a -> v[0].n[0]*a -> v[2].n[2] - a -> v[0].n[2]*a -> v[2].n[0])/det; b -> v[1].n[2] = (a -> v[0].n[2]*a -> v[1].n[0] - a -> v[0].n[0]*a -> v[1].n[2])/det; b -> v[2].n[0] = c2/det; b -> v[2].n[1] = (a -> v[0].n[1]*a -> v[2].n[0] - a -> v[0].n[0]*a -> v[2].n[1])/det; b -> v[2].n[2] = (a -> v[0].n[0]*a -> v[1].n[1] - a -> v[0].n[1]*a -> v[1].n[0])/det; return TRUE; } // Solve a system in the form Ax = b cmsBool CMSEXPORT _cmsMAT3solve(cmsVEC3* x, cmsMAT3* a, cmsVEC3* b) { cmsMAT3 m, a_1; memmove(&m, a, sizeof(cmsMAT3)); if (!_cmsMAT3inverse(&m, &a_1)) return FALSE; // Singular matrix _cmsMAT3eval(x, &a_1, b); return TRUE; } // Evaluate a vector across a matrix void CMSEXPORT _cmsMAT3eval(cmsVEC3* r, const cmsMAT3* a, const cmsVEC3* v) { r->n[VX] = a->v[0].n[VX]*v->n[VX] + a->v[0].n[VY]*v->n[VY] + a->v[0].n[VZ]*v->n[VZ]; r->n[VY] = a->v[1].n[VX]*v->n[VX] + a->v[1].n[VY]*v->n[VY] + a->v[1].n[VZ]*v->n[VZ]; r->n[VZ] = a->v[2].n[VX]*v->n[VX] + a->v[2].n[VY]*v->n[VY] + a->v[2].n[VZ]*v->n[VZ]; } lcms2-2.5/src/cmsopt.c0000644002406300000240000015600612163060730014173 0ustar mariamausers //--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" //---------------------------------------------------------------------------------- // Optimization for 8 bits, Shaper-CLUT (3 inputs only) typedef struct { cmsContext ContextID; const cmsInterpParams* p; // Tetrahedrical interpolation parameters. This is a not-owned pointer. cmsUInt16Number rx[256], ry[256], rz[256]; cmsUInt32Number X0[256], Y0[256], Z0[256]; // Precomputed nodes and offsets for 8-bit input data } Prelin8Data; // Generic optimization for 16 bits Shaper-CLUT-Shaper (any inputs) typedef struct { cmsContext ContextID; // Number of channels int nInputs; int nOutputs; _cmsInterpFn16 EvalCurveIn16[MAX_INPUT_DIMENSIONS]; // The maximum number of input channels is known in advance cmsInterpParams* ParamsCurveIn16[MAX_INPUT_DIMENSIONS]; _cmsInterpFn16 EvalCLUT; // The evaluator for 3D grid const cmsInterpParams* CLUTparams; // (not-owned pointer) _cmsInterpFn16* EvalCurveOut16; // Points to an array of curve evaluators in 16 bits (not-owned pointer) cmsInterpParams** ParamsCurveOut16; // Points to an array of references to interpolation params (not-owned pointer) } Prelin16Data; // Optimization for matrix-shaper in 8 bits. Numbers are operated in n.14 signed, tables are stored in 1.14 fixed typedef cmsInt32Number cmsS1Fixed14Number; // Note that this may hold more than 16 bits! #define DOUBLE_TO_1FIXED14(x) ((cmsS1Fixed14Number) floor((x) * 16384.0 + 0.5)) typedef struct { cmsContext ContextID; cmsS1Fixed14Number Shaper1R[256]; // from 0..255 to 1.14 (0.0...1.0) cmsS1Fixed14Number Shaper1G[256]; cmsS1Fixed14Number Shaper1B[256]; cmsS1Fixed14Number Mat[3][3]; // n.14 to n.14 (needs a saturation after that) cmsS1Fixed14Number Off[3]; cmsUInt16Number Shaper2R[16385]; // 1.14 to 0..255 cmsUInt16Number Shaper2G[16385]; cmsUInt16Number Shaper2B[16385]; } MatShaper8Data; // Curves, optimization is shared between 8 and 16 bits typedef struct { cmsContext ContextID; int nCurves; // Number of curves int nElements; // Elements in curves cmsUInt16Number** Curves; // Points to a dynamically allocated array } Curves16Data; // Simple optimizations ---------------------------------------------------------------------------------------------------------- // Remove an element in linked chain static void _RemoveElement(cmsStage** head) { cmsStage* mpe = *head; cmsStage* next = mpe ->Next; *head = next; cmsStageFree(mpe); } // Remove all identities in chain. Note that pt actually is a double pointer to the element that holds the pointer. static cmsBool _Remove1Op(cmsPipeline* Lut, cmsStageSignature UnaryOp) { cmsStage** pt = &Lut ->Elements; cmsBool AnyOpt = FALSE; while (*pt != NULL) { if ((*pt) ->Implements == UnaryOp) { _RemoveElement(pt); AnyOpt = TRUE; } else pt = &((*pt) -> Next); } return AnyOpt; } // Same, but only if two adjacent elements are found static cmsBool _Remove2Op(cmsPipeline* Lut, cmsStageSignature Op1, cmsStageSignature Op2) { cmsStage** pt1; cmsStage** pt2; cmsBool AnyOpt = FALSE; pt1 = &Lut ->Elements; if (*pt1 == NULL) return AnyOpt; while (*pt1 != NULL) { pt2 = &((*pt1) -> Next); if (*pt2 == NULL) return AnyOpt; if ((*pt1) ->Implements == Op1 && (*pt2) ->Implements == Op2) { _RemoveElement(pt2); _RemoveElement(pt1); AnyOpt = TRUE; } else pt1 = &((*pt1) -> Next); } return AnyOpt; } // Preoptimize just gets rif of no-ops coming paired. Conversion from v2 to v4 followed // by a v4 to v2 and vice-versa. The elements are then discarded. static cmsBool PreOptimize(cmsPipeline* Lut) { cmsBool AnyOpt = FALSE, Opt; do { Opt = FALSE; // Remove all identities Opt |= _Remove1Op(Lut, cmsSigIdentityElemType); // Remove XYZ2Lab followed by Lab2XYZ Opt |= _Remove2Op(Lut, cmsSigXYZ2LabElemType, cmsSigLab2XYZElemType); // Remove Lab2XYZ followed by XYZ2Lab Opt |= _Remove2Op(Lut, cmsSigLab2XYZElemType, cmsSigXYZ2LabElemType); // Remove V4 to V2 followed by V2 to V4 Opt |= _Remove2Op(Lut, cmsSigLabV4toV2, cmsSigLabV2toV4); // Remove V2 to V4 followed by V4 to V2 Opt |= _Remove2Op(Lut, cmsSigLabV2toV4, cmsSigLabV4toV2); // Remove float pcs Lab conversions Opt |= _Remove2Op(Lut, cmsSigLab2FloatPCS, cmsSigFloatPCS2Lab); // Remove float pcs Lab conversions Opt |= _Remove2Op(Lut, cmsSigXYZ2FloatPCS, cmsSigFloatPCS2XYZ); if (Opt) AnyOpt = TRUE; } while (Opt); return AnyOpt; } static void Eval16nop1D(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const struct _cms_interp_struc* p) { Output[0] = Input[0]; cmsUNUSED_PARAMETER(p); } static void PrelinEval16(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const void* D) { Prelin16Data* p16 = (Prelin16Data*) D; cmsUInt16Number StageABC[MAX_INPUT_DIMENSIONS]; cmsUInt16Number StageDEF[cmsMAXCHANNELS]; int i; for (i=0; i < p16 ->nInputs; i++) { p16 ->EvalCurveIn16[i](&Input[i], &StageABC[i], p16 ->ParamsCurveIn16[i]); } p16 ->EvalCLUT(StageABC, StageDEF, p16 ->CLUTparams); for (i=0; i < p16 ->nOutputs; i++) { p16 ->EvalCurveOut16[i](&StageDEF[i], &Output[i], p16 ->ParamsCurveOut16[i]); } } static void PrelinOpt16free(cmsContext ContextID, void* ptr) { Prelin16Data* p16 = (Prelin16Data*) ptr; _cmsFree(ContextID, p16 ->EvalCurveOut16); _cmsFree(ContextID, p16 ->ParamsCurveOut16); _cmsFree(ContextID, p16); } static void* Prelin16dup(cmsContext ContextID, const void* ptr) { Prelin16Data* p16 = (Prelin16Data*) ptr; Prelin16Data* Duped = _cmsDupMem(ContextID, p16, sizeof(Prelin16Data)); if (Duped == NULL) return NULL; Duped ->EvalCurveOut16 = _cmsDupMem(ContextID, p16 ->EvalCurveOut16, p16 ->nOutputs * sizeof(_cmsInterpFn16)); Duped ->ParamsCurveOut16 = _cmsDupMem(ContextID, p16 ->ParamsCurveOut16, p16 ->nOutputs * sizeof(cmsInterpParams* )); return Duped; } static Prelin16Data* PrelinOpt16alloc(cmsContext ContextID, const cmsInterpParams* ColorMap, int nInputs, cmsToneCurve** In, int nOutputs, cmsToneCurve** Out ) { int i; Prelin16Data* p16 = _cmsMallocZero(ContextID, sizeof(Prelin16Data)); if (p16 == NULL) return NULL; p16 ->nInputs = nInputs; p16 -> nOutputs = nOutputs; for (i=0; i < nInputs; i++) { if (In == NULL) { p16 -> ParamsCurveIn16[i] = NULL; p16 -> EvalCurveIn16[i] = Eval16nop1D; } else { p16 -> ParamsCurveIn16[i] = In[i] ->InterpParams; p16 -> EvalCurveIn16[i] = p16 ->ParamsCurveIn16[i]->Interpolation.Lerp16; } } p16 ->CLUTparams = ColorMap; p16 ->EvalCLUT = ColorMap ->Interpolation.Lerp16; p16 -> EvalCurveOut16 = (_cmsInterpFn16*) _cmsCalloc(ContextID, nOutputs, sizeof(_cmsInterpFn16)); p16 -> ParamsCurveOut16 = (cmsInterpParams**) _cmsCalloc(ContextID, nOutputs, sizeof(cmsInterpParams* )); for (i=0; i < nOutputs; i++) { if (Out == NULL) { p16 ->ParamsCurveOut16[i] = NULL; p16 -> EvalCurveOut16[i] = Eval16nop1D; } else { p16 ->ParamsCurveOut16[i] = Out[i] ->InterpParams; p16 -> EvalCurveOut16[i] = p16 ->ParamsCurveOut16[i]->Interpolation.Lerp16; } } return p16; } // Resampling --------------------------------------------------------------------------------- #define PRELINEARIZATION_POINTS 4096 // Sampler implemented by another LUT. This is a clean way to precalculate the devicelink 3D CLUT for // almost any transform. We use floating point precision and then convert from floating point to 16 bits. static int XFormSampler16(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { cmsPipeline* Lut = (cmsPipeline*) Cargo; cmsFloat32Number InFloat[cmsMAXCHANNELS], OutFloat[cmsMAXCHANNELS]; cmsUInt32Number i; _cmsAssert(Lut -> InputChannels < cmsMAXCHANNELS); _cmsAssert(Lut -> OutputChannels < cmsMAXCHANNELS); // From 16 bit to floating point for (i=0; i < Lut ->InputChannels; i++) InFloat[i] = (cmsFloat32Number) (In[i] / 65535.0); // Evaluate in floating point cmsPipelineEvalFloat(InFloat, OutFloat, Lut); // Back to 16 bits representation for (i=0; i < Lut ->OutputChannels; i++) Out[i] = _cmsQuickSaturateWord(OutFloat[i] * 65535.0); // Always succeed return TRUE; } // Try to see if the curves of a given MPE are linear static cmsBool AllCurvesAreLinear(cmsStage* mpe) { cmsToneCurve** Curves; cmsUInt32Number i, n; Curves = _cmsStageGetPtrToCurveSet(mpe); if (Curves == NULL) return FALSE; n = cmsStageOutputChannels(mpe); for (i=0; i < n; i++) { if (!cmsIsToneCurveLinear(Curves[i])) return FALSE; } return TRUE; } // This function replaces a specific node placed in "At" by the "Value" numbers. Its purpose // is to fix scum dot on broken profiles/transforms. Works on 1, 3 and 4 channels static cmsBool PatchLUT(cmsStage* CLUT, cmsUInt16Number At[], cmsUInt16Number Value[], int nChannelsOut, int nChannelsIn) { _cmsStageCLutData* Grid = (_cmsStageCLutData*) CLUT ->Data; cmsInterpParams* p16 = Grid ->Params; cmsFloat64Number px, py, pz, pw; int x0, y0, z0, w0; int i, index; if (CLUT -> Type != cmsSigCLutElemType) { cmsSignalError(CLUT->ContextID, cmsERROR_INTERNAL, "(internal) Attempt to PatchLUT on non-lut stage"); return FALSE; } if (nChannelsIn == 4) { px = ((cmsFloat64Number) At[0] * (p16->Domain[0])) / 65535.0; py = ((cmsFloat64Number) At[1] * (p16->Domain[1])) / 65535.0; pz = ((cmsFloat64Number) At[2] * (p16->Domain[2])) / 65535.0; pw = ((cmsFloat64Number) At[3] * (p16->Domain[3])) / 65535.0; x0 = (int) floor(px); y0 = (int) floor(py); z0 = (int) floor(pz); w0 = (int) floor(pw); if (((px - x0) != 0) || ((py - y0) != 0) || ((pz - z0) != 0) || ((pw - w0) != 0)) return FALSE; // Not on exact node index = p16 -> opta[3] * x0 + p16 -> opta[2] * y0 + p16 -> opta[1] * z0 + p16 -> opta[0] * w0; } else if (nChannelsIn == 3) { px = ((cmsFloat64Number) At[0] * (p16->Domain[0])) / 65535.0; py = ((cmsFloat64Number) At[1] * (p16->Domain[1])) / 65535.0; pz = ((cmsFloat64Number) At[2] * (p16->Domain[2])) / 65535.0; x0 = (int) floor(px); y0 = (int) floor(py); z0 = (int) floor(pz); if (((px - x0) != 0) || ((py - y0) != 0) || ((pz - z0) != 0)) return FALSE; // Not on exact node index = p16 -> opta[2] * x0 + p16 -> opta[1] * y0 + p16 -> opta[0] * z0; } else if (nChannelsIn == 1) { px = ((cmsFloat64Number) At[0] * (p16->Domain[0])) / 65535.0; x0 = (int) floor(px); if (((px - x0) != 0)) return FALSE; // Not on exact node index = p16 -> opta[0] * x0; } else { cmsSignalError(CLUT->ContextID, cmsERROR_INTERNAL, "(internal) %d Channels are not supported on PatchLUT", nChannelsIn); return FALSE; } for (i=0; i < nChannelsOut; i++) Grid -> Tab.T[index + i] = Value[i]; return TRUE; } // Auxiliar, to see if two values are equal or very different static cmsBool WhitesAreEqual(int n, cmsUInt16Number White1[], cmsUInt16Number White2[] ) { int i; for (i=0; i < n; i++) { if (abs(White1[i] - White2[i]) > 0xf000) return TRUE; // Values are so extremly different that the fixup should be avoided if (White1[i] != White2[i]) return FALSE; } return TRUE; } // Locate the node for the white point and fix it to pure white in order to avoid scum dot. static cmsBool FixWhiteMisalignment(cmsPipeline* Lut, cmsColorSpaceSignature EntryColorSpace, cmsColorSpaceSignature ExitColorSpace) { cmsUInt16Number *WhitePointIn, *WhitePointOut; cmsUInt16Number WhiteIn[cmsMAXCHANNELS], WhiteOut[cmsMAXCHANNELS], ObtainedOut[cmsMAXCHANNELS]; cmsUInt32Number i, nOuts, nIns; cmsStage *PreLin = NULL, *CLUT = NULL, *PostLin = NULL; if (!_cmsEndPointsBySpace(EntryColorSpace, &WhitePointIn, NULL, &nIns)) return FALSE; if (!_cmsEndPointsBySpace(ExitColorSpace, &WhitePointOut, NULL, &nOuts)) return FALSE; // It needs to be fixed? if (Lut ->InputChannels != nIns) return FALSE; if (Lut ->OutputChannels != nOuts) return FALSE; cmsPipelineEval16(WhitePointIn, ObtainedOut, Lut); if (WhitesAreEqual(nOuts, WhitePointOut, ObtainedOut)) return TRUE; // whites already match // Check if the LUT comes as Prelin, CLUT or Postlin. We allow all combinations if (!cmsPipelineCheckAndRetreiveStages(Lut, 3, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType, &PreLin, &CLUT, &PostLin)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 2, cmsSigCurveSetElemType, cmsSigCLutElemType, &PreLin, &CLUT)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 2, cmsSigCLutElemType, cmsSigCurveSetElemType, &CLUT, &PostLin)) if (!cmsPipelineCheckAndRetreiveStages(Lut, 1, cmsSigCLutElemType, &CLUT)) return FALSE; // We need to interpolate white points of both, pre and post curves if (PreLin) { cmsToneCurve** Curves = _cmsStageGetPtrToCurveSet(PreLin); for (i=0; i < nIns; i++) { WhiteIn[i] = cmsEvalToneCurve16(Curves[i], WhitePointIn[i]); } } else { for (i=0; i < nIns; i++) WhiteIn[i] = WhitePointIn[i]; } // If any post-linearization, we need to find how is represented white before the curve, do // a reverse interpolation in this case. if (PostLin) { cmsToneCurve** Curves = _cmsStageGetPtrToCurveSet(PostLin); for (i=0; i < nOuts; i++) { cmsToneCurve* InversePostLin = cmsReverseToneCurve(Curves[i]); WhiteOut[i] = cmsEvalToneCurve16(InversePostLin, WhitePointOut[i]); cmsFreeToneCurve(InversePostLin); } } else { for (i=0; i < nOuts; i++) WhiteOut[i] = WhitePointOut[i]; } // Ok, proceed with patching. May fail and we don't care if it fails PatchLUT(CLUT, WhiteIn, WhiteOut, nOuts, nIns); return TRUE; } // ----------------------------------------------------------------------------------------------------------------------------------------------- // This function creates simple LUT from complex ones. The generated LUT has an optional set of // prelinearization curves, a CLUT of nGridPoints and optional postlinearization tables. // These curves have to exist in the original LUT in order to be used in the simplified output. // Caller may also use the flags to allow this feature. // LUTS with all curves will be simplified to a single curve. Parametric curves are lost. // This function should be used on 16-bits LUTS only, as floating point losses precision when simplified // ----------------------------------------------------------------------------------------------------------------------------------------------- static cmsBool OptimizeByResampling(cmsPipeline** Lut, cmsUInt32Number Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags) { cmsPipeline* Src = NULL; cmsPipeline* Dest = NULL; cmsStage* mpe; cmsStage* CLUT; cmsStage *KeepPreLin = NULL, *KeepPostLin = NULL; int nGridPoints; cmsColorSpaceSignature ColorSpace, OutputColorSpace; cmsStage *NewPreLin = NULL; cmsStage *NewPostLin = NULL; _cmsStageCLutData* DataCLUT; cmsToneCurve** DataSetIn; cmsToneCurve** DataSetOut; Prelin16Data* p16; // This is a loosy optimization! does not apply in floating-point cases if (_cmsFormatterIsFloat(*InputFormat) || _cmsFormatterIsFloat(*OutputFormat)) return FALSE; ColorSpace = _cmsICCcolorSpace(T_COLORSPACE(*InputFormat)); OutputColorSpace = _cmsICCcolorSpace(T_COLORSPACE(*OutputFormat)); nGridPoints = _cmsReasonableGridpointsByColorspace(ColorSpace, *dwFlags); // For empty LUTs, 2 points are enough if (cmsPipelineStageCount(*Lut) == 0) nGridPoints = 2; Src = *Lut; // Named color pipelines cannot be optimized either for (mpe = cmsPipelineGetPtrToFirstStage(Src); mpe != NULL; mpe = cmsStageNext(mpe)) { if (cmsStageType(mpe) == cmsSigNamedColorElemType) return FALSE; } // Allocate an empty LUT Dest = cmsPipelineAlloc(Src ->ContextID, Src ->InputChannels, Src ->OutputChannels); if (!Dest) return FALSE; // Prelinearization tables are kept unless indicated by flags if (*dwFlags & cmsFLAGS_CLUT_PRE_LINEARIZATION) { // Get a pointer to the prelinearization element cmsStage* PreLin = cmsPipelineGetPtrToFirstStage(Src); // Check if suitable if (PreLin ->Type == cmsSigCurveSetElemType) { // Maybe this is a linear tram, so we can avoid the whole stuff if (!AllCurvesAreLinear(PreLin)) { // All seems ok, proceed. NewPreLin = cmsStageDup(PreLin); if(!cmsPipelineInsertStage(Dest, cmsAT_BEGIN, NewPreLin)) goto Error; // Remove prelinearization. Since we have duplicated the curve // in destination LUT, the sampling shoud be applied after this stage. cmsPipelineUnlinkStage(Src, cmsAT_BEGIN, &KeepPreLin); } } } // Allocate the CLUT CLUT = cmsStageAllocCLut16bit(Src ->ContextID, nGridPoints, Src ->InputChannels, Src->OutputChannels, NULL); if (CLUT == NULL) return FALSE; // Add the CLUT to the destination LUT if (!cmsPipelineInsertStage(Dest, cmsAT_END, CLUT)) { goto Error; } // Postlinearization tables are kept unless indicated by flags if (*dwFlags & cmsFLAGS_CLUT_POST_LINEARIZATION) { // Get a pointer to the postlinearization if present cmsStage* PostLin = cmsPipelineGetPtrToLastStage(Src); // Check if suitable if (cmsStageType(PostLin) == cmsSigCurveSetElemType) { // Maybe this is a linear tram, so we can avoid the whole stuff if (!AllCurvesAreLinear(PostLin)) { // All seems ok, proceed. NewPostLin = cmsStageDup(PostLin); if (!cmsPipelineInsertStage(Dest, cmsAT_END, NewPostLin)) goto Error; // In destination LUT, the sampling shoud be applied after this stage. cmsPipelineUnlinkStage(Src, cmsAT_END, &KeepPostLin); } } } // Now its time to do the sampling. We have to ignore pre/post linearization // The source LUT whithout pre/post curves is passed as parameter. if (!cmsStageSampleCLut16bit(CLUT, XFormSampler16, (void*) Src, 0)) { Error: // Ops, something went wrong, Restore stages if (KeepPreLin != NULL) { if (!cmsPipelineInsertStage(Src, cmsAT_BEGIN, KeepPreLin)) { _cmsAssert(0); // This never happens } } if (KeepPostLin != NULL) { if (!cmsPipelineInsertStage(Src, cmsAT_END, KeepPostLin)) { _cmsAssert(0); // This never happens } } cmsPipelineFree(Dest); return FALSE; } // Done. if (KeepPreLin != NULL) cmsStageFree(KeepPreLin); if (KeepPostLin != NULL) cmsStageFree(KeepPostLin); cmsPipelineFree(Src); DataCLUT = (_cmsStageCLutData*) CLUT ->Data; if (NewPreLin == NULL) DataSetIn = NULL; else DataSetIn = ((_cmsStageToneCurvesData*) NewPreLin ->Data) ->TheCurves; if (NewPostLin == NULL) DataSetOut = NULL; else DataSetOut = ((_cmsStageToneCurvesData*) NewPostLin ->Data) ->TheCurves; if (DataSetIn == NULL && DataSetOut == NULL) { _cmsPipelineSetOptimizationParameters(Dest, (_cmsOPTeval16Fn) DataCLUT->Params->Interpolation.Lerp16, DataCLUT->Params, NULL, NULL); } else { p16 = PrelinOpt16alloc(Dest ->ContextID, DataCLUT ->Params, Dest ->InputChannels, DataSetIn, Dest ->OutputChannels, DataSetOut); _cmsPipelineSetOptimizationParameters(Dest, PrelinEval16, (void*) p16, PrelinOpt16free, Prelin16dup); } // Don't fix white on absolute colorimetric if (Intent == INTENT_ABSOLUTE_COLORIMETRIC) *dwFlags |= cmsFLAGS_NOWHITEONWHITEFIXUP; if (!(*dwFlags & cmsFLAGS_NOWHITEONWHITEFIXUP)) { FixWhiteMisalignment(Dest, ColorSpace, OutputColorSpace); } *Lut = Dest; return TRUE; cmsUNUSED_PARAMETER(Intent); } // ----------------------------------------------------------------------------------------------------------------------------------------------- // Fixes the gamma balancing of transform. This is described in my paper "Prelinearization Stages on // Color-Management Application-Specific Integrated Circuits (ASICs)" presented at NIP24. It only works // for RGB transforms. See the paper for more details // ----------------------------------------------------------------------------------------------------------------------------------------------- // Normalize endpoints by slope limiting max and min. This assures endpoints as well. // Descending curves are handled as well. static void SlopeLimiting(cmsToneCurve* g) { int BeginVal, EndVal; int AtBegin = (int) floor((cmsFloat64Number) g ->nEntries * 0.02 + 0.5); // Cutoff at 2% int AtEnd = g ->nEntries - AtBegin - 1; // And 98% cmsFloat64Number Val, Slope, beta; int i; if (cmsIsToneCurveDescending(g)) { BeginVal = 0xffff; EndVal = 0; } else { BeginVal = 0; EndVal = 0xffff; } // Compute slope and offset for begin of curve Val = g ->Table16[AtBegin]; Slope = (Val - BeginVal) / AtBegin; beta = Val - Slope * AtBegin; for (i=0; i < AtBegin; i++) g ->Table16[i] = _cmsQuickSaturateWord(i * Slope + beta); // Compute slope and offset for the end Val = g ->Table16[AtEnd]; Slope = (EndVal - Val) / AtBegin; // AtBegin holds the X interval, which is same in both cases beta = Val - Slope * AtEnd; for (i = AtEnd; i < (int) g ->nEntries; i++) g ->Table16[i] = _cmsQuickSaturateWord(i * Slope + beta); } // Precomputes tables for 8-bit on input devicelink. static Prelin8Data* PrelinOpt8alloc(cmsContext ContextID, const cmsInterpParams* p, cmsToneCurve* G[3]) { int i; cmsUInt16Number Input[3]; cmsS15Fixed16Number v1, v2, v3; Prelin8Data* p8; p8 = _cmsMallocZero(ContextID, sizeof(Prelin8Data)); if (p8 == NULL) return NULL; // Since this only works for 8 bit input, values comes always as x * 257, // we can safely take msb byte (x << 8 + x) for (i=0; i < 256; i++) { if (G != NULL) { // Get 16-bit representation Input[0] = cmsEvalToneCurve16(G[0], FROM_8_TO_16(i)); Input[1] = cmsEvalToneCurve16(G[1], FROM_8_TO_16(i)); Input[2] = cmsEvalToneCurve16(G[2], FROM_8_TO_16(i)); } else { Input[0] = FROM_8_TO_16(i); Input[1] = FROM_8_TO_16(i); Input[2] = FROM_8_TO_16(i); } // Move to 0..1.0 in fixed domain v1 = _cmsToFixedDomain(Input[0] * p -> Domain[0]); v2 = _cmsToFixedDomain(Input[1] * p -> Domain[1]); v3 = _cmsToFixedDomain(Input[2] * p -> Domain[2]); // Store the precalculated table of nodes p8 ->X0[i] = (p->opta[2] * FIXED_TO_INT(v1)); p8 ->Y0[i] = (p->opta[1] * FIXED_TO_INT(v2)); p8 ->Z0[i] = (p->opta[0] * FIXED_TO_INT(v3)); // Store the precalculated table of offsets p8 ->rx[i] = (cmsUInt16Number) FIXED_REST_TO_INT(v1); p8 ->ry[i] = (cmsUInt16Number) FIXED_REST_TO_INT(v2); p8 ->rz[i] = (cmsUInt16Number) FIXED_REST_TO_INT(v3); } p8 ->ContextID = ContextID; p8 ->p = p; return p8; } static void Prelin8free(cmsContext ContextID, void* ptr) { _cmsFree(ContextID, ptr); } static void* Prelin8dup(cmsContext ContextID, const void* ptr) { return _cmsDupMem(ContextID, ptr, sizeof(Prelin8Data)); } // A optimized interpolation for 8-bit input. #define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) static void PrelinEval8(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const void* D) { cmsUInt8Number r, g, b; cmsS15Fixed16Number rx, ry, rz; cmsS15Fixed16Number c0, c1, c2, c3, Rest; int OutChan; register cmsS15Fixed16Number X0, X1, Y0, Y1, Z0, Z1; Prelin8Data* p8 = (Prelin8Data*) D; register const cmsInterpParams* p = p8 ->p; int TotalOut = p -> nOutputs; const cmsUInt16Number* LutTable = p -> Table; r = Input[0] >> 8; g = Input[1] >> 8; b = Input[2] >> 8; X0 = X1 = p8->X0[r]; Y0 = Y1 = p8->Y0[g]; Z0 = Z1 = p8->Z0[b]; rx = p8 ->rx[r]; ry = p8 ->ry[g]; rz = p8 ->rz[b]; X1 = X0 + ((rx == 0) ? 0 : p ->opta[2]); Y1 = Y0 + ((ry == 0) ? 0 : p ->opta[1]); Z1 = Z0 + ((rz == 0) ? 0 : p ->opta[0]); // These are the 6 Tetrahedral for (OutChan=0; OutChan < TotalOut; OutChan++) { c0 = DENS(X0, Y0, Z0); if (rx >= ry && ry >= rz) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z0) - DENS(X1, Y0, Z0); c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (rx >= rz && rz >= ry) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X1, Y0, Z1) - DENS(X1, Y0, Z0); } else if (rz >= rx && rx >= ry) { c1 = DENS(X1, Y0, Z1) - DENS(X0, Y0, Z1); c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else if (ry >= rx && rx >= rz) { c1 = DENS(X1, Y1, Z0) - DENS(X0, Y1, Z0); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (ry >= rz && rz >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X0, Y1, Z1) - DENS(X0, Y1, Z0); } else if (rz >= ry && ry >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z1) - DENS(X0, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else { c1 = c2 = c3 = 0; } Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; Output[OutChan] = (cmsUInt16Number)c0 + ((Rest + (Rest>>16))>>16); } } #undef DENS // Curves that contain wide empty areas are not optimizeable static cmsBool IsDegenerated(const cmsToneCurve* g) { int i, Zeros = 0, Poles = 0; int nEntries = g ->nEntries; for (i=0; i < nEntries; i++) { if (g ->Table16[i] == 0x0000) Zeros++; if (g ->Table16[i] == 0xffff) Poles++; } if (Zeros == 1 && Poles == 1) return FALSE; // For linear tables if (Zeros > (nEntries / 4)) return TRUE; // Degenerated, mostly zeros if (Poles > (nEntries / 4)) return TRUE; // Degenerated, mostly poles return FALSE; } // -------------------------------------------------------------------------------------------------------------- // We need xput over here static cmsBool OptimizeByComputingLinearization(cmsPipeline** Lut, cmsUInt32Number Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags) { cmsPipeline* OriginalLut; int nGridPoints; cmsToneCurve *Trans[cmsMAXCHANNELS], *TransReverse[cmsMAXCHANNELS]; cmsUInt32Number t, i; cmsFloat32Number v, In[cmsMAXCHANNELS], Out[cmsMAXCHANNELS]; cmsBool lIsSuitable, lIsLinear; cmsPipeline* OptimizedLUT = NULL, *LutPlusCurves = NULL; cmsStage* OptimizedCLUTmpe; cmsColorSpaceSignature ColorSpace, OutputColorSpace; cmsStage* OptimizedPrelinMpe; cmsStage* mpe; cmsToneCurve** OptimizedPrelinCurves; _cmsStageCLutData* OptimizedPrelinCLUT; // This is a loosy optimization! does not apply in floating-point cases if (_cmsFormatterIsFloat(*InputFormat) || _cmsFormatterIsFloat(*OutputFormat)) return FALSE; // Only on RGB if (T_COLORSPACE(*InputFormat) != PT_RGB) return FALSE; if (T_COLORSPACE(*OutputFormat) != PT_RGB) return FALSE; // On 16 bits, user has to specify the feature if (!_cmsFormatterIs8bit(*InputFormat)) { if (!(*dwFlags & cmsFLAGS_CLUT_PRE_LINEARIZATION)) return FALSE; } OriginalLut = *Lut; // Named color pipelines cannot be optimized either for (mpe = cmsPipelineGetPtrToFirstStage(OriginalLut); mpe != NULL; mpe = cmsStageNext(mpe)) { if (cmsStageType(mpe) == cmsSigNamedColorElemType) return FALSE; } ColorSpace = _cmsICCcolorSpace(T_COLORSPACE(*InputFormat)); OutputColorSpace = _cmsICCcolorSpace(T_COLORSPACE(*OutputFormat)); nGridPoints = _cmsReasonableGridpointsByColorspace(ColorSpace, *dwFlags); // Empty gamma containers memset(Trans, 0, sizeof(Trans)); memset(TransReverse, 0, sizeof(TransReverse)); for (t = 0; t < OriginalLut ->InputChannels; t++) { Trans[t] = cmsBuildTabulatedToneCurve16(OriginalLut ->ContextID, PRELINEARIZATION_POINTS, NULL); if (Trans[t] == NULL) goto Error; } // Populate the curves for (i=0; i < PRELINEARIZATION_POINTS; i++) { v = (cmsFloat32Number) ((cmsFloat64Number) i / (PRELINEARIZATION_POINTS - 1)); // Feed input with a gray ramp for (t=0; t < OriginalLut ->InputChannels; t++) In[t] = v; // Evaluate the gray value cmsPipelineEvalFloat(In, Out, OriginalLut); // Store result in curve for (t=0; t < OriginalLut ->InputChannels; t++) Trans[t] ->Table16[i] = _cmsQuickSaturateWord(Out[t] * 65535.0); } // Slope-limit the obtained curves for (t = 0; t < OriginalLut ->InputChannels; t++) SlopeLimiting(Trans[t]); // Check for validity lIsSuitable = TRUE; lIsLinear = TRUE; for (t=0; (lIsSuitable && (t < OriginalLut ->InputChannels)); t++) { // Exclude if already linear if (!cmsIsToneCurveLinear(Trans[t])) lIsLinear = FALSE; // Exclude if non-monotonic if (!cmsIsToneCurveMonotonic(Trans[t])) lIsSuitable = FALSE; if (IsDegenerated(Trans[t])) lIsSuitable = FALSE; } // If it is not suitable, just quit if (!lIsSuitable) goto Error; // Invert curves if possible for (t = 0; t < OriginalLut ->InputChannels; t++) { TransReverse[t] = cmsReverseToneCurveEx(PRELINEARIZATION_POINTS, Trans[t]); if (TransReverse[t] == NULL) goto Error; } // Now inset the reversed curves at the begin of transform LutPlusCurves = cmsPipelineDup(OriginalLut); if (LutPlusCurves == NULL) goto Error; if (!cmsPipelineInsertStage(LutPlusCurves, cmsAT_BEGIN, cmsStageAllocToneCurves(OriginalLut ->ContextID, OriginalLut ->InputChannels, TransReverse))) goto Error; // Create the result LUT OptimizedLUT = cmsPipelineAlloc(OriginalLut ->ContextID, OriginalLut ->InputChannels, OriginalLut ->OutputChannels); if (OptimizedLUT == NULL) goto Error; OptimizedPrelinMpe = cmsStageAllocToneCurves(OriginalLut ->ContextID, OriginalLut ->InputChannels, Trans); // Create and insert the curves at the beginning if (!cmsPipelineInsertStage(OptimizedLUT, cmsAT_BEGIN, OptimizedPrelinMpe)) goto Error; // Allocate the CLUT for result OptimizedCLUTmpe = cmsStageAllocCLut16bit(OriginalLut ->ContextID, nGridPoints, OriginalLut ->InputChannels, OriginalLut ->OutputChannels, NULL); // Add the CLUT to the destination LUT if (!cmsPipelineInsertStage(OptimizedLUT, cmsAT_END, OptimizedCLUTmpe)) goto Error; // Resample the LUT if (!cmsStageSampleCLut16bit(OptimizedCLUTmpe, XFormSampler16, (void*) LutPlusCurves, 0)) goto Error; // Free resources for (t = 0; t < OriginalLut ->InputChannels; t++) { if (Trans[t]) cmsFreeToneCurve(Trans[t]); if (TransReverse[t]) cmsFreeToneCurve(TransReverse[t]); } cmsPipelineFree(LutPlusCurves); OptimizedPrelinCurves = _cmsStageGetPtrToCurveSet(OptimizedPrelinMpe); OptimizedPrelinCLUT = (_cmsStageCLutData*) OptimizedCLUTmpe ->Data; // Set the evaluator if 8-bit if (_cmsFormatterIs8bit(*InputFormat)) { Prelin8Data* p8 = PrelinOpt8alloc(OptimizedLUT ->ContextID, OptimizedPrelinCLUT ->Params, OptimizedPrelinCurves); if (p8 == NULL) return FALSE; _cmsPipelineSetOptimizationParameters(OptimizedLUT, PrelinEval8, (void*) p8, Prelin8free, Prelin8dup); } else { Prelin16Data* p16 = PrelinOpt16alloc(OptimizedLUT ->ContextID, OptimizedPrelinCLUT ->Params, 3, OptimizedPrelinCurves, 3, NULL); if (p16 == NULL) return FALSE; _cmsPipelineSetOptimizationParameters(OptimizedLUT, PrelinEval16, (void*) p16, PrelinOpt16free, Prelin16dup); } // Don't fix white on absolute colorimetric if (Intent == INTENT_ABSOLUTE_COLORIMETRIC) *dwFlags |= cmsFLAGS_NOWHITEONWHITEFIXUP; if (!(*dwFlags & cmsFLAGS_NOWHITEONWHITEFIXUP)) { if (!FixWhiteMisalignment(OptimizedLUT, ColorSpace, OutputColorSpace)) { return FALSE; } } // And return the obtained LUT cmsPipelineFree(OriginalLut); *Lut = OptimizedLUT; return TRUE; Error: for (t = 0; t < OriginalLut ->InputChannels; t++) { if (Trans[t]) cmsFreeToneCurve(Trans[t]); if (TransReverse[t]) cmsFreeToneCurve(TransReverse[t]); } if (LutPlusCurves != NULL) cmsPipelineFree(LutPlusCurves); if (OptimizedLUT != NULL) cmsPipelineFree(OptimizedLUT); return FALSE; cmsUNUSED_PARAMETER(Intent); } // Curves optimizer ------------------------------------------------------------------------------------------------------------------ static void CurvesFree(cmsContext ContextID, void* ptr) { Curves16Data* Data = (Curves16Data*) ptr; int i; for (i=0; i < Data -> nCurves; i++) { _cmsFree(ContextID, Data ->Curves[i]); } _cmsFree(ContextID, Data ->Curves); _cmsFree(ContextID, ptr); } static void* CurvesDup(cmsContext ContextID, const void* ptr) { Curves16Data* Data = _cmsDupMem(ContextID, ptr, sizeof(Curves16Data)); int i; if (Data == NULL) return NULL; Data ->Curves = _cmsDupMem(ContextID, Data ->Curves, Data ->nCurves * sizeof(cmsUInt16Number*)); for (i=0; i < Data -> nCurves; i++) { Data ->Curves[i] = _cmsDupMem(ContextID, Data ->Curves[i], Data -> nElements * sizeof(cmsUInt16Number)); } return (void*) Data; } // Precomputes tables for 8-bit on input devicelink. static Curves16Data* CurvesAlloc(cmsContext ContextID, int nCurves, int nElements, cmsToneCurve** G) { int i, j; Curves16Data* c16; c16 = _cmsMallocZero(ContextID, sizeof(Curves16Data)); if (c16 == NULL) return NULL; c16 ->nCurves = nCurves; c16 ->nElements = nElements; c16 ->Curves = _cmsCalloc(ContextID, nCurves, sizeof(cmsUInt16Number*)); if (c16 ->Curves == NULL) return NULL; for (i=0; i < nCurves; i++) { c16->Curves[i] = _cmsCalloc(ContextID, nElements, sizeof(cmsUInt16Number)); if (c16->Curves[i] == NULL) { for (j=0; j < i; j++) { _cmsFree(ContextID, c16->Curves[j]); } _cmsFree(ContextID, c16->Curves); _cmsFree(ContextID, c16); return NULL; } if (nElements == 256) { for (j=0; j < nElements; j++) { c16 ->Curves[i][j] = cmsEvalToneCurve16(G[i], FROM_8_TO_16(j)); } } else { for (j=0; j < nElements; j++) { c16 ->Curves[i][j] = cmsEvalToneCurve16(G[i], (cmsUInt16Number) j); } } } return c16; } static void FastEvaluateCurves8(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register const void* D) { Curves16Data* Data = (Curves16Data*) D; cmsUInt8Number x; int i; for (i=0; i < Data ->nCurves; i++) { x = (In[i] >> 8); Out[i] = Data -> Curves[i][x]; } } static void FastEvaluateCurves16(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register const void* D) { Curves16Data* Data = (Curves16Data*) D; int i; for (i=0; i < Data ->nCurves; i++) { Out[i] = Data -> Curves[i][In[i]]; } } static void FastIdentity16(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register const void* D) { cmsPipeline* Lut = (cmsPipeline*) D; cmsUInt32Number i; for (i=0; i < Lut ->InputChannels; i++) { Out[i] = In[i]; } } // If the target LUT holds only curves, the optimization procedure is to join all those // curves together. That only works on curves and does not work on matrices. static cmsBool OptimizeByJoiningCurves(cmsPipeline** Lut, cmsUInt32Number Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags) { cmsToneCurve** GammaTables = NULL; cmsFloat32Number InFloat[cmsMAXCHANNELS], OutFloat[cmsMAXCHANNELS]; cmsUInt32Number i, j; cmsPipeline* Src = *Lut; cmsPipeline* Dest = NULL; cmsStage* mpe; cmsStage* ObtainedCurves = NULL; // This is a loosy optimization! does not apply in floating-point cases if (_cmsFormatterIsFloat(*InputFormat) || _cmsFormatterIsFloat(*OutputFormat)) return FALSE; // Only curves in this LUT? for (mpe = cmsPipelineGetPtrToFirstStage(Src); mpe != NULL; mpe = cmsStageNext(mpe)) { if (cmsStageType(mpe) != cmsSigCurveSetElemType) return FALSE; } // Allocate an empty LUT Dest = cmsPipelineAlloc(Src ->ContextID, Src ->InputChannels, Src ->OutputChannels); if (Dest == NULL) return FALSE; // Create target curves GammaTables = (cmsToneCurve**) _cmsCalloc(Src ->ContextID, Src ->InputChannels, sizeof(cmsToneCurve*)); if (GammaTables == NULL) goto Error; for (i=0; i < Src ->InputChannels; i++) { GammaTables[i] = cmsBuildTabulatedToneCurve16(Src ->ContextID, PRELINEARIZATION_POINTS, NULL); if (GammaTables[i] == NULL) goto Error; } // Compute 16 bit result by using floating point for (i=0; i < PRELINEARIZATION_POINTS; i++) { for (j=0; j < Src ->InputChannels; j++) InFloat[j] = (cmsFloat32Number) ((cmsFloat64Number) i / (PRELINEARIZATION_POINTS - 1)); cmsPipelineEvalFloat(InFloat, OutFloat, Src); for (j=0; j < Src ->InputChannels; j++) GammaTables[j] -> Table16[i] = _cmsQuickSaturateWord(OutFloat[j] * 65535.0); } ObtainedCurves = cmsStageAllocToneCurves(Src ->ContextID, Src ->InputChannels, GammaTables); if (ObtainedCurves == NULL) goto Error; for (i=0; i < Src ->InputChannels; i++) { cmsFreeToneCurve(GammaTables[i]); GammaTables[i] = NULL; } if (GammaTables != NULL) _cmsFree(Src ->ContextID, GammaTables); // Maybe the curves are linear at the end if (!AllCurvesAreLinear(ObtainedCurves)) { if (!cmsPipelineInsertStage(Dest, cmsAT_BEGIN, ObtainedCurves)) goto Error; // If the curves are to be applied in 8 bits, we can save memory if (_cmsFormatterIs8bit(*InputFormat)) { _cmsStageToneCurvesData* Data = (_cmsStageToneCurvesData*) ObtainedCurves ->Data; Curves16Data* c16 = CurvesAlloc(Dest ->ContextID, Data ->nCurves, 256, Data ->TheCurves); if (c16 == NULL) goto Error; *dwFlags |= cmsFLAGS_NOCACHE; _cmsPipelineSetOptimizationParameters(Dest, FastEvaluateCurves8, c16, CurvesFree, CurvesDup); } else { _cmsStageToneCurvesData* Data = (_cmsStageToneCurvesData*) cmsStageData(ObtainedCurves); Curves16Data* c16 = CurvesAlloc(Dest ->ContextID, Data ->nCurves, 65536, Data ->TheCurves); if (c16 == NULL) goto Error; *dwFlags |= cmsFLAGS_NOCACHE; _cmsPipelineSetOptimizationParameters(Dest, FastEvaluateCurves16, c16, CurvesFree, CurvesDup); } } else { // LUT optimizes to nothing. Set the identity LUT cmsStageFree(ObtainedCurves); if (!cmsPipelineInsertStage(Dest, cmsAT_BEGIN, cmsStageAllocIdentity(Dest ->ContextID, Src ->InputChannels))) goto Error; *dwFlags |= cmsFLAGS_NOCACHE; _cmsPipelineSetOptimizationParameters(Dest, FastIdentity16, (void*) Dest, NULL, NULL); } // We are done. cmsPipelineFree(Src); *Lut = Dest; return TRUE; Error: if (ObtainedCurves != NULL) cmsStageFree(ObtainedCurves); if (GammaTables != NULL) { for (i=0; i < Src ->InputChannels; i++) { if (GammaTables[i] != NULL) cmsFreeToneCurve(GammaTables[i]); } _cmsFree(Src ->ContextID, GammaTables); } if (Dest != NULL) cmsPipelineFree(Dest); return FALSE; cmsUNUSED_PARAMETER(Intent); cmsUNUSED_PARAMETER(InputFormat); cmsUNUSED_PARAMETER(OutputFormat); cmsUNUSED_PARAMETER(dwFlags); } // ------------------------------------------------------------------------------------------------------------------------------------- // LUT is Shaper - Matrix - Matrix - Shaper, which is very frequent when combining two matrix-shaper profiles static void FreeMatShaper(cmsContext ContextID, void* Data) { if (Data != NULL) _cmsFree(ContextID, Data); } static void* DupMatShaper(cmsContext ContextID, const void* Data) { return _cmsDupMem(ContextID, Data, sizeof(MatShaper8Data)); } // A fast matrix-shaper evaluator for 8 bits. This is a bit ticky since I'm using 1.14 signed fixed point // to accomplish some performance. Actually it takes 256x3 16 bits tables and 16385 x 3 tables of 8 bits, // in total about 50K, and the performance boost is huge! static void MatShaperEval16(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register const void* D) { MatShaper8Data* p = (MatShaper8Data*) D; cmsS1Fixed14Number l1, l2, l3, r, g, b; cmsUInt32Number ri, gi, bi; // In this case (and only in this case!) we can use this simplification since // In[] is assured to come from a 8 bit number. (a << 8 | a) ri = In[0] & 0xFF; gi = In[1] & 0xFF; bi = In[2] & 0xFF; // Across first shaper, which also converts to 1.14 fixed point r = p->Shaper1R[ri]; g = p->Shaper1G[gi]; b = p->Shaper1B[bi]; // Evaluate the matrix in 1.14 fixed point l1 = (p->Mat[0][0] * r + p->Mat[0][1] * g + p->Mat[0][2] * b + p->Off[0] + 0x2000) >> 14; l2 = (p->Mat[1][0] * r + p->Mat[1][1] * g + p->Mat[1][2] * b + p->Off[1] + 0x2000) >> 14; l3 = (p->Mat[2][0] * r + p->Mat[2][1] * g + p->Mat[2][2] * b + p->Off[2] + 0x2000) >> 14; // Now we have to clip to 0..1.0 range ri = (l1 < 0) ? 0 : ((l1 > 16384) ? 16384 : l1); gi = (l2 < 0) ? 0 : ((l2 > 16384) ? 16384 : l2); bi = (l3 < 0) ? 0 : ((l3 > 16384) ? 16384 : l3); // And across second shaper, Out[0] = p->Shaper2R[ri]; Out[1] = p->Shaper2G[gi]; Out[2] = p->Shaper2B[bi]; } // This table converts from 8 bits to 1.14 after applying the curve static void FillFirstShaper(cmsS1Fixed14Number* Table, cmsToneCurve* Curve) { int i; cmsFloat32Number R, y; for (i=0; i < 256; i++) { R = (cmsFloat32Number) (i / 255.0); y = cmsEvalToneCurveFloat(Curve, R); Table[i] = DOUBLE_TO_1FIXED14(y); } } // This table converts form 1.14 (being 0x4000 the last entry) to 8 bits after applying the curve static void FillSecondShaper(cmsUInt16Number* Table, cmsToneCurve* Curve, cmsBool Is8BitsOutput) { int i; cmsFloat32Number R, Val; for (i=0; i < 16385; i++) { R = (cmsFloat32Number) (i / 16384.0); Val = cmsEvalToneCurveFloat(Curve, R); // Val comes 0..1.0 if (Is8BitsOutput) { // If 8 bits output, we can optimize further by computing the / 257 part. // first we compute the resulting byte and then we store the byte times // 257. This quantization allows to round very quick by doing a >> 8, but // since the low byte is always equal to msb, we can do a & 0xff and this works! cmsUInt16Number w = _cmsQuickSaturateWord(Val * 65535.0); cmsUInt8Number b = FROM_16_TO_8(w); Table[i] = FROM_8_TO_16(b); } else Table[i] = _cmsQuickSaturateWord(Val * 65535.0); } } // Compute the matrix-shaper structure static cmsBool SetMatShaper(cmsPipeline* Dest, cmsToneCurve* Curve1[3], cmsMAT3* Mat, cmsVEC3* Off, cmsToneCurve* Curve2[3], cmsUInt32Number* OutputFormat) { MatShaper8Data* p; int i, j; cmsBool Is8Bits = _cmsFormatterIs8bit(*OutputFormat); // Allocate a big chuck of memory to store precomputed tables p = (MatShaper8Data*) _cmsMalloc(Dest ->ContextID, sizeof(MatShaper8Data)); if (p == NULL) return FALSE; p -> ContextID = Dest -> ContextID; // Precompute tables FillFirstShaper(p ->Shaper1R, Curve1[0]); FillFirstShaper(p ->Shaper1G, Curve1[1]); FillFirstShaper(p ->Shaper1B, Curve1[2]); FillSecondShaper(p ->Shaper2R, Curve2[0], Is8Bits); FillSecondShaper(p ->Shaper2G, Curve2[1], Is8Bits); FillSecondShaper(p ->Shaper2B, Curve2[2], Is8Bits); // Convert matrix to nFixed14. Note that those values may take more than 16 bits as for (i=0; i < 3; i++) { for (j=0; j < 3; j++) { p ->Mat[i][j] = DOUBLE_TO_1FIXED14(Mat->v[i].n[j]); } } for (i=0; i < 3; i++) { if (Off == NULL) { p ->Off[i] = 0; } else { p ->Off[i] = DOUBLE_TO_1FIXED14(Off->n[i]); } } // Mark as optimized for faster formatter if (Is8Bits) *OutputFormat |= OPTIMIZED_SH(1); // Fill function pointers _cmsPipelineSetOptimizationParameters(Dest, MatShaperEval16, (void*) p, FreeMatShaper, DupMatShaper); return TRUE; } // 8 bits on input allows matrix-shaper boot up to 25 Mpixels per second on RGB. That's fast! // TODO: Allow a third matrix for abs. colorimetric static cmsBool OptimizeMatrixShaper(cmsPipeline** Lut, cmsUInt32Number Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags) { cmsStage* Curve1, *Curve2; cmsStage* Matrix1, *Matrix2; _cmsStageMatrixData* Data1; _cmsStageMatrixData* Data2; cmsMAT3 res; cmsBool IdentityMat; cmsPipeline* Dest, *Src; // Only works on RGB to RGB if (T_CHANNELS(*InputFormat) != 3 || T_CHANNELS(*OutputFormat) != 3) return FALSE; // Only works on 8 bit input if (!_cmsFormatterIs8bit(*InputFormat)) return FALSE; // Seems suitable, proceed Src = *Lut; // Check for shaper-matrix-matrix-shaper structure, that is what this optimizer stands for if (!cmsPipelineCheckAndRetreiveStages(Src, 4, cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType, &Curve1, &Matrix1, &Matrix2, &Curve2)) return FALSE; // Get both matrices Data1 = (_cmsStageMatrixData*) cmsStageData(Matrix1); Data2 = (_cmsStageMatrixData*) cmsStageData(Matrix2); // Input offset should be zero if (Data1 ->Offset != NULL) return FALSE; // Multiply both matrices to get the result _cmsMAT3per(&res, (cmsMAT3*) Data2 ->Double, (cmsMAT3*) Data1 ->Double); // Now the result is in res + Data2 -> Offset. Maybe is a plain identity? IdentityMat = FALSE; if (_cmsMAT3isIdentity(&res) && Data2 ->Offset == NULL) { // We can get rid of full matrix IdentityMat = TRUE; } // Allocate an empty LUT Dest = cmsPipelineAlloc(Src ->ContextID, Src ->InputChannels, Src ->OutputChannels); if (!Dest) return FALSE; // Assamble the new LUT if (!cmsPipelineInsertStage(Dest, cmsAT_BEGIN, cmsStageDup(Curve1))) goto Error; if (!IdentityMat) if (!cmsPipelineInsertStage(Dest, cmsAT_END, cmsStageAllocMatrix(Dest ->ContextID, 3, 3, (const cmsFloat64Number*) &res, Data2 ->Offset))) goto Error; if (!cmsPipelineInsertStage(Dest, cmsAT_END, cmsStageDup(Curve2))) goto Error; // If identity on matrix, we can further optimize the curves, so call the join curves routine if (IdentityMat) { OptimizeByJoiningCurves(&Dest, Intent, InputFormat, OutputFormat, dwFlags); } else { _cmsStageToneCurvesData* mpeC1 = (_cmsStageToneCurvesData*) cmsStageData(Curve1); _cmsStageToneCurvesData* mpeC2 = (_cmsStageToneCurvesData*) cmsStageData(Curve2); // In this particular optimization, cach does not help as it takes more time to deal with // the cach that with the pixel handling *dwFlags |= cmsFLAGS_NOCACHE; // Setup the optimizarion routines SetMatShaper(Dest, mpeC1 ->TheCurves, &res, (cmsVEC3*) Data2 ->Offset, mpeC2->TheCurves, OutputFormat); } cmsPipelineFree(Src); *Lut = Dest; return TRUE; Error: // Leave Src unchanged cmsPipelineFree(Dest); return FALSE; } // ------------------------------------------------------------------------------------------------------------------------------------- // Optimization plug-ins // List of optimizations typedef struct _cmsOptimizationCollection_st { _cmsOPToptimizeFn OptimizePtr; struct _cmsOptimizationCollection_st *Next; } _cmsOptimizationCollection; // The built-in list. We currently implement 4 types of optimizations. Joining of curves, matrix-shaper, linearization and resampling static _cmsOptimizationCollection DefaultOptimization[] = { { OptimizeByJoiningCurves, &DefaultOptimization[1] }, { OptimizeMatrixShaper, &DefaultOptimization[2] }, { OptimizeByComputingLinearization, &DefaultOptimization[3] }, { OptimizeByResampling, NULL } }; // The linked list head static _cmsOptimizationCollection* OptimizationCollection = DefaultOptimization; // Register new ways to optimize cmsBool _cmsRegisterOptimizationPlugin(cmsContext id, cmsPluginBase* Data) { cmsPluginOptimization* Plugin = (cmsPluginOptimization*) Data; _cmsOptimizationCollection* fl; if (Data == NULL) { OptimizationCollection = DefaultOptimization; return TRUE; } // Optimizer callback is required if (Plugin ->OptimizePtr == NULL) return FALSE; fl = (_cmsOptimizationCollection*) _cmsPluginMalloc(id, sizeof(_cmsOptimizationCollection)); if (fl == NULL) return FALSE; // Copy the parameters fl ->OptimizePtr = Plugin ->OptimizePtr; // Keep linked list fl ->Next = OptimizationCollection; OptimizationCollection = fl; // All is ok return TRUE; } // The entry point for LUT optimization cmsBool _cmsOptimizePipeline(cmsPipeline** PtrLut, int Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags) { _cmsOptimizationCollection* Opts; cmsBool AnySuccess = FALSE; // A CLUT is being asked, so force this specific optimization if (*dwFlags & cmsFLAGS_FORCE_CLUT) { PreOptimize(*PtrLut); return OptimizeByResampling(PtrLut, Intent, InputFormat, OutputFormat, dwFlags); } // Anything to optimize? if ((*PtrLut) ->Elements == NULL) { _cmsPipelineSetOptimizationParameters(*PtrLut, FastIdentity16, (void*) *PtrLut, NULL, NULL); return TRUE; } // Try to get rid of identities and trivial conversions. AnySuccess = PreOptimize(*PtrLut); // After removal do we end with an identity? if ((*PtrLut) ->Elements == NULL) { _cmsPipelineSetOptimizationParameters(*PtrLut, FastIdentity16, (void*) *PtrLut, NULL, NULL); return TRUE; } // Do not optimize, keep all precision if (*dwFlags & cmsFLAGS_NOOPTIMIZE) return FALSE; // Try built-in optimizations and plug-in for (Opts = OptimizationCollection; Opts != NULL; Opts = Opts ->Next) { // If one schema succeeded, we are done if (Opts ->OptimizePtr(PtrLut, Intent, InputFormat, OutputFormat, dwFlags)) { return TRUE; // Optimized! } } // Only simple optimizations succeeded return AnySuccess; } lcms2-2.5/src/cmsgamma.c0000644002406300000240000010366712163060730014460 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2013 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Tone curves are powerful constructs that can contain curves specified in diverse ways. // The curve is stored in segments, where each segment can be sampled or specified by parameters. // a 16.bit simplification of the *whole* curve is kept for optimization purposes. For float operation, // each segment is evaluated separately. Plug-ins may be used to define new parametric schemes, // each plug-in may define up to MAX_TYPES_IN_LCMS_PLUGIN functions types. For defining a function, // the plug-in should provide the type id, how many parameters each type has, and a pointer to // a procedure that evaluates the function. In the case of reverse evaluation, the evaluator will // be called with the type id as a negative value, and a sampled version of the reversed curve // will be built. // ----------------------------------------------------------------- Implementation // Maxim number of nodes #define MAX_NODES_IN_CURVE 4097 #define MINUS_INF (-1E22F) #define PLUS_INF (+1E22F) // The list of supported parametric curves typedef struct _cmsParametricCurvesCollection_st { int nFunctions; // Number of supported functions in this chunk int FunctionTypes[MAX_TYPES_IN_LCMS_PLUGIN]; // The identification types int ParameterCount[MAX_TYPES_IN_LCMS_PLUGIN]; // Number of parameters for each function cmsParametricCurveEvaluator Evaluator; // The evaluator struct _cmsParametricCurvesCollection_st* Next; // Next in list } _cmsParametricCurvesCollection; // This is the default (built-in) evaluator static cmsFloat64Number DefaultEvalParametricFn(cmsInt32Number Type, const cmsFloat64Number Params[], cmsFloat64Number R); // The built-in list static _cmsParametricCurvesCollection DefaultCurves = { 9, // # of curve types { 1, 2, 3, 4, 5, 6, 7, 8, 108 }, // Parametric curve ID { 1, 3, 4, 5, 7, 4, 5, 5, 1 }, // Parameters by type DefaultEvalParametricFn, // Evaluator NULL // Next in chain }; // The linked list head static _cmsParametricCurvesCollection* ParametricCurves = &DefaultCurves; // As a way to install new parametric curves cmsBool _cmsRegisterParametricCurvesPlugin(cmsContext id, cmsPluginBase* Data) { cmsPluginParametricCurves* Plugin = (cmsPluginParametricCurves*) Data; _cmsParametricCurvesCollection* fl; if (Data == NULL) { ParametricCurves = &DefaultCurves; return TRUE; } fl = (_cmsParametricCurvesCollection*) _cmsPluginMalloc(id, sizeof(_cmsParametricCurvesCollection)); if (fl == NULL) return FALSE; // Copy the parameters fl ->Evaluator = Plugin ->Evaluator; fl ->nFunctions = Plugin ->nFunctions; // Make sure no mem overwrites if (fl ->nFunctions > MAX_TYPES_IN_LCMS_PLUGIN) fl ->nFunctions = MAX_TYPES_IN_LCMS_PLUGIN; // Copy the data memmove(fl->FunctionTypes, Plugin ->FunctionTypes, fl->nFunctions * sizeof(cmsUInt32Number)); memmove(fl->ParameterCount, Plugin ->ParameterCount, fl->nFunctions * sizeof(cmsUInt32Number)); // Keep linked list fl ->Next = ParametricCurves; ParametricCurves = fl; // All is ok return TRUE; } // Search in type list, return position or -1 if not found static int IsInSet(int Type, _cmsParametricCurvesCollection* c) { int i; for (i=0; i < c ->nFunctions; i++) if (abs(Type) == c ->FunctionTypes[i]) return i; return -1; } // Search for the collection which contains a specific type static _cmsParametricCurvesCollection *GetParametricCurveByType(int Type, int* index) { _cmsParametricCurvesCollection* c; int Position; for (c = ParametricCurves; c != NULL; c = c ->Next) { Position = IsInSet(Type, c); if (Position != -1) { if (index != NULL) *index = Position; return c; } } return NULL; } // Low level allocate, which takes care of memory details. nEntries may be zero, and in this case // no optimation curve is computed. nSegments may also be zero in the inverse case, where only the // optimization curve is given. Both features simultaneously is an error static cmsToneCurve* AllocateToneCurveStruct(cmsContext ContextID, cmsInt32Number nEntries, cmsInt32Number nSegments, const cmsCurveSegment* Segments, const cmsUInt16Number* Values) { cmsToneCurve* p; int i; // We allow huge tables, which are then restricted for smoothing operations if (nEntries > 65530 || nEntries < 0) { cmsSignalError(ContextID, cmsERROR_RANGE, "Couldn't create tone curve of more than 65530 entries"); return NULL; } if (nEntries <= 0 && nSegments <= 0) { cmsSignalError(ContextID, cmsERROR_RANGE, "Couldn't create tone curve with zero segments and no table"); return NULL; } // Allocate all required pointers, etc. p = (cmsToneCurve*) _cmsMallocZero(ContextID, sizeof(cmsToneCurve)); if (!p) return NULL; // In this case, there are no segments if (nSegments <= 0) { p ->Segments = NULL; p ->Evals = NULL; } else { p ->Segments = (cmsCurveSegment*) _cmsCalloc(ContextID, nSegments, sizeof(cmsCurveSegment)); if (p ->Segments == NULL) goto Error; p ->Evals = (cmsParametricCurveEvaluator*) _cmsCalloc(ContextID, nSegments, sizeof(cmsParametricCurveEvaluator)); if (p ->Evals == NULL) goto Error; } p -> nSegments = nSegments; // This 16-bit table contains a limited precision representation of the whole curve and is kept for // increasing xput on certain operations. if (nEntries <= 0) { p ->Table16 = NULL; } else { p ->Table16 = (cmsUInt16Number*) _cmsCalloc(ContextID, nEntries, sizeof(cmsUInt16Number)); if (p ->Table16 == NULL) goto Error; } p -> nEntries = nEntries; // Initialize members if requested if (Values != NULL && (nEntries > 0)) { for (i=0; i < nEntries; i++) p ->Table16[i] = Values[i]; } // Initialize the segments stuff. The evaluator for each segment is located and a pointer to it // is placed in advance to maximize performance. if (Segments != NULL && (nSegments > 0)) { _cmsParametricCurvesCollection *c; p ->SegInterp = (cmsInterpParams**) _cmsCalloc(ContextID, nSegments, sizeof(cmsInterpParams*)); if (p ->SegInterp == NULL) goto Error; for (i=0; i< nSegments; i++) { // Type 0 is a special marker for table-based curves if (Segments[i].Type == 0) p ->SegInterp[i] = _cmsComputeInterpParams(ContextID, Segments[i].nGridPoints, 1, 1, NULL, CMS_LERP_FLAGS_FLOAT); memmove(&p ->Segments[i], &Segments[i], sizeof(cmsCurveSegment)); if (Segments[i].Type == 0 && Segments[i].SampledPoints != NULL) p ->Segments[i].SampledPoints = (cmsFloat32Number*) _cmsDupMem(ContextID, Segments[i].SampledPoints, sizeof(cmsFloat32Number) * Segments[i].nGridPoints); else p ->Segments[i].SampledPoints = NULL; c = GetParametricCurveByType(Segments[i].Type, NULL); if (c != NULL) p ->Evals[i] = c ->Evaluator; } } p ->InterpParams = _cmsComputeInterpParams(ContextID, p ->nEntries, 1, 1, p->Table16, CMS_LERP_FLAGS_16BITS); if (p->InterpParams != NULL) return p; Error: if (p -> Segments) _cmsFree(ContextID, p ->Segments); if (p -> Evals) _cmsFree(ContextID, p -> Evals); if (p ->Table16) _cmsFree(ContextID, p ->Table16); _cmsFree(ContextID, p); return NULL; } // Parametric Fn using floating point static cmsFloat64Number DefaultEvalParametricFn(cmsInt32Number Type, const cmsFloat64Number Params[], cmsFloat64Number R) { cmsFloat64Number e, Val, disc; switch (Type) { // X = Y ^ Gamma case 1: if (R < 0) { if (fabs(Params[0] - 1.0) < MATRIX_DET_TOLERANCE) Val = R; else Val = 0; } else Val = pow(R, Params[0]); break; // Type 1 Reversed: X = Y ^1/gamma case -1: if (R < 0) { if (fabs(Params[0] - 1.0) < MATRIX_DET_TOLERANCE) Val = R; else Val = 0; } else Val = pow(R, 1/Params[0]); break; // CIE 122-1966 // Y = (aX + b)^Gamma | X >= -b/a // Y = 0 | else case 2: disc = -Params[2] / Params[1]; if (R >= disc ) { e = Params[1]*R + Params[2]; if (e > 0) Val = pow(e, Params[0]); else Val = 0; } else Val = 0; break; // Type 2 Reversed // X = (Y ^1/g - b) / a case -2: if (R < 0) Val = 0; else Val = (pow(R, 1.0/Params[0]) - Params[2]) / Params[1]; if (Val < 0) Val = 0; break; // IEC 61966-3 // Y = (aX + b)^Gamma | X <= -b/a // Y = c | else case 3: disc = -Params[2] / Params[1]; if (disc < 0) disc = 0; if (R >= disc) { e = Params[1]*R + Params[2]; if (e > 0) Val = pow(e, Params[0]) + Params[3]; else Val = 0; } else Val = Params[3]; break; // Type 3 reversed // X=((Y-c)^1/g - b)/a | (Y>=c) // X=-b/a | (Y= Params[3]) { e = R - Params[3]; if (e > 0) Val = (pow(e, 1/Params[0]) - Params[2]) / Params[1]; else Val = 0; } else { Val = -Params[2] / Params[1]; } break; // IEC 61966-2.1 (sRGB) // Y = (aX + b)^Gamma | X >= d // Y = cX | X < d case 4: if (R >= Params[4]) { e = Params[1]*R + Params[2]; if (e > 0) Val = pow(e, Params[0]); else Val = 0; } else Val = R * Params[3]; break; // Type 4 reversed // X=((Y^1/g-b)/a) | Y >= (ad+b)^g // X=Y/c | Y< (ad+b)^g case -4: e = Params[1] * Params[4] + Params[2]; if (e < 0) disc = 0; else disc = pow(e, Params[0]); if (R >= disc) { Val = (pow(R, 1.0/Params[0]) - Params[2]) / Params[1]; } else { Val = R / Params[3]; } break; // Y = (aX + b)^Gamma + e | X >= d // Y = cX + f | X < d case 5: if (R >= Params[4]) { e = Params[1]*R + Params[2]; if (e > 0) Val = pow(e, Params[0]) + Params[5]; else Val = Params[5]; } else Val = R*Params[3] + Params[6]; break; // Reversed type 5 // X=((Y-e)1/g-b)/a | Y >=(ad+b)^g+e), cd+f // X=(Y-f)/c | else case -5: disc = Params[3] * Params[4] + Params[6]; if (R >= disc) { e = R - Params[5]; if (e < 0) Val = 0; else Val = (pow(e, 1.0/Params[0]) - Params[2]) / Params[1]; } else { Val = (R - Params[6]) / Params[3]; } break; // Types 6,7,8 comes from segmented curves as described in ICCSpecRevision_02_11_06_Float.pdf // Type 6 is basically identical to type 5 without d // Y = (a * X + b) ^ Gamma + c case 6: e = Params[1]*R + Params[2]; if (e < 0) Val = Params[3]; else Val = pow(e, Params[0]) + Params[3]; break; // ((Y - c) ^1/Gamma - b) / a case -6: e = R - Params[3]; if (e < 0) Val = 0; else Val = (pow(e, 1.0/Params[0]) - Params[2]) / Params[1]; break; // Y = a * log (b * X^Gamma + c) + d case 7: e = Params[2] * pow(R, Params[0]) + Params[3]; if (e <= 0) Val = Params[4]; else Val = Params[1]*log10(e) + Params[4]; break; // (Y - d) / a = log(b * X ^Gamma + c) // pow(10, (Y-d) / a) = b * X ^Gamma + c // pow((pow(10, (Y-d) / a) - c) / b, 1/g) = X case -7: Val = pow((pow(10.0, (R-Params[4]) / Params[1]) - Params[3]) / Params[2], 1.0 / Params[0]); break; //Y = a * b^(c*X+d) + e case 8: Val = (Params[0] * pow(Params[1], Params[2] * R + Params[3]) + Params[4]); break; // Y = (log((y-e) / a) / log(b) - d ) / c // a=0, b=1, c=2, d=3, e=4, case -8: disc = R - Params[4]; if (disc < 0) Val = 0; else Val = (log(disc / Params[0]) / log(Params[1]) - Params[3]) / Params[2]; break; // S-Shaped: (1 - (1-x)^1/g)^1/g case 108: Val = pow(1.0 - pow(1 - R, 1/Params[0]), 1/Params[0]); break; // y = (1 - (1-x)^1/g)^1/g // y^g = (1 - (1-x)^1/g) // 1 - y^g = (1-x)^1/g // (1 - y^g)^g = 1 - x // 1 - (1 - y^g)^g case -108: Val = 1 - pow(1 - pow(R, Params[0]), Params[0]); break; default: // Unsupported parametric curve. Should never reach here return 0; } return Val; } // Evaluate a segmented funtion for a single value. Return -1 if no valid segment found . // If fn type is 0, perform an interpolation on the table static cmsFloat64Number EvalSegmentedFn(const cmsToneCurve *g, cmsFloat64Number R) { int i; for (i = g ->nSegments-1; i >= 0 ; --i) { // Check for domain if ((R > g ->Segments[i].x0) && (R <= g ->Segments[i].x1)) { // Type == 0 means segment is sampled if (g ->Segments[i].Type == 0) { cmsFloat32Number R1 = (cmsFloat32Number) (R - g ->Segments[i].x0) / (g ->Segments[i].x1 - g ->Segments[i].x0); cmsFloat32Number Out; // Setup the table (TODO: clean that) g ->SegInterp[i]-> Table = g ->Segments[i].SampledPoints; g ->SegInterp[i] -> Interpolation.LerpFloat(&R1, &Out, g ->SegInterp[i]); return Out; } else return g ->Evals[i](g->Segments[i].Type, g ->Segments[i].Params, R); } } return MINUS_INF; } // Access to estimated low-res table cmsUInt32Number CMSEXPORT cmsGetToneCurveEstimatedTableEntries(const cmsToneCurve* t) { _cmsAssert(t != NULL); return t ->nEntries; } const cmsUInt16Number* CMSEXPORT cmsGetToneCurveEstimatedTable(const cmsToneCurve* t) { _cmsAssert(t != NULL); return t ->Table16; } // Create an empty gamma curve, by using tables. This specifies only the limited-precision part, and leaves the // floating point description empty. cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurve16(cmsContext ContextID, cmsInt32Number nEntries, const cmsUInt16Number Values[]) { return AllocateToneCurveStruct(ContextID, nEntries, 0, NULL, Values); } static int EntriesByGamma(cmsFloat64Number Gamma) { if (fabs(Gamma - 1.0) < 0.001) return 2; return 4096; } // Create a segmented gamma, fill the table cmsToneCurve* CMSEXPORT cmsBuildSegmentedToneCurve(cmsContext ContextID, cmsInt32Number nSegments, const cmsCurveSegment Segments[]) { int i; cmsFloat64Number R, Val; cmsToneCurve* g; int nGridPoints = 4096; _cmsAssert(Segments != NULL); // Optimizatin for identity curves. if (nSegments == 1 && Segments[0].Type == 1) { nGridPoints = EntriesByGamma(Segments[0].Params[0]); } g = AllocateToneCurveStruct(ContextID, nGridPoints, nSegments, Segments, NULL); if (g == NULL) return NULL; // Once we have the floating point version, we can approximate a 16 bit table of 4096 entries // for performance reasons. This table would normally not be used except on 8/16 bits transforms. for (i=0; i < nGridPoints; i++) { R = (cmsFloat64Number) i / (nGridPoints-1); Val = EvalSegmentedFn(g, R); // Round and saturate g ->Table16[i] = _cmsQuickSaturateWord(Val * 65535.0); } return g; } // Use a segmented curve to store the floating point table cmsToneCurve* CMSEXPORT cmsBuildTabulatedToneCurveFloat(cmsContext ContextID, cmsUInt32Number nEntries, const cmsFloat32Number values[]) { cmsCurveSegment Seg[3]; // A segmented tone curve should have function segments in the first and last positions // Initialize segmented curve part up to 0 to constant value = samples[0] Seg[0].x0 = MINUS_INF; Seg[0].x1 = 0; Seg[0].Type = 6; Seg[0].Params[0] = 1; Seg[0].Params[1] = 0; Seg[0].Params[2] = 0; Seg[0].Params[3] = values[0]; Seg[0].Params[4] = 0; // From zero to 1 Seg[1].x0 = 0; Seg[1].x1 = 1.0; Seg[1].Type = 0; Seg[1].nGridPoints = nEntries; Seg[1].SampledPoints = (cmsFloat32Number*) values; // Final segment is constant = lastsample Seg[2].x0 = 1.0; Seg[2].x1 = PLUS_INF; Seg[2].Type = 6; Seg[2].Params[0] = 1; Seg[2].Params[1] = 0; Seg[2].Params[2] = 0; Seg[2].Params[3] = values[nEntries-1]; Seg[2].Params[4] = 0; return cmsBuildSegmentedToneCurve(ContextID, 3, Seg); } // Parametric curves // // Parameters goes as: Curve, a, b, c, d, e, f // Type is the ICC type +1 // if type is negative, then the curve is analyticaly inverted cmsToneCurve* CMSEXPORT cmsBuildParametricToneCurve(cmsContext ContextID, cmsInt32Number Type, const cmsFloat64Number Params[]) { cmsCurveSegment Seg0; int Pos = 0; cmsUInt32Number size; _cmsParametricCurvesCollection* c = GetParametricCurveByType(Type, &Pos); _cmsAssert(Params != NULL); if (c == NULL) { cmsSignalError(ContextID, cmsERROR_UNKNOWN_EXTENSION, "Invalid parametric curve type %d", Type); return NULL; } memset(&Seg0, 0, sizeof(Seg0)); Seg0.x0 = MINUS_INF; Seg0.x1 = PLUS_INF; Seg0.Type = Type; size = c->ParameterCount[Pos] * sizeof(cmsFloat64Number); memmove(Seg0.Params, Params, size); return cmsBuildSegmentedToneCurve(ContextID, 1, &Seg0); } // Build a gamma table based on gamma constant cmsToneCurve* CMSEXPORT cmsBuildGamma(cmsContext ContextID, cmsFloat64Number Gamma) { return cmsBuildParametricToneCurve(ContextID, 1, &Gamma); } // Free all memory taken by the gamma curve void CMSEXPORT cmsFreeToneCurve(cmsToneCurve* Curve) { cmsContext ContextID; if (Curve == NULL) return; ContextID = Curve ->InterpParams->ContextID; _cmsFreeInterpParams(Curve ->InterpParams); if (Curve -> Table16) _cmsFree(ContextID, Curve ->Table16); if (Curve ->Segments) { cmsUInt32Number i; for (i=0; i < Curve ->nSegments; i++) { if (Curve ->Segments[i].SampledPoints) { _cmsFree(ContextID, Curve ->Segments[i].SampledPoints); } if (Curve ->SegInterp[i] != 0) _cmsFreeInterpParams(Curve->SegInterp[i]); } _cmsFree(ContextID, Curve ->Segments); _cmsFree(ContextID, Curve ->SegInterp); } if (Curve -> Evals) _cmsFree(ContextID, Curve -> Evals); if (Curve) _cmsFree(ContextID, Curve); } // Utility function, free 3 gamma tables void CMSEXPORT cmsFreeToneCurveTriple(cmsToneCurve* Curve[3]) { _cmsAssert(Curve != NULL); if (Curve[0] != NULL) cmsFreeToneCurve(Curve[0]); if (Curve[1] != NULL) cmsFreeToneCurve(Curve[1]); if (Curve[2] != NULL) cmsFreeToneCurve(Curve[2]); Curve[0] = Curve[1] = Curve[2] = NULL; } // Duplicate a gamma table cmsToneCurve* CMSEXPORT cmsDupToneCurve(const cmsToneCurve* In) { if (In == NULL) return NULL; return AllocateToneCurveStruct(In ->InterpParams ->ContextID, In ->nEntries, In ->nSegments, In ->Segments, In ->Table16); } // Joins two curves for X and Y. Curves should be monotonic. // We want to get // // y = Y^-1(X(t)) // cmsToneCurve* CMSEXPORT cmsJoinToneCurve(cmsContext ContextID, const cmsToneCurve* X, const cmsToneCurve* Y, cmsUInt32Number nResultingPoints) { cmsToneCurve* out = NULL; cmsToneCurve* Yreversed = NULL; cmsFloat32Number t, x; cmsFloat32Number* Res = NULL; cmsUInt32Number i; _cmsAssert(X != NULL); _cmsAssert(Y != NULL); Yreversed = cmsReverseToneCurveEx(nResultingPoints, Y); if (Yreversed == NULL) goto Error; Res = (cmsFloat32Number*) _cmsCalloc(ContextID, nResultingPoints, sizeof(cmsFloat32Number)); if (Res == NULL) goto Error; //Iterate for (i=0; i < nResultingPoints; i++) { t = (cmsFloat32Number) i / (nResultingPoints-1); x = cmsEvalToneCurveFloat(X, t); Res[i] = cmsEvalToneCurveFloat(Yreversed, x); } // Allocate space for output out = cmsBuildTabulatedToneCurveFloat(ContextID, nResultingPoints, Res); Error: if (Res != NULL) _cmsFree(ContextID, Res); if (Yreversed != NULL) cmsFreeToneCurve(Yreversed); return out; } // Get the surrounding nodes. This is tricky on non-monotonic tables static int GetInterval(cmsFloat64Number In, const cmsUInt16Number LutTable[], const struct _cms_interp_struc* p) { int i; int y0, y1; // A 1 point table is not allowed if (p -> Domain[0] < 1) return -1; // Let's see if ascending or descending. if (LutTable[0] < LutTable[p ->Domain[0]]) { // Table is overall ascending for (i=p->Domain[0]-1; i >=0; --i) { y0 = LutTable[i]; y1 = LutTable[i+1]; if (y0 <= y1) { // Increasing if (In >= y0 && In <= y1) return i; } else if (y1 < y0) { // Decreasing if (In >= y1 && In <= y0) return i; } } } else { // Table is overall descending for (i=0; i < (int) p -> Domain[0]; i++) { y0 = LutTable[i]; y1 = LutTable[i+1]; if (y0 <= y1) { // Increasing if (In >= y0 && In <= y1) return i; } else if (y1 < y0) { // Decreasing if (In >= y1 && In <= y0) return i; } } } return -1; } // Reverse a gamma table cmsToneCurve* CMSEXPORT cmsReverseToneCurveEx(cmsInt32Number nResultSamples, const cmsToneCurve* InCurve) { cmsToneCurve *out; cmsFloat64Number a = 0, b = 0, y, x1, y1, x2, y2; int i, j; int Ascending; _cmsAssert(InCurve != NULL); // Try to reverse it analytically whatever possible if (InCurve ->nSegments == 1 && InCurve ->Segments[0].Type > 0 && InCurve -> Segments[0].Type <= 5) { return cmsBuildParametricToneCurve(InCurve ->InterpParams->ContextID, -(InCurve -> Segments[0].Type), InCurve -> Segments[0].Params); } // Nope, reverse the table. out = cmsBuildTabulatedToneCurve16(InCurve ->InterpParams->ContextID, nResultSamples, NULL); if (out == NULL) return NULL; // We want to know if this is an ascending or descending table Ascending = !cmsIsToneCurveDescending(InCurve); // Iterate across Y axis for (i=0; i < nResultSamples; i++) { y = (cmsFloat64Number) i * 65535.0 / (nResultSamples - 1); // Find interval in which y is within. j = GetInterval(y, InCurve->Table16, InCurve->InterpParams); if (j >= 0) { // Get limits of interval x1 = InCurve ->Table16[j]; x2 = InCurve ->Table16[j+1]; y1 = (cmsFloat64Number) (j * 65535.0) / (InCurve ->nEntries - 1); y2 = (cmsFloat64Number) ((j+1) * 65535.0 ) / (InCurve ->nEntries - 1); // If collapsed, then use any if (x1 == x2) { out ->Table16[i] = _cmsQuickSaturateWord(Ascending ? y2 : y1); continue; } else { // Interpolate a = (y2 - y1) / (x2 - x1); b = y2 - a * x2; } } out ->Table16[i] = _cmsQuickSaturateWord(a* y + b); } return out; } // Reverse a gamma table cmsToneCurve* CMSEXPORT cmsReverseToneCurve(const cmsToneCurve* InGamma) { _cmsAssert(InGamma != NULL); return cmsReverseToneCurveEx(4096, InGamma); } // From: Eilers, P.H.C. (1994) Smoothing and interpolation with finite // differences. in: Graphic Gems IV, Heckbert, P.S. (ed.), Academic press. // // Smoothing and interpolation with second differences. // // Input: weights (w), data (y): vector from 1 to m. // Input: smoothing parameter (lambda), length (m). // Output: smoothed vector (z): vector from 1 to m. static cmsBool smooth2(cmsContext ContextID, cmsFloat32Number w[], cmsFloat32Number y[], cmsFloat32Number z[], cmsFloat32Number lambda, int m) { int i, i1, i2; cmsFloat32Number *c, *d, *e; cmsBool st; c = (cmsFloat32Number*) _cmsCalloc(ContextID, MAX_NODES_IN_CURVE, sizeof(cmsFloat32Number)); d = (cmsFloat32Number*) _cmsCalloc(ContextID, MAX_NODES_IN_CURVE, sizeof(cmsFloat32Number)); e = (cmsFloat32Number*) _cmsCalloc(ContextID, MAX_NODES_IN_CURVE, sizeof(cmsFloat32Number)); if (c != NULL && d != NULL && e != NULL) { d[1] = w[1] + lambda; c[1] = -2 * lambda / d[1]; e[1] = lambda /d[1]; z[1] = w[1] * y[1]; d[2] = w[2] + 5 * lambda - d[1] * c[1] * c[1]; c[2] = (-4 * lambda - d[1] * c[1] * e[1]) / d[2]; e[2] = lambda / d[2]; z[2] = w[2] * y[2] - c[1] * z[1]; for (i = 3; i < m - 1; i++) { i1 = i - 1; i2 = i - 2; d[i]= w[i] + 6 * lambda - c[i1] * c[i1] * d[i1] - e[i2] * e[i2] * d[i2]; c[i] = (-4 * lambda -d[i1] * c[i1] * e[i1])/ d[i]; e[i] = lambda / d[i]; z[i] = w[i] * y[i] - c[i1] * z[i1] - e[i2] * z[i2]; } i1 = m - 2; i2 = m - 3; d[m - 1] = w[m - 1] + 5 * lambda -c[i1] * c[i1] * d[i1] - e[i2] * e[i2] * d[i2]; c[m - 1] = (-2 * lambda - d[i1] * c[i1] * e[i1]) / d[m - 1]; z[m - 1] = w[m - 1] * y[m - 1] - c[i1] * z[i1] - e[i2] * z[i2]; i1 = m - 1; i2 = m - 2; d[m] = w[m] + lambda - c[i1] * c[i1] * d[i1] - e[i2] * e[i2] * d[i2]; z[m] = (w[m] * y[m] - c[i1] * z[i1] - e[i2] * z[i2]) / d[m]; z[m - 1] = z[m - 1] / d[m - 1] - c[m - 1] * z[m]; for (i = m - 2; 1<= i; i--) z[i] = z[i] / d[i] - c[i] * z[i + 1] - e[i] * z[i + 2]; st = TRUE; } else st = FALSE; if (c != NULL) _cmsFree(ContextID, c); if (d != NULL) _cmsFree(ContextID, d); if (e != NULL) _cmsFree(ContextID, e); return st; } // Smooths a curve sampled at regular intervals. cmsBool CMSEXPORT cmsSmoothToneCurve(cmsToneCurve* Tab, cmsFloat64Number lambda) { cmsFloat32Number w[MAX_NODES_IN_CURVE], y[MAX_NODES_IN_CURVE], z[MAX_NODES_IN_CURVE]; int i, nItems, Zeros, Poles; if (Tab == NULL) return FALSE; if (cmsIsToneCurveLinear(Tab)) return TRUE; // Nothing to do nItems = Tab -> nEntries; if (nItems >= MAX_NODES_IN_CURVE) { cmsSignalError(Tab ->InterpParams->ContextID, cmsERROR_RANGE, "cmsSmoothToneCurve: too many points."); return FALSE; } memset(w, 0, nItems * sizeof(cmsFloat32Number)); memset(y, 0, nItems * sizeof(cmsFloat32Number)); memset(z, 0, nItems * sizeof(cmsFloat32Number)); for (i=0; i < nItems; i++) { y[i+1] = (cmsFloat32Number) Tab -> Table16[i]; w[i+1] = 1.0; } if (!smooth2(Tab ->InterpParams->ContextID, w, y, z, (cmsFloat32Number) lambda, nItems)) return FALSE; // Do some reality - checking... Zeros = Poles = 0; for (i=nItems; i > 1; --i) { if (z[i] == 0.) Zeros++; if (z[i] >= 65535.) Poles++; if (z[i] < z[i-1]) { cmsSignalError(Tab ->InterpParams->ContextID, cmsERROR_RANGE, "cmsSmoothToneCurve: Non-Monotonic."); return FALSE; } } if (Zeros > (nItems / 3)) { cmsSignalError(Tab ->InterpParams->ContextID, cmsERROR_RANGE, "cmsSmoothToneCurve: Degenerated, mostly zeros."); return FALSE; } if (Poles > (nItems / 3)) { cmsSignalError(Tab ->InterpParams->ContextID, cmsERROR_RANGE, "cmsSmoothToneCurve: Degenerated, mostly poles."); return FALSE; } // Seems ok for (i=0; i < nItems; i++) { // Clamp to cmsUInt16Number Tab -> Table16[i] = _cmsQuickSaturateWord(z[i+1]); } return TRUE; } // Is a table linear? Do not use parametric since we cannot guarantee some weird parameters resulting // in a linear table. This way assures it is linear in 12 bits, which should be enought in most cases. cmsBool CMSEXPORT cmsIsToneCurveLinear(const cmsToneCurve* Curve) { cmsUInt32Number i; int diff; _cmsAssert(Curve != NULL); for (i=0; i < Curve ->nEntries; i++) { diff = abs((int) Curve->Table16[i] - (int) _cmsQuantizeVal(i, Curve ->nEntries)); if (diff > 0x0f) return FALSE; } return TRUE; } // Same, but for monotonicity cmsBool CMSEXPORT cmsIsToneCurveMonotonic(const cmsToneCurve* t) { int n; int i, last; cmsBool lDescending; _cmsAssert(t != NULL); // Degenerated curves are monotonic? Ok, let's pass them n = t ->nEntries; if (n < 2) return TRUE; // Curve direction lDescending = cmsIsToneCurveDescending(t); if (lDescending) { last = t ->Table16[0]; for (i = 1; i < n; i++) { if (t ->Table16[i] - last > 2) // We allow some ripple return FALSE; else last = t ->Table16[i]; } } else { last = t ->Table16[n-1]; for (i = n-2; i >= 0; --i) { if (t ->Table16[i] - last > 2) return FALSE; else last = t ->Table16[i]; } } return TRUE; } // Same, but for descending tables cmsBool CMSEXPORT cmsIsToneCurveDescending(const cmsToneCurve* t) { _cmsAssert(t != NULL); return t ->Table16[0] > t ->Table16[t ->nEntries-1]; } // Another info fn: is out gamma table multisegment? cmsBool CMSEXPORT cmsIsToneCurveMultisegment(const cmsToneCurve* t) { _cmsAssert(t != NULL); return t -> nSegments > 1; } cmsInt32Number CMSEXPORT cmsGetToneCurveParametricType(const cmsToneCurve* t) { _cmsAssert(t != NULL); if (t -> nSegments != 1) return 0; return t ->Segments[0].Type; } // We need accuracy this time cmsFloat32Number CMSEXPORT cmsEvalToneCurveFloat(const cmsToneCurve* Curve, cmsFloat32Number v) { _cmsAssert(Curve != NULL); // Check for 16 bits table. If so, this is a limited-precision tone curve if (Curve ->nSegments == 0) { cmsUInt16Number In, Out; In = (cmsUInt16Number) _cmsQuickSaturateWord(v * 65535.0); Out = cmsEvalToneCurve16(Curve, In); return (cmsFloat32Number) (Out / 65535.0); } return (cmsFloat32Number) EvalSegmentedFn(Curve, v); } // We need xput over here cmsUInt16Number CMSEXPORT cmsEvalToneCurve16(const cmsToneCurve* Curve, cmsUInt16Number v) { cmsUInt16Number out; _cmsAssert(Curve != NULL); Curve ->InterpParams ->Interpolation.Lerp16(&v, &out, Curve ->InterpParams); return out; } // Least squares fitting. // A mathematical procedure for finding the best-fitting curve to a given set of points by // minimizing the sum of the squares of the offsets ("the residuals") of the points from the curve. // The sum of the squares of the offsets is used instead of the offset absolute values because // this allows the residuals to be treated as a continuous differentiable quantity. // // y = f(x) = x ^ g // // R = (yi - (xi^g)) // R2 = (yi - (xi^g))2 // SUM R2 = SUM (yi - (xi^g))2 // // dR2/dg = -2 SUM x^g log(x)(y - x^g) // solving for dR2/dg = 0 // // g = 1/n * SUM(log(y) / log(x)) cmsFloat64Number CMSEXPORT cmsEstimateGamma(const cmsToneCurve* t, cmsFloat64Number Precision) { cmsFloat64Number gamma, sum, sum2; cmsFloat64Number n, x, y, Std; cmsUInt32Number i; _cmsAssert(t != NULL); sum = sum2 = n = 0; // Excluding endpoints for (i=1; i < (MAX_NODES_IN_CURVE-1); i++) { x = (cmsFloat64Number) i / (MAX_NODES_IN_CURVE-1); y = (cmsFloat64Number) cmsEvalToneCurveFloat(t, (cmsFloat32Number) x); // Avoid 7% on lower part to prevent // artifacts due to linear ramps if (y > 0. && y < 1. && x > 0.07) { gamma = log(y) / log(x); sum += gamma; sum2 += gamma * gamma; n++; } } // Take a look on SD to see if gamma isn't exponential at all Std = sqrt((n * sum2 - sum * sum) / (n*(n-1))); if (Std > Precision) return -1.0; return (sum / n); // The mean } lcms2-2.5/src/cmsintrp.c0000644002406300000240000012447012163060730014525 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // This module incorporates several interpolation routines, for 1 to 8 channels on input and // up to 65535 channels on output. The user may change those by using the interpolation plug-in // Interpolation routines by default static cmsInterpFunction DefaultInterpolatorsFactory(cmsUInt32Number nInputChannels, cmsUInt32Number nOutputChannels, cmsUInt32Number dwFlags); // This is the default factory static cmsInterpFnFactory Interpolators = DefaultInterpolatorsFactory; // Main plug-in entry cmsBool _cmsRegisterInterpPlugin(cmsPluginBase* Data) { cmsPluginInterpolation* Plugin = (cmsPluginInterpolation*) Data; if (Data == NULL) { Interpolators = DefaultInterpolatorsFactory; return TRUE; } // Set replacement functions Interpolators = Plugin ->InterpolatorsFactory; return TRUE; } // Set the interpolation method cmsBool _cmsSetInterpolationRoutine(cmsInterpParams* p) { // Invoke factory, possibly in the Plug-in p ->Interpolation = Interpolators(p -> nInputs, p ->nOutputs, p ->dwFlags); // If unsupported by the plug-in, go for the LittleCMS default. // If happens only if an extern plug-in is being used if (p ->Interpolation.Lerp16 == NULL) p ->Interpolation = DefaultInterpolatorsFactory(p ->nInputs, p ->nOutputs, p ->dwFlags); // Check for valid interpolator (we just check one member of the union) if (p ->Interpolation.Lerp16 == NULL) { return FALSE; } return TRUE; } // This function precalculates as many parameters as possible to speed up the interpolation. cmsInterpParams* _cmsComputeInterpParamsEx(cmsContext ContextID, const cmsUInt32Number nSamples[], int InputChan, int OutputChan, const void *Table, cmsUInt32Number dwFlags) { cmsInterpParams* p; int i; // Check for maximum inputs if (InputChan > MAX_INPUT_DIMENSIONS) { cmsSignalError(ContextID, cmsERROR_RANGE, "Too many input channels (%d channels, max=%d)", InputChan, MAX_INPUT_DIMENSIONS); return NULL; } // Creates an empty object p = (cmsInterpParams*) _cmsMallocZero(ContextID, sizeof(cmsInterpParams)); if (p == NULL) return NULL; // Keep original parameters p -> dwFlags = dwFlags; p -> nInputs = InputChan; p -> nOutputs = OutputChan; p ->Table = Table; p ->ContextID = ContextID; // Fill samples per input direction and domain (which is number of nodes minus one) for (i=0; i < InputChan; i++) { p -> nSamples[i] = nSamples[i]; p -> Domain[i] = nSamples[i] - 1; } // Compute factors to apply to each component to index the grid array p -> opta[0] = p -> nOutputs; for (i=1; i < InputChan; i++) p ->opta[i] = p ->opta[i-1] * nSamples[InputChan-i]; if (!_cmsSetInterpolationRoutine(p)) { cmsSignalError(ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported interpolation (%d->%d channels)", InputChan, OutputChan); _cmsFree(ContextID, p); return NULL; } // All seems ok return p; } // This one is a wrapper on the anterior, but assuming all directions have same number of nodes cmsInterpParams* _cmsComputeInterpParams(cmsContext ContextID, int nSamples, int InputChan, int OutputChan, const void* Table, cmsUInt32Number dwFlags) { int i; cmsUInt32Number Samples[MAX_INPUT_DIMENSIONS]; // Fill the auxiliar array for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Samples[i] = nSamples; // Call the extended function return _cmsComputeInterpParamsEx(ContextID, Samples, InputChan, OutputChan, Table, dwFlags); } // Free all associated memory void _cmsFreeInterpParams(cmsInterpParams* p) { if (p != NULL) _cmsFree(p ->ContextID, p); } // Inline fixed point interpolation cmsINLINE cmsUInt16Number LinearInterp(cmsS15Fixed16Number a, cmsS15Fixed16Number l, cmsS15Fixed16Number h) { cmsUInt32Number dif = (cmsUInt32Number) (h - l) * a + 0x8000; dif = (dif >> 16) + l; return (cmsUInt16Number) (dif); } // Linear interpolation (Fixed-point optimized) static void LinLerp1D(register const cmsUInt16Number Value[], register cmsUInt16Number Output[], register const cmsInterpParams* p) { cmsUInt16Number y1, y0; int cell0, rest; int val3; const cmsUInt16Number* LutTable = (cmsUInt16Number*) p ->Table; // if last value... if (Value[0] == 0xffff) { Output[0] = LutTable[p -> Domain[0]]; return; } val3 = p -> Domain[0] * Value[0]; val3 = _cmsToFixedDomain(val3); // To fixed 15.16 cell0 = FIXED_TO_INT(val3); // Cell is 16 MSB bits rest = FIXED_REST_TO_INT(val3); // Rest is 16 LSB bits y0 = LutTable[cell0]; y1 = LutTable[cell0+1]; Output[0] = LinearInterp(rest, y0, y1); } // Floating-point version of 1D interpolation static void LinLerp1Dfloat(const cmsFloat32Number Value[], cmsFloat32Number Output[], const cmsInterpParams* p) { cmsFloat32Number y1, y0; cmsFloat32Number val2, rest; int cell0, cell1; const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table; // if last value... if (Value[0] == 1.0) { Output[0] = LutTable[p -> Domain[0]]; return; } val2 = p -> Domain[0] * Value[0]; cell0 = (int) floor(val2); cell1 = (int) ceil(val2); // Rest is 16 LSB bits rest = val2 - cell0; y0 = LutTable[cell0] ; y1 = LutTable[cell1] ; Output[0] = y0 + (y1 - y0) * rest; } // Eval gray LUT having only one input channel static void Eval1Input(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16) { cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, k1, rk, K0, K1; int v; cmsUInt32Number OutChan; const cmsUInt16Number* LutTable = (cmsUInt16Number*) p16 -> Table; v = Input[0] * p16 -> Domain[0]; fk = _cmsToFixedDomain(v); k0 = FIXED_TO_INT(fk); rk = (cmsUInt16Number) FIXED_REST_TO_INT(fk); k1 = k0 + (Input[0] != 0xFFFFU ? 1 : 0); K0 = p16 -> opta[0] * k0; K1 = p16 -> opta[0] * k1; for (OutChan=0; OutChan < p16->nOutputs; OutChan++) { Output[OutChan] = LinearInterp(rk, LutTable[K0+OutChan], LutTable[K1+OutChan]); } } // Eval gray LUT having only one input channel static void Eval1InputFloat(const cmsFloat32Number Value[], cmsFloat32Number Output[], const cmsInterpParams* p) { cmsFloat32Number y1, y0; cmsFloat32Number val2, rest; int cell0, cell1; cmsUInt32Number OutChan; const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table; // if last value... if (Value[0] == 1.0) { Output[0] = LutTable[p -> Domain[0]]; return; } val2 = p -> Domain[0] * Value[0]; cell0 = (int) floor(val2); cell1 = (int) ceil(val2); // Rest is 16 LSB bits rest = val2 - cell0; cell0 *= p -> opta[0]; cell1 *= p -> opta[0]; for (OutChan=0; OutChan < p->nOutputs; OutChan++) { y0 = LutTable[cell0 + OutChan] ; y1 = LutTable[cell1 + OutChan] ; Output[OutChan] = y0 + (y1 - y0) * rest; } } // Bilinear interpolation (16 bits) - cmsFloat32Number version static void BilinearInterpFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { # define LERP(a,l,h) (cmsFloat32Number) ((l)+(((h)-(l))*(a))) # define DENS(i,j) (LutTable[(i)+(j)+OutChan]) const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table; cmsFloat32Number px, py; int x0, y0, X0, Y0, X1, Y1; int TotalOut, OutChan; cmsFloat32Number fx, fy, d00, d01, d10, d11, dx0, dx1, dxy; TotalOut = p -> nOutputs; px = Input[0] * p->Domain[0]; py = Input[1] * p->Domain[1]; x0 = (int) _cmsQuickFloor(px); fx = px - (cmsFloat32Number) x0; y0 = (int) _cmsQuickFloor(py); fy = py - (cmsFloat32Number) y0; X0 = p -> opta[1] * x0; X1 = X0 + (Input[0] >= 1.0 ? 0 : p->opta[1]); Y0 = p -> opta[0] * y0; Y1 = Y0 + (Input[1] >= 1.0 ? 0 : p->opta[0]); for (OutChan = 0; OutChan < TotalOut; OutChan++) { d00 = DENS(X0, Y0); d01 = DENS(X0, Y1); d10 = DENS(X1, Y0); d11 = DENS(X1, Y1); dx0 = LERP(fx, d00, d10); dx1 = LERP(fx, d01, d11); dxy = LERP(fy, dx0, dx1); Output[OutChan] = dxy; } # undef LERP # undef DENS } // Bilinear interpolation (16 bits) - optimized version static void BilinearInterp16(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p) { #define DENS(i,j) (LutTable[(i)+(j)+OutChan]) #define LERP(a,l,h) (cmsUInt16Number) (l + ROUND_FIXED_TO_INT(((h-l)*a))) const cmsUInt16Number* LutTable = (cmsUInt16Number*) p ->Table; int OutChan, TotalOut; cmsS15Fixed16Number fx, fy; register int rx, ry; int x0, y0; register int X0, X1, Y0, Y1; int d00, d01, d10, d11, dx0, dx1, dxy; TotalOut = p -> nOutputs; fx = _cmsToFixedDomain((int) Input[0] * p -> Domain[0]); x0 = FIXED_TO_INT(fx); rx = FIXED_REST_TO_INT(fx); // Rest in 0..1.0 domain fy = _cmsToFixedDomain((int) Input[1] * p -> Domain[1]); y0 = FIXED_TO_INT(fy); ry = FIXED_REST_TO_INT(fy); X0 = p -> opta[1] * x0; X1 = X0 + (Input[0] == 0xFFFFU ? 0 : p->opta[1]); Y0 = p -> opta[0] * y0; Y1 = Y0 + (Input[1] == 0xFFFFU ? 0 : p->opta[0]); for (OutChan = 0; OutChan < TotalOut; OutChan++) { d00 = DENS(X0, Y0); d01 = DENS(X0, Y1); d10 = DENS(X1, Y0); d11 = DENS(X1, Y1); dx0 = LERP(rx, d00, d10); dx1 = LERP(rx, d01, d11); dxy = LERP(ry, dx0, dx1); Output[OutChan] = (cmsUInt16Number) dxy; } # undef LERP # undef DENS } // Trilinear interpolation (16 bits) - cmsFloat32Number version static void TrilinearInterpFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { # define LERP(a,l,h) (cmsFloat32Number) ((l)+(((h)-(l))*(a))) # define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) const cmsFloat32Number* LutTable = (cmsFloat32Number*) p ->Table; cmsFloat32Number px, py, pz; int x0, y0, z0, X0, Y0, Z0, X1, Y1, Z1; int TotalOut, OutChan; cmsFloat32Number fx, fy, fz, d000, d001, d010, d011, d100, d101, d110, d111, dx00, dx01, dx10, dx11, dxy0, dxy1, dxyz; TotalOut = p -> nOutputs; // We need some clipping here px = Input[0]; py = Input[1]; pz = Input[2]; if (px < 0) px = 0; if (px > 1) px = 1; if (py < 0) py = 0; if (py > 1) py = 1; if (pz < 0) pz = 0; if (pz > 1) pz = 1; px *= p->Domain[0]; py *= p->Domain[1]; pz *= p->Domain[2]; x0 = (int) _cmsQuickFloor(px); fx = px - (cmsFloat32Number) x0; y0 = (int) _cmsQuickFloor(py); fy = py - (cmsFloat32Number) y0; z0 = (int) _cmsQuickFloor(pz); fz = pz - (cmsFloat32Number) z0; X0 = p -> opta[2] * x0; X1 = X0 + (Input[0] >= 1.0 ? 0 : p->opta[2]); Y0 = p -> opta[1] * y0; Y1 = Y0 + (Input[1] >= 1.0 ? 0 : p->opta[1]); Z0 = p -> opta[0] * z0; Z1 = Z0 + (Input[2] >= 1.0 ? 0 : p->opta[0]); for (OutChan = 0; OutChan < TotalOut; OutChan++) { d000 = DENS(X0, Y0, Z0); d001 = DENS(X0, Y0, Z1); d010 = DENS(X0, Y1, Z0); d011 = DENS(X0, Y1, Z1); d100 = DENS(X1, Y0, Z0); d101 = DENS(X1, Y0, Z1); d110 = DENS(X1, Y1, Z0); d111 = DENS(X1, Y1, Z1); dx00 = LERP(fx, d000, d100); dx01 = LERP(fx, d001, d101); dx10 = LERP(fx, d010, d110); dx11 = LERP(fx, d011, d111); dxy0 = LERP(fy, dx00, dx10); dxy1 = LERP(fy, dx01, dx11); dxyz = LERP(fz, dxy0, dxy1); Output[OutChan] = dxyz; } # undef LERP # undef DENS } // Trilinear interpolation (16 bits) - optimized version static void TrilinearInterp16(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p) { #define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) #define LERP(a,l,h) (cmsUInt16Number) (l + ROUND_FIXED_TO_INT(((h-l)*a))) const cmsUInt16Number* LutTable = (cmsUInt16Number*) p ->Table; int OutChan, TotalOut; cmsS15Fixed16Number fx, fy, fz; register int rx, ry, rz; int x0, y0, z0; register int X0, X1, Y0, Y1, Z0, Z1; int d000, d001, d010, d011, d100, d101, d110, d111, dx00, dx01, dx10, dx11, dxy0, dxy1, dxyz; TotalOut = p -> nOutputs; fx = _cmsToFixedDomain((int) Input[0] * p -> Domain[0]); x0 = FIXED_TO_INT(fx); rx = FIXED_REST_TO_INT(fx); // Rest in 0..1.0 domain fy = _cmsToFixedDomain((int) Input[1] * p -> Domain[1]); y0 = FIXED_TO_INT(fy); ry = FIXED_REST_TO_INT(fy); fz = _cmsToFixedDomain((int) Input[2] * p -> Domain[2]); z0 = FIXED_TO_INT(fz); rz = FIXED_REST_TO_INT(fz); X0 = p -> opta[2] * x0; X1 = X0 + (Input[0] == 0xFFFFU ? 0 : p->opta[2]); Y0 = p -> opta[1] * y0; Y1 = Y0 + (Input[1] == 0xFFFFU ? 0 : p->opta[1]); Z0 = p -> opta[0] * z0; Z1 = Z0 + (Input[2] == 0xFFFFU ? 0 : p->opta[0]); for (OutChan = 0; OutChan < TotalOut; OutChan++) { d000 = DENS(X0, Y0, Z0); d001 = DENS(X0, Y0, Z1); d010 = DENS(X0, Y1, Z0); d011 = DENS(X0, Y1, Z1); d100 = DENS(X1, Y0, Z0); d101 = DENS(X1, Y0, Z1); d110 = DENS(X1, Y1, Z0); d111 = DENS(X1, Y1, Z1); dx00 = LERP(rx, d000, d100); dx01 = LERP(rx, d001, d101); dx10 = LERP(rx, d010, d110); dx11 = LERP(rx, d011, d111); dxy0 = LERP(ry, dx00, dx10); dxy1 = LERP(ry, dx01, dx11); dxyz = LERP(rz, dxy0, dxy1); Output[OutChan] = (cmsUInt16Number) dxyz; } # undef LERP # undef DENS } // Tetrahedral interpolation, using Sakamoto algorithm. #define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) static void TetrahedralInterpFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { const cmsFloat32Number* LutTable = (cmsFloat32Number*) p -> Table; cmsFloat32Number px, py, pz; int x0, y0, z0, X0, Y0, Z0, X1, Y1, Z1; cmsFloat32Number rx, ry, rz; cmsFloat32Number c0, c1=0, c2=0, c3=0; int OutChan, TotalOut; TotalOut = p -> nOutputs; // We need some clipping here px = Input[0]; py = Input[1]; pz = Input[2]; if (px < 0) px = 0; if (px > 1) px = 1; if (py < 0) py = 0; if (py > 1) py = 1; if (pz < 0) pz = 0; if (pz > 1) pz = 1; px *= p->Domain[0]; py *= p->Domain[1]; pz *= p->Domain[2]; x0 = (int) _cmsQuickFloor(px); rx = (px - (cmsFloat32Number) x0); y0 = (int) _cmsQuickFloor(py); ry = (py - (cmsFloat32Number) y0); z0 = (int) _cmsQuickFloor(pz); rz = (pz - (cmsFloat32Number) z0); X0 = p -> opta[2] * x0; X1 = X0 + (Input[0] >= 1.0 ? 0 : p->opta[2]); Y0 = p -> opta[1] * y0; Y1 = Y0 + (Input[1] >= 1.0 ? 0 : p->opta[1]); Z0 = p -> opta[0] * z0; Z1 = Z0 + (Input[2] >= 1.0 ? 0 : p->opta[0]); for (OutChan=0; OutChan < TotalOut; OutChan++) { // These are the 6 Tetrahedral c0 = DENS(X0, Y0, Z0); if (rx >= ry && ry >= rz) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z0) - DENS(X1, Y0, Z0); c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (rx >= rz && rz >= ry) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X1, Y0, Z1) - DENS(X1, Y0, Z0); } else if (rz >= rx && rx >= ry) { c1 = DENS(X1, Y0, Z1) - DENS(X0, Y0, Z1); c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else if (ry >= rx && rx >= rz) { c1 = DENS(X1, Y1, Z0) - DENS(X0, Y1, Z0); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (ry >= rz && rz >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X0, Y1, Z1) - DENS(X0, Y1, Z0); } else if (rz >= ry && ry >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z1) - DENS(X0, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else { c1 = c2 = c3 = 0; } Output[OutChan] = c0 + c1 * rx + c2 * ry + c3 * rz; } } #undef DENS static void TetrahedralInterp16(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p) { const cmsUInt16Number* LutTable = (cmsUInt16Number*) p -> Table; cmsS15Fixed16Number fx, fy, fz; cmsS15Fixed16Number rx, ry, rz; int x0, y0, z0; cmsS15Fixed16Number c0, c1, c2, c3, Rest; cmsS15Fixed16Number X0, X1, Y0, Y1, Z0, Z1; cmsUInt32Number TotalOut = p -> nOutputs; fx = _cmsToFixedDomain((int) Input[0] * p -> Domain[0]); fy = _cmsToFixedDomain((int) Input[1] * p -> Domain[1]); fz = _cmsToFixedDomain((int) Input[2] * p -> Domain[2]); x0 = FIXED_TO_INT(fx); y0 = FIXED_TO_INT(fy); z0 = FIXED_TO_INT(fz); rx = FIXED_REST_TO_INT(fx); ry = FIXED_REST_TO_INT(fy); rz = FIXED_REST_TO_INT(fz); X0 = p -> opta[2] * x0; X1 = (Input[0] == 0xFFFFU ? 0 : p->opta[2]); Y0 = p -> opta[1] * y0; Y1 = (Input[1] == 0xFFFFU ? 0 : p->opta[1]); Z0 = p -> opta[0] * z0; Z1 = (Input[2] == 0xFFFFU ? 0 : p->opta[0]); LutTable = &LutTable[X0+Y0+Z0]; // Output should be computed as x = ROUND_FIXED_TO_INT(_cmsToFixedDomain(Rest)) // which expands as: x = (Rest + ((Rest+0x7fff)/0xFFFF) + 0x8000)>>16 // This can be replaced by: t = Rest+0x8001, x = (t + (t>>16))>>16 // at the cost of being off by one at 7fff and 17ffe. if (rx >= ry) { if (ry >= rz) { Y1 += X1; Z1 += Y1; for (; TotalOut; TotalOut--) { c1 = LutTable[X1]; c2 = LutTable[Y1]; c3 = LutTable[Z1]; c0 = *LutTable++; c3 -= c2; c2 -= c1; c1 -= c0; Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; *Output++ = (cmsUInt16Number) c0 + ((Rest + (Rest>>16))>>16); } } else if (rz >= rx) { X1 += Z1; Y1 += X1; for (; TotalOut; TotalOut--) { c1 = LutTable[X1]; c2 = LutTable[Y1]; c3 = LutTable[Z1]; c0 = *LutTable++; c2 -= c1; c1 -= c3; c3 -= c0; Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; *Output++ = (cmsUInt16Number) c0 + ((Rest + (Rest>>16))>>16); } } else { Z1 += X1; Y1 += Z1; for (; TotalOut; TotalOut--) { c1 = LutTable[X1]; c2 = LutTable[Y1]; c3 = LutTable[Z1]; c0 = *LutTable++; c2 -= c3; c3 -= c1; c1 -= c0; Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; *Output++ = (cmsUInt16Number) c0 + ((Rest + (Rest>>16))>>16); } } } else { if (rx >= rz) { X1 += Y1; Z1 += X1; for (; TotalOut; TotalOut--) { c1 = LutTable[X1]; c2 = LutTable[Y1]; c3 = LutTable[Z1]; c0 = *LutTable++; c3 -= c1; c1 -= c2; c2 -= c0; Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; *Output++ = (cmsUInt16Number) c0 + ((Rest + (Rest>>16))>>16); } } else if (ry >= rz) { Z1 += Y1; X1 += Z1; for (; TotalOut; TotalOut--) { c1 = LutTable[X1]; c2 = LutTable[Y1]; c3 = LutTable[Z1]; c0 = *LutTable++; c1 -= c3; c3 -= c2; c2 -= c0; Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; *Output++ = (cmsUInt16Number) c0 + ((Rest + (Rest>>16))>>16); } } else { Y1 += Z1; X1 += Y1; for (; TotalOut; TotalOut--) { c1 = LutTable[X1]; c2 = LutTable[Y1]; c3 = LutTable[Z1]; c0 = *LutTable++; c1 -= c2; c2 -= c3; c3 -= c0; Rest = c1 * rx + c2 * ry + c3 * rz + 0x8001; *Output++ = (cmsUInt16Number) c0 + ((Rest + (Rest>>16))>>16); } } } } #define DENS(i,j,k) (LutTable[(i)+(j)+(k)+OutChan]) static void Eval4Inputs(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16) { const cmsUInt16Number* LutTable; cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, rk; int K0, K1; cmsS15Fixed16Number fx, fy, fz; cmsS15Fixed16Number rx, ry, rz; int x0, y0, z0; cmsS15Fixed16Number X0, X1, Y0, Y1, Z0, Z1; cmsUInt32Number i; cmsS15Fixed16Number c0, c1, c2, c3, Rest; cmsUInt32Number OutChan; cmsUInt16Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; fk = _cmsToFixedDomain((int) Input[0] * p16 -> Domain[0]); fx = _cmsToFixedDomain((int) Input[1] * p16 -> Domain[1]); fy = _cmsToFixedDomain((int) Input[2] * p16 -> Domain[2]); fz = _cmsToFixedDomain((int) Input[3] * p16 -> Domain[3]); k0 = FIXED_TO_INT(fk); x0 = FIXED_TO_INT(fx); y0 = FIXED_TO_INT(fy); z0 = FIXED_TO_INT(fz); rk = FIXED_REST_TO_INT(fk); rx = FIXED_REST_TO_INT(fx); ry = FIXED_REST_TO_INT(fy); rz = FIXED_REST_TO_INT(fz); K0 = p16 -> opta[3] * k0; K1 = K0 + (Input[0] == 0xFFFFU ? 0 : p16->opta[3]); X0 = p16 -> opta[2] * x0; X1 = X0 + (Input[1] == 0xFFFFU ? 0 : p16->opta[2]); Y0 = p16 -> opta[1] * y0; Y1 = Y0 + (Input[2] == 0xFFFFU ? 0 : p16->opta[1]); Z0 = p16 -> opta[0] * z0; Z1 = Z0 + (Input[3] == 0xFFFFU ? 0 : p16->opta[0]); LutTable = (cmsUInt16Number*) p16 -> Table; LutTable += K0; for (OutChan=0; OutChan < p16 -> nOutputs; OutChan++) { c0 = DENS(X0, Y0, Z0); if (rx >= ry && ry >= rz) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z0) - DENS(X1, Y0, Z0); c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (rx >= rz && rz >= ry) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X1, Y0, Z1) - DENS(X1, Y0, Z0); } else if (rz >= rx && rx >= ry) { c1 = DENS(X1, Y0, Z1) - DENS(X0, Y0, Z1); c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else if (ry >= rx && rx >= rz) { c1 = DENS(X1, Y1, Z0) - DENS(X0, Y1, Z0); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (ry >= rz && rz >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X0, Y1, Z1) - DENS(X0, Y1, Z0); } else if (rz >= ry && ry >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z1) - DENS(X0, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else { c1 = c2 = c3 = 0; } Rest = c1 * rx + c2 * ry + c3 * rz; Tmp1[OutChan] = (cmsUInt16Number) c0 + ROUND_FIXED_TO_INT(_cmsToFixedDomain(Rest)); } LutTable = (cmsUInt16Number*) p16 -> Table; LutTable += K1; for (OutChan=0; OutChan < p16 -> nOutputs; OutChan++) { c0 = DENS(X0, Y0, Z0); if (rx >= ry && ry >= rz) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z0) - DENS(X1, Y0, Z0); c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (rx >= rz && rz >= ry) { c1 = DENS(X1, Y0, Z0) - c0; c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X1, Y0, Z1) - DENS(X1, Y0, Z0); } else if (rz >= rx && rx >= ry) { c1 = DENS(X1, Y0, Z1) - DENS(X0, Y0, Z1); c2 = DENS(X1, Y1, Z1) - DENS(X1, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else if (ry >= rx && rx >= rz) { c1 = DENS(X1, Y1, Z0) - DENS(X0, Y1, Z0); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X1, Y1, Z1) - DENS(X1, Y1, Z0); } else if (ry >= rz && rz >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z0) - c0; c3 = DENS(X0, Y1, Z1) - DENS(X0, Y1, Z0); } else if (rz >= ry && ry >= rx) { c1 = DENS(X1, Y1, Z1) - DENS(X0, Y1, Z1); c2 = DENS(X0, Y1, Z1) - DENS(X0, Y0, Z1); c3 = DENS(X0, Y0, Z1) - c0; } else { c1 = c2 = c3 = 0; } Rest = c1 * rx + c2 * ry + c3 * rz; Tmp2[OutChan] = (cmsUInt16Number) c0 + ROUND_FIXED_TO_INT(_cmsToFixedDomain(Rest)); } for (i=0; i < p16 -> nOutputs; i++) { Output[i] = LinearInterp(rk, Tmp1[i], Tmp2[i]); } } #undef DENS // For more that 3 inputs (i.e., CMYK) // evaluate two 3-dimensional interpolations and then linearly interpolate between them. static void Eval4InputsFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { const cmsFloat32Number* LutTable = (cmsFloat32Number*) p -> Table; cmsFloat32Number rest; cmsFloat32Number pk; int k0, K0, K1; const cmsFloat32Number* T; cmsUInt32Number i; cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; pk = Input[0] * p->Domain[0]; k0 = _cmsQuickFloor(pk); rest = pk - (cmsFloat32Number) k0; K0 = p -> opta[3] * k0; K1 = K0 + (Input[0] >= 1.0 ? 0 : p->opta[3]); p1 = *p; memmove(&p1.Domain[0], &p ->Domain[1], 3*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; TetrahedralInterpFloat(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; TetrahedralInterpFloat(Input + 1, Tmp2, &p1); for (i=0; i < p -> nOutputs; i++) { cmsFloat32Number y0 = Tmp1[i]; cmsFloat32Number y1 = Tmp2[i]; Output[i] = y0 + (y1 - y0) * rest; } } static void Eval5Inputs(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16) { const cmsUInt16Number* LutTable = (cmsUInt16Number*) p16 -> Table; cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, rk; int K0, K1; const cmsUInt16Number* T; cmsUInt32Number i; cmsUInt16Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; fk = _cmsToFixedDomain((cmsS15Fixed16Number) Input[0] * p16 -> Domain[0]); k0 = FIXED_TO_INT(fk); rk = FIXED_REST_TO_INT(fk); K0 = p16 -> opta[4] * k0; K1 = p16 -> opta[4] * (k0 + (Input[0] != 0xFFFFU ? 1 : 0)); p1 = *p16; memmove(&p1.Domain[0], &p16 ->Domain[1], 4*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval4Inputs(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval4Inputs(Input + 1, Tmp2, &p1); for (i=0; i < p16 -> nOutputs; i++) { Output[i] = LinearInterp(rk, Tmp1[i], Tmp2[i]); } } static void Eval5InputsFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { const cmsFloat32Number* LutTable = (cmsFloat32Number*) p -> Table; cmsFloat32Number rest; cmsFloat32Number pk; int k0, K0, K1; const cmsFloat32Number* T; cmsUInt32Number i; cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; pk = Input[0] * p->Domain[0]; k0 = _cmsQuickFloor(pk); rest = pk - (cmsFloat32Number) k0; K0 = p -> opta[4] * k0; K1 = K0 + (Input[0] >= 1.0 ? 0 : p->opta[4]); p1 = *p; memmove(&p1.Domain[0], &p ->Domain[1], 4*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval4InputsFloat(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval4InputsFloat(Input + 1, Tmp2, &p1); for (i=0; i < p -> nOutputs; i++) { cmsFloat32Number y0 = Tmp1[i]; cmsFloat32Number y1 = Tmp2[i]; Output[i] = y0 + (y1 - y0) * rest; } } static void Eval6Inputs(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16) { const cmsUInt16Number* LutTable = (cmsUInt16Number*) p16 -> Table; cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, rk; int K0, K1; const cmsUInt16Number* T; cmsUInt32Number i; cmsUInt16Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; fk = _cmsToFixedDomain((cmsS15Fixed16Number) Input[0] * p16 -> Domain[0]); k0 = FIXED_TO_INT(fk); rk = FIXED_REST_TO_INT(fk); K0 = p16 -> opta[5] * k0; K1 = p16 -> opta[5] * (k0 + (Input[0] != 0xFFFFU ? 1 : 0)); p1 = *p16; memmove(&p1.Domain[0], &p16 ->Domain[1], 5*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval5Inputs(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval5Inputs(Input + 1, Tmp2, &p1); for (i=0; i < p16 -> nOutputs; i++) { Output[i] = LinearInterp(rk, Tmp1[i], Tmp2[i]); } } static void Eval6InputsFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { const cmsFloat32Number* LutTable = (cmsFloat32Number*) p -> Table; cmsFloat32Number rest; cmsFloat32Number pk; int k0, K0, K1; const cmsFloat32Number* T; cmsUInt32Number i; cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; pk = Input[0] * p->Domain[0]; k0 = _cmsQuickFloor(pk); rest = pk - (cmsFloat32Number) k0; K0 = p -> opta[5] * k0; K1 = K0 + (Input[0] >= 1.0 ? 0 : p->opta[5]); p1 = *p; memmove(&p1.Domain[0], &p ->Domain[1], 5*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval5InputsFloat(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval5InputsFloat(Input + 1, Tmp2, &p1); for (i=0; i < p -> nOutputs; i++) { cmsFloat32Number y0 = Tmp1[i]; cmsFloat32Number y1 = Tmp2[i]; Output[i] = y0 + (y1 - y0) * rest; } } static void Eval7Inputs(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16) { const cmsUInt16Number* LutTable = (cmsUInt16Number*) p16 -> Table; cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, rk; int K0, K1; const cmsUInt16Number* T; cmsUInt32Number i; cmsUInt16Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; fk = _cmsToFixedDomain((cmsS15Fixed16Number) Input[0] * p16 -> Domain[0]); k0 = FIXED_TO_INT(fk); rk = FIXED_REST_TO_INT(fk); K0 = p16 -> opta[6] * k0; K1 = p16 -> opta[6] * (k0 + (Input[0] != 0xFFFFU ? 1 : 0)); p1 = *p16; memmove(&p1.Domain[0], &p16 ->Domain[1], 6*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval6Inputs(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval6Inputs(Input + 1, Tmp2, &p1); for (i=0; i < p16 -> nOutputs; i++) { Output[i] = LinearInterp(rk, Tmp1[i], Tmp2[i]); } } static void Eval7InputsFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { const cmsFloat32Number* LutTable = (cmsFloat32Number*) p -> Table; cmsFloat32Number rest; cmsFloat32Number pk; int k0, K0, K1; const cmsFloat32Number* T; cmsUInt32Number i; cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; pk = Input[0] * p->Domain[0]; k0 = _cmsQuickFloor(pk); rest = pk - (cmsFloat32Number) k0; K0 = p -> opta[6] * k0; K1 = K0 + (Input[0] >= 1.0 ? 0 : p->opta[6]); p1 = *p; memmove(&p1.Domain[0], &p ->Domain[1], 6*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval6InputsFloat(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval6InputsFloat(Input + 1, Tmp2, &p1); for (i=0; i < p -> nOutputs; i++) { cmsFloat32Number y0 = Tmp1[i]; cmsFloat32Number y1 = Tmp2[i]; Output[i] = y0 + (y1 - y0) * rest; } } static void Eval8Inputs(register const cmsUInt16Number Input[], register cmsUInt16Number Output[], register const cmsInterpParams* p16) { const cmsUInt16Number* LutTable = (cmsUInt16Number*) p16 -> Table; cmsS15Fixed16Number fk; cmsS15Fixed16Number k0, rk; int K0, K1; const cmsUInt16Number* T; cmsUInt32Number i; cmsUInt16Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; fk = _cmsToFixedDomain((cmsS15Fixed16Number) Input[0] * p16 -> Domain[0]); k0 = FIXED_TO_INT(fk); rk = FIXED_REST_TO_INT(fk); K0 = p16 -> opta[7] * k0; K1 = p16 -> opta[7] * (k0 + (Input[0] != 0xFFFFU ? 1 : 0)); p1 = *p16; memmove(&p1.Domain[0], &p16 ->Domain[1], 7*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval7Inputs(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval7Inputs(Input + 1, Tmp2, &p1); for (i=0; i < p16 -> nOutputs; i++) { Output[i] = LinearInterp(rk, Tmp1[i], Tmp2[i]); } } static void Eval8InputsFloat(const cmsFloat32Number Input[], cmsFloat32Number Output[], const cmsInterpParams* p) { const cmsFloat32Number* LutTable = (cmsFloat32Number*) p -> Table; cmsFloat32Number rest; cmsFloat32Number pk; int k0, K0, K1; const cmsFloat32Number* T; cmsUInt32Number i; cmsFloat32Number Tmp1[MAX_STAGE_CHANNELS], Tmp2[MAX_STAGE_CHANNELS]; cmsInterpParams p1; pk = Input[0] * p->Domain[0]; k0 = _cmsQuickFloor(pk); rest = pk - (cmsFloat32Number) k0; K0 = p -> opta[7] * k0; K1 = K0 + (Input[0] >= 1.0 ? 0 : p->opta[7]); p1 = *p; memmove(&p1.Domain[0], &p ->Domain[1], 7*sizeof(cmsUInt32Number)); T = LutTable + K0; p1.Table = T; Eval7InputsFloat(Input + 1, Tmp1, &p1); T = LutTable + K1; p1.Table = T; Eval7InputsFloat(Input + 1, Tmp2, &p1); for (i=0; i < p -> nOutputs; i++) { cmsFloat32Number y0 = Tmp1[i]; cmsFloat32Number y1 = Tmp2[i]; Output[i] = y0 + (y1 - y0) * rest; } } // The default factory static cmsInterpFunction DefaultInterpolatorsFactory(cmsUInt32Number nInputChannels, cmsUInt32Number nOutputChannels, cmsUInt32Number dwFlags) { cmsInterpFunction Interpolation; cmsBool IsFloat = (dwFlags & CMS_LERP_FLAGS_FLOAT); cmsBool IsTrilinear = (dwFlags & CMS_LERP_FLAGS_TRILINEAR); memset(&Interpolation, 0, sizeof(Interpolation)); // Safety check if (nInputChannels >= 4 && nOutputChannels >= MAX_STAGE_CHANNELS) return Interpolation; switch (nInputChannels) { case 1: // Gray LUT / linear if (nOutputChannels == 1) { if (IsFloat) Interpolation.LerpFloat = LinLerp1Dfloat; else Interpolation.Lerp16 = LinLerp1D; } else { if (IsFloat) Interpolation.LerpFloat = Eval1InputFloat; else Interpolation.Lerp16 = Eval1Input; } break; case 2: // Duotone if (IsFloat) Interpolation.LerpFloat = BilinearInterpFloat; else Interpolation.Lerp16 = BilinearInterp16; break; case 3: // RGB et al if (IsTrilinear) { if (IsFloat) Interpolation.LerpFloat = TrilinearInterpFloat; else Interpolation.Lerp16 = TrilinearInterp16; } else { if (IsFloat) Interpolation.LerpFloat = TetrahedralInterpFloat; else { Interpolation.Lerp16 = TetrahedralInterp16; } } break; case 4: // CMYK lut if (IsFloat) Interpolation.LerpFloat = Eval4InputsFloat; else Interpolation.Lerp16 = Eval4Inputs; break; case 5: // 5 Inks if (IsFloat) Interpolation.LerpFloat = Eval5InputsFloat; else Interpolation.Lerp16 = Eval5Inputs; break; case 6: // 6 Inks if (IsFloat) Interpolation.LerpFloat = Eval6InputsFloat; else Interpolation.Lerp16 = Eval6Inputs; break; case 7: // 7 inks if (IsFloat) Interpolation.LerpFloat = Eval7InputsFloat; else Interpolation.Lerp16 = Eval7Inputs; break; case 8: // 8 inks if (IsFloat) Interpolation.LerpFloat = Eval8InputsFloat; else Interpolation.Lerp16 = Eval8Inputs; break; break; default: Interpolation.Lerp16 = NULL; } return Interpolation; } lcms2-2.5/src/cmsvirt.c0000644002406300000240000010710512163060730014351 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Virtual (built-in) profiles // ----------------------------------------------------------------------------------- static cmsBool SetTextTags(cmsHPROFILE hProfile, const wchar_t* Description) { cmsMLU *DescriptionMLU, *CopyrightMLU; cmsBool rc = FALSE; cmsContext ContextID = cmsGetProfileContextID(hProfile); DescriptionMLU = cmsMLUalloc(ContextID, 1); CopyrightMLU = cmsMLUalloc(ContextID, 1); if (DescriptionMLU == NULL || CopyrightMLU == NULL) goto Error; if (!cmsMLUsetWide(DescriptionMLU, "en", "US", Description)) goto Error; if (!cmsMLUsetWide(CopyrightMLU, "en", "US", L"No copyright, use freely")) goto Error; if (!cmsWriteTag(hProfile, cmsSigProfileDescriptionTag, DescriptionMLU)) goto Error; if (!cmsWriteTag(hProfile, cmsSigCopyrightTag, CopyrightMLU)) goto Error; rc = TRUE; Error: if (DescriptionMLU) cmsMLUfree(DescriptionMLU); if (CopyrightMLU) cmsMLUfree(CopyrightMLU); return rc; } static cmsBool SetSeqDescTag(cmsHPROFILE hProfile, const char* Model) { cmsBool rc = FALSE; cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsSEQ* Seq = cmsAllocProfileSequenceDescription(ContextID, 1); if (Seq == NULL) return FALSE; Seq->seq[0].deviceMfg = (cmsSignature) 0; Seq->seq[0].deviceModel = (cmsSignature) 0; #ifdef CMS_DONT_USE_INT64 Seq->seq[0].attributes[0] = 0; Seq->seq[0].attributes[1] = 0; #else Seq->seq[0].attributes = 0; #endif Seq->seq[0].technology = (cmsTechnologySignature) 0; cmsMLUsetASCII( Seq->seq[0].Manufacturer, cmsNoLanguage, cmsNoCountry, "Little CMS"); cmsMLUsetASCII( Seq->seq[0].Model, cmsNoLanguage, cmsNoCountry, Model); if (!_cmsWriteProfileSequence(hProfile, Seq)) goto Error; rc = TRUE; Error: if (Seq) cmsFreeProfileSequenceDescription(Seq); return rc; } // This function creates a profile based on White point, primaries and // transfer functions. cmsHPROFILE CMSEXPORT cmsCreateRGBProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint, const cmsCIExyYTRIPLE* Primaries, cmsToneCurve* const TransferFunction[3]) { cmsHPROFILE hICC; cmsMAT3 MColorants; cmsCIEXYZTRIPLE Colorants; cmsCIExyY MaxWhite; cmsMAT3 CHAD; cmsCIEXYZ WhitePointXYZ; hICC = cmsCreateProfilePlaceholder(ContextID); if (!hICC) // can't allocate return NULL; cmsSetProfileVersion(hICC, 4.3); cmsSetDeviceClass(hICC, cmsSigDisplayClass); cmsSetColorSpace(hICC, cmsSigRgbData); cmsSetPCS(hICC, cmsSigXYZData); cmsSetHeaderRenderingIntent(hICC, INTENT_PERCEPTUAL); // Implement profile using following tags: // // 1 cmsSigProfileDescriptionTag // 2 cmsSigMediaWhitePointTag // 3 cmsSigRedColorantTag // 4 cmsSigGreenColorantTag // 5 cmsSigBlueColorantTag // 6 cmsSigRedTRCTag // 7 cmsSigGreenTRCTag // 8 cmsSigBlueTRCTag // 9 Chromatic adaptation Tag // This conforms a standard RGB DisplayProfile as says ICC, and then I add (As per addendum II) // 10 cmsSigChromaticityTag if (!SetTextTags(hICC, L"RGB built-in")) goto Error; if (WhitePoint) { if (!cmsWriteTag(hICC, cmsSigMediaWhitePointTag, cmsD50_XYZ())) goto Error; cmsxyY2XYZ(&WhitePointXYZ, WhitePoint); _cmsAdaptationMatrix(&CHAD, NULL, &WhitePointXYZ, cmsD50_XYZ()); // This is a V4 tag, but many CMM does read and understand it no matter which version if (!cmsWriteTag(hICC, cmsSigChromaticAdaptationTag, (void*) &CHAD)) goto Error; } if (WhitePoint && Primaries) { MaxWhite.x = WhitePoint -> x; MaxWhite.y = WhitePoint -> y; MaxWhite.Y = 1.0; if (!_cmsBuildRGB2XYZtransferMatrix(&MColorants, &MaxWhite, Primaries)) goto Error; Colorants.Red.X = MColorants.v[0].n[0]; Colorants.Red.Y = MColorants.v[1].n[0]; Colorants.Red.Z = MColorants.v[2].n[0]; Colorants.Green.X = MColorants.v[0].n[1]; Colorants.Green.Y = MColorants.v[1].n[1]; Colorants.Green.Z = MColorants.v[2].n[1]; Colorants.Blue.X = MColorants.v[0].n[2]; Colorants.Blue.Y = MColorants.v[1].n[2]; Colorants.Blue.Z = MColorants.v[2].n[2]; if (!cmsWriteTag(hICC, cmsSigRedColorantTag, (void*) &Colorants.Red)) goto Error; if (!cmsWriteTag(hICC, cmsSigBlueColorantTag, (void*) &Colorants.Blue)) goto Error; if (!cmsWriteTag(hICC, cmsSigGreenColorantTag, (void*) &Colorants.Green)) goto Error; } if (TransferFunction) { // Tries to minimize space. Thanks to Richard Hughes for this nice idea if (!cmsWriteTag(hICC, cmsSigRedTRCTag, (void*) TransferFunction[0])) goto Error; if (TransferFunction[1] == TransferFunction[0]) { if (!cmsLinkTag (hICC, cmsSigGreenTRCTag, cmsSigRedTRCTag)) goto Error; } else { if (!cmsWriteTag(hICC, cmsSigGreenTRCTag, (void*) TransferFunction[1])) goto Error; } if (TransferFunction[2] == TransferFunction[0]) { if (!cmsLinkTag (hICC, cmsSigBlueTRCTag, cmsSigRedTRCTag)) goto Error; } else { if (!cmsWriteTag(hICC, cmsSigBlueTRCTag, (void*) TransferFunction[2])) goto Error; } } if (Primaries) { if (!cmsWriteTag(hICC, cmsSigChromaticityTag, (void*) Primaries)) goto Error; } return hICC; Error: if (hICC) cmsCloseProfile(hICC); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateRGBProfile(const cmsCIExyY* WhitePoint, const cmsCIExyYTRIPLE* Primaries, cmsToneCurve* const TransferFunction[3]) { return cmsCreateRGBProfileTHR(NULL, WhitePoint, Primaries, TransferFunction); } // This function creates a profile based on White point and transfer function. cmsHPROFILE CMSEXPORT cmsCreateGrayProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint, const cmsToneCurve* TransferFunction) { cmsHPROFILE hICC; cmsCIEXYZ tmp; hICC = cmsCreateProfilePlaceholder(ContextID); if (!hICC) // can't allocate return NULL; cmsSetProfileVersion(hICC, 4.3); cmsSetDeviceClass(hICC, cmsSigDisplayClass); cmsSetColorSpace(hICC, cmsSigGrayData); cmsSetPCS(hICC, cmsSigXYZData); cmsSetHeaderRenderingIntent(hICC, INTENT_PERCEPTUAL); // Implement profile using following tags: // // 1 cmsSigProfileDescriptionTag // 2 cmsSigMediaWhitePointTag // 3 cmsSigGrayTRCTag // This conforms a standard Gray DisplayProfile // Fill-in the tags if (!SetTextTags(hICC, L"gray built-in")) goto Error; if (WhitePoint) { cmsxyY2XYZ(&tmp, WhitePoint); if (!cmsWriteTag(hICC, cmsSigMediaWhitePointTag, (void*) &tmp)) goto Error; } if (TransferFunction) { if (!cmsWriteTag(hICC, cmsSigGrayTRCTag, (void*) TransferFunction)) goto Error; } return hICC; Error: if (hICC) cmsCloseProfile(hICC); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateGrayProfile(const cmsCIExyY* WhitePoint, const cmsToneCurve* TransferFunction) { return cmsCreateGrayProfileTHR(NULL, WhitePoint, TransferFunction); } // This is a devicelink operating in the target colorspace with as many transfer functions as components cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLinkTHR(cmsContext ContextID, cmsColorSpaceSignature ColorSpace, cmsToneCurve* const TransferFunctions[]) { cmsHPROFILE hICC; cmsPipeline* Pipeline; int nChannels; hICC = cmsCreateProfilePlaceholder(ContextID); if (!hICC) return NULL; cmsSetProfileVersion(hICC, 4.3); cmsSetDeviceClass(hICC, cmsSigLinkClass); cmsSetColorSpace(hICC, ColorSpace); cmsSetPCS(hICC, ColorSpace); cmsSetHeaderRenderingIntent(hICC, INTENT_PERCEPTUAL); // Set up channels nChannels = cmsChannelsOf(ColorSpace); // Creates a Pipeline with prelinearization step only Pipeline = cmsPipelineAlloc(ContextID, nChannels, nChannels); if (Pipeline == NULL) goto Error; // Copy tables to Pipeline if (!cmsPipelineInsertStage(Pipeline, cmsAT_BEGIN, cmsStageAllocToneCurves(ContextID, nChannels, TransferFunctions))) goto Error; // Create tags if (!SetTextTags(hICC, L"Linearization built-in")) goto Error; if (!cmsWriteTag(hICC, cmsSigAToB0Tag, (void*) Pipeline)) goto Error; if (!SetSeqDescTag(hICC, "Linearization built-in")) goto Error; // Pipeline is already on virtual profile cmsPipelineFree(Pipeline); // Ok, done return hICC; Error: cmsPipelineFree(Pipeline); if (hICC) cmsCloseProfile(hICC); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateLinearizationDeviceLink(cmsColorSpaceSignature ColorSpace, cmsToneCurve* const TransferFunctions[]) { return cmsCreateLinearizationDeviceLinkTHR(NULL, ColorSpace, TransferFunctions); } // Ink-limiting algorithm // // Sum = C + M + Y + K // If Sum > InkLimit // Ratio= 1 - (Sum - InkLimit) / (C + M + Y) // if Ratio <0 // Ratio=0 // endif // Else // Ratio=1 // endif // // C = Ratio * C // M = Ratio * M // Y = Ratio * Y // K: Does not change static int InkLimitingSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { cmsFloat64Number InkLimit = *(cmsFloat64Number *) Cargo; cmsFloat64Number SumCMY, SumCMYK, Ratio; InkLimit = (InkLimit * 655.35); SumCMY = In[0] + In[1] + In[2]; SumCMYK = SumCMY + In[3]; if (SumCMYK > InkLimit) { Ratio = 1 - ((SumCMYK - InkLimit) / SumCMY); if (Ratio < 0) Ratio = 0; } else Ratio = 1; Out[0] = _cmsQuickSaturateWord(In[0] * Ratio); // C Out[1] = _cmsQuickSaturateWord(In[1] * Ratio); // M Out[2] = _cmsQuickSaturateWord(In[2] * Ratio); // Y Out[3] = In[3]; // K (untouched) return TRUE; } // This is a devicelink operating in CMYK for ink-limiting cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLinkTHR(cmsContext ContextID, cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit) { cmsHPROFILE hICC; cmsPipeline* LUT; cmsStage* CLUT; int nChannels; if (ColorSpace != cmsSigCmykData) { cmsSignalError(ContextID, cmsERROR_COLORSPACE_CHECK, "InkLimiting: Only CMYK currently supported"); return NULL; } if (Limit < 0.0 || Limit > 400) { cmsSignalError(ContextID, cmsERROR_RANGE, "InkLimiting: Limit should be between 0..400"); if (Limit < 0) Limit = 0; if (Limit > 400) Limit = 400; } hICC = cmsCreateProfilePlaceholder(ContextID); if (!hICC) // can't allocate return NULL; cmsSetProfileVersion(hICC, 4.3); cmsSetDeviceClass(hICC, cmsSigLinkClass); cmsSetColorSpace(hICC, ColorSpace); cmsSetPCS(hICC, ColorSpace); cmsSetHeaderRenderingIntent(hICC, INTENT_PERCEPTUAL); // Creates a Pipeline with 3D grid only LUT = cmsPipelineAlloc(ContextID, 4, 4); if (LUT == NULL) goto Error; nChannels = cmsChannelsOf(ColorSpace); CLUT = cmsStageAllocCLut16bit(ContextID, 17, nChannels, nChannels, NULL); if (CLUT == NULL) goto Error; if (!cmsStageSampleCLut16bit(CLUT, InkLimitingSampler, (void*) &Limit, 0)) goto Error; if (!cmsPipelineInsertStage(LUT, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, nChannels)) || !cmsPipelineInsertStage(LUT, cmsAT_END, CLUT) || !cmsPipelineInsertStage(LUT, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, nChannels))) goto Error; // Create tags if (!SetTextTags(hICC, L"ink-limiting built-in")) goto Error; if (!cmsWriteTag(hICC, cmsSigAToB0Tag, (void*) LUT)) goto Error; if (!SetSeqDescTag(hICC, "ink-limiting built-in")) goto Error; // cmsPipeline is already on virtual profile cmsPipelineFree(LUT); // Ok, done return hICC; Error: if (LUT != NULL) cmsPipelineFree(LUT); if (hICC != NULL) cmsCloseProfile(hICC); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateInkLimitingDeviceLink(cmsColorSpaceSignature ColorSpace, cmsFloat64Number Limit) { return cmsCreateInkLimitingDeviceLinkTHR(NULL, ColorSpace, Limit); } // Creates a fake Lab identity. cmsHPROFILE CMSEXPORT cmsCreateLab2ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint) { cmsHPROFILE hProfile; cmsPipeline* LUT = NULL; hProfile = cmsCreateRGBProfileTHR(ContextID, WhitePoint == NULL ? cmsD50_xyY() : WhitePoint, NULL, NULL); if (hProfile == NULL) return NULL; cmsSetProfileVersion(hProfile, 2.1); cmsSetDeviceClass(hProfile, cmsSigAbstractClass); cmsSetColorSpace(hProfile, cmsSigLabData); cmsSetPCS(hProfile, cmsSigLabData); if (!SetTextTags(hProfile, L"Lab identity built-in")) return NULL; // An identity LUT is all we need LUT = cmsPipelineAlloc(ContextID, 3, 3); if (LUT == NULL) goto Error; if (!cmsPipelineInsertStage(LUT, cmsAT_BEGIN, _cmsStageAllocIdentityCLut(ContextID, 3))) goto Error; if (!cmsWriteTag(hProfile, cmsSigAToB0Tag, LUT)) goto Error; cmsPipelineFree(LUT); return hProfile; Error: if (LUT != NULL) cmsPipelineFree(LUT); if (hProfile != NULL) cmsCloseProfile(hProfile); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateLab2Profile(const cmsCIExyY* WhitePoint) { return cmsCreateLab2ProfileTHR(NULL, WhitePoint); } // Creates a fake Lab V4 identity. cmsHPROFILE CMSEXPORT cmsCreateLab4ProfileTHR(cmsContext ContextID, const cmsCIExyY* WhitePoint) { cmsHPROFILE hProfile; cmsPipeline* LUT = NULL; hProfile = cmsCreateRGBProfileTHR(ContextID, WhitePoint == NULL ? cmsD50_xyY() : WhitePoint, NULL, NULL); if (hProfile == NULL) return NULL; cmsSetProfileVersion(hProfile, 4.3); cmsSetDeviceClass(hProfile, cmsSigAbstractClass); cmsSetColorSpace(hProfile, cmsSigLabData); cmsSetPCS(hProfile, cmsSigLabData); if (!SetTextTags(hProfile, L"Lab identity built-in")) goto Error; // An empty LUTs is all we need LUT = cmsPipelineAlloc(ContextID, 3, 3); if (LUT == NULL) goto Error; if (!cmsPipelineInsertStage(LUT, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 3))) goto Error; if (!cmsWriteTag(hProfile, cmsSigAToB0Tag, LUT)) goto Error; cmsPipelineFree(LUT); return hProfile; Error: if (LUT != NULL) cmsPipelineFree(LUT); if (hProfile != NULL) cmsCloseProfile(hProfile); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateLab4Profile(const cmsCIExyY* WhitePoint) { return cmsCreateLab4ProfileTHR(NULL, WhitePoint); } // Creates a fake XYZ identity cmsHPROFILE CMSEXPORT cmsCreateXYZProfileTHR(cmsContext ContextID) { cmsHPROFILE hProfile; cmsPipeline* LUT = NULL; hProfile = cmsCreateRGBProfileTHR(ContextID, cmsD50_xyY(), NULL, NULL); if (hProfile == NULL) return NULL; cmsSetProfileVersion(hProfile, 4.3); cmsSetDeviceClass(hProfile, cmsSigAbstractClass); cmsSetColorSpace(hProfile, cmsSigXYZData); cmsSetPCS(hProfile, cmsSigXYZData); if (!SetTextTags(hProfile, L"XYZ identity built-in")) goto Error; // An identity LUT is all we need LUT = cmsPipelineAlloc(ContextID, 3, 3); if (LUT == NULL) goto Error; if (!cmsPipelineInsertStage(LUT, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 3))) goto Error; if (!cmsWriteTag(hProfile, cmsSigAToB0Tag, LUT)) goto Error; cmsPipelineFree(LUT); return hProfile; Error: if (LUT != NULL) cmsPipelineFree(LUT); if (hProfile != NULL) cmsCloseProfile(hProfile); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateXYZProfile(void) { return cmsCreateXYZProfileTHR(NULL); } //sRGB Curves are defined by: // //If RsRGB,GsRGB, BsRGB < 0.04045 // // R = RsRGB / 12.92 // G = GsRGB / 12.92 // B = BsRGB / 12.92 // // //else if RsRGB,GsRGB, BsRGB >= 0.04045 // // R = ((RsRGB + 0.055) / 1.055)^2.4 // G = ((GsRGB + 0.055) / 1.055)^2.4 // B = ((BsRGB + 0.055) / 1.055)^2.4 static cmsToneCurve* Build_sRGBGamma(cmsContext ContextID) { cmsFloat64Number Parameters[5]; Parameters[0] = 2.4; Parameters[1] = 1. / 1.055; Parameters[2] = 0.055 / 1.055; Parameters[3] = 1. / 12.92; Parameters[4] = 0.04045; return cmsBuildParametricToneCurve(ContextID, 4, Parameters); } // Create the ICC virtual profile for sRGB space cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfileTHR(cmsContext ContextID) { cmsCIExyY D65; cmsCIExyYTRIPLE Rec709Primaries = { {0.6400, 0.3300, 1.0}, {0.3000, 0.6000, 1.0}, {0.1500, 0.0600, 1.0} }; cmsToneCurve* Gamma22[3]; cmsHPROFILE hsRGB; cmsWhitePointFromTemp(&D65, 6504); Gamma22[0] = Gamma22[1] = Gamma22[2] = Build_sRGBGamma(ContextID); if (Gamma22[0] == NULL) return NULL; hsRGB = cmsCreateRGBProfileTHR(ContextID, &D65, &Rec709Primaries, Gamma22); cmsFreeToneCurve(Gamma22[0]); if (hsRGB == NULL) return NULL; if (!SetTextTags(hsRGB, L"sRGB built-in")) { cmsCloseProfile(hsRGB); return NULL; } return hsRGB; } cmsHPROFILE CMSEXPORT cmsCreate_sRGBProfile(void) { return cmsCreate_sRGBProfileTHR(NULL); } typedef struct { cmsFloat64Number Brightness; cmsFloat64Number Contrast; cmsFloat64Number Hue; cmsFloat64Number Saturation; cmsCIEXYZ WPsrc, WPdest; } BCHSWADJUSTS, *LPBCHSWADJUSTS; static int bchswSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { cmsCIELab LabIn, LabOut; cmsCIELCh LChIn, LChOut; cmsCIEXYZ XYZ; LPBCHSWADJUSTS bchsw = (LPBCHSWADJUSTS) Cargo; cmsLabEncoded2Float(&LabIn, In); cmsLab2LCh(&LChIn, &LabIn); // Do some adjusts on LCh LChOut.L = LChIn.L * bchsw ->Contrast + bchsw ->Brightness; LChOut.C = LChIn.C + bchsw -> Saturation; LChOut.h = LChIn.h + bchsw -> Hue; cmsLCh2Lab(&LabOut, &LChOut); // Move white point in Lab cmsLab2XYZ(&bchsw ->WPsrc, &XYZ, &LabOut); cmsXYZ2Lab(&bchsw ->WPdest, &LabOut, &XYZ); // Back to encoded cmsFloat2LabEncoded(Out, &LabOut); return TRUE; } // Creates an abstract profile operating in Lab space for Brightness, // contrast, Saturation and white point displacement cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfileTHR(cmsContext ContextID, int nLUTPoints, cmsFloat64Number Bright, cmsFloat64Number Contrast, cmsFloat64Number Hue, cmsFloat64Number Saturation, int TempSrc, int TempDest) { cmsHPROFILE hICC; cmsPipeline* Pipeline; BCHSWADJUSTS bchsw; cmsCIExyY WhitePnt; cmsStage* CLUT; cmsUInt32Number Dimensions[MAX_INPUT_DIMENSIONS]; int i; bchsw.Brightness = Bright; bchsw.Contrast = Contrast; bchsw.Hue = Hue; bchsw.Saturation = Saturation; cmsWhitePointFromTemp(&WhitePnt, TempSrc ); cmsxyY2XYZ(&bchsw.WPsrc, &WhitePnt); cmsWhitePointFromTemp(&WhitePnt, TempDest); cmsxyY2XYZ(&bchsw.WPdest, &WhitePnt); hICC = cmsCreateProfilePlaceholder(ContextID); if (!hICC) // can't allocate return NULL; cmsSetDeviceClass(hICC, cmsSigAbstractClass); cmsSetColorSpace(hICC, cmsSigLabData); cmsSetPCS(hICC, cmsSigLabData); cmsSetHeaderRenderingIntent(hICC, INTENT_PERCEPTUAL); // Creates a Pipeline with 3D grid only Pipeline = cmsPipelineAlloc(ContextID, 3, 3); if (Pipeline == NULL) { cmsCloseProfile(hICC); return NULL; } for (i=0; i < MAX_INPUT_DIMENSIONS; i++) Dimensions[i] = nLUTPoints; CLUT = cmsStageAllocCLut16bitGranular(ContextID, Dimensions, 3, 3, NULL); if (CLUT == NULL) return NULL; if (!cmsStageSampleCLut16bit(CLUT, bchswSampler, (void*) &bchsw, 0)) { // Shouldn't reach here goto Error; } if (!cmsPipelineInsertStage(Pipeline, cmsAT_END, CLUT)) { goto Error; } // Create tags if (!SetTextTags(hICC, L"BCHS built-in")) return NULL; cmsWriteTag(hICC, cmsSigMediaWhitePointTag, (void*) cmsD50_XYZ()); cmsWriteTag(hICC, cmsSigAToB0Tag, (void*) Pipeline); // Pipeline is already on virtual profile cmsPipelineFree(Pipeline); // Ok, done return hICC; Error: cmsPipelineFree(Pipeline); cmsCloseProfile(hICC); return NULL; } CMSAPI cmsHPROFILE CMSEXPORT cmsCreateBCHSWabstractProfile(int nLUTPoints, cmsFloat64Number Bright, cmsFloat64Number Contrast, cmsFloat64Number Hue, cmsFloat64Number Saturation, int TempSrc, int TempDest) { return cmsCreateBCHSWabstractProfileTHR(NULL, nLUTPoints, Bright, Contrast, Hue, Saturation, TempSrc, TempDest); } // Creates a fake NULL profile. This profile return 1 channel as always 0. // Is useful only for gamut checking tricks cmsHPROFILE CMSEXPORT cmsCreateNULLProfileTHR(cmsContext ContextID) { cmsHPROFILE hProfile; cmsPipeline* LUT = NULL; cmsStage* PostLin; cmsToneCurve* EmptyTab; cmsUInt16Number Zero[2] = { 0, 0 }; hProfile = cmsCreateProfilePlaceholder(ContextID); if (!hProfile) // can't allocate return NULL; cmsSetProfileVersion(hProfile, 4.3); if (!SetTextTags(hProfile, L"NULL profile built-in")) goto Error; cmsSetDeviceClass(hProfile, cmsSigOutputClass); cmsSetColorSpace(hProfile, cmsSigGrayData); cmsSetPCS(hProfile, cmsSigLabData); // An empty LUTs is all we need LUT = cmsPipelineAlloc(ContextID, 1, 1); if (LUT == NULL) goto Error; EmptyTab = cmsBuildTabulatedToneCurve16(ContextID, 2, Zero); PostLin = cmsStageAllocToneCurves(ContextID, 1, &EmptyTab); cmsFreeToneCurve(EmptyTab); if (!cmsPipelineInsertStage(LUT, cmsAT_END, PostLin)) goto Error; if (!cmsWriteTag(hProfile, cmsSigBToA0Tag, (void*) LUT)) goto Error; if (!cmsWriteTag(hProfile, cmsSigMediaWhitePointTag, cmsD50_XYZ())) goto Error; cmsPipelineFree(LUT); return hProfile; Error: if (LUT != NULL) cmsPipelineFree(LUT); if (hProfile != NULL) cmsCloseProfile(hProfile); return NULL; } cmsHPROFILE CMSEXPORT cmsCreateNULLProfile(void) { return cmsCreateNULLProfileTHR(NULL); } static int IsPCS(cmsColorSpaceSignature ColorSpace) { return (ColorSpace == cmsSigXYZData || ColorSpace == cmsSigLabData); } static void FixColorSpaces(cmsHPROFILE hProfile, cmsColorSpaceSignature ColorSpace, cmsColorSpaceSignature PCS, cmsUInt32Number dwFlags) { if (dwFlags & cmsFLAGS_GUESSDEVICECLASS) { if (IsPCS(ColorSpace) && IsPCS(PCS)) { cmsSetDeviceClass(hProfile, cmsSigAbstractClass); cmsSetColorSpace(hProfile, ColorSpace); cmsSetPCS(hProfile, PCS); return; } if (IsPCS(ColorSpace) && !IsPCS(PCS)) { cmsSetDeviceClass(hProfile, cmsSigOutputClass); cmsSetPCS(hProfile, ColorSpace); cmsSetColorSpace(hProfile, PCS); return; } if (IsPCS(PCS) && !IsPCS(ColorSpace)) { cmsSetDeviceClass(hProfile, cmsSigInputClass); cmsSetColorSpace(hProfile, ColorSpace); cmsSetPCS(hProfile, PCS); return; } } cmsSetDeviceClass(hProfile, cmsSigLinkClass); cmsSetColorSpace(hProfile, ColorSpace); cmsSetPCS(hProfile, PCS); } // This function creates a named color profile dumping all the contents of transform to a single profile // In this way, LittleCMS may be used to "group" several named color databases into a single profile. // It has, however, several minor limitations. PCS is always Lab, which is not very critic since this // is the normal PCS for named color profiles. static cmsHPROFILE CreateNamedColorDevicelink(cmsHTRANSFORM xform) { _cmsTRANSFORM* v = (_cmsTRANSFORM*) xform; cmsHPROFILE hICC = NULL; int i, nColors; cmsNAMEDCOLORLIST *nc2 = NULL, *Original = NULL; // Create an empty placeholder hICC = cmsCreateProfilePlaceholder(v->ContextID); if (hICC == NULL) return NULL; // Critical information cmsSetDeviceClass(hICC, cmsSigNamedColorClass); cmsSetColorSpace(hICC, v ->ExitColorSpace); cmsSetPCS(hICC, cmsSigLabData); // Tag profile with information if (!SetTextTags(hICC, L"Named color devicelink")) goto Error; Original = cmsGetNamedColorList(xform); if (Original == NULL) goto Error; nColors = cmsNamedColorCount(Original); nc2 = cmsDupNamedColorList(Original); if (nc2 == NULL) goto Error; // Colorant count now depends on the output space nc2 ->ColorantCount = cmsPipelineOutputChannels(v ->Lut); // Make sure we have proper formatters cmsChangeBuffersFormat(xform, TYPE_NAMED_COLOR_INDEX, FLOAT_SH(0) | COLORSPACE_SH(_cmsLCMScolorSpace(v ->ExitColorSpace)) | BYTES_SH(2) | CHANNELS_SH(cmsChannelsOf(v ->ExitColorSpace))); // Apply the transfor to colorants. for (i=0; i < nColors; i++) { cmsDoTransform(xform, &i, nc2 ->List[i].DeviceColorant, 1); } if (!cmsWriteTag(hICC, cmsSigNamedColor2Tag, (void*) nc2)) goto Error; cmsFreeNamedColorList(nc2); return hICC; Error: if (hICC != NULL) cmsCloseProfile(hICC); return NULL; } // This structure holds information about which MPU can be stored on a profile based on the version typedef struct { cmsBool IsV4; // Is a V4 tag? cmsTagSignature RequiredTag; // Set to 0 for both types cmsTagTypeSignature LutType; // The LUT type int nTypes; // Number of types (up to 5) cmsStageSignature MpeTypes[5]; // 5 is the maximum number } cmsAllowedLUT; static const cmsAllowedLUT AllowedLUTTypes[] = { { FALSE, 0, cmsSigLut16Type, 4, { cmsSigMatrixElemType, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType}}, { FALSE, 0, cmsSigLut16Type, 3, { cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType}}, { FALSE, 0, cmsSigLut16Type, 2, { cmsSigCurveSetElemType, cmsSigCLutElemType}}, { TRUE , 0, cmsSigLutAtoBType, 1, { cmsSigCurveSetElemType }}, { TRUE , cmsSigAToB0Tag, cmsSigLutAtoBType, 3, { cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType } }, { TRUE , cmsSigAToB0Tag, cmsSigLutAtoBType, 3, { cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType } }, { TRUE , cmsSigAToB0Tag, cmsSigLutAtoBType, 5, { cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType }}, { TRUE , cmsSigBToA0Tag, cmsSigLutBtoAType, 1, { cmsSigCurveSetElemType }}, { TRUE , cmsSigBToA0Tag, cmsSigLutBtoAType, 3, { cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType }}, { TRUE , cmsSigBToA0Tag, cmsSigLutBtoAType, 3, { cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType }}, { TRUE , cmsSigBToA0Tag, cmsSigLutBtoAType, 5, { cmsSigCurveSetElemType, cmsSigMatrixElemType, cmsSigCurveSetElemType, cmsSigCLutElemType, cmsSigCurveSetElemType }} }; #define SIZE_OF_ALLOWED_LUT (sizeof(AllowedLUTTypes)/sizeof(cmsAllowedLUT)) // Check a single entry static cmsBool CheckOne(const cmsAllowedLUT* Tab, const cmsPipeline* Lut) { cmsStage* mpe; int n; for (n=0, mpe = Lut ->Elements; mpe != NULL; mpe = mpe ->Next, n++) { if (n > Tab ->nTypes) return FALSE; if (cmsStageType(mpe) != Tab ->MpeTypes[n]) return FALSE; } return (n == Tab ->nTypes); } static const cmsAllowedLUT* FindCombination(const cmsPipeline* Lut, cmsBool IsV4, cmsTagSignature DestinationTag) { cmsUInt32Number n; for (n=0; n < SIZE_OF_ALLOWED_LUT; n++) { const cmsAllowedLUT* Tab = AllowedLUTTypes + n; if (IsV4 ^ Tab -> IsV4) continue; if ((Tab ->RequiredTag != 0) && (Tab ->RequiredTag != DestinationTag)) continue; if (CheckOne(Tab, Lut)) return Tab; } return NULL; } // Does convert a transform into a device link profile cmsHPROFILE CMSEXPORT cmsTransform2DeviceLink(cmsHTRANSFORM hTransform, cmsFloat64Number Version, cmsUInt32Number dwFlags) { cmsHPROFILE hProfile = NULL; cmsUInt32Number FrmIn, FrmOut, ChansIn, ChansOut; cmsUInt32Number ColorSpaceBitsIn, ColorSpaceBitsOut; _cmsTRANSFORM* xform = (_cmsTRANSFORM*) hTransform; cmsPipeline* LUT = NULL; cmsStage* mpe; cmsContext ContextID = cmsGetTransformContextID(hTransform); const cmsAllowedLUT* AllowedLUT; cmsTagSignature DestinationTag; cmsProfileClassSignature deviceClass; _cmsAssert(hTransform != NULL); // Get the first mpe to check for named color mpe = cmsPipelineGetPtrToFirstStage(xform ->Lut); // Check if is a named color transform if (mpe != NULL) { if (cmsStageType(mpe) == cmsSigNamedColorElemType) { return CreateNamedColorDevicelink(hTransform); } } // First thing to do is to get a copy of the transformation LUT = cmsPipelineDup(xform ->Lut); if (LUT == NULL) return NULL; // Time to fix the Lab2/Lab4 issue. if ((xform ->EntryColorSpace == cmsSigLabData) && (Version < 4.0)) { if (!cmsPipelineInsertStage(LUT, cmsAT_BEGIN, _cmsStageAllocLabV2ToV4curves(ContextID))) goto Error; } // On the output side too if ((xform ->ExitColorSpace) == cmsSigLabData && (Version < 4.0)) { if (!cmsPipelineInsertStage(LUT, cmsAT_END, _cmsStageAllocLabV4ToV2(ContextID))) goto Error; } hProfile = cmsCreateProfilePlaceholder(ContextID); if (!hProfile) goto Error; // can't allocate cmsSetProfileVersion(hProfile, Version); FixColorSpaces(hProfile, xform -> EntryColorSpace, xform -> ExitColorSpace, dwFlags); // Optimize the LUT and precalculate a devicelink ChansIn = cmsChannelsOf(xform -> EntryColorSpace); ChansOut = cmsChannelsOf(xform -> ExitColorSpace); ColorSpaceBitsIn = _cmsLCMScolorSpace(xform -> EntryColorSpace); ColorSpaceBitsOut = _cmsLCMScolorSpace(xform -> ExitColorSpace); FrmIn = COLORSPACE_SH(ColorSpaceBitsIn) | CHANNELS_SH(ChansIn)|BYTES_SH(2); FrmOut = COLORSPACE_SH(ColorSpaceBitsOut) | CHANNELS_SH(ChansOut)|BYTES_SH(2); deviceClass = cmsGetDeviceClass(hProfile); if (deviceClass == cmsSigOutputClass) DestinationTag = cmsSigBToA0Tag; else DestinationTag = cmsSigAToB0Tag; // Check if the profile/version can store the result if (dwFlags & cmsFLAGS_FORCE_CLUT) AllowedLUT = NULL; else AllowedLUT = FindCombination(LUT, Version >= 4.0, DestinationTag); if (AllowedLUT == NULL) { // Try to optimize _cmsOptimizePipeline(&LUT, xform ->RenderingIntent, &FrmIn, &FrmOut, &dwFlags); AllowedLUT = FindCombination(LUT, Version >= 4.0, DestinationTag); } // If no way, then force CLUT that for sure can be written if (AllowedLUT == NULL) { dwFlags |= cmsFLAGS_FORCE_CLUT; _cmsOptimizePipeline(&LUT, xform ->RenderingIntent, &FrmIn, &FrmOut, &dwFlags); // Put identity curves if needed if (cmsPipelineGetPtrToFirstStage(LUT) ->Type != cmsSigCurveSetElemType) if (!cmsPipelineInsertStage(LUT, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, ChansIn))) goto Error; if (cmsPipelineGetPtrToLastStage(LUT) ->Type != cmsSigCurveSetElemType) if (!cmsPipelineInsertStage(LUT, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, ChansOut))) goto Error; AllowedLUT = FindCombination(LUT, Version >= 4.0, DestinationTag); } // Somethings is wrong... if (AllowedLUT == NULL) { goto Error; } if (dwFlags & cmsFLAGS_8BITS_DEVICELINK) cmsPipelineSetSaveAs8bitsFlag(LUT, TRUE); // Tag profile with information if (!SetTextTags(hProfile, L"devicelink")) goto Error; // Store result if (!cmsWriteTag(hProfile, DestinationTag, LUT)) goto Error; if (xform -> InputColorant != NULL) { if (!cmsWriteTag(hProfile, cmsSigColorantTableTag, xform->InputColorant)) goto Error; } if (xform -> OutputColorant != NULL) { if (!cmsWriteTag(hProfile, cmsSigColorantTableOutTag, xform->OutputColorant)) goto Error; } if ((deviceClass == cmsSigLinkClass) && (xform ->Sequence != NULL)) { if (!_cmsWriteProfileSequence(hProfile, xform ->Sequence)) goto Error; } // Set the white point if (deviceClass == cmsSigInputClass) { if (!cmsWriteTag(hProfile, cmsSigMediaWhitePointTag, &xform ->EntryWhitePoint)) goto Error; } else { if (!cmsWriteTag(hProfile, cmsSigMediaWhitePointTag, &xform ->ExitWhitePoint)) goto Error; } // Per 7.2.15 in spec 4.3 cmsSetHeaderRenderingIntent(hProfile, xform ->RenderingIntent); cmsPipelineFree(LUT); return hProfile; Error: if (LUT != NULL) cmsPipelineFree(LUT); cmsCloseProfile(hProfile); return NULL; } lcms2-2.5/src/cmsnamed.c0000644002406300000240000006652612163060730014464 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Multilocalized unicode objects. That is an attempt to encapsulate i18n. // Allocates an empty multi localizad unicode object cmsMLU* CMSEXPORT cmsMLUalloc(cmsContext ContextID, cmsUInt32Number nItems) { cmsMLU* mlu; // nItems should be positive if given if (nItems <= 0) nItems = 2; // Create the container mlu = (cmsMLU*) _cmsMallocZero(ContextID, sizeof(cmsMLU)); if (mlu == NULL) return NULL; mlu ->ContextID = ContextID; // Create entry array mlu ->Entries = (_cmsMLUentry*) _cmsCalloc(ContextID, nItems, sizeof(_cmsMLUentry)); if (mlu ->Entries == NULL) { _cmsFree(ContextID, mlu); return NULL; } // Ok, keep indexes up to date mlu ->AllocatedEntries = nItems; mlu ->UsedEntries = 0; return mlu; } // Grows a mempool table for a MLU. Each time this function is called, mempool size is multiplied times two. static cmsBool GrowMLUpool(cmsMLU* mlu) { cmsUInt32Number size; void *NewPtr; // Sanity check if (mlu == NULL) return FALSE; if (mlu ->PoolSize == 0) size = 256; else size = mlu ->PoolSize * 2; // Check for overflow if (size < mlu ->PoolSize) return FALSE; // Reallocate the pool NewPtr = _cmsRealloc(mlu ->ContextID, mlu ->MemPool, size); if (NewPtr == NULL) return FALSE; mlu ->MemPool = NewPtr; mlu ->PoolSize = size; return TRUE; } // Grows a entry table for a MLU. Each time this function is called, table size is multiplied times two. static cmsBool GrowMLUtable(cmsMLU* mlu) { int AllocatedEntries; _cmsMLUentry *NewPtr; // Sanity check if (mlu == NULL) return FALSE; AllocatedEntries = mlu ->AllocatedEntries * 2; // Check for overflow if (AllocatedEntries / 2 != mlu ->AllocatedEntries) return FALSE; // Reallocate the memory NewPtr = (_cmsMLUentry*)_cmsRealloc(mlu ->ContextID, mlu ->Entries, AllocatedEntries*sizeof(_cmsMLUentry)); if (NewPtr == NULL) return FALSE; mlu ->Entries = NewPtr; mlu ->AllocatedEntries = AllocatedEntries; return TRUE; } // Search for a specific entry in the structure. Language and Country are used. static int SearchMLUEntry(cmsMLU* mlu, cmsUInt16Number LanguageCode, cmsUInt16Number CountryCode) { int i; // Sanity check if (mlu == NULL) return -1; // Iterate whole table for (i=0; i < mlu ->UsedEntries; i++) { if (mlu ->Entries[i].Country == CountryCode && mlu ->Entries[i].Language == LanguageCode) return i; } // Not found return -1; } // Add a block of characters to the intended MLU. Language and country are specified. // Only one entry for Language/country pair is allowed. static cmsBool AddMLUBlock(cmsMLU* mlu, cmsUInt32Number size, const wchar_t *Block, cmsUInt16Number LanguageCode, cmsUInt16Number CountryCode) { cmsUInt32Number Offset; cmsUInt8Number* Ptr; // Sanity check if (mlu == NULL) return FALSE; // Is there any room available? if (mlu ->UsedEntries >= mlu ->AllocatedEntries) { if (!GrowMLUtable(mlu)) return FALSE; } // Only one ASCII string if (SearchMLUEntry(mlu, LanguageCode, CountryCode) >= 0) return FALSE; // Only one is allowed! // Check for size while ((mlu ->PoolSize - mlu ->PoolUsed) < size) { if (!GrowMLUpool(mlu)) return FALSE; } Offset = mlu ->PoolUsed; Ptr = (cmsUInt8Number*) mlu ->MemPool; if (Ptr == NULL) return FALSE; // Set the entry memmove(Ptr + Offset, Block, size); mlu ->PoolUsed += size; mlu ->Entries[mlu ->UsedEntries].StrW = Offset; mlu ->Entries[mlu ->UsedEntries].Len = size; mlu ->Entries[mlu ->UsedEntries].Country = CountryCode; mlu ->Entries[mlu ->UsedEntries].Language = LanguageCode; mlu ->UsedEntries++; return TRUE; } // Add an ASCII entry. cmsBool CMSEXPORT cmsMLUsetASCII(cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], const char* ASCIIString) { cmsUInt32Number i, len = (cmsUInt32Number) strlen(ASCIIString)+1; wchar_t* WStr; cmsBool rc; cmsUInt16Number Lang = _cmsAdjustEndianess16(*(cmsUInt16Number*) LanguageCode); cmsUInt16Number Cntry = _cmsAdjustEndianess16(*(cmsUInt16Number*) CountryCode); if (mlu == NULL) return FALSE; WStr = (wchar_t*) _cmsCalloc(mlu ->ContextID, len, sizeof(wchar_t)); if (WStr == NULL) return FALSE; for (i=0; i < len; i++) WStr[i] = (wchar_t) ASCIIString[i]; rc = AddMLUBlock(mlu, len * sizeof(wchar_t), WStr, Lang, Cntry); _cmsFree(mlu ->ContextID, WStr); return rc; } // We don't need any wcs support library static cmsUInt32Number mywcslen(const wchar_t *s) { const wchar_t *p; p = s; while (*p) p++; return (cmsUInt32Number)(p - s); } // Add a wide entry cmsBool CMSEXPORT cmsMLUsetWide(cmsMLU* mlu, const char Language[3], const char Country[3], const wchar_t* WideString) { cmsUInt16Number Lang = _cmsAdjustEndianess16(*(cmsUInt16Number*) Language); cmsUInt16Number Cntry = _cmsAdjustEndianess16(*(cmsUInt16Number*) Country); cmsUInt32Number len; if (mlu == NULL) return FALSE; if (WideString == NULL) return FALSE; len = (cmsUInt32Number) (mywcslen(WideString) + 1) * sizeof(wchar_t); return AddMLUBlock(mlu, len, WideString, Lang, Cntry); } // Duplicating a MLU is as easy as copying all members cmsMLU* CMSEXPORT cmsMLUdup(const cmsMLU* mlu) { cmsMLU* NewMlu = NULL; // Duplicating a NULL obtains a NULL if (mlu == NULL) return NULL; NewMlu = cmsMLUalloc(mlu ->ContextID, mlu ->UsedEntries); if (NewMlu == NULL) return NULL; // Should never happen if (NewMlu ->AllocatedEntries < mlu ->UsedEntries) goto Error; // Sanitize... if (NewMlu ->Entries == NULL || mlu ->Entries == NULL) goto Error; memmove(NewMlu ->Entries, mlu ->Entries, mlu ->UsedEntries * sizeof(_cmsMLUentry)); NewMlu ->UsedEntries = mlu ->UsedEntries; // The MLU may be empty if (mlu ->PoolUsed == 0) { NewMlu ->MemPool = NULL; } else { // It is not empty NewMlu ->MemPool = _cmsMalloc(mlu ->ContextID, mlu ->PoolUsed); if (NewMlu ->MemPool == NULL) goto Error; } NewMlu ->PoolSize = mlu ->PoolUsed; if (NewMlu ->MemPool == NULL || mlu ->MemPool == NULL) goto Error; memmove(NewMlu ->MemPool, mlu->MemPool, mlu ->PoolUsed); NewMlu ->PoolUsed = mlu ->PoolUsed; return NewMlu; Error: if (NewMlu != NULL) cmsMLUfree(NewMlu); return NULL; } // Free any used memory void CMSEXPORT cmsMLUfree(cmsMLU* mlu) { if (mlu) { if (mlu -> Entries) _cmsFree(mlu ->ContextID, mlu->Entries); if (mlu -> MemPool) _cmsFree(mlu ->ContextID, mlu->MemPool); _cmsFree(mlu ->ContextID, mlu); } } // The algorithm first searches for an exact match of country and language, if not found it uses // the Language. If none is found, first entry is used instead. static const wchar_t* _cmsMLUgetWide(const cmsMLU* mlu, cmsUInt32Number *len, cmsUInt16Number LanguageCode, cmsUInt16Number CountryCode, cmsUInt16Number* UsedLanguageCode, cmsUInt16Number* UsedCountryCode) { int i; int Best = -1; _cmsMLUentry* v; if (mlu == NULL) return NULL; if (mlu -> AllocatedEntries <= 0) return NULL; for (i=0; i < mlu ->UsedEntries; i++) { v = mlu ->Entries + i; if (v -> Language == LanguageCode) { if (Best == -1) Best = i; if (v -> Country == CountryCode) { if (UsedLanguageCode != NULL) *UsedLanguageCode = v ->Language; if (UsedCountryCode != NULL) *UsedCountryCode = v ->Country; if (len != NULL) *len = v ->Len; return (wchar_t*) ((cmsUInt8Number*) mlu ->MemPool + v -> StrW); // Found exact match } } } // No string found. Return First one if (Best == -1) Best = 0; v = mlu ->Entries + Best; if (UsedLanguageCode != NULL) *UsedLanguageCode = v ->Language; if (UsedCountryCode != NULL) *UsedCountryCode = v ->Country; if (len != NULL) *len = v ->Len; return(wchar_t*) ((cmsUInt8Number*) mlu ->MemPool + v ->StrW); } // Obtain an ASCII representation of the wide string. Setting buffer to NULL returns the len cmsUInt32Number CMSEXPORT cmsMLUgetASCII(const cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], char* Buffer, cmsUInt32Number BufferSize) { const wchar_t *Wide; cmsUInt32Number StrLen = 0; cmsUInt32Number ASCIIlen, i; cmsUInt16Number Lang = _cmsAdjustEndianess16(*(cmsUInt16Number*) LanguageCode); cmsUInt16Number Cntry = _cmsAdjustEndianess16(*(cmsUInt16Number*) CountryCode); // Sanitize if (mlu == NULL) return 0; // Get WideChar Wide = _cmsMLUgetWide(mlu, &StrLen, Lang, Cntry, NULL, NULL); if (Wide == NULL) return 0; ASCIIlen = StrLen / sizeof(wchar_t); // Maybe we want only to know the len? if (Buffer == NULL) return ASCIIlen + 1; // Note the zero at the end // No buffer size means no data if (BufferSize <= 0) return 0; // Some clipping may be required if (BufferSize < ASCIIlen + 1) ASCIIlen = BufferSize - 1; // Precess each character for (i=0; i < ASCIIlen; i++) { if (Wide[i] == 0) Buffer[i] = 0; else Buffer[i] = (char) Wide[i]; } // We put a termination "\0" Buffer[ASCIIlen] = 0; return ASCIIlen + 1; } // Obtain a wide representation of the MLU, on depending on current locale settings cmsUInt32Number CMSEXPORT cmsMLUgetWide(const cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], wchar_t* Buffer, cmsUInt32Number BufferSize) { const wchar_t *Wide; cmsUInt32Number StrLen = 0; cmsUInt16Number Lang = _cmsAdjustEndianess16(*(cmsUInt16Number*) LanguageCode); cmsUInt16Number Cntry = _cmsAdjustEndianess16(*(cmsUInt16Number*) CountryCode); // Sanitize if (mlu == NULL) return 0; Wide = _cmsMLUgetWide(mlu, &StrLen, Lang, Cntry, NULL, NULL); if (Wide == NULL) return 0; // Maybe we want only to know the len? if (Buffer == NULL) return StrLen + sizeof(wchar_t); // No buffer size means no data if (BufferSize <= 0) return 0; // Some clipping may be required if (BufferSize < StrLen + sizeof(wchar_t)) StrLen = BufferSize - + sizeof(wchar_t); memmove(Buffer, Wide, StrLen); Buffer[StrLen / sizeof(wchar_t)] = 0; return StrLen + sizeof(wchar_t); } // Get also the language and country CMSAPI cmsBool CMSEXPORT cmsMLUgetTranslation(const cmsMLU* mlu, const char LanguageCode[3], const char CountryCode[3], char ObtainedLanguage[3], char ObtainedCountry[3]) { const wchar_t *Wide; cmsUInt16Number Lang = _cmsAdjustEndianess16(*(cmsUInt16Number*) LanguageCode); cmsUInt16Number Cntry = _cmsAdjustEndianess16(*(cmsUInt16Number*) CountryCode); cmsUInt16Number ObtLang, ObtCode; // Sanitize if (mlu == NULL) return FALSE; Wide = _cmsMLUgetWide(mlu, NULL, Lang, Cntry, &ObtLang, &ObtCode); if (Wide == NULL) return FALSE; // Get used language and code *(cmsUInt16Number *)ObtainedLanguage = _cmsAdjustEndianess16(ObtLang); *(cmsUInt16Number *)ObtainedCountry = _cmsAdjustEndianess16(ObtCode); ObtainedLanguage[2] = ObtainedCountry[2] = 0; return TRUE; } // Get the number of translations in the MLU object cmsUInt32Number CMSEXPORT cmsMLUtranslationsCount(const cmsMLU* mlu) { if (mlu == NULL) return 0; return mlu->UsedEntries; } // Get the language and country codes for a specific MLU index cmsBool CMSEXPORT cmsMLUtranslationsCodes(const cmsMLU* mlu, cmsUInt32Number idx, char LanguageCode[3], char CountryCode[3]) { _cmsMLUentry *entry; if (mlu == NULL) return FALSE; if (idx >= (cmsUInt32Number) mlu->UsedEntries) return FALSE; entry = &mlu->Entries[idx]; *(cmsUInt16Number *)LanguageCode = _cmsAdjustEndianess16(entry->Language); *(cmsUInt16Number *)CountryCode = _cmsAdjustEndianess16(entry->Country); return TRUE; } // Named color lists -------------------------------------------------------------------------------------------- // Grow the list to keep at least NumElements static cmsBool GrowNamedColorList(cmsNAMEDCOLORLIST* v) { cmsUInt32Number size; _cmsNAMEDCOLOR * NewPtr; if (v == NULL) return FALSE; if (v ->Allocated == 0) size = 64; // Initial guess else size = v ->Allocated * 2; // Keep a maximum color lists can grow, 100K entries seems reasonable if (size > 1024*100) return FALSE; NewPtr = (_cmsNAMEDCOLOR*) _cmsRealloc(v ->ContextID, v ->List, size * sizeof(_cmsNAMEDCOLOR)); if (NewPtr == NULL) return FALSE; v ->List = NewPtr; v ->Allocated = size; return TRUE; } // Allocate a list for n elements cmsNAMEDCOLORLIST* CMSEXPORT cmsAllocNamedColorList(cmsContext ContextID, cmsUInt32Number n, cmsUInt32Number ColorantCount, const char* Prefix, const char* Suffix) { cmsNAMEDCOLORLIST* v = (cmsNAMEDCOLORLIST*) _cmsMallocZero(ContextID, sizeof(cmsNAMEDCOLORLIST)); if (v == NULL) return NULL; v ->List = NULL; v ->nColors = 0; v ->ContextID = ContextID; while (v -> Allocated < n) GrowNamedColorList(v); strncpy(v ->Prefix, Prefix, sizeof(v ->Prefix)-1); strncpy(v ->Suffix, Suffix, sizeof(v ->Suffix)-1); v->Prefix[32] = v->Suffix[32] = 0; v -> ColorantCount = ColorantCount; return v; } // Free a list void CMSEXPORT cmsFreeNamedColorList(cmsNAMEDCOLORLIST* v) { if (v == NULL) return; if (v ->List) _cmsFree(v ->ContextID, v ->List); _cmsFree(v ->ContextID, v); } cmsNAMEDCOLORLIST* CMSEXPORT cmsDupNamedColorList(const cmsNAMEDCOLORLIST* v) { cmsNAMEDCOLORLIST* NewNC; if (v == NULL) return NULL; NewNC= cmsAllocNamedColorList(v ->ContextID, v -> nColors, v ->ColorantCount, v ->Prefix, v ->Suffix); if (NewNC == NULL) return NULL; // For really large tables we need this while (NewNC ->Allocated < v ->Allocated) GrowNamedColorList(NewNC); memmove(NewNC ->Prefix, v ->Prefix, sizeof(v ->Prefix)); memmove(NewNC ->Suffix, v ->Suffix, sizeof(v ->Suffix)); NewNC ->ColorantCount = v ->ColorantCount; memmove(NewNC->List, v ->List, v->nColors * sizeof(_cmsNAMEDCOLOR)); NewNC ->nColors = v ->nColors; return NewNC; } // Append a color to a list. List pointer may change if reallocated cmsBool CMSEXPORT cmsAppendNamedColor(cmsNAMEDCOLORLIST* NamedColorList, const char* Name, cmsUInt16Number PCS[3], cmsUInt16Number Colorant[cmsMAXCHANNELS]) { cmsUInt32Number i; if (NamedColorList == NULL) return FALSE; if (NamedColorList ->nColors + 1 > NamedColorList ->Allocated) { if (!GrowNamedColorList(NamedColorList)) return FALSE; } for (i=0; i < NamedColorList ->ColorantCount; i++) NamedColorList ->List[NamedColorList ->nColors].DeviceColorant[i] = Colorant == NULL? 0 : Colorant[i]; for (i=0; i < 3; i++) NamedColorList ->List[NamedColorList ->nColors].PCS[i] = PCS == NULL ? 0 : PCS[i]; if (Name != NULL) { strncpy(NamedColorList ->List[NamedColorList ->nColors].Name, Name, cmsMAX_PATH-1); NamedColorList ->List[NamedColorList ->nColors].Name[cmsMAX_PATH-1] = 0; } else NamedColorList ->List[NamedColorList ->nColors].Name[0] = 0; NamedColorList ->nColors++; return TRUE; } // Returns number of elements cmsUInt32Number CMSEXPORT cmsNamedColorCount(const cmsNAMEDCOLORLIST* NamedColorList) { if (NamedColorList == NULL) return 0; return NamedColorList ->nColors; } // Info aboout a given color cmsBool CMSEXPORT cmsNamedColorInfo(const cmsNAMEDCOLORLIST* NamedColorList, cmsUInt32Number nColor, char* Name, char* Prefix, char* Suffix, cmsUInt16Number* PCS, cmsUInt16Number* Colorant) { if (NamedColorList == NULL) return FALSE; if (nColor >= cmsNamedColorCount(NamedColorList)) return FALSE; if (Name) strcpy(Name, NamedColorList->List[nColor].Name); if (Prefix) strcpy(Prefix, NamedColorList->Prefix); if (Suffix) strcpy(Suffix, NamedColorList->Suffix); if (PCS) memmove(PCS, NamedColorList ->List[nColor].PCS, 3*sizeof(cmsUInt16Number)); if (Colorant) memmove(Colorant, NamedColorList ->List[nColor].DeviceColorant, sizeof(cmsUInt16Number) * NamedColorList ->ColorantCount); return TRUE; } // Search for a given color name (no prefix or suffix) cmsInt32Number CMSEXPORT cmsNamedColorIndex(const cmsNAMEDCOLORLIST* NamedColorList, const char* Name) { int i, n; if (NamedColorList == NULL) return -1; n = cmsNamedColorCount(NamedColorList); for (i=0; i < n; i++) { if (cmsstrcasecmp(Name, NamedColorList->List[i].Name) == 0) return i; } return -1; } // MPE support ----------------------------------------------------------------------------------------------------------------- static void FreeNamedColorList(cmsStage* mpe) { cmsNAMEDCOLORLIST* List = (cmsNAMEDCOLORLIST*) mpe ->Data; cmsFreeNamedColorList(List); } static void* DupNamedColorList(cmsStage* mpe) { cmsNAMEDCOLORLIST* List = (cmsNAMEDCOLORLIST*) mpe ->Data; return cmsDupNamedColorList(List); } static void EvalNamedColorPCS(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { cmsNAMEDCOLORLIST* NamedColorList = (cmsNAMEDCOLORLIST*) mpe ->Data; cmsUInt16Number index = (cmsUInt16Number) _cmsQuickSaturateWord(In[0] * 65535.0); if (index >= NamedColorList-> nColors) { cmsSignalError(NamedColorList ->ContextID, cmsERROR_RANGE, "Color %d out of range; ignored", index); } else { // Named color always uses Lab Out[0] = (cmsFloat32Number) (NamedColorList->List[index].PCS[0] / 65535.0); Out[1] = (cmsFloat32Number) (NamedColorList->List[index].PCS[1] / 65535.0); Out[2] = (cmsFloat32Number) (NamedColorList->List[index].PCS[2] / 65535.0); } } static void EvalNamedColor(const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage *mpe) { cmsNAMEDCOLORLIST* NamedColorList = (cmsNAMEDCOLORLIST*) mpe ->Data; cmsUInt16Number index = (cmsUInt16Number) _cmsQuickSaturateWord(In[0] * 65535.0); cmsUInt32Number j; if (index >= NamedColorList-> nColors) { cmsSignalError(NamedColorList ->ContextID, cmsERROR_RANGE, "Color %d out of range; ignored", index); } else { for (j=0; j < NamedColorList ->ColorantCount; j++) Out[j] = (cmsFloat32Number) (NamedColorList->List[index].DeviceColorant[j] / 65535.0); } } // Named color lookup element cmsStage* _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS) { return _cmsStageAllocPlaceholder(NamedColorList ->ContextID, cmsSigNamedColorElemType, 1, UsePCS ? 3 : NamedColorList ->ColorantCount, UsePCS ? EvalNamedColorPCS : EvalNamedColor, DupNamedColorList, FreeNamedColorList, cmsDupNamedColorList(NamedColorList)); } // Retrieve the named color list from a transform. Should be first element in the LUT cmsNAMEDCOLORLIST* CMSEXPORT cmsGetNamedColorList(cmsHTRANSFORM xform) { _cmsTRANSFORM* v = (_cmsTRANSFORM*) xform; cmsStage* mpe = v ->Lut->Elements; if (mpe ->Type != cmsSigNamedColorElemType) return NULL; return (cmsNAMEDCOLORLIST*) mpe ->Data; } // Profile sequence description routines ------------------------------------------------------------------------------------- cmsSEQ* CMSEXPORT cmsAllocProfileSequenceDescription(cmsContext ContextID, cmsUInt32Number n) { cmsSEQ* Seq; cmsUInt32Number i; if (n == 0) return NULL; // In a absolutely arbitrary way, I hereby decide to allow a maxim of 255 profiles linked // in a devicelink. It makes not sense anyway and may be used for exploits, so let's close the door! if (n > 255) return NULL; Seq = (cmsSEQ*) _cmsMallocZero(ContextID, sizeof(cmsSEQ)); if (Seq == NULL) return NULL; Seq -> ContextID = ContextID; Seq -> seq = (cmsPSEQDESC*) _cmsCalloc(ContextID, n, sizeof(cmsPSEQDESC)); Seq -> n = n; if (Seq -> seq == NULL) { _cmsFree(ContextID, Seq); return NULL; } for (i=0; i < n; i++) { Seq -> seq[i].Manufacturer = NULL; Seq -> seq[i].Model = NULL; Seq -> seq[i].Description = NULL; } return Seq; } void CMSEXPORT cmsFreeProfileSequenceDescription(cmsSEQ* pseq) { cmsUInt32Number i; for (i=0; i < pseq ->n; i++) { if (pseq ->seq[i].Manufacturer != NULL) cmsMLUfree(pseq ->seq[i].Manufacturer); if (pseq ->seq[i].Model != NULL) cmsMLUfree(pseq ->seq[i].Model); if (pseq ->seq[i].Description != NULL) cmsMLUfree(pseq ->seq[i].Description); } if (pseq ->seq != NULL) _cmsFree(pseq ->ContextID, pseq ->seq); _cmsFree(pseq -> ContextID, pseq); } cmsSEQ* CMSEXPORT cmsDupProfileSequenceDescription(const cmsSEQ* pseq) { cmsSEQ *NewSeq; cmsUInt32Number i; if (pseq == NULL) return NULL; NewSeq = (cmsSEQ*) _cmsMalloc(pseq -> ContextID, sizeof(cmsSEQ)); if (NewSeq == NULL) return NULL; NewSeq -> seq = (cmsPSEQDESC*) _cmsCalloc(pseq ->ContextID, pseq ->n, sizeof(cmsPSEQDESC)); if (NewSeq ->seq == NULL) goto Error; NewSeq -> ContextID = pseq ->ContextID; NewSeq -> n = pseq ->n; for (i=0; i < pseq->n; i++) { memmove(&NewSeq ->seq[i].attributes, &pseq ->seq[i].attributes, sizeof(cmsUInt64Number)); NewSeq ->seq[i].deviceMfg = pseq ->seq[i].deviceMfg; NewSeq ->seq[i].deviceModel = pseq ->seq[i].deviceModel; memmove(&NewSeq ->seq[i].ProfileID, &pseq ->seq[i].ProfileID, sizeof(cmsProfileID)); NewSeq ->seq[i].technology = pseq ->seq[i].technology; NewSeq ->seq[i].Manufacturer = cmsMLUdup(pseq ->seq[i].Manufacturer); NewSeq ->seq[i].Model = cmsMLUdup(pseq ->seq[i].Model); NewSeq ->seq[i].Description = cmsMLUdup(pseq ->seq[i].Description); } return NewSeq; Error: cmsFreeProfileSequenceDescription(NewSeq); return NULL; } // Dictionaries -------------------------------------------------------------------------------------------------------- // Dictionaries are just very simple linked lists typedef struct _cmsDICT_struct { cmsDICTentry* head; cmsContext ContextID; } _cmsDICT; // Allocate an empty dictionary cmsHANDLE CMSEXPORT cmsDictAlloc(cmsContext ContextID) { _cmsDICT* dict = (_cmsDICT*) _cmsMallocZero(ContextID, sizeof(_cmsDICT)); if (dict == NULL) return NULL; dict ->ContextID = ContextID; return (cmsHANDLE) dict; } // Dispose resources void CMSEXPORT cmsDictFree(cmsHANDLE hDict) { _cmsDICT* dict = (_cmsDICT*) hDict; cmsDICTentry *entry, *next; _cmsAssert(dict != NULL); // Walk the list freeing all nodes entry = dict ->head; while (entry != NULL) { if (entry ->DisplayName != NULL) cmsMLUfree(entry ->DisplayName); if (entry ->DisplayValue != NULL) cmsMLUfree(entry ->DisplayValue); if (entry ->Name != NULL) _cmsFree(dict ->ContextID, entry -> Name); if (entry ->Value != NULL) _cmsFree(dict ->ContextID, entry -> Value); // Don't fall in the habitual trap... next = entry ->Next; _cmsFree(dict ->ContextID, entry); entry = next; } _cmsFree(dict ->ContextID, dict); } // Duplicate a wide char string static wchar_t* DupWcs(cmsContext ContextID, const wchar_t* ptr) { if (ptr == NULL) return NULL; return (wchar_t*) _cmsDupMem(ContextID, ptr, (mywcslen(ptr) + 1) * sizeof(wchar_t)); } // Add a new entry to the linked list cmsBool CMSEXPORT cmsDictAddEntry(cmsHANDLE hDict, const wchar_t* Name, const wchar_t* Value, const cmsMLU *DisplayName, const cmsMLU *DisplayValue) { _cmsDICT* dict = (_cmsDICT*) hDict; cmsDICTentry *entry; _cmsAssert(dict != NULL); _cmsAssert(Name != NULL); entry = (cmsDICTentry*) _cmsMallocZero(dict ->ContextID, sizeof(cmsDICTentry)); if (entry == NULL) return FALSE; entry ->DisplayName = cmsMLUdup(DisplayName); entry ->DisplayValue = cmsMLUdup(DisplayValue); entry ->Name = DupWcs(dict ->ContextID, Name); entry ->Value = DupWcs(dict ->ContextID, Value); entry ->Next = dict ->head; dict ->head = entry; return TRUE; } // Duplicates an existing dictionary cmsHANDLE CMSEXPORT cmsDictDup(cmsHANDLE hDict) { _cmsDICT* old_dict = (_cmsDICT*) hDict; cmsHANDLE hNew; cmsDICTentry *entry; _cmsAssert(old_dict != NULL); hNew = cmsDictAlloc(old_dict ->ContextID); if (hNew == NULL) return NULL; // Walk the list freeing all nodes entry = old_dict ->head; while (entry != NULL) { if (!cmsDictAddEntry(hNew, entry ->Name, entry ->Value, entry ->DisplayName, entry ->DisplayValue)) { cmsDictFree(hNew); return NULL; } entry = entry -> Next; } return hNew; } // Get a pointer to the linked list const cmsDICTentry* CMSEXPORT cmsDictGetEntryList(cmsHANDLE hDict) { _cmsDICT* dict = (_cmsDICT*) hDict; if (dict == NULL) return NULL; return dict ->head; } // Helper For external languages const cmsDICTentry* CMSEXPORT cmsDictNextEntry(const cmsDICTentry* e) { if (e == NULL) return NULL; return e ->Next; } lcms2-2.5/src/cmserr.c0000644002406300000240000003306712163060730014162 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- #include "lcms2_internal.h" // I am so tired about incompatibilities on those functions that here are some replacements // that hopefully would be fully portable. // compare two strings ignoring case int CMSEXPORT cmsstrcasecmp(const char* s1, const char* s2) { register const unsigned char *us1 = (const unsigned char *)s1, *us2 = (const unsigned char *)s2; while (toupper(*us1) == toupper(*us2++)) if (*us1++ == '\0') return (0); return (toupper(*us1) - toupper(*--us2)); } // long int because C99 specifies ftell in such way (7.19.9.2) long int CMSEXPORT cmsfilelength(FILE* f) { long int p , n; p = ftell(f); // register current file position if (fseek(f, 0, SEEK_END) != 0) { return -1; } n = ftell(f); fseek(f, p, SEEK_SET); // file position restored return n; } // Memory handling ------------------------------------------------------------------ // // This is the interface to low-level memory management routines. By default a simple // wrapping to malloc/free/realloc is provided, although there is a limit on the max // amount of memoy that can be reclaimed. This is mostly as a safety feature to // prevent bogus or malintentionated code to allocate huge blocks that otherwise lcms // would never need. #define MAX_MEMORY_FOR_ALLOC ((cmsUInt32Number)(1024U*1024U*512U)) // User may override this behaviour by using a memory plug-in, which basically replaces // the default memory management functions. In this case, no check is performed and it // is up to the plug-in writter to keep in the safe side. There are only three functions // required to be implemented: malloc, realloc and free, although the user may want to // replace the optional mallocZero, calloc and dup as well. cmsBool _cmsRegisterMemHandlerPlugin(cmsPluginBase* Plugin); // ********************************************************************************* // This is the default memory allocation function. It does a very coarse // check of amout of memory, just to prevent exploits static void* _cmsMallocDefaultFn(cmsContext ContextID, cmsUInt32Number size) { if (size > MAX_MEMORY_FOR_ALLOC) return NULL; // Never allow over maximum return (void*) malloc(size); cmsUNUSED_PARAMETER(ContextID); } // Generic allocate & zero static void* _cmsMallocZeroDefaultFn(cmsContext ContextID, cmsUInt32Number size) { void *pt = _cmsMalloc(ContextID, size); if (pt == NULL) return NULL; memset(pt, 0, size); return pt; } // The default free function. The only check proformed is against NULL pointers static void _cmsFreeDefaultFn(cmsContext ContextID, void *Ptr) { // free(NULL) is defined a no-op by C99, therefore it is safe to // avoid the check, but it is here just in case... if (Ptr) free(Ptr); cmsUNUSED_PARAMETER(ContextID); } // The default realloc function. Again it check for exploits. If Ptr is NULL, // realloc behaves the same way as malloc and allocates a new block of size bytes. static void* _cmsReallocDefaultFn(cmsContext ContextID, void* Ptr, cmsUInt32Number size) { if (size > MAX_MEMORY_FOR_ALLOC) return NULL; // Never realloc over 512Mb return realloc(Ptr, size); cmsUNUSED_PARAMETER(ContextID); } // The default calloc function. Allocates an array of num elements, each one of size bytes // all memory is initialized to zero. static void* _cmsCallocDefaultFn(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size) { cmsUInt32Number Total = num * size; // Preserve calloc behaviour if (Total == 0) return NULL; // Safe check for overflow. if (num >= UINT_MAX / size) return NULL; // Check for overflow if (Total < num || Total < size) { return NULL; } if (Total > MAX_MEMORY_FOR_ALLOC) return NULL; // Never alloc over 512Mb return _cmsMallocZero(ContextID, Total); } // Generic block duplication static void* _cmsDupDefaultFn(cmsContext ContextID, const void* Org, cmsUInt32Number size) { void* mem; if (size > MAX_MEMORY_FOR_ALLOC) return NULL; // Never dup over 512Mb mem = _cmsMalloc(ContextID, size); if (mem != NULL && Org != NULL) memmove(mem, Org, size); return mem; } // Pointers to malloc and _cmsFree functions in current environment static void * (* MallocPtr)(cmsContext ContextID, cmsUInt32Number size) = _cmsMallocDefaultFn; static void * (* MallocZeroPtr)(cmsContext ContextID, cmsUInt32Number size) = _cmsMallocZeroDefaultFn; static void (* FreePtr)(cmsContext ContextID, void *Ptr) = _cmsFreeDefaultFn; static void * (* ReallocPtr)(cmsContext ContextID, void *Ptr, cmsUInt32Number NewSize) = _cmsReallocDefaultFn; static void * (* CallocPtr)(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size)= _cmsCallocDefaultFn; static void * (* DupPtr)(cmsContext ContextID, const void* Org, cmsUInt32Number size) = _cmsDupDefaultFn; // Plug-in replacement entry cmsBool _cmsRegisterMemHandlerPlugin(cmsPluginBase *Data) { cmsPluginMemHandler* Plugin = (cmsPluginMemHandler*) Data; // NULL forces to reset to defaults if (Data == NULL) { MallocPtr = _cmsMallocDefaultFn; MallocZeroPtr= _cmsMallocZeroDefaultFn; FreePtr = _cmsFreeDefaultFn; ReallocPtr = _cmsReallocDefaultFn; CallocPtr = _cmsCallocDefaultFn; DupPtr = _cmsDupDefaultFn; return TRUE; } // Check for required callbacks if (Plugin -> MallocPtr == NULL || Plugin -> FreePtr == NULL || Plugin -> ReallocPtr == NULL) return FALSE; // Set replacement functions MallocPtr = Plugin -> MallocPtr; FreePtr = Plugin -> FreePtr; ReallocPtr = Plugin -> ReallocPtr; if (Plugin ->MallocZeroPtr != NULL) MallocZeroPtr = Plugin ->MallocZeroPtr; if (Plugin ->CallocPtr != NULL) CallocPtr = Plugin -> CallocPtr; if (Plugin ->DupPtr != NULL) DupPtr = Plugin -> DupPtr; return TRUE; } // Generic allocate void* CMSEXPORT _cmsMalloc(cmsContext ContextID, cmsUInt32Number size) { return MallocPtr(ContextID, size); } // Generic allocate & zero void* CMSEXPORT _cmsMallocZero(cmsContext ContextID, cmsUInt32Number size) { return MallocZeroPtr(ContextID, size); } // Generic calloc void* CMSEXPORT _cmsCalloc(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size) { return CallocPtr(ContextID, num, size); } // Generic reallocate void* CMSEXPORT _cmsRealloc(cmsContext ContextID, void* Ptr, cmsUInt32Number size) { return ReallocPtr(ContextID, Ptr, size); } // Generic free memory void CMSEXPORT _cmsFree(cmsContext ContextID, void* Ptr) { if (Ptr != NULL) FreePtr(ContextID, Ptr); } // Generic block duplication void* CMSEXPORT _cmsDupMem(cmsContext ContextID, const void* Org, cmsUInt32Number size) { return DupPtr(ContextID, Org, size); } // ******************************************************************************************** // Sub allocation takes care of many pointers of small size. The memory allocated in // this way have be freed at once. Next function allocates a single chunk for linked list // I prefer this method over realloc due to the big inpact on xput realloc may have if // memory is being swapped to disk. This approach is safer (although that may not be true on all platforms) static _cmsSubAllocator_chunk* _cmsCreateSubAllocChunk(cmsContext ContextID, cmsUInt32Number Initial) { _cmsSubAllocator_chunk* chunk; // 20K by default if (Initial == 0) Initial = 20*1024; // Create the container chunk = (_cmsSubAllocator_chunk*) _cmsMallocZero(ContextID, sizeof(_cmsSubAllocator_chunk)); if (chunk == NULL) return NULL; // Initialize values chunk ->Block = (cmsUInt8Number*) _cmsMalloc(ContextID, Initial); if (chunk ->Block == NULL) { // Something went wrong _cmsFree(ContextID, chunk); return NULL; } chunk ->BlockSize = Initial; chunk ->Used = 0; chunk ->next = NULL; return chunk; } // The suballocated is nothing but a pointer to the first element in the list. We also keep // the thread ID in this structure. _cmsSubAllocator* _cmsCreateSubAlloc(cmsContext ContextID, cmsUInt32Number Initial) { _cmsSubAllocator* sub; // Create the container sub = (_cmsSubAllocator*) _cmsMallocZero(ContextID, sizeof(_cmsSubAllocator)); if (sub == NULL) return NULL; sub ->ContextID = ContextID; sub ->h = _cmsCreateSubAllocChunk(ContextID, Initial); if (sub ->h == NULL) { _cmsFree(ContextID, sub); return NULL; } return sub; } // Get rid of whole linked list void _cmsSubAllocDestroy(_cmsSubAllocator* sub) { _cmsSubAllocator_chunk *chunk, *n; for (chunk = sub ->h; chunk != NULL; chunk = n) { n = chunk->next; if (chunk->Block != NULL) _cmsFree(sub ->ContextID, chunk->Block); _cmsFree(sub ->ContextID, chunk); } // Free the header _cmsFree(sub ->ContextID, sub); } // Get a pointer to small memory block. void* _cmsSubAlloc(_cmsSubAllocator* sub, cmsUInt32Number size) { cmsUInt32Number Free = sub -> h ->BlockSize - sub -> h -> Used; cmsUInt8Number* ptr; size = _cmsALIGNMEM(size); // Check for memory. If there is no room, allocate a new chunk of double memory size. if (size > Free) { _cmsSubAllocator_chunk* chunk; cmsUInt32Number newSize; newSize = sub -> h ->BlockSize * 2; if (newSize < size) newSize = size; chunk = _cmsCreateSubAllocChunk(sub -> ContextID, newSize); if (chunk == NULL) return NULL; // Link list chunk ->next = sub ->h; sub ->h = chunk; } ptr = sub -> h ->Block + sub -> h ->Used; sub -> h -> Used += size; return (void*) ptr; } // Error logging ****************************************************************** // There is no error handling at all. When a funtion fails, it returns proper value. // For example, all create functions does return NULL on failure. Other return FALSE // It may be interesting, for the developer, to know why the function is failing. // for that reason, lcms2 does offer a logging function. This function does recive // a ENGLISH string with some clues on what is going wrong. You can show this // info to the end user, or just create some sort of log. // The logging function should NOT terminate the program, as this obviously can leave // resources. It is the programmer's responsability to check each function return code // to make sure it didn't fail. // Error messages are limited to MAX_ERROR_MESSAGE_LEN #define MAX_ERROR_MESSAGE_LEN 1024 // --------------------------------------------------------------------------------------------------------- // This is our default log error static void DefaultLogErrorHandlerFunction(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text); // The current handler in actual environment static cmsLogErrorHandlerFunction LogErrorHandler = DefaultLogErrorHandlerFunction; // The default error logger does nothing. static void DefaultLogErrorHandlerFunction(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text) { // fprintf(stderr, "[lcms]: %s\n", Text); // fflush(stderr); cmsUNUSED_PARAMETER(ContextID); cmsUNUSED_PARAMETER(ErrorCode); cmsUNUSED_PARAMETER(Text); } // Change log error void CMSEXPORT cmsSetLogErrorHandler(cmsLogErrorHandlerFunction Fn) { if (Fn == NULL) LogErrorHandler = DefaultLogErrorHandlerFunction; else LogErrorHandler = Fn; } // Log an error // ErrorText is a text holding an english description of error. void CMSEXPORT cmsSignalError(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *ErrorText, ...) { va_list args; char Buffer[MAX_ERROR_MESSAGE_LEN]; va_start(args, ErrorText); vsnprintf(Buffer, MAX_ERROR_MESSAGE_LEN-1, ErrorText, args); va_end(args); // Call handler LogErrorHandler(ContextID, ErrorCode, Buffer); } // Utility function to print signatures void _cmsTagSignature2String(char String[5], cmsTagSignature sig) { cmsUInt32Number be; // Convert to big endian be = _cmsAdjustEndianess32((cmsUInt32Number) sig); // Move chars memmove(String, &be, 4); // Make sure of terminator String[4] = 0; } lcms2-2.5/src/cmsxform.c0000644002406300000240000010412012163060730014512 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Transformations stuff // ----------------------------------------------------------------------- // Alarm codes for 16-bit transformations, because the fixed range of containers there are // no values left to mark out of gamut. volatile is C99 per 6.2.5 static volatile cmsUInt16Number Alarm[cmsMAXCHANNELS] = { 0x7F00, 0x7F00, 0x7F00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static volatile cmsFloat64Number GlobalAdaptationState = 1; // The adaptation state may be defaulted by this function. If you don't like it, use the extended transform routine cmsFloat64Number CMSEXPORT cmsSetAdaptationState(cmsFloat64Number d) { cmsFloat64Number OldVal = GlobalAdaptationState; if (d >= 0) GlobalAdaptationState = d; return OldVal; } // Alarm codes are always global void CMSEXPORT cmsSetAlarmCodes(cmsUInt16Number NewAlarm[cmsMAXCHANNELS]) { int i; _cmsAssert(NewAlarm != NULL); for (i=0; i < cmsMAXCHANNELS; i++) Alarm[i] = NewAlarm[i]; } // You can get the codes cas well void CMSEXPORT cmsGetAlarmCodes(cmsUInt16Number OldAlarm[cmsMAXCHANNELS]) { int i; _cmsAssert(OldAlarm != NULL); for (i=0; i < cmsMAXCHANNELS; i++) OldAlarm[i] = Alarm[i]; } // Get rid of transform resources void CMSEXPORT cmsDeleteTransform(cmsHTRANSFORM hTransform) { _cmsTRANSFORM* p = (_cmsTRANSFORM*) hTransform; _cmsAssert(p != NULL); if (p -> GamutCheck) cmsPipelineFree(p -> GamutCheck); if (p -> Lut) cmsPipelineFree(p -> Lut); if (p ->InputColorant) cmsFreeNamedColorList(p ->InputColorant); if (p -> OutputColorant) cmsFreeNamedColorList(p ->OutputColorant); if (p ->Sequence) cmsFreeProfileSequenceDescription(p ->Sequence); if (p ->UserData) p ->FreeUserData(p ->ContextID, p ->UserData); _cmsFree(p ->ContextID, (void *) p); } // Apply transform. void CMSEXPORT cmsDoTransform(cmsHTRANSFORM Transform, const void* InputBuffer, void* OutputBuffer, cmsUInt32Number Size) { _cmsTRANSFORM* p = (_cmsTRANSFORM*) Transform; p -> xform(p, InputBuffer, OutputBuffer, Size, Size); } // Apply transform. void CMSEXPORT cmsDoTransformStride(cmsHTRANSFORM Transform, const void* InputBuffer, void* OutputBuffer, cmsUInt32Number Size, cmsUInt32Number Stride) { _cmsTRANSFORM* p = (_cmsTRANSFORM*) Transform; p -> xform(p, InputBuffer, OutputBuffer, Size, Stride); } // Transform routines ---------------------------------------------------------------------------------------------------------- // Float xform converts floats. Since there are no performance issues, one routine does all job, including gamut check. // Note that because extended range, we can use a -1.0 value for out of gamut in this case. static void FloatXFORM(_cmsTRANSFORM* p, const void* in, void* out, cmsUInt32Number Size, cmsUInt32Number Stride) { cmsUInt8Number* accum; cmsUInt8Number* output; cmsFloat32Number fIn[cmsMAXCHANNELS], fOut[cmsMAXCHANNELS]; cmsFloat32Number OutOfGamut; cmsUInt32Number i, j; accum = (cmsUInt8Number*) in; output = (cmsUInt8Number*) out; for (i=0; i < Size; i++) { accum = p -> FromInputFloat(p, fIn, accum, Stride); // Any gamut chack to do? if (p ->GamutCheck != NULL) { // Evaluate gamut marker. cmsPipelineEvalFloat( fIn, &OutOfGamut, p ->GamutCheck); // Is current color out of gamut? if (OutOfGamut > 0.0) { // Certainly, out of gamut for (j=0; j < cmsMAXCHANNELS; j++) fOut[j] = -1.0; } else { // No, proceed normally cmsPipelineEvalFloat(fIn, fOut, p -> Lut); } } else { // No gamut check at all cmsPipelineEvalFloat(fIn, fOut, p -> Lut); } // Back to asked representation output = p -> ToOutputFloat(p, fOut, output, Stride); } } // 16 bit precision ----------------------------------------------------------------------------------------------------------- // Null transformation, only applies formatters. No cach static void NullXFORM(_cmsTRANSFORM* p, const void* in, void* out, cmsUInt32Number Size, cmsUInt32Number Stride) { cmsUInt8Number* accum; cmsUInt8Number* output; cmsUInt16Number wIn[cmsMAXCHANNELS]; cmsUInt32Number i, n; accum = (cmsUInt8Number*) in; output = (cmsUInt8Number*) out; n = Size; // Buffer len for (i=0; i < n; i++) { accum = p -> FromInput(p, wIn, accum, Stride); output = p -> ToOutput(p, wIn, output, Stride); } } // No gamut check, no cache, 16 bits static void PrecalculatedXFORM(_cmsTRANSFORM* p, const void* in, void* out, cmsUInt32Number Size, cmsUInt32Number Stride) { register cmsUInt8Number* accum; register cmsUInt8Number* output; cmsUInt16Number wIn[cmsMAXCHANNELS], wOut[cmsMAXCHANNELS]; cmsUInt32Number i, n; accum = (cmsUInt8Number*) in; output = (cmsUInt8Number*) out; n = Size; for (i=0; i < n; i++) { accum = p -> FromInput(p, wIn, accum, Stride); p ->Lut ->Eval16Fn(wIn, wOut, p -> Lut->Data); output = p -> ToOutput(p, wOut, output, Stride); } } // Auxiliar: Handle precalculated gamut check static void TransformOnePixelWithGamutCheck(_cmsTRANSFORM* p, const cmsUInt16Number wIn[], cmsUInt16Number wOut[]) { cmsUInt16Number wOutOfGamut; p ->GamutCheck ->Eval16Fn(wIn, &wOutOfGamut, p ->GamutCheck ->Data); if (wOutOfGamut >= 1) { cmsUInt16Number i; for (i=0; i < p ->Lut->OutputChannels; i++) wOut[i] = Alarm[i]; } else p ->Lut ->Eval16Fn(wIn, wOut, p -> Lut->Data); } // Gamut check, No cach, 16 bits. static void PrecalculatedXFORMGamutCheck(_cmsTRANSFORM* p, const void* in, void* out, cmsUInt32Number Size, cmsUInt32Number Stride) { cmsUInt8Number* accum; cmsUInt8Number* output; cmsUInt16Number wIn[cmsMAXCHANNELS], wOut[cmsMAXCHANNELS]; cmsUInt32Number i, n; accum = (cmsUInt8Number*) in; output = (cmsUInt8Number*) out; n = Size; // Buffer len for (i=0; i < n; i++) { accum = p -> FromInput(p, wIn, accum, Stride); TransformOnePixelWithGamutCheck(p, wIn, wOut); output = p -> ToOutput(p, wOut, output, Stride); } } // No gamut check, Cach, 16 bits, static void CachedXFORM(_cmsTRANSFORM* p, const void* in, void* out, cmsUInt32Number Size, cmsUInt32Number Stride) { cmsUInt8Number* accum; cmsUInt8Number* output; cmsUInt16Number wIn[cmsMAXCHANNELS], wOut[cmsMAXCHANNELS]; cmsUInt32Number i, n; _cmsCACHE Cache; accum = (cmsUInt8Number*) in; output = (cmsUInt8Number*) out; n = Size; // Buffer len // Empty buffers for quick memcmp memset(wIn, 0, sizeof(wIn)); memset(wOut, 0, sizeof(wOut)); // Get copy of zero cache memcpy(&Cache, &p ->Cache, sizeof(Cache)); for (i=0; i < n; i++) { accum = p -> FromInput(p, wIn, accum, Stride); if (memcmp(wIn, Cache.CacheIn, sizeof(Cache.CacheIn)) == 0) { memcpy(wOut, Cache.CacheOut, sizeof(Cache.CacheOut)); } else { p ->Lut ->Eval16Fn(wIn, wOut, p -> Lut->Data); memcpy(Cache.CacheIn, wIn, sizeof(Cache.CacheIn)); memcpy(Cache.CacheOut, wOut, sizeof(Cache.CacheOut)); } output = p -> ToOutput(p, wOut, output, Stride); } } // All those nice features together static void CachedXFORMGamutCheck(_cmsTRANSFORM* p, const void* in, void* out, cmsUInt32Number Size, cmsUInt32Number Stride) { cmsUInt8Number* accum; cmsUInt8Number* output; cmsUInt16Number wIn[cmsMAXCHANNELS], wOut[cmsMAXCHANNELS]; cmsUInt32Number i, n; _cmsCACHE Cache; accum = (cmsUInt8Number*) in; output = (cmsUInt8Number*) out; n = Size; // Buffer len // Empty buffers for quick memcmp memset(wIn, 0, sizeof(cmsUInt16Number) * cmsMAXCHANNELS); memset(wOut, 0, sizeof(cmsUInt16Number) * cmsMAXCHANNELS); // Get copy of zero cache memcpy(&Cache, &p ->Cache, sizeof(Cache)); for (i=0; i < n; i++) { accum = p -> FromInput(p, wIn, accum, Stride); if (memcmp(wIn, Cache.CacheIn, sizeof(Cache.CacheIn)) == 0) { memcpy(wOut, Cache.CacheOut, sizeof(Cache.CacheOut)); } else { TransformOnePixelWithGamutCheck(p, wIn, wOut); memcpy(Cache.CacheIn, wIn, sizeof(Cache.CacheIn)); memcpy(Cache.CacheOut, wOut, sizeof(Cache.CacheOut)); } output = p -> ToOutput(p, wOut, output, Stride); } } // ------------------------------------------------------------------------------------------------------------- // List of used-defined transform factories typedef struct _cmsTransformCollection_st { _cmsTransformFactory Factory; struct _cmsTransformCollection_st *Next; } _cmsTransformCollection; // The linked list head static _cmsTransformCollection* TransformCollection = NULL; // Register new ways to transform cmsBool _cmsRegisterTransformPlugin(cmsContext id, cmsPluginBase* Data) { cmsPluginTransform* Plugin = (cmsPluginTransform*) Data; _cmsTransformCollection* fl; if (Data == NULL) { // Free the chain. Memory is safely freed at exit TransformCollection = NULL; return TRUE; } // Factory callback is required if (Plugin ->Factory == NULL) return FALSE; fl = (_cmsTransformCollection*) _cmsPluginMalloc(id, sizeof(_cmsTransformCollection)); if (fl == NULL) return FALSE; // Copy the parameters fl ->Factory = Plugin ->Factory; // Keep linked list fl ->Next = TransformCollection; TransformCollection = fl; // All is ok return TRUE; } void CMSEXPORT _cmsSetTransformUserData(struct _cmstransform_struct *CMMcargo, void* ptr, _cmsFreeUserDataFn FreePrivateDataFn) { _cmsAssert(CMMcargo != NULL); CMMcargo ->UserData = ptr; CMMcargo ->FreeUserData = FreePrivateDataFn; } // returns the pointer defined by the plug-in to store private data void * CMSEXPORT _cmsGetTransformUserData(struct _cmstransform_struct *CMMcargo) { _cmsAssert(CMMcargo != NULL); return CMMcargo ->UserData; } // returns the current formatters void CMSEXPORT _cmsGetTransformFormatters16(struct _cmstransform_struct *CMMcargo, cmsFormatter16* FromInput, cmsFormatter16* ToOutput) { _cmsAssert(CMMcargo != NULL); if (FromInput) *FromInput = CMMcargo ->FromInput; if (ToOutput) *ToOutput = CMMcargo ->ToOutput; } void CMSEXPORT _cmsGetTransformFormattersFloat(struct _cmstransform_struct *CMMcargo, cmsFormatterFloat* FromInput, cmsFormatterFloat* ToOutput) { _cmsAssert(CMMcargo != NULL); if (FromInput) *FromInput = CMMcargo ->FromInputFloat; if (ToOutput) *ToOutput = CMMcargo ->ToOutputFloat; } // Allocate transform struct and set it to defaults. Ask the optimization plug-in about if those formats are proper // for separated transforms. If this is the case, static _cmsTRANSFORM* AllocEmptyTransform(cmsContext ContextID, cmsPipeline* lut, cmsUInt32Number Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags) { _cmsTransformCollection* Plugin; // Allocate needed memory _cmsTRANSFORM* p = (_cmsTRANSFORM*) _cmsMallocZero(ContextID, sizeof(_cmsTRANSFORM)); if (!p) return NULL; // Store the proposed pipeline p ->Lut = lut; // Let's see if any plug-in want to do the transform by itself for (Plugin = TransformCollection; Plugin != NULL; Plugin = Plugin ->Next) { if (Plugin ->Factory(&p->xform, &p->UserData, &p ->FreeUserData, &p ->Lut, InputFormat, OutputFormat, dwFlags)) { // Last plugin in the declaration order takes control. We just keep // the original parameters as a logging. // Note that cmsFLAGS_CAN_CHANGE_FORMATTER is not set, so by default // an optimized transform is not reusable. The plug-in can, however, change // the flags and make it suitable. p ->ContextID = ContextID; p ->InputFormat = *InputFormat; p ->OutputFormat = *OutputFormat; p ->dwOriginalFlags = *dwFlags; // Fill the formatters just in case the optimized routine is interested. // No error is thrown if the formatter doesn't exist. It is up to the optimization // factory to decide what to do in those cases. p ->FromInput = _cmsGetFormatter(*InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_16BITS).Fmt16; p ->ToOutput = _cmsGetFormatter(*OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS).Fmt16; p ->FromInputFloat = _cmsGetFormatter(*InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT).FmtFloat; p ->ToOutputFloat = _cmsGetFormatter(*OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT).FmtFloat; return p; } } // Not suitable for the transform plug-in, let's check the pipeline plug-in if (p ->Lut != NULL) _cmsOptimizePipeline(&p->Lut, Intent, InputFormat, OutputFormat, dwFlags); // Check whatever this is a true floating point transform if (_cmsFormatterIsFloat(*InputFormat) && _cmsFormatterIsFloat(*OutputFormat)) { // Get formatter function always return a valid union, but the contents of this union may be NULL. p ->FromInputFloat = _cmsGetFormatter(*InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT).FmtFloat; p ->ToOutputFloat = _cmsGetFormatter(*OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT).FmtFloat; *dwFlags |= cmsFLAGS_CAN_CHANGE_FORMATTER; if (p ->FromInputFloat == NULL || p ->ToOutputFloat == NULL) { cmsSignalError(ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported raster format"); _cmsFree(ContextID, p); return NULL; } // Float transforms don't use cach, always are non-NULL p ->xform = FloatXFORM; } else { if (*InputFormat == 0 && *OutputFormat == 0) { p ->FromInput = p ->ToOutput = NULL; *dwFlags |= cmsFLAGS_CAN_CHANGE_FORMATTER; } else { int BytesPerPixelInput; p ->FromInput = _cmsGetFormatter(*InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_16BITS).Fmt16; p ->ToOutput = _cmsGetFormatter(*OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS).Fmt16; if (p ->FromInput == NULL || p ->ToOutput == NULL) { cmsSignalError(ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported raster format"); _cmsFree(ContextID, p); return NULL; } BytesPerPixelInput = T_BYTES(p ->InputFormat); if (BytesPerPixelInput == 0 || BytesPerPixelInput >= 2) *dwFlags |= cmsFLAGS_CAN_CHANGE_FORMATTER; } if (*dwFlags & cmsFLAGS_NULLTRANSFORM) { p ->xform = NullXFORM; } else { if (*dwFlags & cmsFLAGS_NOCACHE) { if (*dwFlags & cmsFLAGS_GAMUTCHECK) p ->xform = PrecalculatedXFORMGamutCheck; // Gamut check, no cach else p ->xform = PrecalculatedXFORM; // No cach, no gamut check } else { if (*dwFlags & cmsFLAGS_GAMUTCHECK) p ->xform = CachedXFORMGamutCheck; // Gamut check, cach else p ->xform = CachedXFORM; // No gamut check, cach } } } p ->InputFormat = *InputFormat; p ->OutputFormat = *OutputFormat; p ->dwOriginalFlags = *dwFlags; p ->ContextID = ContextID; p ->UserData = NULL; return p; } static cmsBool GetXFormColorSpaces(int nProfiles, cmsHPROFILE hProfiles[], cmsColorSpaceSignature* Input, cmsColorSpaceSignature* Output) { cmsColorSpaceSignature ColorSpaceIn, ColorSpaceOut; cmsColorSpaceSignature PostColorSpace; int i; if (nProfiles <= 0) return FALSE; if (hProfiles[0] == NULL) return FALSE; *Input = PostColorSpace = cmsGetColorSpace(hProfiles[0]); for (i=0; i < nProfiles; i++) { cmsProfileClassSignature cls; cmsHPROFILE hProfile = hProfiles[i]; int lIsInput = (PostColorSpace != cmsSigXYZData) && (PostColorSpace != cmsSigLabData); if (hProfile == NULL) return FALSE; cls = cmsGetDeviceClass(hProfile); if (cls == cmsSigNamedColorClass) { ColorSpaceIn = cmsSig1colorData; ColorSpaceOut = (nProfiles > 1) ? cmsGetPCS(hProfile) : cmsGetColorSpace(hProfile); } else if (lIsInput || (cls == cmsSigLinkClass)) { ColorSpaceIn = cmsGetColorSpace(hProfile); ColorSpaceOut = cmsGetPCS(hProfile); } else { ColorSpaceIn = cmsGetPCS(hProfile); ColorSpaceOut = cmsGetColorSpace(hProfile); } if (i==0) *Input = ColorSpaceIn; PostColorSpace = ColorSpaceOut; } *Output = PostColorSpace; return TRUE; } // Check colorspace static cmsBool IsProperColorSpace(cmsColorSpaceSignature Check, cmsUInt32Number dwFormat) { int Space1 = T_COLORSPACE(dwFormat); int Space2 = _cmsLCMScolorSpace(Check); if (Space1 == PT_ANY) return TRUE; if (Space1 == Space2) return TRUE; if (Space1 == PT_LabV2 && Space2 == PT_Lab) return TRUE; if (Space1 == PT_Lab && Space2 == PT_LabV2) return TRUE; return FALSE; } // ---------------------------------------------------------------------------------------------------------------- static void SetWhitePoint(cmsCIEXYZ* wtPt, const cmsCIEXYZ* src) { if (src == NULL) { wtPt ->X = cmsD50X; wtPt ->Y = cmsD50Y; wtPt ->Z = cmsD50Z; } else { wtPt ->X = src->X; wtPt ->Y = src->Y; wtPt ->Z = src->Z; } } // New to lcms 2.0 -- have all parameters available. cmsHTRANSFORM CMSEXPORT cmsCreateExtendedTransform(cmsContext ContextID, cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[], cmsBool BPC[], cmsUInt32Number Intents[], cmsFloat64Number AdaptationStates[], cmsHPROFILE hGamutProfile, cmsUInt32Number nGamutPCSposition, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, cmsUInt32Number dwFlags) { _cmsTRANSFORM* xform; cmsColorSpaceSignature EntryColorSpace; cmsColorSpaceSignature ExitColorSpace; cmsPipeline* Lut; cmsUInt32Number LastIntent = Intents[nProfiles-1]; // If it is a fake transform if (dwFlags & cmsFLAGS_NULLTRANSFORM) { return AllocEmptyTransform(ContextID, NULL, INTENT_PERCEPTUAL, &InputFormat, &OutputFormat, &dwFlags); } // If gamut check is requested, make sure we have a gamut profile if (dwFlags & cmsFLAGS_GAMUTCHECK) { if (hGamutProfile == NULL) dwFlags &= ~cmsFLAGS_GAMUTCHECK; } // On floating point transforms, inhibit cache if (_cmsFormatterIsFloat(InputFormat) || _cmsFormatterIsFloat(OutputFormat)) dwFlags |= cmsFLAGS_NOCACHE; // Mark entry/exit spaces if (!GetXFormColorSpaces(nProfiles, hProfiles, &EntryColorSpace, &ExitColorSpace)) { cmsSignalError(ContextID, cmsERROR_NULL, "NULL input profiles on transform"); return NULL; } // Check if proper colorspaces if (!IsProperColorSpace(EntryColorSpace, InputFormat)) { cmsSignalError(ContextID, cmsERROR_COLORSPACE_CHECK, "Wrong input color space on transform"); return NULL; } if (!IsProperColorSpace(ExitColorSpace, OutputFormat)) { cmsSignalError(ContextID, cmsERROR_COLORSPACE_CHECK, "Wrong output color space on transform"); return NULL; } // Create a pipeline with all transformations Lut = _cmsLinkProfiles(ContextID, nProfiles, Intents, hProfiles, BPC, AdaptationStates, dwFlags); if (Lut == NULL) { cmsSignalError(ContextID, cmsERROR_NOT_SUITABLE, "Couldn't link the profiles"); return NULL; } // Check channel count if ((cmsChannelsOf(EntryColorSpace) != cmsPipelineInputChannels(Lut)) || (cmsChannelsOf(ExitColorSpace) != cmsPipelineOutputChannels(Lut))) { cmsSignalError(ContextID, cmsERROR_NOT_SUITABLE, "Channel count doesn't match. Profile is corrupted"); return NULL; } // All seems ok xform = AllocEmptyTransform(ContextID, Lut, LastIntent, &InputFormat, &OutputFormat, &dwFlags); if (xform == NULL) { return NULL; } // Keep values xform ->EntryColorSpace = EntryColorSpace; xform ->ExitColorSpace = ExitColorSpace; xform ->RenderingIntent = Intents[nProfiles-1]; // Take white points SetWhitePoint(&xform->EntryWhitePoint, (cmsCIEXYZ*) cmsReadTag(hProfiles[0], cmsSigMediaWhitePointTag)); SetWhitePoint(&xform->ExitWhitePoint, (cmsCIEXYZ*) cmsReadTag(hProfiles[nProfiles-1], cmsSigMediaWhitePointTag)); // Create a gamut check LUT if requested if (hGamutProfile != NULL && (dwFlags & cmsFLAGS_GAMUTCHECK)) xform ->GamutCheck = _cmsCreateGamutCheckPipeline(ContextID, hProfiles, BPC, Intents, AdaptationStates, nGamutPCSposition, hGamutProfile); // Try to read input and output colorant table if (cmsIsTag(hProfiles[0], cmsSigColorantTableTag)) { // Input table can only come in this way. xform ->InputColorant = cmsDupNamedColorList((cmsNAMEDCOLORLIST*) cmsReadTag(hProfiles[0], cmsSigColorantTableTag)); } // Output is a little bit more complex. if (cmsGetDeviceClass(hProfiles[nProfiles-1]) == cmsSigLinkClass) { // This tag may exist only on devicelink profiles. if (cmsIsTag(hProfiles[nProfiles-1], cmsSigColorantTableOutTag)) { // It may be NULL if error xform ->OutputColorant = cmsDupNamedColorList((cmsNAMEDCOLORLIST*) cmsReadTag(hProfiles[nProfiles-1], cmsSigColorantTableOutTag)); } } else { if (cmsIsTag(hProfiles[nProfiles-1], cmsSigColorantTableTag)) { xform -> OutputColorant = cmsDupNamedColorList((cmsNAMEDCOLORLIST*) cmsReadTag(hProfiles[nProfiles-1], cmsSigColorantTableTag)); } } // Store the sequence of profiles if (dwFlags & cmsFLAGS_KEEP_SEQUENCE) { xform ->Sequence = _cmsCompileProfileSequence(ContextID, nProfiles, hProfiles); } else xform ->Sequence = NULL; // If this is a cached transform, init first value, which is zero (16 bits only) if (!(dwFlags & cmsFLAGS_NOCACHE)) { memset(&xform ->Cache.CacheIn, 0, sizeof(xform ->Cache.CacheIn)); if (xform ->GamutCheck != NULL) { TransformOnePixelWithGamutCheck(xform, xform ->Cache.CacheIn, xform->Cache.CacheOut); } else { xform ->Lut ->Eval16Fn(xform ->Cache.CacheIn, xform->Cache.CacheOut, xform -> Lut->Data); } } return (cmsHTRANSFORM) xform; } // Multiprofile transforms: Gamut check is not available here, as it is unclear from which profile the gamut comes. cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransformTHR(cmsContext ContextID, cmsHPROFILE hProfiles[], cmsUInt32Number nProfiles, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags) { cmsUInt32Number i; cmsBool BPC[256]; cmsUInt32Number Intents[256]; cmsFloat64Number AdaptationStates[256]; if (nProfiles <= 0 || nProfiles > 255) { cmsSignalError(ContextID, cmsERROR_RANGE, "Wrong number of profiles. 1..255 expected, %d found.", nProfiles); return NULL; } for (i=0; i < nProfiles; i++) { BPC[i] = dwFlags & cmsFLAGS_BLACKPOINTCOMPENSATION ? TRUE : FALSE; Intents[i] = Intent; AdaptationStates[i] = GlobalAdaptationState; } return cmsCreateExtendedTransform(ContextID, nProfiles, hProfiles, BPC, Intents, AdaptationStates, NULL, 0, InputFormat, OutputFormat, dwFlags); } cmsHTRANSFORM CMSEXPORT cmsCreateMultiprofileTransform(cmsHPROFILE hProfiles[], cmsUInt32Number nProfiles, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags) { if (nProfiles <= 0 || nProfiles > 255) { cmsSignalError(NULL, cmsERROR_RANGE, "Wrong number of profiles. 1..255 expected, %d found.", nProfiles); return NULL; } return cmsCreateMultiprofileTransformTHR(cmsGetProfileContextID(hProfiles[0]), hProfiles, nProfiles, InputFormat, OutputFormat, Intent, dwFlags); } cmsHTRANSFORM CMSEXPORT cmsCreateTransformTHR(cmsContext ContextID, cmsHPROFILE Input, cmsUInt32Number InputFormat, cmsHPROFILE Output, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags) { cmsHPROFILE hArray[2]; hArray[0] = Input; hArray[1] = Output; return cmsCreateMultiprofileTransformTHR(ContextID, hArray, Output == NULL ? 1 : 2, InputFormat, OutputFormat, Intent, dwFlags); } CMSAPI cmsHTRANSFORM CMSEXPORT cmsCreateTransform(cmsHPROFILE Input, cmsUInt32Number InputFormat, cmsHPROFILE Output, cmsUInt32Number OutputFormat, cmsUInt32Number Intent, cmsUInt32Number dwFlags) { return cmsCreateTransformTHR(cmsGetProfileContextID(Input), Input, InputFormat, Output, OutputFormat, Intent, dwFlags); } cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransformTHR(cmsContext ContextID, cmsHPROFILE InputProfile, cmsUInt32Number InputFormat, cmsHPROFILE OutputProfile, cmsUInt32Number OutputFormat, cmsHPROFILE ProofingProfile, cmsUInt32Number nIntent, cmsUInt32Number ProofingIntent, cmsUInt32Number dwFlags) { cmsHPROFILE hArray[4]; cmsUInt32Number Intents[4]; cmsBool BPC[4]; cmsFloat64Number Adaptation[4]; cmsBool DoBPC = (dwFlags & cmsFLAGS_BLACKPOINTCOMPENSATION) ? TRUE : FALSE; hArray[0] = InputProfile; hArray[1] = ProofingProfile; hArray[2] = ProofingProfile; hArray[3] = OutputProfile; Intents[0] = nIntent; Intents[1] = nIntent; Intents[2] = INTENT_RELATIVE_COLORIMETRIC; Intents[3] = ProofingIntent; BPC[0] = DoBPC; BPC[1] = DoBPC; BPC[2] = 0; BPC[3] = 0; Adaptation[0] = Adaptation[1] = Adaptation[2] = Adaptation[3] = GlobalAdaptationState; if (!(dwFlags & (cmsFLAGS_SOFTPROOFING|cmsFLAGS_GAMUTCHECK))) return cmsCreateTransformTHR(ContextID, InputProfile, InputFormat, OutputProfile, OutputFormat, nIntent, dwFlags); return cmsCreateExtendedTransform(ContextID, 4, hArray, BPC, Intents, Adaptation, ProofingProfile, 1, InputFormat, OutputFormat, dwFlags); } cmsHTRANSFORM CMSEXPORT cmsCreateProofingTransform(cmsHPROFILE InputProfile, cmsUInt32Number InputFormat, cmsHPROFILE OutputProfile, cmsUInt32Number OutputFormat, cmsHPROFILE ProofingProfile, cmsUInt32Number nIntent, cmsUInt32Number ProofingIntent, cmsUInt32Number dwFlags) { return cmsCreateProofingTransformTHR(cmsGetProfileContextID(InputProfile), InputProfile, InputFormat, OutputProfile, OutputFormat, ProofingProfile, nIntent, ProofingIntent, dwFlags); } // Grab the ContextID from an open transform. Returns NULL if a NULL transform is passed cmsContext CMSEXPORT cmsGetTransformContextID(cmsHTRANSFORM hTransform) { _cmsTRANSFORM* xform = (_cmsTRANSFORM*) hTransform; if (xform == NULL) return NULL; return xform -> ContextID; } // Grab the input/output formats cmsUInt32Number CMSEXPORT cmsGetTransformInputFormat(cmsHTRANSFORM hTransform) { _cmsTRANSFORM* xform = (_cmsTRANSFORM*) hTransform; if (xform == NULL) return 0; return xform->InputFormat; } cmsUInt32Number CMSEXPORT cmsGetTransformOutputFormat(cmsHTRANSFORM hTransform) { _cmsTRANSFORM* xform = (_cmsTRANSFORM*) hTransform; if (xform == NULL) return 0; return xform->OutputFormat; } // For backwards compatibility cmsBool CMSEXPORT cmsChangeBuffersFormat(cmsHTRANSFORM hTransform, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat) { _cmsTRANSFORM* xform = (_cmsTRANSFORM*) hTransform; cmsFormatter16 FromInput, ToOutput; // We only can afford to change formatters if previous transform is at least 16 bits if (!(xform ->dwOriginalFlags & cmsFLAGS_CAN_CHANGE_FORMATTER)) { cmsSignalError(xform ->ContextID, cmsERROR_NOT_SUITABLE, "cmsChangeBuffersFormat works only on transforms created originally with at least 16 bits of precision"); return FALSE; } FromInput = _cmsGetFormatter(InputFormat, cmsFormatterInput, CMS_PACK_FLAGS_16BITS).Fmt16; ToOutput = _cmsGetFormatter(OutputFormat, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS).Fmt16; if (FromInput == NULL || ToOutput == NULL) { cmsSignalError(xform -> ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported raster format"); return FALSE; } xform ->InputFormat = InputFormat; xform ->OutputFormat = OutputFormat; xform ->FromInput = FromInput; xform ->ToOutput = ToOutput; return TRUE; } lcms2-2.5/src/cmscnvrt.c0000644002406300000240000011431312163060730014520 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Link several profiles to obtain a single LUT modelling the whole color transform. Intents, Black point // compensation and Adaptation parameters may vary across profiles. BPC and Adaptation refers to the PCS // after the profile. I.e, BPC[0] refers to connexion between profile(0) and profile(1) cmsPipeline* _cmsLinkProfiles(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); //--------------------------------------------------------------------------------- // This is the default routine for ICC-style intents. A user may decide to override it by using a plugin. // Supported intents are perceptual, relative colorimetric, saturation and ICC-absolute colorimetric static cmsPipeline* DefaultICCintents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); //--------------------------------------------------------------------------------- // This is the entry for black-preserving K-only intents, which are non-ICC. Last profile have to be a output profile // to do the trick (no devicelinks allowed at that position) static cmsPipeline* BlackPreservingKOnlyIntents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); //--------------------------------------------------------------------------------- // This is the entry for black-plane preserving, which are non-ICC. Again, Last profile have to be a output profile // to do the trick (no devicelinks allowed at that position) static cmsPipeline* BlackPreservingKPlaneIntents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number Intents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); //--------------------------------------------------------------------------------- // This is a structure holding implementations for all supported intents. typedef struct _cms_intents_list { cmsUInt32Number Intent; char Description[256]; cmsIntentFn Link; struct _cms_intents_list* Next; } cmsIntentsList; // Built-in intents static cmsIntentsList DefaultIntents[] = { { INTENT_PERCEPTUAL, "Perceptual", DefaultICCintents, &DefaultIntents[1] }, { INTENT_RELATIVE_COLORIMETRIC, "Relative colorimetric", DefaultICCintents, &DefaultIntents[2] }, { INTENT_SATURATION, "Saturation", DefaultICCintents, &DefaultIntents[3] }, { INTENT_ABSOLUTE_COLORIMETRIC, "Absolute colorimetric", DefaultICCintents, &DefaultIntents[4] }, { INTENT_PRESERVE_K_ONLY_PERCEPTUAL, "Perceptual preserving black ink", BlackPreservingKOnlyIntents, &DefaultIntents[5] }, { INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC, "Relative colorimetric preserving black ink", BlackPreservingKOnlyIntents, &DefaultIntents[6] }, { INTENT_PRESERVE_K_ONLY_SATURATION, "Saturation preserving black ink", BlackPreservingKOnlyIntents, &DefaultIntents[7] }, { INTENT_PRESERVE_K_PLANE_PERCEPTUAL, "Perceptual preserving black plane", BlackPreservingKPlaneIntents, &DefaultIntents[8] }, { INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC,"Relative colorimetric preserving black plane", BlackPreservingKPlaneIntents, &DefaultIntents[9] }, { INTENT_PRESERVE_K_PLANE_SATURATION, "Saturation preserving black plane", BlackPreservingKPlaneIntents, NULL } }; // A pointer to the begining of the list static cmsIntentsList *Intents = DefaultIntents; // Search the list for a suitable intent. Returns NULL if not found static cmsIntentsList* SearchIntent(cmsUInt32Number Intent) { cmsIntentsList* pt; for (pt = Intents; pt != NULL; pt = pt -> Next) if (pt ->Intent == Intent) return pt; return NULL; } // Black point compensation. Implemented as a linear scaling in XYZ. Black points // should come relative to the white point. Fills an matrix/offset element m // which is organized as a 4x4 matrix. static void ComputeBlackPointCompensation(const cmsCIEXYZ* BlackPointIn, const cmsCIEXYZ* BlackPointOut, cmsMAT3* m, cmsVEC3* off) { cmsFloat64Number ax, ay, az, bx, by, bz, tx, ty, tz; // Now we need to compute a matrix plus an offset m and of such of // [m]*bpin + off = bpout // [m]*D50 + off = D50 // // This is a linear scaling in the form ax+b, where // a = (bpout - D50) / (bpin - D50) // b = - D50* (bpout - bpin) / (bpin - D50) tx = BlackPointIn->X - cmsD50_XYZ()->X; ty = BlackPointIn->Y - cmsD50_XYZ()->Y; tz = BlackPointIn->Z - cmsD50_XYZ()->Z; ax = (BlackPointOut->X - cmsD50_XYZ()->X) / tx; ay = (BlackPointOut->Y - cmsD50_XYZ()->Y) / ty; az = (BlackPointOut->Z - cmsD50_XYZ()->Z) / tz; bx = - cmsD50_XYZ()-> X * (BlackPointOut->X - BlackPointIn->X) / tx; by = - cmsD50_XYZ()-> Y * (BlackPointOut->Y - BlackPointIn->Y) / ty; bz = - cmsD50_XYZ()-> Z * (BlackPointOut->Z - BlackPointIn->Z) / tz; _cmsVEC3init(&m ->v[0], ax, 0, 0); _cmsVEC3init(&m ->v[1], 0, ay, 0); _cmsVEC3init(&m ->v[2], 0, 0, az); _cmsVEC3init(off, bx, by, bz); } // Approximate a blackbody illuminant based on CHAD information static cmsFloat64Number CHAD2Temp(const cmsMAT3* Chad) { // Convert D50 across inverse CHAD to get the absolute white point cmsVEC3 d, s; cmsCIEXYZ Dest; cmsCIExyY DestChromaticity; cmsFloat64Number TempK; cmsMAT3 m1, m2; m1 = *Chad; if (!_cmsMAT3inverse(&m1, &m2)) return FALSE; s.n[VX] = cmsD50_XYZ() -> X; s.n[VY] = cmsD50_XYZ() -> Y; s.n[VZ] = cmsD50_XYZ() -> Z; _cmsMAT3eval(&d, &m2, &s); Dest.X = d.n[VX]; Dest.Y = d.n[VY]; Dest.Z = d.n[VZ]; cmsXYZ2xyY(&DestChromaticity, &Dest); if (!cmsTempFromWhitePoint(&TempK, &DestChromaticity)) return -1.0; return TempK; } // Compute a CHAD based on a given temperature static void Temp2CHAD(cmsMAT3* Chad, cmsFloat64Number Temp) { cmsCIEXYZ White; cmsCIExyY ChromaticityOfWhite; cmsWhitePointFromTemp(&ChromaticityOfWhite, Temp); cmsxyY2XYZ(&White, &ChromaticityOfWhite); _cmsAdaptationMatrix(Chad, NULL, &White, cmsD50_XYZ()); } // Join scalings to obtain relative input to absolute and then to relative output. // Result is stored in a 3x3 matrix static cmsBool ComputeAbsoluteIntent(cmsFloat64Number AdaptationState, const cmsCIEXYZ* WhitePointIn, const cmsMAT3* ChromaticAdaptationMatrixIn, const cmsCIEXYZ* WhitePointOut, const cmsMAT3* ChromaticAdaptationMatrixOut, cmsMAT3* m) { cmsMAT3 Scale, m1, m2, m3, m4; // Adaptation state if (AdaptationState == 1.0) { // Observer is fully adapted. Keep chromatic adaptation. // That is the standard V4 behaviour _cmsVEC3init(&m->v[0], WhitePointIn->X / WhitePointOut->X, 0, 0); _cmsVEC3init(&m->v[1], 0, WhitePointIn->Y / WhitePointOut->Y, 0); _cmsVEC3init(&m->v[2], 0, 0, WhitePointIn->Z / WhitePointOut->Z); } else { // Incomplete adaptation. This is an advanced feature. _cmsVEC3init(&Scale.v[0], WhitePointIn->X / WhitePointOut->X, 0, 0); _cmsVEC3init(&Scale.v[1], 0, WhitePointIn->Y / WhitePointOut->Y, 0); _cmsVEC3init(&Scale.v[2], 0, 0, WhitePointIn->Z / WhitePointOut->Z); if (AdaptationState == 0.0) { m1 = *ChromaticAdaptationMatrixOut; _cmsMAT3per(&m2, &m1, &Scale); // m2 holds CHAD from output white to D50 times abs. col. scaling // Observer is not adapted, undo the chromatic adaptation _cmsMAT3per(m, &m2, ChromaticAdaptationMatrixOut); m3 = *ChromaticAdaptationMatrixIn; if (!_cmsMAT3inverse(&m3, &m4)) return FALSE; _cmsMAT3per(m, &m2, &m4); } else { cmsMAT3 MixedCHAD; cmsFloat64Number TempSrc, TempDest, Temp; m1 = *ChromaticAdaptationMatrixIn; if (!_cmsMAT3inverse(&m1, &m2)) return FALSE; _cmsMAT3per(&m3, &m2, &Scale); // m3 holds CHAD from input white to D50 times abs. col. scaling TempSrc = CHAD2Temp(ChromaticAdaptationMatrixIn); TempDest = CHAD2Temp(ChromaticAdaptationMatrixOut); if (TempSrc < 0.0 || TempDest < 0.0) return FALSE; // Something went wrong if (_cmsMAT3isIdentity(&Scale) && fabs(TempSrc - TempDest) < 0.01) { _cmsMAT3identity(m); return TRUE; } Temp = (1.0 - AdaptationState) * TempDest + AdaptationState * TempSrc; // Get a CHAD from whatever output temperature to D50. This replaces output CHAD Temp2CHAD(&MixedCHAD, Temp); _cmsMAT3per(m, &m3, &MixedCHAD); } } return TRUE; } // Just to see if m matrix should be applied static cmsBool IsEmptyLayer(cmsMAT3* m, cmsVEC3* off) { cmsFloat64Number diff = 0; cmsMAT3 Ident; int i; if (m == NULL && off == NULL) return TRUE; // NULL is allowed as an empty layer if (m == NULL && off != NULL) return FALSE; // This is an internal error _cmsMAT3identity(&Ident); for (i=0; i < 3*3; i++) diff += fabs(((cmsFloat64Number*)m)[i] - ((cmsFloat64Number*)&Ident)[i]); for (i=0; i < 3; i++) diff += fabs(((cmsFloat64Number*)off)[i]); return (diff < 0.002); } // Compute the conversion layer static cmsBool ComputeConversion(int i, cmsHPROFILE hProfiles[], cmsUInt32Number Intent, cmsBool BPC, cmsFloat64Number AdaptationState, cmsMAT3* m, cmsVEC3* off) { int k; // m and off are set to identity and this is detected latter on _cmsMAT3identity(m); _cmsVEC3init(off, 0, 0, 0); // If intent is abs. colorimetric, if (Intent == INTENT_ABSOLUTE_COLORIMETRIC) { cmsCIEXYZ WhitePointIn, WhitePointOut; cmsMAT3 ChromaticAdaptationMatrixIn, ChromaticAdaptationMatrixOut; _cmsReadMediaWhitePoint(&WhitePointIn, hProfiles[i-1]); _cmsReadCHAD(&ChromaticAdaptationMatrixIn, hProfiles[i-1]); _cmsReadMediaWhitePoint(&WhitePointOut, hProfiles[i]); _cmsReadCHAD(&ChromaticAdaptationMatrixOut, hProfiles[i]); if (!ComputeAbsoluteIntent(AdaptationState, &WhitePointIn, &ChromaticAdaptationMatrixIn, &WhitePointOut, &ChromaticAdaptationMatrixOut, m)) return FALSE; } else { // Rest of intents may apply BPC. if (BPC) { cmsCIEXYZ BlackPointIn, BlackPointOut; cmsDetectBlackPoint(&BlackPointIn, hProfiles[i-1], Intent, 0); cmsDetectDestinationBlackPoint(&BlackPointOut, hProfiles[i], Intent, 0); // If black points are equal, then do nothing if (BlackPointIn.X != BlackPointOut.X || BlackPointIn.Y != BlackPointOut.Y || BlackPointIn.Z != BlackPointOut.Z) ComputeBlackPointCompensation(&BlackPointIn, &BlackPointOut, m, off); } } // Offset should be adjusted because the encoding. We encode XYZ normalized to 0..1.0, // to do that, we divide by MAX_ENCODEABLE_XZY. The conversion stage goes XYZ -> XYZ so // we have first to convert from encoded to XYZ and then convert back to encoded. // y = Mx + Off // x = x'c // y = M x'c + Off // y = y'c; y' = y / c // y' = (Mx'c + Off) /c = Mx' + (Off / c) for (k=0; k < 3; k++) { off ->n[k] /= MAX_ENCODEABLE_XYZ; } return TRUE; } // Add a conversion stage if needed. If a matrix/offset m is given, it applies to XYZ space static cmsBool AddConversion(cmsPipeline* Result, cmsColorSpaceSignature InPCS, cmsColorSpaceSignature OutPCS, cmsMAT3* m, cmsVEC3* off) { cmsFloat64Number* m_as_dbl = (cmsFloat64Number*) m; cmsFloat64Number* off_as_dbl = (cmsFloat64Number*) off; // Handle PCS mismatches. A specialized stage is added to the LUT in such case switch (InPCS) { case cmsSigXYZData: // Input profile operates in XYZ switch (OutPCS) { case cmsSigXYZData: // XYZ -> XYZ if (!IsEmptyLayer(m, off) && !cmsPipelineInsertStage(Result, cmsAT_END, cmsStageAllocMatrix(Result ->ContextID, 3, 3, m_as_dbl, off_as_dbl))) return FALSE; break; case cmsSigLabData: // XYZ -> Lab if (!IsEmptyLayer(m, off) && !cmsPipelineInsertStage(Result, cmsAT_END, cmsStageAllocMatrix(Result ->ContextID, 3, 3, m_as_dbl, off_as_dbl))) return FALSE; if (!cmsPipelineInsertStage(Result, cmsAT_END, _cmsStageAllocXYZ2Lab(Result ->ContextID))) return FALSE; break; default: return FALSE; // Colorspace mismatch } break; case cmsSigLabData: // Input profile operates in Lab switch (OutPCS) { case cmsSigXYZData: // Lab -> XYZ if (!cmsPipelineInsertStage(Result, cmsAT_END, _cmsStageAllocLab2XYZ(Result ->ContextID))) return FALSE; if (!IsEmptyLayer(m, off) && !cmsPipelineInsertStage(Result, cmsAT_END, cmsStageAllocMatrix(Result ->ContextID, 3, 3, m_as_dbl, off_as_dbl))) return FALSE; break; case cmsSigLabData: // Lab -> Lab if (!IsEmptyLayer(m, off)) { if (!cmsPipelineInsertStage(Result, cmsAT_END, _cmsStageAllocLab2XYZ(Result ->ContextID)) || !cmsPipelineInsertStage(Result, cmsAT_END, cmsStageAllocMatrix(Result ->ContextID, 3, 3, m_as_dbl, off_as_dbl)) || !cmsPipelineInsertStage(Result, cmsAT_END, _cmsStageAllocXYZ2Lab(Result ->ContextID))) return FALSE; } break; default: return FALSE; // Mismatch } break; // On colorspaces other than PCS, check for same space default: if (InPCS != OutPCS) return FALSE; break; } return TRUE; } // Is a given space compatible with another? static cmsBool ColorSpaceIsCompatible(cmsColorSpaceSignature a, cmsColorSpaceSignature b) { // If they are same, they are compatible. if (a == b) return TRUE; // Check for MCH4 substitution of CMYK if ((a == cmsSig4colorData) && (b == cmsSigCmykData)) return TRUE; if ((a == cmsSigCmykData) && (b == cmsSig4colorData)) return TRUE; // Check for XYZ/Lab. Those spaces are interchangeable as they can be computed one from other. if ((a == cmsSigXYZData) && (b == cmsSigLabData)) return TRUE; if ((a == cmsSigLabData) && (b == cmsSigXYZData)) return TRUE; return FALSE; } // Default handler for ICC-style intents static cmsPipeline* DefaultICCintents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number TheIntents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { cmsPipeline* Lut = NULL; cmsPipeline* Result; cmsHPROFILE hProfile; cmsMAT3 m; cmsVEC3 off; cmsColorSpaceSignature ColorSpaceIn, ColorSpaceOut, CurrentColorSpace; cmsProfileClassSignature ClassSig; cmsUInt32Number i, Intent; // For safety if (nProfiles == 0) return NULL; // Allocate an empty LUT for holding the result. 0 as channel count means 'undefined' Result = cmsPipelineAlloc(ContextID, 0, 0); if (Result == NULL) return NULL; CurrentColorSpace = cmsGetColorSpace(hProfiles[0]); for (i=0; i < nProfiles; i++) { cmsBool lIsDeviceLink, lIsInput; hProfile = hProfiles[i]; ClassSig = cmsGetDeviceClass(hProfile); lIsDeviceLink = (ClassSig == cmsSigLinkClass || ClassSig == cmsSigAbstractClass ); // First profile is used as input unless devicelink or abstract if ((i == 0) && !lIsDeviceLink) { lIsInput = TRUE; } else { // Else use profile in the input direction if current space is not PCS lIsInput = (CurrentColorSpace != cmsSigXYZData) && (CurrentColorSpace != cmsSigLabData); } Intent = TheIntents[i]; if (lIsInput || lIsDeviceLink) { ColorSpaceIn = cmsGetColorSpace(hProfile); ColorSpaceOut = cmsGetPCS(hProfile); } else { ColorSpaceIn = cmsGetPCS(hProfile); ColorSpaceOut = cmsGetColorSpace(hProfile); } if (!ColorSpaceIsCompatible(ColorSpaceIn, CurrentColorSpace)) { cmsSignalError(ContextID, cmsERROR_COLORSPACE_CHECK, "ColorSpace mismatch"); goto Error; } // If devicelink is found, then no custom intent is allowed and we can // read the LUT to be applied. Settings don't apply here. if (lIsDeviceLink || ((ClassSig == cmsSigNamedColorClass) && (nProfiles == 1))) { // Get the involved LUT from the profile Lut = _cmsReadDevicelinkLUT(hProfile, Intent); if (Lut == NULL) goto Error; // What about abstract profiles? if (ClassSig == cmsSigAbstractClass && i > 0) { if (!ComputeConversion(i, hProfiles, Intent, BPC[i], AdaptationStates[i], &m, &off)) goto Error; } else { _cmsMAT3identity(&m); _cmsVEC3init(&off, 0, 0, 0); } if (!AddConversion(Result, CurrentColorSpace, ColorSpaceIn, &m, &off)) goto Error; } else { if (lIsInput) { // Input direction means non-pcs connection, so proceed like devicelinks Lut = _cmsReadInputLUT(hProfile, Intent); if (Lut == NULL) goto Error; } else { // Output direction means PCS connection. Intent may apply here Lut = _cmsReadOutputLUT(hProfile, Intent); if (Lut == NULL) goto Error; if (!ComputeConversion(i, hProfiles, Intent, BPC[i], AdaptationStates[i], &m, &off)) goto Error; if (!AddConversion(Result, CurrentColorSpace, ColorSpaceIn, &m, &off)) goto Error; } } // Concatenate to the output LUT if (!cmsPipelineCat(Result, Lut)) goto Error; cmsPipelineFree(Lut); // Update current space CurrentColorSpace = ColorSpaceOut; } return Result; Error: cmsPipelineFree(Lut); if (Result != NULL) cmsPipelineFree(Result); return NULL; cmsUNUSED_PARAMETER(dwFlags); } // Wrapper for DLL calling convention cmsPipeline* CMSEXPORT _cmsDefaultICCintents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number TheIntents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { return DefaultICCintents(ContextID, nProfiles, TheIntents, hProfiles, BPC, AdaptationStates, dwFlags); } // Black preserving intents --------------------------------------------------------------------------------------------- // Translate black-preserving intents to ICC ones static int TranslateNonICCIntents(int Intent) { switch (Intent) { case INTENT_PRESERVE_K_ONLY_PERCEPTUAL: case INTENT_PRESERVE_K_PLANE_PERCEPTUAL: return INTENT_PERCEPTUAL; case INTENT_PRESERVE_K_ONLY_RELATIVE_COLORIMETRIC: case INTENT_PRESERVE_K_PLANE_RELATIVE_COLORIMETRIC: return INTENT_RELATIVE_COLORIMETRIC; case INTENT_PRESERVE_K_ONLY_SATURATION: case INTENT_PRESERVE_K_PLANE_SATURATION: return INTENT_SATURATION; default: return Intent; } } // Sampler for Black-only preserving CMYK->CMYK transforms typedef struct { cmsPipeline* cmyk2cmyk; // The original transform cmsToneCurve* KTone; // Black-to-black tone curve } GrayOnlyParams; // Preserve black only if that is the only ink used static int BlackPreservingGrayOnlySampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { GrayOnlyParams* bp = (GrayOnlyParams*) Cargo; // If going across black only, keep black only if (In[0] == 0 && In[1] == 0 && In[2] == 0) { // TAC does not apply because it is black ink! Out[0] = Out[1] = Out[2] = 0; Out[3] = cmsEvalToneCurve16(bp->KTone, In[3]); return TRUE; } // Keep normal transform for other colors bp ->cmyk2cmyk ->Eval16Fn(In, Out, bp ->cmyk2cmyk->Data); return TRUE; } // This is the entry for black-preserving K-only intents, which are non-ICC static cmsPipeline* BlackPreservingKOnlyIntents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number TheIntents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { GrayOnlyParams bp; cmsPipeline* Result; cmsUInt32Number ICCIntents[256]; cmsStage* CLUT; cmsUInt32Number i, nGridPoints; // Sanity check if (nProfiles < 1 || nProfiles > 255) return NULL; // Translate black-preserving intents to ICC ones for (i=0; i < nProfiles; i++) ICCIntents[i] = TranslateNonICCIntents(TheIntents[i]); // Check for non-cmyk profiles if (cmsGetColorSpace(hProfiles[0]) != cmsSigCmykData || cmsGetColorSpace(hProfiles[nProfiles-1]) != cmsSigCmykData) return DefaultICCintents(ContextID, nProfiles, ICCIntents, hProfiles, BPC, AdaptationStates, dwFlags); memset(&bp, 0, sizeof(bp)); // Allocate an empty LUT for holding the result Result = cmsPipelineAlloc(ContextID, 4, 4); if (Result == NULL) return NULL; // Create a LUT holding normal ICC transform bp.cmyk2cmyk = DefaultICCintents(ContextID, nProfiles, ICCIntents, hProfiles, BPC, AdaptationStates, dwFlags); if (bp.cmyk2cmyk == NULL) goto Error; // Now, compute the tone curve bp.KTone = _cmsBuildKToneCurve(ContextID, 4096, nProfiles, ICCIntents, hProfiles, BPC, AdaptationStates, dwFlags); if (bp.KTone == NULL) goto Error; // How many gridpoints are we going to use? nGridPoints = _cmsReasonableGridpointsByColorspace(cmsSigCmykData, dwFlags); // Create the CLUT. 16 bits CLUT = cmsStageAllocCLut16bit(ContextID, nGridPoints, 4, 4, NULL); if (CLUT == NULL) goto Error; // This is the one and only MPE in this LUT if (!cmsPipelineInsertStage(Result, cmsAT_BEGIN, CLUT)) goto Error; // Sample it. We cannot afford pre/post linearization this time. if (!cmsStageSampleCLut16bit(CLUT, BlackPreservingGrayOnlySampler, (void*) &bp, 0)) goto Error; // Get rid of xform and tone curve cmsPipelineFree(bp.cmyk2cmyk); cmsFreeToneCurve(bp.KTone); return Result; Error: if (bp.cmyk2cmyk != NULL) cmsPipelineFree(bp.cmyk2cmyk); if (bp.KTone != NULL) cmsFreeToneCurve(bp.KTone); if (Result != NULL) cmsPipelineFree(Result); return NULL; } // K Plane-preserving CMYK to CMYK ------------------------------------------------------------------------------------ typedef struct { cmsPipeline* cmyk2cmyk; // The original transform cmsHTRANSFORM hProofOutput; // Output CMYK to Lab (last profile) cmsHTRANSFORM cmyk2Lab; // The input chain cmsToneCurve* KTone; // Black-to-black tone curve cmsPipeline* LabK2cmyk; // The output profile cmsFloat64Number MaxError; cmsHTRANSFORM hRoundTrip; cmsFloat64Number MaxTAC; } PreserveKPlaneParams; // The CLUT will be stored at 16 bits, but calculations are performed at cmsFloat32Number precision static int BlackPreservingSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { int i; cmsFloat32Number Inf[4], Outf[4]; cmsFloat32Number LabK[4]; cmsFloat64Number SumCMY, SumCMYK, Error, Ratio; cmsCIELab ColorimetricLab, BlackPreservingLab; PreserveKPlaneParams* bp = (PreserveKPlaneParams*) Cargo; // Convert from 16 bits to floating point for (i=0; i < 4; i++) Inf[i] = (cmsFloat32Number) (In[i] / 65535.0); // Get the K across Tone curve LabK[3] = cmsEvalToneCurveFloat(bp ->KTone, Inf[3]); // If going across black only, keep black only if (In[0] == 0 && In[1] == 0 && In[2] == 0) { Out[0] = Out[1] = Out[2] = 0; Out[3] = _cmsQuickSaturateWord(LabK[3] * 65535.0); return TRUE; } // Try the original transform, cmsPipelineEvalFloat( Inf, Outf, bp ->cmyk2cmyk); // Store a copy of the floating point result into 16-bit for (i=0; i < 4; i++) Out[i] = _cmsQuickSaturateWord(Outf[i] * 65535.0); // Maybe K is already ok (mostly on K=0) if ( fabs(Outf[3] - LabK[3]) < (3.0 / 65535.0) ) { return TRUE; } // K differ, mesure and keep Lab measurement for further usage // this is done in relative colorimetric intent cmsDoTransform(bp->hProofOutput, Out, &ColorimetricLab, 1); // Is not black only and the transform doesn't keep black. // Obtain the Lab of output CMYK. After that we have Lab + K cmsDoTransform(bp ->cmyk2Lab, Outf, LabK, 1); // Obtain the corresponding CMY using reverse interpolation // (K is fixed in LabK[3]) if (!cmsPipelineEvalReverseFloat(LabK, Outf, Outf, bp ->LabK2cmyk)) { // Cannot find a suitable value, so use colorimetric xform // which is already stored in Out[] return TRUE; } // Make sure to pass thru K (which now is fixed) Outf[3] = LabK[3]; // Apply TAC if needed SumCMY = Outf[0] + Outf[1] + Outf[2]; SumCMYK = SumCMY + Outf[3]; if (SumCMYK > bp ->MaxTAC) { Ratio = 1 - ((SumCMYK - bp->MaxTAC) / SumCMY); if (Ratio < 0) Ratio = 0; } else Ratio = 1.0; Out[0] = _cmsQuickSaturateWord(Outf[0] * Ratio * 65535.0); // C Out[1] = _cmsQuickSaturateWord(Outf[1] * Ratio * 65535.0); // M Out[2] = _cmsQuickSaturateWord(Outf[2] * Ratio * 65535.0); // Y Out[3] = _cmsQuickSaturateWord(Outf[3] * 65535.0); // Estimate the error (this goes 16 bits to Lab DBL) cmsDoTransform(bp->hProofOutput, Out, &BlackPreservingLab, 1); Error = cmsDeltaE(&ColorimetricLab, &BlackPreservingLab); if (Error > bp -> MaxError) bp->MaxError = Error; return TRUE; } // This is the entry for black-plane preserving, which are non-ICC static cmsPipeline* BlackPreservingKPlaneIntents(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number TheIntents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { PreserveKPlaneParams bp; cmsPipeline* Result = NULL; cmsUInt32Number ICCIntents[256]; cmsStage* CLUT; cmsUInt32Number i, nGridPoints; cmsHPROFILE hLab; // Sanity check if (nProfiles < 1 || nProfiles > 255) return NULL; // Translate black-preserving intents to ICC ones for (i=0; i < nProfiles; i++) ICCIntents[i] = TranslateNonICCIntents(TheIntents[i]); // Check for non-cmyk profiles if (cmsGetColorSpace(hProfiles[0]) != cmsSigCmykData || !(cmsGetColorSpace(hProfiles[nProfiles-1]) == cmsSigCmykData || cmsGetDeviceClass(hProfiles[nProfiles-1]) == cmsSigOutputClass)) return DefaultICCintents(ContextID, nProfiles, ICCIntents, hProfiles, BPC, AdaptationStates, dwFlags); // Allocate an empty LUT for holding the result Result = cmsPipelineAlloc(ContextID, 4, 4); if (Result == NULL) return NULL; memset(&bp, 0, sizeof(bp)); // We need the input LUT of the last profile, assuming this one is responsible of // black generation. This LUT will be seached in inverse order. bp.LabK2cmyk = _cmsReadInputLUT(hProfiles[nProfiles-1], INTENT_RELATIVE_COLORIMETRIC); if (bp.LabK2cmyk == NULL) goto Cleanup; // Get total area coverage (in 0..1 domain) bp.MaxTAC = cmsDetectTAC(hProfiles[nProfiles-1]) / 100.0; if (bp.MaxTAC <= 0) goto Cleanup; // Create a LUT holding normal ICC transform bp.cmyk2cmyk = DefaultICCintents(ContextID, nProfiles, ICCIntents, hProfiles, BPC, AdaptationStates, dwFlags); if (bp.cmyk2cmyk == NULL) goto Cleanup; // Now the tone curve bp.KTone = _cmsBuildKToneCurve(ContextID, 4096, nProfiles, ICCIntents, hProfiles, BPC, AdaptationStates, dwFlags); if (bp.KTone == NULL) goto Cleanup; // To measure the output, Last profile to Lab hLab = cmsCreateLab4ProfileTHR(ContextID, NULL); bp.hProofOutput = cmsCreateTransformTHR(ContextID, hProfiles[nProfiles-1], CHANNELS_SH(4)|BYTES_SH(2), hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE); if ( bp.hProofOutput == NULL) goto Cleanup; // Same as anterior, but lab in the 0..1 range bp.cmyk2Lab = cmsCreateTransformTHR(ContextID, hProfiles[nProfiles-1], FLOAT_SH(1)|CHANNELS_SH(4)|BYTES_SH(4), hLab, FLOAT_SH(1)|CHANNELS_SH(3)|BYTES_SH(4), INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE); if (bp.cmyk2Lab == NULL) goto Cleanup; cmsCloseProfile(hLab); // Error estimation (for debug only) bp.MaxError = 0; // How many gridpoints are we going to use? nGridPoints = _cmsReasonableGridpointsByColorspace(cmsSigCmykData, dwFlags); CLUT = cmsStageAllocCLut16bit(ContextID, nGridPoints, 4, 4, NULL); if (CLUT == NULL) goto Cleanup; if (!cmsPipelineInsertStage(Result, cmsAT_BEGIN, CLUT)) goto Cleanup; cmsStageSampleCLut16bit(CLUT, BlackPreservingSampler, (void*) &bp, 0); Cleanup: if (bp.cmyk2cmyk) cmsPipelineFree(bp.cmyk2cmyk); if (bp.cmyk2Lab) cmsDeleteTransform(bp.cmyk2Lab); if (bp.hProofOutput) cmsDeleteTransform(bp.hProofOutput); if (bp.KTone) cmsFreeToneCurve(bp.KTone); if (bp.LabK2cmyk) cmsPipelineFree(bp.LabK2cmyk); return Result; } // Link routines ------------------------------------------------------------------------------------------------------ // Chain several profiles into a single LUT. It just checks the parameters and then calls the handler // for the first intent in chain. The handler may be user-defined. Is up to the handler to deal with the // rest of intents in chain. A maximum of 255 profiles at time are supported, which is pretty reasonable. cmsPipeline* _cmsLinkProfiles(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number TheIntents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { cmsUInt32Number i; cmsIntentsList* Intent; // Make sure a reasonable number of profiles is provided if (nProfiles <= 0 || nProfiles > 255) { cmsSignalError(ContextID, cmsERROR_RANGE, "Couldn't link '%d' profiles", nProfiles); return NULL; } for (i=0; i < nProfiles; i++) { // Check if black point is really needed or allowed. Note that // following Adobe's document: // BPC does not apply to devicelink profiles, nor to abs colorimetric, // and applies always on V4 perceptual and saturation. if (TheIntents[i] == INTENT_ABSOLUTE_COLORIMETRIC) BPC[i] = FALSE; if (TheIntents[i] == INTENT_PERCEPTUAL || TheIntents[i] == INTENT_SATURATION) { // Force BPC for V4 profiles in perceptual and saturation if (cmsGetProfileVersion(hProfiles[i]) >= 4.0) BPC[i] = TRUE; } } // Search for a handler. The first intent in the chain defines the handler. That would // prevent using multiple custom intents in a multiintent chain, but the behaviour of // this case would present some issues if the custom intent tries to do things like // preserve primaries. This solution is not perfect, but works well on most cases. Intent = SearchIntent(TheIntents[0]); if (Intent == NULL) { cmsSignalError(ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported intent '%d'", TheIntents[0]); return NULL; } // Call the handler return Intent ->Link(ContextID, nProfiles, TheIntents, hProfiles, BPC, AdaptationStates, dwFlags); } // ------------------------------------------------------------------------------------------------- // Get information about available intents. nMax is the maximum space for the supplied "Codes" // and "Descriptions" the function returns the total number of intents, which may be greater // than nMax, although the matrices are not populated beyond this level. cmsUInt32Number CMSEXPORT cmsGetSupportedIntents(cmsUInt32Number nMax, cmsUInt32Number* Codes, char** Descriptions) { cmsIntentsList* pt; cmsUInt32Number nIntents; for (nIntents=0, pt = Intents; pt != NULL; pt = pt -> Next) { if (nIntents < nMax) { if (Codes != NULL) Codes[nIntents] = pt ->Intent; if (Descriptions != NULL) Descriptions[nIntents] = pt ->Description; } nIntents++; } return nIntents; } // The plug-in registration. User can add new intents or override default routines cmsBool _cmsRegisterRenderingIntentPlugin(cmsContext id, cmsPluginBase* Data) { cmsPluginRenderingIntent* Plugin = (cmsPluginRenderingIntent*) Data; cmsIntentsList* fl; // Do we have to reset the intents? if (Data == NULL) { Intents = DefaultIntents; return TRUE; } fl = SearchIntent(Plugin ->Intent); if (fl == NULL) { fl = (cmsIntentsList*) _cmsPluginMalloc(id, sizeof(cmsIntentsList)); if (fl == NULL) return FALSE; } fl ->Intent = Plugin ->Intent; strncpy(fl ->Description, Plugin ->Description, 255); fl ->Description[255] = 0; fl ->Link = Plugin ->Link; fl ->Next = Intents; Intents = fl; return TRUE; } lcms2-2.5/src/cmsplugin.c0000644002406300000240000004116612164224271014672 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // ---------------------------------------------------------------------------------- // Encoding & Decoding support functions // ---------------------------------------------------------------------------------- // Little-Endian to Big-Endian // Adjust a word value after being readed/ before being written from/to an ICC profile cmsUInt16Number CMSEXPORT _cmsAdjustEndianess16(cmsUInt16Number Word) { #ifndef CMS_USE_BIG_ENDIAN cmsUInt8Number* pByte = (cmsUInt8Number*) &Word; cmsUInt8Number tmp; tmp = pByte[0]; pByte[0] = pByte[1]; pByte[1] = tmp; #endif return Word; } // Transports to properly encoded values - note that icc profiles does use big endian notation. // 1 2 3 4 // 4 3 2 1 cmsUInt32Number CMSEXPORT _cmsAdjustEndianess32(cmsUInt32Number DWord) { #ifndef CMS_USE_BIG_ENDIAN cmsUInt8Number* pByte = (cmsUInt8Number*) &DWord; cmsUInt8Number temp1; cmsUInt8Number temp2; temp1 = *pByte++; temp2 = *pByte++; *(pByte-1) = *pByte; *pByte++ = temp2; *(pByte-3) = *pByte; *pByte = temp1; #endif return DWord; } // 1 2 3 4 5 6 7 8 // 8 7 6 5 4 3 2 1 void CMSEXPORT _cmsAdjustEndianess64(cmsUInt64Number* Result, cmsUInt64Number* QWord) { #ifndef CMS_USE_BIG_ENDIAN cmsUInt8Number* pIn = (cmsUInt8Number*) QWord; cmsUInt8Number* pOut = (cmsUInt8Number*) Result; _cmsAssert(Result != NULL); pOut[7] = pIn[0]; pOut[6] = pIn[1]; pOut[5] = pIn[2]; pOut[4] = pIn[3]; pOut[3] = pIn[4]; pOut[2] = pIn[5]; pOut[1] = pIn[6]; pOut[0] = pIn[7]; #else _cmsAssert(Result != NULL); # ifdef CMS_DONT_USE_INT64 (*Result)[0] = QWord[0]; (*Result)[1] = QWord[1]; # else *Result = *QWord; # endif #endif } // Auxiliar -- read 8, 16 and 32-bit numbers cmsBool CMSEXPORT _cmsReadUInt8Number(cmsIOHANDLER* io, cmsUInt8Number* n) { cmsUInt8Number tmp; _cmsAssert(io != NULL); if (io -> Read(io, &tmp, sizeof(cmsUInt8Number), 1) != 1) return FALSE; if (n != NULL) *n = tmp; return TRUE; } cmsBool CMSEXPORT _cmsReadUInt16Number(cmsIOHANDLER* io, cmsUInt16Number* n) { cmsUInt16Number tmp; _cmsAssert(io != NULL); if (io -> Read(io, &tmp, sizeof(cmsUInt16Number), 1) != 1) return FALSE; if (n != NULL) *n = _cmsAdjustEndianess16(tmp); return TRUE; } cmsBool CMSEXPORT _cmsReadUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, cmsUInt16Number* Array) { cmsUInt32Number i; _cmsAssert(io != NULL); for (i=0; i < n; i++) { if (Array != NULL) { if (!_cmsReadUInt16Number(io, Array + i)) return FALSE; } else { if (!_cmsReadUInt16Number(io, NULL)) return FALSE; } } return TRUE; } cmsBool CMSEXPORT _cmsReadUInt32Number(cmsIOHANDLER* io, cmsUInt32Number* n) { cmsUInt32Number tmp; _cmsAssert(io != NULL); if (io -> Read(io, &tmp, sizeof(cmsUInt32Number), 1) != 1) return FALSE; if (n != NULL) *n = _cmsAdjustEndianess32(tmp); return TRUE; } cmsBool CMSEXPORT _cmsReadFloat32Number(cmsIOHANDLER* io, cmsFloat32Number* n) { cmsUInt32Number tmp; _cmsAssert(io != NULL); if (io -> Read(io, &tmp, sizeof(cmsFloat32Number), 1) != 1) return FALSE; if (n != NULL) { tmp = _cmsAdjustEndianess32(tmp); *n = *(cmsFloat32Number*) &tmp; } return TRUE; } cmsBool CMSEXPORT _cmsReadUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n) { cmsUInt64Number tmp; _cmsAssert(io != NULL); if (io -> Read(io, &tmp, sizeof(cmsUInt64Number), 1) != 1) return FALSE; if (n != NULL) _cmsAdjustEndianess64(n, &tmp); return TRUE; } cmsBool CMSEXPORT _cmsRead15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number* n) { cmsUInt32Number tmp; _cmsAssert(io != NULL); if (io -> Read(io, &tmp, sizeof(cmsUInt32Number), 1) != 1) return FALSE; if (n != NULL) { *n = _cms15Fixed16toDouble(_cmsAdjustEndianess32(tmp)); } return TRUE; } // Jun-21-2000: Some profiles (those that comes with W2K) comes // with the media white (media black?) x 100. Add a sanity check static void NormalizeXYZ(cmsCIEXYZ* Dest) { while (Dest -> X > 2. && Dest -> Y > 2. && Dest -> Z > 2.) { Dest -> X /= 10.; Dest -> Y /= 10.; Dest -> Z /= 10.; } } cmsBool CMSEXPORT _cmsReadXYZNumber(cmsIOHANDLER* io, cmsCIEXYZ* XYZ) { cmsEncodedXYZNumber xyz; _cmsAssert(io != NULL); if (io ->Read(io, &xyz, sizeof(cmsEncodedXYZNumber), 1) != 1) return FALSE; if (XYZ != NULL) { XYZ->X = _cms15Fixed16toDouble(_cmsAdjustEndianess32(xyz.X)); XYZ->Y = _cms15Fixed16toDouble(_cmsAdjustEndianess32(xyz.Y)); XYZ->Z = _cms15Fixed16toDouble(_cmsAdjustEndianess32(xyz.Z)); NormalizeXYZ(XYZ); } return TRUE; } cmsBool CMSEXPORT _cmsWriteUInt8Number(cmsIOHANDLER* io, cmsUInt8Number n) { _cmsAssert(io != NULL); if (io -> Write(io, sizeof(cmsUInt8Number), &n) != 1) return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWriteUInt16Number(cmsIOHANDLER* io, cmsUInt16Number n) { cmsUInt16Number tmp; _cmsAssert(io != NULL); tmp = _cmsAdjustEndianess16(n); if (io -> Write(io, sizeof(cmsUInt16Number), &tmp) != 1) return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWriteUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, const cmsUInt16Number* Array) { cmsUInt32Number i; _cmsAssert(io != NULL); _cmsAssert(Array != NULL); for (i=0; i < n; i++) { if (!_cmsWriteUInt16Number(io, Array[i])) return FALSE; } return TRUE; } cmsBool CMSEXPORT _cmsWriteUInt32Number(cmsIOHANDLER* io, cmsUInt32Number n) { cmsUInt32Number tmp; _cmsAssert(io != NULL); tmp = _cmsAdjustEndianess32(n); if (io -> Write(io, sizeof(cmsUInt32Number), &tmp) != 1) return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWriteFloat32Number(cmsIOHANDLER* io, cmsFloat32Number n) { cmsUInt32Number tmp; _cmsAssert(io != NULL); tmp = *(cmsUInt32Number*) &n; tmp = _cmsAdjustEndianess32(tmp); if (io -> Write(io, sizeof(cmsUInt32Number), &tmp) != 1) return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWriteUInt64Number(cmsIOHANDLER* io, cmsUInt64Number* n) { cmsUInt64Number tmp; _cmsAssert(io != NULL); _cmsAdjustEndianess64(&tmp, n); if (io -> Write(io, sizeof(cmsUInt64Number), &tmp) != 1) return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWrite15Fixed16Number(cmsIOHANDLER* io, cmsFloat64Number n) { cmsUInt32Number tmp; _cmsAssert(io != NULL); tmp = _cmsAdjustEndianess32(_cmsDoubleTo15Fixed16(n)); if (io -> Write(io, sizeof(cmsUInt32Number), &tmp) != 1) return FALSE; return TRUE; } cmsBool CMSEXPORT _cmsWriteXYZNumber(cmsIOHANDLER* io, const cmsCIEXYZ* XYZ) { cmsEncodedXYZNumber xyz; _cmsAssert(io != NULL); _cmsAssert(XYZ != NULL); xyz.X = _cmsAdjustEndianess32(_cmsDoubleTo15Fixed16(XYZ->X)); xyz.Y = _cmsAdjustEndianess32(_cmsDoubleTo15Fixed16(XYZ->Y)); xyz.Z = _cmsAdjustEndianess32(_cmsDoubleTo15Fixed16(XYZ->Z)); return io -> Write(io, sizeof(cmsEncodedXYZNumber), &xyz); } // from Fixed point 8.8 to double cmsFloat64Number CMSEXPORT _cms8Fixed8toDouble(cmsUInt16Number fixed8) { cmsUInt8Number msb, lsb; lsb = (cmsUInt8Number) (fixed8 & 0xff); msb = (cmsUInt8Number) (((cmsUInt16Number) fixed8 >> 8) & 0xff); return (cmsFloat64Number) ((cmsFloat64Number) msb + ((cmsFloat64Number) lsb / 256.0)); } cmsUInt16Number CMSEXPORT _cmsDoubleTo8Fixed8(cmsFloat64Number val) { cmsS15Fixed16Number GammaFixed32 = _cmsDoubleTo15Fixed16(val); return (cmsUInt16Number) ((GammaFixed32 >> 8) & 0xFFFF); } // from Fixed point 15.16 to double cmsFloat64Number CMSEXPORT _cms15Fixed16toDouble(cmsS15Fixed16Number fix32) { cmsFloat64Number floater, sign, mid; int Whole, FracPart; sign = (fix32 < 0 ? -1 : 1); fix32 = abs(fix32); Whole = (cmsUInt16Number)(fix32 >> 16) & 0xffff; FracPart = (cmsUInt16Number)(fix32 & 0xffff); mid = (cmsFloat64Number) FracPart / 65536.0; floater = (cmsFloat64Number) Whole + mid; return sign * floater; } // from double to Fixed point 15.16 cmsS15Fixed16Number CMSEXPORT _cmsDoubleTo15Fixed16(cmsFloat64Number v) { return ((cmsS15Fixed16Number) floor((v)*65536.0 + 0.5)); } // Date/Time functions void CMSEXPORT _cmsDecodeDateTimeNumber(const cmsDateTimeNumber *Source, struct tm *Dest) { _cmsAssert(Dest != NULL); _cmsAssert(Source != NULL); Dest->tm_sec = _cmsAdjustEndianess16(Source->seconds); Dest->tm_min = _cmsAdjustEndianess16(Source->minutes); Dest->tm_hour = _cmsAdjustEndianess16(Source->hours); Dest->tm_mday = _cmsAdjustEndianess16(Source->day); Dest->tm_mon = _cmsAdjustEndianess16(Source->month) - 1; Dest->tm_year = _cmsAdjustEndianess16(Source->year) - 1900; Dest->tm_wday = -1; Dest->tm_yday = -1; Dest->tm_isdst = 0; } void CMSEXPORT _cmsEncodeDateTimeNumber(cmsDateTimeNumber *Dest, const struct tm *Source) { _cmsAssert(Dest != NULL); _cmsAssert(Source != NULL); Dest->seconds = _cmsAdjustEndianess16((cmsUInt16Number) Source->tm_sec); Dest->minutes = _cmsAdjustEndianess16((cmsUInt16Number) Source->tm_min); Dest->hours = _cmsAdjustEndianess16((cmsUInt16Number) Source->tm_hour); Dest->day = _cmsAdjustEndianess16((cmsUInt16Number) Source->tm_mday); Dest->month = _cmsAdjustEndianess16((cmsUInt16Number) (Source->tm_mon + 1)); Dest->year = _cmsAdjustEndianess16((cmsUInt16Number) (Source->tm_year + 1900)); } // Read base and return type base cmsTagTypeSignature CMSEXPORT _cmsReadTypeBase(cmsIOHANDLER* io) { _cmsTagBase Base; _cmsAssert(io != NULL); if (io -> Read(io, &Base, sizeof(_cmsTagBase), 1) != 1) return (cmsTagTypeSignature) 0; return (cmsTagTypeSignature) _cmsAdjustEndianess32(Base.sig); } // Setup base marker cmsBool CMSEXPORT _cmsWriteTypeBase(cmsIOHANDLER* io, cmsTagTypeSignature sig) { _cmsTagBase Base; _cmsAssert(io != NULL); Base.sig = (cmsTagTypeSignature) _cmsAdjustEndianess32(sig); memset(&Base.reserved, 0, sizeof(Base.reserved)); return io -> Write(io, sizeof(_cmsTagBase), &Base); } cmsBool CMSEXPORT _cmsReadAlignment(cmsIOHANDLER* io) { cmsUInt8Number Buffer[4]; cmsUInt32Number NextAligned, At; cmsUInt32Number BytesToNextAlignedPos; _cmsAssert(io != NULL); At = io -> Tell(io); NextAligned = _cmsALIGNLONG(At); BytesToNextAlignedPos = NextAligned - At; if (BytesToNextAlignedPos == 0) return TRUE; if (BytesToNextAlignedPos > 4) return FALSE; return (io ->Read(io, Buffer, BytesToNextAlignedPos, 1) == 1); } cmsBool CMSEXPORT _cmsWriteAlignment(cmsIOHANDLER* io) { cmsUInt8Number Buffer[4]; cmsUInt32Number NextAligned, At; cmsUInt32Number BytesToNextAlignedPos; _cmsAssert(io != NULL); At = io -> Tell(io); NextAligned = _cmsALIGNLONG(At); BytesToNextAlignedPos = NextAligned - At; if (BytesToNextAlignedPos == 0) return TRUE; if (BytesToNextAlignedPos > 4) return FALSE; memset(Buffer, 0, BytesToNextAlignedPos); return io -> Write(io, BytesToNextAlignedPos, Buffer); } // To deal with text streams. 2K at most cmsBool CMSEXPORT _cmsIOPrintf(cmsIOHANDLER* io, const char* frm, ...) { va_list args; int len; cmsUInt8Number Buffer[2048]; cmsBool rc; _cmsAssert(io != NULL); _cmsAssert(frm != NULL); va_start(args, frm); len = vsnprintf((char*) Buffer, 2047, frm, args); if (len < 0) return FALSE; // Truncated, which is a fatal error for us rc = io ->Write(io, len, Buffer); va_end(args); return rc; } // Plugin memory management ------------------------------------------------------------------------------------------------- static _cmsSubAllocator* PluginPool = NULL; // Specialized malloc for plug-ins, that is freed upon exit. void* _cmsPluginMalloc(cmsContext id, cmsUInt32Number size) { if (PluginPool == NULL) PluginPool = _cmsCreateSubAlloc(id, 4*1024); return _cmsSubAlloc(PluginPool, size); } // Main plug-in dispatcher cmsBool CMSEXPORT cmsPlugin(void* Plug_in) { return cmsPluginTHR(NULL, Plug_in); } cmsBool CMSEXPORT cmsPluginTHR(cmsContext id, void* Plug_in) { cmsPluginBase* Plugin; for (Plugin = (cmsPluginBase*) Plug_in; Plugin != NULL; Plugin = Plugin -> Next) { if (Plugin -> Magic != cmsPluginMagicNumber) { cmsSignalError(0, cmsERROR_UNKNOWN_EXTENSION, "Unrecognized plugin"); return FALSE; } if (Plugin ->ExpectedVersion > LCMS_VERSION) { cmsSignalError(0, cmsERROR_UNKNOWN_EXTENSION, "plugin needs Little CMS %d, current version is %d", Plugin ->ExpectedVersion, LCMS_VERSION); return FALSE; } switch (Plugin -> Type) { case cmsPluginMemHandlerSig: if (!_cmsRegisterMemHandlerPlugin(Plugin)) return FALSE; break; case cmsPluginInterpolationSig: if (!_cmsRegisterInterpPlugin(Plugin)) return FALSE; break; case cmsPluginTagTypeSig: if (!_cmsRegisterTagTypePlugin(id, Plugin)) return FALSE; break; case cmsPluginTagSig: if (!_cmsRegisterTagPlugin(id, Plugin)) return FALSE; break; case cmsPluginFormattersSig: if (!_cmsRegisterFormattersPlugin(id, Plugin)) return FALSE; break; case cmsPluginRenderingIntentSig: if (!_cmsRegisterRenderingIntentPlugin(id, Plugin)) return FALSE; break; case cmsPluginParametricCurveSig: if (!_cmsRegisterParametricCurvesPlugin(id, Plugin)) return FALSE; break; case cmsPluginMultiProcessElementSig: if (!_cmsRegisterMultiProcessElementPlugin(id, Plugin)) return FALSE; break; case cmsPluginOptimizationSig: if (!_cmsRegisterOptimizationPlugin(id, Plugin)) return FALSE; break; case cmsPluginTransformSig: if (!_cmsRegisterTransformPlugin(id, Plugin)) return FALSE; break; default: cmsSignalError(0, cmsERROR_UNKNOWN_EXTENSION, "Unrecognized plugin type '%X'", Plugin -> Type); return FALSE; } } // Keep a reference to the plug-in return TRUE; } // Revert all plug-ins to default void CMSEXPORT cmsUnregisterPlugins(void) { _cmsRegisterMemHandlerPlugin(NULL); _cmsRegisterInterpPlugin(NULL); _cmsRegisterTagTypePlugin(NULL, NULL); _cmsRegisterTagPlugin(NULL, NULL); _cmsRegisterFormattersPlugin(NULL, NULL); _cmsRegisterRenderingIntentPlugin(NULL, NULL); _cmsRegisterParametricCurvesPlugin(NULL, NULL); _cmsRegisterMultiProcessElementPlugin(NULL, NULL); _cmsRegisterOptimizationPlugin(NULL, NULL); _cmsRegisterTransformPlugin(NULL, NULL); if (PluginPool != NULL) _cmsSubAllocDestroy(PluginPool); PluginPool = NULL; } lcms2-2.5/src/lcms2_internal.h0000644002406300000240000005443412163060730015611 0ustar mariamausers // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #ifndef _lcms_internal_H // Include plug-in foundation #ifndef _lcms_plugin_H # include "lcms2_plugin.h" #endif // ctype is part of C99 as per 7.1.2 #include // assert macro is part of C99 as per 7.2 #include // Some needed constants #ifndef M_PI # define M_PI 3.14159265358979323846 #endif #ifndef M_LOG10E # define M_LOG10E 0.434294481903251827651 #endif // BorlandC 5.5, VC2003 are broken on that #if defined(__BORLANDC__) || (_MSC_VER < 1400) // 1400 == VC++ 8.0 #define sinf(x) (float)sin((float)x) #define sqrtf(x) (float)sqrt((float)x) #endif // Alignment of ICC file format uses 4 bytes (cmsUInt32Number) #define _cmsALIGNLONG(x) (((x)+(sizeof(cmsUInt32Number)-1)) & ~(sizeof(cmsUInt32Number)-1)) // Alignment to memory pointer #define _cmsALIGNMEM(x) (((x)+(sizeof(void *) - 1)) & ~(sizeof(void *) - 1)) // Maximum encodeable values in floating point #define MAX_ENCODEABLE_XYZ (1.0 + 32767.0/32768.0) #define MIN_ENCODEABLE_ab2 (-128.0) #define MAX_ENCODEABLE_ab2 ((65535.0/256.0) - 128.0) #define MIN_ENCODEABLE_ab4 (-128.0) #define MAX_ENCODEABLE_ab4 (127.0) // Maximum of channels for internal pipeline evaluation #define MAX_STAGE_CHANNELS 128 // Unused parameter warning supression #define cmsUNUSED_PARAMETER(x) ((void)x) // The specification for "inline" is section 6.7.4 of the C99 standard (ISO/IEC 9899:1999). // unfortunately VisualC++ does not conform that #if defined(_MSC_VER) || defined(__BORLANDC__) # define cmsINLINE __inline #else # define cmsINLINE static inline #endif // Other replacement functions #ifdef _MSC_VER # ifndef snprintf # define snprintf _snprintf # endif # ifndef vsnprintf # define vsnprintf _vsnprintf # endif #endif // A fast way to convert from/to 16 <-> 8 bits #define FROM_8_TO_16(rgb) (cmsUInt16Number) ((((cmsUInt16Number) (rgb)) << 8)|(rgb)) #define FROM_16_TO_8(rgb) (cmsUInt8Number) ((((rgb) * 65281 + 8388608) >> 24) & 0xFF) // Code analysis is broken on asserts #ifdef _MSC_VER # if (_MSC_VER >= 1500) # define _cmsAssert(a) { assert((a)); __analysis_assume((a)); } # else # define _cmsAssert(a) assert((a)) # endif #else # define _cmsAssert(a) assert((a)) #endif //--------------------------------------------------------------------------------- // Determinant lower than that are assumed zero (used on matrix invert) #define MATRIX_DET_TOLERANCE 0.0001 //--------------------------------------------------------------------------------- // Fixed point #define FIXED_TO_INT(x) ((x)>>16) #define FIXED_REST_TO_INT(x) ((x)&0xFFFFU) #define ROUND_FIXED_TO_INT(x) (((x)+0x8000)>>16) cmsINLINE cmsS15Fixed16Number _cmsToFixedDomain(int a) { return a + ((a + 0x7fff) / 0xffff); } cmsINLINE int _cmsFromFixedDomain(cmsS15Fixed16Number a) { return a - ((a + 0x7fff) >> 16); } // ----------------------------------------------------------------------------------------------------------- // Fast floor conversion logic. Thanks to Sree Kotay and Stuart Nixon // note than this only works in the range ..-32767...+32767 because // mantissa is interpreted as 15.16 fixed point. // The union is to avoid pointer aliasing overoptimization. cmsINLINE int _cmsQuickFloor(cmsFloat64Number val) { #ifdef CMS_DONT_USE_FAST_FLOOR return (int) floor(val); #else const cmsFloat64Number _lcms_double2fixmagic = 68719476736.0 * 1.5; // 2^36 * 1.5, (52-16=36) uses limited precision to floor union { cmsFloat64Number val; int halves[2]; } temp; temp.val = val + _lcms_double2fixmagic; #ifdef CMS_USE_BIG_ENDIAN return temp.halves[1] >> 16; #else return temp.halves[0] >> 16; #endif #endif } // Fast floor restricted to 0..65535.0 cmsINLINE cmsUInt16Number _cmsQuickFloorWord(cmsFloat64Number d) { return (cmsUInt16Number) _cmsQuickFloor(d - 32767.0) + 32767U; } // Floor to word, taking care of saturation cmsINLINE cmsUInt16Number _cmsQuickSaturateWord(cmsFloat64Number d) { d += 0.5; if (d <= 0) return 0; if (d >= 65535.0) return 0xffff; return _cmsQuickFloorWord(d); } // Plug-In registering --------------------------------------------------------------- // Specialized function for plug-in memory management. No pairing free() since whole pool is freed at once. void* _cmsPluginMalloc(cmsContext ContextID, cmsUInt32Number size); // Memory management cmsBool _cmsRegisterMemHandlerPlugin(cmsPluginBase* Plugin); // Interpolation cmsBool _cmsRegisterInterpPlugin(cmsPluginBase* Plugin); // Parametric curves cmsBool _cmsRegisterParametricCurvesPlugin(cmsContext ContextID, cmsPluginBase* Plugin); // Formatters management cmsBool _cmsRegisterFormattersPlugin(cmsContext ContextID, cmsPluginBase* Plugin); // Tag type management cmsBool _cmsRegisterTagTypePlugin(cmsContext ContextID, cmsPluginBase* Plugin); // Tag management cmsBool _cmsRegisterTagPlugin(cmsContext ContextID, cmsPluginBase* Plugin); // Intent management cmsBool _cmsRegisterRenderingIntentPlugin(cmsContext ContextID, cmsPluginBase* Plugin); // Multi Process elements cmsBool _cmsRegisterMultiProcessElementPlugin(cmsContext ContextID, cmsPluginBase* Plugin); // Optimization cmsBool _cmsRegisterOptimizationPlugin(cmsContext ContextID, cmsPluginBase* Plugin); // Transform cmsBool _cmsRegisterTransformPlugin(cmsContext ContextID, cmsPluginBase* Plugin); // --------------------------------------------------------------------------------------------------------- // Suballocators. Those are blocks of memory that is freed at the end on whole block. typedef struct _cmsSubAllocator_chunk_st { cmsUInt8Number* Block; cmsUInt32Number BlockSize; cmsUInt32Number Used; struct _cmsSubAllocator_chunk_st* next; } _cmsSubAllocator_chunk; typedef struct { cmsContext ContextID; _cmsSubAllocator_chunk* h; } _cmsSubAllocator; _cmsSubAllocator* _cmsCreateSubAlloc(cmsContext ContextID, cmsUInt32Number Initial); void _cmsSubAllocDestroy(_cmsSubAllocator* s); void* _cmsSubAlloc(_cmsSubAllocator* s, cmsUInt32Number size); // ---------------------------------------------------------------------------------- // MLU internal representation typedef struct { cmsUInt16Number Language; cmsUInt16Number Country; cmsUInt32Number StrW; // Offset to current unicode string cmsUInt32Number Len; // Length in bytes } _cmsMLUentry; struct _cms_MLU_struct { cmsContext ContextID; // The directory int AllocatedEntries; int UsedEntries; _cmsMLUentry* Entries; // Array of pointers to strings allocated in MemPool // The Pool cmsUInt32Number PoolSize; // The maximum allocated size cmsUInt32Number PoolUsed; // The used size void* MemPool; // Pointer to begin of memory pool }; // Named color list internal representation typedef struct { char Name[cmsMAX_PATH]; cmsUInt16Number PCS[3]; cmsUInt16Number DeviceColorant[cmsMAXCHANNELS]; } _cmsNAMEDCOLOR; struct _cms_NAMEDCOLORLIST_struct { cmsUInt32Number nColors; cmsUInt32Number Allocated; cmsUInt32Number ColorantCount; char Prefix[33]; // Prefix and suffix are defined to be 32 characters at most char Suffix[33]; _cmsNAMEDCOLOR* List; cmsContext ContextID; }; // ---------------------------------------------------------------------------------- // This is the internal struct holding profile details. // Maximum supported tags in a profile #define MAX_TABLE_TAG 100 typedef struct _cms_iccprofile_struct { // I/O handler cmsIOHANDLER* IOhandler; // The thread ID cmsContext ContextID; // Creation time struct tm Created; // Only most important items found in ICC profiles cmsUInt32Number Version; cmsProfileClassSignature DeviceClass; cmsColorSpaceSignature ColorSpace; cmsColorSpaceSignature PCS; cmsUInt32Number RenderingIntent; cmsUInt32Number flags; cmsUInt32Number manufacturer, model; cmsUInt64Number attributes; cmsUInt32Number creator; cmsProfileID ProfileID; // Dictionary cmsUInt32Number TagCount; cmsTagSignature TagNames[MAX_TABLE_TAG]; cmsTagSignature TagLinked[MAX_TABLE_TAG]; // The tag to wich is linked (0=none) cmsUInt32Number TagSizes[MAX_TABLE_TAG]; // Size on disk cmsUInt32Number TagOffsets[MAX_TABLE_TAG]; cmsBool TagSaveAsRaw[MAX_TABLE_TAG]; // True to write uncooked void * TagPtrs[MAX_TABLE_TAG]; cmsTagTypeHandler* TagTypeHandlers[MAX_TABLE_TAG]; // Same structure may be serialized on different types // depending on profile version, so we keep track of the // type handler for each tag in the list. // Special cmsBool IsWrite; } _cmsICCPROFILE; // IO helpers for profiles cmsBool _cmsReadHeader(_cmsICCPROFILE* Icc); cmsBool _cmsWriteHeader(_cmsICCPROFILE* Icc, cmsUInt32Number UsedSpace); int _cmsSearchTag(_cmsICCPROFILE* Icc, cmsTagSignature sig, cmsBool lFollowLinks); // Tag types cmsTagTypeHandler* _cmsGetTagTypeHandler(cmsTagTypeSignature sig); cmsTagTypeSignature _cmsGetTagTrueType(cmsHPROFILE hProfile, cmsTagSignature sig); cmsTagDescriptor* _cmsGetTagDescriptor(cmsTagSignature sig); // Error logging --------------------------------------------------------------------------------------------------------- void _cmsTagSignature2String(char String[5], cmsTagSignature sig); // Interpolation --------------------------------------------------------------------------------------------------------- cmsInterpParams* _cmsComputeInterpParams(cmsContext ContextID, int nSamples, int InputChan, int OutputChan, const void* Table, cmsUInt32Number dwFlags); cmsInterpParams* _cmsComputeInterpParamsEx(cmsContext ContextID, const cmsUInt32Number nSamples[], int InputChan, int OutputChan, const void* Table, cmsUInt32Number dwFlags); void _cmsFreeInterpParams(cmsInterpParams* p); cmsBool _cmsSetInterpolationRoutine(cmsInterpParams* p); // Curves ---------------------------------------------------------------------------------------------------------------- // This struct holds information about a segment, plus a pointer to the function that implements the evaluation. // In the case of table-based, Eval pointer is set to NULL // The gamma function main structure struct _cms_curve_struct { cmsInterpParams* InterpParams; // Private optimizations for interpolation cmsUInt32Number nSegments; // Number of segments in the curve. Zero for a 16-bit based tables cmsCurveSegment* Segments; // The segments cmsInterpParams** SegInterp; // Array of private optimizations for interpolation in table-based segments cmsParametricCurveEvaluator* Evals; // Evaluators (one per segment) // 16 bit Table-based representation follows cmsUInt32Number nEntries; // Number of table elements cmsUInt16Number* Table16; // The table itself. }; // Pipelines & Stages --------------------------------------------------------------------------------------------- // A single stage struct _cmsStage_struct { cmsContext ContextID; cmsStageSignature Type; // Identifies the stage cmsStageSignature Implements; // Identifies the *function* of the stage (for optimizations) cmsUInt32Number InputChannels; // Input channels -- for optimization purposes cmsUInt32Number OutputChannels; // Output channels -- for optimization purposes _cmsStageEvalFn EvalPtr; // Points to fn that evaluates the stage (always in floating point) _cmsStageDupElemFn DupElemPtr; // Points to a fn that duplicates the *data* of the stage _cmsStageFreeElemFn FreePtr; // Points to a fn that sets the *data* of the stage free // A generic pointer to whatever memory needed by the stage void* Data; // Maintains linked list (used internally) struct _cmsStage_struct* Next; }; // Special Stages (cannot be saved) cmsStage* _cmsStageAllocLab2XYZ(cmsContext ContextID); cmsStage* _cmsStageAllocXYZ2Lab(cmsContext ContextID); cmsStage* _cmsStageAllocLabPrelin(cmsContext ContextID); cmsStage* _cmsStageAllocLabV2ToV4(cmsContext ContextID); cmsStage* _cmsStageAllocLabV2ToV4curves(cmsContext ContextID); cmsStage* _cmsStageAllocLabV4ToV2(cmsContext ContextID); cmsStage* _cmsStageAllocNamedColor(cmsNAMEDCOLORLIST* NamedColorList, cmsBool UsePCS); cmsStage* _cmsStageAllocIdentityCurves(cmsContext ContextID, int nChannels); cmsStage* _cmsStageAllocIdentityCLut(cmsContext ContextID, int nChan); cmsStage* _cmsStageNormalizeFromLabFloat(cmsContext ContextID); cmsStage* _cmsStageNormalizeFromXyzFloat(cmsContext ContextID); cmsStage* _cmsStageNormalizeToLabFloat(cmsContext ContextID); cmsStage* _cmsStageNormalizeToXyzFloat(cmsContext ContextID); // For curve set only cmsToneCurve** _cmsStageGetPtrToCurveSet(const cmsStage* mpe); // Pipeline Evaluator (in floating point) typedef void (* _cmsPipelineEvalFloatFn)(const cmsFloat32Number In[], cmsFloat32Number Out[], const void* Data); struct _cmsPipeline_struct { cmsStage* Elements; // Points to elements chain cmsUInt32Number InputChannels, OutputChannels; // Data & evaluators void *Data; _cmsOPTeval16Fn Eval16Fn; _cmsPipelineEvalFloatFn EvalFloatFn; _cmsFreeUserDataFn FreeDataFn; _cmsDupUserDataFn DupDataFn; cmsContext ContextID; // Environment cmsBool SaveAs8Bits; // Implementation-specific: save as 8 bits if possible }; // LUT reading & creation ------------------------------------------------------------------------------------------- // Read tags using low-level function, provide necessary glue code to adapt versions, etc. All those return a brand new copy // of the LUTS, since ownership of original is up to the profile. The user should free allocated resources. cmsPipeline* _cmsReadInputLUT(cmsHPROFILE hProfile, int Intent); cmsPipeline* _cmsReadOutputLUT(cmsHPROFILE hProfile, int Intent); cmsPipeline* _cmsReadDevicelinkLUT(cmsHPROFILE hProfile, int Intent); // Special values cmsBool _cmsReadMediaWhitePoint(cmsCIEXYZ* Dest, cmsHPROFILE hProfile); cmsBool _cmsReadCHAD(cmsMAT3* Dest, cmsHPROFILE hProfile); // Profile linker -------------------------------------------------------------------------------------------------- cmsPipeline* _cmsLinkProfiles(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number TheIntents[], cmsHPROFILE hProfiles[], cmsBool BPC[], cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); // Sequence -------------------------------------------------------------------------------------------------------- cmsSEQ* _cmsReadProfileSequence(cmsHPROFILE hProfile); cmsBool _cmsWriteProfileSequence(cmsHPROFILE hProfile, const cmsSEQ* seq); cmsSEQ* _cmsCompileProfileSequence(cmsContext ContextID, cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[]); // LUT optimization ------------------------------------------------------------------------------------------------ cmsUInt16Number _cmsQuantizeVal(cmsFloat64Number i, int MaxSamples); int _cmsReasonableGridpointsByColorspace(cmsColorSpaceSignature Colorspace, cmsUInt32Number dwFlags); cmsBool _cmsEndPointsBySpace(cmsColorSpaceSignature Space, cmsUInt16Number **White, cmsUInt16Number **Black, cmsUInt32Number *nOutputs); cmsBool _cmsOptimizePipeline(cmsPipeline** Lut, int Intent, cmsUInt32Number* InputFormat, cmsUInt32Number* OutputFormat, cmsUInt32Number* dwFlags ); // Hi level LUT building ---------------------------------------------------------------------------------------------- cmsPipeline* _cmsCreateGamutCheckPipeline(cmsContext ContextID, cmsHPROFILE hProfiles[], cmsBool BPC[], cmsUInt32Number Intents[], cmsFloat64Number AdaptationStates[], cmsUInt32Number nGamutPCSposition, cmsHPROFILE hGamut); // Formatters ------------------------------------------------------------------------------------------------------------ #define cmsFLAGS_CAN_CHANGE_FORMATTER 0x02000000 // Allow change buffer format cmsBool _cmsFormatterIsFloat(cmsUInt32Number Type); cmsBool _cmsFormatterIs8bit(cmsUInt32Number Type); cmsFormatter _cmsGetFormatter(cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8 cmsFormatterDirection Dir, cmsUInt32Number dwFlags); #ifndef CMS_NO_HALF_SUPPORT // Half float cmsFloat32Number _cmsHalf2Float(cmsUInt16Number h); cmsUInt16Number _cmsFloat2Half(cmsFloat32Number flt); #endif // Transform logic ------------------------------------------------------------------------------------------------------ struct _cmstransform_struct; typedef struct { // 1-pixel cache (16 bits only) cmsUInt16Number CacheIn[cmsMAXCHANNELS]; cmsUInt16Number CacheOut[cmsMAXCHANNELS]; } _cmsCACHE; // Transformation typedef struct _cmstransform_struct { cmsUInt32Number InputFormat, OutputFormat; // Keep formats for further reference // Points to transform code _cmsTransformFn xform; // Formatters, cannot be embedded into LUT because cache cmsFormatter16 FromInput; cmsFormatter16 ToOutput; cmsFormatterFloat FromInputFloat; cmsFormatterFloat ToOutputFloat; // 1-pixel cache seed for zero as input (16 bits, read only) _cmsCACHE Cache; // A Pipeline holding the full (optimized) transform cmsPipeline* Lut; // A Pipeline holding the gamut check. It goes from the input space to bilevel cmsPipeline* GamutCheck; // Colorant tables cmsNAMEDCOLORLIST* InputColorant; // Input Colorant table cmsNAMEDCOLORLIST* OutputColorant; // Colorant table (for n chans > CMYK) // Informational only cmsColorSpaceSignature EntryColorSpace; cmsColorSpaceSignature ExitColorSpace; // White points (informative only) cmsCIEXYZ EntryWhitePoint; cmsCIEXYZ ExitWhitePoint; // Profiles used to create the transform cmsSEQ* Sequence; cmsUInt32Number dwOriginalFlags; cmsFloat64Number AdaptationState; // The intent of this transform. That is usually the last intent in the profilechain, but may differ cmsUInt32Number RenderingIntent; // An id that uniquely identifies the running context. May be null. cmsContext ContextID; // A user-defined pointer that can be used to store data for transform plug-ins void* UserData; _cmsFreeUserDataFn FreeUserData; } _cmsTRANSFORM; // -------------------------------------------------------------------------------------------------- cmsHTRANSFORM _cmsChain2Lab(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, const cmsUInt32Number Intents[], const cmsHPROFILE hProfiles[], const cmsBool BPC[], const cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); cmsToneCurve* _cmsBuildKToneCurve(cmsContext ContextID, cmsUInt32Number nPoints, cmsUInt32Number nProfiles, const cmsUInt32Number Intents[], const cmsHPROFILE hProfiles[], const cmsBool BPC[], const cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags); cmsBool _cmsAdaptationMatrix(cmsMAT3* r, const cmsMAT3* ConeMatrix, const cmsCIEXYZ* FromIll, const cmsCIEXYZ* ToIll); cmsBool _cmsBuildRGB2XYZtransferMatrix(cmsMAT3* r, const cmsCIExyY* WhitePoint, const cmsCIExyYTRIPLE* Primaries); #define _lcms_internal_H #endif lcms2-2.5/src/Makefile.in0000644002406300000240000005007212163060730014563 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building lcms 2 library # VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = liblcms2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_liblcms2_la_OBJECTS = cmscnvrt.lo cmserr.lo cmsgamma.lo cmsgmt.lo \ cmsintrp.lo cmsio0.lo cmsio1.lo cmslut.lo cmsplugin.lo \ cmssm.lo cmsmd5.lo cmsmtrx.lo cmspack.lo cmspcs.lo cmswtpnt.lo \ cmsxform.lo cmssamp.lo cmsnamed.lo cmscam02.lo cmsvirt.lo \ cmstypes.lo cmscgats.lo cmsps2.lo cmsopt.lo cmshalf.lo liblcms2_la_OBJECTS = $(am_liblcms2_la_OBJECTS) liblcms2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(liblcms2_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(liblcms2_la_SOURCES) DIST_SOURCES = $(liblcms2_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ # CFLAGS = -pedantic -Wall -std=c99 -O3 includedir = ${prefix}/include infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign # Shared libraries built in this directory lib_LTLIBRARIES = liblcms2.la INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include liblcms2_la_LDFLAGS = -no-undefined \ -version-info $(LIBRARY_CURRENT):$(LIBRARY_REVISION):$(LIBRARY_AGE) liblcms2_la_LIBADD = $(LCMS_LIB_DEPLIBS) liblcms2_la_SOURCES = \ cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio0.c cmsio1.c cmslut.c \ cmsplugin.c cmssm.c cmsmd5.c cmsmtrx.c cmspack.c cmspcs.c cmswtpnt.c cmsxform.c \ cmssamp.c cmsnamed.c cmscam02.c cmsvirt.c cmstypes.c cmscgats.c cmsps2.c cmsopt.c \ cmshalf.c lcms2_internal.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done liblcms2.la: $(liblcms2_la_OBJECTS) $(liblcms2_la_DEPENDENCIES) $(EXTRA_liblcms2_la_DEPENDENCIES) $(liblcms2_la_LINK) -rpath $(libdir) $(liblcms2_la_OBJECTS) $(liblcms2_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmscam02.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmscgats.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmscnvrt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmserr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsgamma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsgmt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmshalf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsintrp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsio0.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsio1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmslut.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsmd5.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsmtrx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsnamed.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsopt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmspack.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmspcs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsplugin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsps2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmssamp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmssm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmstypes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsvirt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmswtpnt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmsxform.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/src/cmswtpnt.c0000644002406300000240000002534312163060730014544 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // D50 - Widely used const cmsCIEXYZ* CMSEXPORT cmsD50_XYZ(void) { static cmsCIEXYZ D50XYZ = {cmsD50X, cmsD50Y, cmsD50Z}; return &D50XYZ; } const cmsCIExyY* CMSEXPORT cmsD50_xyY(void) { static cmsCIExyY D50xyY; cmsXYZ2xyY(&D50xyY, cmsD50_XYZ()); return &D50xyY; } // Obtains WhitePoint from Temperature cmsBool CMSEXPORT cmsWhitePointFromTemp(cmsCIExyY* WhitePoint, cmsFloat64Number TempK) { cmsFloat64Number x, y; cmsFloat64Number T, T2, T3; // cmsFloat64Number M1, M2; _cmsAssert(WhitePoint != NULL); T = TempK; T2 = T*T; // Square T3 = T2*T; // Cube // For correlated color temperature (T) between 4000K and 7000K: if (T >= 4000. && T <= 7000.) { x = -4.6070*(1E9/T3) + 2.9678*(1E6/T2) + 0.09911*(1E3/T) + 0.244063; } else // or for correlated color temperature (T) between 7000K and 25000K: if (T > 7000.0 && T <= 25000.0) { x = -2.0064*(1E9/T3) + 1.9018*(1E6/T2) + 0.24748*(1E3/T) + 0.237040; } else { cmsSignalError(0, cmsERROR_RANGE, "cmsWhitePointFromTemp: invalid temp"); return FALSE; } // Obtain y(x) y = -3.000*(x*x) + 2.870*x - 0.275; // wave factors (not used, but here for futures extensions) // M1 = (-1.3515 - 1.7703*x + 5.9114 *y)/(0.0241 + 0.2562*x - 0.7341*y); // M2 = (0.0300 - 31.4424*x + 30.0717*y)/(0.0241 + 0.2562*x - 0.7341*y); WhitePoint -> x = x; WhitePoint -> y = y; WhitePoint -> Y = 1.0; return TRUE; } typedef struct { cmsFloat64Number mirek; // temp (in microreciprocal kelvin) cmsFloat64Number ut; // u coord of intersection w/ blackbody locus cmsFloat64Number vt; // v coord of intersection w/ blackbody locus cmsFloat64Number tt; // slope of ISOTEMPERATURE. line } ISOTEMPERATURE; static ISOTEMPERATURE isotempdata[] = { // {Mirek, Ut, Vt, Tt } {0, 0.18006, 0.26352, -0.24341}, {10, 0.18066, 0.26589, -0.25479}, {20, 0.18133, 0.26846, -0.26876}, {30, 0.18208, 0.27119, -0.28539}, {40, 0.18293, 0.27407, -0.30470}, {50, 0.18388, 0.27709, -0.32675}, {60, 0.18494, 0.28021, -0.35156}, {70, 0.18611, 0.28342, -0.37915}, {80, 0.18740, 0.28668, -0.40955}, {90, 0.18880, 0.28997, -0.44278}, {100, 0.19032, 0.29326, -0.47888}, {125, 0.19462, 0.30141, -0.58204}, {150, 0.19962, 0.30921, -0.70471}, {175, 0.20525, 0.31647, -0.84901}, {200, 0.21142, 0.32312, -1.0182 }, {225, 0.21807, 0.32909, -1.2168 }, {250, 0.22511, 0.33439, -1.4512 }, {275, 0.23247, 0.33904, -1.7298 }, {300, 0.24010, 0.34308, -2.0637 }, {325, 0.24702, 0.34655, -2.4681 }, {350, 0.25591, 0.34951, -2.9641 }, {375, 0.26400, 0.35200, -3.5814 }, {400, 0.27218, 0.35407, -4.3633 }, {425, 0.28039, 0.35577, -5.3762 }, {450, 0.28863, 0.35714, -6.7262 }, {475, 0.29685, 0.35823, -8.5955 }, {500, 0.30505, 0.35907, -11.324 }, {525, 0.31320, 0.35968, -15.628 }, {550, 0.32129, 0.36011, -23.325 }, {575, 0.32931, 0.36038, -40.770 }, {600, 0.33724, 0.36051, -116.45 } }; #define NISO sizeof(isotempdata)/sizeof(ISOTEMPERATURE) // Robertson's method cmsBool CMSEXPORT cmsTempFromWhitePoint(cmsFloat64Number* TempK, const cmsCIExyY* WhitePoint) { cmsUInt32Number j; cmsFloat64Number us,vs; cmsFloat64Number uj,vj,tj,di,dj,mi,mj; cmsFloat64Number xs, ys; _cmsAssert(WhitePoint != NULL); _cmsAssert(TempK != NULL); di = mi = 0; xs = WhitePoint -> x; ys = WhitePoint -> y; // convert (x,y) to CIE 1960 (u,WhitePoint) us = (2*xs) / (-xs + 6*ys + 1.5); vs = (3*ys) / (-xs + 6*ys + 1.5); for (j=0; j < NISO; j++) { uj = isotempdata[j].ut; vj = isotempdata[j].vt; tj = isotempdata[j].tt; mj = isotempdata[j].mirek; dj = ((vs - vj) - tj * (us - uj)) / sqrt(1.0 + tj * tj); if ((j != 0) && (di/dj < 0.0)) { // Found a match *TempK = 1000000.0 / (mi + (di / (di - dj)) * (mj - mi)); return TRUE; } di = dj; mi = mj; } // Not found return FALSE; } // Compute chromatic adaptation matrix using Chad as cone matrix static cmsBool ComputeChromaticAdaptation(cmsMAT3* Conversion, const cmsCIEXYZ* SourceWhitePoint, const cmsCIEXYZ* DestWhitePoint, const cmsMAT3* Chad) { cmsMAT3 Chad_Inv; cmsVEC3 ConeSourceXYZ, ConeSourceRGB; cmsVEC3 ConeDestXYZ, ConeDestRGB; cmsMAT3 Cone, Tmp; Tmp = *Chad; if (!_cmsMAT3inverse(&Tmp, &Chad_Inv)) return FALSE; _cmsVEC3init(&ConeSourceXYZ, SourceWhitePoint -> X, SourceWhitePoint -> Y, SourceWhitePoint -> Z); _cmsVEC3init(&ConeDestXYZ, DestWhitePoint -> X, DestWhitePoint -> Y, DestWhitePoint -> Z); _cmsMAT3eval(&ConeSourceRGB, Chad, &ConeSourceXYZ); _cmsMAT3eval(&ConeDestRGB, Chad, &ConeDestXYZ); // Build matrix _cmsVEC3init(&Cone.v[0], ConeDestRGB.n[0]/ConeSourceRGB.n[0], 0.0, 0.0); _cmsVEC3init(&Cone.v[1], 0.0, ConeDestRGB.n[1]/ConeSourceRGB.n[1], 0.0); _cmsVEC3init(&Cone.v[2], 0.0, 0.0, ConeDestRGB.n[2]/ConeSourceRGB.n[2]); // Normalize _cmsMAT3per(&Tmp, &Cone, Chad); _cmsMAT3per(Conversion, &Chad_Inv, &Tmp); return TRUE; } // Returns the final chrmatic adaptation from illuminant FromIll to Illuminant ToIll // The cone matrix can be specified in ConeMatrix. If NULL, Bradford is assumed cmsBool _cmsAdaptationMatrix(cmsMAT3* r, const cmsMAT3* ConeMatrix, const cmsCIEXYZ* FromIll, const cmsCIEXYZ* ToIll) { cmsMAT3 LamRigg = {{ // Bradford matrix {{ 0.8951, 0.2664, -0.1614 }}, {{ -0.7502, 1.7135, 0.0367 }}, {{ 0.0389, -0.0685, 1.0296 }} }}; if (ConeMatrix == NULL) ConeMatrix = &LamRigg; return ComputeChromaticAdaptation(r, FromIll, ToIll, ConeMatrix); } // Same as anterior, but assuming D50 destination. White point is given in xyY static cmsBool _cmsAdaptMatrixToD50(cmsMAT3* r, const cmsCIExyY* SourceWhitePt) { cmsCIEXYZ Dn; cmsMAT3 Bradford; cmsMAT3 Tmp; cmsxyY2XYZ(&Dn, SourceWhitePt); if (!_cmsAdaptationMatrix(&Bradford, NULL, &Dn, cmsD50_XYZ())) return FALSE; Tmp = *r; _cmsMAT3per(r, &Bradford, &Tmp); return TRUE; } // Build a White point, primary chromas transfer matrix from RGB to CIE XYZ // This is just an approximation, I am not handling all the non-linear // aspects of the RGB to XYZ process, and assumming that the gamma correction // has transitive property in the tranformation chain. // // the alghoritm: // // - First I build the absolute conversion matrix using // primaries in XYZ. This matrix is next inverted // - Then I eval the source white point across this matrix // obtaining the coeficients of the transformation // - Then, I apply these coeficients to the original matrix // cmsBool _cmsBuildRGB2XYZtransferMatrix(cmsMAT3* r, const cmsCIExyY* WhitePt, const cmsCIExyYTRIPLE* Primrs) { cmsVEC3 WhitePoint, Coef; cmsMAT3 Result, Primaries; cmsFloat64Number xn, yn; cmsFloat64Number xr, yr; cmsFloat64Number xg, yg; cmsFloat64Number xb, yb; xn = WhitePt -> x; yn = WhitePt -> y; xr = Primrs -> Red.x; yr = Primrs -> Red.y; xg = Primrs -> Green.x; yg = Primrs -> Green.y; xb = Primrs -> Blue.x; yb = Primrs -> Blue.y; // Build Primaries matrix _cmsVEC3init(&Primaries.v[0], xr, xg, xb); _cmsVEC3init(&Primaries.v[1], yr, yg, yb); _cmsVEC3init(&Primaries.v[2], (1-xr-yr), (1-xg-yg), (1-xb-yb)); // Result = Primaries ^ (-1) inverse matrix if (!_cmsMAT3inverse(&Primaries, &Result)) return FALSE; _cmsVEC3init(&WhitePoint, xn/yn, 1.0, (1.0-xn-yn)/yn); // Across inverse primaries ... _cmsMAT3eval(&Coef, &Result, &WhitePoint); // Give us the Coefs, then I build transformation matrix _cmsVEC3init(&r -> v[0], Coef.n[VX]*xr, Coef.n[VY]*xg, Coef.n[VZ]*xb); _cmsVEC3init(&r -> v[1], Coef.n[VX]*yr, Coef.n[VY]*yg, Coef.n[VZ]*yb); _cmsVEC3init(&r -> v[2], Coef.n[VX]*(1.0-xr-yr), Coef.n[VY]*(1.0-xg-yg), Coef.n[VZ]*(1.0-xb-yb)); return _cmsAdaptMatrixToD50(r, WhitePt); } // Adapts a color to a given illuminant. Original color is expected to have // a SourceWhitePt white point. cmsBool CMSEXPORT cmsAdaptToIlluminant(cmsCIEXYZ* Result, const cmsCIEXYZ* SourceWhitePt, const cmsCIEXYZ* Illuminant, const cmsCIEXYZ* Value) { cmsMAT3 Bradford; cmsVEC3 In, Out; _cmsAssert(Result != NULL); _cmsAssert(SourceWhitePt != NULL); _cmsAssert(Illuminant != NULL); _cmsAssert(Value != NULL); if (!_cmsAdaptationMatrix(&Bradford, NULL, SourceWhitePt, Illuminant)) return FALSE; _cmsVEC3init(&In, Value -> X, Value -> Y, Value -> Z); _cmsMAT3eval(&Out, &Bradford, &In); Result -> X = Out.n[0]; Result -> Y = Out.n[1]; Result -> Z = Out.n[2]; return TRUE; } lcms2-2.5/src/cmspack.c0000644002406300000240000031410712163060730014305 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // This module handles all formats supported by lcms. There are two flavors, 16 bits and // floating point. Floating point is supported only in a subset, those formats holding // cmsFloat32Number (4 bytes per component) and double (marked as 0 bytes per component // as special case) // --------------------------------------------------------------------------- // This macro return words stored as big endian #define CHANGE_ENDIAN(w) (cmsUInt16Number) ((cmsUInt16Number) ((w)<<8)|((w)>>8)) // These macros handles reversing (negative) #define REVERSE_FLAVOR_8(x) ((cmsUInt8Number) (0xff-(x))) #define REVERSE_FLAVOR_16(x) ((cmsUInt16Number)(0xffff-(x))) // * 0xffff / 0xff00 = (255 * 257) / (255 * 256) = 257 / 256 cmsINLINE cmsUInt16Number FomLabV2ToLabV4(cmsUInt16Number x) { int a = (x << 8 | x) >> 8; // * 257 / 256 if ( a > 0xffff) return 0xffff; return (cmsUInt16Number) a; } // * 0xf00 / 0xffff = * 256 / 257 cmsINLINE cmsUInt16Number FomLabV4ToLabV2(cmsUInt16Number x) { return (cmsUInt16Number) (((x << 8) + 0x80) / 257); } typedef struct { cmsUInt32Number Type; cmsUInt32Number Mask; cmsFormatter16 Frm; } cmsFormatters16; typedef struct { cmsUInt32Number Type; cmsUInt32Number Mask; cmsFormatterFloat Frm; } cmsFormattersFloat; #define ANYSPACE COLORSPACE_SH(31) #define ANYCHANNELS CHANNELS_SH(15) #define ANYEXTRA EXTRA_SH(7) #define ANYPLANAR PLANAR_SH(1) #define ANYENDIAN ENDIAN16_SH(1) #define ANYSWAP DOSWAP_SH(1) #define ANYSWAPFIRST SWAPFIRST_SH(1) #define ANYFLAVOR FLAVOR_SH(1) // Supress waning about info never being used #ifdef _MSC_VER #pragma warning(disable : 4100) #endif // Unpacking routines (16 bits) ---------------------------------------------------------------------------------------- // Does almost everything but is slow static cmsUInt8Number* UnrollChunkyBytes(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsUInt16Number v; int i; if (ExtraFirst) { accum += Extra; } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = FROM_8_TO_16(*accum); v = Reverse ? REVERSE_FLAVOR_16(v) : v; wIn[index] = v; accum++; } if (!ExtraFirst) { accum += Extra; } if (Extra == 0 && SwapFirst) { cmsUInt16Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsUInt16Number)); wIn[nChan-1] = tmp; } return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // Extra channels are just ignored because come in the next planes static cmsUInt8Number* UnrollPlanarBytes(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int i; cmsUInt8Number* Init = accum; if (DoSwap ^ SwapFirst) { accum += T_EXTRA(info -> InputFormat) * Stride; } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; cmsUInt16Number v = FROM_8_TO_16(*accum); wIn[index] = Reverse ? REVERSE_FLAVOR_16(v) : v; accum += Stride; } return (Init + 1); } // Special cases, provided for performance static cmsUInt8Number* Unroll4Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = FROM_8_TO_16(*accum); accum++; // C wIn[1] = FROM_8_TO_16(*accum); accum++; // M wIn[2] = FROM_8_TO_16(*accum); accum++; // Y wIn[3] = FROM_8_TO_16(*accum); accum++; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll4BytesReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // C wIn[1] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // M wIn[2] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // Y wIn[3] = FROM_8_TO_16(REVERSE_FLAVOR_8(*accum)); accum++; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll4BytesSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[3] = FROM_8_TO_16(*accum); accum++; // K wIn[0] = FROM_8_TO_16(*accum); accum++; // C wIn[1] = FROM_8_TO_16(*accum); accum++; // M wIn[2] = FROM_8_TO_16(*accum); accum++; // Y return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KYMC static cmsUInt8Number* Unroll4BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[3] = FROM_8_TO_16(*accum); accum++; // K wIn[2] = FROM_8_TO_16(*accum); accum++; // Y wIn[1] = FROM_8_TO_16(*accum); accum++; // M wIn[0] = FROM_8_TO_16(*accum); accum++; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll4BytesSwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[2] = FROM_8_TO_16(*accum); accum++; // K wIn[1] = FROM_8_TO_16(*accum); accum++; // Y wIn[0] = FROM_8_TO_16(*accum); accum++; // M wIn[3] = FROM_8_TO_16(*accum); accum++; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = FROM_8_TO_16(*accum); accum++; // R wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[2] = FROM_8_TO_16(*accum); accum++; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3BytesSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { accum++; // A wIn[2] = FROM_8_TO_16(*accum); accum++; // B wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3BytesSkip1SwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[2] = FROM_8_TO_16(*accum); accum++; // B wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R accum++; // A return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3BytesSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { accum++; // A wIn[0] = FROM_8_TO_16(*accum); accum++; // R wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[2] = FROM_8_TO_16(*accum); accum++; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // BRG static cmsUInt8Number* Unroll3BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[2] = FROM_8_TO_16(*accum); accum++; // B wIn[1] = FROM_8_TO_16(*accum); accum++; // G wIn[0] = FROM_8_TO_16(*accum); accum++; // R return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* UnrollLabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // L wIn[1] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // a wIn[2] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* UnrollALabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { accum++; // A wIn[0] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // L wIn[1] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // a wIn[2] = FomLabV2ToLabV4(FROM_8_TO_16(*accum)); accum++; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* UnrollLabV2_16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = FomLabV2ToLabV4(*(cmsUInt16Number*) accum); accum += 2; // L wIn[1] = FomLabV2ToLabV4(*(cmsUInt16Number*) accum); accum += 2; // a wIn[2] = FomLabV2ToLabV4(*(cmsUInt16Number*) accum); accum += 2; // b return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // for duplex static cmsUInt8Number* Unroll2Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = FROM_8_TO_16(*accum); accum++; // ch1 wIn[1] = FROM_8_TO_16(*accum); accum++; // ch2 return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // Monochrome duplicates L into RGB for null-transforms static cmsUInt8Number* Unroll1Byte(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll1ByteSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L accum += 1; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll1ByteSkip2(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = wIn[1] = wIn[2] = FROM_8_TO_16(*accum); accum++; // L accum += 2; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll1ByteReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(FROM_8_TO_16(*accum)); accum++; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* UnrollAnyWords(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int SwapEndian = T_ENDIAN16(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; int i; if (ExtraFirst) { accum += Extra * sizeof(cmsUInt16Number); } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; cmsUInt16Number v = *(cmsUInt16Number*) accum; if (SwapEndian) v = CHANGE_ENDIAN(v); wIn[index] = Reverse ? REVERSE_FLAVOR_16(v) : v; accum += sizeof(cmsUInt16Number); } if (!ExtraFirst) { accum += Extra * sizeof(cmsUInt16Number); } if (Extra == 0 && SwapFirst) { cmsUInt16Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsUInt16Number)); wIn[nChan-1] = tmp; } return accum; cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* UnrollPlanarWords(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap= T_DOSWAP(info ->InputFormat); int Reverse= T_FLAVOR(info ->InputFormat); int SwapEndian = T_ENDIAN16(info -> InputFormat); int i; cmsUInt8Number* Init = accum; if (DoSwap) { accum += T_EXTRA(info -> InputFormat) * Stride * sizeof(cmsUInt16Number); } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; cmsUInt16Number v = *(cmsUInt16Number*) accum; if (SwapEndian) v = CHANGE_ENDIAN(v); wIn[index] = Reverse ? REVERSE_FLAVOR_16(v) : v; accum += Stride * sizeof(cmsUInt16Number); } return (Init + sizeof(cmsUInt16Number)); } static cmsUInt8Number* Unroll4Words(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll4WordsReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // C wIn[1] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // M wIn[2] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // Y wIn[3] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; // K return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll4WordsSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // K wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KYMC static cmsUInt8Number* Unroll4WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // K wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll4WordsSwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // K wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // Y wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // M wIn[3] = *(cmsUInt16Number*) accum; accum+= 2; // C return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3Words(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // C R wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M G wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // Y B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // C R wIn[1] = *(cmsUInt16Number*) accum; accum+= 2; // M G wIn[0] = *(cmsUInt16Number*) accum; accum+= 2; // Y B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3WordsSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { accum += 2; // A wIn[2] = *(cmsUInt16Number*) accum; accum += 2; // R wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // G wIn[0] = *(cmsUInt16Number*) accum; accum += 2; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll3WordsSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { accum += 2; // A wIn[0] = *(cmsUInt16Number*) accum; accum += 2; // R wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // G wIn[2] = *(cmsUInt16Number*) accum; accum += 2; // B return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll1Word(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = wIn[1] = wIn[2] = *(cmsUInt16Number*) accum; accum+= 2; // L return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll1WordReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = wIn[1] = wIn[2] = REVERSE_FLAVOR_16(*(cmsUInt16Number*) accum); accum+= 2; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll1WordSkip3(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = wIn[1] = wIn[2] = *(cmsUInt16Number*) accum; accum += 8; return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Unroll2Words(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { wIn[0] = *(cmsUInt16Number*) accum; accum += 2; // ch1 wIn[1] = *(cmsUInt16Number*) accum; accum += 2; // ch2 return accum; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // This is a conversion of Lab double to 16 bits static cmsUInt8Number* UnrollLabDoubleTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { if (T_PLANAR(info -> InputFormat)) { cmsFloat64Number* Pt = (cmsFloat64Number*) accum; cmsCIELab Lab; Lab.L = Pt[0]; Lab.a = Pt[Stride]; Lab.b = Pt[Stride*2]; cmsFloat2LabEncoded(wIn, &Lab); return accum + sizeof(cmsFloat64Number); } else { cmsFloat2LabEncoded(wIn, (cmsCIELab*) accum); accum += sizeof(cmsCIELab) + T_EXTRA(info ->InputFormat) * sizeof(cmsFloat64Number); return accum; } } // This is a conversion of Lab float to 16 bits static cmsUInt8Number* UnrollLabFloatTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { cmsCIELab Lab; if (T_PLANAR(info -> InputFormat)) { cmsFloat32Number* Pt = (cmsFloat32Number*) accum; Lab.L = Pt[0]; Lab.a = Pt[Stride]; Lab.b = Pt[Stride*2]; cmsFloat2LabEncoded(wIn, &Lab); return accum + sizeof(cmsFloat32Number); } else { Lab.L = ((cmsFloat32Number*) accum)[0]; Lab.a = ((cmsFloat32Number*) accum)[1]; Lab.b = ((cmsFloat32Number*) accum)[2]; cmsFloat2LabEncoded(wIn, &Lab); accum += (3 + T_EXTRA(info ->InputFormat)) * sizeof(cmsFloat32Number); return accum; } } // This is a conversion of XYZ double to 16 bits static cmsUInt8Number* UnrollXYZDoubleTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { if (T_PLANAR(info -> InputFormat)) { cmsFloat64Number* Pt = (cmsFloat64Number*) accum; cmsCIEXYZ XYZ; XYZ.X = Pt[0]; XYZ.Y = Pt[Stride]; XYZ.Z = Pt[Stride*2]; cmsFloat2XYZEncoded(wIn, &XYZ); return accum + sizeof(cmsFloat64Number); } else { cmsFloat2XYZEncoded(wIn, (cmsCIEXYZ*) accum); accum += sizeof(cmsCIEXYZ) + T_EXTRA(info ->InputFormat) * sizeof(cmsFloat64Number); return accum; } } // Check if space is marked as ink cmsINLINE cmsBool IsInkSpace(cmsUInt32Number Type) { switch (T_COLORSPACE(Type)) { case PT_CMY: case PT_CMYK: case PT_MCH5: case PT_MCH6: case PT_MCH7: case PT_MCH8: case PT_MCH9: case PT_MCH10: case PT_MCH11: case PT_MCH12: case PT_MCH13: case PT_MCH14: case PT_MCH15: return TRUE; default: return FALSE; } } // Inks does come in percentage, remaining cases are between 0..1.0, again to 16 bits static cmsUInt8Number* UnrollDoubleTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; int Planar = T_PLANAR(info -> InputFormat); cmsFloat64Number v; cmsUInt16Number vi; int i, start = 0; cmsFloat64Number maximum = IsInkSpace(info ->InputFormat) ? 655.35 : 65535.0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; if (Planar) v = (cmsFloat32Number) ((cmsFloat64Number*) accum)[(i + start) * Stride]; else v = (cmsFloat32Number) ((cmsFloat64Number*) accum)[i + start]; vi = _cmsQuickSaturateWord(v * maximum); if (Reverse) vi = REVERSE_FLAVOR_16(vi); wIn[index] = vi; } if (Extra == 0 && SwapFirst) { cmsUInt16Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsUInt16Number)); wIn[nChan-1] = tmp; } if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsFloat64Number); else return accum + (nChan + Extra) * sizeof(cmsFloat64Number); } static cmsUInt8Number* UnrollFloatTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; int Planar = T_PLANAR(info -> InputFormat); cmsFloat32Number v; cmsUInt16Number vi; int i, start = 0; cmsFloat64Number maximum = IsInkSpace(info ->InputFormat) ? 655.35 : 65535.0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; if (Planar) v = (cmsFloat32Number) ((cmsFloat32Number*) accum)[(i + start) * Stride]; else v = (cmsFloat32Number) ((cmsFloat32Number*) accum)[i + start]; vi = _cmsQuickSaturateWord(v * maximum); if (Reverse) vi = REVERSE_FLAVOR_16(vi); wIn[index] = vi; } if (Extra == 0 && SwapFirst) { cmsUInt16Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsUInt16Number)); wIn[nChan-1] = tmp; } if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsFloat32Number); else return accum + (nChan + Extra) * sizeof(cmsFloat32Number); } // For 1 channel, we need to duplicate data (it comes in 0..1.0 range) static cmsUInt8Number* UnrollDouble1Chan(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { cmsFloat64Number* Inks = (cmsFloat64Number*) accum; wIn[0] = wIn[1] = wIn[2] = _cmsQuickSaturateWord(Inks[0] * 65535.0); return accum + sizeof(cmsFloat64Number); cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } //------------------------------------------------------------------------------------------------------------------- // For anything going from cmsFloat32Number static cmsUInt8Number* UnrollFloatsToFloat(_cmsTRANSFORM* info, cmsFloat32Number wIn[], cmsUInt8Number* accum, cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; int Planar = T_PLANAR(info -> InputFormat); cmsFloat32Number v; int i, start = 0; cmsFloat32Number maximum = IsInkSpace(info ->InputFormat) ? 100.0F : 1.0F; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; if (Planar) v = (cmsFloat32Number) ((cmsFloat32Number*) accum)[(i + start) * Stride]; else v = (cmsFloat32Number) ((cmsFloat32Number*) accum)[i + start]; v /= maximum; wIn[index] = Reverse ? 1 - v : v; } if (Extra == 0 && SwapFirst) { cmsFloat32Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsFloat32Number)); wIn[nChan-1] = tmp; } if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsFloat32Number); else return accum + (nChan + Extra) * sizeof(cmsFloat32Number); } // For anything going from double static cmsUInt8Number* UnrollDoublesToFloat(_cmsTRANSFORM* info, cmsFloat32Number wIn[], cmsUInt8Number* accum, cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; int Planar = T_PLANAR(info -> InputFormat); cmsFloat64Number v; int i, start = 0; cmsFloat64Number maximum = IsInkSpace(info ->InputFormat) ? 100.0 : 1.0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; if (Planar) v = (cmsFloat64Number) ((cmsFloat64Number*) accum)[(i + start) * Stride]; else v = (cmsFloat64Number) ((cmsFloat64Number*) accum)[i + start]; v /= maximum; wIn[index] = (cmsFloat32Number) (Reverse ? 1.0 - v : v); } if (Extra == 0 && SwapFirst) { cmsFloat32Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsFloat32Number)); wIn[nChan-1] = tmp; } if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsFloat64Number); else return accum + (nChan + Extra) * sizeof(cmsFloat64Number); } // From Lab double to cmsFloat32Number static cmsUInt8Number* UnrollLabDoubleToFloat(_cmsTRANSFORM* info, cmsFloat32Number wIn[], cmsUInt8Number* accum, cmsUInt32Number Stride) { cmsFloat64Number* Pt = (cmsFloat64Number*) accum; if (T_PLANAR(info -> InputFormat)) { wIn[0] = (cmsFloat32Number) (Pt[0] / 100.0); // from 0..100 to 0..1 wIn[1] = (cmsFloat32Number) ((Pt[Stride] + 128) / 255.0); // form -128..+127 to 0..1 wIn[2] = (cmsFloat32Number) ((Pt[Stride*2] + 128) / 255.0); return accum + sizeof(cmsFloat64Number); } else { wIn[0] = (cmsFloat32Number) (Pt[0] / 100.0); // from 0..100 to 0..1 wIn[1] = (cmsFloat32Number) ((Pt[1] + 128) / 255.0); // form -128..+127 to 0..1 wIn[2] = (cmsFloat32Number) ((Pt[2] + 128) / 255.0); accum += sizeof(cmsFloat64Number)*(3 + T_EXTRA(info ->InputFormat)); return accum; } } // From Lab double to cmsFloat32Number static cmsUInt8Number* UnrollLabFloatToFloat(_cmsTRANSFORM* info, cmsFloat32Number wIn[], cmsUInt8Number* accum, cmsUInt32Number Stride) { cmsFloat32Number* Pt = (cmsFloat32Number*) accum; if (T_PLANAR(info -> InputFormat)) { wIn[0] = (cmsFloat32Number) (Pt[0] / 100.0); // from 0..100 to 0..1 wIn[1] = (cmsFloat32Number) ((Pt[Stride] + 128) / 255.0); // form -128..+127 to 0..1 wIn[2] = (cmsFloat32Number) ((Pt[Stride*2] + 128) / 255.0); return accum + sizeof(cmsFloat32Number); } else { wIn[0] = (cmsFloat32Number) (Pt[0] / 100.0); // from 0..100 to 0..1 wIn[1] = (cmsFloat32Number) ((Pt[1] + 128) / 255.0); // form -128..+127 to 0..1 wIn[2] = (cmsFloat32Number) ((Pt[2] + 128) / 255.0); accum += sizeof(cmsFloat32Number)*(3 + T_EXTRA(info ->InputFormat)); return accum; } } // 1.15 fixed point, that means maximum value is MAX_ENCODEABLE_XYZ (0xFFFF) static cmsUInt8Number* UnrollXYZDoubleToFloat(_cmsTRANSFORM* info, cmsFloat32Number wIn[], cmsUInt8Number* accum, cmsUInt32Number Stride) { cmsFloat64Number* Pt = (cmsFloat64Number*) accum; if (T_PLANAR(info -> InputFormat)) { wIn[0] = (cmsFloat32Number) (Pt[0] / MAX_ENCODEABLE_XYZ); wIn[1] = (cmsFloat32Number) (Pt[Stride] / MAX_ENCODEABLE_XYZ); wIn[2] = (cmsFloat32Number) (Pt[Stride*2] / MAX_ENCODEABLE_XYZ); return accum + sizeof(cmsFloat64Number); } else { wIn[0] = (cmsFloat32Number) (Pt[0] / MAX_ENCODEABLE_XYZ); wIn[1] = (cmsFloat32Number) (Pt[1] / MAX_ENCODEABLE_XYZ); wIn[2] = (cmsFloat32Number) (Pt[2] / MAX_ENCODEABLE_XYZ); accum += sizeof(cmsFloat64Number)*(3 + T_EXTRA(info ->InputFormat)); return accum; } } static cmsUInt8Number* UnrollXYZFloatToFloat(_cmsTRANSFORM* info, cmsFloat32Number wIn[], cmsUInt8Number* accum, cmsUInt32Number Stride) { cmsFloat32Number* Pt = (cmsFloat32Number*) accum; if (T_PLANAR(info -> InputFormat)) { wIn[0] = (cmsFloat32Number) (Pt[0] / MAX_ENCODEABLE_XYZ); wIn[1] = (cmsFloat32Number) (Pt[Stride] / MAX_ENCODEABLE_XYZ); wIn[2] = (cmsFloat32Number) (Pt[Stride*2] / MAX_ENCODEABLE_XYZ); return accum + sizeof(cmsFloat32Number); } else { wIn[0] = (cmsFloat32Number) (Pt[0] / MAX_ENCODEABLE_XYZ); wIn[1] = (cmsFloat32Number) (Pt[1] / MAX_ENCODEABLE_XYZ); wIn[2] = (cmsFloat32Number) (Pt[2] / MAX_ENCODEABLE_XYZ); accum += sizeof(cmsFloat32Number)*(3 + T_EXTRA(info ->InputFormat)); return accum; } } // Packing routines ----------------------------------------------------------------------------------------------------------- // Generic chunky for byte static cmsUInt8Number* PackAnyBytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsUInt8Number* swap1; cmsUInt8Number v = 0; int i; swap1 = output; if (ExtraFirst) { output += Extra; } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = FROM_16_TO_8(wOut[index]); if (Reverse) v = REVERSE_FLAVOR_8(v); *output++ = v; } if (!ExtraFirst) { output += Extra; } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, nChan-1); *swap1 = v; } return output; cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* PackAnyWords(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int SwapEndian = T_ENDIAN16(info -> InputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsUInt16Number* swap1; cmsUInt16Number v = 0; int i; swap1 = (cmsUInt16Number*) output; if (ExtraFirst) { output += Extra * sizeof(cmsUInt16Number); } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = wOut[index]; if (SwapEndian) v = CHANGE_ENDIAN(v); if (Reverse) v = REVERSE_FLAVOR_16(v); *(cmsUInt16Number*) output = v; output += sizeof(cmsUInt16Number); } if (!ExtraFirst) { output += Extra * sizeof(cmsUInt16Number); } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, (nChan-1)* sizeof(cmsUInt16Number)); *swap1 = v; } return output; cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* PackPlanarBytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int SwapFirst = T_SWAPFIRST(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int i; cmsUInt8Number* Init = output; if (DoSwap ^ SwapFirst) { output += T_EXTRA(info -> OutputFormat) * Stride; } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; cmsUInt8Number v = FROM_16_TO_8(wOut[index]); *(cmsUInt8Number*) output = (cmsUInt8Number) (Reverse ? REVERSE_FLAVOR_8(v) : v); output += Stride; } return (Init + 1); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* PackPlanarWords(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse= T_FLAVOR(info ->OutputFormat); int SwapEndian = T_ENDIAN16(info -> OutputFormat); int i; cmsUInt8Number* Init = output; cmsUInt16Number v; if (DoSwap) { output += T_EXTRA(info -> OutputFormat) * Stride * sizeof(cmsUInt16Number); } for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = wOut[index]; if (SwapEndian) v = CHANGE_ENDIAN(v); if (Reverse) v = REVERSE_FLAVOR_16(v); *(cmsUInt16Number*) output = v; output += (Stride * sizeof(cmsUInt16Number)); } return (Init + sizeof(cmsUInt16Number)); } // CMYKcm (unrolled for speed) static cmsUInt8Number* Pack6Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[4]); *output++ = FROM_16_TO_8(wOut[5]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KCMYcm static cmsUInt8Number* Pack6BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[5]); *output++ = FROM_16_TO_8(wOut[4]); *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // CMYKcm static cmsUInt8Number* Pack6Words(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[3]; output+= 2; *(cmsUInt16Number*) output = wOut[4]; output+= 2; *(cmsUInt16Number*) output = wOut[5]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // KCMYcm static cmsUInt8Number* Pack6WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[5]; output+= 2; *(cmsUInt16Number*) output = wOut[4]; output+= 2; *(cmsUInt16Number*) output = wOut[3]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack4Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[3]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack4BytesReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[0])); *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[1])); *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[2])); *output++ = REVERSE_FLAVOR_8(FROM_16_TO_8(wOut[3])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack4BytesSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // ABGR static cmsUInt8Number* Pack4BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[3]); *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack4BytesSwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[3]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack4Words(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[3]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack4WordsReverse(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[0]); output+= 2; *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[1]); output+= 2; *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[2]); output+= 2; *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[3]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // ABGR static cmsUInt8Number* Pack4WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[3]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // CMYK static cmsUInt8Number* Pack4WordsBigEndian(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[0]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[1]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[2]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[3]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* PackLabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[0])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[1])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[2])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* PackALabV2_8(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output++; *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[0])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[1])); *output++ = FROM_16_TO_8(FomLabV4ToLabV2(wOut[2])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* PackLabV2_16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = FomLabV4ToLabV2(wOut[0]); output += 2; *(cmsUInt16Number*) output = FomLabV4ToLabV2(wOut[1]); output += 2; *(cmsUInt16Number*) output = FomLabV4ToLabV2(wOut[2]); output += 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3Bytes(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = (wOut[0] & 0xFF); *output++ = (wOut[1] & 0xFF); *output++ = (wOut[2] & 0xFF); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesSwapOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = (wOut[2] & 0xFF); *output++ = (wOut[1] & 0xFF); *output++ = (wOut[0] & 0xFF); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3Words(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3WordsSwap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3WordsBigEndian(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[0]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[1]); output+= 2; *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[2]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1Optimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = (wOut[0] & 0xFF); *output++ = (wOut[1] & 0xFF); *output++ = (wOut[2] & 0xFF); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output++; *output++ = FROM_16_TO_8(wOut[0]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[2]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1SwapFirstOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output++; *output++ = (wOut[0] & 0xFF); *output++ = (wOut[1] & 0xFF); *output++ = (wOut[2] & 0xFF); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output++; *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1SwapOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output++; *output++ = (wOut[2] & 0xFF); *output++ = (wOut[1] & 0xFF); *output++ = (wOut[0] & 0xFF); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[2]); *output++ = FROM_16_TO_8(wOut[1]); *output++ = FROM_16_TO_8(wOut[0]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3BytesAndSkip1SwapSwapFirstOptimized(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = (wOut[2] & 0xFF); *output++ = (wOut[1] & 0xFF); *output++ = (wOut[0] & 0xFF); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3WordsAndSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3WordsAndSkip1Swap(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3WordsAndSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[2]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack3WordsAndSkip1SwapSwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[2]; output+= 2; *(cmsUInt16Number*) output = wOut[1]; output+= 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1Byte(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1ByteReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(REVERSE_FLAVOR_16(wOut[0])); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1ByteSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *output++ = FROM_16_TO_8(wOut[0]); output++; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1ByteSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output++; *output++ = FROM_16_TO_8(wOut[0]); return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1Word(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1WordReversed(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = REVERSE_FLAVOR_16(wOut[0]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1WordBigEndian(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = CHANGE_ENDIAN(wOut[0]); output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1WordSkip1(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { *(cmsUInt16Number*) output = wOut[0]; output+= 4; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } static cmsUInt8Number* Pack1WordSkip1SwapFirst(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { output += 2; *(cmsUInt16Number*) output = wOut[0]; output+= 2; return output; cmsUNUSED_PARAMETER(info); cmsUNUSED_PARAMETER(Stride); } // Unencoded Float values -- don't try optimize speed static cmsUInt8Number* PackLabDoubleFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { if (T_PLANAR(info -> OutputFormat)) { cmsCIELab Lab; cmsFloat64Number* Out = (cmsFloat64Number*) output; cmsLabEncoded2Float(&Lab, wOut); Out[0] = Lab.L; Out[Stride] = Lab.a; Out[Stride*2] = Lab.b; return output + sizeof(cmsFloat64Number); } else { cmsLabEncoded2Float((cmsCIELab*) output, wOut); return output + (sizeof(cmsCIELab) + T_EXTRA(info ->OutputFormat) * sizeof(cmsFloat64Number)); } } static cmsUInt8Number* PackLabFloatFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { cmsCIELab Lab; cmsLabEncoded2Float(&Lab, wOut); if (T_PLANAR(info -> OutputFormat)) { cmsFloat32Number* Out = (cmsFloat32Number*) output; Out[0] = (cmsFloat32Number)Lab.L; Out[Stride] = (cmsFloat32Number)Lab.a; Out[Stride*2] = (cmsFloat32Number)Lab.b; return output + sizeof(cmsFloat32Number); } else { ((cmsFloat32Number*) output)[0] = (cmsFloat32Number) Lab.L; ((cmsFloat32Number*) output)[1] = (cmsFloat32Number) Lab.a; ((cmsFloat32Number*) output)[2] = (cmsFloat32Number) Lab.b; return output + (3 + T_EXTRA(info ->OutputFormat)) * sizeof(cmsFloat32Number); } } static cmsUInt8Number* PackXYZDoubleFrom16(register _cmsTRANSFORM* Info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { if (T_PLANAR(Info -> OutputFormat)) { cmsCIEXYZ XYZ; cmsFloat64Number* Out = (cmsFloat64Number*) output; cmsXYZEncoded2Float(&XYZ, wOut); Out[0] = XYZ.X; Out[Stride] = XYZ.Y; Out[Stride*2] = XYZ.Z; return output + sizeof(cmsFloat64Number); } else { cmsXYZEncoded2Float((cmsCIEXYZ*) output, wOut); return output + (sizeof(cmsCIEXYZ) + T_EXTRA(Info ->OutputFormat) * sizeof(cmsFloat64Number)); } } static cmsUInt8Number* PackDoubleFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int Planar = T_PLANAR(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsFloat64Number maximum = IsInkSpace(info ->OutputFormat) ? 655.35 : 65535.0; cmsFloat64Number v = 0; cmsFloat64Number* swap1 = (cmsFloat64Number*) output; int i, start = 0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = (cmsFloat64Number) wOut[index] / maximum; if (Reverse) v = maximum - v; if (Planar) ((cmsFloat64Number*) output)[(i + start) * Stride]= v; else ((cmsFloat64Number*) output)[i + start] = v; } if (!ExtraFirst) { output += Extra * sizeof(cmsFloat64Number); } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, (nChan-1)* sizeof(cmsFloat64Number)); *swap1 = v; } if (T_PLANAR(info -> OutputFormat)) return output + sizeof(cmsFloat64Number); else return output + nChan * sizeof(cmsFloat64Number); } static cmsUInt8Number* PackFloatFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int Planar = T_PLANAR(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsFloat64Number maximum = IsInkSpace(info ->OutputFormat) ? 655.35 : 65535.0; cmsFloat64Number v = 0; cmsFloat32Number* swap1 = (cmsFloat32Number*) output; int i, start = 0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = (cmsFloat64Number) wOut[index] / maximum; if (Reverse) v = maximum - v; if (Planar) ((cmsFloat32Number*) output)[(i + start ) * Stride]= (cmsFloat32Number) v; else ((cmsFloat32Number*) output)[i + start] = (cmsFloat32Number) v; } if (!ExtraFirst) { output += Extra * sizeof(cmsFloat32Number); } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, (nChan-1)* sizeof(cmsFloat32Number)); *swap1 = (cmsFloat32Number) v; } if (T_PLANAR(info -> OutputFormat)) return output + sizeof(cmsFloat32Number); else return output + nChan * sizeof(cmsFloat32Number); } // -------------------------------------------------------------------------------------------------------- static cmsUInt8Number* PackFloatsFromFloat(_cmsTRANSFORM* info, cmsFloat32Number wOut[], cmsUInt8Number* output, cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int Planar = T_PLANAR(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsFloat64Number maximum = IsInkSpace(info ->OutputFormat) ? 100.0 : 1.0; cmsFloat32Number* swap1 = (cmsFloat32Number*) output; cmsFloat64Number v = 0; int i, start = 0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = wOut[index] * maximum; if (Reverse) v = maximum - v; if (Planar) ((cmsFloat32Number*) output)[(i + start)* Stride]= (cmsFloat32Number) v; else ((cmsFloat32Number*) output)[i + start] = (cmsFloat32Number) v; } if (!ExtraFirst) { output += Extra * sizeof(cmsFloat32Number); } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, (nChan-1)* sizeof(cmsFloat32Number)); *swap1 = (cmsFloat32Number) v; } if (T_PLANAR(info -> OutputFormat)) return output + sizeof(cmsFloat32Number); else return output + nChan * sizeof(cmsFloat32Number); } static cmsUInt8Number* PackDoublesFromFloat(_cmsTRANSFORM* info, cmsFloat32Number wOut[], cmsUInt8Number* output, cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int Planar = T_PLANAR(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsFloat64Number maximum = IsInkSpace(info ->OutputFormat) ? 100.0 : 1.0; cmsFloat64Number v = 0; cmsFloat64Number* swap1 = (cmsFloat64Number*) output; int i, start = 0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = wOut[index] * maximum; if (Reverse) v = maximum - v; if (Planar) ((cmsFloat64Number*) output)[(i + start) * Stride] = v; else ((cmsFloat64Number*) output)[i + start] = v; } if (!ExtraFirst) { output += Extra * sizeof(cmsFloat64Number); } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, (nChan-1)* sizeof(cmsFloat64Number)); *swap1 = v; } if (T_PLANAR(info -> OutputFormat)) return output + sizeof(cmsFloat64Number); else return output + nChan * sizeof(cmsFloat64Number); } static cmsUInt8Number* PackLabFloatFromFloat(_cmsTRANSFORM* Info, cmsFloat32Number wOut[], cmsUInt8Number* output, cmsUInt32Number Stride) { cmsFloat32Number* Out = (cmsFloat32Number*) output; if (T_PLANAR(Info -> OutputFormat)) { Out[0] = (cmsFloat32Number) (wOut[0] * 100.0); Out[Stride] = (cmsFloat32Number) (wOut[1] * 255.0 - 128.0); Out[Stride*2] = (cmsFloat32Number) (wOut[2] * 255.0 - 128.0); return output + sizeof(cmsFloat32Number); } else { Out[0] = (cmsFloat32Number) (wOut[0] * 100.0); Out[1] = (cmsFloat32Number) (wOut[1] * 255.0 - 128.0); Out[2] = (cmsFloat32Number) (wOut[2] * 255.0 - 128.0); return output + (sizeof(cmsFloat32Number)*3 + T_EXTRA(Info ->OutputFormat) * sizeof(cmsFloat32Number)); } } static cmsUInt8Number* PackLabDoubleFromFloat(_cmsTRANSFORM* Info, cmsFloat32Number wOut[], cmsUInt8Number* output, cmsUInt32Number Stride) { cmsFloat64Number* Out = (cmsFloat64Number*) output; if (T_PLANAR(Info -> OutputFormat)) { Out[0] = (cmsFloat64Number) (wOut[0] * 100.0); Out[Stride] = (cmsFloat64Number) (wOut[1] * 255.0 - 128.0); Out[Stride*2] = (cmsFloat64Number) (wOut[2] * 255.0 - 128.0); return output + sizeof(cmsFloat64Number); } else { Out[0] = (cmsFloat64Number) (wOut[0] * 100.0); Out[1] = (cmsFloat64Number) (wOut[1] * 255.0 - 128.0); Out[2] = (cmsFloat64Number) (wOut[2] * 255.0 - 128.0); return output + (sizeof(cmsFloat64Number)*3 + T_EXTRA(Info ->OutputFormat) * sizeof(cmsFloat64Number)); } } // From 0..1 range to 0..MAX_ENCODEABLE_XYZ static cmsUInt8Number* PackXYZFloatFromFloat(_cmsTRANSFORM* Info, cmsFloat32Number wOut[], cmsUInt8Number* output, cmsUInt32Number Stride) { cmsFloat32Number* Out = (cmsFloat32Number*) output; if (T_PLANAR(Info -> OutputFormat)) { Out[0] = (cmsFloat32Number) (wOut[0] * MAX_ENCODEABLE_XYZ); Out[Stride] = (cmsFloat32Number) (wOut[1] * MAX_ENCODEABLE_XYZ); Out[Stride*2] = (cmsFloat32Number) (wOut[2] * MAX_ENCODEABLE_XYZ); return output + sizeof(cmsFloat32Number); } else { Out[0] = (cmsFloat32Number) (wOut[0] * MAX_ENCODEABLE_XYZ); Out[1] = (cmsFloat32Number) (wOut[1] * MAX_ENCODEABLE_XYZ); Out[2] = (cmsFloat32Number) (wOut[2] * MAX_ENCODEABLE_XYZ); return output + (sizeof(cmsFloat32Number)*3 + T_EXTRA(Info ->OutputFormat) * sizeof(cmsFloat32Number)); } } // Same, but convert to double static cmsUInt8Number* PackXYZDoubleFromFloat(_cmsTRANSFORM* Info, cmsFloat32Number wOut[], cmsUInt8Number* output, cmsUInt32Number Stride) { cmsFloat64Number* Out = (cmsFloat64Number*) output; if (T_PLANAR(Info -> OutputFormat)) { Out[0] = (cmsFloat64Number) (wOut[0] * MAX_ENCODEABLE_XYZ); Out[Stride] = (cmsFloat64Number) (wOut[1] * MAX_ENCODEABLE_XYZ); Out[Stride*2] = (cmsFloat64Number) (wOut[2] * MAX_ENCODEABLE_XYZ); return output + sizeof(cmsFloat64Number); } else { Out[0] = (cmsFloat64Number) (wOut[0] * MAX_ENCODEABLE_XYZ); Out[1] = (cmsFloat64Number) (wOut[1] * MAX_ENCODEABLE_XYZ); Out[2] = (cmsFloat64Number) (wOut[2] * MAX_ENCODEABLE_XYZ); return output + (sizeof(cmsFloat64Number)*3 + T_EXTRA(Info ->OutputFormat) * sizeof(cmsFloat64Number)); } } // ---------------------------------------------------------------------------------------------------------------- #ifndef CMS_NO_HALF_SUPPORT // Decodes an stream of half floats to wIn[] described by input format static cmsUInt8Number* UnrollHalfTo16(register _cmsTRANSFORM* info, register cmsUInt16Number wIn[], register cmsUInt8Number* accum, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; int Planar = T_PLANAR(info -> InputFormat); cmsFloat32Number v; int i, start = 0; cmsFloat32Number maximum = IsInkSpace(info ->InputFormat) ? 655.35F : 65535.0F; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; if (Planar) v = _cmsHalf2Float ( ((cmsUInt16Number*) accum)[(i + start) * Stride] ); else v = _cmsHalf2Float ( ((cmsUInt16Number*) accum)[i + start] ) ; if (Reverse) v = maximum - v; wIn[index] = _cmsQuickSaturateWord(v * maximum); } if (Extra == 0 && SwapFirst) { cmsUInt16Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsUInt16Number)); wIn[nChan-1] = tmp; } if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsUInt16Number); else return accum + (nChan + Extra) * sizeof(cmsUInt16Number); } // Decodes an stream of half floats to wIn[] described by input format static cmsUInt8Number* UnrollHalfToFloat(_cmsTRANSFORM* info, cmsFloat32Number wIn[], cmsUInt8Number* accum, cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> InputFormat); int DoSwap = T_DOSWAP(info ->InputFormat); int Reverse = T_FLAVOR(info ->InputFormat); int SwapFirst = T_SWAPFIRST(info -> InputFormat); int Extra = T_EXTRA(info -> InputFormat); int ExtraFirst = DoSwap ^ SwapFirst; int Planar = T_PLANAR(info -> InputFormat); cmsFloat32Number v; int i, start = 0; cmsFloat32Number maximum = IsInkSpace(info ->InputFormat) ? 100.0F : 1.0F; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; if (Planar) v = _cmsHalf2Float ( ((cmsUInt16Number*) accum)[(i + start) * Stride] ); else v = _cmsHalf2Float ( ((cmsUInt16Number*) accum)[i + start] ) ; v /= maximum; wIn[index] = Reverse ? 1 - v : v; } if (Extra == 0 && SwapFirst) { cmsFloat32Number tmp = wIn[0]; memmove(&wIn[0], &wIn[1], (nChan-1) * sizeof(cmsFloat32Number)); wIn[nChan-1] = tmp; } if (T_PLANAR(info -> InputFormat)) return accum + sizeof(cmsUInt16Number); else return accum + (nChan + Extra) * sizeof(cmsUInt16Number); } static cmsUInt8Number* PackHalfFrom16(register _cmsTRANSFORM* info, register cmsUInt16Number wOut[], register cmsUInt8Number* output, register cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int Planar = T_PLANAR(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsFloat32Number maximum = IsInkSpace(info ->OutputFormat) ? 655.35F : 65535.0F; cmsFloat32Number v = 0; cmsUInt16Number* swap1 = (cmsUInt16Number*) output; int i, start = 0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = (cmsFloat32Number) wOut[index] / maximum; if (Reverse) v = maximum - v; if (Planar) ((cmsUInt16Number*) output)[(i + start ) * Stride]= _cmsFloat2Half(v); else ((cmsUInt16Number*) output)[i + start] = _cmsFloat2Half(v); } if (!ExtraFirst) { output += Extra * sizeof(cmsUInt16Number); } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, (nChan-1)* sizeof(cmsUInt16Number)); *swap1 = _cmsFloat2Half(v); } if (T_PLANAR(info -> OutputFormat)) return output + sizeof(cmsUInt16Number); else return output + nChan * sizeof(cmsUInt16Number); } static cmsUInt8Number* PackHalfFromFloat(_cmsTRANSFORM* info, cmsFloat32Number wOut[], cmsUInt8Number* output, cmsUInt32Number Stride) { int nChan = T_CHANNELS(info -> OutputFormat); int DoSwap = T_DOSWAP(info ->OutputFormat); int Reverse = T_FLAVOR(info ->OutputFormat); int Extra = T_EXTRA(info -> OutputFormat); int SwapFirst = T_SWAPFIRST(info -> OutputFormat); int Planar = T_PLANAR(info -> OutputFormat); int ExtraFirst = DoSwap ^ SwapFirst; cmsFloat32Number maximum = IsInkSpace(info ->OutputFormat) ? 100.0F : 1.0F; cmsUInt16Number* swap1 = (cmsUInt16Number*) output; cmsFloat32Number v = 0; int i, start = 0; if (ExtraFirst) start = Extra; for (i=0; i < nChan; i++) { int index = DoSwap ? (nChan - i - 1) : i; v = wOut[index] * maximum; if (Reverse) v = maximum - v; if (Planar) ((cmsUInt16Number*) output)[(i + start)* Stride]= _cmsFloat2Half( v ); else ((cmsUInt16Number*) output)[i + start] = _cmsFloat2Half( v ); } if (!ExtraFirst) { output += Extra * sizeof(cmsUInt16Number); } if (Extra == 0 && SwapFirst) { memmove(swap1 + 1, swap1, (nChan-1)* sizeof(cmsUInt16Number)); *swap1 = (cmsUInt16Number) _cmsFloat2Half( v ); } if (T_PLANAR(info -> OutputFormat)) return output + sizeof(cmsUInt16Number); else return output + nChan * sizeof(cmsUInt16Number); } #endif // ---------------------------------------------------------------------------------------------------------------- static cmsFormatters16 InputFormatters16[] = { // Type Mask Function // ---------------------------- ------------------------------------ ---------------------------- { TYPE_Lab_DBL, ANYPLANAR|ANYEXTRA, UnrollLabDoubleTo16}, { TYPE_XYZ_DBL, ANYPLANAR|ANYEXTRA, UnrollXYZDoubleTo16}, { TYPE_Lab_FLT, ANYPLANAR|ANYEXTRA, UnrollLabFloatTo16}, { TYPE_GRAY_DBL, 0, UnrollDouble1Chan}, { FLOAT_SH(1)|BYTES_SH(0), ANYCHANNELS|ANYPLANAR|ANYSWAPFIRST|ANYFLAVOR| ANYSWAP|ANYEXTRA|ANYSPACE, UnrollDoubleTo16}, { FLOAT_SH(1)|BYTES_SH(4), ANYCHANNELS|ANYPLANAR|ANYSWAPFIRST|ANYFLAVOR| ANYSWAP|ANYEXTRA|ANYSPACE, UnrollFloatTo16}, #ifndef CMS_NO_HALF_SUPPORT { FLOAT_SH(1)|BYTES_SH(2), ANYCHANNELS|ANYPLANAR|ANYSWAPFIRST|ANYFLAVOR| ANYEXTRA|ANYSWAP|ANYSPACE, UnrollHalfTo16}, #endif { CHANNELS_SH(1)|BYTES_SH(1), ANYSPACE, Unroll1Byte}, { CHANNELS_SH(1)|BYTES_SH(1)|EXTRA_SH(1), ANYSPACE, Unroll1ByteSkip1}, { CHANNELS_SH(1)|BYTES_SH(1)|EXTRA_SH(2), ANYSPACE, Unroll1ByteSkip2}, { CHANNELS_SH(1)|BYTES_SH(1)|FLAVOR_SH(1), ANYSPACE, Unroll1ByteReversed}, { COLORSPACE_SH(PT_MCH2)|CHANNELS_SH(2)|BYTES_SH(1), 0, Unroll2Bytes}, { TYPE_LabV2_8, 0, UnrollLabV2_8 }, { TYPE_ALabV2_8, 0, UnrollALabV2_8 }, { TYPE_LabV2_16, 0, UnrollLabV2_16 }, { CHANNELS_SH(3)|BYTES_SH(1), ANYSPACE, Unroll3Bytes}, { CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1), ANYSPACE, Unroll3BytesSwap}, { CHANNELS_SH(3)|EXTRA_SH(1)|BYTES_SH(1)|DOSWAP_SH(1), ANYSPACE, Unroll3BytesSkip1Swap}, { CHANNELS_SH(3)|EXTRA_SH(1)|BYTES_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Unroll3BytesSkip1SwapFirst}, { CHANNELS_SH(3)|EXTRA_SH(1)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Unroll3BytesSkip1SwapSwapFirst}, { CHANNELS_SH(4)|BYTES_SH(1), ANYSPACE, Unroll4Bytes}, { CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1), ANYSPACE, Unroll4BytesReverse}, { CHANNELS_SH(4)|BYTES_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Unroll4BytesSwapFirst}, { CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1), ANYSPACE, Unroll4BytesSwap}, { CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Unroll4BytesSwapSwapFirst}, { BYTES_SH(1)|PLANAR_SH(1), ANYFLAVOR|ANYSWAPFIRST| ANYSWAP|ANYEXTRA|ANYCHANNELS|ANYSPACE, UnrollPlanarBytes}, { BYTES_SH(1), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP| ANYEXTRA|ANYCHANNELS|ANYSPACE, UnrollChunkyBytes}, { CHANNELS_SH(1)|BYTES_SH(2), ANYSPACE, Unroll1Word}, { CHANNELS_SH(1)|BYTES_SH(2)|FLAVOR_SH(1), ANYSPACE, Unroll1WordReversed}, { CHANNELS_SH(1)|BYTES_SH(2)|EXTRA_SH(3), ANYSPACE, Unroll1WordSkip3}, { CHANNELS_SH(2)|BYTES_SH(2), ANYSPACE, Unroll2Words}, { CHANNELS_SH(3)|BYTES_SH(2), ANYSPACE, Unroll3Words}, { CHANNELS_SH(4)|BYTES_SH(2), ANYSPACE, Unroll4Words}, { CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1), ANYSPACE, Unroll3WordsSwap}, { CHANNELS_SH(3)|BYTES_SH(2)|EXTRA_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Unroll3WordsSkip1SwapFirst}, { CHANNELS_SH(3)|BYTES_SH(2)|EXTRA_SH(1)|DOSWAP_SH(1), ANYSPACE, Unroll3WordsSkip1Swap}, { CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1), ANYSPACE, Unroll4WordsReverse}, { CHANNELS_SH(4)|BYTES_SH(2)|SWAPFIRST_SH(1), ANYSPACE, Unroll4WordsSwapFirst}, { CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1), ANYSPACE, Unroll4WordsSwap}, { CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Unroll4WordsSwapSwapFirst}, { BYTES_SH(2)|PLANAR_SH(1), ANYFLAVOR|ANYSWAP|ANYENDIAN|ANYEXTRA|ANYCHANNELS|ANYSPACE, UnrollPlanarWords}, { BYTES_SH(2), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP|ANYENDIAN|ANYEXTRA|ANYCHANNELS|ANYSPACE, UnrollAnyWords}, }; static cmsFormattersFloat InputFormattersFloat[] = { // Type Mask Function // ---------------------------- ------------------------------------ ---------------------------- { TYPE_Lab_DBL, ANYPLANAR|ANYEXTRA, UnrollLabDoubleToFloat}, { TYPE_Lab_FLT, ANYPLANAR|ANYEXTRA, UnrollLabFloatToFloat}, { TYPE_XYZ_DBL, ANYPLANAR|ANYEXTRA, UnrollXYZDoubleToFloat}, { TYPE_XYZ_FLT, ANYPLANAR|ANYEXTRA, UnrollXYZFloatToFloat}, { FLOAT_SH(1)|BYTES_SH(4), ANYPLANAR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA| ANYCHANNELS|ANYSPACE, UnrollFloatsToFloat}, { FLOAT_SH(1)|BYTES_SH(0), ANYPLANAR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA| ANYCHANNELS|ANYSPACE, UnrollDoublesToFloat}, #ifndef CMS_NO_HALF_SUPPORT { FLOAT_SH(1)|BYTES_SH(2), ANYPLANAR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA| ANYCHANNELS|ANYSPACE, UnrollHalfToFloat}, #endif }; // Bit fields set to one in the mask are not compared static cmsFormatter _cmsGetStockInputFormatter(cmsUInt32Number dwInput, cmsUInt32Number dwFlags) { cmsUInt32Number i; cmsFormatter fr; switch (dwFlags) { case CMS_PACK_FLAGS_16BITS: { for (i=0; i < sizeof(InputFormatters16) / sizeof(cmsFormatters16); i++) { cmsFormatters16* f = InputFormatters16 + i; if ((dwInput & ~f ->Mask) == f ->Type) { fr.Fmt16 = f ->Frm; return fr; } } } break; case CMS_PACK_FLAGS_FLOAT: { for (i=0; i < sizeof(InputFormattersFloat) / sizeof(cmsFormattersFloat); i++) { cmsFormattersFloat* f = InputFormattersFloat + i; if ((dwInput & ~f ->Mask) == f ->Type) { fr.FmtFloat = f ->Frm; return fr; } } } break; default:; } fr.Fmt16 = NULL; return fr; } static cmsFormatters16 OutputFormatters16[] = { // Type Mask Function // ---------------------------- ------------------------------------ ---------------------------- { TYPE_Lab_DBL, ANYPLANAR|ANYEXTRA, PackLabDoubleFrom16}, { TYPE_XYZ_DBL, ANYPLANAR|ANYEXTRA, PackXYZDoubleFrom16}, { TYPE_Lab_FLT, ANYPLANAR|ANYEXTRA, PackLabFloatFrom16}, { FLOAT_SH(1)|BYTES_SH(0), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP| ANYCHANNELS|ANYPLANAR|ANYEXTRA|ANYSPACE, PackDoubleFrom16}, { FLOAT_SH(1)|BYTES_SH(4), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP| ANYCHANNELS|ANYPLANAR|ANYEXTRA|ANYSPACE, PackFloatFrom16}, #ifndef CMS_NO_HALF_SUPPORT { FLOAT_SH(1)|BYTES_SH(2), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP| ANYCHANNELS|ANYPLANAR|ANYEXTRA|ANYSPACE, PackHalfFrom16}, #endif { CHANNELS_SH(1)|BYTES_SH(1), ANYSPACE, Pack1Byte}, { CHANNELS_SH(1)|BYTES_SH(1)|EXTRA_SH(1), ANYSPACE, Pack1ByteSkip1}, { CHANNELS_SH(1)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack1ByteSkip1SwapFirst}, { CHANNELS_SH(1)|BYTES_SH(1)|FLAVOR_SH(1), ANYSPACE, Pack1ByteReversed}, { TYPE_LabV2_8, 0, PackLabV2_8 }, { TYPE_ALabV2_8, 0, PackALabV2_8 }, { TYPE_LabV2_16, 0, PackLabV2_16 }, { CHANNELS_SH(3)|BYTES_SH(1)|OPTIMIZED_SH(1), ANYSPACE, Pack3BytesOptimized}, { CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|OPTIMIZED_SH(1), ANYSPACE, Pack3BytesAndSkip1Optimized}, { CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1)|OPTIMIZED_SH(1), ANYSPACE, Pack3BytesAndSkip1SwapFirstOptimized}, { CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1)|OPTIMIZED_SH(1), ANYSPACE, Pack3BytesAndSkip1SwapSwapFirstOptimized}, { CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|EXTRA_SH(1)|OPTIMIZED_SH(1), ANYSPACE, Pack3BytesAndSkip1SwapOptimized}, { CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|OPTIMIZED_SH(1), ANYSPACE, Pack3BytesSwapOptimized}, { CHANNELS_SH(3)|BYTES_SH(1), ANYSPACE, Pack3Bytes}, { CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1), ANYSPACE, Pack3BytesAndSkip1}, { CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack3BytesAndSkip1SwapFirst}, { CHANNELS_SH(3)|BYTES_SH(1)|EXTRA_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack3BytesAndSkip1SwapSwapFirst}, { CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1)|EXTRA_SH(1), ANYSPACE, Pack3BytesAndSkip1Swap}, { CHANNELS_SH(3)|BYTES_SH(1)|DOSWAP_SH(1), ANYSPACE, Pack3BytesSwap}, { CHANNELS_SH(6)|BYTES_SH(1), ANYSPACE, Pack6Bytes}, { CHANNELS_SH(6)|BYTES_SH(1)|DOSWAP_SH(1), ANYSPACE, Pack6BytesSwap}, { CHANNELS_SH(4)|BYTES_SH(1), ANYSPACE, Pack4Bytes}, { CHANNELS_SH(4)|BYTES_SH(1)|FLAVOR_SH(1), ANYSPACE, Pack4BytesReverse}, { CHANNELS_SH(4)|BYTES_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack4BytesSwapFirst}, { CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1), ANYSPACE, Pack4BytesSwap}, { CHANNELS_SH(4)|BYTES_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack4BytesSwapSwapFirst}, { BYTES_SH(1), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA|ANYCHANNELS|ANYSPACE, PackAnyBytes}, { BYTES_SH(1)|PLANAR_SH(1), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA|ANYCHANNELS|ANYSPACE, PackPlanarBytes}, { CHANNELS_SH(1)|BYTES_SH(2), ANYSPACE, Pack1Word}, { CHANNELS_SH(1)|BYTES_SH(2)|EXTRA_SH(1), ANYSPACE, Pack1WordSkip1}, { CHANNELS_SH(1)|BYTES_SH(2)|EXTRA_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack1WordSkip1SwapFirst}, { CHANNELS_SH(1)|BYTES_SH(2)|FLAVOR_SH(1), ANYSPACE, Pack1WordReversed}, { CHANNELS_SH(1)|BYTES_SH(2)|ENDIAN16_SH(1), ANYSPACE, Pack1WordBigEndian}, { CHANNELS_SH(3)|BYTES_SH(2), ANYSPACE, Pack3Words}, { CHANNELS_SH(3)|BYTES_SH(2)|DOSWAP_SH(1), ANYSPACE, Pack3WordsSwap}, { CHANNELS_SH(3)|BYTES_SH(2)|ENDIAN16_SH(1), ANYSPACE, Pack3WordsBigEndian}, { CHANNELS_SH(3)|BYTES_SH(2)|EXTRA_SH(1), ANYSPACE, Pack3WordsAndSkip1}, { CHANNELS_SH(3)|BYTES_SH(2)|EXTRA_SH(1)|DOSWAP_SH(1), ANYSPACE, Pack3WordsAndSkip1Swap}, { CHANNELS_SH(3)|BYTES_SH(2)|EXTRA_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack3WordsAndSkip1SwapFirst}, { CHANNELS_SH(3)|BYTES_SH(2)|EXTRA_SH(1)|DOSWAP_SH(1)|SWAPFIRST_SH(1), ANYSPACE, Pack3WordsAndSkip1SwapSwapFirst}, { CHANNELS_SH(4)|BYTES_SH(2), ANYSPACE, Pack4Words}, { CHANNELS_SH(4)|BYTES_SH(2)|FLAVOR_SH(1), ANYSPACE, Pack4WordsReverse}, { CHANNELS_SH(4)|BYTES_SH(2)|DOSWAP_SH(1), ANYSPACE, Pack4WordsSwap}, { CHANNELS_SH(4)|BYTES_SH(2)|ENDIAN16_SH(1), ANYSPACE, Pack4WordsBigEndian}, { CHANNELS_SH(6)|BYTES_SH(2), ANYSPACE, Pack6Words}, { CHANNELS_SH(6)|BYTES_SH(2)|DOSWAP_SH(1), ANYSPACE, Pack6WordsSwap}, { BYTES_SH(2)|PLANAR_SH(1), ANYFLAVOR|ANYENDIAN|ANYSWAP|ANYEXTRA|ANYCHANNELS|ANYSPACE, PackPlanarWords}, { BYTES_SH(2), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP|ANYENDIAN|ANYEXTRA|ANYCHANNELS|ANYSPACE, PackAnyWords} }; static cmsFormattersFloat OutputFormattersFloat[] = { // Type Mask Function // ---------------------------- --------------------------------------------------- ---------------------------- { TYPE_Lab_FLT, ANYPLANAR|ANYEXTRA, PackLabFloatFromFloat}, { TYPE_XYZ_FLT, ANYPLANAR|ANYEXTRA, PackXYZFloatFromFloat}, { TYPE_Lab_DBL, ANYPLANAR|ANYEXTRA, PackLabDoubleFromFloat}, { TYPE_XYZ_DBL, ANYPLANAR|ANYEXTRA, PackXYZDoubleFromFloat}, { FLOAT_SH(1)|BYTES_SH(4), ANYPLANAR| ANYFLAVOR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA|ANYCHANNELS|ANYSPACE, PackFloatsFromFloat }, { FLOAT_SH(1)|BYTES_SH(0), ANYPLANAR| ANYFLAVOR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA|ANYCHANNELS|ANYSPACE, PackDoublesFromFloat }, #ifndef CMS_NO_HALF_SUPPORT { FLOAT_SH(1)|BYTES_SH(2), ANYFLAVOR|ANYSWAPFIRST|ANYSWAP|ANYEXTRA|ANYCHANNELS|ANYSPACE, PackHalfFromFloat }, #endif }; // Bit fields set to one in the mask are not compared static cmsFormatter _cmsGetStockOutputFormatter(cmsUInt32Number dwInput, cmsUInt32Number dwFlags) { cmsUInt32Number i; cmsFormatter fr; switch (dwFlags) { case CMS_PACK_FLAGS_16BITS: { for (i=0; i < sizeof(OutputFormatters16) / sizeof(cmsFormatters16); i++) { cmsFormatters16* f = OutputFormatters16 + i; if ((dwInput & ~f ->Mask) == f ->Type) { fr.Fmt16 = f ->Frm; return fr; } } } break; case CMS_PACK_FLAGS_FLOAT: { for (i=0; i < sizeof(OutputFormattersFloat) / sizeof(cmsFormattersFloat); i++) { cmsFormattersFloat* f = OutputFormattersFloat + i; if ((dwInput & ~f ->Mask) == f ->Type) { fr.FmtFloat = f ->Frm; return fr; } } } break; default:; } fr.Fmt16 = NULL; return fr; } typedef struct _cms_formatters_factory_list { cmsFormatterFactory Factory; struct _cms_formatters_factory_list *Next; } cmsFormattersFactoryList; static cmsFormattersFactoryList* FactoryList = NULL; // Formatters management cmsBool _cmsRegisterFormattersPlugin(cmsContext id, cmsPluginBase* Data) { cmsPluginFormatters* Plugin = (cmsPluginFormatters*) Data; cmsFormattersFactoryList* fl ; // Reset if (Data == NULL) { FactoryList = NULL; return TRUE; } fl = (cmsFormattersFactoryList*) _cmsPluginMalloc(id, sizeof(cmsFormattersFactoryList)); if (fl == NULL) return FALSE; fl ->Factory = Plugin ->FormattersFactory; fl ->Next = FactoryList; FactoryList = fl; return TRUE; } cmsFormatter _cmsGetFormatter(cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8 cmsFormatterDirection Dir, cmsUInt32Number dwFlags) { cmsFormattersFactoryList* f; for (f = FactoryList; f != NULL; f = f ->Next) { cmsFormatter fn = f ->Factory(Type, Dir, dwFlags); if (fn.Fmt16 != NULL) return fn; } // Revert to default if (Dir == cmsFormatterInput) return _cmsGetStockInputFormatter(Type, dwFlags); else return _cmsGetStockOutputFormatter(Type, dwFlags); } // Return whatever given formatter refers to float values cmsBool _cmsFormatterIsFloat(cmsUInt32Number Type) { return T_FLOAT(Type) ? TRUE : FALSE; } // Return whatever given formatter refers to 8 bits cmsBool _cmsFormatterIs8bit(cmsUInt32Number Type) { int Bytes = T_BYTES(Type); return (Bytes == 1); } // Build a suitable formatter for the colorspace of this profile cmsUInt32Number CMSEXPORT cmsFormatterForColorspaceOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat) { cmsColorSpaceSignature ColorSpace = cmsGetColorSpace(hProfile); cmsUInt32Number ColorSpaceBits = _cmsLCMScolorSpace(ColorSpace); cmsUInt32Number nOutputChans = cmsChannelsOf(ColorSpace); cmsUInt32Number Float = lIsFloat ? 1 : 0; // Create a fake formatter for result return FLOAT_SH(Float) | COLORSPACE_SH(ColorSpaceBits) | BYTES_SH(nBytes) | CHANNELS_SH(nOutputChans); } // Build a suitable formatter for the colorspace of this profile cmsUInt32Number CMSEXPORT cmsFormatterForPCSOfProfile(cmsHPROFILE hProfile, cmsUInt32Number nBytes, cmsBool lIsFloat) { cmsColorSpaceSignature ColorSpace = cmsGetPCS(hProfile); int ColorSpaceBits = _cmsLCMScolorSpace(ColorSpace); cmsUInt32Number nOutputChans = cmsChannelsOf(ColorSpace); cmsUInt32Number Float = lIsFloat ? 1 : 0; // Create a fake formatter for result return FLOAT_SH(Float) | COLORSPACE_SH(ColorSpaceBits) | BYTES_SH(nBytes) | CHANNELS_SH(nOutputChans); } lcms2-2.5/src/cmscam02.c0000644002406300000240000003306612163060730014273 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // CIECAM 02 appearance model. Many thanks to Jordi Vilar for the debugging. // ---------- Implementation -------------------------------------------- typedef struct { cmsFloat64Number XYZ[3]; cmsFloat64Number RGB[3]; cmsFloat64Number RGBc[3]; cmsFloat64Number RGBp[3]; cmsFloat64Number RGBpa[3]; cmsFloat64Number a, b, h, e, H, A, J, Q, s, t, C, M; cmsFloat64Number abC[2]; cmsFloat64Number abs[2]; cmsFloat64Number abM[2]; } CAM02COLOR; typedef struct { CAM02COLOR adoptedWhite; cmsFloat64Number LA, Yb; cmsFloat64Number F, c, Nc; cmsUInt32Number surround; cmsFloat64Number n, Nbb, Ncb, z, FL, D; cmsContext ContextID; } cmsCIECAM02; static cmsFloat64Number compute_n(cmsCIECAM02* pMod) { return (pMod -> Yb / pMod -> adoptedWhite.XYZ[1]); } static cmsFloat64Number compute_z(cmsCIECAM02* pMod) { return (1.48 + pow(pMod -> n, 0.5)); } static cmsFloat64Number computeNbb(cmsCIECAM02* pMod) { return (0.725 * pow((1.0 / pMod -> n), 0.2)); } static cmsFloat64Number computeFL(cmsCIECAM02* pMod) { cmsFloat64Number k, FL; k = 1.0 / ((5.0 * pMod->LA) + 1.0); FL = 0.2 * pow(k, 4.0) * (5.0 * pMod->LA) + 0.1 * (pow((1.0 - pow(k, 4.0)), 2.0)) * (pow((5.0 * pMod->LA), (1.0 / 3.0))); return FL; } static cmsFloat64Number computeD(cmsCIECAM02* pMod) { cmsFloat64Number D; D = pMod->F - (1.0/3.6)*(exp(((-pMod ->LA-42) / 92.0))); return D; } static CAM02COLOR XYZtoCAT02(CAM02COLOR clr) { clr.RGB[0] = (clr.XYZ[0] * 0.7328) + (clr.XYZ[1] * 0.4296) + (clr.XYZ[2] * -0.1624); clr.RGB[1] = (clr.XYZ[0] * -0.7036) + (clr.XYZ[1] * 1.6975) + (clr.XYZ[2] * 0.0061); clr.RGB[2] = (clr.XYZ[0] * 0.0030) + (clr.XYZ[1] * 0.0136) + (clr.XYZ[2] * 0.9834); return clr; } static CAM02COLOR ChromaticAdaptation(CAM02COLOR clr, cmsCIECAM02* pMod) { cmsUInt32Number i; for (i = 0; i < 3; i++) { clr.RGBc[i] = ((pMod -> adoptedWhite.XYZ[1] * (pMod->D / pMod -> adoptedWhite.RGB[i])) + (1.0 - pMod->D)) * clr.RGB[i]; } return clr; } static CAM02COLOR CAT02toHPE(CAM02COLOR clr) { cmsFloat64Number M[9]; M[0] =(( 0.38971 * 1.096124) + (0.68898 * 0.454369) + (-0.07868 * -0.009628)); M[1] =(( 0.38971 * -0.278869) + (0.68898 * 0.473533) + (-0.07868 * -0.005698)); M[2] =(( 0.38971 * 0.182745) + (0.68898 * 0.072098) + (-0.07868 * 1.015326)); M[3] =((-0.22981 * 1.096124) + (1.18340 * 0.454369) + ( 0.04641 * -0.009628)); M[4] =((-0.22981 * -0.278869) + (1.18340 * 0.473533) + ( 0.04641 * -0.005698)); M[5] =((-0.22981 * 0.182745) + (1.18340 * 0.072098) + ( 0.04641 * 1.015326)); M[6] =(-0.009628); M[7] =(-0.005698); M[8] =( 1.015326); clr.RGBp[0] = (clr.RGBc[0] * M[0]) + (clr.RGBc[1] * M[1]) + (clr.RGBc[2] * M[2]); clr.RGBp[1] = (clr.RGBc[0] * M[3]) + (clr.RGBc[1] * M[4]) + (clr.RGBc[2] * M[5]); clr.RGBp[2] = (clr.RGBc[0] * M[6]) + (clr.RGBc[1] * M[7]) + (clr.RGBc[2] * M[8]); return clr; } static CAM02COLOR NonlinearCompression(CAM02COLOR clr, cmsCIECAM02* pMod) { cmsUInt32Number i; cmsFloat64Number temp; for (i = 0; i < 3; i++) { if (clr.RGBp[i] < 0) { temp = pow((-1.0 * pMod->FL * clr.RGBp[i] / 100.0), 0.42); clr.RGBpa[i] = (-1.0 * 400.0 * temp) / (temp + 27.13) + 0.1; } else { temp = pow((pMod->FL * clr.RGBp[i] / 100.0), 0.42); clr.RGBpa[i] = (400.0 * temp) / (temp + 27.13) + 0.1; } } clr.A = (((2.0 * clr.RGBpa[0]) + clr.RGBpa[1] + (clr.RGBpa[2] / 20.0)) - 0.305) * pMod->Nbb; return clr; } static CAM02COLOR ComputeCorrelates(CAM02COLOR clr, cmsCIECAM02* pMod) { cmsFloat64Number a, b, temp, e, t, r2d, d2r; a = clr.RGBpa[0] - (12.0 * clr.RGBpa[1] / 11.0) + (clr.RGBpa[2] / 11.0); b = (clr.RGBpa[0] + clr.RGBpa[1] - (2.0 * clr.RGBpa[2])) / 9.0; r2d = (180.0 / 3.141592654); if (a == 0) { if (b == 0) clr.h = 0; else if (b > 0) clr.h = 90; else clr.h = 270; } else if (a > 0) { temp = b / a; if (b > 0) clr.h = (r2d * atan(temp)); else if (b == 0) clr.h = 0; else clr.h = (r2d * atan(temp)) + 360; } else { temp = b / a; clr.h = (r2d * atan(temp)) + 180; } d2r = (3.141592654 / 180.0); e = ((12500.0 / 13.0) * pMod->Nc * pMod->Ncb) * (cos((clr.h * d2r + 2.0)) + 3.8); if (clr.h < 20.14) { temp = ((clr.h + 122.47)/1.2) + ((20.14 - clr.h)/0.8); clr.H = 300 + (100*((clr.h + 122.47)/1.2)) / temp; } else if (clr.h < 90.0) { temp = ((clr.h - 20.14)/0.8) + ((90.00 - clr.h)/0.7); clr.H = (100*((clr.h - 20.14)/0.8)) / temp; } else if (clr.h < 164.25) { temp = ((clr.h - 90.00)/0.7) + ((164.25 - clr.h)/1.0); clr.H = 100 + ((100*((clr.h - 90.00)/0.7)) / temp); } else if (clr.h < 237.53) { temp = ((clr.h - 164.25)/1.0) + ((237.53 - clr.h)/1.2); clr.H = 200 + ((100*((clr.h - 164.25)/1.0)) / temp); } else { temp = ((clr.h - 237.53)/1.2) + ((360 - clr.h + 20.14)/0.8); clr.H = 300 + ((100*((clr.h - 237.53)/1.2)) / temp); } clr.J = 100.0 * pow((clr.A / pMod->adoptedWhite.A), (pMod->c * pMod->z)); clr.Q = (4.0 / pMod->c) * pow((clr.J / 100.0), 0.5) * (pMod->adoptedWhite.A + 4.0) * pow(pMod->FL, 0.25); t = (e * pow(((a * a) + (b * b)), 0.5)) / (clr.RGBpa[0] + clr.RGBpa[1] + ((21.0 / 20.0) * clr.RGBpa[2])); clr.C = pow(t, 0.9) * pow((clr.J / 100.0), 0.5) * pow((1.64 - pow(0.29, pMod->n)), 0.73); clr.M = clr.C * pow(pMod->FL, 0.25); clr.s = 100.0 * pow((clr.M / clr.Q), 0.5); return clr; } static CAM02COLOR InverseCorrelates(CAM02COLOR clr, cmsCIECAM02* pMod) { cmsFloat64Number t, e, p1, p2, p3, p4, p5, hr, d2r; d2r = 3.141592654 / 180.0; t = pow( (clr.C / (pow((clr.J / 100.0), 0.5) * (pow((1.64 - pow(0.29, pMod->n)), 0.73)))), (1.0 / 0.9) ); e = ((12500.0 / 13.0) * pMod->Nc * pMod->Ncb) * (cos((clr.h * d2r + 2.0)) + 3.8); clr.A = pMod->adoptedWhite.A * pow( (clr.J / 100.0), (1.0 / (pMod->c * pMod->z))); p1 = e / t; p2 = (clr.A / pMod->Nbb) + 0.305; p3 = 21.0 / 20.0; hr = clr.h * d2r; if (fabs(sin(hr)) >= fabs(cos(hr))) { p4 = p1 / sin(hr); clr.b = (p2 * (2.0 + p3) * (460.0 / 1403.0)) / (p4 + (2.0 + p3) * (220.0 / 1403.0) * (cos(hr) / sin(hr)) - (27.0 / 1403.0) + p3 * (6300.0 / 1403.0)); clr.a = clr.b * (cos(hr) / sin(hr)); } else { p5 = p1 / cos(hr); clr.a = (p2 * (2.0 + p3) * (460.0 / 1403.0)) / (p5 + (2.0 + p3) * (220.0 / 1403.0) - ((27.0 / 1403.0) - p3 * (6300.0 / 1403.0)) * (sin(hr) / cos(hr))); clr.b = clr.a * (sin(hr) / cos(hr)); } clr.RGBpa[0] = ((460.0 / 1403.0) * p2) + ((451.0 / 1403.0) * clr.a) + ((288.0 / 1403.0) * clr.b); clr.RGBpa[1] = ((460.0 / 1403.0) * p2) - ((891.0 / 1403.0) * clr.a) - ((261.0 / 1403.0) * clr.b); clr.RGBpa[2] = ((460.0 / 1403.0) * p2) - ((220.0 / 1403.0) * clr.a) - ((6300.0 / 1403.0) * clr.b); return clr; } static CAM02COLOR InverseNonlinearity(CAM02COLOR clr, cmsCIECAM02* pMod) { cmsUInt32Number i; cmsFloat64Number c1; for (i = 0; i < 3; i++) { if ((clr.RGBpa[i] - 0.1) < 0) c1 = -1; else c1 = 1; clr.RGBp[i] = c1 * (100.0 / pMod->FL) * pow(((27.13 * fabs(clr.RGBpa[i] - 0.1)) / (400.0 - fabs(clr.RGBpa[i] - 0.1))), (1.0 / 0.42)); } return clr; } static CAM02COLOR HPEtoCAT02(CAM02COLOR clr) { cmsFloat64Number M[9]; M[0] = (( 0.7328 * 1.910197) + (0.4296 * 0.370950)); M[1] = (( 0.7328 * -1.112124) + (0.4296 * 0.629054)); M[2] = (( 0.7328 * 0.201908) + (0.4296 * 0.000008) - 0.1624); M[3] = ((-0.7036 * 1.910197) + (1.6975 * 0.370950)); M[4] = ((-0.7036 * -1.112124) + (1.6975 * 0.629054)); M[5] = ((-0.7036 * 0.201908) + (1.6975 * 0.000008) + 0.0061); M[6] = (( 0.0030 * 1.910197) + (0.0136 * 0.370950)); M[7] = (( 0.0030 * -1.112124) + (0.0136 * 0.629054)); M[8] = (( 0.0030 * 0.201908) + (0.0136 * 0.000008) + 0.9834);; clr.RGBc[0] = (clr.RGBp[0] * M[0]) + (clr.RGBp[1] * M[1]) + (clr.RGBp[2] * M[2]); clr.RGBc[1] = (clr.RGBp[0] * M[3]) + (clr.RGBp[1] * M[4]) + (clr.RGBp[2] * M[5]); clr.RGBc[2] = (clr.RGBp[0] * M[6]) + (clr.RGBp[1] * M[7]) + (clr.RGBp[2] * M[8]); return clr; } static CAM02COLOR InverseChromaticAdaptation(CAM02COLOR clr, cmsCIECAM02* pMod) { cmsUInt32Number i; for (i = 0; i < 3; i++) { clr.RGB[i] = clr.RGBc[i] / ((pMod->adoptedWhite.XYZ[1] * pMod->D / pMod->adoptedWhite.RGB[i]) + 1.0 - pMod->D); } return clr; } static CAM02COLOR CAT02toXYZ(CAM02COLOR clr) { clr.XYZ[0] = (clr.RGB[0] * 1.096124) + (clr.RGB[1] * -0.278869) + (clr.RGB[2] * 0.182745); clr.XYZ[1] = (clr.RGB[0] * 0.454369) + (clr.RGB[1] * 0.473533) + (clr.RGB[2] * 0.072098); clr.XYZ[2] = (clr.RGB[0] * -0.009628) + (clr.RGB[1] * -0.005698) + (clr.RGB[2] * 1.015326); return clr; } cmsHANDLE CMSEXPORT cmsCIECAM02Init(cmsContext ContextID, const cmsViewingConditions* pVC) { cmsCIECAM02* lpMod; _cmsAssert(pVC != NULL); if((lpMod = (cmsCIECAM02*) _cmsMallocZero(ContextID, sizeof(cmsCIECAM02))) == NULL) { return NULL; } lpMod ->ContextID = ContextID; lpMod ->adoptedWhite.XYZ[0] = pVC ->whitePoint.X; lpMod ->adoptedWhite.XYZ[1] = pVC ->whitePoint.Y; lpMod ->adoptedWhite.XYZ[2] = pVC ->whitePoint.Z; lpMod -> LA = pVC ->La; lpMod -> Yb = pVC ->Yb; lpMod -> D = pVC ->D_value; lpMod -> surround = pVC ->surround; switch (lpMod -> surround) { case CUTSHEET_SURROUND: lpMod->F = 0.8; lpMod->c = 0.41; lpMod->Nc = 0.8; break; case DARK_SURROUND: lpMod -> F = 0.8; lpMod -> c = 0.525; lpMod -> Nc = 0.8; break; case DIM_SURROUND: lpMod -> F = 0.9; lpMod -> c = 0.59; lpMod -> Nc = 0.95; break; default: // Average surround lpMod -> F = 1.0; lpMod -> c = 0.69; lpMod -> Nc = 1.0; } lpMod -> n = compute_n(lpMod); lpMod -> z = compute_z(lpMod); lpMod -> Nbb = computeNbb(lpMod); lpMod -> FL = computeFL(lpMod); if (lpMod -> D == D_CALCULATE) { lpMod -> D = computeD(lpMod); } lpMod -> Ncb = lpMod -> Nbb; lpMod -> adoptedWhite = XYZtoCAT02(lpMod -> adoptedWhite); lpMod -> adoptedWhite = ChromaticAdaptation(lpMod -> adoptedWhite, lpMod); lpMod -> adoptedWhite = CAT02toHPE(lpMod -> adoptedWhite); lpMod -> adoptedWhite = NonlinearCompression(lpMod -> adoptedWhite, lpMod); return (cmsHANDLE) lpMod; } void CMSEXPORT cmsCIECAM02Done(cmsHANDLE hModel) { cmsCIECAM02* lpMod = (cmsCIECAM02*) hModel; if (lpMod) _cmsFree(lpMod ->ContextID, lpMod); } void CMSEXPORT cmsCIECAM02Forward(cmsHANDLE hModel, const cmsCIEXYZ* pIn, cmsJCh* pOut) { CAM02COLOR clr; cmsCIECAM02* lpMod = (cmsCIECAM02*) hModel; _cmsAssert(lpMod != NULL); _cmsAssert(pIn != NULL); _cmsAssert(pOut != NULL); clr.XYZ[0] = pIn ->X; clr.XYZ[1] = pIn ->Y; clr.XYZ[2] = pIn ->Z; clr = XYZtoCAT02(clr); clr = ChromaticAdaptation(clr, lpMod); clr = CAT02toHPE(clr); clr = NonlinearCompression(clr, lpMod); clr = ComputeCorrelates(clr, lpMod); pOut ->J = clr.J; pOut ->C = clr.C; pOut ->h = clr.h; } void CMSEXPORT cmsCIECAM02Reverse(cmsHANDLE hModel, const cmsJCh* pIn, cmsCIEXYZ* pOut) { CAM02COLOR clr; cmsCIECAM02* lpMod = (cmsCIECAM02*) hModel; _cmsAssert(lpMod != NULL); _cmsAssert(pIn != NULL); _cmsAssert(pOut != NULL); clr.J = pIn -> J; clr.C = pIn -> C; clr.h = pIn -> h; clr = InverseCorrelates(clr, lpMod); clr = InverseNonlinearity(clr, lpMod); clr = HPEtoCAT02(clr); clr = InverseChromaticAdaptation(clr, lpMod); clr = CAT02toXYZ(clr); pOut ->X = clr.XYZ[0]; pOut ->Y = clr.XYZ[1]; pOut ->Z = clr.XYZ[2]; } lcms2-2.5/src/Makefile.am0000644002406300000240000000160412163060730014547 0ustar mariamausers# # Makefile for building lcms 2 library # # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign # CFLAGS = -pedantic -Wall -std=c99 -O3 includedir = ${prefix}/include # Shared libraries built in this directory lib_LTLIBRARIES = liblcms2.la LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBRARY_AGE = @LIBRARY_AGE@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include liblcms2_la_LDFLAGS = -no-undefined \ -version-info $(LIBRARY_CURRENT):$(LIBRARY_REVISION):$(LIBRARY_AGE) liblcms2_la_LIBADD = $(LCMS_LIB_DEPLIBS) liblcms2_la_SOURCES = \ cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio0.c cmsio1.c cmslut.c \ cmsplugin.c cmssm.c cmsmd5.c cmsmtrx.c cmspack.c cmspcs.c cmswtpnt.c cmsxform.c \ cmssamp.c cmsnamed.c cmscam02.c cmsvirt.c cmstypes.c cmscgats.c cmsps2.c cmsopt.c \ cmshalf.c lcms2_internal.h lcms2-2.5/src/cmsio0.c0000644002406300000240000015053712163060730014063 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Generic I/O, tag dictionary management, profile struct // IOhandlers are abstractions used by littleCMS to read from whatever file, stream, // memory block or any storage. Each IOhandler provides implementations for read, // write, seek and tell functions. LittleCMS code deals with IO across those objects. // In this way, is easier to add support for new storage media. // NULL stream, for taking care of used space ------------------------------------- // NULL IOhandler basically does nothing but keep track on how many bytes have been // written. This is handy when creating profiles, where the file size is needed in the // header. Then, whole profile is serialized across NULL IOhandler and a second pass // writes the bytes to the pertinent IOhandler. typedef struct { cmsUInt32Number Pointer; // Points to current location } FILENULL; static cmsUInt32Number NULLRead(cmsIOHANDLER* iohandler, void *Buffer, cmsUInt32Number size, cmsUInt32Number count) { FILENULL* ResData = (FILENULL*) iohandler ->stream; cmsUInt32Number len = size * count; ResData -> Pointer += len; return count; cmsUNUSED_PARAMETER(Buffer); } static cmsBool NULLSeek(cmsIOHANDLER* iohandler, cmsUInt32Number offset) { FILENULL* ResData = (FILENULL*) iohandler ->stream; ResData ->Pointer = offset; return TRUE; } static cmsUInt32Number NULLTell(cmsIOHANDLER* iohandler) { FILENULL* ResData = (FILENULL*) iohandler ->stream; return ResData -> Pointer; } static cmsBool NULLWrite(cmsIOHANDLER* iohandler, cmsUInt32Number size, const void *Ptr) { FILENULL* ResData = (FILENULL*) iohandler ->stream; ResData ->Pointer += size; if (ResData ->Pointer > iohandler->UsedSpace) iohandler->UsedSpace = ResData ->Pointer; return TRUE; cmsUNUSED_PARAMETER(Ptr); } static cmsBool NULLClose(cmsIOHANDLER* iohandler) { FILENULL* ResData = (FILENULL*) iohandler ->stream; _cmsFree(iohandler ->ContextID, ResData); _cmsFree(iohandler ->ContextID, iohandler); return TRUE; } // The NULL IOhandler creator cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromNULL(cmsContext ContextID) { struct _cms_io_handler* iohandler = NULL; FILENULL* fm = NULL; iohandler = (struct _cms_io_handler*) _cmsMallocZero(ContextID, sizeof(struct _cms_io_handler)); if (iohandler == NULL) return NULL; fm = (FILENULL*) _cmsMallocZero(ContextID, sizeof(FILENULL)); if (fm == NULL) goto Error; fm ->Pointer = 0; iohandler ->ContextID = ContextID; iohandler ->stream = (void*) fm; iohandler ->UsedSpace = 0; iohandler ->ReportedSize = 0; iohandler ->PhysicalFile[0] = 0; iohandler ->Read = NULLRead; iohandler ->Seek = NULLSeek; iohandler ->Close = NULLClose; iohandler ->Tell = NULLTell; iohandler ->Write = NULLWrite; return iohandler; Error: if (iohandler) _cmsFree(ContextID, iohandler); return NULL; } // Memory-based stream -------------------------------------------------------------- // Those functions implements an iohandler which takes a block of memory as storage medium. typedef struct { cmsUInt8Number* Block; // Points to allocated memory cmsUInt32Number Size; // Size of allocated memory cmsUInt32Number Pointer; // Points to current location int FreeBlockOnClose; // As title } FILEMEM; static cmsUInt32Number MemoryRead(struct _cms_io_handler* iohandler, void *Buffer, cmsUInt32Number size, cmsUInt32Number count) { FILEMEM* ResData = (FILEMEM*) iohandler ->stream; cmsUInt8Number* Ptr; cmsUInt32Number len = size * count; if (ResData -> Pointer + len > ResData -> Size){ len = (ResData -> Size - ResData -> Pointer); cmsSignalError(iohandler ->ContextID, cmsERROR_READ, "Read from memory error. Got %d bytes, block should be of %d bytes", len, count * size); return 0; } Ptr = ResData -> Block; Ptr += ResData -> Pointer; memmove(Buffer, Ptr, len); ResData -> Pointer += len; return count; } // SEEK_CUR is assumed static cmsBool MemorySeek(struct _cms_io_handler* iohandler, cmsUInt32Number offset) { FILEMEM* ResData = (FILEMEM*) iohandler ->stream; if (offset > ResData ->Size) { cmsSignalError(iohandler ->ContextID, cmsERROR_SEEK, "Too few data; probably corrupted profile"); return FALSE; } ResData ->Pointer = offset; return TRUE; } // Tell for memory static cmsUInt32Number MemoryTell(struct _cms_io_handler* iohandler) { FILEMEM* ResData = (FILEMEM*) iohandler ->stream; if (ResData == NULL) return 0; return ResData -> Pointer; } // Writes data to memory, also keeps used space for further reference. static cmsBool MemoryWrite(struct _cms_io_handler* iohandler, cmsUInt32Number size, const void *Ptr) { FILEMEM* ResData = (FILEMEM*) iohandler ->stream; if (ResData == NULL) return FALSE; // Housekeeping // Check for available space. Clip. if (iohandler ->UsedSpace + size > ResData->Size) { size = ResData ->Size - iohandler ->UsedSpace; } if (size == 0) return TRUE; // Write zero bytes is ok, but does nothing memmove(ResData ->Block + ResData ->Pointer, Ptr, size); ResData ->Pointer += size; iohandler->UsedSpace += size; if (ResData ->Pointer > iohandler->UsedSpace) iohandler->UsedSpace = ResData ->Pointer; return TRUE; } static cmsBool MemoryClose(struct _cms_io_handler* iohandler) { FILEMEM* ResData = (FILEMEM*) iohandler ->stream; if (ResData ->FreeBlockOnClose) { if (ResData ->Block) _cmsFree(iohandler ->ContextID, ResData ->Block); } _cmsFree(iohandler ->ContextID, ResData); _cmsFree(iohandler ->ContextID, iohandler); return TRUE; } // Create a iohandler for memory block. AccessMode=='r' assumes the iohandler is going to read, and makes // a copy of the memory block for letting user to free the memory after invoking open profile. In write // mode ("w"), Buffere points to the begin of memory block to be written. cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromMem(cmsContext ContextID, void *Buffer, cmsUInt32Number size, const char* AccessMode) { cmsIOHANDLER* iohandler = NULL; FILEMEM* fm = NULL; _cmsAssert(AccessMode != NULL); iohandler = (cmsIOHANDLER*) _cmsMallocZero(ContextID, sizeof(cmsIOHANDLER)); if (iohandler == NULL) return NULL; switch (*AccessMode) { case 'r': fm = (FILEMEM*) _cmsMallocZero(ContextID, sizeof(FILEMEM)); if (fm == NULL) goto Error; if (Buffer == NULL) { cmsSignalError(ContextID, cmsERROR_READ, "Couldn't read profile from NULL pointer"); goto Error; } fm ->Block = (cmsUInt8Number*) _cmsMalloc(ContextID, size); if (fm ->Block == NULL) { _cmsFree(ContextID, fm); _cmsFree(ContextID, iohandler); cmsSignalError(ContextID, cmsERROR_READ, "Couldn't allocate %ld bytes for profile", size); return NULL; } memmove(fm->Block, Buffer, size); fm ->FreeBlockOnClose = TRUE; fm ->Size = size; fm ->Pointer = 0; iohandler -> ReportedSize = size; break; case 'w': fm = (FILEMEM*) _cmsMallocZero(ContextID, sizeof(FILEMEM)); if (fm == NULL) goto Error; fm ->Block = (cmsUInt8Number*) Buffer; fm ->FreeBlockOnClose = FALSE; fm ->Size = size; fm ->Pointer = 0; iohandler -> ReportedSize = 0; break; default: cmsSignalError(ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unknown access mode '%c'", *AccessMode); return NULL; } iohandler ->ContextID = ContextID; iohandler ->stream = (void*) fm; iohandler ->UsedSpace = 0; iohandler ->PhysicalFile[0] = 0; iohandler ->Read = MemoryRead; iohandler ->Seek = MemorySeek; iohandler ->Close = MemoryClose; iohandler ->Tell = MemoryTell; iohandler ->Write = MemoryWrite; return iohandler; Error: if (fm) _cmsFree(ContextID, fm); if (iohandler) _cmsFree(ContextID, iohandler); return NULL; } // File-based stream ------------------------------------------------------- // Read count elements of size bytes each. Return number of elements read static cmsUInt32Number FileRead(cmsIOHANDLER* iohandler, void *Buffer, cmsUInt32Number size, cmsUInt32Number count) { cmsUInt32Number nReaded = (cmsUInt32Number) fread(Buffer, size, count, (FILE*) iohandler->stream); if (nReaded != count) { cmsSignalError(iohandler ->ContextID, cmsERROR_FILE, "Read error. Got %d bytes, block should be of %d bytes", nReaded * size, count * size); return 0; } return nReaded; } // Postion file pointer in the file static cmsBool FileSeek(cmsIOHANDLER* iohandler, cmsUInt32Number offset) { if (fseek((FILE*) iohandler ->stream, (long) offset, SEEK_SET) != 0) { cmsSignalError(iohandler ->ContextID, cmsERROR_FILE, "Seek error; probably corrupted file"); return FALSE; } return TRUE; } // Returns file pointer position static cmsUInt32Number FileTell(cmsIOHANDLER* iohandler) { return ftell((FILE*)iohandler ->stream); } // Writes data to stream, also keeps used space for further reference. Returns TRUE on success, FALSE on error static cmsBool FileWrite(cmsIOHANDLER* iohandler, cmsUInt32Number size, const void* Buffer) { if (size == 0) return TRUE; // We allow to write 0 bytes, but nothing is written iohandler->UsedSpace += size; return (fwrite(Buffer, size, 1, (FILE*) iohandler->stream) == 1); } // Closes the file static cmsBool FileClose(cmsIOHANDLER* iohandler) { if (fclose((FILE*) iohandler ->stream) != 0) return FALSE; _cmsFree(iohandler ->ContextID, iohandler); return TRUE; } // Create a iohandler for disk based files. cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromFile(cmsContext ContextID, const char* FileName, const char* AccessMode) { cmsIOHANDLER* iohandler = NULL; FILE* fm = NULL; _cmsAssert(FileName != NULL); _cmsAssert(AccessMode != NULL); iohandler = (cmsIOHANDLER*) _cmsMallocZero(ContextID, sizeof(cmsIOHANDLER)); if (iohandler == NULL) return NULL; switch (*AccessMode) { case 'r': fm = fopen(FileName, "rb"); if (fm == NULL) { _cmsFree(ContextID, iohandler); cmsSignalError(ContextID, cmsERROR_FILE, "File '%s' not found", FileName); return NULL; } iohandler -> ReportedSize = cmsfilelength(fm); break; case 'w': fm = fopen(FileName, "wb"); if (fm == NULL) { _cmsFree(ContextID, iohandler); cmsSignalError(ContextID, cmsERROR_FILE, "Couldn't create '%s'", FileName); return NULL; } iohandler -> ReportedSize = 0; break; default: _cmsFree(ContextID, iohandler); cmsSignalError(ContextID, cmsERROR_FILE, "Unknown access mode '%c'", *AccessMode); return NULL; } iohandler ->ContextID = ContextID; iohandler ->stream = (void*) fm; iohandler ->UsedSpace = 0; // Keep track of the original file strncpy(iohandler -> PhysicalFile, FileName, sizeof(iohandler -> PhysicalFile)-1); iohandler -> PhysicalFile[sizeof(iohandler -> PhysicalFile)-1] = 0; iohandler ->Read = FileRead; iohandler ->Seek = FileSeek; iohandler ->Close = FileClose; iohandler ->Tell = FileTell; iohandler ->Write = FileWrite; return iohandler; } // Create a iohandler for stream based files cmsIOHANDLER* CMSEXPORT cmsOpenIOhandlerFromStream(cmsContext ContextID, FILE* Stream) { cmsIOHANDLER* iohandler = NULL; iohandler = (cmsIOHANDLER*) _cmsMallocZero(ContextID, sizeof(cmsIOHANDLER)); if (iohandler == NULL) return NULL; iohandler -> ContextID = ContextID; iohandler -> stream = (void*) Stream; iohandler -> UsedSpace = 0; iohandler -> ReportedSize = cmsfilelength(Stream); iohandler -> PhysicalFile[0] = 0; iohandler ->Read = FileRead; iohandler ->Seek = FileSeek; iohandler ->Close = FileClose; iohandler ->Tell = FileTell; iohandler ->Write = FileWrite; return iohandler; } // Close an open IO handler cmsBool CMSEXPORT cmsCloseIOhandler(cmsIOHANDLER* io) { return io -> Close(io); } // ------------------------------------------------------------------------------------------------------- // Creates an empty structure holding all required parameters cmsHPROFILE CMSEXPORT cmsCreateProfilePlaceholder(cmsContext ContextID) { time_t now = time(NULL); _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) _cmsMallocZero(ContextID, sizeof(_cmsICCPROFILE)); if (Icc == NULL) return NULL; Icc ->ContextID = ContextID; // Set it to empty Icc -> TagCount = 0; // Set default version Icc ->Version = 0x02100000; // Set creation date/time memmove(&Icc ->Created, gmtime(&now), sizeof(Icc ->Created)); // Return the handle return (cmsHPROFILE) Icc; } cmsContext CMSEXPORT cmsGetProfileContextID(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; if (Icc == NULL) return NULL; return Icc -> ContextID; } // Return the number of tags cmsInt32Number CMSEXPORT cmsGetTagCount(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; if (Icc == NULL) return -1; return Icc->TagCount; } // Return the tag signature of a given tag number cmsTagSignature CMSEXPORT cmsGetTagSignature(cmsHPROFILE hProfile, cmsUInt32Number n) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; if (n > Icc->TagCount) return (cmsTagSignature) 0; // Mark as not available if (n >= MAX_TABLE_TAG) return (cmsTagSignature) 0; // As double check return Icc ->TagNames[n]; } static int SearchOneTag(_cmsICCPROFILE* Profile, cmsTagSignature sig) { cmsUInt32Number i; for (i=0; i < Profile -> TagCount; i++) { if (sig == Profile -> TagNames[i]) return i; } return -1; } // Search for a specific tag in tag dictionary. Returns position or -1 if tag not found. // If followlinks is turned on, then the position of the linked tag is returned int _cmsSearchTag(_cmsICCPROFILE* Icc, cmsTagSignature sig, cmsBool lFollowLinks) { int n; cmsTagSignature LinkedSig; do { // Search for given tag in ICC profile directory n = SearchOneTag(Icc, sig); if (n < 0) return -1; // Not found if (!lFollowLinks) return n; // Found, don't follow links // Is this a linked tag? LinkedSig = Icc ->TagLinked[n]; // Yes, follow link if (LinkedSig != (cmsTagSignature) 0) { sig = LinkedSig; } } while (LinkedSig != (cmsTagSignature) 0); return n; } // Create a new tag entry static cmsBool _cmsNewTag(_cmsICCPROFILE* Icc, cmsTagSignature sig, int* NewPos) { int i; // Search for the tag i = _cmsSearchTag(Icc, sig, FALSE); // Now let's do it easy. If the tag has been already written, that's an error if (i >= 0) { cmsSignalError(Icc ->ContextID, cmsERROR_ALREADY_DEFINED, "Tag '%x' already exists", sig); return FALSE; } else { // New one if (Icc -> TagCount >= MAX_TABLE_TAG) { cmsSignalError(Icc ->ContextID, cmsERROR_RANGE, "Too many tags (%d)", MAX_TABLE_TAG); return FALSE; } *NewPos = Icc ->TagCount; Icc -> TagCount++; } return TRUE; } // Check existance cmsBool CMSEXPORT cmsIsTag(cmsHPROFILE hProfile, cmsTagSignature sig) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) (void*) hProfile; return _cmsSearchTag(Icc, sig, FALSE) >= 0; } // Read profile header and validate it cmsBool _cmsReadHeader(_cmsICCPROFILE* Icc) { cmsTagEntry Tag; cmsICCHeader Header; cmsUInt32Number i, j; cmsUInt32Number HeaderSize; cmsIOHANDLER* io = Icc ->IOhandler; cmsUInt32Number TagCount; // Read the header if (io -> Read(io, &Header, sizeof(cmsICCHeader), 1) != 1) { return FALSE; } // Validate file as an ICC profile if (_cmsAdjustEndianess32(Header.magic) != cmsMagicNumber) { cmsSignalError(Icc ->ContextID, cmsERROR_BAD_SIGNATURE, "not an ICC profile, invalid signature"); return FALSE; } // Adjust endianess of the used parameters Icc -> DeviceClass = (cmsProfileClassSignature) _cmsAdjustEndianess32(Header.deviceClass); Icc -> ColorSpace = (cmsColorSpaceSignature) _cmsAdjustEndianess32(Header.colorSpace); Icc -> PCS = (cmsColorSpaceSignature) _cmsAdjustEndianess32(Header.pcs); Icc -> RenderingIntent = _cmsAdjustEndianess32(Header.renderingIntent); Icc -> flags = _cmsAdjustEndianess32(Header.flags); Icc -> manufacturer = _cmsAdjustEndianess32(Header.manufacturer); Icc -> model = _cmsAdjustEndianess32(Header.model); Icc -> creator = _cmsAdjustEndianess32(Header.creator); _cmsAdjustEndianess64(&Icc -> attributes, &Header.attributes); Icc -> Version = _cmsAdjustEndianess32(Header.version); // Get size as reported in header HeaderSize = _cmsAdjustEndianess32(Header.size); // Make sure HeaderSize is lower than profile size if (HeaderSize >= Icc ->IOhandler ->ReportedSize) HeaderSize = Icc ->IOhandler ->ReportedSize; // Get creation date/time _cmsDecodeDateTimeNumber(&Header.date, &Icc ->Created); // The profile ID are 32 raw bytes memmove(Icc ->ProfileID.ID32, Header.profileID.ID32, 16); // Read tag directory if (!_cmsReadUInt32Number(io, &TagCount)) return FALSE; if (TagCount > MAX_TABLE_TAG) { cmsSignalError(Icc ->ContextID, cmsERROR_RANGE, "Too many tags (%d)", TagCount); return FALSE; } // Read tag directory Icc -> TagCount = 0; for (i=0; i < TagCount; i++) { if (!_cmsReadUInt32Number(io, (cmsUInt32Number *) &Tag.sig)) return FALSE; if (!_cmsReadUInt32Number(io, &Tag.offset)) return FALSE; if (!_cmsReadUInt32Number(io, &Tag.size)) return FALSE; // Perform some sanity check. Offset + size should fall inside file. if (Tag.offset + Tag.size > HeaderSize || Tag.offset + Tag.size < Tag.offset) continue; Icc -> TagNames[Icc ->TagCount] = Tag.sig; Icc -> TagOffsets[Icc ->TagCount] = Tag.offset; Icc -> TagSizes[Icc ->TagCount] = Tag.size; // Search for links for (j=0; j < Icc ->TagCount; j++) { if ((Icc ->TagOffsets[j] == Tag.offset) && (Icc ->TagSizes[j] == Tag.size)) { Icc ->TagLinked[Icc ->TagCount] = Icc ->TagNames[j]; } } Icc ->TagCount++; } return TRUE; } // Saves profile header cmsBool _cmsWriteHeader(_cmsICCPROFILE* Icc, cmsUInt32Number UsedSpace) { cmsICCHeader Header; cmsUInt32Number i; cmsTagEntry Tag; cmsInt32Number Count = 0; Header.size = _cmsAdjustEndianess32(UsedSpace); Header.cmmId = _cmsAdjustEndianess32(lcmsSignature); Header.version = _cmsAdjustEndianess32(Icc ->Version); Header.deviceClass = (cmsProfileClassSignature) _cmsAdjustEndianess32(Icc -> DeviceClass); Header.colorSpace = (cmsColorSpaceSignature) _cmsAdjustEndianess32(Icc -> ColorSpace); Header.pcs = (cmsColorSpaceSignature) _cmsAdjustEndianess32(Icc -> PCS); // NOTE: in v4 Timestamp must be in UTC rather than in local time _cmsEncodeDateTimeNumber(&Header.date, &Icc ->Created); Header.magic = _cmsAdjustEndianess32(cmsMagicNumber); #ifdef CMS_IS_WINDOWS_ Header.platform = (cmsPlatformSignature) _cmsAdjustEndianess32(cmsSigMicrosoft); #else Header.platform = (cmsPlatformSignature) _cmsAdjustEndianess32(cmsSigMacintosh); #endif Header.flags = _cmsAdjustEndianess32(Icc -> flags); Header.manufacturer = _cmsAdjustEndianess32(Icc -> manufacturer); Header.model = _cmsAdjustEndianess32(Icc -> model); _cmsAdjustEndianess64(&Header.attributes, &Icc -> attributes); // Rendering intent in the header (for embedded profiles) Header.renderingIntent = _cmsAdjustEndianess32(Icc -> RenderingIntent); // Illuminant is always D50 Header.illuminant.X = _cmsAdjustEndianess32(_cmsDoubleTo15Fixed16(cmsD50_XYZ()->X)); Header.illuminant.Y = _cmsAdjustEndianess32(_cmsDoubleTo15Fixed16(cmsD50_XYZ()->Y)); Header.illuminant.Z = _cmsAdjustEndianess32(_cmsDoubleTo15Fixed16(cmsD50_XYZ()->Z)); // Created by LittleCMS (that's me!) Header.creator = _cmsAdjustEndianess32(lcmsSignature); memset(&Header.reserved, 0, sizeof(Header.reserved)); // Set profile ID. Endianess is always big endian memmove(&Header.profileID, &Icc ->ProfileID, 16); // Dump the header if (!Icc -> IOhandler->Write(Icc->IOhandler, sizeof(cmsICCHeader), &Header)) return FALSE; // Saves Tag directory // Get true count for (i=0; i < Icc -> TagCount; i++) { if (Icc ->TagNames[i] != 0) Count++; } // Store number of tags if (!_cmsWriteUInt32Number(Icc ->IOhandler, Count)) return FALSE; for (i=0; i < Icc -> TagCount; i++) { if (Icc ->TagNames[i] == 0) continue; // It is just a placeholder Tag.sig = (cmsTagSignature) _cmsAdjustEndianess32((cmsInt32Number) Icc -> TagNames[i]); Tag.offset = _cmsAdjustEndianess32((cmsInt32Number) Icc -> TagOffsets[i]); Tag.size = _cmsAdjustEndianess32((cmsInt32Number) Icc -> TagSizes[i]); if (!Icc ->IOhandler -> Write(Icc-> IOhandler, sizeof(cmsTagEntry), &Tag)) return FALSE; } return TRUE; } // ----------------------------------------------------------------------- Set/Get several struct members cmsUInt32Number CMSEXPORT cmsGetHeaderRenderingIntent(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc -> RenderingIntent; } void CMSEXPORT cmsSetHeaderRenderingIntent(cmsHPROFILE hProfile, cmsUInt32Number RenderingIntent) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> RenderingIntent = RenderingIntent; } cmsUInt32Number CMSEXPORT cmsGetHeaderFlags(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return (cmsUInt32Number) Icc -> flags; } void CMSEXPORT cmsSetHeaderFlags(cmsHPROFILE hProfile, cmsUInt32Number Flags) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> flags = (cmsUInt32Number) Flags; } cmsUInt32Number CMSEXPORT cmsGetHeaderManufacturer(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc ->manufacturer; } void CMSEXPORT cmsSetHeaderManufacturer(cmsHPROFILE hProfile, cmsUInt32Number manufacturer) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> manufacturer = manufacturer; } cmsUInt32Number CMSEXPORT cmsGetHeaderCreator(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc ->creator; } cmsUInt32Number CMSEXPORT cmsGetHeaderModel(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc ->model; } void CMSEXPORT cmsSetHeaderModel(cmsHPROFILE hProfile, cmsUInt32Number model) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> model = model; } void CMSEXPORT cmsGetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number* Flags) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; memmove(Flags, &Icc -> attributes, sizeof(cmsUInt64Number)); } void CMSEXPORT cmsSetHeaderAttributes(cmsHPROFILE hProfile, cmsUInt64Number Flags) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; memmove(&Icc -> attributes, &Flags, sizeof(cmsUInt64Number)); } void CMSEXPORT cmsGetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; memmove(ProfileID, Icc ->ProfileID.ID8, 16); } void CMSEXPORT cmsSetHeaderProfileID(cmsHPROFILE hProfile, cmsUInt8Number* ProfileID) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; memmove(&Icc -> ProfileID, ProfileID, 16); } cmsBool CMSEXPORT cmsGetHeaderCreationDateTime(cmsHPROFILE hProfile, struct tm *Dest) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; memmove(Dest, &Icc ->Created, sizeof(struct tm)); return TRUE; } cmsColorSpaceSignature CMSEXPORT cmsGetPCS(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc -> PCS; } void CMSEXPORT cmsSetPCS(cmsHPROFILE hProfile, cmsColorSpaceSignature pcs) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> PCS = pcs; } cmsColorSpaceSignature CMSEXPORT cmsGetColorSpace(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc -> ColorSpace; } void CMSEXPORT cmsSetColorSpace(cmsHPROFILE hProfile, cmsColorSpaceSignature sig) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> ColorSpace = sig; } cmsProfileClassSignature CMSEXPORT cmsGetDeviceClass(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc -> DeviceClass; } void CMSEXPORT cmsSetDeviceClass(cmsHPROFILE hProfile, cmsProfileClassSignature sig) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> DeviceClass = sig; } cmsUInt32Number CMSEXPORT cmsGetEncodedICCversion(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; return Icc -> Version; } void CMSEXPORT cmsSetEncodedICCversion(cmsHPROFILE hProfile, cmsUInt32Number Version) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; Icc -> Version = Version; } // Get an hexadecimal number with same digits as v static cmsUInt32Number BaseToBase(cmsUInt32Number in, int BaseIn, int BaseOut) { char Buff[100]; int i, len; cmsUInt32Number out; for (len=0; in > 0 && len < 100; len++) { Buff[len] = (char) (in % BaseIn); in /= BaseIn; } for (i=len-1, out=0; i >= 0; --i) { out = out * BaseOut + Buff[i]; } return out; } void CMSEXPORT cmsSetProfileVersion(cmsHPROFILE hProfile, cmsFloat64Number Version) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; // 4.2 -> 0x4200000 Icc -> Version = BaseToBase((cmsUInt32Number) floor(Version * 100.0), 10, 16) << 16; } cmsFloat64Number CMSEXPORT cmsGetProfileVersion(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; cmsUInt32Number n = Icc -> Version >> 16; return BaseToBase(n, 16, 10) / 100.0; } // -------------------------------------------------------------------------------------------------------------- // Create profile from IOhandler cmsHPROFILE CMSEXPORT cmsOpenProfileFromIOhandlerTHR(cmsContext ContextID, cmsIOHANDLER* io) { _cmsICCPROFILE* NewIcc; cmsHPROFILE hEmpty = cmsCreateProfilePlaceholder(ContextID); if (hEmpty == NULL) return NULL; NewIcc = (_cmsICCPROFILE*) hEmpty; NewIcc ->IOhandler = io; if (!_cmsReadHeader(NewIcc)) goto Error; return hEmpty; Error: cmsCloseProfile(hEmpty); return NULL; } // Create profile from disk file cmsHPROFILE CMSEXPORT cmsOpenProfileFromFileTHR(cmsContext ContextID, const char *lpFileName, const char *sAccess) { _cmsICCPROFILE* NewIcc; cmsHPROFILE hEmpty = cmsCreateProfilePlaceholder(ContextID); if (hEmpty == NULL) return NULL; NewIcc = (_cmsICCPROFILE*) hEmpty; NewIcc ->IOhandler = cmsOpenIOhandlerFromFile(ContextID, lpFileName, sAccess); if (NewIcc ->IOhandler == NULL) goto Error; if (*sAccess == 'W' || *sAccess == 'w') { NewIcc -> IsWrite = TRUE; return hEmpty; } if (!_cmsReadHeader(NewIcc)) goto Error; return hEmpty; Error: cmsCloseProfile(hEmpty); return NULL; } cmsHPROFILE CMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess) { return cmsOpenProfileFromFileTHR(NULL, ICCProfile, sAccess); } cmsHPROFILE CMSEXPORT cmsOpenProfileFromStreamTHR(cmsContext ContextID, FILE* ICCProfile, const char *sAccess) { _cmsICCPROFILE* NewIcc; cmsHPROFILE hEmpty = cmsCreateProfilePlaceholder(ContextID); if (hEmpty == NULL) return NULL; NewIcc = (_cmsICCPROFILE*) hEmpty; NewIcc ->IOhandler = cmsOpenIOhandlerFromStream(ContextID, ICCProfile); if (NewIcc ->IOhandler == NULL) goto Error; if (*sAccess == 'w') { NewIcc -> IsWrite = TRUE; return hEmpty; } if (!_cmsReadHeader(NewIcc)) goto Error; return hEmpty; Error: cmsCloseProfile(hEmpty); return NULL; } cmsHPROFILE CMSEXPORT cmsOpenProfileFromStream(FILE* ICCProfile, const char *sAccess) { return cmsOpenProfileFromStreamTHR(NULL, ICCProfile, sAccess); } // Open from memory block cmsHPROFILE CMSEXPORT cmsOpenProfileFromMemTHR(cmsContext ContextID, const void* MemPtr, cmsUInt32Number dwSize) { _cmsICCPROFILE* NewIcc; cmsHPROFILE hEmpty; hEmpty = cmsCreateProfilePlaceholder(ContextID); if (hEmpty == NULL) return NULL; NewIcc = (_cmsICCPROFILE*) hEmpty; // Ok, in this case const void* is casted to void* just because open IO handler // shares read and writting modes. Don't abuse this feature! NewIcc ->IOhandler = cmsOpenIOhandlerFromMem(ContextID, (void*) MemPtr, dwSize, "r"); if (NewIcc ->IOhandler == NULL) goto Error; if (!_cmsReadHeader(NewIcc)) goto Error; return hEmpty; Error: cmsCloseProfile(hEmpty); return NULL; } cmsHPROFILE CMSEXPORT cmsOpenProfileFromMem(const void* MemPtr, cmsUInt32Number dwSize) { return cmsOpenProfileFromMemTHR(NULL, MemPtr, dwSize); } // Dump tag contents. If the profile is being modified, untouched tags are copied from FileOrig static cmsBool SaveTags(_cmsICCPROFILE* Icc, _cmsICCPROFILE* FileOrig) { cmsUInt8Number* Data; cmsUInt32Number i; cmsUInt32Number Begin; cmsIOHANDLER* io = Icc ->IOhandler; cmsTagDescriptor* TagDescriptor; cmsTagTypeSignature TypeBase; cmsTagTypeSignature Type; cmsTagTypeHandler* TypeHandler; cmsFloat64Number Version = cmsGetProfileVersion((cmsHPROFILE) Icc); cmsTagTypeHandler LocalTypeHandler; for (i=0; i < Icc -> TagCount; i++) { if (Icc ->TagNames[i] == 0) continue; // Linked tags are not written if (Icc ->TagLinked[i] != (cmsTagSignature) 0) continue; Icc -> TagOffsets[i] = Begin = io ->UsedSpace; Data = (cmsUInt8Number*) Icc -> TagPtrs[i]; if (!Data) { // Reach here if we are copying a tag from a disk-based ICC profile which has not been modified by user. // In this case a blind copy of the block data is performed if (FileOrig != NULL && Icc -> TagOffsets[i]) { cmsUInt32Number TagSize = FileOrig -> TagSizes[i]; cmsUInt32Number TagOffset = FileOrig -> TagOffsets[i]; void* Mem; if (!FileOrig ->IOhandler->Seek(FileOrig ->IOhandler, TagOffset)) return FALSE; Mem = _cmsMalloc(Icc ->ContextID, TagSize); if (Mem == NULL) return FALSE; if (FileOrig ->IOhandler->Read(FileOrig->IOhandler, Mem, TagSize, 1) != 1) return FALSE; if (!io ->Write(io, TagSize, Mem)) return FALSE; _cmsFree(Icc ->ContextID, Mem); Icc -> TagSizes[i] = (io ->UsedSpace - Begin); // Align to 32 bit boundary. if (! _cmsWriteAlignment(io)) return FALSE; } continue; } // Should this tag be saved as RAW? If so, tagsizes should be specified in advance (no further cooking is done) if (Icc ->TagSaveAsRaw[i]) { if (io -> Write(io, Icc ->TagSizes[i], Data) != 1) return FALSE; } else { // Search for support on this tag TagDescriptor = _cmsGetTagDescriptor(Icc -> TagNames[i]); if (TagDescriptor == NULL) continue; // Unsupported, ignore it if (TagDescriptor ->DecideType != NULL) { Type = TagDescriptor ->DecideType(Version, Data); } else { Type = TagDescriptor ->SupportedTypes[0]; } TypeHandler = _cmsGetTagTypeHandler(Type); if (TypeHandler == NULL) { cmsSignalError(Icc ->ContextID, cmsERROR_INTERNAL, "(Internal) no handler for tag %x", Icc -> TagNames[i]); continue; } TypeBase = TypeHandler ->Signature; if (!_cmsWriteTypeBase(io, TypeBase)) return FALSE; LocalTypeHandler = *TypeHandler; LocalTypeHandler.ContextID = Icc ->ContextID; LocalTypeHandler.ICCVersion = Icc ->Version; if (!LocalTypeHandler.WritePtr(&LocalTypeHandler, io, Data, TagDescriptor ->ElemCount)) { char String[5]; _cmsTagSignature2String(String, (cmsTagSignature) TypeBase); cmsSignalError(Icc ->ContextID, cmsERROR_WRITE, "Couldn't write type '%s'", String); return FALSE; } } Icc -> TagSizes[i] = (io ->UsedSpace - Begin); // Align to 32 bit boundary. if (! _cmsWriteAlignment(io)) return FALSE; } return TRUE; } // Fill the offset and size fields for all linked tags static cmsBool SetLinks( _cmsICCPROFILE* Icc) { cmsUInt32Number i; for (i=0; i < Icc -> TagCount; i++) { cmsTagSignature lnk = Icc ->TagLinked[i]; if (lnk != (cmsTagSignature) 0) { int j = _cmsSearchTag(Icc, lnk, FALSE); if (j >= 0) { Icc ->TagOffsets[i] = Icc ->TagOffsets[j]; Icc ->TagSizes[i] = Icc ->TagSizes[j]; } } } return TRUE; } // Low-level save to IOHANDLER. It returns the number of bytes used to // store the profile, or zero on error. io may be NULL and in this case // no data is written--only sizes are calculated cmsUInt32Number CMSEXPORT cmsSaveProfileToIOhandler(cmsHPROFILE hProfile, cmsIOHANDLER* io) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; _cmsICCPROFILE Keep; cmsIOHANDLER* PrevIO; cmsUInt32Number UsedSpace; cmsContext ContextID; memmove(&Keep, Icc, sizeof(_cmsICCPROFILE)); ContextID = cmsGetProfileContextID(hProfile); PrevIO = Icc ->IOhandler = cmsOpenIOhandlerFromNULL(ContextID); if (PrevIO == NULL) return 0; // Pass #1 does compute offsets if (!_cmsWriteHeader(Icc, 0)) return 0; if (!SaveTags(Icc, &Keep)) return 0; UsedSpace = PrevIO ->UsedSpace; // Pass #2 does save to iohandler if (io != NULL) { Icc ->IOhandler = io; if (!SetLinks(Icc)) goto CleanUp; if (!_cmsWriteHeader(Icc, UsedSpace)) goto CleanUp; if (!SaveTags(Icc, &Keep)) goto CleanUp; } memmove(Icc, &Keep, sizeof(_cmsICCPROFILE)); if (!cmsCloseIOhandler(PrevIO)) return 0; return UsedSpace; CleanUp: cmsCloseIOhandler(PrevIO); memmove(Icc, &Keep, sizeof(_cmsICCPROFILE)); return 0; } // Low-level save to disk. cmsBool CMSEXPORT cmsSaveProfileToFile(cmsHPROFILE hProfile, const char* FileName) { cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsIOHANDLER* io = cmsOpenIOhandlerFromFile(ContextID, FileName, "w"); cmsBool rc; if (io == NULL) return FALSE; rc = (cmsSaveProfileToIOhandler(hProfile, io) != 0); rc &= cmsCloseIOhandler(io); if (rc == FALSE) { // remove() is C99 per 7.19.4.1 remove(FileName); // We have to IGNORE return value in this case } return rc; } // Same as anterior, but for streams cmsBool CMSEXPORT cmsSaveProfileToStream(cmsHPROFILE hProfile, FILE* Stream) { cmsBool rc; cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsIOHANDLER* io = cmsOpenIOhandlerFromStream(ContextID, Stream); if (io == NULL) return FALSE; rc = (cmsSaveProfileToIOhandler(hProfile, io) != 0); rc &= cmsCloseIOhandler(io); return rc; } // Same as anterior, but for memory blocks. In this case, a NULL as MemPtr means calculate needed space only cmsBool CMSEXPORT cmsSaveProfileToMem(cmsHPROFILE hProfile, void *MemPtr, cmsUInt32Number* BytesNeeded) { cmsBool rc; cmsIOHANDLER* io; cmsContext ContextID = cmsGetProfileContextID(hProfile); // Should we just calculate the needed space? if (MemPtr == NULL) { *BytesNeeded = cmsSaveProfileToIOhandler(hProfile, NULL); return TRUE; } // That is a real write operation io = cmsOpenIOhandlerFromMem(ContextID, MemPtr, *BytesNeeded, "w"); if (io == NULL) return FALSE; rc = (cmsSaveProfileToIOhandler(hProfile, io) != 0); rc &= cmsCloseIOhandler(io); return rc; } // Closes a profile freeing any involved resources cmsBool CMSEXPORT cmsCloseProfile(cmsHPROFILE hProfile) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; cmsBool rc = TRUE; cmsUInt32Number i; if (!Icc) return FALSE; // Was open in write mode? if (Icc ->IsWrite) { Icc ->IsWrite = FALSE; // Assure no further writting rc &= cmsSaveProfileToFile(hProfile, Icc ->IOhandler->PhysicalFile); } for (i=0; i < Icc -> TagCount; i++) { if (Icc -> TagPtrs[i]) { cmsTagTypeHandler* TypeHandler = Icc ->TagTypeHandlers[i]; if (TypeHandler != NULL) { cmsTagTypeHandler LocalTypeHandler = *TypeHandler; LocalTypeHandler.ContextID = Icc ->ContextID; // As an additional parameters LocalTypeHandler.ICCVersion = Icc ->Version; LocalTypeHandler.FreePtr(&LocalTypeHandler, Icc -> TagPtrs[i]); } else _cmsFree(Icc ->ContextID, Icc ->TagPtrs[i]); } } if (Icc ->IOhandler != NULL) { rc &= cmsCloseIOhandler(Icc->IOhandler); } _cmsFree(Icc ->ContextID, Icc); // Free placeholder memory return rc; } // ------------------------------------------------------------------------------------------------------------------- // Returns TRUE if a given tag is supported by a plug-in static cmsBool IsTypeSupported(cmsTagDescriptor* TagDescriptor, cmsTagTypeSignature Type) { cmsUInt32Number i, nMaxTypes; nMaxTypes = TagDescriptor->nSupportedTypes; if (nMaxTypes >= MAX_TYPES_IN_LCMS_PLUGIN) nMaxTypes = MAX_TYPES_IN_LCMS_PLUGIN; for (i=0; i < nMaxTypes; i++) { if (Type == TagDescriptor ->SupportedTypes[i]) return TRUE; } return FALSE; } // That's the main read function void* CMSEXPORT cmsReadTag(cmsHPROFILE hProfile, cmsTagSignature sig) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; cmsIOHANDLER* io = Icc ->IOhandler; cmsTagTypeHandler* TypeHandler; cmsTagTypeHandler LocalTypeHandler; cmsTagDescriptor* TagDescriptor; cmsTagTypeSignature BaseType; cmsUInt32Number Offset, TagSize; cmsUInt32Number ElemCount; int n; n = _cmsSearchTag(Icc, sig, TRUE); if (n < 0) return NULL; // Not found, return NULL // If the element is already in memory, return the pointer if (Icc -> TagPtrs[n]) { if (Icc ->TagSaveAsRaw[n]) return NULL; // We don't support read raw tags as cooked return Icc -> TagPtrs[n]; } // We need to read it. Get the offset and size to the file Offset = Icc -> TagOffsets[n]; TagSize = Icc -> TagSizes[n]; // Seek to its location if (!io -> Seek(io, Offset)) return NULL; // Search for support on this tag TagDescriptor = _cmsGetTagDescriptor(sig); if (TagDescriptor == NULL) return NULL; // Unsupported. // if supported, get type and check if in list BaseType = _cmsReadTypeBase(io); if (BaseType == 0) return NULL; if (!IsTypeSupported(TagDescriptor, BaseType)) return NULL; TagSize -= 8; // Alredy read by the type base logic // Get type handler TypeHandler = _cmsGetTagTypeHandler(BaseType); if (TypeHandler == NULL) return NULL; LocalTypeHandler = *TypeHandler; // Read the tag Icc -> TagTypeHandlers[n] = TypeHandler; LocalTypeHandler.ContextID = Icc ->ContextID; LocalTypeHandler.ICCVersion = Icc ->Version; Icc -> TagPtrs[n] = LocalTypeHandler.ReadPtr(&LocalTypeHandler, io, &ElemCount, TagSize); // The tag type is supported, but something wrong happend and we cannot read the tag. // let know the user about this (although it is just a warning) if (Icc -> TagPtrs[n] == NULL) { char String[5]; _cmsTagSignature2String(String, sig); cmsSignalError(Icc ->ContextID, cmsERROR_CORRUPTION_DETECTED, "Corrupted tag '%s'", String); return NULL; } // This is a weird error that may be a symptom of something more serious, the number of // stored item is actually less than the number of required elements. if (ElemCount < TagDescriptor ->ElemCount) { char String[5]; _cmsTagSignature2String(String, sig); cmsSignalError(Icc ->ContextID, cmsERROR_CORRUPTION_DETECTED, "'%s' Inconsistent number of items: expected %d, got %d", String, TagDescriptor ->ElemCount, ElemCount); } // Return the data return Icc -> TagPtrs[n]; } // Get true type of data cmsTagTypeSignature _cmsGetTagTrueType(cmsHPROFILE hProfile, cmsTagSignature sig) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; cmsTagTypeHandler* TypeHandler; int n; // Search for given tag in ICC profile directory n = _cmsSearchTag(Icc, sig, TRUE); if (n < 0) return (cmsTagTypeSignature) 0; // Not found, return NULL // Get the handler. The true type is there TypeHandler = Icc -> TagTypeHandlers[n]; return TypeHandler ->Signature; } // Write a single tag. This just keeps track of the tak into a list of "to be written". If the tag is already // in that list, the previous version is deleted. cmsBool CMSEXPORT cmsWriteTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; cmsTagTypeHandler* TypeHandler = NULL; cmsTagTypeHandler LocalTypeHandler; cmsTagDescriptor* TagDescriptor = NULL; cmsTagTypeSignature Type; int i; cmsFloat64Number Version; char TypeString[5], SigString[5]; if (data == NULL) { i = _cmsSearchTag(Icc, sig, FALSE); if (i >= 0) Icc ->TagNames[i] = (cmsTagSignature) 0; // Unsupported by now, reserved for future ampliations (delete) return FALSE; } i = _cmsSearchTag(Icc, sig, FALSE); if (i >=0) { if (Icc -> TagPtrs[i] != NULL) { // Already exists. Free previous version if (Icc ->TagSaveAsRaw[i]) { _cmsFree(Icc ->ContextID, Icc ->TagPtrs[i]); } else { TypeHandler = Icc ->TagTypeHandlers[i]; if (TypeHandler != NULL) { LocalTypeHandler = *TypeHandler; LocalTypeHandler.ContextID = Icc ->ContextID; // As an additional parameter LocalTypeHandler.ICCVersion = Icc ->Version; LocalTypeHandler.FreePtr(&LocalTypeHandler, Icc -> TagPtrs[i]); } } } } else { // New one i = Icc -> TagCount; if (i >= MAX_TABLE_TAG) { cmsSignalError(Icc ->ContextID, cmsERROR_RANGE, "Too many tags (%d)", MAX_TABLE_TAG); return FALSE; } Icc -> TagCount++; } // This is not raw Icc ->TagSaveAsRaw[i] = FALSE; // This is not a link Icc ->TagLinked[i] = (cmsTagSignature) 0; // Get information about the TAG. TagDescriptor = _cmsGetTagDescriptor(sig); if (TagDescriptor == NULL){ cmsSignalError(Icc ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported tag '%x'", sig); return FALSE; } // Now we need to know which type to use. It depends on the version. Version = cmsGetProfileVersion(hProfile); if (TagDescriptor ->DecideType != NULL) { // Let the tag descriptor to decide the type base on depending on // the data. This is useful for example on parametric curves, where // curves specified by a table cannot be saved as parametric and needs // to be casted to single v2-curves, even on v4 profiles. Type = TagDescriptor ->DecideType(Version, data); } else { Type = TagDescriptor ->SupportedTypes[0]; } // Does the tag support this type? if (!IsTypeSupported(TagDescriptor, Type)) { _cmsTagSignature2String(TypeString, (cmsTagSignature) Type); _cmsTagSignature2String(SigString, sig); cmsSignalError(Icc ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported type '%s' for tag '%s'", TypeString, SigString); return FALSE; } // Does we have a handler for this type? TypeHandler = _cmsGetTagTypeHandler(Type); if (TypeHandler == NULL) { _cmsTagSignature2String(TypeString, (cmsTagSignature) Type); _cmsTagSignature2String(SigString, sig); cmsSignalError(Icc ->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported type '%s' for tag '%s'", TypeString, SigString); return FALSE; // Should never happen } // Fill fields on icc structure Icc ->TagTypeHandlers[i] = TypeHandler; Icc ->TagNames[i] = sig; Icc ->TagSizes[i] = 0; Icc ->TagOffsets[i] = 0; LocalTypeHandler = *TypeHandler; LocalTypeHandler.ContextID = Icc ->ContextID; LocalTypeHandler.ICCVersion = Icc ->Version; Icc ->TagPtrs[i] = LocalTypeHandler.DupPtr(&LocalTypeHandler, data, TagDescriptor ->ElemCount); if (Icc ->TagPtrs[i] == NULL) { _cmsTagSignature2String(TypeString, (cmsTagSignature) Type); _cmsTagSignature2String(SigString, sig); cmsSignalError(Icc ->ContextID, cmsERROR_CORRUPTION_DETECTED, "Malformed struct in type '%s' for tag '%s'", TypeString, SigString); return FALSE; } return TRUE; } // Read and write raw data. The only way those function would work and keep consistence with normal read and write // is to do an additional step of serialization. That means, readRaw would issue a normal read and then convert the obtained // data to raw bytes by using the "write" serialization logic. And vice-versa. I know this may end in situations where // raw data written does not exactly correspond with the raw data proposed to cmsWriteRaw data, but this approach allows // to write a tag as raw data and the read it as handled. cmsInt32Number CMSEXPORT cmsReadRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, void* data, cmsUInt32Number BufferSize) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; void *Object; int i; cmsIOHANDLER* MemIO; cmsTagTypeHandler* TypeHandler = NULL; cmsTagTypeHandler LocalTypeHandler; cmsTagDescriptor* TagDescriptor = NULL; cmsUInt32Number rc; cmsUInt32Number Offset, TagSize; // Search for given tag in ICC profile directory i = _cmsSearchTag(Icc, sig, TRUE); if (i < 0) return 0; // Not found, return 0 // It is already read? if (Icc -> TagPtrs[i] == NULL) { // No yet, get original position Offset = Icc ->TagOffsets[i]; TagSize = Icc ->TagSizes[i]; // read the data directly, don't keep copy if (data != NULL) { if (BufferSize < TagSize) TagSize = BufferSize; if (!Icc ->IOhandler ->Seek(Icc ->IOhandler, Offset)) return 0; if (!Icc ->IOhandler ->Read(Icc ->IOhandler, data, 1, TagSize)) return 0; return TagSize; } return Icc ->TagSizes[i]; } // The data has been already read, or written. But wait!, maybe the user choosed to save as // raw data. In this case, return the raw data directly if (Icc ->TagSaveAsRaw[i]) { if (data != NULL) { TagSize = Icc ->TagSizes[i]; if (BufferSize < TagSize) TagSize = BufferSize; memmove(data, Icc ->TagPtrs[i], TagSize); return TagSize; } return Icc ->TagSizes[i]; } // Already readed, or previously set by cmsWriteTag(). We need to serialize that // data to raw in order to maintain consistency. Object = cmsReadTag(hProfile, sig); if (Object == NULL) return 0; // Now we need to serialize to a memory block: just use a memory iohandler if (data == NULL) { MemIO = cmsOpenIOhandlerFromNULL(cmsGetProfileContextID(hProfile)); } else{ MemIO = cmsOpenIOhandlerFromMem(cmsGetProfileContextID(hProfile), data, BufferSize, "w"); } if (MemIO == NULL) return 0; // Obtain type handling for the tag TypeHandler = Icc ->TagTypeHandlers[i]; TagDescriptor = _cmsGetTagDescriptor(sig); if (TagDescriptor == NULL) { cmsCloseIOhandler(MemIO); return 0; } // FIXME: No handling for TypeHandler == NULL here? // Serialize LocalTypeHandler = *TypeHandler; LocalTypeHandler.ContextID = Icc ->ContextID; LocalTypeHandler.ICCVersion = Icc ->Version; if (!_cmsWriteTypeBase(MemIO, TypeHandler ->Signature)) { cmsCloseIOhandler(MemIO); return 0; } if (!LocalTypeHandler.WritePtr(&LocalTypeHandler, MemIO, Object, TagDescriptor ->ElemCount)) { cmsCloseIOhandler(MemIO); return 0; } // Get Size and close rc = MemIO ->Tell(MemIO); cmsCloseIOhandler(MemIO); // Ignore return code this time return rc; } // Similar to the anterior. This function allows to write directly to the ICC profile any data, without // checking anything. As a rule, mixing Raw with cooked doesn't work, so writting a tag as raw and then reading // it as cooked without serializing does result into an error. If that is wha you want, you will need to dump // the profile to memry or disk and then reopen it. cmsBool CMSEXPORT cmsWriteRawTag(cmsHPROFILE hProfile, cmsTagSignature sig, const void* data, cmsUInt32Number Size) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; int i; if (!_cmsNewTag(Icc, sig, &i)) return FALSE; // Mark the tag as being written as RAW Icc ->TagSaveAsRaw[i] = TRUE; Icc ->TagNames[i] = sig; Icc ->TagLinked[i] = (cmsTagSignature) 0; // Keep a copy of the block Icc ->TagPtrs[i] = _cmsDupMem(Icc ->ContextID, data, Size); Icc ->TagSizes[i] = Size; return TRUE; } // Using this function you can collapse several tag entries to the same block in the profile cmsBool CMSEXPORT cmsLinkTag(cmsHPROFILE hProfile, cmsTagSignature sig, cmsTagSignature dest) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; int i; if (!_cmsNewTag(Icc, sig, &i)) return FALSE; // Keep necessary information Icc ->TagSaveAsRaw[i] = FALSE; Icc ->TagNames[i] = sig; Icc ->TagLinked[i] = dest; Icc ->TagPtrs[i] = NULL; Icc ->TagSizes[i] = 0; Icc ->TagOffsets[i] = 0; return TRUE; } // Returns the tag linked to sig, in the case two tags are sharing same resource cmsTagSignature CMSEXPORT cmsTagLinkedTo(cmsHPROFILE hProfile, cmsTagSignature sig) { _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile; int i; // Search for given tag in ICC profile directory i = _cmsSearchTag(Icc, sig, FALSE); if (i < 0) return (cmsTagSignature) 0; // Not found, return 0 return Icc -> TagLinked[i]; } lcms2-2.5/src/cmssm.c0000644002406300000240000004510412163060730014004 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // ------------------------------------------------------------------------ // Gamut boundary description by using Jan Morovic's Segment maxima method // Many thanks to Jan for allowing me to use his algorithm. // r = C* // alpha = Hab // theta = L* #define SECTORS 16 // number of divisions in alpha and theta // Spherical coordinates typedef struct { cmsFloat64Number r; cmsFloat64Number alpha; cmsFloat64Number theta; } cmsSpherical; typedef enum { GP_EMPTY, GP_SPECIFIED, GP_MODELED } GDBPointType; typedef struct { GDBPointType Type; cmsSpherical p; // Keep also alpha & theta of maximum } cmsGDBPoint; typedef struct { cmsContext ContextID; cmsGDBPoint Gamut[SECTORS][SECTORS]; } cmsGDB; // A line using the parametric form // P = a + t*u typedef struct { cmsVEC3 a; cmsVEC3 u; } cmsLine; // A plane using the parametric form // Q = b + r*v + s*w typedef struct { cmsVEC3 b; cmsVEC3 v; cmsVEC3 w; } cmsPlane; // -------------------------------------------------------------------------------------------- // ATAN2() which always returns degree positive numbers static cmsFloat64Number _cmsAtan2(cmsFloat64Number y, cmsFloat64Number x) { cmsFloat64Number a; // Deal with undefined case if (x == 0.0 && y == 0.0) return 0; a = (atan2(y, x) * 180.0) / M_PI; while (a < 0) { a += 360; } return a; } // Convert to spherical coordinates static void ToSpherical(cmsSpherical* sp, const cmsVEC3* v) { cmsFloat64Number L, a, b; L = v ->n[VX]; a = v ->n[VY]; b = v ->n[VZ]; sp ->r = sqrt( L*L + a*a + b*b ); if (sp ->r == 0) { sp ->alpha = sp ->theta = 0; return; } sp ->alpha = _cmsAtan2(a, b); sp ->theta = _cmsAtan2(sqrt(a*a + b*b), L); } // Convert to cartesian from spherical static void ToCartesian(cmsVEC3* v, const cmsSpherical* sp) { cmsFloat64Number sin_alpha; cmsFloat64Number cos_alpha; cmsFloat64Number sin_theta; cmsFloat64Number cos_theta; cmsFloat64Number L, a, b; sin_alpha = sin((M_PI * sp ->alpha) / 180.0); cos_alpha = cos((M_PI * sp ->alpha) / 180.0); sin_theta = sin((M_PI * sp ->theta) / 180.0); cos_theta = cos((M_PI * sp ->theta) / 180.0); a = sp ->r * sin_theta * sin_alpha; b = sp ->r * sin_theta * cos_alpha; L = sp ->r * cos_theta; v ->n[VX] = L; v ->n[VY] = a; v ->n[VZ] = b; } // Quantize sector of a spherical coordinate. Saturate 360, 180 to last sector // The limits are the centers of each sector, so static void QuantizeToSector(const cmsSpherical* sp, int* alpha, int* theta) { *alpha = (int) floor(((sp->alpha * (SECTORS)) / 360.0) ); *theta = (int) floor(((sp->theta * (SECTORS)) / 180.0) ); if (*alpha >= SECTORS) *alpha = SECTORS-1; if (*theta >= SECTORS) *theta = SECTORS-1; } // Line determined by 2 points static void LineOf2Points(cmsLine* line, cmsVEC3* a, cmsVEC3* b) { _cmsVEC3init(&line ->a, a ->n[VX], a ->n[VY], a ->n[VZ]); _cmsVEC3init(&line ->u, b ->n[VX] - a ->n[VX], b ->n[VY] - a ->n[VY], b ->n[VZ] - a ->n[VZ]); } // Evaluate parametric line static void GetPointOfLine(cmsVEC3* p, const cmsLine* line, cmsFloat64Number t) { p ->n[VX] = line ->a.n[VX] + t * line->u.n[VX]; p ->n[VY] = line ->a.n[VY] + t * line->u.n[VY]; p ->n[VZ] = line ->a.n[VZ] + t * line->u.n[VZ]; } /* Closest point in sector line1 to sector line2 (both are defined as 0 <=t <= 1) http://softsurfer.com/Archive/algorithm_0106/algorithm_0106.htm Copyright 2001, softSurfer (www.softsurfer.com) This code may be freely used and modified for any purpose providing that this copyright notice is included with it. SoftSurfer makes no warranty for this code, and cannot be held liable for any real or imagined damage resulting from its use. Users of this code must verify correctness for their application. */ static cmsBool ClosestLineToLine(cmsVEC3* r, const cmsLine* line1, const cmsLine* line2) { cmsFloat64Number a, b, c, d, e, D; cmsFloat64Number sc, sN, sD; cmsFloat64Number tc, tN, tD; cmsVEC3 w0; _cmsVEC3minus(&w0, &line1 ->a, &line2 ->a); a = _cmsVEC3dot(&line1 ->u, &line1 ->u); b = _cmsVEC3dot(&line1 ->u, &line2 ->u); c = _cmsVEC3dot(&line2 ->u, &line2 ->u); d = _cmsVEC3dot(&line1 ->u, &w0); e = _cmsVEC3dot(&line2 ->u, &w0); D = a*c - b * b; // Denominator sD = tD = D; // default sD = D >= 0 if (D < MATRIX_DET_TOLERANCE) { // the lines are almost parallel sN = 0.0; // force using point P0 on segment S1 sD = 1.0; // to prevent possible division by 0.0 later tN = e; tD = c; } else { // get the closest points on the infinite lines sN = (b*e - c*d); tN = (a*e - b*d); if (sN < 0.0) { // sc < 0 => the s=0 edge is visible sN = 0.0; tN = e; tD = c; } else if (sN > sD) { // sc > 1 => the s=1 edge is visible sN = sD; tN = e + b; tD = c; } } if (tN < 0.0) { // tc < 0 => the t=0 edge is visible tN = 0.0; // recompute sc for this edge if (-d < 0.0) sN = 0.0; else if (-d > a) sN = sD; else { sN = -d; sD = a; } } else if (tN > tD) { // tc > 1 => the t=1 edge is visible tN = tD; // recompute sc for this edge if ((-d + b) < 0.0) sN = 0; else if ((-d + b) > a) sN = sD; else { sN = (-d + b); sD = a; } } // finally do the division to get sc and tc sc = (fabs(sN) < MATRIX_DET_TOLERANCE ? 0.0 : sN / sD); tc = (fabs(tN) < MATRIX_DET_TOLERANCE ? 0.0 : tN / tD); GetPointOfLine(r, line1, sc); return TRUE; } // ------------------------------------------------------------------ Wrapper // Allocate & free structure cmsHANDLE CMSEXPORT cmsGBDAlloc(cmsContext ContextID) { cmsGDB* gbd = (cmsGDB*) _cmsMallocZero(ContextID, sizeof(cmsGDB)); if (gbd == NULL) return NULL; gbd -> ContextID = ContextID; return (cmsHANDLE) gbd; } void CMSEXPORT cmsGBDFree(cmsHANDLE hGBD) { cmsGDB* gbd = (cmsGDB*) hGBD; if (hGBD != NULL) _cmsFree(gbd->ContextID, (void*) gbd); } // Auxiliar to retrieve a pointer to the segmentr containing the Lab value static cmsGDBPoint* GetPoint(cmsGDB* gbd, const cmsCIELab* Lab, cmsSpherical* sp) { cmsVEC3 v; int alpha, theta; // Housekeeping _cmsAssert(gbd != NULL); _cmsAssert(Lab != NULL); _cmsAssert(sp != NULL); // Center L* by substracting half of its domain, that's 50 _cmsVEC3init(&v, Lab ->L - 50.0, Lab ->a, Lab ->b); // Convert to spherical coordinates ToSpherical(sp, &v); if (sp ->r < 0 || sp ->alpha < 0 || sp->theta < 0) { cmsSignalError(gbd ->ContextID, cmsERROR_RANGE, "spherical value out of range"); return NULL; } // On which sector it falls? QuantizeToSector(sp, &alpha, &theta); if (alpha < 0 || theta < 0 || alpha >= SECTORS || theta >= SECTORS) { cmsSignalError(gbd ->ContextID, cmsERROR_RANGE, " quadrant out of range"); return NULL; } // Get pointer to the sector return &gbd ->Gamut[theta][alpha]; } // Add a point to gamut descriptor. Point to add is in Lab color space. // GBD is centered on a=b=0 and L*=50 cmsBool CMSEXPORT cmsGDBAddPoint(cmsHANDLE hGBD, const cmsCIELab* Lab) { cmsGDB* gbd = (cmsGDB*) hGBD; cmsGDBPoint* ptr; cmsSpherical sp; // Get pointer to the sector ptr = GetPoint(gbd, Lab, &sp); if (ptr == NULL) return FALSE; // If no samples at this sector, add it if (ptr ->Type == GP_EMPTY) { ptr -> Type = GP_SPECIFIED; ptr -> p = sp; } else { // Substitute only if radius is greater if (sp.r > ptr -> p.r) { ptr -> Type = GP_SPECIFIED; ptr -> p = sp; } } return TRUE; } // Check if a given point falls inside gamut cmsBool CMSEXPORT cmsGDBCheckPoint(cmsHANDLE hGBD, const cmsCIELab* Lab) { cmsGDB* gbd = (cmsGDB*) hGBD; cmsGDBPoint* ptr; cmsSpherical sp; // Get pointer to the sector ptr = GetPoint(gbd, Lab, &sp); if (ptr == NULL) return FALSE; // If no samples at this sector, return no data if (ptr ->Type == GP_EMPTY) return FALSE; // In gamut only if radius is greater return (sp.r <= ptr -> p.r); } // ----------------------------------------------------------------------------------------------------------------------- // Find near sectors. The list of sectors found is returned on Close[]. // The function returns the number of sectors as well. // 24 9 10 11 12 // 23 8 1 2 13 // 22 7 * 3 14 // 21 6 5 4 15 // 20 19 18 17 16 // // Those are the relative movements // {-2,-2}, {-1, -2}, {0, -2}, {+1, -2}, {+2, -2}, // {-2,-1}, {-1, -1}, {0, -1}, {+1, -1}, {+2, -1}, // {-2, 0}, {-1, 0}, {0, 0}, {+1, 0}, {+2, 0}, // {-2,+1}, {-1, +1}, {0, +1}, {+1, +1}, {+2, +1}, // {-2,+2}, {-1, +2}, {0, +2}, {+1, +2}, {+2, +2}}; static const struct _spiral { int AdvX, AdvY; } Spiral[] = { {0, -1}, {+1, -1}, {+1, 0}, {+1, +1}, {0, +1}, {-1, +1}, {-1, 0}, {-1, -1}, {-1, -2}, {0, -2}, {+1, -2}, {+2, -2}, {+2, -1}, {+2, 0}, {+2, +1}, {+2, +2}, {+1, +2}, {0, +2}, {-1, +2}, {-2, +2}, {-2, +1}, {-2, 0}, {-2, -1}, {-2, -2} }; #define NSTEPS (sizeof(Spiral) / sizeof(struct _spiral)) static int FindNearSectors(cmsGDB* gbd, int alpha, int theta, cmsGDBPoint* Close[]) { int nSectors = 0; int a, t; cmsUInt32Number i; cmsGDBPoint* pt; for (i=0; i < NSTEPS; i++) { a = alpha + Spiral[i].AdvX; t = theta + Spiral[i].AdvY; // Cycle at the end a %= SECTORS; t %= SECTORS; // Cycle at the begin if (a < 0) a = SECTORS + a; if (t < 0) t = SECTORS + t; pt = &gbd ->Gamut[t][a]; if (pt -> Type != GP_EMPTY) { Close[nSectors++] = pt; } } return nSectors; } // Interpolate a missing sector. Method identifies whatever this is top, bottom or mid static cmsBool InterpolateMissingSector(cmsGDB* gbd, int alpha, int theta) { cmsSpherical sp; cmsVEC3 Lab; cmsVEC3 Centre; cmsLine ray; int nCloseSectors; cmsGDBPoint* Close[NSTEPS + 1]; cmsSpherical closel, templ; cmsLine edge; int k, m; // Is that point already specified? if (gbd ->Gamut[theta][alpha].Type != GP_EMPTY) return TRUE; // Fill close points nCloseSectors = FindNearSectors(gbd, alpha, theta, Close); // Find a central point on the sector sp.alpha = (cmsFloat64Number) ((alpha + 0.5) * 360.0) / (SECTORS); sp.theta = (cmsFloat64Number) ((theta + 0.5) * 180.0) / (SECTORS); sp.r = 50.0; // Convert to Cartesian ToCartesian(&Lab, &sp); // Create a ray line from centre to this point _cmsVEC3init(&Centre, 50.0, 0, 0); LineOf2Points(&ray, &Lab, &Centre); // For all close sectors closel.r = 0.0; closel.alpha = 0; closel.theta = 0; for (k=0; k < nCloseSectors; k++) { for(m = k+1; m < nCloseSectors; m++) { cmsVEC3 temp, a1, a2; // A line from sector to sector ToCartesian(&a1, &Close[k]->p); ToCartesian(&a2, &Close[m]->p); LineOf2Points(&edge, &a1, &a2); // Find a line ClosestLineToLine(&temp, &ray, &edge); // Convert to spherical ToSpherical(&templ, &temp); if ( templ.r > closel.r && templ.theta >= (theta*180.0/SECTORS) && templ.theta <= ((theta+1)*180.0/SECTORS) && templ.alpha >= (alpha*360.0/SECTORS) && templ.alpha <= ((alpha+1)*360.0/SECTORS)) { closel = templ; } } } gbd ->Gamut[theta][alpha].p = closel; gbd ->Gamut[theta][alpha].Type = GP_MODELED; return TRUE; } // Interpolate missing parts. The algorithm fist computes slices at // theta=0 and theta=Max. cmsBool CMSEXPORT cmsGDBCompute(cmsHANDLE hGBD, cmsUInt32Number dwFlags) { int alpha, theta; cmsGDB* gbd = (cmsGDB*) hGBD; _cmsAssert(hGBD != NULL); // Interpolate black for (alpha = 0; alpha < SECTORS; alpha++) { if (!InterpolateMissingSector(gbd, alpha, 0)) return FALSE; } // Interpolate white for (alpha = 0; alpha < SECTORS; alpha++) { if (!InterpolateMissingSector(gbd, alpha, SECTORS-1)) return FALSE; } // Interpolate Mid for (theta = 1; theta < SECTORS; theta++) { for (alpha = 0; alpha < SECTORS; alpha++) { if (!InterpolateMissingSector(gbd, alpha, theta)) return FALSE; } } // Done return TRUE; cmsUNUSED_PARAMETER(dwFlags); } // -------------------------------------------------------------------------------------------------------- // Great for debug, but not suitable for real use #if 0 cmsBool cmsGBDdumpVRML(cmsHANDLE hGBD, const char* fname) { FILE* fp; int i, j; cmsGDB* gbd = (cmsGDB*) hGBD; cmsGDBPoint* pt; fp = fopen (fname, "wt"); if (fp == NULL) return FALSE; fprintf (fp, "#VRML V2.0 utf8\n"); // set the viewing orientation and distance fprintf (fp, "DEF CamTest Group {\n"); fprintf (fp, "\tchildren [\n"); fprintf (fp, "\t\tDEF Cameras Group {\n"); fprintf (fp, "\t\t\tchildren [\n"); fprintf (fp, "\t\t\t\tDEF DefaultView Viewpoint {\n"); fprintf (fp, "\t\t\t\t\tposition 0 0 340\n"); fprintf (fp, "\t\t\t\t\torientation 0 0 1 0\n"); fprintf (fp, "\t\t\t\t\tdescription \"default view\"\n"); fprintf (fp, "\t\t\t\t}\n"); fprintf (fp, "\t\t\t]\n"); fprintf (fp, "\t\t},\n"); fprintf (fp, "\t]\n"); fprintf (fp, "}\n"); // Output the background stuff fprintf (fp, "Background {\n"); fprintf (fp, "\tskyColor [\n"); fprintf (fp, "\t\t.5 .5 .5\n"); fprintf (fp, "\t]\n"); fprintf (fp, "}\n"); // Output the shape stuff fprintf (fp, "Transform {\n"); fprintf (fp, "\tscale .3 .3 .3\n"); fprintf (fp, "\tchildren [\n"); // Draw the axes as a shape: fprintf (fp, "\t\tShape {\n"); fprintf (fp, "\t\t\tappearance Appearance {\n"); fprintf (fp, "\t\t\t\tmaterial Material {\n"); fprintf (fp, "\t\t\t\t\tdiffuseColor 0 0.8 0\n"); fprintf (fp, "\t\t\t\t\temissiveColor 1.0 1.0 1.0\n"); fprintf (fp, "\t\t\t\t\tshininess 0.8\n"); fprintf (fp, "\t\t\t\t}\n"); fprintf (fp, "\t\t\t}\n"); fprintf (fp, "\t\t\tgeometry IndexedLineSet {\n"); fprintf (fp, "\t\t\t\tcoord Coordinate {\n"); fprintf (fp, "\t\t\t\t\tpoint [\n"); fprintf (fp, "\t\t\t\t\t0.0 0.0 0.0,\n"); fprintf (fp, "\t\t\t\t\t%f 0.0 0.0,\n", 255.0); fprintf (fp, "\t\t\t\t\t0.0 %f 0.0,\n", 255.0); fprintf (fp, "\t\t\t\t\t0.0 0.0 %f]\n", 255.0); fprintf (fp, "\t\t\t\t}\n"); fprintf (fp, "\t\t\t\tcoordIndex [\n"); fprintf (fp, "\t\t\t\t\t0, 1, -1\n"); fprintf (fp, "\t\t\t\t\t0, 2, -1\n"); fprintf (fp, "\t\t\t\t\t0, 3, -1]\n"); fprintf (fp, "\t\t\t}\n"); fprintf (fp, "\t\t}\n"); fprintf (fp, "\t\tShape {\n"); fprintf (fp, "\t\t\tappearance Appearance {\n"); fprintf (fp, "\t\t\t\tmaterial Material {\n"); fprintf (fp, "\t\t\t\t\tdiffuseColor 0 0.8 0\n"); fprintf (fp, "\t\t\t\t\temissiveColor 1 1 1\n"); fprintf (fp, "\t\t\t\t\tshininess 0.8\n"); fprintf (fp, "\t\t\t\t}\n"); fprintf (fp, "\t\t\t}\n"); fprintf (fp, "\t\t\tgeometry PointSet {\n"); // fill in the points here fprintf (fp, "\t\t\t\tcoord Coordinate {\n"); fprintf (fp, "\t\t\t\t\tpoint [\n"); // We need to transverse all gamut hull. for (i=0; i < SECTORS; i++) for (j=0; j < SECTORS; j++) { cmsVEC3 v; pt = &gbd ->Gamut[i][j]; ToCartesian(&v, &pt ->p); fprintf (fp, "\t\t\t\t\t%g %g %g", v.n[0]+50, v.n[1], v.n[2]); if ((j == SECTORS - 1) && (i == SECTORS - 1)) fprintf (fp, "]\n"); else fprintf (fp, ",\n"); } fprintf (fp, "\t\t\t\t}\n"); // fill in the face colors fprintf (fp, "\t\t\t\tcolor Color {\n"); fprintf (fp, "\t\t\t\t\tcolor [\n"); for (i=0; i < SECTORS; i++) for (j=0; j < SECTORS; j++) { cmsVEC3 v; pt = &gbd ->Gamut[i][j]; ToCartesian(&v, &pt ->p); if (pt ->Type == GP_EMPTY) fprintf (fp, "\t\t\t\t\t%g %g %g", 0.0, 0.0, 0.0); else if (pt ->Type == GP_MODELED) fprintf (fp, "\t\t\t\t\t%g %g %g", 1.0, .5, .5); else { fprintf (fp, "\t\t\t\t\t%g %g %g", 1.0, 1.0, 1.0); } if ((j == SECTORS - 1) && (i == SECTORS - 1)) fprintf (fp, "]\n"); else fprintf (fp, ",\n"); } fprintf (fp, "\t\t\t}\n"); fprintf (fp, "\t\t\t}\n"); fprintf (fp, "\t\t}\n"); fprintf (fp, "\t]\n"); fprintf (fp, "}\n"); fclose (fp); return TRUE; } #endif lcms2-2.5/src/cmsgmt.c0000644002406300000240000004701112163060730014153 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // Auxiliar: append a Lab identity after the given sequence of profiles // and return the transform. Lab profile is closed, rest of profiles are kept open. cmsHTRANSFORM _cmsChain2Lab(cmsContext ContextID, cmsUInt32Number nProfiles, cmsUInt32Number InputFormat, cmsUInt32Number OutputFormat, const cmsUInt32Number Intents[], const cmsHPROFILE hProfiles[], const cmsBool BPC[], const cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { cmsHTRANSFORM xform; cmsHPROFILE hLab; cmsHPROFILE ProfileList[256]; cmsBool BPCList[256]; cmsFloat64Number AdaptationList[256]; cmsUInt32Number IntentList[256]; cmsUInt32Number i; // This is a rather big number and there is no need of dynamic memory // since we are adding a profile, 254 + 1 = 255 and this is the limit if (nProfiles > 254) return NULL; // The output space hLab = cmsCreateLab4ProfileTHR(ContextID, NULL); if (hLab == NULL) return NULL; // Create a copy of parameters for (i=0; i < nProfiles; i++) { ProfileList[i] = hProfiles[i]; BPCList[i] = BPC[i]; AdaptationList[i] = AdaptationStates[i]; IntentList[i] = Intents[i]; } // Place Lab identity at chain's end. ProfileList[nProfiles] = hLab; BPCList[nProfiles] = 0; AdaptationList[nProfiles] = 1.0; IntentList[nProfiles] = INTENT_RELATIVE_COLORIMETRIC; // Create the transform xform = cmsCreateExtendedTransform(ContextID, nProfiles + 1, ProfileList, BPCList, IntentList, AdaptationList, NULL, 0, InputFormat, OutputFormat, dwFlags); cmsCloseProfile(hLab); return xform; } // Compute K -> L* relationship. Flags may include black point compensation. In this case, // the relationship is assumed from the profile with BPC to a black point zero. static cmsToneCurve* ComputeKToLstar(cmsContext ContextID, cmsUInt32Number nPoints, cmsUInt32Number nProfiles, const cmsUInt32Number Intents[], const cmsHPROFILE hProfiles[], const cmsBool BPC[], const cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { cmsToneCurve* out = NULL; cmsUInt32Number i; cmsHTRANSFORM xform; cmsCIELab Lab; cmsFloat32Number cmyk[4]; cmsFloat32Number* SampledPoints; xform = _cmsChain2Lab(ContextID, nProfiles, TYPE_CMYK_FLT, TYPE_Lab_DBL, Intents, hProfiles, BPC, AdaptationStates, dwFlags); if (xform == NULL) return NULL; SampledPoints = (cmsFloat32Number*) _cmsCalloc(ContextID, nPoints, sizeof(cmsFloat32Number)); if (SampledPoints == NULL) goto Error; for (i=0; i < nPoints; i++) { cmyk[0] = 0; cmyk[1] = 0; cmyk[2] = 0; cmyk[3] = (cmsFloat32Number) ((i * 100.0) / (nPoints-1)); cmsDoTransform(xform, cmyk, &Lab, 1); SampledPoints[i]= (cmsFloat32Number) (1.0 - Lab.L / 100.0); // Negate K for easier operation } out = cmsBuildTabulatedToneCurveFloat(ContextID, nPoints, SampledPoints); Error: cmsDeleteTransform(xform); if (SampledPoints) _cmsFree(ContextID, SampledPoints); return out; } // Compute Black tone curve on a CMYK -> CMYK transform. This is done by // using the proof direction on both profiles to find K->L* relationship // then joining both curves. dwFlags may include black point compensation. cmsToneCurve* _cmsBuildKToneCurve(cmsContext ContextID, cmsUInt32Number nPoints, cmsUInt32Number nProfiles, const cmsUInt32Number Intents[], const cmsHPROFILE hProfiles[], const cmsBool BPC[], const cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { cmsToneCurve *in, *out, *KTone; // Make sure CMYK -> CMYK if (cmsGetColorSpace(hProfiles[0]) != cmsSigCmykData || cmsGetColorSpace(hProfiles[nProfiles-1])!= cmsSigCmykData) return NULL; // Make sure last is an output profile if (cmsGetDeviceClass(hProfiles[nProfiles - 1]) != cmsSigOutputClass) return NULL; // Create individual curves. BPC works also as each K to L* is // computed as a BPC to zero black point in case of L* in = ComputeKToLstar(ContextID, nPoints, nProfiles - 1, Intents, hProfiles, BPC, AdaptationStates, dwFlags); if (in == NULL) return NULL; out = ComputeKToLstar(ContextID, nPoints, 1, Intents + (nProfiles - 1), hProfiles + (nProfiles - 1), BPC + (nProfiles - 1), AdaptationStates + (nProfiles - 1), dwFlags); if (out == NULL) { cmsFreeToneCurve(in); return NULL; } // Build the relationship. This effectively limits the maximum accuracy to 16 bits, but // since this is used on black-preserving LUTs, we are not loosing accuracy in any case KTone = cmsJoinToneCurve(ContextID, in, out, nPoints); // Get rid of components cmsFreeToneCurve(in); cmsFreeToneCurve(out); // Something went wrong... if (KTone == NULL) return NULL; // Make sure it is monotonic if (!cmsIsToneCurveMonotonic(KTone)) { cmsFreeToneCurve(KTone); return NULL; } return KTone; } // Gamut LUT Creation ----------------------------------------------------------------------------------------- // Used by gamut & softproofing typedef struct { cmsHTRANSFORM hInput; // From whatever input color space. 16 bits to DBL cmsHTRANSFORM hForward, hReverse; // Transforms going from Lab to colorant and back cmsFloat64Number Thereshold; // The thereshold after which is considered out of gamut } GAMUTCHAIN; // This sampler does compute gamut boundaries by comparing original // values with a transform going back and forth. Values above ERR_THERESHOLD // of maximum are considered out of gamut. #define ERR_THERESHOLD 5 static int GamutSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { GAMUTCHAIN* t = (GAMUTCHAIN* ) Cargo; cmsCIELab LabIn1, LabOut1; cmsCIELab LabIn2, LabOut2; cmsUInt16Number Proof[cmsMAXCHANNELS], Proof2[cmsMAXCHANNELS]; cmsFloat64Number dE1, dE2, ErrorRatio; // Assume in-gamut by default. ErrorRatio = 1.0; // Convert input to Lab cmsDoTransform(t -> hInput, In, &LabIn1, 1); // converts from PCS to colorant. This always // does return in-gamut values, cmsDoTransform(t -> hForward, &LabIn1, Proof, 1); // Now, do the inverse, from colorant to PCS. cmsDoTransform(t -> hReverse, Proof, &LabOut1, 1); memmove(&LabIn2, &LabOut1, sizeof(cmsCIELab)); // Try again, but this time taking Check as input cmsDoTransform(t -> hForward, &LabOut1, Proof2, 1); cmsDoTransform(t -> hReverse, Proof2, &LabOut2, 1); // Take difference of direct value dE1 = cmsDeltaE(&LabIn1, &LabOut1); // Take difference of converted value dE2 = cmsDeltaE(&LabIn2, &LabOut2); // if dE1 is small and dE2 is small, value is likely to be in gamut if (dE1 < t->Thereshold && dE2 < t->Thereshold) Out[0] = 0; else { // if dE1 is small and dE2 is big, undefined. Assume in gamut if (dE1 < t->Thereshold && dE2 > t->Thereshold) Out[0] = 0; else // dE1 is big and dE2 is small, clearly out of gamut if (dE1 > t->Thereshold && dE2 < t->Thereshold) Out[0] = (cmsUInt16Number) _cmsQuickFloor((dE1 - t->Thereshold) + .5); else { // dE1 is big and dE2 is also big, could be due to perceptual mapping // so take error ratio if (dE2 == 0.0) ErrorRatio = dE1; else ErrorRatio = dE1 / dE2; if (ErrorRatio > t->Thereshold) Out[0] = (cmsUInt16Number) _cmsQuickFloor((ErrorRatio - t->Thereshold) + .5); else Out[0] = 0; } } return TRUE; } // Does compute a gamut LUT going back and forth across pcs -> relativ. colorimetric intent -> pcs // the dE obtained is then annotated on the LUT. Values truely out of gamut are clipped to dE = 0xFFFE // and values changed are supposed to be handled by any gamut remapping, so, are out of gamut as well. // // **WARNING: This algorithm does assume that gamut remapping algorithms does NOT move in-gamut colors, // of course, many perceptual and saturation intents does not work in such way, but relativ. ones should. cmsPipeline* _cmsCreateGamutCheckPipeline(cmsContext ContextID, cmsHPROFILE hProfiles[], cmsBool BPC[], cmsUInt32Number Intents[], cmsFloat64Number AdaptationStates[], cmsUInt32Number nGamutPCSposition, cmsHPROFILE hGamut) { cmsHPROFILE hLab; cmsPipeline* Gamut; cmsStage* CLUT; cmsUInt32Number dwFormat; GAMUTCHAIN Chain; int nChannels, nGridpoints; cmsColorSpaceSignature ColorSpace; cmsUInt32Number i; cmsHPROFILE ProfileList[256]; cmsBool BPCList[256]; cmsFloat64Number AdaptationList[256]; cmsUInt32Number IntentList[256]; memset(&Chain, 0, sizeof(GAMUTCHAIN)); if (nGamutPCSposition <= 0 || nGamutPCSposition > 255) { cmsSignalError(ContextID, cmsERROR_RANGE, "Wrong position of PCS. 1..255 expected, %d found.", nGamutPCSposition); return NULL; } hLab = cmsCreateLab4ProfileTHR(ContextID, NULL); if (hLab == NULL) return NULL; // The figure of merit. On matrix-shaper profiles, should be almost zero as // the conversion is pretty exact. On LUT based profiles, different resolutions // of input and output CLUT may result in differences. if (cmsIsMatrixShaper(hGamut)) { Chain.Thereshold = 1.0; } else { Chain.Thereshold = ERR_THERESHOLD; } // Create a copy of parameters for (i=0; i < nGamutPCSposition; i++) { ProfileList[i] = hProfiles[i]; BPCList[i] = BPC[i]; AdaptationList[i] = AdaptationStates[i]; IntentList[i] = Intents[i]; } // Fill Lab identity ProfileList[nGamutPCSposition] = hLab; BPCList[nGamutPCSposition] = 0; AdaptationList[nGamutPCSposition] = 1.0; IntentList[nGamutPCSposition] = INTENT_RELATIVE_COLORIMETRIC; ColorSpace = cmsGetColorSpace(hGamut); nChannels = cmsChannelsOf(ColorSpace); nGridpoints = _cmsReasonableGridpointsByColorspace(ColorSpace, cmsFLAGS_HIGHRESPRECALC); dwFormat = (CHANNELS_SH(nChannels)|BYTES_SH(2)); // 16 bits to Lab double Chain.hInput = cmsCreateExtendedTransform(ContextID, nGamutPCSposition + 1, ProfileList, BPCList, IntentList, AdaptationList, NULL, 0, dwFormat, TYPE_Lab_DBL, cmsFLAGS_NOCACHE); // Does create the forward step. Lab double to device dwFormat = (CHANNELS_SH(nChannels)|BYTES_SH(2)); Chain.hForward = cmsCreateTransformTHR(ContextID, hLab, TYPE_Lab_DBL, hGamut, dwFormat, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE); // Does create the backwards step Chain.hReverse = cmsCreateTransformTHR(ContextID, hGamut, dwFormat, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE); // All ok? if (Chain.hInput && Chain.hForward && Chain.hReverse) { // Go on, try to compute gamut LUT from PCS. This consist on a single channel containing // dE when doing a transform back and forth on the colorimetric intent. Gamut = cmsPipelineAlloc(ContextID, 3, 1); if (Gamut != NULL) { CLUT = cmsStageAllocCLut16bit(ContextID, nGridpoints, nChannels, 1, NULL); if (!cmsPipelineInsertStage(Gamut, cmsAT_BEGIN, CLUT)) { cmsPipelineFree(Gamut); Gamut = NULL; } else { cmsStageSampleCLut16bit(CLUT, GamutSampler, (void*) &Chain, 0); } } } else Gamut = NULL; // Didn't work... // Free all needed stuff. if (Chain.hInput) cmsDeleteTransform(Chain.hInput); if (Chain.hForward) cmsDeleteTransform(Chain.hForward); if (Chain.hReverse) cmsDeleteTransform(Chain.hReverse); if (hLab) cmsCloseProfile(hLab); // And return computed hull return Gamut; } // Total Area Coverage estimation ---------------------------------------------------------------- typedef struct { cmsUInt32Number nOutputChans; cmsHTRANSFORM hRoundTrip; cmsFloat32Number MaxTAC; cmsFloat32Number MaxInput[cmsMAXCHANNELS]; } cmsTACestimator; // This callback just accounts the maximum ink dropped in the given node. It does not populate any // memory, as the destination table is NULL. Its only purpose it to know the global maximum. static int EstimateTAC(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { cmsTACestimator* bp = (cmsTACestimator*) Cargo; cmsFloat32Number RoundTrip[cmsMAXCHANNELS]; cmsUInt32Number i; cmsFloat32Number Sum; // Evaluate the xform cmsDoTransform(bp->hRoundTrip, In, RoundTrip, 1); // All all amounts of ink for (Sum=0, i=0; i < bp ->nOutputChans; i++) Sum += RoundTrip[i]; // If above maximum, keep track of input values if (Sum > bp ->MaxTAC) { bp ->MaxTAC = Sum; for (i=0; i < bp ->nOutputChans; i++) { bp ->MaxInput[i] = In[i]; } } return TRUE; cmsUNUSED_PARAMETER(Out); } // Detect Total area coverage of the profile cmsFloat64Number CMSEXPORT cmsDetectTAC(cmsHPROFILE hProfile) { cmsTACestimator bp; cmsUInt32Number dwFormatter; cmsUInt32Number GridPoints[MAX_INPUT_DIMENSIONS]; cmsHPROFILE hLab; cmsContext ContextID = cmsGetProfileContextID(hProfile); // TAC only works on output profiles if (cmsGetDeviceClass(hProfile) != cmsSigOutputClass) { return 0; } // Create a fake formatter for result dwFormatter = cmsFormatterForColorspaceOfProfile(hProfile, 4, TRUE); bp.nOutputChans = T_CHANNELS(dwFormatter); bp.MaxTAC = 0; // Initial TAC is 0 // for safety if (bp.nOutputChans >= cmsMAXCHANNELS) return 0; hLab = cmsCreateLab4ProfileTHR(ContextID, NULL); if (hLab == NULL) return 0; // Setup a roundtrip on perceptual intent in output profile for TAC estimation bp.hRoundTrip = cmsCreateTransformTHR(ContextID, hLab, TYPE_Lab_16, hProfile, dwFormatter, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE); cmsCloseProfile(hLab); if (bp.hRoundTrip == NULL) return 0; // For L* we only need black and white. For C* we need many points GridPoints[0] = 6; GridPoints[1] = 74; GridPoints[2] = 74; if (!cmsSliceSpace16(3, GridPoints, EstimateTAC, &bp)) { bp.MaxTAC = 0; } cmsDeleteTransform(bp.hRoundTrip); // Results in % return bp.MaxTAC; } // Carefully, clamp on CIELab space. cmsBool CMSEXPORT cmsDesaturateLab(cmsCIELab* Lab, double amax, double amin, double bmax, double bmin) { // Whole Luma surface to zero if (Lab -> L < 0) { Lab-> L = Lab->a = Lab-> b = 0.0; return FALSE; } // Clamp white, DISCARD HIGHLIGHTS. This is done // in such way because icc spec doesn't allow the // use of L>100 as a highlight means. if (Lab->L > 100) Lab -> L = 100; // Check out gamut prism, on a, b faces if (Lab -> a < amin || Lab->a > amax|| Lab -> b < bmin || Lab->b > bmax) { cmsCIELCh LCh; double h, slope; // Falls outside a, b limits. Transports to LCh space, // and then do the clipping if (Lab -> a == 0.0) { // Is hue exactly 90? // atan will not work, so clamp here Lab -> b = Lab->b < 0 ? bmin : bmax; return TRUE; } cmsLab2LCh(&LCh, Lab); slope = Lab -> b / Lab -> a; h = LCh.h; // There are 4 zones if ((h >= 0. && h < 45.) || (h >= 315 && h <= 360.)) { // clip by amax Lab -> a = amax; Lab -> b = amax * slope; } else if (h >= 45. && h < 135.) { // clip by bmax Lab -> b = bmax; Lab -> a = bmax / slope; } else if (h >= 135. && h < 225.) { // clip by amin Lab -> a = amin; Lab -> b = amin * slope; } else if (h >= 225. && h < 315.) { // clip by bmin Lab -> b = bmin; Lab -> a = bmin / slope; } else { cmsSignalError(0, cmsERROR_RANGE, "Invalid angle"); return FALSE; } } return TRUE; } lcms2-2.5/src/cmscgats.c0000644002406300000240000021513712163060730014473 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // IT8.7 / CGATS.17-200x handling ----------------------------------------------------------------------------- #define MAXID 128 // Max length of identifier #define MAXSTR 1024 // Max length of string #define MAXTABLES 255 // Max Number of tables in a single stream #define MAXINCLUDE 20 // Max number of nested includes #define DEFAULT_DBL_FORMAT "%.10g" // Double formatting #ifdef CMS_IS_WINDOWS_ # include # define DIR_CHAR '\\' #else # define DIR_CHAR '/' #endif // Symbols typedef enum { SNONE, SINUM, // Integer SDNUM, // Real SIDENT, // Identifier SSTRING, // string SCOMMENT, // comment SEOLN, // End of line SEOF, // End of stream SSYNERROR, // Syntax error found on stream // Keywords SBEGIN_DATA, SBEGIN_DATA_FORMAT, SEND_DATA, SEND_DATA_FORMAT, SKEYWORD, SDATA_FORMAT_ID, SINCLUDE } SYMBOL; // How to write the value typedef enum { WRITE_UNCOOKED, WRITE_STRINGIFY, WRITE_HEXADECIMAL, WRITE_BINARY, WRITE_PAIR } WRITEMODE; // Linked list of variable names typedef struct _KeyVal { struct _KeyVal* Next; char* Keyword; // Name of variable struct _KeyVal* NextSubkey; // If key is a dictionary, points to the next item char* Subkey; // If key is a dictionary, points to the subkey name char* Value; // Points to value WRITEMODE WriteAs; // How to write the value } KEYVALUE; // Linked list of memory chunks (Memory sink) typedef struct _OwnedMem { struct _OwnedMem* Next; void * Ptr; // Point to value } OWNEDMEM; // Suballocator typedef struct _SubAllocator { cmsUInt8Number* Block; cmsUInt32Number BlockSize; cmsUInt32Number Used; } SUBALLOCATOR; // Table. Each individual table can hold properties and rows & cols typedef struct _Table { char SheetType[MAXSTR]; // The first row of the IT8 (the type) int nSamples, nPatches; // Cols, Rows int SampleID; // Pos of ID KEYVALUE* HeaderList; // The properties char** DataFormat; // The binary stream descriptor char** Data; // The binary stream } TABLE; // File stream being parsed typedef struct _FileContext { char FileName[cmsMAX_PATH]; // File name if being readed from file FILE* Stream; // File stream or NULL if holded in memory } FILECTX; // This struct hold all information about an open IT8 handler. typedef struct { cmsUInt32Number TablesCount; // How many tables in this stream cmsUInt32Number nTable; // The actual table TABLE Tab[MAXTABLES]; // Memory management OWNEDMEM* MemorySink; // The storage backend SUBALLOCATOR Allocator; // String suballocator -- just to keep it fast // Parser state machine SYMBOL sy; // Current symbol int ch; // Current character int inum; // integer value cmsFloat64Number dnum; // real value char id[MAXID]; // identifier char str[MAXSTR]; // string // Allowed keywords & datasets. They have visibility on whole stream KEYVALUE* ValidKeywords; KEYVALUE* ValidSampleID; char* Source; // Points to loc. being parsed int lineno; // line counter for error reporting FILECTX* FileStack[MAXINCLUDE]; // Stack of files being parsed int IncludeSP; // Include Stack Pointer char* MemoryBlock; // The stream if holded in memory char DoubleFormatter[MAXID];// Printf-like 'cmsFloat64Number' formatter cmsContext ContextID; // The threading context } cmsIT8; // The stream for save operations typedef struct { FILE* stream; // For save-to-file behaviour cmsUInt8Number* Base; cmsUInt8Number* Ptr; // For save-to-mem behaviour cmsUInt32Number Used; cmsUInt32Number Max; } SAVESTREAM; // ------------------------------------------------------ cmsIT8 parsing routines // A keyword typedef struct { const char *id; SYMBOL sy; } KEYWORD; // The keyword->symbol translation table. Sorting is required. static const KEYWORD TabKeys[] = { {"$INCLUDE", SINCLUDE}, // This is an extension! {".INCLUDE", SINCLUDE}, // This is an extension! {"BEGIN_DATA", SBEGIN_DATA }, {"BEGIN_DATA_FORMAT", SBEGIN_DATA_FORMAT }, {"DATA_FORMAT_IDENTIFIER", SDATA_FORMAT_ID}, {"END_DATA", SEND_DATA}, {"END_DATA_FORMAT", SEND_DATA_FORMAT}, {"KEYWORD", SKEYWORD} }; #define NUMKEYS (sizeof(TabKeys)/sizeof(KEYWORD)) // Predefined properties // A property typedef struct { const char *id; // The identifier WRITEMODE as; // How is supposed to be written } PROPERTY; static PROPERTY PredefinedProperties[] = { {"NUMBER_OF_FIELDS", WRITE_UNCOOKED}, // Required - NUMBER OF FIELDS {"NUMBER_OF_SETS", WRITE_UNCOOKED}, // Required - NUMBER OF SETS {"ORIGINATOR", WRITE_STRINGIFY}, // Required - Identifies the specific system, organization or individual that created the data file. {"FILE_DESCRIPTOR", WRITE_STRINGIFY}, // Required - Describes the purpose or contents of the data file. {"CREATED", WRITE_STRINGIFY}, // Required - Indicates date of creation of the data file. {"DESCRIPTOR", WRITE_STRINGIFY}, // Required - Describes the purpose or contents of the data file. {"DIFFUSE_GEOMETRY", WRITE_STRINGIFY}, // The diffuse geometry used. Allowed values are "sphere" or "opal". {"MANUFACTURER", WRITE_STRINGIFY}, {"MANUFACTURE", WRITE_STRINGIFY}, // Some broken Fuji targets does store this value {"PROD_DATE", WRITE_STRINGIFY}, // Identifies year and month of production of the target in the form yyyy:mm. {"SERIAL", WRITE_STRINGIFY}, // Uniquely identifies individual physical target. {"MATERIAL", WRITE_STRINGIFY}, // Identifies the material on which the target was produced using a code // uniquely identifying th e material. This is intend ed to be used for IT8.7 // physical targets only (i.e . IT8.7/1 a nd IT8.7/2). {"INSTRUMENTATION", WRITE_STRINGIFY}, // Used to report the specific instrumentation used (manufacturer and // model number) to generate the data reported. This data will often // provide more information about the particular data collected than an // extensive list of specific details. This is particularly important for // spectral data or data derived from spectrophotometry. {"MEASUREMENT_SOURCE", WRITE_STRINGIFY}, // Illumination used for spectral measurements. This data helps provide // a guide to the potential for issues of paper fluorescence, etc. {"PRINT_CONDITIONS", WRITE_STRINGIFY}, // Used to define the characteristics of the printed sheet being reported. // Where standard conditions have been defined (e.g., SWOP at nominal) // named conditions may suffice. Otherwise, detailed information is // needed. {"SAMPLE_BACKING", WRITE_STRINGIFY}, // Identifies the backing material used behind the sample during // measurement. Allowed values are black, white, or {"na". {"CHISQ_DOF", WRITE_STRINGIFY}, // Degrees of freedom associated with the Chi squared statistic // below properties are new in recent specs: {"MEASUREMENT_GEOMETRY", WRITE_STRINGIFY}, // The type of measurement, either reflection or transmission, should be indicated // along with details of the geometry and the aperture size and shape. For example, // for transmission measurements it is important to identify 0/diffuse, diffuse/0, // opal or integrating sphere, etc. For reflection it is important to identify 0/45, // 45/0, sphere (specular included or excluded), etc. {"FILTER", WRITE_STRINGIFY}, // Identifies the use of physical filter(s) during measurement. Typically used to // denote the use of filters such as none, D65, Red, Green or Blue. {"POLARIZATION", WRITE_STRINGIFY}, // Identifies the use of a physical polarization filter during measurement. Allowed // values are {"yes, white, none or na. {"WEIGHTING_FUNCTION", WRITE_PAIR}, // Indicates such functions as: the CIE standard observer functions used in the // calculation of various data parameters (2 degree and 10 degree), CIE standard // illuminant functions used in the calculation of various data parameters (e.g., D50, // D65, etc.), density status response, etc. If used there shall be at least one // name-value pair following the WEIGHTING_FUNCTION tag/keyword. The first attribute // in the set shall be {"name" and shall identify the particular parameter used. // The second shall be {"value" and shall provide the value associated with that name. // For ASCII data, a string containing the Name and Value attribute pairs shall follow // the weighting function keyword. A semi-colon separates attribute pairs from each // other and within the attribute the name and value are separated by a comma. {"COMPUTATIONAL_PARAMETER", WRITE_PAIR}, // Parameter that is used in computing a value from measured data. Name is the name // of the calculation, parameter is the name of the parameter used in the calculation // and value is the value of the parameter. {"TARGET_TYPE", WRITE_STRINGIFY}, // The type of target being measured, e.g. IT8.7/1, IT8.7/3, user defined, etc. {"COLORANT", WRITE_STRINGIFY}, // Identifies the colorant(s) used in creating the target. {"TABLE_DESCRIPTOR", WRITE_STRINGIFY}, // Describes the purpose or contents of a data table. {"TABLE_NAME", WRITE_STRINGIFY} // Provides a short name for a data table. }; #define NUMPREDEFINEDPROPS (sizeof(PredefinedProperties)/sizeof(PROPERTY)) // Predefined sample types on dataset static const char* PredefinedSampleID[] = { "SAMPLE_ID", // Identifies sample that data represents "STRING", // Identifies label, or other non-machine readable value. // Value must begin and end with a " symbol "CMYK_C", // Cyan component of CMYK data expressed as a percentage "CMYK_M", // Magenta component of CMYK data expressed as a percentage "CMYK_Y", // Yellow component of CMYK data expressed as a percentage "CMYK_K", // Black component of CMYK data expressed as a percentage "D_RED", // Red filter density "D_GREEN", // Green filter density "D_BLUE", // Blue filter density "D_VIS", // Visual filter density "D_MAJOR_FILTER", // Major filter d ensity "RGB_R", // Red component of RGB data "RGB_G", // Green component of RGB data "RGB_B", // Blue com ponent of RGB data "SPECTRAL_NM", // Wavelength of measurement expressed in nanometers "SPECTRAL_PCT", // Percentage reflectance/transmittance "SPECTRAL_DEC", // Reflectance/transmittance "XYZ_X", // X component of tristimulus data "XYZ_Y", // Y component of tristimulus data "XYZ_Z", // Z component of tristimulus data "XYY_X" // x component of chromaticity data "XYY_Y", // y component of chromaticity data "XYY_CAPY", // Y component of tristimulus data "LAB_L", // L* component of Lab data "LAB_A", // a* component of Lab data "LAB_B", // b* component of Lab data "LAB_C", // C*ab component of Lab data "LAB_H", // hab component of Lab data "LAB_DE", // CIE dE "LAB_DE_94", // CIE dE using CIE 94 "LAB_DE_CMC", // dE using CMC "LAB_DE_2000", // CIE dE using CIE DE 2000 "MEAN_DE", // Mean Delta E (LAB_DE) of samples compared to batch average // (Used for data files for ANSI IT8.7/1 and IT8.7/2 targets) "STDEV_X", // Standard deviation of X (tristimulus data) "STDEV_Y", // Standard deviation of Y (tristimulus data) "STDEV_Z", // Standard deviation of Z (tristimulus data) "STDEV_L", // Standard deviation of L* "STDEV_A", // Standard deviation of a* "STDEV_B", // Standard deviation of b* "STDEV_DE", // Standard deviation of CIE dE "CHI_SQD_PAR"}; // The average of the standard deviations of L*, a* and b*. It is // used to derive an estimate of the chi-squared parameter which is // recommended as the predictor of the variability of dE #define NUMPREDEFINEDSAMPLEID (sizeof(PredefinedSampleID)/sizeof(char *)) //Forward declaration of some internal functions static void* AllocChunk(cmsIT8* it8, cmsUInt32Number size); // Checks whatever c is a separator static cmsBool isseparator(int c) { return (c == ' ') || (c == '\t') ; } // Checks whatever c is a valid identifier char static cmsBool ismiddle(int c) { return (!isseparator(c) && (c != '#') && (c !='\"') && (c != '\'') && (c > 32) && (c < 127)); } // Checks whatsever c is a valid identifier middle char. static cmsBool isidchar(int c) { return isalnum(c) || ismiddle(c); } // Checks whatsever c is a valid identifier first char. static cmsBool isfirstidchar(int c) { return !isdigit(c) && ismiddle(c); } // Guess whether the supplied path looks like an absolute path static cmsBool isabsolutepath(const char *path) { char ThreeChars[4]; if(path == NULL) return FALSE; if (path[0] == 0) return FALSE; strncpy(ThreeChars, path, 3); ThreeChars[3] = 0; if(ThreeChars[0] == DIR_CHAR) return TRUE; #ifdef CMS_IS_WINDOWS_ if (isalpha((int) ThreeChars[0]) && ThreeChars[1] == ':') return TRUE; #endif return FALSE; } // Makes a file path based on a given reference path // NOTE: this function doesn't check if the path exists or even if it's legal static cmsBool BuildAbsolutePath(const char *relPath, const char *basePath, char *buffer, cmsUInt32Number MaxLen) { char *tail; cmsUInt32Number len; // Already absolute? if (isabsolutepath(relPath)) { strncpy(buffer, relPath, MaxLen); buffer[MaxLen-1] = 0; return TRUE; } // No, search for last strncpy(buffer, basePath, MaxLen); buffer[MaxLen-1] = 0; tail = strrchr(buffer, DIR_CHAR); if (tail == NULL) return FALSE; // Is not absolute and has no separators?? len = (cmsUInt32Number) (tail - buffer); if (len >= MaxLen) return FALSE; // No need to assure zero terminator over here strncpy(tail + 1, relPath, MaxLen - len); return TRUE; } // Make sure no exploit is being even tried static const char* NoMeta(const char* str) { if (strchr(str, '%') != NULL) return "**** CORRUPTED FORMAT STRING ***"; return str; } // Syntax error static cmsBool SynError(cmsIT8* it8, const char *Txt, ...) { char Buffer[256], ErrMsg[1024]; va_list args; va_start(args, Txt); vsnprintf(Buffer, 255, Txt, args); Buffer[255] = 0; va_end(args); snprintf(ErrMsg, 1023, "%s: Line %d, %s", it8->FileStack[it8 ->IncludeSP]->FileName, it8->lineno, Buffer); ErrMsg[1023] = 0; it8->sy = SSYNERROR; cmsSignalError(it8 ->ContextID, cmsERROR_CORRUPTION_DETECTED, "%s", ErrMsg); return FALSE; } // Check if current symbol is same as specified. issue an error else. static cmsBool Check(cmsIT8* it8, SYMBOL sy, const char* Err) { if (it8 -> sy != sy) return SynError(it8, NoMeta(Err)); return TRUE; } // Read Next character from stream static void NextCh(cmsIT8* it8) { if (it8 -> FileStack[it8 ->IncludeSP]->Stream) { it8 ->ch = fgetc(it8 ->FileStack[it8 ->IncludeSP]->Stream); if (feof(it8 -> FileStack[it8 ->IncludeSP]->Stream)) { if (it8 ->IncludeSP > 0) { fclose(it8 ->FileStack[it8->IncludeSP--]->Stream); it8 -> ch = ' '; // Whitespace to be ignored } else it8 ->ch = 0; // EOF } } else { it8->ch = *it8->Source; if (it8->ch) it8->Source++; } } // Try to see if current identifier is a keyword, if so return the referred symbol static SYMBOL BinSrchKey(const char *id) { int l = 1; int r = NUMKEYS; int x, res; while (r >= l) { x = (l+r)/2; res = cmsstrcasecmp(id, TabKeys[x-1].id); if (res == 0) return TabKeys[x-1].sy; if (res < 0) r = x - 1; else l = x + 1; } return SNONE; } // 10 ^n static cmsFloat64Number xpow10(int n) { return pow(10, (cmsFloat64Number) n); } // Reads a Real number, tries to follow from integer number static void ReadReal(cmsIT8* it8, int inum) { it8->dnum = (cmsFloat64Number) inum; while (isdigit(it8->ch)) { it8->dnum = it8->dnum * 10.0 + (it8->ch - '0'); NextCh(it8); } if (it8->ch == '.') { // Decimal point cmsFloat64Number frac = 0.0; // fraction int prec = 0; // precision NextCh(it8); // Eats dec. point while (isdigit(it8->ch)) { frac = frac * 10.0 + (it8->ch - '0'); prec++; NextCh(it8); } it8->dnum = it8->dnum + (frac / xpow10(prec)); } // Exponent, example 34.00E+20 if (toupper(it8->ch) == 'E') { int e; int sgn; NextCh(it8); sgn = 1; if (it8->ch == '-') { sgn = -1; NextCh(it8); } else if (it8->ch == '+') { sgn = +1; NextCh(it8); } e = 0; while (isdigit(it8->ch)) { if ((cmsFloat64Number) e * 10L < INT_MAX) e = e * 10 + (it8->ch - '0'); NextCh(it8); } e = sgn*e; it8 -> dnum = it8 -> dnum * xpow10(e); } } // Parses a float number // This can not call directly atof because it uses locale dependant // parsing, while CCMX files always use . as decimal separator static cmsFloat64Number ParseFloatNumber(const char *Buffer) { cmsFloat64Number dnum = 0.0; int sign = 1; // keep safe if (Buffer == NULL) return 0.0; if (*Buffer == '-' || *Buffer == '+') { sign = (*Buffer == '-') ? -1 : 1; Buffer++; } while (*Buffer && isdigit((int) *Buffer)) { dnum = dnum * 10.0 + (*Buffer - '0'); if (*Buffer) Buffer++; } if (*Buffer == '.') { cmsFloat64Number frac = 0.0; // fraction int prec = 0; // precission if (*Buffer) Buffer++; while (*Buffer && isdigit((int) *Buffer)) { frac = frac * 10.0 + (*Buffer - '0'); prec++; if (*Buffer) Buffer++; } dnum = dnum + (frac / xpow10(prec)); } // Exponent, example 34.00E+20 if (*Buffer && toupper(*Buffer) == 'E') { int e; int sgn; if (*Buffer) Buffer++; sgn = 1; if (*Buffer == '-') { sgn = -1; if (*Buffer) Buffer++; } else if (*Buffer == '+') { sgn = +1; if (*Buffer) Buffer++; } e = 0; while (*Buffer && isdigit((int) *Buffer)) { if ((cmsFloat64Number) e * 10L < INT_MAX) e = e * 10 + (*Buffer - '0'); if (*Buffer) Buffer++; } e = sgn*e; dnum = dnum * xpow10(e); } return sign * dnum; } // Reads next symbol static void InSymbol(cmsIT8* it8) { register char *idptr; register int k; SYMBOL key; int sng; do { while (isseparator(it8->ch)) NextCh(it8); if (isfirstidchar(it8->ch)) { // Identifier k = 0; idptr = it8->id; do { if (++k < MAXID) *idptr++ = (char) it8->ch; NextCh(it8); } while (isidchar(it8->ch)); *idptr = '\0'; key = BinSrchKey(it8->id); if (key == SNONE) it8->sy = SIDENT; else it8->sy = key; } else // Is a number? if (isdigit(it8->ch) || it8->ch == '.' || it8->ch == '-' || it8->ch == '+') { int sign = 1; if (it8->ch == '-') { sign = -1; NextCh(it8); } it8->inum = 0; it8->sy = SINUM; if (it8->ch == '0') { // 0xnnnn (Hexa) or 0bnnnn (Binary) NextCh(it8); if (toupper(it8->ch) == 'X') { int j; NextCh(it8); while (isxdigit(it8->ch)) { it8->ch = toupper(it8->ch); if (it8->ch >= 'A' && it8->ch <= 'F') j = it8->ch -'A'+10; else j = it8->ch - '0'; if ((long) it8->inum * 16L > (long) INT_MAX) { SynError(it8, "Invalid hexadecimal number"); return; } it8->inum = it8->inum * 16 + j; NextCh(it8); } return; } if (toupper(it8->ch) == 'B') { // Binary int j; NextCh(it8); while (it8->ch == '0' || it8->ch == '1') { j = it8->ch - '0'; if ((long) it8->inum * 2L > (long) INT_MAX) { SynError(it8, "Invalid binary number"); return; } it8->inum = it8->inum * 2 + j; NextCh(it8); } return; } } while (isdigit(it8->ch)) { if ((long) it8->inum * 10L > (long) INT_MAX) { ReadReal(it8, it8->inum); it8->sy = SDNUM; it8->dnum *= sign; return; } it8->inum = it8->inum * 10 + (it8->ch - '0'); NextCh(it8); } if (it8->ch == '.') { ReadReal(it8, it8->inum); it8->sy = SDNUM; it8->dnum *= sign; return; } it8 -> inum *= sign; // Special case. Numbers followed by letters are taken as identifiers if (isidchar(it8 ->ch)) { if (it8 ->sy == SINUM) { sprintf(it8->id, "%d", it8->inum); } else { sprintf(it8->id, it8 ->DoubleFormatter, it8->dnum); } k = (int) strlen(it8 ->id); idptr = it8 ->id + k; do { if (++k < MAXID) *idptr++ = (char) it8->ch; NextCh(it8); } while (isidchar(it8->ch)); *idptr = '\0'; it8->sy = SIDENT; } return; } else switch ((int) it8->ch) { // EOF marker -- ignore it case '\x1a': NextCh(it8); break; // Eof stream markers case 0: case -1: it8->sy = SEOF; break; // Next line case '\r': NextCh(it8); if (it8 ->ch == '\n') NextCh(it8); it8->sy = SEOLN; it8->lineno++; break; case '\n': NextCh(it8); it8->sy = SEOLN; it8->lineno++; break; // Comment case '#': NextCh(it8); while (it8->ch && it8->ch != '\n' && it8->ch != '\r') NextCh(it8); it8->sy = SCOMMENT; break; // String. case '\'': case '\"': idptr = it8->str; sng = it8->ch; k = 0; NextCh(it8); while (k < MAXSTR && it8->ch != sng) { if (it8->ch == '\n'|| it8->ch == '\r') k = MAXSTR+1; else { *idptr++ = (char) it8->ch; NextCh(it8); k++; } } it8->sy = SSTRING; *idptr = '\0'; NextCh(it8); break; default: SynError(it8, "Unrecognized character: 0x%x", it8 ->ch); return; } } while (it8->sy == SCOMMENT); // Handle the include special token if (it8 -> sy == SINCLUDE) { FILECTX* FileNest; if(it8 -> IncludeSP >= (MAXINCLUDE-1)) { SynError(it8, "Too many recursion levels"); return; } InSymbol(it8); if (!Check(it8, SSTRING, "Filename expected")) return; FileNest = it8 -> FileStack[it8 -> IncludeSP + 1]; if(FileNest == NULL) { FileNest = it8 ->FileStack[it8 -> IncludeSP + 1] = (FILECTX*)AllocChunk(it8, sizeof(FILECTX)); //if(FileNest == NULL) // TODO: how to manage out-of-memory conditions? } if (BuildAbsolutePath(it8->str, it8->FileStack[it8->IncludeSP]->FileName, FileNest->FileName, cmsMAX_PATH-1) == FALSE) { SynError(it8, "File path too long"); return; } FileNest->Stream = fopen(FileNest->FileName, "rt"); if (FileNest->Stream == NULL) { SynError(it8, "File %s not found", FileNest->FileName); return; } it8->IncludeSP++; it8 ->ch = ' '; InSymbol(it8); } } // Checks end of line separator static cmsBool CheckEOLN(cmsIT8* it8) { if (!Check(it8, SEOLN, "Expected separator")) return FALSE; while (it8 -> sy == SEOLN) InSymbol(it8); return TRUE; } // Skip a symbol static void Skip(cmsIT8* it8, SYMBOL sy) { if (it8->sy == sy && it8->sy != SEOF) InSymbol(it8); } // Skip multiple EOLN static void SkipEOLN(cmsIT8* it8) { while (it8->sy == SEOLN) { InSymbol(it8); } } // Returns a string holding current value static cmsBool GetVal(cmsIT8* it8, char* Buffer, cmsUInt32Number max, const char* ErrorTitle) { switch (it8->sy) { case SEOLN: // Empty value Buffer[0]=0; break; case SIDENT: strncpy(Buffer, it8->id, max); Buffer[max-1]=0; break; case SINUM: snprintf(Buffer, max, "%d", it8 -> inum); break; case SDNUM: snprintf(Buffer, max, it8->DoubleFormatter, it8 -> dnum); break; case SSTRING: strncpy(Buffer, it8->str, max); Buffer[max-1] = 0; break; default: return SynError(it8, "%s", ErrorTitle); } Buffer[max] = 0; return TRUE; } // ---------------------------------------------------------- Table static TABLE* GetTable(cmsIT8* it8) { if ((it8 -> nTable >= it8 ->TablesCount)) { SynError(it8, "Table %d out of sequence", it8 -> nTable); return it8 -> Tab; } return it8 ->Tab + it8 ->nTable; } // ---------------------------------------------------------- Memory management // Frees an allocator and owned memory void CMSEXPORT cmsIT8Free(cmsHANDLE hIT8) { cmsIT8* it8 = (cmsIT8*) hIT8; if (it8 == NULL) return; if (it8->MemorySink) { OWNEDMEM* p; OWNEDMEM* n; for (p = it8->MemorySink; p != NULL; p = n) { n = p->Next; if (p->Ptr) _cmsFree(it8 ->ContextID, p->Ptr); _cmsFree(it8 ->ContextID, p); } } if (it8->MemoryBlock) _cmsFree(it8 ->ContextID, it8->MemoryBlock); _cmsFree(it8 ->ContextID, it8); } // Allocates a chunk of data, keep linked list static void* AllocBigBlock(cmsIT8* it8, cmsUInt32Number size) { OWNEDMEM* ptr1; void* ptr = _cmsMallocZero(it8->ContextID, size); if (ptr != NULL) { ptr1 = (OWNEDMEM*) _cmsMallocZero(it8 ->ContextID, sizeof(OWNEDMEM)); if (ptr1 == NULL) { _cmsFree(it8 ->ContextID, ptr); return NULL; } ptr1-> Ptr = ptr; ptr1-> Next = it8 -> MemorySink; it8 -> MemorySink = ptr1; } return ptr; } // Suballocator. static void* AllocChunk(cmsIT8* it8, cmsUInt32Number size) { cmsUInt32Number Free = it8 ->Allocator.BlockSize - it8 ->Allocator.Used; cmsUInt8Number* ptr; size = _cmsALIGNMEM(size); if (size > Free) { if (it8 -> Allocator.BlockSize == 0) it8 -> Allocator.BlockSize = 20*1024; else it8 ->Allocator.BlockSize *= 2; if (it8 ->Allocator.BlockSize < size) it8 ->Allocator.BlockSize = size; it8 ->Allocator.Used = 0; it8 ->Allocator.Block = (cmsUInt8Number*) AllocBigBlock(it8, it8 ->Allocator.BlockSize); } ptr = it8 ->Allocator.Block + it8 ->Allocator.Used; it8 ->Allocator.Used += size; return (void*) ptr; } // Allocates a string static char *AllocString(cmsIT8* it8, const char* str) { cmsUInt32Number Size = (cmsUInt32Number) strlen(str)+1; char *ptr; ptr = (char *) AllocChunk(it8, Size); if (ptr) strncpy (ptr, str, Size-1); return ptr; } // Searches through linked list static cmsBool IsAvailableOnList(KEYVALUE* p, const char* Key, const char* Subkey, KEYVALUE** LastPtr) { if (LastPtr) *LastPtr = p; for (; p != NULL; p = p->Next) { if (LastPtr) *LastPtr = p; if (*Key != '#') { // Comments are ignored if (cmsstrcasecmp(Key, p->Keyword) == 0) break; } } if (p == NULL) return FALSE; if (Subkey == 0) return TRUE; for (; p != NULL; p = p->NextSubkey) { if (p ->Subkey == NULL) continue; if (LastPtr) *LastPtr = p; if (cmsstrcasecmp(Subkey, p->Subkey) == 0) return TRUE; } return FALSE; } // Add a property into a linked list static KEYVALUE* AddToList(cmsIT8* it8, KEYVALUE** Head, const char *Key, const char *Subkey, const char* xValue, WRITEMODE WriteAs) { KEYVALUE* p; KEYVALUE* last; // Check if property is already in list if (IsAvailableOnList(*Head, Key, Subkey, &p)) { // This may work for editing properties // return SynError(it8, "duplicate key <%s>", Key); } else { last = p; // Allocate the container p = (KEYVALUE*) AllocChunk(it8, sizeof(KEYVALUE)); if (p == NULL) { SynError(it8, "AddToList: out of memory"); return NULL; } // Store name and value p->Keyword = AllocString(it8, Key); p->Subkey = (Subkey == NULL) ? NULL : AllocString(it8, Subkey); // Keep the container in our list if (*Head == NULL) { *Head = p; } else { if (Subkey != NULL && last != NULL) { last->NextSubkey = p; // If Subkey is not null, then last is the last property with the same key, // but not necessarily is the last property in the list, so we need to move // to the actual list end while (last->Next != NULL) last = last->Next; } if (last != NULL) last->Next = p; } p->Next = NULL; p->NextSubkey = NULL; } p->WriteAs = WriteAs; if (xValue != NULL) { p->Value = AllocString(it8, xValue); } else { p->Value = NULL; } return p; } static KEYVALUE* AddAvailableProperty(cmsIT8* it8, const char* Key, WRITEMODE as) { return AddToList(it8, &it8->ValidKeywords, Key, NULL, NULL, as); } static KEYVALUE* AddAvailableSampleID(cmsIT8* it8, const char* Key) { return AddToList(it8, &it8->ValidSampleID, Key, NULL, NULL, WRITE_UNCOOKED); } static void AllocTable(cmsIT8* it8) { TABLE* t; t = it8 ->Tab + it8 ->TablesCount; t->HeaderList = NULL; t->DataFormat = NULL; t->Data = NULL; it8 ->TablesCount++; } cmsInt32Number CMSEXPORT cmsIT8SetTable(cmsHANDLE IT8, cmsUInt32Number nTable) { cmsIT8* it8 = (cmsIT8*) IT8; if (nTable >= it8 ->TablesCount) { if (nTable == it8 ->TablesCount) { AllocTable(it8); } else { SynError(it8, "Table %d is out of sequence", nTable); return -1; } } it8 ->nTable = nTable; return (cmsInt32Number) nTable; } // Init an empty container cmsHANDLE CMSEXPORT cmsIT8Alloc(cmsContext ContextID) { cmsIT8* it8; cmsUInt32Number i; it8 = (cmsIT8*) _cmsMallocZero(ContextID, sizeof(cmsIT8)); if (it8 == NULL) return NULL; AllocTable(it8); it8->MemoryBlock = NULL; it8->MemorySink = NULL; it8 ->nTable = 0; it8->ContextID = ContextID; it8->Allocator.Used = 0; it8->Allocator.Block = NULL; it8->Allocator.BlockSize = 0; it8->ValidKeywords = NULL; it8->ValidSampleID = NULL; it8 -> sy = SNONE; it8 -> ch = ' '; it8 -> Source = NULL; it8 -> inum = 0; it8 -> dnum = 0.0; it8->FileStack[0] = (FILECTX*)AllocChunk(it8, sizeof(FILECTX)); it8->IncludeSP = 0; it8 -> lineno = 1; strcpy(it8->DoubleFormatter, DEFAULT_DBL_FORMAT); cmsIT8SetSheetType((cmsHANDLE) it8, "CGATS.17"); // Initialize predefined properties & data for (i=0; i < NUMPREDEFINEDPROPS; i++) AddAvailableProperty(it8, PredefinedProperties[i].id, PredefinedProperties[i].as); for (i=0; i < NUMPREDEFINEDSAMPLEID; i++) AddAvailableSampleID(it8, PredefinedSampleID[i]); return (cmsHANDLE) it8; } const char* CMSEXPORT cmsIT8GetSheetType(cmsHANDLE hIT8) { return GetTable((cmsIT8*) hIT8)->SheetType; } cmsBool CMSEXPORT cmsIT8SetSheetType(cmsHANDLE hIT8, const char* Type) { TABLE* t = GetTable((cmsIT8*) hIT8); strncpy(t ->SheetType, Type, MAXSTR-1); t ->SheetType[MAXSTR-1] = 0; return TRUE; } cmsBool CMSEXPORT cmsIT8SetComment(cmsHANDLE hIT8, const char* Val) { cmsIT8* it8 = (cmsIT8*) hIT8; if (!Val) return FALSE; if (!*Val) return FALSE; return AddToList(it8, &GetTable(it8)->HeaderList, "# ", NULL, Val, WRITE_UNCOOKED) != NULL; } // Sets a property cmsBool CMSEXPORT cmsIT8SetPropertyStr(cmsHANDLE hIT8, const char* Key, const char *Val) { cmsIT8* it8 = (cmsIT8*) hIT8; if (!Val) return FALSE; if (!*Val) return FALSE; return AddToList(it8, &GetTable(it8)->HeaderList, Key, NULL, Val, WRITE_STRINGIFY) != NULL; } cmsBool CMSEXPORT cmsIT8SetPropertyDbl(cmsHANDLE hIT8, const char* cProp, cmsFloat64Number Val) { cmsIT8* it8 = (cmsIT8*) hIT8; char Buffer[1024]; sprintf(Buffer, it8->DoubleFormatter, Val); return AddToList(it8, &GetTable(it8)->HeaderList, cProp, NULL, Buffer, WRITE_UNCOOKED) != NULL; } cmsBool CMSEXPORT cmsIT8SetPropertyHex(cmsHANDLE hIT8, const char* cProp, cmsUInt32Number Val) { cmsIT8* it8 = (cmsIT8*) hIT8; char Buffer[1024]; sprintf(Buffer, "%u", Val); return AddToList(it8, &GetTable(it8)->HeaderList, cProp, NULL, Buffer, WRITE_HEXADECIMAL) != NULL; } cmsBool CMSEXPORT cmsIT8SetPropertyUncooked(cmsHANDLE hIT8, const char* Key, const char* Buffer) { cmsIT8* it8 = (cmsIT8*) hIT8; return AddToList(it8, &GetTable(it8)->HeaderList, Key, NULL, Buffer, WRITE_UNCOOKED) != NULL; } cmsBool CMSEXPORT cmsIT8SetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char* SubKey, const char *Buffer) { cmsIT8* it8 = (cmsIT8*) hIT8; return AddToList(it8, &GetTable(it8)->HeaderList, Key, SubKey, Buffer, WRITE_PAIR) != NULL; } // Gets a property const char* CMSEXPORT cmsIT8GetProperty(cmsHANDLE hIT8, const char* Key) { cmsIT8* it8 = (cmsIT8*) hIT8; KEYVALUE* p; if (IsAvailableOnList(GetTable(it8) -> HeaderList, Key, NULL, &p)) { return p -> Value; } return NULL; } cmsFloat64Number CMSEXPORT cmsIT8GetPropertyDbl(cmsHANDLE hIT8, const char* cProp) { const char *v = cmsIT8GetProperty(hIT8, cProp); if (v == NULL) return 0.0; return ParseFloatNumber(v); } const char* CMSEXPORT cmsIT8GetPropertyMulti(cmsHANDLE hIT8, const char* Key, const char *SubKey) { cmsIT8* it8 = (cmsIT8*) hIT8; KEYVALUE* p; if (IsAvailableOnList(GetTable(it8) -> HeaderList, Key, SubKey, &p)) { return p -> Value; } return NULL; } // ----------------------------------------------------------------- Datasets static void AllocateDataFormat(cmsIT8* it8) { TABLE* t = GetTable(it8); if (t -> DataFormat) return; // Already allocated t -> nSamples = (int) cmsIT8GetPropertyDbl(it8, "NUMBER_OF_FIELDS"); if (t -> nSamples <= 0) { SynError(it8, "AllocateDataFormat: Unknown NUMBER_OF_FIELDS"); t -> nSamples = 10; } t -> DataFormat = (char**) AllocChunk (it8, ((cmsUInt32Number) t->nSamples + 1) * sizeof(char *)); if (t->DataFormat == NULL) { SynError(it8, "AllocateDataFormat: Unable to allocate dataFormat array"); } } static const char *GetDataFormat(cmsIT8* it8, int n) { TABLE* t = GetTable(it8); if (t->DataFormat) return t->DataFormat[n]; return NULL; } static cmsBool SetDataFormat(cmsIT8* it8, int n, const char *label) { TABLE* t = GetTable(it8); if (!t->DataFormat) AllocateDataFormat(it8); if (n > t -> nSamples) { SynError(it8, "More than NUMBER_OF_FIELDS fields."); return FALSE; } if (t->DataFormat) { t->DataFormat[n] = AllocString(it8, label); } return TRUE; } cmsBool CMSEXPORT cmsIT8SetDataFormat(cmsHANDLE h, int n, const char *Sample) { cmsIT8* it8 = (cmsIT8*) h; return SetDataFormat(it8, n, Sample); } static void AllocateDataSet(cmsIT8* it8) { TABLE* t = GetTable(it8); if (t -> Data) return; // Already allocated t-> nSamples = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS")); t-> nPatches = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS")); t-> Data = (char**)AllocChunk (it8, ((cmsUInt32Number) t->nSamples + 1) * ((cmsUInt32Number) t->nPatches + 1) *sizeof (char*)); if (t->Data == NULL) { SynError(it8, "AllocateDataSet: Unable to allocate data array"); } } static char* GetData(cmsIT8* it8, int nSet, int nField) { TABLE* t = GetTable(it8); int nSamples = t -> nSamples; int nPatches = t -> nPatches; if (nSet >= nPatches || nField >= nSamples) return NULL; if (!t->Data) return NULL; return t->Data [nSet * nSamples + nField]; } static cmsBool SetData(cmsIT8* it8, int nSet, int nField, const char *Val) { TABLE* t = GetTable(it8); if (!t->Data) AllocateDataSet(it8); if (!t->Data) return FALSE; if (nSet > t -> nPatches || nSet < 0) { return SynError(it8, "Patch %d out of range, there are %d patches", nSet, t -> nPatches); } if (nField > t ->nSamples || nField < 0) { return SynError(it8, "Sample %d out of range, there are %d samples", nField, t ->nSamples); } t->Data [nSet * t -> nSamples + nField] = AllocString(it8, Val); return TRUE; } // --------------------------------------------------------------- File I/O // Writes a string to file static void WriteStr(SAVESTREAM* f, const char *str) { cmsUInt32Number len; if (str == NULL) str = " "; // Length to write len = (cmsUInt32Number) strlen(str); f ->Used += len; if (f ->stream) { // Should I write it to a file? if (fwrite(str, 1, len, f->stream) != len) { cmsSignalError(0, cmsERROR_WRITE, "Write to file error in CGATS parser"); return; } } else { // Or to a memory block? if (f ->Base) { // Am I just counting the bytes? if (f ->Used > f ->Max) { cmsSignalError(0, cmsERROR_WRITE, "Write to memory overflows in CGATS parser"); return; } memmove(f ->Ptr, str, len); f->Ptr += len; } } } // Write formatted static void Writef(SAVESTREAM* f, const char* frm, ...) { char Buffer[4096]; va_list args; va_start(args, frm); vsnprintf(Buffer, 4095, frm, args); Buffer[4095] = 0; WriteStr(f, Buffer); va_end(args); } // Writes full header static void WriteHeader(cmsIT8* it8, SAVESTREAM* fp) { KEYVALUE* p; TABLE* t = GetTable(it8); // Writes the type WriteStr(fp, t->SheetType); WriteStr(fp, "\n"); for (p = t->HeaderList; (p != NULL); p = p->Next) { if (*p ->Keyword == '#') { char* Pt; WriteStr(fp, "#\n# "); for (Pt = p ->Value; *Pt; Pt++) { Writef(fp, "%c", *Pt); if (*Pt == '\n') { WriteStr(fp, "# "); } } WriteStr(fp, "\n#\n"); continue; } if (!IsAvailableOnList(it8-> ValidKeywords, p->Keyword, NULL, NULL)) { #ifdef CMS_STRICT_CGATS WriteStr(fp, "KEYWORD\t\""); WriteStr(fp, p->Keyword); WriteStr(fp, "\"\n"); #endif AddAvailableProperty(it8, p->Keyword, WRITE_UNCOOKED); } WriteStr(fp, p->Keyword); if (p->Value) { switch (p ->WriteAs) { case WRITE_UNCOOKED: Writef(fp, "\t%s", p ->Value); break; case WRITE_STRINGIFY: Writef(fp, "\t\"%s\"", p->Value ); break; case WRITE_HEXADECIMAL: Writef(fp, "\t0x%X", atoi(p ->Value)); break; case WRITE_BINARY: Writef(fp, "\t0x%B", atoi(p ->Value)); break; case WRITE_PAIR: Writef(fp, "\t\"%s,%s\"", p->Subkey, p->Value); break; default: SynError(it8, "Unknown write mode %d", p ->WriteAs); return; } } WriteStr (fp, "\n"); } } // Writes the data format static void WriteDataFormat(SAVESTREAM* fp, cmsIT8* it8) { int i, nSamples; TABLE* t = GetTable(it8); if (!t -> DataFormat) return; WriteStr(fp, "BEGIN_DATA_FORMAT\n"); WriteStr(fp, " "); nSamples = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS")); for (i = 0; i < nSamples; i++) { WriteStr(fp, t->DataFormat[i]); WriteStr(fp, ((i == (nSamples-1)) ? "\n" : "\t")); } WriteStr (fp, "END_DATA_FORMAT\n"); } // Writes data array static void WriteData(SAVESTREAM* fp, cmsIT8* it8) { int i, j; TABLE* t = GetTable(it8); if (!t->Data) return; WriteStr (fp, "BEGIN_DATA\n"); t->nPatches = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS")); for (i = 0; i < t-> nPatches; i++) { WriteStr(fp, " "); for (j = 0; j < t->nSamples; j++) { char *ptr = t->Data[i*t->nSamples+j]; if (ptr == NULL) WriteStr(fp, "\"\""); else { // If value contains whitespace, enclose within quote if (strchr(ptr, ' ') != NULL) { WriteStr(fp, "\""); WriteStr(fp, ptr); WriteStr(fp, "\""); } else WriteStr(fp, ptr); } WriteStr(fp, ((j == (t->nSamples-1)) ? "\n" : "\t")); } } WriteStr (fp, "END_DATA\n"); } // Saves whole file cmsBool CMSEXPORT cmsIT8SaveToFile(cmsHANDLE hIT8, const char* cFileName) { SAVESTREAM sd; cmsUInt32Number i; cmsIT8* it8 = (cmsIT8*) hIT8; memset(&sd, 0, sizeof(sd)); sd.stream = fopen(cFileName, "wt"); if (!sd.stream) return FALSE; for (i=0; i < it8 ->TablesCount; i++) { cmsIT8SetTable(hIT8, i); WriteHeader(it8, &sd); WriteDataFormat(&sd, it8); WriteData(&sd, it8); } if (fclose(sd.stream) != 0) return FALSE; return TRUE; } // Saves to memory cmsBool CMSEXPORT cmsIT8SaveToMem(cmsHANDLE hIT8, void *MemPtr, cmsUInt32Number* BytesNeeded) { SAVESTREAM sd; cmsUInt32Number i; cmsIT8* it8 = (cmsIT8*) hIT8; memset(&sd, 0, sizeof(sd)); sd.stream = NULL; sd.Base = (cmsUInt8Number*) MemPtr; sd.Ptr = sd.Base; sd.Used = 0; if (sd.Base) sd.Max = *BytesNeeded; // Write to memory? else sd.Max = 0; // Just counting the needed bytes for (i=0; i < it8 ->TablesCount; i++) { cmsIT8SetTable(hIT8, i); WriteHeader(it8, &sd); WriteDataFormat(&sd, it8); WriteData(&sd, it8); } sd.Used++; // The \0 at the very end if (sd.Base) *sd.Ptr = 0; *BytesNeeded = sd.Used; return TRUE; } // -------------------------------------------------------------- Higer level parsing static cmsBool DataFormatSection(cmsIT8* it8) { int iField = 0; TABLE* t = GetTable(it8); InSymbol(it8); // Eats "BEGIN_DATA_FORMAT" CheckEOLN(it8); while (it8->sy != SEND_DATA_FORMAT && it8->sy != SEOLN && it8->sy != SEOF && it8->sy != SSYNERROR) { if (it8->sy != SIDENT) { return SynError(it8, "Sample type expected"); } if (!SetDataFormat(it8, iField, it8->id)) return FALSE; iField++; InSymbol(it8); SkipEOLN(it8); } SkipEOLN(it8); Skip(it8, SEND_DATA_FORMAT); SkipEOLN(it8); if (iField != t ->nSamples) { SynError(it8, "Count mismatch. NUMBER_OF_FIELDS was %d, found %d\n", t ->nSamples, iField); } return TRUE; } static cmsBool DataSection (cmsIT8* it8) { int iField = 0; int iSet = 0; char Buffer[256]; TABLE* t = GetTable(it8); InSymbol(it8); // Eats "BEGIN_DATA" CheckEOLN(it8); if (!t->Data) AllocateDataSet(it8); while (it8->sy != SEND_DATA && it8->sy != SEOF) { if (iField >= t -> nSamples) { iField = 0; iSet++; } if (it8->sy != SEND_DATA && it8->sy != SEOF) { if (!GetVal(it8, Buffer, 255, "Sample data expected")) return FALSE; if (!SetData(it8, iSet, iField, Buffer)) return FALSE; iField++; InSymbol(it8); SkipEOLN(it8); } } SkipEOLN(it8); Skip(it8, SEND_DATA); SkipEOLN(it8); // Check for data completion. if ((iSet+1) != t -> nPatches) return SynError(it8, "Count mismatch. NUMBER_OF_SETS was %d, found %d\n", t ->nPatches, iSet+1); return TRUE; } static cmsBool HeaderSection(cmsIT8* it8) { char VarName[MAXID]; char Buffer[MAXSTR]; KEYVALUE* Key; while (it8->sy != SEOF && it8->sy != SSYNERROR && it8->sy != SBEGIN_DATA_FORMAT && it8->sy != SBEGIN_DATA) { switch (it8 -> sy) { case SKEYWORD: InSymbol(it8); if (!GetVal(it8, Buffer, MAXSTR-1, "Keyword expected")) return FALSE; if (!AddAvailableProperty(it8, Buffer, WRITE_UNCOOKED)) return FALSE; InSymbol(it8); break; case SDATA_FORMAT_ID: InSymbol(it8); if (!GetVal(it8, Buffer, MAXSTR-1, "Keyword expected")) return FALSE; if (!AddAvailableSampleID(it8, Buffer)) return FALSE; InSymbol(it8); break; case SIDENT: strncpy(VarName, it8->id, MAXID-1); VarName[MAXID-1] = 0; if (!IsAvailableOnList(it8-> ValidKeywords, VarName, NULL, &Key)) { #ifdef CMS_STRICT_CGATS return SynError(it8, "Undefined keyword '%s'", VarName); #else Key = AddAvailableProperty(it8, VarName, WRITE_UNCOOKED); if (Key == NULL) return FALSE; #endif } InSymbol(it8); if (!GetVal(it8, Buffer, MAXSTR-1, "Property data expected")) return FALSE; if(Key->WriteAs != WRITE_PAIR) { AddToList(it8, &GetTable(it8)->HeaderList, VarName, NULL, Buffer, (it8->sy == SSTRING) ? WRITE_STRINGIFY : WRITE_UNCOOKED); } else { const char *Subkey; char *Nextkey; if (it8->sy != SSTRING) return SynError(it8, "Invalid value '%s' for property '%s'.", Buffer, VarName); // chop the string as a list of "subkey, value" pairs, using ';' as a separator for (Subkey = Buffer; Subkey != NULL; Subkey = Nextkey) { char *Value, *temp; // identify token pair boundary Nextkey = (char*) strchr(Subkey, ';'); if(Nextkey) *Nextkey++ = '\0'; // for each pair, split the subkey and the value Value = (char*) strrchr(Subkey, ','); if(Value == NULL) return SynError(it8, "Invalid value for property '%s'.", VarName); // gobble the spaces before the coma, and the coma itself temp = Value++; do *temp-- = '\0'; while(temp >= Subkey && *temp == ' '); // gobble any space at the right temp = Value + strlen(Value) - 1; while(*temp == ' ') *temp-- = '\0'; // trim the strings from the left Subkey += strspn(Subkey, " "); Value += strspn(Value, " "); if(Subkey[0] == 0 || Value[0] == 0) return SynError(it8, "Invalid value for property '%s'.", VarName); AddToList(it8, &GetTable(it8)->HeaderList, VarName, Subkey, Value, WRITE_PAIR); } } InSymbol(it8); break; case SEOLN: break; default: return SynError(it8, "expected keyword or identifier"); } SkipEOLN(it8); } return TRUE; } static void ReadType(cmsIT8* it8, char* SheetTypePtr) { // First line is a very special case. while (isseparator(it8->ch)) NextCh(it8); while (it8->ch != '\r' && it8 ->ch != '\n' && it8->ch != '\t' && it8 -> ch != -1) { *SheetTypePtr++= (char) it8 ->ch; NextCh(it8); } *SheetTypePtr = 0; } static cmsBool ParseIT8(cmsIT8* it8, cmsBool nosheet) { char* SheetTypePtr = it8 ->Tab[0].SheetType; if (nosheet == 0) { ReadType(it8, SheetTypePtr); } InSymbol(it8); SkipEOLN(it8); while (it8-> sy != SEOF && it8-> sy != SSYNERROR) { switch (it8 -> sy) { case SBEGIN_DATA_FORMAT: if (!DataFormatSection(it8)) return FALSE; break; case SBEGIN_DATA: if (!DataSection(it8)) return FALSE; if (it8 -> sy != SEOF) { AllocTable(it8); it8 ->nTable = it8 ->TablesCount - 1; // Read sheet type if present. We only support identifier and string. // is a type string // anything else, is not a type string if (nosheet == 0) { if (it8 ->sy == SIDENT) { // May be a type sheet or may be a prop value statement. We cannot use insymbol in // this special case... while (isseparator(it8->ch)) NextCh(it8); // If a newline is found, then this is a type string if (it8 ->ch == '\n' || it8->ch == '\r') { cmsIT8SetSheetType(it8, it8 ->id); InSymbol(it8); } else { // It is not. Just continue cmsIT8SetSheetType(it8, ""); } } else // Validate quoted strings if (it8 ->sy == SSTRING) { cmsIT8SetSheetType(it8, it8 ->str); InSymbol(it8); } } } break; case SEOLN: SkipEOLN(it8); break; default: if (!HeaderSection(it8)) return FALSE; } } return (it8 -> sy != SSYNERROR); } // Init usefull pointers static void CookPointers(cmsIT8* it8) { int idField, i; char* Fld; cmsUInt32Number j; cmsUInt32Number nOldTable = it8 ->nTable; for (j=0; j < it8 ->TablesCount; j++) { TABLE* t = it8 ->Tab + j; t -> SampleID = 0; it8 ->nTable = j; for (idField = 0; idField < t -> nSamples; idField++) { if (t ->DataFormat == NULL){ SynError(it8, "Undefined DATA_FORMAT"); return; } Fld = t->DataFormat[idField]; if (!Fld) continue; if (cmsstrcasecmp(Fld, "SAMPLE_ID") == 0) { t -> SampleID = idField; for (i=0; i < t -> nPatches; i++) { char *Data = GetData(it8, i, idField); if (Data) { char Buffer[256]; strncpy(Buffer, Data, 255); Buffer[255] = 0; if (strlen(Buffer) <= strlen(Data)) strcpy(Data, Buffer); else SetData(it8, i, idField, Buffer); } } } // "LABEL" is an extension. It keeps references to forward tables if ((cmsstrcasecmp(Fld, "LABEL") == 0) || Fld[0] == '$' ) { // Search for table references... for (i=0; i < t -> nPatches; i++) { char *Label = GetData(it8, i, idField); if (Label) { cmsUInt32Number k; // This is the label, search for a table containing // this property for (k=0; k < it8 ->TablesCount; k++) { TABLE* Table = it8 ->Tab + k; KEYVALUE* p; if (IsAvailableOnList(Table->HeaderList, Label, NULL, &p)) { // Available, keep type and table char Buffer[256]; char *Type = p ->Value; int nTable = (int) k; snprintf(Buffer, 255, "%s %d %s", Label, nTable, Type ); SetData(it8, i, idField, Buffer); } } } } } } } it8 ->nTable = nOldTable; } // Try to infere if the file is a CGATS/IT8 file at all. Read first line // that should be something like some printable characters plus a \n // returns 0 if this is not like a CGATS, or an integer otherwise. This integer is the number of words in first line? static int IsMyBlock(cmsUInt8Number* Buffer, int n) { int words = 1, space = 0, quot = 0; int i; if (n < 10) return 0; // Too small if (n > 132) n = 132; for (i = 1; i < n; i++) { switch(Buffer[i]) { case '\n': case '\r': return ((quot == 1) || (words > 2)) ? 0 : words; case '\t': case ' ': if(!quot && !space) space = 1; break; case '\"': quot = !quot; break; default: if (Buffer[i] < 32) return 0; if (Buffer[i] > 127) return 0; words += space; space = 0; break; } } return 0; } static cmsBool IsMyFile(const char* FileName) { FILE *fp; cmsUInt32Number Size; cmsUInt8Number Ptr[133]; fp = fopen(FileName, "rt"); if (!fp) { cmsSignalError(0, cmsERROR_FILE, "File '%s' not found", FileName); return FALSE; } Size = (cmsUInt32Number) fread(Ptr, 1, 132, fp); if (fclose(fp) != 0) return FALSE; Ptr[Size] = '\0'; return IsMyBlock(Ptr, Size); } // ---------------------------------------------------------- Exported routines cmsHANDLE CMSEXPORT cmsIT8LoadFromMem(cmsContext ContextID, void *Ptr, cmsUInt32Number len) { cmsHANDLE hIT8; cmsIT8* it8; int type; _cmsAssert(Ptr != NULL); _cmsAssert(len != 0); type = IsMyBlock((cmsUInt8Number*)Ptr, len); if (type == 0) return NULL; hIT8 = cmsIT8Alloc(ContextID); if (!hIT8) return NULL; it8 = (cmsIT8*) hIT8; it8 ->MemoryBlock = (char*) _cmsMalloc(ContextID, len + 1); strncpy(it8 ->MemoryBlock, (const char*) Ptr, len); it8 ->MemoryBlock[len] = 0; strncpy(it8->FileStack[0]->FileName, "", cmsMAX_PATH-1); it8-> Source = it8 -> MemoryBlock; if (!ParseIT8(it8, type-1)) { cmsIT8Free(hIT8); return FALSE; } CookPointers(it8); it8 ->nTable = 0; _cmsFree(ContextID, it8->MemoryBlock); it8 -> MemoryBlock = NULL; return hIT8; } cmsHANDLE CMSEXPORT cmsIT8LoadFromFile(cmsContext ContextID, const char* cFileName) { cmsHANDLE hIT8; cmsIT8* it8; int type; _cmsAssert(cFileName != NULL); type = IsMyFile(cFileName); if (type == 0) return NULL; hIT8 = cmsIT8Alloc(ContextID); it8 = (cmsIT8*) hIT8; if (!hIT8) return NULL; it8 ->FileStack[0]->Stream = fopen(cFileName, "rt"); if (!it8 ->FileStack[0]->Stream) { cmsIT8Free(hIT8); return NULL; } strncpy(it8->FileStack[0]->FileName, cFileName, cmsMAX_PATH-1); it8->FileStack[0]->FileName[cmsMAX_PATH-1] = 0; if (!ParseIT8(it8, type-1)) { fclose(it8 ->FileStack[0]->Stream); cmsIT8Free(hIT8); return NULL; } CookPointers(it8); it8 ->nTable = 0; if (fclose(it8 ->FileStack[0]->Stream)!= 0) { cmsIT8Free(hIT8); return NULL; } return hIT8; } int CMSEXPORT cmsIT8EnumDataFormat(cmsHANDLE hIT8, char ***SampleNames) { cmsIT8* it8 = (cmsIT8*) hIT8; TABLE* t; _cmsAssert(hIT8 != NULL); t = GetTable(it8); if (SampleNames) *SampleNames = t -> DataFormat; return t -> nSamples; } cmsUInt32Number CMSEXPORT cmsIT8EnumProperties(cmsHANDLE hIT8, char ***PropertyNames) { cmsIT8* it8 = (cmsIT8*) hIT8; KEYVALUE* p; cmsUInt32Number n; char **Props; TABLE* t; _cmsAssert(hIT8 != NULL); t = GetTable(it8); // Pass#1 - count properties n = 0; for (p = t -> HeaderList; p != NULL; p = p->Next) { n++; } Props = (char **) AllocChunk(it8, sizeof(char *) * n); // Pass#2 - Fill pointers n = 0; for (p = t -> HeaderList; p != NULL; p = p->Next) { Props[n++] = p -> Keyword; } *PropertyNames = Props; return n; } cmsUInt32Number CMSEXPORT cmsIT8EnumPropertyMulti(cmsHANDLE hIT8, const char* cProp, const char ***SubpropertyNames) { cmsIT8* it8 = (cmsIT8*) hIT8; KEYVALUE *p, *tmp; cmsUInt32Number n; const char **Props; TABLE* t; _cmsAssert(hIT8 != NULL); t = GetTable(it8); if(!IsAvailableOnList(t->HeaderList, cProp, NULL, &p)) { *SubpropertyNames = 0; return 0; } // Pass#1 - count properties n = 0; for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { if(tmp->Subkey != NULL) n++; } Props = (const char **) AllocChunk(it8, sizeof(char *) * n); // Pass#2 - Fill pointers n = 0; for (tmp = p; tmp != NULL; tmp = tmp->NextSubkey) { if(tmp->Subkey != NULL) Props[n++] = p ->Subkey; } *SubpropertyNames = Props; return n; } static int LocatePatch(cmsIT8* it8, const char* cPatch) { int i; const char *data; TABLE* t = GetTable(it8); for (i=0; i < t-> nPatches; i++) { data = GetData(it8, i, t->SampleID); if (data != NULL) { if (cmsstrcasecmp(data, cPatch) == 0) return i; } } // SynError(it8, "Couldn't find patch '%s'\n", cPatch); return -1; } static int LocateEmptyPatch(cmsIT8* it8) { int i; const char *data; TABLE* t = GetTable(it8); for (i=0; i < t-> nPatches; i++) { data = GetData(it8, i, t->SampleID); if (data == NULL) return i; } return -1; } static int LocateSample(cmsIT8* it8, const char* cSample) { int i; const char *fld; TABLE* t = GetTable(it8); for (i=0; i < t->nSamples; i++) { fld = GetDataFormat(it8, i); if (cmsstrcasecmp(fld, cSample) == 0) return i; } return -1; } int CMSEXPORT cmsIT8FindDataFormat(cmsHANDLE hIT8, const char* cSample) { cmsIT8* it8 = (cmsIT8*) hIT8; _cmsAssert(hIT8 != NULL); return LocateSample(it8, cSample); } const char* CMSEXPORT cmsIT8GetDataRowCol(cmsHANDLE hIT8, int row, int col) { cmsIT8* it8 = (cmsIT8*) hIT8; _cmsAssert(hIT8 != NULL); return GetData(it8, row, col); } cmsFloat64Number CMSEXPORT cmsIT8GetDataRowColDbl(cmsHANDLE hIT8, int row, int col) { const char* Buffer; Buffer = cmsIT8GetDataRowCol(hIT8, row, col); if (Buffer == NULL) return 0.0; return ParseFloatNumber(Buffer); } cmsBool CMSEXPORT cmsIT8SetDataRowCol(cmsHANDLE hIT8, int row, int col, const char* Val) { cmsIT8* it8 = (cmsIT8*) hIT8; _cmsAssert(hIT8 != NULL); return SetData(it8, row, col, Val); } cmsBool CMSEXPORT cmsIT8SetDataRowColDbl(cmsHANDLE hIT8, int row, int col, cmsFloat64Number Val) { cmsIT8* it8 = (cmsIT8*) hIT8; char Buff[256]; _cmsAssert(hIT8 != NULL); sprintf(Buff, it8->DoubleFormatter, Val); return SetData(it8, row, col, Buff); } const char* CMSEXPORT cmsIT8GetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample) { cmsIT8* it8 = (cmsIT8*) hIT8; int iField, iSet; _cmsAssert(hIT8 != NULL); iField = LocateSample(it8, cSample); if (iField < 0) { return NULL; } iSet = LocatePatch(it8, cPatch); if (iSet < 0) { return NULL; } return GetData(it8, iSet, iField); } cmsFloat64Number CMSEXPORT cmsIT8GetDataDbl(cmsHANDLE it8, const char* cPatch, const char* cSample) { const char* Buffer; Buffer = cmsIT8GetData(it8, cPatch, cSample); return ParseFloatNumber(Buffer); } cmsBool CMSEXPORT cmsIT8SetData(cmsHANDLE hIT8, const char* cPatch, const char* cSample, const char *Val) { cmsIT8* it8 = (cmsIT8*) hIT8; int iField, iSet; TABLE* t; _cmsAssert(hIT8 != NULL); t = GetTable(it8); iField = LocateSample(it8, cSample); if (iField < 0) return FALSE; if (t-> nPatches == 0) { AllocateDataFormat(it8); AllocateDataSet(it8); CookPointers(it8); } if (cmsstrcasecmp(cSample, "SAMPLE_ID") == 0) { iSet = LocateEmptyPatch(it8); if (iSet < 0) { return SynError(it8, "Couldn't add more patches '%s'\n", cPatch); } iField = t -> SampleID; } else { iSet = LocatePatch(it8, cPatch); if (iSet < 0) { return FALSE; } } return SetData(it8, iSet, iField, Val); } cmsBool CMSEXPORT cmsIT8SetDataDbl(cmsHANDLE hIT8, const char* cPatch, const char* cSample, cmsFloat64Number Val) { cmsIT8* it8 = (cmsIT8*) hIT8; char Buff[256]; _cmsAssert(hIT8 != NULL); snprintf(Buff, 255, it8->DoubleFormatter, Val); return cmsIT8SetData(hIT8, cPatch, cSample, Buff); } // Buffer should get MAXSTR at least const char* CMSEXPORT cmsIT8GetPatchName(cmsHANDLE hIT8, int nPatch, char* buffer) { cmsIT8* it8 = (cmsIT8*) hIT8; TABLE* t; char* Data; _cmsAssert(hIT8 != NULL); t = GetTable(it8); Data = GetData(it8, nPatch, t->SampleID); if (!Data) return NULL; if (!buffer) return Data; strncpy(buffer, Data, MAXSTR-1); buffer[MAXSTR-1] = 0; return buffer; } int CMSEXPORT cmsIT8GetPatchByName(cmsHANDLE hIT8, const char *cPatch) { _cmsAssert(hIT8 != NULL); return LocatePatch((cmsIT8*)hIT8, cPatch); } cmsUInt32Number CMSEXPORT cmsIT8TableCount(cmsHANDLE hIT8) { cmsIT8* it8 = (cmsIT8*) hIT8; _cmsAssert(hIT8 != NULL); return it8 ->TablesCount; } // This handles the "LABEL" extension. // Label, nTable, Type int CMSEXPORT cmsIT8SetTableByLabel(cmsHANDLE hIT8, const char* cSet, const char* cField, const char* ExpectedType) { const char* cLabelFld; char Type[256], Label[256]; int nTable; _cmsAssert(hIT8 != NULL); if (cField != NULL && *cField == 0) cField = "LABEL"; if (cField == NULL) cField = "LABEL"; cLabelFld = cmsIT8GetData(hIT8, cSet, cField); if (!cLabelFld) return -1; if (sscanf(cLabelFld, "%255s %d %255s", Label, &nTable, Type) != 3) return -1; if (ExpectedType != NULL && *ExpectedType == 0) ExpectedType = NULL; if (ExpectedType) { if (cmsstrcasecmp(Type, ExpectedType) != 0) return -1; } return cmsIT8SetTable(hIT8, nTable); } cmsBool CMSEXPORT cmsIT8SetIndexColumn(cmsHANDLE hIT8, const char* cSample) { cmsIT8* it8 = (cmsIT8*) hIT8; int pos; _cmsAssert(hIT8 != NULL); pos = LocateSample(it8, cSample); if(pos == -1) return FALSE; it8->Tab[it8->nTable].SampleID = pos; return TRUE; } void CMSEXPORT cmsIT8DefineDblFormat(cmsHANDLE hIT8, const char* Formatter) { cmsIT8* it8 = (cmsIT8*) hIT8; _cmsAssert(hIT8 != NULL); if (Formatter == NULL) strcpy(it8->DoubleFormatter, DEFAULT_DBL_FORMAT); else strncpy(it8->DoubleFormatter, Formatter, sizeof(it8->DoubleFormatter)); it8 ->DoubleFormatter[sizeof(it8 ->DoubleFormatter)-1] = 0; } lcms2-2.5/src/cmspcs.c0000644002406300000240000006070012163060730014151 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // inter PCS conversions XYZ <-> CIE L* a* b* /* CIE 15:2004 CIELab is defined as: L* = 116*f(Y/Yn) - 16 0 <= L* <= 100 a* = 500*[f(X/Xn) - f(Y/Yn)] b* = 200*[f(Y/Yn) - f(Z/Zn)] and f(t) = t^(1/3) 1 >= t > (24/116)^3 (841/108)*t + (16/116) 0 <= t <= (24/116)^3 Reverse transform is: X = Xn*[a* / 500 + (L* + 16) / 116] ^ 3 if (X/Xn) > (24/116) = Xn*(a* / 500 + L* / 116) / 7.787 if (X/Xn) <= (24/116) PCS in Lab2 is encoded as: 8 bit Lab PCS: L* 0..100 into a 0..ff byte. a* t + 128 range is -128.0 +127.0 b* 16 bit Lab PCS: L* 0..100 into a 0..ff00 word. a* t + 128 range is -128.0 +127.9961 b* Interchange Space Component Actual Range Encoded Range CIE XYZ X 0 -> 1.99997 0x0000 -> 0xffff CIE XYZ Y 0 -> 1.99997 0x0000 -> 0xffff CIE XYZ Z 0 -> 1.99997 0x0000 -> 0xffff Version 2,3 ----------- CIELAB (16 bit) L* 0 -> 100.0 0x0000 -> 0xff00 CIELAB (16 bit) a* -128.0 -> +127.996 0x0000 -> 0x8000 -> 0xffff CIELAB (16 bit) b* -128.0 -> +127.996 0x0000 -> 0x8000 -> 0xffff Version 4 --------- CIELAB (16 bit) L* 0 -> 100.0 0x0000 -> 0xffff CIELAB (16 bit) a* -128.0 -> +127 0x0000 -> 0x8080 -> 0xffff CIELAB (16 bit) b* -128.0 -> +127 0x0000 -> 0x8080 -> 0xffff */ // Conversions void CMSEXPORT cmsXYZ2xyY(cmsCIExyY* Dest, const cmsCIEXYZ* Source) { cmsFloat64Number ISum; ISum = 1./(Source -> X + Source -> Y + Source -> Z); Dest -> x = (Source -> X) * ISum; Dest -> y = (Source -> Y) * ISum; Dest -> Y = Source -> Y; } void CMSEXPORT cmsxyY2XYZ(cmsCIEXYZ* Dest, const cmsCIExyY* Source) { Dest -> X = (Source -> x / Source -> y) * Source -> Y; Dest -> Y = Source -> Y; Dest -> Z = ((1 - Source -> x - Source -> y) / Source -> y) * Source -> Y; } static cmsFloat64Number f(cmsFloat64Number t) { const cmsFloat64Number Limit = (24.0/116.0) * (24.0/116.0) * (24.0/116.0); if (t <= Limit) return (841.0/108.0) * t + (16.0/116.0); else return pow(t, 1.0/3.0); } static cmsFloat64Number f_1(cmsFloat64Number t) { const cmsFloat64Number Limit = (24.0/116.0); if (t <= Limit) { return (108.0/841.0) * (t - (16.0/116.0)); } return t * t * t; } // Standard XYZ to Lab. it can handle negative XZY numbers in some cases void CMSEXPORT cmsXYZ2Lab(const cmsCIEXYZ* WhitePoint, cmsCIELab* Lab, const cmsCIEXYZ* xyz) { cmsFloat64Number fx, fy, fz; if (WhitePoint == NULL) WhitePoint = cmsD50_XYZ(); fx = f(xyz->X / WhitePoint->X); fy = f(xyz->Y / WhitePoint->Y); fz = f(xyz->Z / WhitePoint->Z); Lab->L = 116.0*fy - 16.0; Lab->a = 500.0*(fx - fy); Lab->b = 200.0*(fy - fz); } // Standard XYZ to Lab. It can return negative XYZ in some cases void CMSEXPORT cmsLab2XYZ(const cmsCIEXYZ* WhitePoint, cmsCIEXYZ* xyz, const cmsCIELab* Lab) { cmsFloat64Number x, y, z; if (WhitePoint == NULL) WhitePoint = cmsD50_XYZ(); y = (Lab-> L + 16.0) / 116.0; x = y + 0.002 * Lab -> a; z = y - 0.005 * Lab -> b; xyz -> X = f_1(x) * WhitePoint -> X; xyz -> Y = f_1(y) * WhitePoint -> Y; xyz -> Z = f_1(z) * WhitePoint -> Z; } static cmsFloat64Number L2float2(cmsUInt16Number v) { return (cmsFloat64Number) v / 652.800; } // the a/b part static cmsFloat64Number ab2float2(cmsUInt16Number v) { return ((cmsFloat64Number) v / 256.0) - 128.0; } static cmsUInt16Number L2Fix2(cmsFloat64Number L) { return _cmsQuickSaturateWord(L * 652.8); } static cmsUInt16Number ab2Fix2(cmsFloat64Number ab) { return _cmsQuickSaturateWord((ab + 128.0) * 256.0); } static cmsFloat64Number L2float4(cmsUInt16Number v) { return (cmsFloat64Number) v / 655.35; } // the a/b part static cmsFloat64Number ab2float4(cmsUInt16Number v) { return ((cmsFloat64Number) v / 257.0) - 128.0; } void CMSEXPORT cmsLabEncoded2FloatV2(cmsCIELab* Lab, const cmsUInt16Number wLab[3]) { Lab->L = L2float2(wLab[0]); Lab->a = ab2float2(wLab[1]); Lab->b = ab2float2(wLab[2]); } void CMSEXPORT cmsLabEncoded2Float(cmsCIELab* Lab, const cmsUInt16Number wLab[3]) { Lab->L = L2float4(wLab[0]); Lab->a = ab2float4(wLab[1]); Lab->b = ab2float4(wLab[2]); } static cmsFloat64Number Clamp_L_doubleV2(cmsFloat64Number L) { const cmsFloat64Number L_max = (cmsFloat64Number) (0xFFFF * 100.0) / 0xFF00; if (L < 0) L = 0; if (L > L_max) L = L_max; return L; } static cmsFloat64Number Clamp_ab_doubleV2(cmsFloat64Number ab) { if (ab < MIN_ENCODEABLE_ab2) ab = MIN_ENCODEABLE_ab2; if (ab > MAX_ENCODEABLE_ab2) ab = MAX_ENCODEABLE_ab2; return ab; } void CMSEXPORT cmsFloat2LabEncodedV2(cmsUInt16Number wLab[3], const cmsCIELab* fLab) { cmsCIELab Lab; Lab.L = Clamp_L_doubleV2(fLab ->L); Lab.a = Clamp_ab_doubleV2(fLab ->a); Lab.b = Clamp_ab_doubleV2(fLab ->b); wLab[0] = L2Fix2(Lab.L); wLab[1] = ab2Fix2(Lab.a); wLab[2] = ab2Fix2(Lab.b); } static cmsFloat64Number Clamp_L_doubleV4(cmsFloat64Number L) { if (L < 0) L = 0; if (L > 100.0) L = 100.0; return L; } static cmsFloat64Number Clamp_ab_doubleV4(cmsFloat64Number ab) { if (ab < MIN_ENCODEABLE_ab4) ab = MIN_ENCODEABLE_ab4; if (ab > MAX_ENCODEABLE_ab4) ab = MAX_ENCODEABLE_ab4; return ab; } static cmsUInt16Number L2Fix4(cmsFloat64Number L) { return _cmsQuickSaturateWord(L * 655.35); } static cmsUInt16Number ab2Fix4(cmsFloat64Number ab) { return _cmsQuickSaturateWord((ab + 128.0) * 257.0); } void CMSEXPORT cmsFloat2LabEncoded(cmsUInt16Number wLab[3], const cmsCIELab* fLab) { cmsCIELab Lab; Lab.L = Clamp_L_doubleV4(fLab ->L); Lab.a = Clamp_ab_doubleV4(fLab ->a); Lab.b = Clamp_ab_doubleV4(fLab ->b); wLab[0] = L2Fix4(Lab.L); wLab[1] = ab2Fix4(Lab.a); wLab[2] = ab2Fix4(Lab.b); } // Auxiliar: convert to Radians static cmsFloat64Number RADIANS(cmsFloat64Number deg) { return (deg * M_PI) / 180.; } // Auxiliar: atan2 but operating in degrees and returning 0 if a==b==0 static cmsFloat64Number atan2deg(cmsFloat64Number a, cmsFloat64Number b) { cmsFloat64Number h; if (a == 0 && b == 0) h = 0; else h = atan2(a, b); h *= (180. / M_PI); while (h > 360.) h -= 360.; while ( h < 0) h += 360.; return h; } // Auxiliar: Square static cmsFloat64Number Sqr(cmsFloat64Number v) { return v * v; } // From cylindrical coordinates. No check is performed, then negative values are allowed void CMSEXPORT cmsLab2LCh(cmsCIELCh* LCh, const cmsCIELab* Lab) { LCh -> L = Lab -> L; LCh -> C = pow(Sqr(Lab ->a) + Sqr(Lab ->b), 0.5); LCh -> h = atan2deg(Lab ->b, Lab ->a); } // To cylindrical coordinates. No check is performed, then negative values are allowed void CMSEXPORT cmsLCh2Lab(cmsCIELab* Lab, const cmsCIELCh* LCh) { cmsFloat64Number h = (LCh -> h * M_PI) / 180.0; Lab -> L = LCh -> L; Lab -> a = LCh -> C * cos(h); Lab -> b = LCh -> C * sin(h); } // In XYZ All 3 components are encoded using 1.15 fixed point static cmsUInt16Number XYZ2Fix(cmsFloat64Number d) { return _cmsQuickSaturateWord(d * 32768.0); } void CMSEXPORT cmsFloat2XYZEncoded(cmsUInt16Number XYZ[3], const cmsCIEXYZ* fXYZ) { cmsCIEXYZ xyz; xyz.X = fXYZ -> X; xyz.Y = fXYZ -> Y; xyz.Z = fXYZ -> Z; // Clamp to encodeable values. if (xyz.Y <= 0) { xyz.X = 0; xyz.Y = 0; xyz.Z = 0; } if (xyz.X > MAX_ENCODEABLE_XYZ) xyz.X = MAX_ENCODEABLE_XYZ; if (xyz.X < 0) xyz.X = 0; if (xyz.Y > MAX_ENCODEABLE_XYZ) xyz.Y = MAX_ENCODEABLE_XYZ; if (xyz.Y < 0) xyz.Y = 0; if (xyz.Z > MAX_ENCODEABLE_XYZ) xyz.Z = MAX_ENCODEABLE_XYZ; if (xyz.Z < 0) xyz.Z = 0; XYZ[0] = XYZ2Fix(xyz.X); XYZ[1] = XYZ2Fix(xyz.Y); XYZ[2] = XYZ2Fix(xyz.Z); } // To convert from Fixed 1.15 point to cmsFloat64Number static cmsFloat64Number XYZ2float(cmsUInt16Number v) { cmsS15Fixed16Number fix32; // From 1.15 to 15.16 fix32 = v << 1; // From fixed 15.16 to cmsFloat64Number return _cms15Fixed16toDouble(fix32); } void CMSEXPORT cmsXYZEncoded2Float(cmsCIEXYZ* fXYZ, const cmsUInt16Number XYZ[3]) { fXYZ -> X = XYZ2float(XYZ[0]); fXYZ -> Y = XYZ2float(XYZ[1]); fXYZ -> Z = XYZ2float(XYZ[2]); } // Returns dE on two Lab values cmsFloat64Number CMSEXPORT cmsDeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2) { cmsFloat64Number dL, da, db; dL = fabs(Lab1 -> L - Lab2 -> L); da = fabs(Lab1 -> a - Lab2 -> a); db = fabs(Lab1 -> b - Lab2 -> b); return pow(Sqr(dL) + Sqr(da) + Sqr(db), 0.5); } // Return the CIE94 Delta E cmsFloat64Number CMSEXPORT cmsCIE94DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2) { cmsCIELCh LCh1, LCh2; cmsFloat64Number dE, dL, dC, dh, dhsq; cmsFloat64Number c12, sc, sh; dL = fabs(Lab1 ->L - Lab2 ->L); cmsLab2LCh(&LCh1, Lab1); cmsLab2LCh(&LCh2, Lab2); dC = fabs(LCh1.C - LCh2.C); dE = cmsDeltaE(Lab1, Lab2); dhsq = Sqr(dE) - Sqr(dL) - Sqr(dC); if (dhsq < 0) dh = 0; else dh = pow(dhsq, 0.5); c12 = sqrt(LCh1.C * LCh2.C); sc = 1.0 + (0.048 * c12); sh = 1.0 + (0.014 * c12); return sqrt(Sqr(dL) + Sqr(dC) / Sqr(sc) + Sqr(dh) / Sqr(sh)); } // Auxiliary static cmsFloat64Number ComputeLBFD(const cmsCIELab* Lab) { cmsFloat64Number yt; if (Lab->L > 7.996969) yt = (Sqr((Lab->L+16)/116)*((Lab->L+16)/116))*100; else yt = 100 * (Lab->L / 903.3); return (54.6 * (M_LOG10E * (log(yt + 1.5))) - 9.6); } // bfd - gets BFD(1:1) difference between Lab1, Lab2 cmsFloat64Number CMSEXPORT cmsBFDdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2) { cmsFloat64Number lbfd1,lbfd2,AveC,Aveh,dE,deltaL, deltaC,deltah,dc,t,g,dh,rh,rc,rt,bfd; cmsCIELCh LCh1, LCh2; lbfd1 = ComputeLBFD(Lab1); lbfd2 = ComputeLBFD(Lab2); deltaL = lbfd2 - lbfd1; cmsLab2LCh(&LCh1, Lab1); cmsLab2LCh(&LCh2, Lab2); deltaC = LCh2.C - LCh1.C; AveC = (LCh1.C+LCh2.C)/2; Aveh = (LCh1.h+LCh2.h)/2; dE = cmsDeltaE(Lab1, Lab2); if (Sqr(dE)>(Sqr(Lab2->L-Lab1->L)+Sqr(deltaC))) deltah = sqrt(Sqr(dE)-Sqr(Lab2->L-Lab1->L)-Sqr(deltaC)); else deltah =0; dc = 0.035 * AveC / (1 + 0.00365 * AveC)+0.521; g = sqrt(Sqr(Sqr(AveC))/(Sqr(Sqr(AveC))+14000)); t = 0.627+(0.055*cos((Aveh-254)/(180/M_PI))- 0.040*cos((2*Aveh-136)/(180/M_PI))+ 0.070*cos((3*Aveh-31)/(180/M_PI))+ 0.049*cos((4*Aveh+114)/(180/M_PI))- 0.015*cos((5*Aveh-103)/(180/M_PI))); dh = dc*(g*t+1-g); rh = -0.260*cos((Aveh-308)/(180/M_PI))- 0.379*cos((2*Aveh-160)/(180/M_PI))- 0.636*cos((3*Aveh+254)/(180/M_PI))+ 0.226*cos((4*Aveh+140)/(180/M_PI))- 0.194*cos((5*Aveh+280)/(180/M_PI)); rc = sqrt((AveC*AveC*AveC*AveC*AveC*AveC)/((AveC*AveC*AveC*AveC*AveC*AveC)+70000000)); rt = rh*rc; bfd = sqrt(Sqr(deltaL)+Sqr(deltaC/dc)+Sqr(deltah/dh)+(rt*(deltaC/dc)*(deltah/dh))); return bfd; } // cmc - CMC(l:c) difference between Lab1, Lab2 cmsFloat64Number CMSEXPORT cmsCMCdeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number l, cmsFloat64Number c) { cmsFloat64Number dE,dL,dC,dh,sl,sc,sh,t,f,cmc; cmsCIELCh LCh1, LCh2; if (Lab1 ->L == 0 && Lab2 ->L == 0) return 0; cmsLab2LCh(&LCh1, Lab1); cmsLab2LCh(&LCh2, Lab2); dL = Lab2->L-Lab1->L; dC = LCh2.C-LCh1.C; dE = cmsDeltaE(Lab1, Lab2); if (Sqr(dE)>(Sqr(dL)+Sqr(dC))) dh = sqrt(Sqr(dE)-Sqr(dL)-Sqr(dC)); else dh =0; if ((LCh1.h > 164) && (LCh1.h < 345)) t = 0.56 + fabs(0.2 * cos(((LCh1.h + 168)/(180/M_PI)))); else t = 0.36 + fabs(0.4 * cos(((LCh1.h + 35 )/(180/M_PI)))); sc = 0.0638 * LCh1.C / (1 + 0.0131 * LCh1.C) + 0.638; sl = 0.040975 * Lab1->L /(1 + 0.01765 * Lab1->L); if (Lab1->L<16) sl = 0.511; f = sqrt((LCh1.C * LCh1.C * LCh1.C * LCh1.C)/((LCh1.C * LCh1.C * LCh1.C * LCh1.C)+1900)); sh = sc*(t*f+1-f); cmc = sqrt(Sqr(dL/(l*sl))+Sqr(dC/(c*sc))+Sqr(dh/sh)); return cmc; } // dE2000 The weightings KL, KC and KH can be modified to reflect the relative // importance of lightness, chroma and hue in different industrial applications cmsFloat64Number CMSEXPORT cmsCIE2000DeltaE(const cmsCIELab* Lab1, const cmsCIELab* Lab2, cmsFloat64Number Kl, cmsFloat64Number Kc, cmsFloat64Number Kh) { cmsFloat64Number L1 = Lab1->L; cmsFloat64Number a1 = Lab1->a; cmsFloat64Number b1 = Lab1->b; cmsFloat64Number C = sqrt( Sqr(a1) + Sqr(b1) ); cmsFloat64Number Ls = Lab2 ->L; cmsFloat64Number as = Lab2 ->a; cmsFloat64Number bs = Lab2 ->b; cmsFloat64Number Cs = sqrt( Sqr(as) + Sqr(bs) ); cmsFloat64Number G = 0.5 * ( 1 - sqrt(pow((C + Cs) / 2 , 7.0) / (pow((C + Cs) / 2, 7.0) + pow(25.0, 7.0) ) )); cmsFloat64Number a_p = (1 + G ) * a1; cmsFloat64Number b_p = b1; cmsFloat64Number C_p = sqrt( Sqr(a_p) + Sqr(b_p)); cmsFloat64Number h_p = atan2deg(b_p, a_p); cmsFloat64Number a_ps = (1 + G) * as; cmsFloat64Number b_ps = bs; cmsFloat64Number C_ps = sqrt(Sqr(a_ps) + Sqr(b_ps)); cmsFloat64Number h_ps = atan2deg(b_ps, a_ps); cmsFloat64Number meanC_p =(C_p + C_ps) / 2; cmsFloat64Number hps_plus_hp = h_ps + h_p; cmsFloat64Number hps_minus_hp = h_ps - h_p; cmsFloat64Number meanh_p = fabs(hps_minus_hp) <= 180.000001 ? (hps_plus_hp)/2 : (hps_plus_hp) < 360 ? (hps_plus_hp + 360)/2 : (hps_plus_hp - 360)/2; cmsFloat64Number delta_h = (hps_minus_hp) <= -180.000001 ? (hps_minus_hp + 360) : (hps_minus_hp) > 180 ? (hps_minus_hp - 360) : (hps_minus_hp); cmsFloat64Number delta_L = (Ls - L1); cmsFloat64Number delta_C = (C_ps - C_p ); cmsFloat64Number delta_H =2 * sqrt(C_ps*C_p) * sin(RADIANS(delta_h) / 2); cmsFloat64Number T = 1 - 0.17 * cos(RADIANS(meanh_p-30)) + 0.24 * cos(RADIANS(2*meanh_p)) + 0.32 * cos(RADIANS(3*meanh_p + 6)) - 0.2 * cos(RADIANS(4*meanh_p - 63)); cmsFloat64Number Sl = 1 + (0.015 * Sqr((Ls + L1) /2- 50) )/ sqrt(20 + Sqr( (Ls+L1)/2 - 50) ); cmsFloat64Number Sc = 1 + 0.045 * (C_p + C_ps)/2; cmsFloat64Number Sh = 1 + 0.015 * ((C_ps + C_p)/2) * T; cmsFloat64Number delta_ro = 30 * exp( -Sqr(((meanh_p - 275 ) / 25))); cmsFloat64Number Rc = 2 * sqrt(( pow(meanC_p, 7.0) )/( pow(meanC_p, 7.0) + pow(25.0, 7.0))); cmsFloat64Number Rt = -sin(2 * RADIANS(delta_ro)) * Rc; cmsFloat64Number deltaE00 = sqrt( Sqr(delta_L /(Sl * Kl)) + Sqr(delta_C/(Sc * Kc)) + Sqr(delta_H/(Sh * Kh)) + Rt*(delta_C/(Sc * Kc)) * (delta_H / (Sh * Kh))); return deltaE00; } // This function returns a number of gridpoints to be used as LUT table. It assumes same number // of gripdpoints in all dimensions. Flags may override the choice. int _cmsReasonableGridpointsByColorspace(cmsColorSpaceSignature Colorspace, cmsUInt32Number dwFlags) { int nChannels; // Already specified? if (dwFlags & 0x00FF0000) { // Yes, grab'em return (dwFlags >> 16) & 0xFF; } nChannels = cmsChannelsOf(Colorspace); // HighResPrecalc is maximum resolution if (dwFlags & cmsFLAGS_HIGHRESPRECALC) { if (nChannels > 4) return 7; // 7 for Hifi if (nChannels == 4) // 23 for CMYK return 23; return 49; // 49 for RGB and others } // LowResPrecal is lower resolution if (dwFlags & cmsFLAGS_LOWRESPRECALC) { if (nChannels > 4) return 6; // 6 for more than 4 channels if (nChannels == 1) return 33; // For monochrome return 17; // 17 for remaining } // Default values if (nChannels > 4) return 7; // 7 for Hifi if (nChannels == 4) return 17; // 17 for CMYK return 33; // 33 for RGB } cmsBool _cmsEndPointsBySpace(cmsColorSpaceSignature Space, cmsUInt16Number **White, cmsUInt16Number **Black, cmsUInt32Number *nOutputs) { // Only most common spaces static cmsUInt16Number RGBblack[4] = { 0, 0, 0 }; static cmsUInt16Number RGBwhite[4] = { 0xffff, 0xffff, 0xffff }; static cmsUInt16Number CMYKblack[4] = { 0xffff, 0xffff, 0xffff, 0xffff }; // 400% of ink static cmsUInt16Number CMYKwhite[4] = { 0, 0, 0, 0 }; static cmsUInt16Number LABblack[4] = { 0, 0x8080, 0x8080 }; // V4 Lab encoding static cmsUInt16Number LABwhite[4] = { 0xFFFF, 0x8080, 0x8080 }; static cmsUInt16Number CMYblack[4] = { 0xffff, 0xffff, 0xffff }; static cmsUInt16Number CMYwhite[4] = { 0, 0, 0 }; static cmsUInt16Number Grayblack[4] = { 0 }; static cmsUInt16Number GrayWhite[4] = { 0xffff }; switch (Space) { case cmsSigGrayData: if (White) *White = GrayWhite; if (Black) *Black = Grayblack; if (nOutputs) *nOutputs = 1; return TRUE; case cmsSigRgbData: if (White) *White = RGBwhite; if (Black) *Black = RGBblack; if (nOutputs) *nOutputs = 3; return TRUE; case cmsSigLabData: if (White) *White = LABwhite; if (Black) *Black = LABblack; if (nOutputs) *nOutputs = 3; return TRUE; case cmsSigCmykData: if (White) *White = CMYKwhite; if (Black) *Black = CMYKblack; if (nOutputs) *nOutputs = 4; return TRUE; case cmsSigCmyData: if (White) *White = CMYwhite; if (Black) *Black = CMYblack; if (nOutputs) *nOutputs = 3; return TRUE; default:; } return FALSE; } // Several utilities ------------------------------------------------------- // Translate from our colorspace to ICC representation cmsColorSpaceSignature CMSEXPORT _cmsICCcolorSpace(int OurNotation) { switch (OurNotation) { case 1: case PT_GRAY: return cmsSigGrayData; case 2: case PT_RGB: return cmsSigRgbData; case PT_CMY: return cmsSigCmyData; case PT_CMYK: return cmsSigCmykData; case PT_YCbCr:return cmsSigYCbCrData; case PT_YUV: return cmsSigLuvData; case PT_XYZ: return cmsSigXYZData; case PT_LabV2: case PT_Lab: return cmsSigLabData; case PT_YUVK: return cmsSigLuvKData; case PT_HSV: return cmsSigHsvData; case PT_HLS: return cmsSigHlsData; case PT_Yxy: return cmsSigYxyData; case PT_MCH1: return cmsSigMCH1Data; case PT_MCH2: return cmsSigMCH2Data; case PT_MCH3: return cmsSigMCH3Data; case PT_MCH4: return cmsSigMCH4Data; case PT_MCH5: return cmsSigMCH5Data; case PT_MCH6: return cmsSigMCH6Data; case PT_MCH7: return cmsSigMCH7Data; case PT_MCH8: return cmsSigMCH8Data; case PT_MCH9: return cmsSigMCH9Data; case PT_MCH10: return cmsSigMCHAData; case PT_MCH11: return cmsSigMCHBData; case PT_MCH12: return cmsSigMCHCData; case PT_MCH13: return cmsSigMCHDData; case PT_MCH14: return cmsSigMCHEData; case PT_MCH15: return cmsSigMCHFData; default: return (cmsColorSpaceSignature) (-1); } } int CMSEXPORT _cmsLCMScolorSpace(cmsColorSpaceSignature ProfileSpace) { switch (ProfileSpace) { case cmsSigGrayData: return PT_GRAY; case cmsSigRgbData: return PT_RGB; case cmsSigCmyData: return PT_CMY; case cmsSigCmykData: return PT_CMYK; case cmsSigYCbCrData:return PT_YCbCr; case cmsSigLuvData: return PT_YUV; case cmsSigXYZData: return PT_XYZ; case cmsSigLabData: return PT_Lab; case cmsSigLuvKData: return PT_YUVK; case cmsSigHsvData: return PT_HSV; case cmsSigHlsData: return PT_HLS; case cmsSigYxyData: return PT_Yxy; case cmsSig1colorData: case cmsSigMCH1Data: return PT_MCH1; case cmsSig2colorData: case cmsSigMCH2Data: return PT_MCH2; case cmsSig3colorData: case cmsSigMCH3Data: return PT_MCH3; case cmsSig4colorData: case cmsSigMCH4Data: return PT_MCH4; case cmsSig5colorData: case cmsSigMCH5Data: return PT_MCH5; case cmsSig6colorData: case cmsSigMCH6Data: return PT_MCH6; case cmsSigMCH7Data: case cmsSig7colorData:return PT_MCH7; case cmsSigMCH8Data: case cmsSig8colorData:return PT_MCH8; case cmsSigMCH9Data: case cmsSig9colorData:return PT_MCH9; case cmsSigMCHAData: case cmsSig10colorData:return PT_MCH10; case cmsSigMCHBData: case cmsSig11colorData:return PT_MCH11; case cmsSigMCHCData: case cmsSig12colorData:return PT_MCH12; case cmsSigMCHDData: case cmsSig13colorData:return PT_MCH13; case cmsSigMCHEData: case cmsSig14colorData:return PT_MCH14; case cmsSigMCHFData: case cmsSig15colorData:return PT_MCH15; default: return (cmsColorSpaceSignature) (-1); } } cmsUInt32Number CMSEXPORT cmsChannelsOf(cmsColorSpaceSignature ColorSpace) { switch (ColorSpace) { case cmsSigMCH1Data: case cmsSig1colorData: case cmsSigGrayData: return 1; case cmsSigMCH2Data: case cmsSig2colorData: return 2; case cmsSigXYZData: case cmsSigLabData: case cmsSigLuvData: case cmsSigYCbCrData: case cmsSigYxyData: case cmsSigRgbData: case cmsSigHsvData: case cmsSigHlsData: case cmsSigCmyData: case cmsSigMCH3Data: case cmsSig3colorData: return 3; case cmsSigLuvKData: case cmsSigCmykData: case cmsSigMCH4Data: case cmsSig4colorData: return 4; case cmsSigMCH5Data: case cmsSig5colorData: return 5; case cmsSigMCH6Data: case cmsSig6colorData: return 6; case cmsSigMCH7Data: case cmsSig7colorData: return 7; case cmsSigMCH8Data: case cmsSig8colorData: return 8; case cmsSigMCH9Data: case cmsSig9colorData: return 9; case cmsSigMCHAData: case cmsSig10colorData: return 10; case cmsSigMCHBData: case cmsSig11colorData: return 11; case cmsSigMCHCData: case cmsSig12colorData: return 12; case cmsSigMCHDData: case cmsSig13colorData: return 13; case cmsSigMCHEData: case cmsSig14colorData: return 14; case cmsSigMCHFData: case cmsSig15colorData: return 15; default: return 3; } } lcms2-2.5/src/cmshalf.c0000644002406300000240000010475712163060730014311 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2012 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // // #include "lcms2_internal.h" #ifndef CMS_NO_HALF_SUPPORT // This code is inspired in the paper "Fast Half Float Conversions" // by Jeroen van der Zijp static cmsUInt32Number Mantissa[2048] = { 0x00000000, 0x33800000, 0x34000000, 0x34400000, 0x34800000, 0x34a00000, 0x34c00000, 0x34e00000, 0x35000000, 0x35100000, 0x35200000, 0x35300000, 0x35400000, 0x35500000, 0x35600000, 0x35700000, 0x35800000, 0x35880000, 0x35900000, 0x35980000, 0x35a00000, 0x35a80000, 0x35b00000, 0x35b80000, 0x35c00000, 0x35c80000, 0x35d00000, 0x35d80000, 0x35e00000, 0x35e80000, 0x35f00000, 0x35f80000, 0x36000000, 0x36040000, 0x36080000, 0x360c0000, 0x36100000, 0x36140000, 0x36180000, 0x361c0000, 0x36200000, 0x36240000, 0x36280000, 0x362c0000, 0x36300000, 0x36340000, 0x36380000, 0x363c0000, 0x36400000, 0x36440000, 0x36480000, 0x364c0000, 0x36500000, 0x36540000, 0x36580000, 0x365c0000, 0x36600000, 0x36640000, 0x36680000, 0x366c0000, 0x36700000, 0x36740000, 0x36780000, 0x367c0000, 0x36800000, 0x36820000, 0x36840000, 0x36860000, 0x36880000, 0x368a0000, 0x368c0000, 0x368e0000, 0x36900000, 0x36920000, 0x36940000, 0x36960000, 0x36980000, 0x369a0000, 0x369c0000, 0x369e0000, 0x36a00000, 0x36a20000, 0x36a40000, 0x36a60000, 0x36a80000, 0x36aa0000, 0x36ac0000, 0x36ae0000, 0x36b00000, 0x36b20000, 0x36b40000, 0x36b60000, 0x36b80000, 0x36ba0000, 0x36bc0000, 0x36be0000, 0x36c00000, 0x36c20000, 0x36c40000, 0x36c60000, 0x36c80000, 0x36ca0000, 0x36cc0000, 0x36ce0000, 0x36d00000, 0x36d20000, 0x36d40000, 0x36d60000, 0x36d80000, 0x36da0000, 0x36dc0000, 0x36de0000, 0x36e00000, 0x36e20000, 0x36e40000, 0x36e60000, 0x36e80000, 0x36ea0000, 0x36ec0000, 0x36ee0000, 0x36f00000, 0x36f20000, 0x36f40000, 0x36f60000, 0x36f80000, 0x36fa0000, 0x36fc0000, 0x36fe0000, 0x37000000, 0x37010000, 0x37020000, 0x37030000, 0x37040000, 0x37050000, 0x37060000, 0x37070000, 0x37080000, 0x37090000, 0x370a0000, 0x370b0000, 0x370c0000, 0x370d0000, 0x370e0000, 0x370f0000, 0x37100000, 0x37110000, 0x37120000, 0x37130000, 0x37140000, 0x37150000, 0x37160000, 0x37170000, 0x37180000, 0x37190000, 0x371a0000, 0x371b0000, 0x371c0000, 0x371d0000, 0x371e0000, 0x371f0000, 0x37200000, 0x37210000, 0x37220000, 0x37230000, 0x37240000, 0x37250000, 0x37260000, 0x37270000, 0x37280000, 0x37290000, 0x372a0000, 0x372b0000, 0x372c0000, 0x372d0000, 0x372e0000, 0x372f0000, 0x37300000, 0x37310000, 0x37320000, 0x37330000, 0x37340000, 0x37350000, 0x37360000, 0x37370000, 0x37380000, 0x37390000, 0x373a0000, 0x373b0000, 0x373c0000, 0x373d0000, 0x373e0000, 0x373f0000, 0x37400000, 0x37410000, 0x37420000, 0x37430000, 0x37440000, 0x37450000, 0x37460000, 0x37470000, 0x37480000, 0x37490000, 0x374a0000, 0x374b0000, 0x374c0000, 0x374d0000, 0x374e0000, 0x374f0000, 0x37500000, 0x37510000, 0x37520000, 0x37530000, 0x37540000, 0x37550000, 0x37560000, 0x37570000, 0x37580000, 0x37590000, 0x375a0000, 0x375b0000, 0x375c0000, 0x375d0000, 0x375e0000, 0x375f0000, 0x37600000, 0x37610000, 0x37620000, 0x37630000, 0x37640000, 0x37650000, 0x37660000, 0x37670000, 0x37680000, 0x37690000, 0x376a0000, 0x376b0000, 0x376c0000, 0x376d0000, 0x376e0000, 0x376f0000, 0x37700000, 0x37710000, 0x37720000, 0x37730000, 0x37740000, 0x37750000, 0x37760000, 0x37770000, 0x37780000, 0x37790000, 0x377a0000, 0x377b0000, 0x377c0000, 0x377d0000, 0x377e0000, 0x377f0000, 0x37800000, 0x37808000, 0x37810000, 0x37818000, 0x37820000, 0x37828000, 0x37830000, 0x37838000, 0x37840000, 0x37848000, 0x37850000, 0x37858000, 0x37860000, 0x37868000, 0x37870000, 0x37878000, 0x37880000, 0x37888000, 0x37890000, 0x37898000, 0x378a0000, 0x378a8000, 0x378b0000, 0x378b8000, 0x378c0000, 0x378c8000, 0x378d0000, 0x378d8000, 0x378e0000, 0x378e8000, 0x378f0000, 0x378f8000, 0x37900000, 0x37908000, 0x37910000, 0x37918000, 0x37920000, 0x37928000, 0x37930000, 0x37938000, 0x37940000, 0x37948000, 0x37950000, 0x37958000, 0x37960000, 0x37968000, 0x37970000, 0x37978000, 0x37980000, 0x37988000, 0x37990000, 0x37998000, 0x379a0000, 0x379a8000, 0x379b0000, 0x379b8000, 0x379c0000, 0x379c8000, 0x379d0000, 0x379d8000, 0x379e0000, 0x379e8000, 0x379f0000, 0x379f8000, 0x37a00000, 0x37a08000, 0x37a10000, 0x37a18000, 0x37a20000, 0x37a28000, 0x37a30000, 0x37a38000, 0x37a40000, 0x37a48000, 0x37a50000, 0x37a58000, 0x37a60000, 0x37a68000, 0x37a70000, 0x37a78000, 0x37a80000, 0x37a88000, 0x37a90000, 0x37a98000, 0x37aa0000, 0x37aa8000, 0x37ab0000, 0x37ab8000, 0x37ac0000, 0x37ac8000, 0x37ad0000, 0x37ad8000, 0x37ae0000, 0x37ae8000, 0x37af0000, 0x37af8000, 0x37b00000, 0x37b08000, 0x37b10000, 0x37b18000, 0x37b20000, 0x37b28000, 0x37b30000, 0x37b38000, 0x37b40000, 0x37b48000, 0x37b50000, 0x37b58000, 0x37b60000, 0x37b68000, 0x37b70000, 0x37b78000, 0x37b80000, 0x37b88000, 0x37b90000, 0x37b98000, 0x37ba0000, 0x37ba8000, 0x37bb0000, 0x37bb8000, 0x37bc0000, 0x37bc8000, 0x37bd0000, 0x37bd8000, 0x37be0000, 0x37be8000, 0x37bf0000, 0x37bf8000, 0x37c00000, 0x37c08000, 0x37c10000, 0x37c18000, 0x37c20000, 0x37c28000, 0x37c30000, 0x37c38000, 0x37c40000, 0x37c48000, 0x37c50000, 0x37c58000, 0x37c60000, 0x37c68000, 0x37c70000, 0x37c78000, 0x37c80000, 0x37c88000, 0x37c90000, 0x37c98000, 0x37ca0000, 0x37ca8000, 0x37cb0000, 0x37cb8000, 0x37cc0000, 0x37cc8000, 0x37cd0000, 0x37cd8000, 0x37ce0000, 0x37ce8000, 0x37cf0000, 0x37cf8000, 0x37d00000, 0x37d08000, 0x37d10000, 0x37d18000, 0x37d20000, 0x37d28000, 0x37d30000, 0x37d38000, 0x37d40000, 0x37d48000, 0x37d50000, 0x37d58000, 0x37d60000, 0x37d68000, 0x37d70000, 0x37d78000, 0x37d80000, 0x37d88000, 0x37d90000, 0x37d98000, 0x37da0000, 0x37da8000, 0x37db0000, 0x37db8000, 0x37dc0000, 0x37dc8000, 0x37dd0000, 0x37dd8000, 0x37de0000, 0x37de8000, 0x37df0000, 0x37df8000, 0x37e00000, 0x37e08000, 0x37e10000, 0x37e18000, 0x37e20000, 0x37e28000, 0x37e30000, 0x37e38000, 0x37e40000, 0x37e48000, 0x37e50000, 0x37e58000, 0x37e60000, 0x37e68000, 0x37e70000, 0x37e78000, 0x37e80000, 0x37e88000, 0x37e90000, 0x37e98000, 0x37ea0000, 0x37ea8000, 0x37eb0000, 0x37eb8000, 0x37ec0000, 0x37ec8000, 0x37ed0000, 0x37ed8000, 0x37ee0000, 0x37ee8000, 0x37ef0000, 0x37ef8000, 0x37f00000, 0x37f08000, 0x37f10000, 0x37f18000, 0x37f20000, 0x37f28000, 0x37f30000, 0x37f38000, 0x37f40000, 0x37f48000, 0x37f50000, 0x37f58000, 0x37f60000, 0x37f68000, 0x37f70000, 0x37f78000, 0x37f80000, 0x37f88000, 0x37f90000, 0x37f98000, 0x37fa0000, 0x37fa8000, 0x37fb0000, 0x37fb8000, 0x37fc0000, 0x37fc8000, 0x37fd0000, 0x37fd8000, 0x37fe0000, 0x37fe8000, 0x37ff0000, 0x37ff8000, 0x38000000, 0x38004000, 0x38008000, 0x3800c000, 0x38010000, 0x38014000, 0x38018000, 0x3801c000, 0x38020000, 0x38024000, 0x38028000, 0x3802c000, 0x38030000, 0x38034000, 0x38038000, 0x3803c000, 0x38040000, 0x38044000, 0x38048000, 0x3804c000, 0x38050000, 0x38054000, 0x38058000, 0x3805c000, 0x38060000, 0x38064000, 0x38068000, 0x3806c000, 0x38070000, 0x38074000, 0x38078000, 0x3807c000, 0x38080000, 0x38084000, 0x38088000, 0x3808c000, 0x38090000, 0x38094000, 0x38098000, 0x3809c000, 0x380a0000, 0x380a4000, 0x380a8000, 0x380ac000, 0x380b0000, 0x380b4000, 0x380b8000, 0x380bc000, 0x380c0000, 0x380c4000, 0x380c8000, 0x380cc000, 0x380d0000, 0x380d4000, 0x380d8000, 0x380dc000, 0x380e0000, 0x380e4000, 0x380e8000, 0x380ec000, 0x380f0000, 0x380f4000, 0x380f8000, 0x380fc000, 0x38100000, 0x38104000, 0x38108000, 0x3810c000, 0x38110000, 0x38114000, 0x38118000, 0x3811c000, 0x38120000, 0x38124000, 0x38128000, 0x3812c000, 0x38130000, 0x38134000, 0x38138000, 0x3813c000, 0x38140000, 0x38144000, 0x38148000, 0x3814c000, 0x38150000, 0x38154000, 0x38158000, 0x3815c000, 0x38160000, 0x38164000, 0x38168000, 0x3816c000, 0x38170000, 0x38174000, 0x38178000, 0x3817c000, 0x38180000, 0x38184000, 0x38188000, 0x3818c000, 0x38190000, 0x38194000, 0x38198000, 0x3819c000, 0x381a0000, 0x381a4000, 0x381a8000, 0x381ac000, 0x381b0000, 0x381b4000, 0x381b8000, 0x381bc000, 0x381c0000, 0x381c4000, 0x381c8000, 0x381cc000, 0x381d0000, 0x381d4000, 0x381d8000, 0x381dc000, 0x381e0000, 0x381e4000, 0x381e8000, 0x381ec000, 0x381f0000, 0x381f4000, 0x381f8000, 0x381fc000, 0x38200000, 0x38204000, 0x38208000, 0x3820c000, 0x38210000, 0x38214000, 0x38218000, 0x3821c000, 0x38220000, 0x38224000, 0x38228000, 0x3822c000, 0x38230000, 0x38234000, 0x38238000, 0x3823c000, 0x38240000, 0x38244000, 0x38248000, 0x3824c000, 0x38250000, 0x38254000, 0x38258000, 0x3825c000, 0x38260000, 0x38264000, 0x38268000, 0x3826c000, 0x38270000, 0x38274000, 0x38278000, 0x3827c000, 0x38280000, 0x38284000, 0x38288000, 0x3828c000, 0x38290000, 0x38294000, 0x38298000, 0x3829c000, 0x382a0000, 0x382a4000, 0x382a8000, 0x382ac000, 0x382b0000, 0x382b4000, 0x382b8000, 0x382bc000, 0x382c0000, 0x382c4000, 0x382c8000, 0x382cc000, 0x382d0000, 0x382d4000, 0x382d8000, 0x382dc000, 0x382e0000, 0x382e4000, 0x382e8000, 0x382ec000, 0x382f0000, 0x382f4000, 0x382f8000, 0x382fc000, 0x38300000, 0x38304000, 0x38308000, 0x3830c000, 0x38310000, 0x38314000, 0x38318000, 0x3831c000, 0x38320000, 0x38324000, 0x38328000, 0x3832c000, 0x38330000, 0x38334000, 0x38338000, 0x3833c000, 0x38340000, 0x38344000, 0x38348000, 0x3834c000, 0x38350000, 0x38354000, 0x38358000, 0x3835c000, 0x38360000, 0x38364000, 0x38368000, 0x3836c000, 0x38370000, 0x38374000, 0x38378000, 0x3837c000, 0x38380000, 0x38384000, 0x38388000, 0x3838c000, 0x38390000, 0x38394000, 0x38398000, 0x3839c000, 0x383a0000, 0x383a4000, 0x383a8000, 0x383ac000, 0x383b0000, 0x383b4000, 0x383b8000, 0x383bc000, 0x383c0000, 0x383c4000, 0x383c8000, 0x383cc000, 0x383d0000, 0x383d4000, 0x383d8000, 0x383dc000, 0x383e0000, 0x383e4000, 0x383e8000, 0x383ec000, 0x383f0000, 0x383f4000, 0x383f8000, 0x383fc000, 0x38400000, 0x38404000, 0x38408000, 0x3840c000, 0x38410000, 0x38414000, 0x38418000, 0x3841c000, 0x38420000, 0x38424000, 0x38428000, 0x3842c000, 0x38430000, 0x38434000, 0x38438000, 0x3843c000, 0x38440000, 0x38444000, 0x38448000, 0x3844c000, 0x38450000, 0x38454000, 0x38458000, 0x3845c000, 0x38460000, 0x38464000, 0x38468000, 0x3846c000, 0x38470000, 0x38474000, 0x38478000, 0x3847c000, 0x38480000, 0x38484000, 0x38488000, 0x3848c000, 0x38490000, 0x38494000, 0x38498000, 0x3849c000, 0x384a0000, 0x384a4000, 0x384a8000, 0x384ac000, 0x384b0000, 0x384b4000, 0x384b8000, 0x384bc000, 0x384c0000, 0x384c4000, 0x384c8000, 0x384cc000, 0x384d0000, 0x384d4000, 0x384d8000, 0x384dc000, 0x384e0000, 0x384e4000, 0x384e8000, 0x384ec000, 0x384f0000, 0x384f4000, 0x384f8000, 0x384fc000, 0x38500000, 0x38504000, 0x38508000, 0x3850c000, 0x38510000, 0x38514000, 0x38518000, 0x3851c000, 0x38520000, 0x38524000, 0x38528000, 0x3852c000, 0x38530000, 0x38534000, 0x38538000, 0x3853c000, 0x38540000, 0x38544000, 0x38548000, 0x3854c000, 0x38550000, 0x38554000, 0x38558000, 0x3855c000, 0x38560000, 0x38564000, 0x38568000, 0x3856c000, 0x38570000, 0x38574000, 0x38578000, 0x3857c000, 0x38580000, 0x38584000, 0x38588000, 0x3858c000, 0x38590000, 0x38594000, 0x38598000, 0x3859c000, 0x385a0000, 0x385a4000, 0x385a8000, 0x385ac000, 0x385b0000, 0x385b4000, 0x385b8000, 0x385bc000, 0x385c0000, 0x385c4000, 0x385c8000, 0x385cc000, 0x385d0000, 0x385d4000, 0x385d8000, 0x385dc000, 0x385e0000, 0x385e4000, 0x385e8000, 0x385ec000, 0x385f0000, 0x385f4000, 0x385f8000, 0x385fc000, 0x38600000, 0x38604000, 0x38608000, 0x3860c000, 0x38610000, 0x38614000, 0x38618000, 0x3861c000, 0x38620000, 0x38624000, 0x38628000, 0x3862c000, 0x38630000, 0x38634000, 0x38638000, 0x3863c000, 0x38640000, 0x38644000, 0x38648000, 0x3864c000, 0x38650000, 0x38654000, 0x38658000, 0x3865c000, 0x38660000, 0x38664000, 0x38668000, 0x3866c000, 0x38670000, 0x38674000, 0x38678000, 0x3867c000, 0x38680000, 0x38684000, 0x38688000, 0x3868c000, 0x38690000, 0x38694000, 0x38698000, 0x3869c000, 0x386a0000, 0x386a4000, 0x386a8000, 0x386ac000, 0x386b0000, 0x386b4000, 0x386b8000, 0x386bc000, 0x386c0000, 0x386c4000, 0x386c8000, 0x386cc000, 0x386d0000, 0x386d4000, 0x386d8000, 0x386dc000, 0x386e0000, 0x386e4000, 0x386e8000, 0x386ec000, 0x386f0000, 0x386f4000, 0x386f8000, 0x386fc000, 0x38700000, 0x38704000, 0x38708000, 0x3870c000, 0x38710000, 0x38714000, 0x38718000, 0x3871c000, 0x38720000, 0x38724000, 0x38728000, 0x3872c000, 0x38730000, 0x38734000, 0x38738000, 0x3873c000, 0x38740000, 0x38744000, 0x38748000, 0x3874c000, 0x38750000, 0x38754000, 0x38758000, 0x3875c000, 0x38760000, 0x38764000, 0x38768000, 0x3876c000, 0x38770000, 0x38774000, 0x38778000, 0x3877c000, 0x38780000, 0x38784000, 0x38788000, 0x3878c000, 0x38790000, 0x38794000, 0x38798000, 0x3879c000, 0x387a0000, 0x387a4000, 0x387a8000, 0x387ac000, 0x387b0000, 0x387b4000, 0x387b8000, 0x387bc000, 0x387c0000, 0x387c4000, 0x387c8000, 0x387cc000, 0x387d0000, 0x387d4000, 0x387d8000, 0x387dc000, 0x387e0000, 0x387e4000, 0x387e8000, 0x387ec000, 0x387f0000, 0x387f4000, 0x387f8000, 0x387fc000, 0x38000000, 0x38002000, 0x38004000, 0x38006000, 0x38008000, 0x3800a000, 0x3800c000, 0x3800e000, 0x38010000, 0x38012000, 0x38014000, 0x38016000, 0x38018000, 0x3801a000, 0x3801c000, 0x3801e000, 0x38020000, 0x38022000, 0x38024000, 0x38026000, 0x38028000, 0x3802a000, 0x3802c000, 0x3802e000, 0x38030000, 0x38032000, 0x38034000, 0x38036000, 0x38038000, 0x3803a000, 0x3803c000, 0x3803e000, 0x38040000, 0x38042000, 0x38044000, 0x38046000, 0x38048000, 0x3804a000, 0x3804c000, 0x3804e000, 0x38050000, 0x38052000, 0x38054000, 0x38056000, 0x38058000, 0x3805a000, 0x3805c000, 0x3805e000, 0x38060000, 0x38062000, 0x38064000, 0x38066000, 0x38068000, 0x3806a000, 0x3806c000, 0x3806e000, 0x38070000, 0x38072000, 0x38074000, 0x38076000, 0x38078000, 0x3807a000, 0x3807c000, 0x3807e000, 0x38080000, 0x38082000, 0x38084000, 0x38086000, 0x38088000, 0x3808a000, 0x3808c000, 0x3808e000, 0x38090000, 0x38092000, 0x38094000, 0x38096000, 0x38098000, 0x3809a000, 0x3809c000, 0x3809e000, 0x380a0000, 0x380a2000, 0x380a4000, 0x380a6000, 0x380a8000, 0x380aa000, 0x380ac000, 0x380ae000, 0x380b0000, 0x380b2000, 0x380b4000, 0x380b6000, 0x380b8000, 0x380ba000, 0x380bc000, 0x380be000, 0x380c0000, 0x380c2000, 0x380c4000, 0x380c6000, 0x380c8000, 0x380ca000, 0x380cc000, 0x380ce000, 0x380d0000, 0x380d2000, 0x380d4000, 0x380d6000, 0x380d8000, 0x380da000, 0x380dc000, 0x380de000, 0x380e0000, 0x380e2000, 0x380e4000, 0x380e6000, 0x380e8000, 0x380ea000, 0x380ec000, 0x380ee000, 0x380f0000, 0x380f2000, 0x380f4000, 0x380f6000, 0x380f8000, 0x380fa000, 0x380fc000, 0x380fe000, 0x38100000, 0x38102000, 0x38104000, 0x38106000, 0x38108000, 0x3810a000, 0x3810c000, 0x3810e000, 0x38110000, 0x38112000, 0x38114000, 0x38116000, 0x38118000, 0x3811a000, 0x3811c000, 0x3811e000, 0x38120000, 0x38122000, 0x38124000, 0x38126000, 0x38128000, 0x3812a000, 0x3812c000, 0x3812e000, 0x38130000, 0x38132000, 0x38134000, 0x38136000, 0x38138000, 0x3813a000, 0x3813c000, 0x3813e000, 0x38140000, 0x38142000, 0x38144000, 0x38146000, 0x38148000, 0x3814a000, 0x3814c000, 0x3814e000, 0x38150000, 0x38152000, 0x38154000, 0x38156000, 0x38158000, 0x3815a000, 0x3815c000, 0x3815e000, 0x38160000, 0x38162000, 0x38164000, 0x38166000, 0x38168000, 0x3816a000, 0x3816c000, 0x3816e000, 0x38170000, 0x38172000, 0x38174000, 0x38176000, 0x38178000, 0x3817a000, 0x3817c000, 0x3817e000, 0x38180000, 0x38182000, 0x38184000, 0x38186000, 0x38188000, 0x3818a000, 0x3818c000, 0x3818e000, 0x38190000, 0x38192000, 0x38194000, 0x38196000, 0x38198000, 0x3819a000, 0x3819c000, 0x3819e000, 0x381a0000, 0x381a2000, 0x381a4000, 0x381a6000, 0x381a8000, 0x381aa000, 0x381ac000, 0x381ae000, 0x381b0000, 0x381b2000, 0x381b4000, 0x381b6000, 0x381b8000, 0x381ba000, 0x381bc000, 0x381be000, 0x381c0000, 0x381c2000, 0x381c4000, 0x381c6000, 0x381c8000, 0x381ca000, 0x381cc000, 0x381ce000, 0x381d0000, 0x381d2000, 0x381d4000, 0x381d6000, 0x381d8000, 0x381da000, 0x381dc000, 0x381de000, 0x381e0000, 0x381e2000, 0x381e4000, 0x381e6000, 0x381e8000, 0x381ea000, 0x381ec000, 0x381ee000, 0x381f0000, 0x381f2000, 0x381f4000, 0x381f6000, 0x381f8000, 0x381fa000, 0x381fc000, 0x381fe000, 0x38200000, 0x38202000, 0x38204000, 0x38206000, 0x38208000, 0x3820a000, 0x3820c000, 0x3820e000, 0x38210000, 0x38212000, 0x38214000, 0x38216000, 0x38218000, 0x3821a000, 0x3821c000, 0x3821e000, 0x38220000, 0x38222000, 0x38224000, 0x38226000, 0x38228000, 0x3822a000, 0x3822c000, 0x3822e000, 0x38230000, 0x38232000, 0x38234000, 0x38236000, 0x38238000, 0x3823a000, 0x3823c000, 0x3823e000, 0x38240000, 0x38242000, 0x38244000, 0x38246000, 0x38248000, 0x3824a000, 0x3824c000, 0x3824e000, 0x38250000, 0x38252000, 0x38254000, 0x38256000, 0x38258000, 0x3825a000, 0x3825c000, 0x3825e000, 0x38260000, 0x38262000, 0x38264000, 0x38266000, 0x38268000, 0x3826a000, 0x3826c000, 0x3826e000, 0x38270000, 0x38272000, 0x38274000, 0x38276000, 0x38278000, 0x3827a000, 0x3827c000, 0x3827e000, 0x38280000, 0x38282000, 0x38284000, 0x38286000, 0x38288000, 0x3828a000, 0x3828c000, 0x3828e000, 0x38290000, 0x38292000, 0x38294000, 0x38296000, 0x38298000, 0x3829a000, 0x3829c000, 0x3829e000, 0x382a0000, 0x382a2000, 0x382a4000, 0x382a6000, 0x382a8000, 0x382aa000, 0x382ac000, 0x382ae000, 0x382b0000, 0x382b2000, 0x382b4000, 0x382b6000, 0x382b8000, 0x382ba000, 0x382bc000, 0x382be000, 0x382c0000, 0x382c2000, 0x382c4000, 0x382c6000, 0x382c8000, 0x382ca000, 0x382cc000, 0x382ce000, 0x382d0000, 0x382d2000, 0x382d4000, 0x382d6000, 0x382d8000, 0x382da000, 0x382dc000, 0x382de000, 0x382e0000, 0x382e2000, 0x382e4000, 0x382e6000, 0x382e8000, 0x382ea000, 0x382ec000, 0x382ee000, 0x382f0000, 0x382f2000, 0x382f4000, 0x382f6000, 0x382f8000, 0x382fa000, 0x382fc000, 0x382fe000, 0x38300000, 0x38302000, 0x38304000, 0x38306000, 0x38308000, 0x3830a000, 0x3830c000, 0x3830e000, 0x38310000, 0x38312000, 0x38314000, 0x38316000, 0x38318000, 0x3831a000, 0x3831c000, 0x3831e000, 0x38320000, 0x38322000, 0x38324000, 0x38326000, 0x38328000, 0x3832a000, 0x3832c000, 0x3832e000, 0x38330000, 0x38332000, 0x38334000, 0x38336000, 0x38338000, 0x3833a000, 0x3833c000, 0x3833e000, 0x38340000, 0x38342000, 0x38344000, 0x38346000, 0x38348000, 0x3834a000, 0x3834c000, 0x3834e000, 0x38350000, 0x38352000, 0x38354000, 0x38356000, 0x38358000, 0x3835a000, 0x3835c000, 0x3835e000, 0x38360000, 0x38362000, 0x38364000, 0x38366000, 0x38368000, 0x3836a000, 0x3836c000, 0x3836e000, 0x38370000, 0x38372000, 0x38374000, 0x38376000, 0x38378000, 0x3837a000, 0x3837c000, 0x3837e000, 0x38380000, 0x38382000, 0x38384000, 0x38386000, 0x38388000, 0x3838a000, 0x3838c000, 0x3838e000, 0x38390000, 0x38392000, 0x38394000, 0x38396000, 0x38398000, 0x3839a000, 0x3839c000, 0x3839e000, 0x383a0000, 0x383a2000, 0x383a4000, 0x383a6000, 0x383a8000, 0x383aa000, 0x383ac000, 0x383ae000, 0x383b0000, 0x383b2000, 0x383b4000, 0x383b6000, 0x383b8000, 0x383ba000, 0x383bc000, 0x383be000, 0x383c0000, 0x383c2000, 0x383c4000, 0x383c6000, 0x383c8000, 0x383ca000, 0x383cc000, 0x383ce000, 0x383d0000, 0x383d2000, 0x383d4000, 0x383d6000, 0x383d8000, 0x383da000, 0x383dc000, 0x383de000, 0x383e0000, 0x383e2000, 0x383e4000, 0x383e6000, 0x383e8000, 0x383ea000, 0x383ec000, 0x383ee000, 0x383f0000, 0x383f2000, 0x383f4000, 0x383f6000, 0x383f8000, 0x383fa000, 0x383fc000, 0x383fe000, 0x38400000, 0x38402000, 0x38404000, 0x38406000, 0x38408000, 0x3840a000, 0x3840c000, 0x3840e000, 0x38410000, 0x38412000, 0x38414000, 0x38416000, 0x38418000, 0x3841a000, 0x3841c000, 0x3841e000, 0x38420000, 0x38422000, 0x38424000, 0x38426000, 0x38428000, 0x3842a000, 0x3842c000, 0x3842e000, 0x38430000, 0x38432000, 0x38434000, 0x38436000, 0x38438000, 0x3843a000, 0x3843c000, 0x3843e000, 0x38440000, 0x38442000, 0x38444000, 0x38446000, 0x38448000, 0x3844a000, 0x3844c000, 0x3844e000, 0x38450000, 0x38452000, 0x38454000, 0x38456000, 0x38458000, 0x3845a000, 0x3845c000, 0x3845e000, 0x38460000, 0x38462000, 0x38464000, 0x38466000, 0x38468000, 0x3846a000, 0x3846c000, 0x3846e000, 0x38470000, 0x38472000, 0x38474000, 0x38476000, 0x38478000, 0x3847a000, 0x3847c000, 0x3847e000, 0x38480000, 0x38482000, 0x38484000, 0x38486000, 0x38488000, 0x3848a000, 0x3848c000, 0x3848e000, 0x38490000, 0x38492000, 0x38494000, 0x38496000, 0x38498000, 0x3849a000, 0x3849c000, 0x3849e000, 0x384a0000, 0x384a2000, 0x384a4000, 0x384a6000, 0x384a8000, 0x384aa000, 0x384ac000, 0x384ae000, 0x384b0000, 0x384b2000, 0x384b4000, 0x384b6000, 0x384b8000, 0x384ba000, 0x384bc000, 0x384be000, 0x384c0000, 0x384c2000, 0x384c4000, 0x384c6000, 0x384c8000, 0x384ca000, 0x384cc000, 0x384ce000, 0x384d0000, 0x384d2000, 0x384d4000, 0x384d6000, 0x384d8000, 0x384da000, 0x384dc000, 0x384de000, 0x384e0000, 0x384e2000, 0x384e4000, 0x384e6000, 0x384e8000, 0x384ea000, 0x384ec000, 0x384ee000, 0x384f0000, 0x384f2000, 0x384f4000, 0x384f6000, 0x384f8000, 0x384fa000, 0x384fc000, 0x384fe000, 0x38500000, 0x38502000, 0x38504000, 0x38506000, 0x38508000, 0x3850a000, 0x3850c000, 0x3850e000, 0x38510000, 0x38512000, 0x38514000, 0x38516000, 0x38518000, 0x3851a000, 0x3851c000, 0x3851e000, 0x38520000, 0x38522000, 0x38524000, 0x38526000, 0x38528000, 0x3852a000, 0x3852c000, 0x3852e000, 0x38530000, 0x38532000, 0x38534000, 0x38536000, 0x38538000, 0x3853a000, 0x3853c000, 0x3853e000, 0x38540000, 0x38542000, 0x38544000, 0x38546000, 0x38548000, 0x3854a000, 0x3854c000, 0x3854e000, 0x38550000, 0x38552000, 0x38554000, 0x38556000, 0x38558000, 0x3855a000, 0x3855c000, 0x3855e000, 0x38560000, 0x38562000, 0x38564000, 0x38566000, 0x38568000, 0x3856a000, 0x3856c000, 0x3856e000, 0x38570000, 0x38572000, 0x38574000, 0x38576000, 0x38578000, 0x3857a000, 0x3857c000, 0x3857e000, 0x38580000, 0x38582000, 0x38584000, 0x38586000, 0x38588000, 0x3858a000, 0x3858c000, 0x3858e000, 0x38590000, 0x38592000, 0x38594000, 0x38596000, 0x38598000, 0x3859a000, 0x3859c000, 0x3859e000, 0x385a0000, 0x385a2000, 0x385a4000, 0x385a6000, 0x385a8000, 0x385aa000, 0x385ac000, 0x385ae000, 0x385b0000, 0x385b2000, 0x385b4000, 0x385b6000, 0x385b8000, 0x385ba000, 0x385bc000, 0x385be000, 0x385c0000, 0x385c2000, 0x385c4000, 0x385c6000, 0x385c8000, 0x385ca000, 0x385cc000, 0x385ce000, 0x385d0000, 0x385d2000, 0x385d4000, 0x385d6000, 0x385d8000, 0x385da000, 0x385dc000, 0x385de000, 0x385e0000, 0x385e2000, 0x385e4000, 0x385e6000, 0x385e8000, 0x385ea000, 0x385ec000, 0x385ee000, 0x385f0000, 0x385f2000, 0x385f4000, 0x385f6000, 0x385f8000, 0x385fa000, 0x385fc000, 0x385fe000, 0x38600000, 0x38602000, 0x38604000, 0x38606000, 0x38608000, 0x3860a000, 0x3860c000, 0x3860e000, 0x38610000, 0x38612000, 0x38614000, 0x38616000, 0x38618000, 0x3861a000, 0x3861c000, 0x3861e000, 0x38620000, 0x38622000, 0x38624000, 0x38626000, 0x38628000, 0x3862a000, 0x3862c000, 0x3862e000, 0x38630000, 0x38632000, 0x38634000, 0x38636000, 0x38638000, 0x3863a000, 0x3863c000, 0x3863e000, 0x38640000, 0x38642000, 0x38644000, 0x38646000, 0x38648000, 0x3864a000, 0x3864c000, 0x3864e000, 0x38650000, 0x38652000, 0x38654000, 0x38656000, 0x38658000, 0x3865a000, 0x3865c000, 0x3865e000, 0x38660000, 0x38662000, 0x38664000, 0x38666000, 0x38668000, 0x3866a000, 0x3866c000, 0x3866e000, 0x38670000, 0x38672000, 0x38674000, 0x38676000, 0x38678000, 0x3867a000, 0x3867c000, 0x3867e000, 0x38680000, 0x38682000, 0x38684000, 0x38686000, 0x38688000, 0x3868a000, 0x3868c000, 0x3868e000, 0x38690000, 0x38692000, 0x38694000, 0x38696000, 0x38698000, 0x3869a000, 0x3869c000, 0x3869e000, 0x386a0000, 0x386a2000, 0x386a4000, 0x386a6000, 0x386a8000, 0x386aa000, 0x386ac000, 0x386ae000, 0x386b0000, 0x386b2000, 0x386b4000, 0x386b6000, 0x386b8000, 0x386ba000, 0x386bc000, 0x386be000, 0x386c0000, 0x386c2000, 0x386c4000, 0x386c6000, 0x386c8000, 0x386ca000, 0x386cc000, 0x386ce000, 0x386d0000, 0x386d2000, 0x386d4000, 0x386d6000, 0x386d8000, 0x386da000, 0x386dc000, 0x386de000, 0x386e0000, 0x386e2000, 0x386e4000, 0x386e6000, 0x386e8000, 0x386ea000, 0x386ec000, 0x386ee000, 0x386f0000, 0x386f2000, 0x386f4000, 0x386f6000, 0x386f8000, 0x386fa000, 0x386fc000, 0x386fe000, 0x38700000, 0x38702000, 0x38704000, 0x38706000, 0x38708000, 0x3870a000, 0x3870c000, 0x3870e000, 0x38710000, 0x38712000, 0x38714000, 0x38716000, 0x38718000, 0x3871a000, 0x3871c000, 0x3871e000, 0x38720000, 0x38722000, 0x38724000, 0x38726000, 0x38728000, 0x3872a000, 0x3872c000, 0x3872e000, 0x38730000, 0x38732000, 0x38734000, 0x38736000, 0x38738000, 0x3873a000, 0x3873c000, 0x3873e000, 0x38740000, 0x38742000, 0x38744000, 0x38746000, 0x38748000, 0x3874a000, 0x3874c000, 0x3874e000, 0x38750000, 0x38752000, 0x38754000, 0x38756000, 0x38758000, 0x3875a000, 0x3875c000, 0x3875e000, 0x38760000, 0x38762000, 0x38764000, 0x38766000, 0x38768000, 0x3876a000, 0x3876c000, 0x3876e000, 0x38770000, 0x38772000, 0x38774000, 0x38776000, 0x38778000, 0x3877a000, 0x3877c000, 0x3877e000, 0x38780000, 0x38782000, 0x38784000, 0x38786000, 0x38788000, 0x3878a000, 0x3878c000, 0x3878e000, 0x38790000, 0x38792000, 0x38794000, 0x38796000, 0x38798000, 0x3879a000, 0x3879c000, 0x3879e000, 0x387a0000, 0x387a2000, 0x387a4000, 0x387a6000, 0x387a8000, 0x387aa000, 0x387ac000, 0x387ae000, 0x387b0000, 0x387b2000, 0x387b4000, 0x387b6000, 0x387b8000, 0x387ba000, 0x387bc000, 0x387be000, 0x387c0000, 0x387c2000, 0x387c4000, 0x387c6000, 0x387c8000, 0x387ca000, 0x387cc000, 0x387ce000, 0x387d0000, 0x387d2000, 0x387d4000, 0x387d6000, 0x387d8000, 0x387da000, 0x387dc000, 0x387de000, 0x387e0000, 0x387e2000, 0x387e4000, 0x387e6000, 0x387e8000, 0x387ea000, 0x387ec000, 0x387ee000, 0x387f0000, 0x387f2000, 0x387f4000, 0x387f6000, 0x387f8000, 0x387fa000, 0x387fc000, 0x387fe000 }; static cmsUInt16Number Offset[64] = { 0x0000, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0000, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400, 0x0400 }; static cmsUInt32Number Exponent[64] = { 0x00000000, 0x00800000, 0x01000000, 0x01800000, 0x02000000, 0x02800000, 0x03000000, 0x03800000, 0x04000000, 0x04800000, 0x05000000, 0x05800000, 0x06000000, 0x06800000, 0x07000000, 0x07800000, 0x08000000, 0x08800000, 0x09000000, 0x09800000, 0x0a000000, 0x0a800000, 0x0b000000, 0x0b800000, 0x0c000000, 0x0c800000, 0x0d000000, 0x0d800000, 0x0e000000, 0x0e800000, 0x0f000000, 0x47800000, 0x80000000, 0x80800000, 0x81000000, 0x81800000, 0x82000000, 0x82800000, 0x83000000, 0x83800000, 0x84000000, 0x84800000, 0x85000000, 0x85800000, 0x86000000, 0x86800000, 0x87000000, 0x87800000, 0x88000000, 0x88800000, 0x89000000, 0x89800000, 0x8a000000, 0x8a800000, 0x8b000000, 0x8b800000, 0x8c000000, 0x8c800000, 0x8d000000, 0x8d800000, 0x8e000000, 0x8e800000, 0x8f000000, 0xc7800000 }; static cmsUInt16Number Base[512] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x0c00, 0x1000, 0x1400, 0x1800, 0x1c00, 0x2000, 0x2400, 0x2800, 0x2c00, 0x3000, 0x3400, 0x3800, 0x3c00, 0x4000, 0x4400, 0x4800, 0x4c00, 0x5000, 0x5400, 0x5800, 0x5c00, 0x6000, 0x6400, 0x6800, 0x6c00, 0x7000, 0x7400, 0x7800, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8001, 0x8002, 0x8004, 0x8008, 0x8010, 0x8020, 0x8040, 0x8080, 0x8100, 0x8200, 0x8400, 0x8800, 0x8c00, 0x9000, 0x9400, 0x9800, 0x9c00, 0xa000, 0xa400, 0xa800, 0xac00, 0xb000, 0xb400, 0xb800, 0xbc00, 0xc000, 0xc400, 0xc800, 0xcc00, 0xd000, 0xd400, 0xd800, 0xdc00, 0xe000, 0xe400, 0xe800, 0xec00, 0xf000, 0xf400, 0xf800, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc00 }; static cmsUInt8Number Shift[512] = { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0d, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0d }; cmsFloat32Number _cmsHalf2Float(cmsUInt16Number h) { union { cmsFloat32Number flt; cmsUInt32Number num; } out; int n = h >> 10; out.num = Mantissa[ (h & 0x3ff) + Offset[ n ] ] + Exponent[ n ]; return out.flt; } cmsUInt16Number _cmsFloat2Half(cmsFloat32Number flt) { union { cmsFloat32Number flt; cmsUInt32Number num; } in; cmsUInt32Number n, j; in.flt = flt; n = in.num; j = (n >> 23) & 0x1ff; return (cmsUInt16Number) ((cmsUInt32Number) Base[ j ] + (( n & 0x007fffff) >> Shift[ j ])); } #endif lcms2-2.5/src/lcms2.def0000644002406300000240000005144712163060730014225 0ustar mariamausersLIBRARY LCMS2.DLL EXPORTS _cms15Fixed16toDouble = _cms15Fixed16toDouble _cms8Fixed8toDouble = _cms8Fixed8toDouble cmsAdaptToIlluminant = cmsAdaptToIlluminant _cmsAdjustEndianess16 = _cmsAdjustEndianess16 _cmsAdjustEndianess32 = _cmsAdjustEndianess32 _cmsAdjustEndianess64 = _cmsAdjustEndianess64 cmsAllocNamedColorList = cmsAllocNamedColorList cmsAllocProfileSequenceDescription = cmsAllocProfileSequenceDescription cmsAppendNamedColor = cmsAppendNamedColor cmsBFDdeltaE = cmsBFDdeltaE cmsBuildGamma = cmsBuildGamma cmsBuildParametricToneCurve = cmsBuildParametricToneCurve cmsBuildSegmentedToneCurve = cmsBuildSegmentedToneCurve cmsBuildTabulatedToneCurve16 = cmsBuildTabulatedToneCurve16 cmsBuildTabulatedToneCurveFloat = cmsBuildTabulatedToneCurveFloat _cmsCalloc = _cmsCalloc cmsChannelsOf = cmsChannelsOf cmsCIE2000DeltaE = cmsCIE2000DeltaE cmsCIE94DeltaE = cmsCIE94DeltaE cmsCIECAM02Done = cmsCIECAM02Done cmsCIECAM02Forward = cmsCIECAM02Forward cmsCIECAM02Init = cmsCIECAM02Init cmsCIECAM02Reverse = cmsCIECAM02Reverse cmsCloseIOhandler = cmsCloseIOhandler cmsCloseProfile = cmsCloseProfile cmsCMCdeltaE = cmsCMCdeltaE cmsCreate_sRGBProfile = cmsCreate_sRGBProfile cmsCreate_sRGBProfileTHR = cmsCreate_sRGBProfileTHR cmsCreateBCHSWabstractProfile = cmsCreateBCHSWabstractProfile cmsCreateBCHSWabstractProfileTHR = cmsCreateBCHSWabstractProfileTHR cmsCreateExtendedTransform = cmsCreateExtendedTransform cmsCreateGrayProfile = cmsCreateGrayProfile cmsCreateGrayProfileTHR = cmsCreateGrayProfileTHR cmsCreateInkLimitingDeviceLink = cmsCreateInkLimitingDeviceLink cmsCreateInkLimitingDeviceLinkTHR = cmsCreateInkLimitingDeviceLinkTHR cmsCreateLab2Profile = cmsCreateLab2Profile cmsCreateLab2ProfileTHR = cmsCreateLab2ProfileTHR cmsCreateLab4Profile = cmsCreateLab4Profile cmsCreateLab4ProfileTHR = cmsCreateLab4ProfileTHR cmsCreateLinearizationDeviceLink = cmsCreateLinearizationDeviceLink cmsCreateLinearizationDeviceLinkTHR = cmsCreateLinearizationDeviceLinkTHR cmsCreateMultiprofileTransform = cmsCreateMultiprofileTransform cmsCreateMultiprofileTransformTHR = cmsCreateMultiprofileTransformTHR cmsCreateNULLProfile = cmsCreateNULLProfile cmsCreateNULLProfileTHR = cmsCreateNULLProfileTHR cmsCreateProfilePlaceholder = cmsCreateProfilePlaceholder cmsCreateProofingTransform = cmsCreateProofingTransform cmsCreateProofingTransformTHR = cmsCreateProofingTransformTHR cmsCreateRGBProfile = cmsCreateRGBProfile cmsCreateRGBProfileTHR = cmsCreateRGBProfileTHR cmsCreateTransform = cmsCreateTransform cmsCreateTransformTHR = cmsCreateTransformTHR cmsCreateXYZProfile = cmsCreateXYZProfile cmsCreateXYZProfileTHR = cmsCreateXYZProfileTHR cmsD50_xyY = cmsD50_xyY cmsD50_XYZ = cmsD50_XYZ _cmsDecodeDateTimeNumber = _cmsDecodeDateTimeNumber _cmsDefaultICCintents = _cmsDefaultICCintents cmsDeleteTransform = cmsDeleteTransform cmsDeltaE = cmsDeltaE cmsDetectBlackPoint = cmsDetectBlackPoint cmsDetectDestinationBlackPoint = cmsDetectDestinationBlackPoint cmsDetectTAC = cmsDetectTAC cmsDesaturateLab = cmsDesaturateLab cmsDoTransform = cmsDoTransform cmsDoTransformStride = cmsDoTransformStride _cmsDoubleTo15Fixed16 = _cmsDoubleTo15Fixed16 _cmsDoubleTo8Fixed8 = _cmsDoubleTo8Fixed8 _cmsDupMem = _cmsDupMem cmsDupNamedColorList = cmsDupNamedColorList cmsDupProfileSequenceDescription = cmsDupProfileSequenceDescription cmsDupToneCurve = cmsDupToneCurve _cmsEncodeDateTimeNumber = _cmsEncodeDateTimeNumber cmsEstimateGamma = cmsEstimateGamma cmsGetToneCurveEstimatedTableEntries = cmsGetToneCurveEstimatedTableEntries cmsGetToneCurveEstimatedTable = cmsGetToneCurveEstimatedTable cmsEvalToneCurve16 = cmsEvalToneCurve16 cmsEvalToneCurveFloat = cmsEvalToneCurveFloat cmsfilelength = cmsfilelength cmsFloat2LabEncoded = cmsFloat2LabEncoded cmsFloat2LabEncodedV2 = cmsFloat2LabEncodedV2 cmsFloat2XYZEncoded = cmsFloat2XYZEncoded cmsFormatterForColorspaceOfProfile = cmsFormatterForColorspaceOfProfile cmsFormatterForPCSOfProfile = cmsFormatterForPCSOfProfile _cmsFree = _cmsFree cmsFreeNamedColorList = cmsFreeNamedColorList cmsFreeProfileSequenceDescription = cmsFreeProfileSequenceDescription cmsFreeToneCurve = cmsFreeToneCurve cmsFreeToneCurveTriple = cmsFreeToneCurveTriple cmsGBDAlloc = cmsGBDAlloc cmsGBDFree = cmsGBDFree cmsGDBAddPoint = cmsGDBAddPoint cmsGDBCheckPoint = cmsGDBCheckPoint cmsGDBCompute = cmsGDBCompute cmsGetAlarmCodes = cmsGetAlarmCodes cmsGetColorSpace = cmsGetColorSpace cmsGetDeviceClass = cmsGetDeviceClass cmsGetEncodedICCversion = cmsGetEncodedICCversion cmsGetHeaderAttributes = cmsGetHeaderAttributes cmsGetHeaderCreationDateTime = cmsGetHeaderCreationDateTime cmsGetHeaderFlags = cmsGetHeaderFlags cmsGetHeaderManufacturer = cmsGetHeaderManufacturer cmsGetHeaderModel = cmsGetHeaderModel cmsGetHeaderProfileID = cmsGetHeaderProfileID cmsGetHeaderRenderingIntent = cmsGetHeaderRenderingIntent cmsGetNamedColorList = cmsGetNamedColorList cmsGetPCS = cmsGetPCS cmsGetPostScriptColorResource = cmsGetPostScriptColorResource cmsGetPostScriptCRD = cmsGetPostScriptCRD cmsGetPostScriptCSA = cmsGetPostScriptCSA cmsGetProfileInfo = cmsGetProfileInfo cmsGetProfileInfoASCII = cmsGetProfileInfoASCII cmsGetProfileContextID = cmsGetProfileContextID cmsGetProfileVersion = cmsGetProfileVersion cmsGetSupportedIntents = cmsGetSupportedIntents cmsGetTagCount = cmsGetTagCount cmsGetTagSignature = cmsGetTagSignature cmsGetTransformContextID = cmsGetTransformContextID _cmsICCcolorSpace = _cmsICCcolorSpace _cmsIOPrintf = _cmsIOPrintf cmsIsCLUT = cmsIsCLUT cmsIsIntentSupported = cmsIsIntentSupported cmsIsMatrixShaper = cmsIsMatrixShaper cmsIsTag = cmsIsTag cmsIsToneCurveDescending = cmsIsToneCurveDescending cmsIsToneCurveLinear = cmsIsToneCurveLinear cmsIsToneCurveMonotonic = cmsIsToneCurveMonotonic cmsIsToneCurveMultisegment = cmsIsToneCurveMultisegment cmsGetToneCurveParametricType = cmsGetToneCurveParametricType cmsIT8Alloc = cmsIT8Alloc cmsIT8DefineDblFormat = cmsIT8DefineDblFormat cmsIT8EnumDataFormat = cmsIT8EnumDataFormat cmsIT8EnumProperties = cmsIT8EnumProperties cmsIT8EnumPropertyMulti = cmsIT8EnumPropertyMulti cmsIT8Free = cmsIT8Free cmsIT8GetData = cmsIT8GetData cmsIT8GetDataDbl = cmsIT8GetDataDbl cmsIT8FindDataFormat = cmsIT8FindDataFormat cmsIT8GetDataRowCol = cmsIT8GetDataRowCol cmsIT8GetDataRowColDbl = cmsIT8GetDataRowColDbl cmsIT8GetPatchName = cmsIT8GetPatchName cmsIT8GetPatchByName = cmsIT8GetPatchByName cmsIT8GetProperty = cmsIT8GetProperty cmsIT8GetPropertyDbl = cmsIT8GetPropertyDbl cmsIT8GetPropertyMulti = cmsIT8GetPropertyMulti cmsIT8GetSheetType = cmsIT8GetSheetType cmsIT8LoadFromFile = cmsIT8LoadFromFile cmsIT8LoadFromMem = cmsIT8LoadFromMem cmsIT8SaveToFile = cmsIT8SaveToFile cmsIT8SaveToMem = cmsIT8SaveToMem cmsIT8SetComment = cmsIT8SetComment cmsIT8SetData = cmsIT8SetData cmsIT8SetDataDbl = cmsIT8SetDataDbl cmsIT8SetDataFormat = cmsIT8SetDataFormat cmsIT8SetDataRowCol = cmsIT8SetDataRowCol cmsIT8SetDataRowColDbl = cmsIT8SetDataRowColDbl cmsIT8SetPropertyDbl = cmsIT8SetPropertyDbl cmsIT8SetPropertyHex = cmsIT8SetPropertyHex cmsIT8SetPropertyStr = cmsIT8SetPropertyStr cmsIT8SetPropertyMulti = cmsIT8SetPropertyMulti cmsIT8SetPropertyUncooked = cmsIT8SetPropertyUncooked cmsIT8SetSheetType = cmsIT8SetSheetType cmsIT8SetTable = cmsIT8SetTable cmsIT8SetTableByLabel = cmsIT8SetTableByLabel cmsIT8SetIndexColumn = cmsIT8SetIndexColumn cmsIT8TableCount = cmsIT8TableCount cmsJoinToneCurve = cmsJoinToneCurve cmsLab2LCh = cmsLab2LCh cmsLab2XYZ = cmsLab2XYZ cmsLabEncoded2Float = cmsLabEncoded2Float cmsLabEncoded2FloatV2 = cmsLabEncoded2FloatV2 cmsLCh2Lab = cmsLCh2Lab _cmsLCMScolorSpace = _cmsLCMScolorSpace cmsLinkTag = cmsLinkTag cmsTagLinkedTo = cmsTagLinkedTo cmsPipelineAlloc = cmsPipelineAlloc cmsPipelineCat = cmsPipelineCat cmsPipelineCheckAndRetreiveStages = cmsPipelineCheckAndRetreiveStages cmsPipelineDup = cmsPipelineDup cmsPipelineStageCount = cmsPipelineStageCount cmsPipelineEval16 = cmsPipelineEval16 cmsPipelineEvalFloat = cmsPipelineEvalFloat cmsPipelineEvalReverseFloat = cmsPipelineEvalReverseFloat cmsPipelineFree = cmsPipelineFree cmsPipelineGetPtrToFirstStage = cmsPipelineGetPtrToFirstStage cmsPipelineGetPtrToLastStage = cmsPipelineGetPtrToLastStage cmsPipelineInputChannels = cmsPipelineInputChannels cmsPipelineInsertStage = cmsPipelineInsertStage cmsPipelineOutputChannels = cmsPipelineOutputChannels cmsPipelineSetSaveAs8bitsFlag = cmsPipelineSetSaveAs8bitsFlag _cmsPipelineSetOptimizationParameters = _cmsPipelineSetOptimizationParameters cmsPipelineUnlinkStage = cmsPipelineUnlinkStage _cmsMalloc = _cmsMalloc _cmsMallocZero = _cmsMallocZero _cmsMAT3eval = _cmsMAT3eval _cmsMAT3identity = _cmsMAT3identity _cmsMAT3inverse = _cmsMAT3inverse _cmsMAT3isIdentity = _cmsMAT3isIdentity _cmsMAT3per = _cmsMAT3per _cmsMAT3solve = _cmsMAT3solve cmsMD5computeID = cmsMD5computeID cmsMLUalloc = cmsMLUalloc cmsMLUdup = cmsMLUdup cmsMLUfree = cmsMLUfree cmsMLUgetASCII = cmsMLUgetASCII cmsMLUgetTranslation = cmsMLUgetTranslation cmsMLUgetWide = cmsMLUgetWide cmsMLUsetASCII = cmsMLUsetASCII cmsMLUsetWide = cmsMLUsetWide cmsStageAllocCLut16bit = cmsStageAllocCLut16bit cmsStageAllocCLut16bitGranular = cmsStageAllocCLut16bitGranular cmsStageAllocCLutFloat = cmsStageAllocCLutFloat cmsStageAllocCLutFloatGranular = cmsStageAllocCLutFloatGranular cmsStageAllocToneCurves = cmsStageAllocToneCurves cmsStageAllocIdentity = cmsStageAllocIdentity cmsStageAllocMatrix = cmsStageAllocMatrix _cmsStageAllocPlaceholder = _cmsStageAllocPlaceholder cmsStageDup = cmsStageDup cmsStageFree = cmsStageFree cmsStageNext = cmsStageNext cmsStageInputChannels = cmsStageInputChannels cmsStageOutputChannels = cmsStageOutputChannels cmsStageSampleCLut16bit = cmsStageSampleCLut16bit cmsStageSampleCLutFloat = cmsStageSampleCLutFloat cmsStageType = cmsStageType cmsStageData = cmsStageData cmsNamedColorCount = cmsNamedColorCount cmsNamedColorIndex = cmsNamedColorIndex cmsNamedColorInfo = cmsNamedColorInfo cmsOpenIOhandlerFromFile = cmsOpenIOhandlerFromFile cmsOpenIOhandlerFromMem = cmsOpenIOhandlerFromMem cmsOpenIOhandlerFromNULL = cmsOpenIOhandlerFromNULL cmsOpenIOhandlerFromStream = cmsOpenIOhandlerFromStream cmsOpenProfileFromFile = cmsOpenProfileFromFile cmsOpenProfileFromFileTHR = cmsOpenProfileFromFileTHR cmsOpenProfileFromIOhandlerTHR = cmsOpenProfileFromIOhandlerTHR cmsOpenProfileFromMem = cmsOpenProfileFromMem cmsOpenProfileFromMemTHR = cmsOpenProfileFromMemTHR cmsOpenProfileFromStream = cmsOpenProfileFromStream cmsOpenProfileFromStreamTHR = cmsOpenProfileFromStreamTHR cmsPlugin = cmsPlugin _cmsRead15Fixed16Number = _cmsRead15Fixed16Number _cmsReadAlignment = _cmsReadAlignment _cmsReadFloat32Number = _cmsReadFloat32Number cmsReadRawTag = cmsReadRawTag cmsReadTag = cmsReadTag _cmsReadTypeBase = _cmsReadTypeBase _cmsReadUInt16Array = _cmsReadUInt16Array _cmsReadUInt16Number = _cmsReadUInt16Number _cmsReadUInt32Number = _cmsReadUInt32Number _cmsReadUInt64Number = _cmsReadUInt64Number _cmsReadUInt8Number = _cmsReadUInt8Number _cmsReadXYZNumber = _cmsReadXYZNumber _cmsRealloc = _cmsRealloc cmsReverseToneCurve = cmsReverseToneCurve cmsReverseToneCurveEx = cmsReverseToneCurveEx cmsSaveProfileToFile = cmsSaveProfileToFile cmsSaveProfileToIOhandler = cmsSaveProfileToIOhandler cmsSaveProfileToMem = cmsSaveProfileToMem cmsSaveProfileToStream = cmsSaveProfileToStream cmsSetAdaptationState = cmsSetAdaptationState cmsSetAlarmCodes = cmsSetAlarmCodes cmsSetColorSpace = cmsSetColorSpace cmsSetDeviceClass = cmsSetDeviceClass cmsSetEncodedICCversion = cmsSetEncodedICCversion cmsSetHeaderAttributes = cmsSetHeaderAttributes cmsSetHeaderFlags = cmsSetHeaderFlags cmsSetHeaderManufacturer = cmsSetHeaderManufacturer cmsSetHeaderModel = cmsSetHeaderModel cmsSetHeaderProfileID = cmsSetHeaderProfileID cmsSetHeaderRenderingIntent = cmsSetHeaderRenderingIntent cmsSetLogErrorHandler = cmsSetLogErrorHandler cmsSetPCS = cmsSetPCS cmsSetProfileVersion = cmsSetProfileVersion cmsSignalError = cmsSignalError cmsSmoothToneCurve = cmsSmoothToneCurve cmsstrcasecmp = cmsstrcasecmp cmsTempFromWhitePoint = cmsTempFromWhitePoint cmsTransform2DeviceLink = cmsTransform2DeviceLink cmsUnregisterPlugins = cmsUnregisterPlugins _cmsVEC3cross = _cmsVEC3cross _cmsVEC3distance = _cmsVEC3distance _cmsVEC3dot = _cmsVEC3dot _cmsVEC3init = _cmsVEC3init _cmsVEC3length = _cmsVEC3length _cmsVEC3minus = _cmsVEC3minus cmsWhitePointFromTemp = cmsWhitePointFromTemp _cmsWrite15Fixed16Number = _cmsWrite15Fixed16Number _cmsWriteAlignment = _cmsWriteAlignment _cmsWriteFloat32Number = _cmsWriteFloat32Number cmsWriteRawTag = cmsWriteRawTag cmsWriteTag = cmsWriteTag _cmsWriteTypeBase = _cmsWriteTypeBase _cmsWriteUInt16Array = _cmsWriteUInt16Array _cmsWriteUInt16Number = _cmsWriteUInt16Number _cmsWriteUInt32Number = _cmsWriteUInt32Number _cmsWriteUInt64Number = _cmsWriteUInt64Number _cmsWriteUInt8Number = _cmsWriteUInt8Number _cmsWriteXYZNumber = _cmsWriteXYZNumber cmsxyY2XYZ = cmsxyY2XYZ cmsXYZ2Lab = cmsXYZ2Lab cmsXYZ2xyY = cmsXYZ2xyY cmsXYZEncoded2Float = cmsXYZEncoded2Float cmsSliceSpace16 = cmsSliceSpace16 cmsSliceSpaceFloat = cmsSliceSpaceFloat cmsChangeBuffersFormat = cmsChangeBuffersFormat cmsDictAlloc = cmsDictAlloc cmsDictFree = cmsDictFree cmsDictDup = cmsDictDup cmsDictAddEntry = cmsDictAddEntry cmsDictGetEntryList = cmsDictGetEntryList cmsDictNextEntry = cmsDictNextEntry _cmsGetTransformUserData = _cmsGetTransformUserData _cmsSetTransformUserData = _cmsSetTransformUserData _cmsGetTransformFormatters16 = _cmsGetTransformFormatters16 _cmsGetTransformFormattersFloat = _cmsGetTransformFormattersFloat cmsGetHeaderCreator = cmsGetHeaderCreator cmsPluginTHR = cmsPluginTHR cmsGetPipelineContextID = cmsGetPipelineContextID cmsGetTransformInputFormat = cmsGetTransformInputFormat cmsGetTransformOutputFormat = cmsGetTransformOutputFormat lcms2-2.5/src/cmssamp.c0000644002406300000240000004334712163060730014334 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" #define cmsmin(a, b) (((a) < (b)) ? (a) : (b)) #define cmsmax(a, b) (((a) > (b)) ? (a) : (b)) // This file contains routines for resampling and LUT optimization, black point detection // and black preservation. // Black point detection ------------------------------------------------------------------------- // PCS -> PCS round trip transform, always uses relative intent on the device -> pcs static cmsHTRANSFORM CreateRoundtripXForm(cmsHPROFILE hProfile, cmsUInt32Number nIntent) { cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsHPROFILE hLab = cmsCreateLab4ProfileTHR(ContextID, NULL); cmsHTRANSFORM xform; cmsBool BPC[4] = { FALSE, FALSE, FALSE, FALSE }; cmsFloat64Number States[4] = { 1.0, 1.0, 1.0, 1.0 }; cmsHPROFILE hProfiles[4]; cmsUInt32Number Intents[4]; hProfiles[0] = hLab; hProfiles[1] = hProfile; hProfiles[2] = hProfile; hProfiles[3] = hLab; Intents[0] = INTENT_RELATIVE_COLORIMETRIC; Intents[1] = nIntent; Intents[2] = INTENT_RELATIVE_COLORIMETRIC; Intents[3] = INTENT_RELATIVE_COLORIMETRIC; xform = cmsCreateExtendedTransform(ContextID, 4, hProfiles, BPC, Intents, States, NULL, 0, TYPE_Lab_DBL, TYPE_Lab_DBL, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE); cmsCloseProfile(hLab); return xform; } // Use darker colorants to obtain black point. This works in the relative colorimetric intent and // assumes more ink results in darker colors. No ink limit is assumed. static cmsBool BlackPointAsDarkerColorant(cmsHPROFILE hInput, cmsUInt32Number Intent, cmsCIEXYZ* BlackPoint, cmsUInt32Number dwFlags) { cmsUInt16Number *Black; cmsHTRANSFORM xform; cmsColorSpaceSignature Space; cmsUInt32Number nChannels; cmsUInt32Number dwFormat; cmsHPROFILE hLab; cmsCIELab Lab; cmsCIEXYZ BlackXYZ; cmsContext ContextID = cmsGetProfileContextID(hInput); // If the profile does not support input direction, assume Black point 0 if (!cmsIsIntentSupported(hInput, Intent, LCMS_USED_AS_INPUT)) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // Create a formatter which has n channels and floating point dwFormat = cmsFormatterForColorspaceOfProfile(hInput, 2, FALSE); // Try to get black by using black colorant Space = cmsGetColorSpace(hInput); // This function returns darker colorant in 16 bits for several spaces if (!_cmsEndPointsBySpace(Space, NULL, &Black, &nChannels)) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } if (nChannels != T_CHANNELS(dwFormat)) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // Lab will be used as the output space, but lab2 will avoid recursion hLab = cmsCreateLab2ProfileTHR(ContextID, NULL); if (hLab == NULL) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // Create the transform xform = cmsCreateTransformTHR(ContextID, hInput, dwFormat, hLab, TYPE_Lab_DBL, Intent, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE); cmsCloseProfile(hLab); if (xform == NULL) { // Something went wrong. Get rid of open resources and return zero as black BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // Convert black to Lab cmsDoTransform(xform, Black, &Lab, 1); // Force it to be neutral, clip to max. L* of 50 Lab.a = Lab.b = 0; if (Lab.L > 50) Lab.L = 50; // Free the resources cmsDeleteTransform(xform); // Convert from Lab (which is now clipped) to XYZ. cmsLab2XYZ(NULL, &BlackXYZ, &Lab); if (BlackPoint != NULL) *BlackPoint = BlackXYZ; return TRUE; cmsUNUSED_PARAMETER(dwFlags); } // Get a black point of output CMYK profile, discounting any ink-limiting embedded // in the profile. For doing that, we use perceptual intent in input direction: // Lab (0, 0, 0) -> [Perceptual] Profile -> CMYK -> [Rel. colorimetric] Profile -> Lab static cmsBool BlackPointUsingPerceptualBlack(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile) { cmsHTRANSFORM hRoundTrip; cmsCIELab LabIn, LabOut; cmsCIEXYZ BlackXYZ; // Is the intent supported by the profile? if (!cmsIsIntentSupported(hProfile, INTENT_PERCEPTUAL, LCMS_USED_AS_INPUT)) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return TRUE; } hRoundTrip = CreateRoundtripXForm(hProfile, INTENT_PERCEPTUAL); if (hRoundTrip == NULL) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } LabIn.L = LabIn.a = LabIn.b = 0; cmsDoTransform(hRoundTrip, &LabIn, &LabOut, 1); // Clip Lab to reasonable limits if (LabOut.L > 50) LabOut.L = 50; LabOut.a = LabOut.b = 0; cmsDeleteTransform(hRoundTrip); // Convert it to XYZ cmsLab2XYZ(NULL, &BlackXYZ, &LabOut); if (BlackPoint != NULL) *BlackPoint = BlackXYZ; return TRUE; } // This function shouldn't exist at all -- there is such quantity of broken // profiles on black point tag, that we must somehow fix chromaticity to // avoid huge tint when doing Black point compensation. This function does // just that. There is a special flag for using black point tag, but turned // off by default because it is bogus on most profiles. The detection algorithm // involves to turn BP to neutral and to use only L component. cmsBool CMSEXPORT cmsDetectBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags) { cmsProfileClassSignature devClass; // Make sure the device class is adequate devClass = cmsGetDeviceClass(hProfile); if (devClass == cmsSigLinkClass || devClass == cmsSigAbstractClass || devClass == cmsSigNamedColorClass) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // Make sure intent is adequate if (Intent != INTENT_PERCEPTUAL && Intent != INTENT_RELATIVE_COLORIMETRIC && Intent != INTENT_SATURATION) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // v4 + perceptual & saturation intents does have its own black point, and it is // well specified enough to use it. Black point tag is deprecated in V4. if ((cmsGetEncodedICCversion(hProfile) >= 0x4000000) && (Intent == INTENT_PERCEPTUAL || Intent == INTENT_SATURATION)) { // Matrix shaper share MRC & perceptual intents if (cmsIsMatrixShaper(hProfile)) return BlackPointAsDarkerColorant(hProfile, INTENT_RELATIVE_COLORIMETRIC, BlackPoint, 0); // Get Perceptual black out of v4 profiles. That is fixed for perceptual & saturation intents BlackPoint -> X = cmsPERCEPTUAL_BLACK_X; BlackPoint -> Y = cmsPERCEPTUAL_BLACK_Y; BlackPoint -> Z = cmsPERCEPTUAL_BLACK_Z; return TRUE; } #ifdef CMS_USE_PROFILE_BLACK_POINT_TAG // v2, v4 rel/abs colorimetric if (cmsIsTag(hProfile, cmsSigMediaBlackPointTag) && Intent == INTENT_RELATIVE_COLORIMETRIC) { cmsCIEXYZ *BlackPtr, BlackXYZ, UntrustedBlackPoint, TrustedBlackPoint, MediaWhite; cmsCIELab Lab; // If black point is specified, then use it, BlackPtr = cmsReadTag(hProfile, cmsSigMediaBlackPointTag); if (BlackPtr != NULL) { BlackXYZ = *BlackPtr; _cmsReadMediaWhitePoint(&MediaWhite, hProfile); // Black point is absolute XYZ, so adapt to D50 to get PCS value cmsAdaptToIlluminant(&UntrustedBlackPoint, &MediaWhite, cmsD50_XYZ(), &BlackXYZ); // Force a=b=0 to get rid of any chroma cmsXYZ2Lab(NULL, &Lab, &UntrustedBlackPoint); Lab.a = Lab.b = 0; if (Lab.L > 50) Lab.L = 50; // Clip to L* <= 50 cmsLab2XYZ(NULL, &TrustedBlackPoint, &Lab); if (BlackPoint != NULL) *BlackPoint = TrustedBlackPoint; return TRUE; } } #endif // That is about v2 profiles. // If output profile, discount ink-limiting and that's all if (Intent == INTENT_RELATIVE_COLORIMETRIC && (cmsGetDeviceClass(hProfile) == cmsSigOutputClass) && (cmsGetColorSpace(hProfile) == cmsSigCmykData)) return BlackPointUsingPerceptualBlack(BlackPoint, hProfile); // Nope, compute BP using current intent. return BlackPointAsDarkerColorant(hProfile, Intent, BlackPoint, dwFlags); } // --------------------------------------------------------------------------------------------------------- // Least Squares Fit of a Quadratic Curve to Data // http://www.personal.psu.edu/jhm/f90/lectures/lsq2.html static cmsFloat64Number RootOfLeastSquaresFitQuadraticCurve(int n, cmsFloat64Number x[], cmsFloat64Number y[]) { double sum_x = 0, sum_x2 = 0, sum_x3 = 0, sum_x4 = 0; double sum_y = 0, sum_yx = 0, sum_yx2 = 0; double d, a, b, c; int i; cmsMAT3 m; cmsVEC3 v, res; if (n < 4) return 0; for (i=0; i < n; i++) { double xn = x[i]; double yn = y[i]; sum_x += xn; sum_x2 += xn*xn; sum_x3 += xn*xn*xn; sum_x4 += xn*xn*xn*xn; sum_y += yn; sum_yx += yn*xn; sum_yx2 += yn*xn*xn; } _cmsVEC3init(&m.v[0], n, sum_x, sum_x2); _cmsVEC3init(&m.v[1], sum_x, sum_x2, sum_x3); _cmsVEC3init(&m.v[2], sum_x2, sum_x3, sum_x4); _cmsVEC3init(&v, sum_y, sum_yx, sum_yx2); if (!_cmsMAT3solve(&res, &m, &v)) return 0; a = res.n[2]; b = res.n[1]; c = res.n[0]; if (fabs(a) < 1.0E-10) { return cmsmin(0, cmsmax(50, -c/b )); } else { d = b*b - 4.0 * a * c; if (d <= 0) { return 0; } else { double rt = (-b + sqrt(d)) / (2.0 * a); return cmsmax(0, cmsmin(50, rt)); } } } /* static cmsBool IsMonotonic(int n, const cmsFloat64Number Table[]) { int i; cmsFloat64Number last; last = Table[n-1]; for (i = n-2; i >= 0; --i) { if (Table[i] > last) return FALSE; else last = Table[i]; } return TRUE; } */ // Calculates the black point of a destination profile. // This algorithm comes from the Adobe paper disclosing its black point compensation method. cmsBool CMSEXPORT cmsDetectDestinationBlackPoint(cmsCIEXYZ* BlackPoint, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags) { cmsColorSpaceSignature ColorSpace; cmsHTRANSFORM hRoundTrip = NULL; cmsCIELab InitialLab, destLab, Lab; cmsFloat64Number inRamp[256], outRamp[256]; cmsFloat64Number MinL, MaxL; cmsBool NearlyStraightMidrange = TRUE; cmsFloat64Number yRamp[256]; cmsFloat64Number x[256], y[256]; cmsFloat64Number lo, hi; int n, l; cmsProfileClassSignature devClass; // Make sure the device class is adequate devClass = cmsGetDeviceClass(hProfile); if (devClass == cmsSigLinkClass || devClass == cmsSigAbstractClass || devClass == cmsSigNamedColorClass) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // Make sure intent is adequate if (Intent != INTENT_PERCEPTUAL && Intent != INTENT_RELATIVE_COLORIMETRIC && Intent != INTENT_SATURATION) { BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // v4 + perceptual & saturation intents does have its own black point, and it is // well specified enough to use it. Black point tag is deprecated in V4. if ((cmsGetEncodedICCversion(hProfile) >= 0x4000000) && (Intent == INTENT_PERCEPTUAL || Intent == INTENT_SATURATION)) { // Matrix shaper share MRC & perceptual intents if (cmsIsMatrixShaper(hProfile)) return BlackPointAsDarkerColorant(hProfile, INTENT_RELATIVE_COLORIMETRIC, BlackPoint, 0); // Get Perceptual black out of v4 profiles. That is fixed for perceptual & saturation intents BlackPoint -> X = cmsPERCEPTUAL_BLACK_X; BlackPoint -> Y = cmsPERCEPTUAL_BLACK_Y; BlackPoint -> Z = cmsPERCEPTUAL_BLACK_Z; return TRUE; } // Check if the profile is lut based and gray, rgb or cmyk (7.2 in Adobe's document) ColorSpace = cmsGetColorSpace(hProfile); if (!cmsIsCLUT(hProfile, Intent, LCMS_USED_AS_OUTPUT ) || (ColorSpace != cmsSigGrayData && ColorSpace != cmsSigRgbData && ColorSpace != cmsSigCmykData)) { // In this case, handle as input case return cmsDetectBlackPoint(BlackPoint, hProfile, Intent, dwFlags); } // It is one of the valid cases!, use Adobe algorithm // Set a first guess, that should work on good profiles. if (Intent == INTENT_RELATIVE_COLORIMETRIC) { cmsCIEXYZ IniXYZ; // calculate initial Lab as source black point if (!cmsDetectBlackPoint(&IniXYZ, hProfile, Intent, dwFlags)) { return FALSE; } // convert the XYZ to lab cmsXYZ2Lab(NULL, &InitialLab, &IniXYZ); } else { // set the initial Lab to zero, that should be the black point for perceptual and saturation InitialLab.L = 0; InitialLab.a = 0; InitialLab.b = 0; } // Step 2 // ====== // Create a roundtrip. Define a Transform BT for all x in L*a*b* hRoundTrip = CreateRoundtripXForm(hProfile, Intent); if (hRoundTrip == NULL) return FALSE; // Compute ramps for (l=0; l < 256; l++) { Lab.L = (cmsFloat64Number) (l * 100.0) / 255.0; Lab.a = cmsmin(50, cmsmax(-50, InitialLab.a)); Lab.b = cmsmin(50, cmsmax(-50, InitialLab.b)); cmsDoTransform(hRoundTrip, &Lab, &destLab, 1); inRamp[l] = Lab.L; outRamp[l] = destLab.L; } // Make monotonic for (l = 254; l > 0; --l) { outRamp[l] = cmsmin(outRamp[l], outRamp[l+1]); } // Check if (! (outRamp[0] < outRamp[255])) { cmsDeleteTransform(hRoundTrip); BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // Test for mid range straight (only on relative colorimetric) NearlyStraightMidrange = TRUE; MinL = outRamp[0]; MaxL = outRamp[255]; if (Intent == INTENT_RELATIVE_COLORIMETRIC) { for (l=0; l < 256; l++) { if (! ((inRamp[l] <= MinL + 0.2 * (MaxL - MinL) ) || (fabs(inRamp[l] - outRamp[l]) < 4.0 ))) NearlyStraightMidrange = FALSE; } // If the mid range is straight (as determined above) then the // DestinationBlackPoint shall be the same as initialLab. // Otherwise, the DestinationBlackPoint shall be determined // using curve fitting. if (NearlyStraightMidrange) { cmsLab2XYZ(NULL, BlackPoint, &InitialLab); cmsDeleteTransform(hRoundTrip); return TRUE; } } // curve fitting: The round-trip curve normally looks like a nearly constant section at the black point, // with a corner and a nearly straight line to the white point. for (l=0; l < 256; l++) { yRamp[l] = (outRamp[l] - MinL) / (MaxL - MinL); } // find the black point using the least squares error quadratic curve fitting if (Intent == INTENT_RELATIVE_COLORIMETRIC) { lo = 0.1; hi = 0.5; } else { // Perceptual and saturation lo = 0.03; hi = 0.25; } // Capture shadow points for the fitting. n = 0; for (l=0; l < 256; l++) { cmsFloat64Number ff = yRamp[l]; if (ff >= lo && ff < hi) { x[n] = inRamp[l]; y[n] = yRamp[l]; n++; } } // No suitable points if (n < 3 ) { cmsDeleteTransform(hRoundTrip); BlackPoint -> X = BlackPoint ->Y = BlackPoint -> Z = 0.0; return FALSE; } // fit and get the vertex of quadratic curve Lab.L = RootOfLeastSquaresFitQuadraticCurve(n, x, y); if (Lab.L < 0.0) { // clip to zero L* if the vertex is negative Lab.L = 0; } Lab.a = InitialLab.a; Lab.b = InitialLab.b; cmsLab2XYZ(NULL, BlackPoint, &Lab); cmsDeleteTransform(hRoundTrip); return TRUE; } lcms2-2.5/src/cmsps2.c0000644002406300000240000013341312163060730014072 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2011 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #include "lcms2_internal.h" // PostScript ColorRenderingDictionary and ColorSpaceArray #define MAXPSCOLS 60 // Columns on tables /* Implementation -------------- PostScript does use XYZ as its internal PCS. But since PostScript interpolation tables are limited to 8 bits, I use Lab as a way to improve the accuracy, favoring perceptual results. So, for the creation of each CRD, CSA the profiles are converted to Lab via a device link between profile -> Lab or Lab -> profile. The PS code necessary to convert Lab <-> XYZ is also included. Color Space Arrays (CSA) ================================================================================== In order to obtain precision, code chooses between three ways to implement the device -> XYZ transform. These cases identifies monochrome profiles (often implemented as a set of curves), matrix-shaper and Pipeline-based. Monochrome ----------- This is implemented as /CIEBasedA CSA. The prelinearization curve is placed into /DecodeA section, and matrix equals to D50. Since here is no interpolation tables, I do the conversion directly to XYZ NOTE: CLUT-based monochrome profiles are NOT supported. So, cmsFLAGS_MATRIXINPUT flag is forced on such profiles. [ /CIEBasedA << /DecodeA { transfer function } bind /MatrixA [D50] /RangeLMN [ 0.0 cmsD50X 0.0 cmsD50Y 0.0 cmsD50Z ] /WhitePoint [D50] /BlackPoint [BP] /RenderingIntent (intent) >> ] On simpler profiles, the PCS is already XYZ, so no conversion is required. Matrix-shaper based ------------------- This is implemented both with /CIEBasedABC or /CIEBasedDEF on dependig of profile implementation. Since here there are no interpolation tables, I do the conversion directly to XYZ [ /CIEBasedABC << /DecodeABC [ {transfer1} {transfer2} {transfer3} ] /MatrixABC [Matrix] /RangeLMN [ 0.0 cmsD50X 0.0 cmsD50Y 0.0 cmsD50Z ] /DecodeLMN [ { / 2} dup dup ] /WhitePoint [D50] /BlackPoint [BP] /RenderingIntent (intent) >> ] CLUT based ---------- Lab is used in such cases. [ /CIEBasedDEF << /DecodeDEF [ ] /Table [ p p p [<...>]] /RangeABC [ 0 1 0 1 0 1] /DecodeABC[ ] /RangeLMN [ -0.236 1.254 0 1 -0.635 1.640 ] % -128/500 1+127/500 0 1 -127/200 1+128/200 /MatrixABC [ 1 1 1 1 0 0 0 0 -1] /WhitePoint [D50] /BlackPoint [BP] /RenderingIntent (intent) ] Color Rendering Dictionaries (CRD) ================================== These are always implemented as CLUT, and always are using Lab. Since CRD are expected to be used as resources, the code adds the definition as well. << /ColorRenderingType 1 /WhitePoint [ D50 ] /BlackPoint [BP] /MatrixPQR [ Bradford ] /RangePQR [-0.125 1.375 -0.125 1.375 -0.125 1.375 ] /TransformPQR [ {4 index 3 get div 2 index 3 get mul exch pop exch pop exch pop exch pop } bind {4 index 4 get div 2 index 4 get mul exch pop exch pop exch pop exch pop } bind {4 index 5 get div 2 index 5 get mul exch pop exch pop exch pop exch pop } bind ] /MatrixABC <...> /EncodeABC <...> /RangeABC <.. used for XYZ -> Lab> /EncodeLMN /RenderTable [ p p p [<...>]] /RenderingIntent (Perceptual) >> /Current exch /ColorRendering defineresource pop The following stages are used to convert from XYZ to Lab -------------------------------------------------------- Input is given at LMN stage on X, Y, Z Encode LMN gives us f(X/Xn), f(Y/Yn), f(Z/Zn) /EncodeLMN [ { 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind { 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind { 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind ] MatrixABC is used to compute f(Y/Yn), f(X/Xn) - f(Y/Yn), f(Y/Yn) - f(Z/Zn) | 0 1 0| | 1 -1 0| | 0 1 -1| /MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ] EncodeABC finally gives Lab values. /EncodeABC [ { 116 mul 16 sub 100 div } bind { 500 mul 128 add 255 div } bind { 200 mul 128 add 255 div } bind ] The following stages are used to convert Lab to XYZ ---------------------------------------------------- /RangeABC [ 0 1 0 1 0 1] /DecodeABC [ { 100 mul 16 add 116 div } bind { 255 mul 128 sub 500 div } bind { 255 mul 128 sub 200 div } bind ] /MatrixABC [ 1 1 1 1 0 0 0 0 -1] /DecodeLMN [ {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.964200 mul} bind {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse } bind {dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.824900 mul} bind ] */ /* PostScript algorithms discussion. ========================================================================================================= 1D interpolation algorithm 1D interpolation (float) ------------------------ val2 = Domain * Value; cell0 = (int) floor(val2); cell1 = (int) ceil(val2); rest = val2 - cell0; y0 = LutTable[cell0] ; y1 = LutTable[cell1] ; y = y0 + (y1 - y0) * rest; PostScript code Stack ================================================ { % v [array] % v tab dup % v tab tab length 1 sub % v tab dom 3 -1 roll % tab dom v mul % tab val2 dup % tab val2 val2 dup % tab val2 val2 val2 floor cvi % tab val2 val2 cell0 exch % tab val2 cell0 val2 ceiling cvi % tab val2 cell0 cell1 3 index % tab val2 cell0 cell1 tab exch % tab val2 cell0 tab cell1 get % tab val2 cell0 y1 4 -1 roll % val2 cell0 y1 tab 3 -1 roll % val2 y1 tab cell0 get % val2 y1 y0 dup % val2 y1 y0 y0 3 1 roll % val2 y0 y1 y0 sub % val2 y0 (y1-y0) 3 -1 roll % y0 (y1-y0) val2 dup % y0 (y1-y0) val2 val2 floor cvi % y0 (y1-y0) val2 floor(val2) sub % y0 (y1-y0) rest mul % y0 t1 add % y 65535 div % result } bind */ // This struct holds the memory block currently being write typedef struct { _cmsStageCLutData* Pipeline; cmsIOHANDLER* m; int FirstComponent; int SecondComponent; const char* PreMaj; const char* PostMaj; const char* PreMin; const char* PostMin; int FixWhite; // Force mapping of pure white cmsColorSpaceSignature ColorSpace; // ColorSpace of profile } cmsPsSamplerCargo; static int _cmsPSActualColumn = 0; // Convert to byte static cmsUInt8Number Word2Byte(cmsUInt16Number w) { return (cmsUInt8Number) floor((cmsFloat64Number) w / 257.0 + 0.5); } // Convert to byte (using ICC2 notation) /* static cmsUInt8Number L2Byte(cmsUInt16Number w) { int ww = w + 0x0080; if (ww > 0xFFFF) return 0xFF; return (cmsUInt8Number) ((cmsUInt16Number) (ww >> 8) & 0xFF); } */ // Write a cooked byte static void WriteByte(cmsIOHANDLER* m, cmsUInt8Number b) { _cmsIOPrintf(m, "%02x", b); _cmsPSActualColumn += 2; if (_cmsPSActualColumn > MAXPSCOLS) { _cmsIOPrintf(m, "\n"); _cmsPSActualColumn = 0; } } // ----------------------------------------------------------------- PostScript generation // Removes offending Carriage returns static char* RemoveCR(const char* txt) { static char Buffer[2048]; char* pt; strncpy(Buffer, txt, 2047); Buffer[2047] = 0; for (pt = Buffer; *pt; pt++) if (*pt == '\n' || *pt == '\r') *pt = ' '; return Buffer; } static void EmitHeader(cmsIOHANDLER* m, const char* Title, cmsHPROFILE hProfile) { time_t timer; cmsMLU *Description, *Copyright; char DescASCII[256], CopyrightASCII[256]; time(&timer); Description = (cmsMLU*) cmsReadTag(hProfile, cmsSigProfileDescriptionTag); Copyright = (cmsMLU*) cmsReadTag(hProfile, cmsSigCopyrightTag); DescASCII[0] = DescASCII[255] = 0; CopyrightASCII[0] = CopyrightASCII[255] = 0; if (Description != NULL) cmsMLUgetASCII(Description, cmsNoLanguage, cmsNoCountry, DescASCII, 255); if (Copyright != NULL) cmsMLUgetASCII(Copyright, cmsNoLanguage, cmsNoCountry, CopyrightASCII, 255); _cmsIOPrintf(m, "%%!PS-Adobe-3.0\n"); _cmsIOPrintf(m, "%%\n"); _cmsIOPrintf(m, "%% %s\n", Title); _cmsIOPrintf(m, "%% Source: %s\n", RemoveCR(DescASCII)); _cmsIOPrintf(m, "%% %s\n", RemoveCR(CopyrightASCII)); _cmsIOPrintf(m, "%% Created: %s", ctime(&timer)); // ctime appends a \n!!! _cmsIOPrintf(m, "%%\n"); _cmsIOPrintf(m, "%%%%BeginResource\n"); } // Emits White & Black point. White point is always D50, Black point is the device // Black point adapted to D50. static void EmitWhiteBlackD50(cmsIOHANDLER* m, cmsCIEXYZ* BlackPoint) { _cmsIOPrintf(m, "/BlackPoint [%f %f %f]\n", BlackPoint -> X, BlackPoint -> Y, BlackPoint -> Z); _cmsIOPrintf(m, "/WhitePoint [%f %f %f]\n", cmsD50_XYZ()->X, cmsD50_XYZ()->Y, cmsD50_XYZ()->Z); } static void EmitRangeCheck(cmsIOHANDLER* m) { _cmsIOPrintf(m, "dup 0.0 lt { pop 0.0 } if " "dup 1.0 gt { pop 1.0 } if "); } // Does write the intent static void EmitIntent(cmsIOHANDLER* m, int RenderingIntent) { const char *intent; switch (RenderingIntent) { case INTENT_PERCEPTUAL: intent = "Perceptual"; break; case INTENT_RELATIVE_COLORIMETRIC: intent = "RelativeColorimetric"; break; case INTENT_ABSOLUTE_COLORIMETRIC: intent = "AbsoluteColorimetric"; break; case INTENT_SATURATION: intent = "Saturation"; break; default: intent = "Undefined"; break; } _cmsIOPrintf(m, "/RenderingIntent (%s)\n", intent ); } // // Convert L* to Y // // Y = Yn*[ (L* + 16) / 116] ^ 3 if (L*) >= 6 / 29 // = Yn*( L* / 116) / 7.787 if (L*) < 6 / 29 // /* static void EmitL2Y(cmsIOHANDLER* m) { _cmsIOPrintf(m, "{ " "100 mul 16 add 116 div " // (L * 100 + 16) / 116 "dup 6 29 div ge " // >= 6 / 29 ? "{ dup dup mul mul } " // yes, ^3 and done "{ 4 29 div sub 108 841 div mul } " // no, slope limiting "ifelse } bind "); } */ // Lab -> XYZ, see the discussion above static void EmitLab2XYZ(cmsIOHANDLER* m) { _cmsIOPrintf(m, "/RangeABC [ 0 1 0 1 0 1]\n"); _cmsIOPrintf(m, "/DecodeABC [\n"); _cmsIOPrintf(m, "{100 mul 16 add 116 div } bind\n"); _cmsIOPrintf(m, "{255 mul 128 sub 500 div } bind\n"); _cmsIOPrintf(m, "{255 mul 128 sub 200 div } bind\n"); _cmsIOPrintf(m, "]\n"); _cmsIOPrintf(m, "/MatrixABC [ 1 1 1 1 0 0 0 0 -1]\n"); _cmsIOPrintf(m, "/RangeLMN [ -0.236 1.254 0 1 -0.635 1.640 ]\n"); _cmsIOPrintf(m, "/DecodeLMN [\n"); _cmsIOPrintf(m, "{dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.964200 mul} bind\n"); _cmsIOPrintf(m, "{dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse } bind\n"); _cmsIOPrintf(m, "{dup 6 29 div ge {dup dup mul mul} {4 29 div sub 108 841 div mul} ifelse 0.824900 mul} bind\n"); _cmsIOPrintf(m, "]\n"); } // Outputs a table of words. It does use 16 bits static void Emit1Gamma(cmsIOHANDLER* m, cmsToneCurve* Table) { cmsUInt32Number i; cmsFloat64Number gamma; if (Table == NULL) return; // Error if (Table ->nEntries <= 0) return; // Empty table // Suppress whole if identity if (cmsIsToneCurveLinear(Table)) return; // Check if is really an exponential. If so, emit "exp" gamma = cmsEstimateGamma(Table, 0.001); if (gamma > 0) { _cmsIOPrintf(m, "{ %g exp } bind ", gamma); return; } _cmsIOPrintf(m, "{ "); // Bounds check EmitRangeCheck(m); // Emit intepolation code // PostScript code Stack // =============== ======================== // v _cmsIOPrintf(m, " ["); for (i=0; i < Table->nEntries; i++) { _cmsIOPrintf(m, "%d ", Table->Table16[i]); } _cmsIOPrintf(m, "] "); // v tab _cmsIOPrintf(m, "dup "); // v tab tab _cmsIOPrintf(m, "length 1 sub "); // v tab dom _cmsIOPrintf(m, "3 -1 roll "); // tab dom v _cmsIOPrintf(m, "mul "); // tab val2 _cmsIOPrintf(m, "dup "); // tab val2 val2 _cmsIOPrintf(m, "dup "); // tab val2 val2 val2 _cmsIOPrintf(m, "floor cvi "); // tab val2 val2 cell0 _cmsIOPrintf(m, "exch "); // tab val2 cell0 val2 _cmsIOPrintf(m, "ceiling cvi "); // tab val2 cell0 cell1 _cmsIOPrintf(m, "3 index "); // tab val2 cell0 cell1 tab _cmsIOPrintf(m, "exch "); // tab val2 cell0 tab cell1 _cmsIOPrintf(m, "get "); // tab val2 cell0 y1 _cmsIOPrintf(m, "4 -1 roll "); // val2 cell0 y1 tab _cmsIOPrintf(m, "3 -1 roll "); // val2 y1 tab cell0 _cmsIOPrintf(m, "get "); // val2 y1 y0 _cmsIOPrintf(m, "dup "); // val2 y1 y0 y0 _cmsIOPrintf(m, "3 1 roll "); // val2 y0 y1 y0 _cmsIOPrintf(m, "sub "); // val2 y0 (y1-y0) _cmsIOPrintf(m, "3 -1 roll "); // y0 (y1-y0) val2 _cmsIOPrintf(m, "dup "); // y0 (y1-y0) val2 val2 _cmsIOPrintf(m, "floor cvi "); // y0 (y1-y0) val2 floor(val2) _cmsIOPrintf(m, "sub "); // y0 (y1-y0) rest _cmsIOPrintf(m, "mul "); // y0 t1 _cmsIOPrintf(m, "add "); // y _cmsIOPrintf(m, "65535 div "); // result _cmsIOPrintf(m, " } bind "); } // Compare gamma table static cmsBool GammaTableEquals(cmsUInt16Number* g1, cmsUInt16Number* g2, int nEntries) { return memcmp(g1, g2, nEntries* sizeof(cmsUInt16Number)) == 0; } // Does write a set of gamma curves static void EmitNGamma(cmsIOHANDLER* m, int n, cmsToneCurve* g[]) { int i; for( i=0; i < n; i++ ) { if (g[i] == NULL) return; // Error if (i > 0 && GammaTableEquals(g[i-1]->Table16, g[i]->Table16, g[i]->nEntries)) { _cmsIOPrintf(m, "dup "); } else { Emit1Gamma(m, g[i]); } } } // Following code dumps a LUT onto memory stream // This is the sampler. Intended to work in SAMPLER_INSPECT mode, // that is, the callback will be called for each knot with // // In[] The grid location coordinates, normalized to 0..ffff // Out[] The Pipeline values, normalized to 0..ffff // // Returning a value other than 0 does terminate the sampling process // // Each row contains Pipeline values for all but first component. So, I // detect row changing by keeping a copy of last value of first // component. -1 is used to mark begining of whole block. static int OutputValueSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { cmsPsSamplerCargo* sc = (cmsPsSamplerCargo*) Cargo; cmsUInt32Number i; if (sc -> FixWhite) { if (In[0] == 0xFFFF) { // Only in L* = 100, ab = [-8..8] if ((In[1] >= 0x7800 && In[1] <= 0x8800) && (In[2] >= 0x7800 && In[2] <= 0x8800)) { cmsUInt16Number* Black; cmsUInt16Number* White; cmsUInt32Number nOutputs; if (!_cmsEndPointsBySpace(sc ->ColorSpace, &White, &Black, &nOutputs)) return 0; for (i=0; i < nOutputs; i++) Out[i] = White[i]; } } } // Hadle the parenthesis on rows if (In[0] != sc ->FirstComponent) { if (sc ->FirstComponent != -1) { _cmsIOPrintf(sc ->m, sc ->PostMin); sc ->SecondComponent = -1; _cmsIOPrintf(sc ->m, sc ->PostMaj); } // Begin block _cmsPSActualColumn = 0; _cmsIOPrintf(sc ->m, sc ->PreMaj); sc ->FirstComponent = In[0]; } if (In[1] != sc ->SecondComponent) { if (sc ->SecondComponent != -1) { _cmsIOPrintf(sc ->m, sc ->PostMin); } _cmsIOPrintf(sc ->m, sc ->PreMin); sc ->SecondComponent = In[1]; } // Dump table. for (i=0; i < sc -> Pipeline ->Params->nOutputs; i++) { cmsUInt16Number wWordOut = Out[i]; cmsUInt8Number wByteOut; // Value as byte // We always deal with Lab4 wByteOut = Word2Byte(wWordOut); WriteByte(sc -> m, wByteOut); } return 1; } // Writes a Pipeline on memstream. Could be 8 or 16 bits based static void WriteCLUT(cmsIOHANDLER* m, cmsStage* mpe, const char* PreMaj, const char* PostMaj, const char* PreMin, const char* PostMin, int FixWhite, cmsColorSpaceSignature ColorSpace) { cmsUInt32Number i; cmsPsSamplerCargo sc; sc.FirstComponent = -1; sc.SecondComponent = -1; sc.Pipeline = (_cmsStageCLutData *) mpe ->Data; sc.m = m; sc.PreMaj = PreMaj; sc.PostMaj= PostMaj; sc.PreMin = PreMin; sc.PostMin = PostMin; sc.FixWhite = FixWhite; sc.ColorSpace = ColorSpace; _cmsIOPrintf(m, "["); for (i=0; i < sc.Pipeline->Params->nInputs; i++) _cmsIOPrintf(m, " %d ", sc.Pipeline->Params->nSamples[i]); _cmsIOPrintf(m, " [\n"); cmsStageSampleCLut16bit(mpe, OutputValueSampler, (void*) &sc, SAMPLER_INSPECT); _cmsIOPrintf(m, PostMin); _cmsIOPrintf(m, PostMaj); _cmsIOPrintf(m, "] "); } // Dumps CIEBasedA Color Space Array static int EmitCIEBasedA(cmsIOHANDLER* m, cmsToneCurve* Curve, cmsCIEXYZ* BlackPoint) { _cmsIOPrintf(m, "[ /CIEBasedA\n"); _cmsIOPrintf(m, " <<\n"); _cmsIOPrintf(m, "/DecodeA "); Emit1Gamma(m, Curve); _cmsIOPrintf(m, " \n"); _cmsIOPrintf(m, "/MatrixA [ 0.9642 1.0000 0.8249 ]\n"); _cmsIOPrintf(m, "/RangeLMN [ 0.0 0.9642 0.0 1.0000 0.0 0.8249 ]\n"); EmitWhiteBlackD50(m, BlackPoint); EmitIntent(m, INTENT_PERCEPTUAL); _cmsIOPrintf(m, ">>\n"); _cmsIOPrintf(m, "]\n"); return 1; } // Dumps CIEBasedABC Color Space Array static int EmitCIEBasedABC(cmsIOHANDLER* m, cmsFloat64Number* Matrix, cmsToneCurve** CurveSet, cmsCIEXYZ* BlackPoint) { int i; _cmsIOPrintf(m, "[ /CIEBasedABC\n"); _cmsIOPrintf(m, "<<\n"); _cmsIOPrintf(m, "/DecodeABC [ "); EmitNGamma(m, 3, CurveSet); _cmsIOPrintf(m, "]\n"); _cmsIOPrintf(m, "/MatrixABC [ " ); for( i=0; i < 3; i++ ) { _cmsIOPrintf(m, "%.6f %.6f %.6f ", Matrix[i + 3*0], Matrix[i + 3*1], Matrix[i + 3*2]); } _cmsIOPrintf(m, "]\n"); _cmsIOPrintf(m, "/RangeLMN [ 0.0 0.9642 0.0 1.0000 0.0 0.8249 ]\n"); EmitWhiteBlackD50(m, BlackPoint); EmitIntent(m, INTENT_PERCEPTUAL); _cmsIOPrintf(m, ">>\n"); _cmsIOPrintf(m, "]\n"); return 1; } static int EmitCIEBasedDEF(cmsIOHANDLER* m, cmsPipeline* Pipeline, int Intent, cmsCIEXYZ* BlackPoint) { const char* PreMaj; const char* PostMaj; const char* PreMin, *PostMin; cmsStage* mpe; mpe = Pipeline ->Elements; switch (cmsStageInputChannels(mpe)) { case 3: _cmsIOPrintf(m, "[ /CIEBasedDEF\n"); PreMaj ="<"; PostMaj= ">\n"; PreMin = PostMin = ""; break; case 4: _cmsIOPrintf(m, "[ /CIEBasedDEFG\n"); PreMaj = "["; PostMaj = "]\n"; PreMin = "<"; PostMin = ">\n"; break; default: return 0; } _cmsIOPrintf(m, "<<\n"); if (cmsStageType(mpe) == cmsSigCurveSetElemType) { _cmsIOPrintf(m, "/DecodeDEF [ "); EmitNGamma(m, cmsStageOutputChannels(mpe), _cmsStageGetPtrToCurveSet(mpe)); _cmsIOPrintf(m, "]\n"); mpe = mpe ->Next; } if (cmsStageType(mpe) == cmsSigCLutElemType) { _cmsIOPrintf(m, "/Table "); WriteCLUT(m, mpe, PreMaj, PostMaj, PreMin, PostMin, FALSE, (cmsColorSpaceSignature) 0); _cmsIOPrintf(m, "]\n"); } EmitLab2XYZ(m); EmitWhiteBlackD50(m, BlackPoint); EmitIntent(m, Intent); _cmsIOPrintf(m, " >>\n"); _cmsIOPrintf(m, "]\n"); return 1; } // Generates a curve from a gray profile static cmsToneCurve* ExtractGray2Y(cmsContext ContextID, cmsHPROFILE hProfile, int Intent) { cmsToneCurve* Out = cmsBuildTabulatedToneCurve16(ContextID, 256, NULL); cmsHPROFILE hXYZ = cmsCreateXYZProfile(); cmsHTRANSFORM xform = cmsCreateTransformTHR(ContextID, hProfile, TYPE_GRAY_8, hXYZ, TYPE_XYZ_DBL, Intent, cmsFLAGS_NOOPTIMIZE); int i; if (Out != NULL) { for (i=0; i < 256; i++) { cmsUInt8Number Gray = (cmsUInt8Number) i; cmsCIEXYZ XYZ; cmsDoTransform(xform, &Gray, &XYZ, 1); Out ->Table16[i] =_cmsQuickSaturateWord(XYZ.Y * 65535.0); } } cmsDeleteTransform(xform); cmsCloseProfile(hXYZ); return Out; } // Because PostScript has only 8 bits in /Table, we should use // a more perceptually uniform space... I do choose Lab. static int WriteInputLUT(cmsIOHANDLER* m, cmsHPROFILE hProfile, int Intent, cmsUInt32Number dwFlags) { cmsHPROFILE hLab; cmsHTRANSFORM xform; cmsUInt32Number nChannels; cmsUInt32Number InputFormat; int rc; cmsHPROFILE Profiles[2]; cmsCIEXYZ BlackPointAdaptedToD50; // Does create a device-link based transform. // The DeviceLink is next dumped as working CSA. InputFormat = cmsFormatterForColorspaceOfProfile(hProfile, 2, FALSE); nChannels = T_CHANNELS(InputFormat); cmsDetectBlackPoint(&BlackPointAdaptedToD50, hProfile, Intent, 0); // Adjust output to Lab4 hLab = cmsCreateLab4ProfileTHR(m ->ContextID, NULL); Profiles[0] = hProfile; Profiles[1] = hLab; xform = cmsCreateMultiprofileTransform(Profiles, 2, InputFormat, TYPE_Lab_DBL, Intent, 0); cmsCloseProfile(hLab); if (xform == NULL) { cmsSignalError(m ->ContextID, cmsERROR_COLORSPACE_CHECK, "Cannot create transform Profile -> Lab"); return 0; } // Only 1, 3 and 4 channels are allowed switch (nChannels) { case 1: { cmsToneCurve* Gray2Y = ExtractGray2Y(m ->ContextID, hProfile, Intent); EmitCIEBasedA(m, Gray2Y, &BlackPointAdaptedToD50); cmsFreeToneCurve(Gray2Y); } break; case 3: case 4: { cmsUInt32Number OutFrm = TYPE_Lab_16; cmsPipeline* DeviceLink; _cmsTRANSFORM* v = (_cmsTRANSFORM*) xform; DeviceLink = cmsPipelineDup(v ->Lut); if (DeviceLink == NULL) return 0; dwFlags |= cmsFLAGS_FORCE_CLUT; _cmsOptimizePipeline(&DeviceLink, Intent, &InputFormat, &OutFrm, &dwFlags); rc = EmitCIEBasedDEF(m, DeviceLink, Intent, &BlackPointAdaptedToD50); cmsPipelineFree(DeviceLink); if (rc == 0) return 0; } break; default: cmsSignalError(m ->ContextID, cmsERROR_COLORSPACE_CHECK, "Only 3, 4 channels supported for CSA. This profile has %d channels.", nChannels); return 0; } cmsDeleteTransform(xform); return 1; } static cmsFloat64Number* GetPtrToMatrix(const cmsStage* mpe) { _cmsStageMatrixData* Data = (_cmsStageMatrixData*) mpe ->Data; return Data -> Double; } // Does create CSA based on matrix-shaper. Allowed types are gray and RGB based static int WriteInputMatrixShaper(cmsIOHANDLER* m, cmsHPROFILE hProfile, cmsStage* Matrix, cmsStage* Shaper) { cmsColorSpaceSignature ColorSpace; int rc; cmsCIEXYZ BlackPointAdaptedToD50; ColorSpace = cmsGetColorSpace(hProfile); cmsDetectBlackPoint(&BlackPointAdaptedToD50, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0); if (ColorSpace == cmsSigGrayData) { cmsToneCurve** ShaperCurve = _cmsStageGetPtrToCurveSet(Shaper); rc = EmitCIEBasedA(m, ShaperCurve[0], &BlackPointAdaptedToD50); } else if (ColorSpace == cmsSigRgbData) { cmsMAT3 Mat; int i, j; memmove(&Mat, GetPtrToMatrix(Matrix), sizeof(Mat)); for (i=0; i < 3; i++) for (j=0; j < 3; j++) Mat.v[i].n[j] *= MAX_ENCODEABLE_XYZ; rc = EmitCIEBasedABC(m, (cmsFloat64Number *) &Mat, _cmsStageGetPtrToCurveSet(Shaper), &BlackPointAdaptedToD50); } else { cmsSignalError(m ->ContextID, cmsERROR_COLORSPACE_CHECK, "Profile is not suitable for CSA. Unsupported colorspace."); return 0; } return rc; } // Creates a PostScript color list from a named profile data. // This is a HP extension, and it works in Lab instead of XYZ static int WriteNamedColorCSA(cmsIOHANDLER* m, cmsHPROFILE hNamedColor, int Intent) { cmsHTRANSFORM xform; cmsHPROFILE hLab; int i, nColors; char ColorName[32]; cmsNAMEDCOLORLIST* NamedColorList; hLab = cmsCreateLab4ProfileTHR(m ->ContextID, NULL); xform = cmsCreateTransform(hNamedColor, TYPE_NAMED_COLOR_INDEX, hLab, TYPE_Lab_DBL, Intent, 0); if (xform == NULL) return 0; NamedColorList = cmsGetNamedColorList(xform); if (NamedColorList == NULL) return 0; _cmsIOPrintf(m, "<<\n"); _cmsIOPrintf(m, "(colorlistcomment) (%s)\n", "Named color CSA"); _cmsIOPrintf(m, "(Prefix) [ (Pantone ) (PANTONE ) ]\n"); _cmsIOPrintf(m, "(Suffix) [ ( CV) ( CVC) ( C) ]\n"); nColors = cmsNamedColorCount(NamedColorList); for (i=0; i < nColors; i++) { cmsUInt16Number In[1]; cmsCIELab Lab; In[0] = (cmsUInt16Number) i; if (!cmsNamedColorInfo(NamedColorList, i, ColorName, NULL, NULL, NULL, NULL)) continue; cmsDoTransform(xform, In, &Lab, 1); _cmsIOPrintf(m, " (%s) [ %.3f %.3f %.3f ]\n", ColorName, Lab.L, Lab.a, Lab.b); } _cmsIOPrintf(m, ">>\n"); cmsDeleteTransform(xform); cmsCloseProfile(hLab); return 1; } // Does create a Color Space Array on XYZ colorspace for PostScript usage static cmsUInt32Number GenerateCSA(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, cmsIOHANDLER* mem) { cmsUInt32Number dwBytesUsed; cmsPipeline* lut = NULL; cmsStage* Matrix, *Shaper; // Is a named color profile? if (cmsGetDeviceClass(hProfile) == cmsSigNamedColorClass) { if (!WriteNamedColorCSA(mem, hProfile, Intent)) goto Error; } else { // Any profile class are allowed (including devicelink), but // output (PCS) colorspace must be XYZ or Lab cmsColorSpaceSignature ColorSpace = cmsGetPCS(hProfile); if (ColorSpace != cmsSigXYZData && ColorSpace != cmsSigLabData) { cmsSignalError(ContextID, cmsERROR_COLORSPACE_CHECK, "Invalid output color space"); goto Error; } // Read the lut with all necessary conversion stages lut = _cmsReadInputLUT(hProfile, Intent); if (lut == NULL) goto Error; // Tone curves + matrix can be implemented without any LUT if (cmsPipelineCheckAndRetreiveStages(lut, 2, cmsSigCurveSetElemType, cmsSigMatrixElemType, &Shaper, &Matrix)) { if (!WriteInputMatrixShaper(mem, hProfile, Matrix, Shaper)) goto Error; } else { // We need a LUT for the rest if (!WriteInputLUT(mem, hProfile, Intent, dwFlags)) goto Error; } } // Done, keep memory usage dwBytesUsed = mem ->UsedSpace; // Get rid of LUT if (lut != NULL) cmsPipelineFree(lut); // Finally, return used byte count return dwBytesUsed; Error: if (lut != NULL) cmsPipelineFree(lut); return 0; } // ------------------------------------------------------ Color Rendering Dictionary (CRD) /* Black point compensation plus chromatic adaptation: Step 1 - Chromatic adaptation ============================= WPout X = ------- PQR Wpin Step 2 - Black point compensation ================================= (WPout - BPout)*X - WPout*(BPin - BPout) out = --------------------------------------- WPout - BPin Algorithm discussion ==================== TransformPQR(WPin, BPin, WPout, BPout, PQR) Wpin,etc= { Xws Yws Zws Pws Qws Rws } Algorithm Stack 0...n =========================================================== PQR BPout WPout BPin WPin 4 index 3 get WPin PQR BPout WPout BPin WPin div (PQR/WPin) BPout WPout BPin WPin 2 index 3 get WPout (PQR/WPin) BPout WPout BPin WPin mult WPout*(PQR/WPin) BPout WPout BPin WPin 2 index 3 get WPout WPout*(PQR/WPin) BPout WPout BPin WPin 2 index 3 get BPout WPout WPout*(PQR/WPin) BPout WPout BPin WPin sub (WPout-BPout) WPout*(PQR/WPin) BPout WPout BPin WPin mult (WPout-BPout)* WPout*(PQR/WPin) BPout WPout BPin WPin 2 index 3 get WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin 4 index 3 get BPin WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin 3 index 3 get BPout BPin WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin sub (BPin-BPout) WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin mult (BPin-BPout)*WPout (BPout-WPout)* WPout*(PQR/WPin) BPout WPout BPin WPin sub (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin 3 index 3 get BPin (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin 3 index 3 get WPout BPin (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin exch sub (WPout-BPin) (BPout-WPout)* WPout*(PQR/WPin)-(BPin-BPout)*WPout BPout WPout BPin WPin div exch pop exch pop exch pop exch pop */ static void EmitPQRStage(cmsIOHANDLER* m, cmsHPROFILE hProfile, int DoBPC, int lIsAbsolute) { if (lIsAbsolute) { // For absolute colorimetric intent, encode back to relative // and generate a relative Pipeline // Relative encoding is obtained across XYZpcs*(D50/WhitePoint) cmsCIEXYZ White; _cmsReadMediaWhitePoint(&White, hProfile); _cmsIOPrintf(m,"/MatrixPQR [1 0 0 0 1 0 0 0 1 ]\n"); _cmsIOPrintf(m,"/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ]\n"); _cmsIOPrintf(m, "%% Absolute colorimetric -- encode to relative to maximize LUT usage\n" "/TransformPQR [\n" "{0.9642 mul %g div exch pop exch pop exch pop exch pop} bind\n" "{1.0000 mul %g div exch pop exch pop exch pop exch pop} bind\n" "{0.8249 mul %g div exch pop exch pop exch pop exch pop} bind\n]\n", White.X, White.Y, White.Z); return; } _cmsIOPrintf(m,"%% Bradford Cone Space\n" "/MatrixPQR [0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] \n"); _cmsIOPrintf(m, "/RangePQR [ -0.5 2 -0.5 2 -0.5 2 ]\n"); // No BPC if (!DoBPC) { _cmsIOPrintf(m, "%% VonKries-like transform in Bradford Cone Space\n" "/TransformPQR [\n" "{exch pop exch 3 get mul exch pop exch 3 get div} bind\n" "{exch pop exch 4 get mul exch pop exch 4 get div} bind\n" "{exch pop exch 5 get mul exch pop exch 5 get div} bind\n]\n"); } else { // BPC _cmsIOPrintf(m, "%% VonKries-like transform in Bradford Cone Space plus BPC\n" "/TransformPQR [\n"); _cmsIOPrintf(m, "{4 index 3 get div 2 index 3 get mul " "2 index 3 get 2 index 3 get sub mul " "2 index 3 get 4 index 3 get 3 index 3 get sub mul sub " "3 index 3 get 3 index 3 get exch sub div " "exch pop exch pop exch pop exch pop } bind\n"); _cmsIOPrintf(m, "{4 index 4 get div 2 index 4 get mul " "2 index 4 get 2 index 4 get sub mul " "2 index 4 get 4 index 4 get 3 index 4 get sub mul sub " "3 index 4 get 3 index 4 get exch sub div " "exch pop exch pop exch pop exch pop } bind\n"); _cmsIOPrintf(m, "{4 index 5 get div 2 index 5 get mul " "2 index 5 get 2 index 5 get sub mul " "2 index 5 get 4 index 5 get 3 index 5 get sub mul sub " "3 index 5 get 3 index 5 get exch sub div " "exch pop exch pop exch pop exch pop } bind\n]\n"); } } static void EmitXYZ2Lab(cmsIOHANDLER* m) { _cmsIOPrintf(m, "/RangeLMN [ -0.635 2.0 0 2 -0.635 2.0 ]\n"); _cmsIOPrintf(m, "/EncodeLMN [\n"); _cmsIOPrintf(m, "{ 0.964200 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind\n"); _cmsIOPrintf(m, "{ 1.000000 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind\n"); _cmsIOPrintf(m, "{ 0.824900 div dup 0.008856 le {7.787 mul 16 116 div add}{1 3 div exp} ifelse } bind\n"); _cmsIOPrintf(m, "]\n"); _cmsIOPrintf(m, "/MatrixABC [ 0 1 0 1 -1 1 0 0 -1 ]\n"); _cmsIOPrintf(m, "/EncodeABC [\n"); _cmsIOPrintf(m, "{ 116 mul 16 sub 100 div } bind\n"); _cmsIOPrintf(m, "{ 500 mul 128 add 256 div } bind\n"); _cmsIOPrintf(m, "{ 200 mul 128 add 256 div } bind\n"); _cmsIOPrintf(m, "]\n"); } // Due to impedance mismatch between XYZ and almost all RGB and CMYK spaces // I choose to dump LUTS in Lab instead of XYZ. There is still a lot of wasted // space on 3D CLUT, but since space seems not to be a problem here, 33 points // would give a reasonable accurancy. Note also that CRD tables must operate in // 8 bits. static int WriteOutputLUT(cmsIOHANDLER* m, cmsHPROFILE hProfile, int Intent, cmsUInt32Number dwFlags) { cmsHPROFILE hLab; cmsHTRANSFORM xform; int i, nChannels; cmsUInt32Number OutputFormat; _cmsTRANSFORM* v; cmsPipeline* DeviceLink; cmsHPROFILE Profiles[3]; cmsCIEXYZ BlackPointAdaptedToD50; cmsBool lDoBPC = (dwFlags & cmsFLAGS_BLACKPOINTCOMPENSATION); cmsBool lFixWhite = !(dwFlags & cmsFLAGS_NOWHITEONWHITEFIXUP); cmsUInt32Number InFrm = TYPE_Lab_16; int RelativeEncodingIntent; cmsColorSpaceSignature ColorSpace; hLab = cmsCreateLab4ProfileTHR(m ->ContextID, NULL); if (hLab == NULL) return 0; OutputFormat = cmsFormatterForColorspaceOfProfile(hProfile, 2, FALSE); nChannels = T_CHANNELS(OutputFormat); ColorSpace = cmsGetColorSpace(hProfile); // For absolute colorimetric, the LUT is encoded as relative in order to preserve precision. RelativeEncodingIntent = Intent; if (RelativeEncodingIntent == INTENT_ABSOLUTE_COLORIMETRIC) RelativeEncodingIntent = INTENT_RELATIVE_COLORIMETRIC; // Use V4 Lab always Profiles[0] = hLab; Profiles[1] = hProfile; xform = cmsCreateMultiprofileTransformTHR(m ->ContextID, Profiles, 2, TYPE_Lab_DBL, OutputFormat, RelativeEncodingIntent, 0); cmsCloseProfile(hLab); if (xform == NULL) { cmsSignalError(m ->ContextID, cmsERROR_COLORSPACE_CHECK, "Cannot create transform Lab -> Profile in CRD creation"); return 0; } // Get a copy of the internal devicelink v = (_cmsTRANSFORM*) xform; DeviceLink = cmsPipelineDup(v ->Lut); if (DeviceLink == NULL) return 0; // We need a CLUT dwFlags |= cmsFLAGS_FORCE_CLUT; _cmsOptimizePipeline(&DeviceLink, RelativeEncodingIntent, &InFrm, &OutputFormat, &dwFlags); _cmsIOPrintf(m, "<<\n"); _cmsIOPrintf(m, "/ColorRenderingType 1\n"); cmsDetectBlackPoint(&BlackPointAdaptedToD50, hProfile, Intent, 0); // Emit headers, etc. EmitWhiteBlackD50(m, &BlackPointAdaptedToD50); EmitPQRStage(m, hProfile, lDoBPC, Intent == INTENT_ABSOLUTE_COLORIMETRIC); EmitXYZ2Lab(m); // FIXUP: map Lab (100, 0, 0) to perfect white, because the particular encoding for Lab // does map a=b=0 not falling into any specific node. Since range a,b goes -128..127, // zero is slightly moved towards right, so assure next node (in L=100 slice) is mapped to // zero. This would sacrifice a bit of highlights, but failure to do so would cause // scum dot. Ouch. if (Intent == INTENT_ABSOLUTE_COLORIMETRIC) lFixWhite = FALSE; _cmsIOPrintf(m, "/RenderTable "); WriteCLUT(m, cmsPipelineGetPtrToFirstStage(DeviceLink), "<", ">\n", "", "", lFixWhite, ColorSpace); _cmsIOPrintf(m, " %d {} bind ", nChannels); for (i=1; i < nChannels; i++) _cmsIOPrintf(m, "dup "); _cmsIOPrintf(m, "]\n"); EmitIntent(m, Intent); _cmsIOPrintf(m, ">>\n"); if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { _cmsIOPrintf(m, "/Current exch /ColorRendering defineresource pop\n"); } cmsPipelineFree(DeviceLink); cmsDeleteTransform(xform); return 1; } // Builds a ASCII string containing colorant list in 0..1.0 range static void BuildColorantList(char *Colorant, int nColorant, cmsUInt16Number Out[]) { char Buff[32]; int j; Colorant[0] = 0; if (nColorant > cmsMAXCHANNELS) nColorant = cmsMAXCHANNELS; for (j=0; j < nColorant; j++) { sprintf(Buff, "%.3f", Out[j] / 65535.0); strcat(Colorant, Buff); if (j < nColorant -1) strcat(Colorant, " "); } } // Creates a PostScript color list from a named profile data. // This is a HP extension. static int WriteNamedColorCRD(cmsIOHANDLER* m, cmsHPROFILE hNamedColor, int Intent, cmsUInt32Number dwFlags) { cmsHTRANSFORM xform; int i, nColors, nColorant; cmsUInt32Number OutputFormat; char ColorName[32]; char Colorant[128]; cmsNAMEDCOLORLIST* NamedColorList; OutputFormat = cmsFormatterForColorspaceOfProfile(hNamedColor, 2, FALSE); nColorant = T_CHANNELS(OutputFormat); xform = cmsCreateTransform(hNamedColor, TYPE_NAMED_COLOR_INDEX, NULL, OutputFormat, Intent, dwFlags); if (xform == NULL) return 0; NamedColorList = cmsGetNamedColorList(xform); if (NamedColorList == NULL) return 0; _cmsIOPrintf(m, "<<\n"); _cmsIOPrintf(m, "(colorlistcomment) (%s) \n", "Named profile"); _cmsIOPrintf(m, "(Prefix) [ (Pantone ) (PANTONE ) ]\n"); _cmsIOPrintf(m, "(Suffix) [ ( CV) ( CVC) ( C) ]\n"); nColors = cmsNamedColorCount(NamedColorList); for (i=0; i < nColors; i++) { cmsUInt16Number In[1]; cmsUInt16Number Out[cmsMAXCHANNELS]; In[0] = (cmsUInt16Number) i; if (!cmsNamedColorInfo(NamedColorList, i, ColorName, NULL, NULL, NULL, NULL)) continue; cmsDoTransform(xform, In, Out, 1); BuildColorantList(Colorant, nColorant, Out); _cmsIOPrintf(m, " (%s) [ %s ]\n", ColorName, Colorant); } _cmsIOPrintf(m, " >>"); if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { _cmsIOPrintf(m, " /Current exch /HPSpotTable defineresource pop\n"); } cmsDeleteTransform(xform); return 1; } // This one does create a Color Rendering Dictionary. // CRD are always LUT-Based, no matter if profile is // implemented as matrix-shaper. static cmsUInt32Number GenerateCRD(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, cmsIOHANDLER* mem) { cmsUInt32Number dwBytesUsed; if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { EmitHeader(mem, "Color Rendering Dictionary (CRD)", hProfile); } // Is a named color profile? if (cmsGetDeviceClass(hProfile) == cmsSigNamedColorClass) { if (!WriteNamedColorCRD(mem, hProfile, Intent, dwFlags)) { return 0; } } else { // CRD are always implemented as LUT if (!WriteOutputLUT(mem, hProfile, Intent, dwFlags)) { return 0; } } if (!(dwFlags & cmsFLAGS_NODEFAULTRESOURCEDEF)) { _cmsIOPrintf(mem, "%%%%EndResource\n"); _cmsIOPrintf(mem, "\n%% CRD End\n"); } // Done, keep memory usage dwBytesUsed = mem ->UsedSpace; // Finally, return used byte count return dwBytesUsed; cmsUNUSED_PARAMETER(ContextID); } cmsUInt32Number CMSEXPORT cmsGetPostScriptColorResource(cmsContext ContextID, cmsPSResourceType Type, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, cmsIOHANDLER* io) { cmsUInt32Number rc; switch (Type) { case cmsPS_RESOURCE_CSA: rc = GenerateCSA(ContextID, hProfile, Intent, dwFlags, io); break; default: case cmsPS_RESOURCE_CRD: rc = GenerateCRD(ContextID, hProfile, Intent, dwFlags, io); break; } return rc; } cmsUInt32Number CMSEXPORT cmsGetPostScriptCRD(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen) { cmsIOHANDLER* mem; cmsUInt32Number dwBytesUsed; // Set up the serialization engine if (Buffer == NULL) mem = cmsOpenIOhandlerFromNULL(ContextID); else mem = cmsOpenIOhandlerFromMem(ContextID, Buffer, dwBufferLen, "w"); if (!mem) return 0; dwBytesUsed = cmsGetPostScriptColorResource(ContextID, cmsPS_RESOURCE_CRD, hProfile, Intent, dwFlags, mem); // Get rid of memory stream cmsCloseIOhandler(mem); return dwBytesUsed; } // Does create a Color Space Array on XYZ colorspace for PostScript usage cmsUInt32Number CMSEXPORT cmsGetPostScriptCSA(cmsContext ContextID, cmsHPROFILE hProfile, cmsUInt32Number Intent, cmsUInt32Number dwFlags, void* Buffer, cmsUInt32Number dwBufferLen) { cmsIOHANDLER* mem; cmsUInt32Number dwBytesUsed; if (Buffer == NULL) mem = cmsOpenIOhandlerFromNULL(ContextID); else mem = cmsOpenIOhandlerFromMem(ContextID, Buffer, dwBufferLen, "w"); if (!mem) return 0; dwBytesUsed = cmsGetPostScriptColorResource(ContextID, cmsPS_RESOURCE_CSA, hProfile, Intent, dwFlags, mem); // Get rid of memory stream cmsCloseIOhandler(mem); return dwBytesUsed; } lcms2-2.5/Lib/0000755002406300000240000000000012163061353012433 5ustar mariamauserslcms2-2.5/Lib/MS/0000755002406300000240000000000012163061353012752 5ustar mariamauserslcms2-2.5/Lib/MS/MS.TXT0000644002406300000240000000000212163060730013660 0ustar mariamausersMSlcms2-2.5/Lib/BC/0000755002406300000240000000000012163061353012717 5ustar mariamauserslcms2-2.5/Lib/BC/BC.txt0000644002406300000240000000000212163060730013732 0ustar mariamausersBClcms2-2.5/COPYING0000644002406300000240000000206612163060730012762 0ustar mariamausersLittle CMS Copyright (c) 1998-2011 Marti Maria Saguer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. lcms2-2.5/install-sh0000755002406300000240000003253712163060730013741 0ustar mariamausers#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: lcms2-2.5/ltmain.sh0000755002406300000240000105377412163060730013567 0ustar mariamausers # libtool (GNU libtool) 2.4 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION=2.4 TIMESTAMP="" package_revision=1.3294 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${EGREP="/usr/bin/grep -E"} : ${FGREP="/usr/bin/grep -F"} : ${GREP="/usr/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/usr/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_emit_exe_manifest # emit a Win32 UAC manifest for executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_exe_manifest () { cat < EOF } # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -{shared,static}-libgcc, -static-{libgfortran|libstdc++} # link against specified runtime library # -fstack-protector* stack protector flags for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin| \ -shared-libgcc|-static-libgcc|-static-libgfortran|-static-libstdc++| \ -fstack-protector*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_apped perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper $cwrapper.manifest; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then # Create the UAC manifests first if necessary (but the # manifest files must have executable permission regardless). case $output_name in *instal*|*patch*|*setup*|*update*) func_emit_exe_manifest > $cwrapper.manifest func_emit_exe_manifest > $output_path/$objdir/$output_name.exe.manifest chmod +x $cwrapper.manifest chmod +x $output_path/$objdir/$output_name.exe.manifest ;; esac $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" func_append rmfiles " ${name}.manifest $objdir/${name}.manifest" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name $objdir/lt-${name}.manifest" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 lcms2-2.5/AUTHORS0000644002406300000240000000116112163060730012772 0ustar mariamausers Main Author ------------ Marti Maria Contributors ------------ Bob Friesenhahn Kai-Uwe Behrmann Stuart Nixon Jordi Vilar Richard Hughes Auke Nauta Chris Evans (Google) Lorenzo Ridolfi Robin Watts (Artifex) Shawn Pedersen Andrew Brygin Samuli Suominen Florian Hch Aurelien Jarno Claudiu Cebuc Michael Vhrel (Artifex) Michal Cihar Daniel Kaneider Mateusz Jurczyk (Google) Paul Miller Sbastien Lon Christian Schmitz XhmikosR Stanislav Brabec (SuSe) Special Thanks -------------- Jan Morovic Jos Vernon (WebSupergoo) Harald Schneider (Maxon) Christian Albrecht Dimitrios Anastassakis Lemke Software Tim Zamanlcms2-2.5/aclocal.m40000644002406300000240000122776512163060730013607 0ustar mariamausers# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010 Free Software Foundation, # Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010 Free Software Foundation, # Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2010 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; haiku*) version_type=linux need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3294 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4]) m4_define([LT_PACKAGE_REVISION], [1.3294]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4' macro_revision='1.3294' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, # 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR lcms2-2.5/lcms2.pc.in0000644002406300000240000000035512163060730013677 0ustar mariamausersprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: @PACKAGE@ Description: LCMS Color Management Library Version: @VERSION@ Libs: -L${libdir} -llcms2 Libs.private: @LIB_MATH@ Cflags: -I${includedir} lcms2-2.5/config.sub0000755002406300000240000010316712163060730013716 0ustar mariamausers#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-11-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lcms2-2.5/depcomp0000644002406300000240000003554512163060730013311 0ustar mariamausers#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2004-05-31.23 # Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit 0 ;; -v | --v*) echo "depcomp $scriptversion" exit 0 ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # Dependencies are output in .lo.d with libtool 1.4. # With libtool 1.5 they are output both in $dir.libs/$base.o.d # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the # latter, because the former will be cleaned when $dir.libs is # erased. tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir$base.o.d" tmpdepfile3="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" tmpdepfile3="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" elif test -f "$tmpdepfile2"; then tmpdepfile="$tmpdepfile2" else tmpdepfile="$tmpdepfile3" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: lcms2-2.5/ChangeLog0000644002406300000240000001225612163060730013503 0ustar mariamausers This is a timeline change log, see features included in each release ABOVE release number ----------------------- 2.0 Major version bump ----------------------- Fixed a bug on V2 CHAD construction, affects absolute colorimetric intent Fixed a bug that prevented linkicc to work Fixed a bug on transicc that made profiles with output colorants info to malfunction Fixed a bug on Lab + Alpha float formatters, added such predefined formatters as well Added cmsChangeBufferFormat for backwards compatibility Added UTILS_UNUSED_PARAMETER for samples Added a check on jpgicc for NULL transforms Fixed VC2010, VC2008 projects Added cmsTagLinkedTo Fixed some typos in error messages Peliminary Delphi wrapper Fixed a bug in tificc in floating point formats Fixed a bug in device link creation on v4 profiles Fixed a bug in psid and profile sequence tags Fixed memory leaks on when recovering from errors Fixed an issue on curve inversion Fixed several integer overflow and other integrity checks, thanks to Chris Evans linkicc now stores the rendering intent in the profile header Fixed delphi interface Added Duotone support (Bilinear interpolation) Fixed a bug on curve reversing when source curves have few points Added bound check in floating point interpolation ----------------------- 2.1 Maintenance release ----------------------- Fixed severa bugs in absolute colorimetric intent Removed pthreads need Updated linkicc to 2.1, cleanup Fixed some potential issues as NULL dereferencing Fixed GBD bug (out of bounds memory overwrite) changed memmove to memcpy in cache for xput improvement Profiles with weird curves are not prone to p`relinearization optimization. Added functions to retrieve formatters from transforms Fixed a bug that made crash black preservation on CMYK2CMYK devicelinks Added named color functionality Fixed a bug in black preservation and sligtly non-monotonic curves Added dictionary metatag support Fixed a bug on ReadRAWtag Pascal unit now is supported by Free Pascal Compiler ----------------------- 2.2 Maintenance release ----------------------- Fixed a 0 byte allocation issue in _cmsCreateSubAllocChunk Fixed encoding for floating point tags in Lab/XYZ Fixed Absolute colorimetric intent issues Fixed a bug on the range of data in transicc, when colorant tag is specified Adding a memory alignment macro for CGATS parser Updated to ICC spec 4.3 Added compatibilty with Argyll's CGATS parser ----------------------- 2.3 Maintenance release ----------------------- Fixed a bug in the named color devicelink generation Fixed uint64 to work in systems without long long native type Added performance improvements from several contributors, mostly Artifex Fixed a bug in black preservation checking Added black point detection algorithm from Adobe paper Added support for transforms on planar data with different stride Added a new plug in entry for full transform Exposed internal overview table for tone curves gamma 1.0 can now operate in unbounded mode Fixed a bug in pipeline duplication Added getPipelineContextID Added a new plug-in type Internal stage structs are now accessible through plug-in API Fixed a bug on ending zero when saving a IT8 to memory Fixed a bug on IT8 reading of negative numbers. Increased security checks, thanks to Mateusz Jurczyk, from Google. Added half float support Fixed a typo on tificc and jpgicc names, thanks to Elle Stone for reporting. Fixed a bug on named color profiles. Added a conditional compilatio flag for "half" support Fixed a bug in transicc when clot tables are present Added formatter resolution after xform optimization plugin added half float variants (ABGR and so) Fixed a bug in XYZ floating point PCS Fixed an unitialized read on PatchLUT Added a check for maximum input channels -------------------- 2.4 Featured release -------------------- User defined parametric curves can now be saved in ICC profiles. RGB profiles using same tone curves for several channels are storing now only one copy of the curve (saves space) Fixed a multithead bug on optimization (StageDEF) Fixed some 64 bit warnings on size_t to uint32 conversions update black point detection algorithm to reflect ICC changes Added new cmsPlugInTHR() and fixed some race conditions (thanks to Artifex) Added error descriptions on cmsSmoothToneCurve Fixed a bug on big endian platforms not supporting uint64 or long long. Fixed some bugs on floating point curves. Several improvements in cgats parser. Several minor issues found by cppcheck Fixed devicelink generation for 8 bits Added a reference for Mac MLU tag Added a way to read the profile creator from header Added identity curves support for write V2 LUT More changes from Artifex Added TIFF Lab16 handling on tifficc Added some fixes from XhmikosR Fixed a bug in parametric curves Remove spurious tabs added by git merge of pull request Added support for VS2012 Added a simple project for cppcheck Rendering intent used when creating the transform is now propagated to profile header in cmsTransform2Devicelink. This is because 7.2.15 in spec 4.3 Transform2Devicelink now keeps white point when guessing deviceclass is enabled Added some checks for non-happy path, mostly failing mallocs ----------------------- 2.5 Maintenance release ----------------------- lcms2-2.5/Makefile.in0000644002406300000240000006475512163060730014011 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Top-Level Makefile for building LittleCMS 2 # VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/lcms2.pc.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL \ config.guess config.sub depcomp install-sh ltmain.sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = lcms2.pc CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7.2 dist-zip foreign # Directories containing Makefiles to 'make' SUBDIRS = src include utils/tificc utils/transicc utils/linkicc utils/jpgicc utils/psicc testbed # Additional files to distribute EXTRA_DIST = AUTHORS COPYING ChangeLog doc Projects include bin Lib INSTALL README.1ST lcms2.pc.in pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = lcms2.pc all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): lcms2.pc: $(top_builddir)/config.status $(srcdir)/lcms2.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool clean-local ctags ctags-recursive dist dist-all \ dist-bzip2 dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgconfigDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-pkgconfigDATA # Make sure get rid of VC stuff... clean-local: find Projects -name "*.user" | xargs rm -rf find Projects -name "Release" | xargs rm -rf find Projects -name "Debug" | xargs rm -rf find Projects -name "*.aps" | xargs rm -rf find Projects -name "*.suo" | xargs rm -rf find Projects -name "*.log" | xargs rm -rf find Projects -name "*.sdf" | xargs rm -rf find Projects -name "*.opensdf" | xargs rm -rf find Projects -name "*.log" | xargs rm -rf find Projects -name "ipch" | xargs rm -rf # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/README.1ST0000644002406300000240000000005512163060730013211 0ustar mariamausers Please see the documentation in doc folder lcms2-2.5/Makefile.am0000644002406300000240000000201412163060730013754 0ustar mariamausers# # Top-Level Makefile for building LittleCMS 2 # # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7.2 dist-zip foreign PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ # Directories containing Makefiles to 'make' SUBDIRS = src include utils/tificc utils/transicc utils/linkicc utils/jpgicc utils/psicc testbed # Additional files to distribute EXTRA_DIST = AUTHORS COPYING ChangeLog doc Projects include bin Lib INSTALL README.1ST lcms2.pc.in pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = lcms2.pc # Make sure get rid of VC stuff... clean-local: find Projects -name "*.user" | xargs rm -rf find Projects -name "Release" | xargs rm -rf find Projects -name "Debug" | xargs rm -rf find Projects -name "*.aps" | xargs rm -rf find Projects -name "*.suo" | xargs rm -rf find Projects -name "*.log" | xargs rm -rf find Projects -name "*.sdf" | xargs rm -rf find Projects -name "*.opensdf" | xargs rm -rf find Projects -name "*.log" | xargs rm -rf find Projects -name "ipch" | xargs rm -rf lcms2-2.5/bin/0000755002406300000240000000000012163061353012475 5ustar mariamauserslcms2-2.5/bin/Bin.txt0000644002406300000240000000000312163060730013735 0ustar mariamausersBinlcms2-2.5/missing0000755002406300000240000002453312163060730013331 0ustar mariamausers#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2004-09-07.08 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit 0 ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit 0 ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case "$1" in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: lcms2-2.5/config.guess0000755002406300000240000012761512163060730014257 0ustar mariamausers#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-11-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lcms2-2.5/testbed/0000755002406300000240000000000012163061555013363 5ustar mariamauserslcms2-2.5/testbed/test1.icc0000755002406300000240000210074012163060730015104 0ustar mariamauserslcmsprtrCMYKLab )5acspMSFT-lcms desccprt#wtptA2B0,A2B2,A2B14B2A0F<8B2A1~8B2A28gamtXdmnddmddltdesc,Test profile, not suitable for real use-Test profile, not suitable for real usetextNot suitable for real useXYZ Zg0mft2 $i 6 1^ 2Wy%Y !"#%#&D'f()*+-.(/H0i123457859Q:m;<=>?AB)CBD\EuFGHIJLM,NCOYPoQRSTUVX Y#Z:[Q\f]x^_`abcdfgh#i3jBkRl^mgnqozpqrstuvwxyz{|}~ˀɁǂф{pdXL@3& ֜ȝ|jWE3 תū}kYG6$ڷȸ~kYG5"ŵƣǑ~lYD.оѧҐyaI1ڲۘ}bG,{W3qHvU3sIa)\ Z,      !"#$%&'()*+,-./0123456789:;~<|=|>|?}@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdeefghijklmnopqrstuvwxyz{|z}o~dXMA5)ۈʉq`N=, ٖɗmZH6%ؤʥwog`ZTOLIFEDEFHJNRW]cjr{ĄŊƐǖȝɥʭ˶̿*7DQ^kyކߔ ,8CNYcjnoldVD/h 2 R e r xzzzyuph^RE7)4=@?:4 ,!#"#$$%&'()*+,-./|0p1d2Y3M4A566+7!89 ::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}v~oiaZQH>5+! ؎͏Ðxpjc^YURPOOPRUY_fnx̰߱ 8Ql»!Ceª9^ɂʦ2TtҔӲ6Lat݇ޘߧoX\[VL=*b/fMq T p_L7! }tfUA, !"#$%z&d'N(9)%**+,-./01y2g3U4D526"7889:;<=>?@}AoBbCUDIE~% ہ‚rW; ϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{T?~ò~i~L}~cbA~Dad~ty~W~O>~\/~|~`Cx}%H}1X}%z}K} {N}׋<_~7A~-ψ||Dz|+E|[s|z} ^}wO@}-~ċ {Gu{Dz{]Ĭ{f{Zx|[]|ϕM?}R<}Ǝz]YzHħz|z={LNw{\|=>|v|ېI8z/r z;bz'sMzd6zɬqv{D[{0> |;|yyaIy?yazYvzݮ[{^=c{ФI{R*y߄yfUy`VyyuKzZi{ <{z%zȎ~+~}͇}W0}3}HtЄ}Zk}=~zɇ}!~Єd*s}Y<9wpSwuuVrUW؈|;,뇔{RsѲ;:8q)PCV:4.8Ȅ2񡂡?Up Vu9S c bփR.ՁNn U388A/ͬδz6߆өn1T\e7݀tXT)$̯̕6;eCʷˆ imw3SƀV7M \lGNػځNāa5tNzlߴS<H6*-N}o2ن N%է>w֣A}⇤\fXMݘ2, KԐ3g°[} 0e6M _1 ? 1ӣǾI^I|B̯dܪwLe1$: rW] 1S{z|diL g0\ U{[G{!{ ޔ`{&yE{xbie{Jr|/c5}~ ~:f#MKx+Ca|uI~.yW ώәߎ%¡唘[w!^T`^H*- 5GȨ瘎=Π4rv_ҍRGf,ދ̋|,ƕ{ Ҙtٕ^1Fő,;'\A*ىJ nyg؜(VN#q6\DՊB*|i˽?zzhzMџzEzrn8zY,{dBS| '|⃔*Z Ђ`>mۘ:Xc€A'4 uh¨h$nk)l]'Wf@&8[/Թ|zY9_N3kV41@49%wUh 3?Vkؔ.Uٓ|??R~%nVӎȩ5U.k~j9V"U"똬>Ð?%' Ȃ}ˡWml}ʗiRT>OlT$iƝaʚ=\},?iT- =$e0yYq,<-A_|?h@SG=ҩ$leLy)yywydGzPOsz:{ )|qʬί(h䁙~ڀvcc&OS#9tL߮=.v10b䞼 N8ՙ,K.Fpj癪7̥0uPhbQM88Ajʗ׋xAʜڨ†󤔗tuϔaMKMB=(7kua ,̘/1Hsʠ5`\Lk7M (_XĀ⫹}£rs@C`)6OLA;6}Ȕ@(Bat{C rȟH_֧Kť6#̕O&3"^ļ֢qrb_cKu6{ݤ < (ytյy:}Ѱy2ldygZ8dyF冷zj1{r{(B€}b kYdrFl1l;nˉՍވI|ϯkUYz4EƄ0ˀh|RjΌcX}-EYW0,\>շFiba{{4j$W]D?50>R*>6Ā;ٱџziWyZD}p/'g^ȶ6pDzi/W%ԞD9I/Ĝ' J״"ԯzWhy1VߣKC/1ŀٵ˰tzhVﭠCߟ8//)cyxr|xaixPqyS> sy)zjfY{ C7ċ恶q¹JaJm~P ~=_~)]f2ÀDÒG'q^`۳uOY=RZ)#JNO©k#_p鷼`k&O:%=j(Hڧ,O[pt` N֐&<èi(ץc^PbB7pM@s_ϱ ,N&q<Е(¤+8fը*p_oN<}:(nN&Q̺o_Nw }gu~_jx&thxQy7Qẙzi%u7{Z{=v|k|v՟wӾ xѦx Ryosz'kYuzیM1<} #}oha}?'O|}g3}f }É\}Y}|ȸזP|D|mg|˨N|3,}X S}(d}5<|0|nƕ|4~|8f|eNT|2|L |Qvww~~x }1xfyzM(zI28%{1 ։$|y<Ǽ|>ډcΒhU~|nWdQL\15 쇋Z⊩!_+7/0 zXcⅩFK&0D!D $~uI&%ڏ͆.yl bDŽ̋vJQ/nFY k솷&ڸWlΆN]xa„I.~ ҃ᆤh/jhwo`ӃX^H.Е QLr71Nu vf`ҟGHUXu-{8IF,mźg߄ދuނ_gfGǁ-pȑ=ͅtؠ/IzKhu5^ՂGJ,^&J5uYv vw6rw]xEry+Nz|},SP~˛S~~~Sr ~O\~mD΋o~*'C~,lWح46uxp[(/C񊁃)cM &oA(7ȍpofZ0C(e_׃GgϐNanً(AY@RBS( Ѓj<ŏJmQXm@A<'|;Ȇ<[9%_5,~4m,WƈA' U<ϻ6ʱ^ly0W(W@@&֚$`|źm[xR`k7NV@-&H;/ݲàztáHuNvz t9t|uOqEu^sJvJw5Wxk@kx0| |$p|spv4|p]ڜ9|J"|4}-И5}ls?䄅lfo1]Μ=*ڙʜ]1zlʫrզЮb*|Pܟ s>Ԧ*d0vsQysjٶCt+['tJu8vF$R+v Xw {.yzj `xbiAY3I?N7#ףV> J߻bSxPgi5YuߓHU7]ӑ#âk t€ޢ_x ڟdhY9>kH§79,# MbwյZhưkYeH^7 # { >w9hX#H97# `- a{n1rmŶs7_XsPst'@t/E!udukoMw${h@zmz_^kyPpIy@z /RzVG1z_ /|F"{rmÞ_G=PN @}:m/PGw}Iu!{pm}s_gP%ԅ@^/Jn{[emep^P‹@Oߊ/P܊߫Ћ0${9%mT^PՑ@O/aґ {ńumGꜳ^`GP f@[%]/yyK!;΄7z0m?[^,Pa@guY/Vx@jzĝ>m>᫓_ 8[P*̦3@פ/E1gȥFvpswKsxt̢*xu$yvqczwW{Ox;/|1y}!yt~hku~v|}we}ʈxK}p.y3}V[z}:z~ {T}1r̚td_u Fv ~wnxBU>xy8yĂyՂ iq8rsltюLuvmvT*w!7xxpu2q/r+sŖՄtl|viS#w 7wwq?lo pqˣrzwtkXu53R.vA6BvvKNn뷌p[q1r0z̓0!{ ){ͮwӹx*NxelxTyZy,4byqJz!K/z\r zˇ6wswwܳ5x'xx ay'Iyk.yN Bz-Uw>JwQ#_wwwwx$/a x{ITy'.}yAo y~p3qrrڌsvGu `\v5HwU-ńxR܆Oy`Fzꅻzs {u{Wu{_[| Gh|i,؃|/}u\1_rك,tT^QkFǂD+n9 ­Ǐ*1ɂ|q|sB6]5kEՁJ+,x~(Ta؂ uz)Qr-\5TEh*x }0@Wd8EqZ[QDD)D=DI7ˀNdK [p=DZC~")Q~B?θڬ&2`Nos~NY~C ~wp(~^~ܾxӾc$~5n~@IYE~ sB~0(y}^~&\Wo5p!rs.lˋtTWu@v&;w*$yXySCGyyz?k֊_zVf{$@ {%{ۈ}iI ]~׊Sij̉7UJ?6$΀,Mԋˋ>j}*iT·>>k $PYفKIŠ˔8o-|:7h1kS߆a=#ċ%ʁs Y{ygʆq[S1<#,!V5q zٟg՜{Rj"0Ճ'=r'@ zVfQPQƄ;Ο_"a?) Œn;y]eQD;d1!"ospA(~|݈C|BxGgtXUѕB{5.l ʓ@lןzwߕWfɗ/SU/B{@. 'F΀F(wD f9tTAA-ma8KΞNvҤeTQA-X9ub;k)v"xFeAS*A/:-}v 4n~W{oo]p/_yqKNrhSU7Ct214+}pO@bqSb&C%1#!}ip aƫɗRB1Ҡޔz~.Nx}joدPa=RB\p1Jf|yv}6GoЯ+Va]RdB1vɔŅ(rHlemX9nIӷo:up)S4q-p)t{rwtpeÿtX:tIu@:vu)v!uxr:{er{EX&zIֵ$z:{){8n{}.re&WjBIҀ:f)0!rvҊ e_WEIu:QsQ)GIUrQheJWNTIg":Al^)!'XPr0Pe?bW Icϓ:?)8`-!GrӠ`e=̞W՛Id:::ҙ)}yM:qv6eCPWC(Ikwk:E)Q)ЧʜERٵqlrn7touIq-vkrjwtRxu6zyvzyv׷oWwppxGIrAxKsy4ttyivzQPw4z5hx!{>xzmogp–rIs^htOuJ4lvwA"kJmo:pu~r1gWsvNt3uru0zjo;l@̩Tm֔?o^}Rp⏔f%r^Ms2tGtԆ&ik8#lϝan\Q|o*e qh?Lr1s? eshԻjgk+Im{od&p3Lq1:rZ sGhi˶ kSÐ^l֫z/njcWomKpqC0q grybιg`ia}ajںclM`ymmڮbohJpP0p q%Zyk}zdmKzn{hptyU{qb||sJ}t/}v 9dv7wv{>${* I|}9z Xz Əy|zhz1Tzy>z$zjR{݂\y yVy|yh9ySyA=z|$ y͘_{^؋iڜk~mpyofipQbr$; s!tNw$setU u2x?veqvQw;xx jx{j|ۚՇ{|ن} w}!dq4}FP)}u:Qr} U}~цZ>vScyO\yI98ƃoÏۘ"ubgbo֊dNkuJ82n2f{.י~~0\to3a0Mx8EERX 2ȃEvsš`ā7&M͕7ǀvQlWJ#&r&`VLS977ߛD-`3^|r<_|Kz6Xy iNԓ&k#yln̐nj\oIqt3֍rrz쓔rZsM't3mu[čXuHUEv3(ww~{Nb{}~!{mX{Z |G|_2~c|~||lZ+ |~5l YւXFΉӂ 10&,{^kY-F1YPƇXRQ?{7~j5X^ՏFEmԍ0ˇ)MIZ0zy͚iz^=W! DՇ[0^Wh̉إy܊Dh܈ɟWD@I/慽)aV{yVܫ9hNRVCՆ/8kH(؞ĥלLjsߚl4cėmR oI?씆p+Jqlq/}А@qcHrQsˑ{@*Y{q/{%Ϛ̂=nq-ya&P{7>*)ޏ
ґƗYp`O֑ =z)w>{UƓGxp<@` O33`=%j)"]Ƙ~ϙo_z`Nu<(όؒikU~"RCo^͜Nܚ<&O(k8KW=}Ôn^VM[Q;όƠ(!7h7vm\-=nknlpvZoRiʯ(p\WpMTq>p^r-:Isj㣧sF7uav |vi`w\Gw`Mw>(x--xxT^zXu~]h}~[w}M4}=Ǣ},Рj}Z}~uDhX.[τLm=rd,2kٞ;th(urZXL_yX=h,_hҝ#te=gZn#CL<ԟ,0;ڜYVjBt]םg-;Z2VKآ<억+뜓vƐSdt.~gZ.K]<{)+뛾њ|j2f]λ@hP㷖ipC#j4*k#>l!Hksi=n2]Ϻ9nPBoCEwpn4[.q1#sJqpx)iͼud]uPմuC&v4Qv|#vv&|"ir|k]af|P]{Bw{4-{#{g{hiz1]5#PVKB+4#0liN<]PDB 3#:槫i)]GP?Bl3񨛍#2E"Y߀i Y]PDYUBM3ǔ#^?YHh]#IPQ|B%3 n#"V PlmfDn0huojqcl{rndUtOp}LlurP1vs x1s\iqTXkrgmmswogtyquc>rvKasw0txU vtwɈg|`i|\k|_&m|}xoV|bp|JYro}/s+} !t|ǻePh Pj `kw*m̓`o/ITq.q vsdF4)f|Th~juln_nCH`oˆA.p+ rxRc!e?p8gUiS tkG^m!3Gn)-in hq öad@*fUhTksjR]l3FmT,m˒ pa< cĜSeLgri\kmF$l,Ol٘\ pj`b盲d%fNrhکs\]j¥>El7>+l mp_te`uglvqiwZkrxBm\Zy,oESzq+zs}s}Fr=osfq;Zturpuvsqvst[jwquDvx]v*8yw{[xp.zk>qrzrz?s{Bot{ZDu{Csv|2)XwN|?zy|l)n]ʨo31p샖rnxsOY'txBun(u.x1lя)'n2Ôo|PlpmFqXs4RAt-;'tDywdlxklmnM#Col0pِW)r@s'>rVgvރjl$mTInkGoV`q.V@>r8&qޒ#'wJ|i߮>kLl~vmϣjwo"aUpn7?q]&IpwYVib$jɴ#k}m/>inzUoţg?p %pw=p|dM}g}TiW|}kgh}meTD~VoS>~q$r&gtSzn3{'p{zqh{u{rg|:sSS|u=8},v#C}vxqxxyMyyyzKz&zfzzvRf{z*:FEeWqcbEa?b!PX>V e*5qE|czieYlDgx\dirLIkM:6 l%ّ8n ZduΤ[fˌWg/GR6Ґě.'K͒F؋RFn9ab]cU:eGi;gW8Mh'6j*inbmi?ajTFkG@m*87`nS'?1oq-n-simpa9qsTr7Fޢs7ퟹs'rt.sx0lx`xSS,xFjzx73yA&ݜyl2x0|cl(l`8PS+E&71~&p~~k_٣wS%DžE P6؛&o(ƀkd}_ҍRߟ猲E:6&;%Jۀk$_T&R3D_Y6@%a'j𤡝_VRD؛V63%j a|`U|bRIde`"m$gsinji]plFrEo,s&p v*q d%jѭKflhn,jorFlq`\nrEpItS+pu] mthukIaud vNf}vshwpjx\[lyDnpy+nz rz-w_K]aCdlȃfoiiZRkMCl)*Bl~vq~]U `ܕbie nRgbY5iBk9)krY?q[^pa-1cm-fX\Zyc]Vj_1bpl=dޕ1WjgAqh(`h|sYY\b|^_avknc眙Vf,@gɗ''f"Ds XԵ~[?^D~`!jcVe`~@Mf'neș_t̳7n_GpOb1qd~hrgwjt?iUulM?vnw&wZo2{ ql,i{mkoPmP}kpnir pUsxr2>ts%Wutxyruɰ1isk~tߎ{m u{nvhzp0w`Sqx.=rx$ry&yzFg~&if~-k!~.zl~)g8ni~0Ro~;=q~<#p~[zS~+eGgliiy.k flхQnlgonp,\qEUIrL64rcqˈKmkUܐHH;ʂ9V)07vdh'mO'aՊUTEG9vv(ϋQu߀mB a5UyGiӏ8t(pnjрla_}TԘ_G 8r(9ŕ'Ɏ0'ebW[Z^M#`e@[b1dh e emdc'YdMmf@l{hV1Ҝi j Oird+juY kMl?n1o Кo }lo{wcqXkrzLhs?y0z' M-z1 z*b,VWqaKuH>|0UN % b&-WyK$>(܆f/2mD t ΀a՜^+V̚JJӘ=ؕ/Dv~ %z!a˖V$Jŗl=(/Jg[ 숟Y#ZdNR\Bd^5`',b#abhEcZqXpga}McB#jd5.f:':g`gpҦhQvXhhMJ iAЩj588k'l sl|9mxgzWo:Lߪ&oAWp4Uqm&ߣq Nq\rA~WRvLvAv4w3&wm ]w)Ÿx>V}#LP*}J@դ}N4^7}?&t}3}~^V-L)@u4Al&t4G->!zVҋCL2@g42&]!6MVb4~L z"@U4.#&g/&jp&aSYc]6f/`7hqcLkjfFW(li%A*nbk'nmtnų*]daq`fc6h~Kekjh m(Vj@o.@5kq'lr^cu5sANZo]pJM`q|c&rinet TguC?>ivV&Qiew ux"tWy[y܍^ z9{Y`zhc{Se{k>Ng{%f{v$|UxFX΃u[y^łyfaRd=veʁX$dvmRSvfVZx] je_(Qbp pE [pqL.~sǤbmdo7fpxshqa8js&Mlti8mu|m.u~-xe4_wbPx0dxr_fyQ_hyLjzc7kzjz~T|f]}``]-b|&pd^fဤKhԀw6jKkht~uԠc[{+^B `oc ]e@Jg56ChXf~_Yt2\̀_>oa$]coJe܌5fe3~Xas[Y^ [nJ`l\ZbaIhdi57e7:d6~Wة6Z ~]#m_{N[aĜXHcš4dc x~ɀ|6pXq\`}gr_ltbZuDedGvgh2whj`^wkZrmbne|1pAgikqiYrkFtm28to`tovȘjl ?l@m{moUjo&pXpr(Fqst1rt|cr&tzhuiv~ykgwFi:lwWnlxEoyA0pyoy~qeggyl*zGn@{mzsj~t lyp{tn`uoP2vq>w]r]* wsE=yr}ps}kqto)ru_svOOtzwK=guOw)uxivwnk||Po}n p}W^q}zN]r}h-jKO0j,lksjgg>i[ kfM#l=xnd-o}oNq6rp?ofqYr8LJs>=4pt#,mt6t] vq}BwexYy"K]yh[img"ndgQf7\@gPPiCk=4l#mn^l^sf~qm[^nObp*Beq<3슀r #or7rxe}uLZvNvA.wP3fw#w SwN|d|Y0}KNg}{A }2އ}"ن} }dZYRwMh /@vT2Z"X3!GcއEY M/$@?,;2/g"6僠c|X!|L˅MS?O1sn"*ۂ] \URBYXF[E9]+}_I`JamI\]QY_UF7ay9cr+Qe Peߘer1[_dCPeEg9i&*jV&jjwZ@kZP8lDѕm8jan*joݔ3o.p#{eZ LrOs[D0t7ƒ|t*u-u!1*u.YsyO}zCC.z7Qz)zq-z;{XkN>;CL#6폗). PX\`N/:;B66(܍~sG+X7N rBÏ6o(WrT PaTMFbV;M Y=.[i \]`|q.Oƨ[*EĦ]7:_2.` [mb+ǥbleuO=SaE-c:Ae.~fy gVѢg iz<NǤ hDYi9k-IllƠ?l(wo+}NK oqD+kpN93q-+Lqqq5u Mנjv`Cʞv8(wU,뛞wXw؛w^qzTMs}UC}8},7}&]}љ} ~M$YCJsq82, w{{L)C(8dЋ,ٗDݏgZS]W|`[5wPc,^debCPhe;ih#%ipjygl˧V^ Y`\cv _fxcbiOe"k:fm"eeolyqgRhGVUjsYlLt\nb2_oNb^q9ds!btyvbOSrݔzS sڄ| X_|VEb(|1c|cD|dQGg{Q*gh{4jz{oY|\jn^_eaFO'cgd=e ;*Me$,h;WO{Z}m]^_Ndax"W`ixGkZyT6lxy#ml9z qze~bYr7d9dfVpgFiT6j_"i p}`(&q^bZddL4Uf F=g5ph"g nτC} ^p`ԏcdbЎU dkEfP4g ".e؋ m<|]Wp2_ baJTcdaE)d4xe!dbQ knd xyRmzbV` {YQ{])BG|h`0}Ab~ld#dy wv`[Hkw(^/_w`PxcAy}e0tzGg{h~)i|v}s cjte]u gOui@vk/w}m5wm{nuDpkisq:m}\rOnOsEp`?t.q/!trtryt(tmWt7hKnu:[ovNpv?jo}.pR}o}x<~r:i3fjZl Lxm%"=n-nnumx8qgFfiCYxjKk=(l,l߉+kx:qfqehXip"KejŒ\]2D^$g`Oؔ`ԑ biqRˑ ^?Hܐy`g> bm1؏d9#䏯eeggvRBe@Hf=(Kh1/i#TjJjl{<Q9lUGDimߡ;Md|Qg"lUAi{[ XkH[m4\o]Jq$}KtEERހC2SXW)} :qJ@wEhIW;ME\P{2.Q5!gUʆ}08?e=vvBgnG5VKDNԌ1O1T|436;vqABgF KVlJ?cDMY1M^PSϏ|8ZMC]aR v[_V9f}bZ/Ud]C=ga/Oh@diufTmґyUWXZu-[^Je^avTa1dxBcjgJ.d]iNf`jrPaITmcsWfPdZhSV]jAc_m-`ncowbLjGPslqTnVbWRoR)ZYqx@j\r-] t8ats{vHt~Lu{pPvca`T,wW~+V ^dXB[|~G nKDm_OOR~C>XTԄ+TLU]?{DʏmI0J_M&OP=R܊+-RG*]뉛>{C mVG^KNO E=QE*P^i@aN zdRlf&V]h9YMVj.];k`'lcpdhq'\WyH_Zwkca]\{dQ`LYfrc:h)fu'BhhCnhvhnXb`Fw[[bj-^ec[\`gKibj: dl &dmkmzT0iivWykBhZtm Z]0nJ?_pJ9aUq%`r ixr~#2PkrtSsgAW)tXZuI\\v8L^Kwq%g]x ~i1x:M!{sP|f6TG|oWWV|H{Y|7[}C$Z} Ri|~ ~JMrNYa.Yy@[tӄypqsMerQXxsUUJuX;v-\ *wC^x0`~bZxolUcnjYW_o\.Iq6_!; rja*RsZdCt d~g!|mh]bRjx`V6l#cHmei:&ng)oi7p}i~l*l5df`fhThiGj6k9FkmM(ln]mnn~eqja#nF_cfoSedpFgr8hns"(mhsjs~.wi^v^`vwPRbwEd\x7ey'eyxhyg~0{h[K~]]~R` E6a 7c+'Gb/qff$~h%Y]D[Qy^ D_ㅉ6a)&`a&eTD0}gW-\Z3P\^6D"^2"6 _?j&g^ad8~5dz MZYzPN{TA|dW2t}LZ!~] ̀]xe{cEuTXvXLw[@*x]1y`S!zgb |b=jH~aq\W]r_Kta?/uc0ue vxg |yAgoV`md2VoQf4Jph>7qi0r~kYrl? 0vXl t_j\kUlm_Imin=,no/xoOpKoq sqny^vgFsTitHjutX\L`NOCS>7 Va(YVZ\q[i5~WxNS|MVBy`Yq6,\(^I3_C`nmVH{ZZLT|]@A{|_5>}_a'S~ck~d/eVs$U+waK1xc@VyUe4Xyg&zhzi/s}jox Tt9iGJ)uRj?Uv/l63bvml%w7nXGwn^Z{io|rS&q,pICroq>sdr2tsg%7t=stsbyCuRQnwx Hsox=py1qyk$qyr&yxJ{sQl'tGm=Xn1o$eoRBp:\x'Q%j?GolM|np3}6oh(q}}p"}pl ~pvUFy1t]=z-u3\zu'{vrzv |6vl{GFOv{lAUx5:W+>Z:[\Ґ^.i#yt=o}[4P]*_gd`a*c:nV}X<b3tid&)Det"fKfght;ˇi]2j(kkBk?kn0y;;)p)1p'wqyq熮qtS}:|w 1]w|'vew.wIwnz+: ~'0~O' ~1~\~.~mft2 $i 6 1^ 2Wy%Y !"#%#&D'f()*+-.(/H0i123457859Q:m;<=>?AB)CBD\EuFGHIJLM,NCOYPoQRSTUVX Y#Z:[Q\f]x^_`abcdfgh#i3jBkRl^mgnqozpqrstuvwxyz{|}~ˀɁǂф{pdXL@3& ֜ȝ|jWE3 תū}kYG6$ڷȸ~kYG5"ŵƣǑ~lYD.оѧҐyaI1ڲۘ}bG,{W3qHvU3sIa)\ Z,      !"#$%&'()*+,-./0123456789:;~<|=|>|?}@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdeefghijklmnopqrstuvwxyz{|z}o~dXMA5)ۈʉq`N=, ٖɗmZH6%ؤʥwog`ZTOLIFEDEFHJNRW]cjr{ĄŊƐǖȝɥʭ˶̿*7DQ^kyކߔ ,8CNYcjnoldVD/h 2 R e r xzzzyuph^RE7)4=@?:4 ,!#"#$$%&'()*+,-./|0p1d2Y3M4A566+7!89 ::;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}v~oiaZQH>5+! ؎͏Ðxpjc^YURPOOPRUY_fnx̰߱ 8Ql»!Ceª9^ɂʦ2TtҔӲ6Lat݇ޘߧoX\[VL=*b/fMq T p_L7! }tfUA, !"#$%z&d'N(9)%**+,-./01y2g3U4D526"7889:;<=>?@}AoBbCUDIE~% ہ‚rW; ϊ}bG-ޒēx`G/Ԝq_O?0"۬խЮ˯ǰı²µŶȷ͸ӹۺ 0@RfzƏǦȾ *GcЀџҿ'LsٛFsM6+1MZ:{OX͙~ʹ~y~eL~j~Qc=9~|4~cl@~]̳~nf~C~لOiZ/gP8v}6q}0}>ϲ:}i^},~"hN~uO 7A胬|.A|33|M|WE|ߓ}OgV}ьN~|M6g\7{cߥ{fǪ{ `{ɞi|+~|fn}CAN.}{5~zʸU/zDzCz{,a{}|$Ye|ȕM}5[~_wzRêzF2 z] z;{|{d|`L}5P4~=cyy@yz:z$| {[@dH|Lo|4}uyZy2yƔyj;zdj{w{ @c{̡L |34=}S~6׆}}p}UR*}u{}că~5Lx~5(=}p@kcyԃ-bKÂ4؂zGetMڽos ČX9wxʂʈaiJ͂&L43oۅO_tz莴r wA`ցNjdJh3\lԟ[7—vx`9Iue3${K͂:X2-{6 uȀ_JH䀯:2ՃsV/&ĤuU^THiS2`rփȥ$ƁWSJЀatk.\^)H;20T7Yn#s]ƞGЕV1||c|:;h|G|rʼni} ]}G{~2Q9*ǔR<6W[䂶q҈=\+3F遢1˄ڣ9Wr݌>WpxpЇh[HwFF1T4B،lkȉR9oهZ؊&Eo0샠ᤔÇ [ޘ:OnkY΅J4D=[05 ֵK\wʤĘRL~nY+ΒDsЌ0EڇDէи\Qڗݧ*mwzXbDsl0VŒj¦ψԖч{Ά=[l)X6NC'/тNA̩ՊMĠ'-7lgWԃٜmCx/O{Y{Q{F '{s~{ju|wV"}9B~P/BB̝ҹ<Ւ4 $~ӁiڍcUƋY1A7.zB!DE.Z.7} }iцJUAtp .!c˒ɒW|-Qh )TX@ۆ.e^fDi{ 3gQSm@]a..4ت`"סp 91zL fS6t@0-؆d VבAȣyf cRƈ?熏 -؄.eNĠ!|iDxFeDRk6?A -LŅq͒rƋwx{(e R?p-@ zɠz|zzur{Vb| P*[|=~ ,j;ӽp|Μsn%tŕb ǀO=n5,IY6ܟn웅φAusPaRPNل[= ,,ĻݔОD[ٚ̏~sd`TNf4<,è靎e!4ڔ&rٹޔVj)0Jp ^*L ;+Ņ􈉰(z&z ~z}HzjlJ!z[{J |9j})Ћį\RfԨف|PZk2"Z}Iʀ69!K)k9wkR{|GsGk]HYEsI 8䎛)ςϝ.4js2{{5j\pYTH`8n)GɬjԋIz,iX͕HTŊV8q*фDb7ɥR zi#fXVQH0k8Z* nԫ^D-yhTWGŐM8>*håڊʨly1hTW|Gj8*5%*؇TLdWɴ艴ux՜MAhF WxKGn/38*yǓyqb -RƇC`q:5ل(!ރ,ǘiq[LOa3R#C'Ή@4C(HaB%7y֙paDQ՚~UB84폿(in.֮z@ILp5`%QB֔4Ff(/\ ̀Ҥp^`žQqBT4(YϞM g<4˨s0p(Wd`PQ[HB 4ꎶ( Qy2yPxybiy[gzhL죡{O>|b1}%to<&؆ѻxE\i[~L,>1%܍2k3w+;iM"AZLb>-1@K&68P.TwOh~_t1S&HNBHƸyw3hzZ%XeK'T>k<1˒3&Nj„B]{vᖛhfғYK֟}>_ 1ݒU&RN:hvıQh?AKYإ/KĞ>X-1܉e',ƓM v͡Fh,YɤRK>UD1q'QZtvQh'9Y̤,KǞW>n20'onщ$yp{6y(nfhy/`췎ySxzND~}46~}y-z4*z{;24{Ё||vBd}.MU~6:hxYjxyxҪ^zzɈ}{d{c|_L}}[5L~?w31֮wȗxhبyyTzAzb{K|G4~ ivGUvޢrwާwxAMyy(zrb {K|,o4$}uoӿv'vͦצ7wϏ/xnxyia9z|J_{m3}u{ҝuv7$v=w䣍wQxs`z I{K33M|ˆhtqѰu'u¸{7v+`wqvx_yI^z2|t'tUAtɛLujnv$wux+_jy[Hz2|6♄x͍xxx8yd \z uz_{IU|3|~uႎ\?(e+kt 9^sHu2ZIQAAًnŀM>.s)]5GdX2Vݿ(%ǔ|B\PtKnr\1\Gņt1݀4DBAdz~{~ҝ~JA~q~[~ F{9m1t0~t~1c}X}Ӟņ=}ߚHp~ [9~V6E~Œ;1Q~2l}~\}^ǚ}C!^}Zo}Z}E~\0~ }Ė}:||ͭM|禛o9}-Z}E!~+0~f}J|'|5D|o;|Xn|դ`Y};D}ȓ=0c~tvٿ|wW-wݗ_x|yCmцz4Y{FD{|0Z~kud5<іZelgX@{C̄,/n*&T5ɇʕ4ЅkWm,C+w/ԁΉB7Ώˍvj3V|Bۅ/9K]́ih"4Ɇ~d1jUދBPy.ӄ[iLz6W b}yiGU]TA؋.l f3D^'DŽΧɃڢ|hsTفݓ=AWr~.'ʠǼcՐj{wh 2TiA .VΈ uͷ6,ׁEخ|lKe}v̊ c)bP‡>P,ńK'&t1uegFU7}EqЄ6L(z򂅤j?tqdȖJJTȊ;E%6(d(pcc`OޗCtN<9d<7TJ8DԎ'6ه(ϣ奖ԜVsϘcƕ"S푟 D5g(Nz]s]F+c_gSAD`5ۊ n([B?Hjr>c eSWD3_5ĉό(ٙltiNw@2Ǐ&z)"{ɪ{.ZblYLJ]b?N@GԄ2҃&GΓ\rys᥎qup[wF\x됔1zf۳n#o²apݻr;su~p`u [vwEx1Qza rÚs9(tN@uhdvpbw[3yNF>z1~|գ}f|r}|h}|}|~|oi~m}OZQ~}Ef]~71!~#{|(|`R|(e}kn\}pYq}D~p0uҞztDzi`{5n{.|mU|%X}%fD}焋0/~܂g.yƽyͩz9ݕz{-l[{tW|sC}L/~Ux٦y0ymByؚZzd}kw{W-{َC|ȊI/}ax5Lxz}xǦy4'y˜jzV{VmB|W/W}9whxxGx~ayKjzmVzBR{)/&}0ͯwj^\w_w趔xEZ}x$iyUz^- dƵ*% -6 v2~ٟxcG~̙P~Ҕ>p,Qtո1~_u~ob~iP[~}>2~,չwpFqLrІtsъiunaZvOx=Pz+|~Dy,yzC7zrJ{6`{Nl|[OLR;a^+ s6Z IMȈ 9-ەo`]L$;و4+ mvUjF|n)j] )FK2:؂fh*|HwT̡n\gK]Ғ :^*Rb!8†­)lmNj\a0K :kĎ *ځZo#+q NrQ{ҒsjCuYߎvIxf8dzs)|쪓xqx狏yX{eyj:/zYA{KH|,8H}B)5~×C,؀^z:Oir)X H7)'Ֆ+ňzey[HOh6YW*kG}7) ߁+KА]qxtfgOW`YG5X7]) Uܧ*rߗ1 וpwg) t%lǎۢv}Tf UF/Ґ 7) /ʥ#ޖ<׮ֆIjuNeD'UbsE놁6ۄ) wͣ o[pqq™ssJb4StR#vpCJx>4hqz_&|6w'xp}xq<`y'aByRzB{4A}&ˈ~Ďjiǚ`"pLa:~Q$BF4&H⟲ƍ~~[oՖI`sHQ CXB>&3'T"Ϗᛞ~,Hos_ߒkPxxAi3L9'*BD}ƒn~T_WPHhA3ɈH'@y̚Vn}2)m^ݑO.)A|,39#'S3~DZi|şPm^sO’AAŎG3ԉ'b@8Įڊ<|9n@m$H^FOJaAq3!'nߐo~pBvqhrYڜtKWv9=ʓx0ezN$|ېvڃlwCuʣwgɟxxYqyPKWDzR={r0j|$Љ~hy~yr~)uUk}gMl}Y`~KA~Z=m~03%ӏ`P^t_fĝadXeJTM=;0q%Q6vX¤yt?f1X7qJY%=Y0%=ÔGɒsːKe͎WЗ͋J‰<쏦0rl%!:-$0s>1+e[22W|5:Iݓ-<<׏30%҆צǟseW7.I_<0|%cōrjrrY?dΚ=V7IqD7<:01&WFnxaokƬq&^rQt1Eu8 w,8z="'|҄nvxJvxkw^ͦwQСxDky8{-%'|#0~SLM};w}|kh|^|Q}/DЛU}8~&-N3~#xX(.w\Mj~^-QJDVM8-o[#͉热0wChjF]̣QDvt8 -$YuvjSʍ]ԋP˝ˊDS@8do-$Rz嘞vj+P]N/P*D6 h8-i/$ ްivi릧|] PnDF8zB-ό$Yv;i5i]PX D 8ό-⌛$͇my0nem}oaεJpV r=JG\s>u3ʜw)z1 |yiuomua3vQV"GwJ_x'>ۡyg4z*|q!~>y>|m{aֲ{V {JU|R>j|4(}*U~" ym\aɁU׀JRX4EY*π~"y߀xm?saaUɅQJ-k>Y4`ɂ*ґH"֊8xƻ&Dm-gat؋UJ"ňG>y4zK+R##xlm$apU%2J >ʉ4Nq+2Q#b:]x am"]jasPU6Jn4>;?4ɉY+VB#݃x{&m'ꝑa|UJ$/?4Y+m臉#yڥqm*ƦsQnIJ+tpW uq釴w0sr&xuB\ywGm{y#2}{ضoxqkxrytOyuz4q"w=z[x{Fz|2%|}n[oQDqT{rށ5WtopvZwр=Ey1{4lnE ocqք sCunu Zv鄶EZx81D{QzӢkG}mŬ nprr;mt!Y?vDxJX0z2XjIlvmɛȖTo#q_lsVXuoGD?wJ0z;PikI mXMnşpl-r2WtڑCCw60[yφ"Јhjwlhqn'p kxr+-WUtdCovΎ{0'yuSh|jSHkēm8ojqVsgCvv/y,Szl$zm{(o,{qT"|Ls j|tV}vB~y/{`x/v}xw0Rx?z>-| 'qro(ksKLt?xufFdvRx11?y؍*-{®q*r ٝrܰsƪ'wotd]vL!QwΖS?=y$-{n`{kR݂m?o ^pvrcȁxtQrv>x,{Iuɀvc_vڈKFwu;xbDyP[]z>|,y}&~٪~ƙX~~6~~t~~b ~OZ~=,FII}t6}}}s}ᄯa0~%N~{=~,||9|`|{r|䊜`^}ENb}<~O+v{{ꕦ{'{ГOq|s_|M} <]}c+~жzؤzz͂{q{n_{1Me|x<}@+~- zK8fzZzdDCzfpSzᛂ^p{kL| `;|ۋ+}׆yWy*zy}zozk]zL{F;|+}ׯf;jNlYn~pGn)r#\)t#KWQvI:@x){sjt]u~vmOw[y JAzJ9ك{)}m |H}#[%}>}V}blo}[,}J-D~;9~)ւR (`)ᄡ|kqDZۂIX 95i)Ɓc,/͌ {qjzYUI#8J)v9?^zCi聱XY">H=8o)_ǚv͊{Hyi9X"HYT8o8)0w%dۂԁáyH hX .(G鏆8AҊ)ۅeăd<}E`UxhbWG48C))jNl?--nuvoeqUm sELv6 x'v{5s>teu t:vdꋍw?TډxE=y5dž{~'}Yl){I`{Ń{t|Ed(d|T<}DD}5~<'@~zۃHrtns$҂jcdPS؁DC_45Y'rX\#_r@ψbP6SC䅑5,CC'ȝ͍ڔ.Ӏڊqb\R0*C4'z)/[-rpވYbapLR+C͉1(%ۄyHgАvY4hPZckLA'>Ԇ1%3c0 v?th:YَK⊋=>g8o1&ƃ'惆uʑ4|gYRJK>)ċ1y"&$lO]Ψ?/^ugѠKgFEY*IKD=c-1c@&4%􈀦li|Qkom]bvIoGUqPG)s:fu.;x#!{Wql{rsoGsb#tTvG_w:Cy>.Oo{#y}1 x{kyEn̝Dyaz2TWfzG{:`8|.\z}#Ƈ~ĀJz͟ln a SMFƑ:7G.e$zf P[AE;Z1ٓ0U)Fj"0΂op~7f ![BPY_EE;T\1撠C)k"djpmfr=[M,1P\ǑES;`Ћ1')}"Ρmfni=pkqr^mtolVurX wtDyw'0|Yz>̾jqźjlr`ntpu0rnvgkbtgwWIv~yCtxz0b{x|bh|~j|l|^n|~pp|j\s}AVtu[}Bw}0z~l;fׇ i 9kDmh5})oviNqꂿUtXBEv=/yVǧeP{qgi卞|l{nohLp(TsuSAv@Z/ryX_dִ2f}}hƖMk/zmtLgdojT3rxAKuI/8xσ[c&5e[}gܞrQj.xylfoDSr d@u/x\ębp vdܫg%iwy3kyenbSq@to.wUad`RfWh-xkkemn)Rq\@?t@.wZtf4uhvjxxm0xyosekz.qR|{itP?|w-~zK'rp{sqԜu#svFtgwwtudxw*Qz%x?E{zb-}|Xpzr'zssj{@(t{vxv|cwy|Qy }>z}-R|~H(oYpq݃^s=uPt;bvSPPx <>Ay-|0m{opzrt?s^auQOw+T=y>,{¹luSmoou{psGrlatqOvk?=txj,{ @k mܖnlprxqؔM`WsNuȌ=&x,zj׫4lgmomqq0_s*9N uI_|2so|u]}@vLO}xT;"~z-*|Ly(x*yyr z$yzz~n{D{]{{K||r:}}?* ~%FwzKxx~yDQmz\'z݀K{Ҁw:^|0*~Tۮvvfw`\}xlx[^yᅜJzV:|<*}ktufvV|wkwZyRJz79{*}1Ь&tt̛ku}l{vDEjw7ZxUIy|9{*u|sh$ t$tӟ{2ujYvVYwɓI7y9Kz*h|ersMtTzuuiv>YwKHx9 zL*^|쥋|e;gȈDj,xl{hQnW3qWGrs7rv(jz\nSoqtwƂ\rg~tW v4Fw7#y(k|>wEhpx #xvyofz/VZ{Fh{6ۀ|(k~#H߀ SuezUF6(k^~ˆK~/Y~sIt~]Jd~dMU ~XE}~σY6_5G(k}\}1q}uvs}jd9}~Tv}E~6(~(k8e|ٚR|˜ |vs>|c|S} D}k 5~ (k~ǃJ|4ȑ|$|Cr{c|$Ss|Dj|5}(k~k{{ {4{r{yb{_S|D|5}By(k~!E1d鋩gl}݋hio:Al(`nPއq As3rv%zajmy!o}pnrE_zsPYuAw3Fy&!|0u߉v|1twmkx_^ÆkyFO˅zzDA6{U3|&>}ݖ"#~~G{& ~_lن~q^.~OJ[~@惑~2%&XIf5ˆWȅzG҅+ln]| NۃV@P2&nȔkɎcэZyދkIV\σ)NZ|)@Gꅎ2y&Dž xzj3 \7qMЋ@C2& G_2yxhj~[Ԓ!MnF?ƋJ2x&K:Ʉw i[SOdM#ǒ?Y2m-&(dg sYieߐkXnWJpc{"r}~zsIzgh{L[p{O|4B+|7;S}o,Ox~0"Յ~~vrf=BZܒNـB*7ij,\P#;}}~r4fxO"ZhNMBe@(78,iA#FaN}qǖ*lf Zۋ M2HB-7߅,yY#p9|qeےNYƐ*M}"A튘6؈U,ۅ#||(qW,esY!MANJje6Ç,}#5tPcjOf=_`rhTkHm=op2s(Hv "zbtu5k#jl_-$nnSjpDHrB=tytn2ݑOv)yL |triIs ^ٟtSuSHt#v=_.x02y)B{! }~st(o.w]^`cCcHlVf+;t)i0aldOȯ>tsw[-wnw\-_AMb0ke#SsShA!a7kO|o>#r -v0[Dn^aaShdL%rg{`j哟On-=rfv-vm3Zp]­ `܄cr f؝C` jRNnb=q-vBw~o`^q&ccrfBti quk_wInN1yq<{u8,-}pymjynlpptnRrp/qsr_;utMwv2u6x)Gz_юzb〾eqhbmk~Rր$nCq4u7&y7}Gh}kj}lp}oa~8qR7~sTC#*u4xA' {*{&q{{r~{t&o|2ug`|vQ}AxB}y4N~{.'|y6z?wyz}z!{Loz{`{?|9Q{|BZ|}R4%}}',~w݊|x%|xnnyH _JzP]zLA{3}'9~u)vNovꊍ{wqm9x+2^xOyA{^3|f'C}䁀uA؈u5zvElw>&]xOXy,ABz\3{Ѕ+'L}lltq5u#zUuŖkv{]cwhNx@yҊv3{U'S} sڤtyu01kvu:\vҕ8Nx*@y\3Wz'Y|u_wbviehͅhoZRkXLEni>[Wq0u<$yB˅h.j@ul^h,n{YpKуXr>ul0Ђx $ւ{!pQVqtՂs!g"yK펭gXwOiknjk_EmRekp'E$r9u&-Jw"ք{1ov勋pkTr ^!sQuE"v8腦x-Pz#|`vvwj/xV]y'QTzDąz8{-S}#U~Aq~0uQh~ri\~]BR~PM~Dzk~8"-Z\# ވ9tCLh?\8 PyBXDKh8-]r#LFt5^ hwZ\?O@OgC邡N8Z-ZqW#Ӂ ~؆'sh[ԃ4OC8 ^^-Y#~se"g[uOOCWq8-Sf$QUx3f_)m2bb!dW:gKoj?ln4}q})鉪u= hyPwfmFhbNjVmm͉/}4/U4+d *u"5wtjCԉ _w TYI=6>gg4+* "cjt<ѐlj)(_?JtTO}I o>-4* "(5sIi^SىHӇ؍"> %3*R"ӂmBo^cxaYZdcNgbDLj9ѓAm/qi&όKuByTlec4gYPj#NDlD6 o 9ؑq0[t'w{l1:lbnXoN^qCsp9ŐOu01 w'az|k|s0bt9XuLM"vwCw9y#09z'|A W}k8yalzJWzM{PCv{9~|09}j'~E "jʚրKa=LRWX:M@C69h0<'އ p0jm醤`f,WtMɄB9F0G!n'k!%j'*`V֓iLƑ Bǎ-^9]07(݃+!R|i`"IV˓Y;L`Bōu9*s0Pg(6oZ!v%pb^Y}s`P7cFѠf=ij48m+wqM#uETyUbdY/"fPgi0F\k=q nb4_qK+tZ$hhw-zak$XԥtlOšnxFpj=]wr4mt,1w@$Ō,y|sapqVX}rsOisFS#u =;v4mx=,W_z%{ }a#wxX8Ax!O)xFy=%z~4l}{,vG|%Q#}K~`ݤ]}X }Oq}E~= ~J4ui~,Q%Rυ`fzWANuEO<4u,~E% `v*W؟ON囨xE֗ĆJ<̅/4hׄ*,ۃ>%W D`YWӞNEӗp?|sk2}v%z0xtkumwvoiVw(qh[3xVsCLyu7?){#wI1|y%~|Eqtrruutvh{uUwZyvxLrxy{1{|U& }}Ǝo|q}Strh}gts}YuH~Kw~M>ox~1z~&%}=T"n!Hot pyfruXt4KSu> w1z:^&9|Zl΍|)nTrsVo͋!eqZXis(Ju=w-$1ky&J|$k•vmWrnڑempr/WrFJntYl=v1Wy{&X{Tj&lrAndogWq"J$s=[v1/x&c{imZ{8]o\2a\b~DdU/^h G΁k:o~.2s#lxA~bz~einh aAjTmcGfp=:Js@.|v#z.|`jy|lm}n`}\pS}rF~Qt:^~v.pyU#〽{z.rxztl{uM`.{v~SK|4wFt|y :}zn.g~{$}xDzwx{Ykyu{_Uz|ERz|F{};9|}.c}~f$<*vvwqkxS^xɁR&yEzF9{À.P}$_~XauzNv&vAjWv^wjQx@3P5i+U"Mv~h"la~sa~[VP~<"K~AG?~oy5L~+Z3"ǁ v)}rk}a}zU}bJ}tW?}5~,+_~"Zu|k|ד/`|ʑU|J`|ˌ?[}5}U+W~;#pu^Zf]p\ms`Qd6Fzg;ϊk1zMox'هsqxZo4a`fd [䍉fQL$iFtl};9o1r(pve >z#nheUj[LlPĊQnFq;|s1gv(B;x j1{n;odqZrP7t Eou;:Jwd1o-y9(b+{5 H}@m,vpc=w^Y6xAOy EI z:{1\|0(}=}_!~l䈺}McY}Yh}O-~D~U:~1\~(nZ!@lZbԆƒX׃YNڂDX:1nF(!qQkubXNUDu:I1K(Á*!kᐿbI9XmSNMHDA[:m1F(р!-eޛ1Y\\S`AI픟c@"gh6fkL-Wo_%Wsxbe"G`}\k?c)S.eIh?Xk6jo+-Wr%[vJzd'g,[ԕ?iLR3kI=m?pJ6VDr-u%x{dm[8KoPRYpH͏=r?d t62v-x%܆zc}csWt3ZuIQv`HXwz?$x6z-{d&|~[bzZ=K{:Q7u{Hw|+>p|5r}T-~&(~8rbY5PgGm>v~5؇n-n&Hi 7_b*φYSPG}>n5Ճ=- &h} f6$aYoP㊄Gf݈>r85Ɔ-̄lq& ځ[\XSP\1J垦_BHic&9f1',k )_koL"^s^xhZڢ_pRԟbJ}dBh9 kG1=|n)r`"ϋGv:>zZkeR^gJ!j8Al9^dom1ArM)׍ZuK#-xw†{Z kQmI1o[ApqR91sq1&ـX/zP[Hޔ8@ő=e8Ў1108*_K_$J[cXoP͖)aHɓ~S@8֍z1E*t$c,4i\U+2_Y&c]}Lf0`litd[lhK;pm(;tq,xv媋X_a\ob`3_eW|'cWhLkfkIZjnaJnq:s4u4+wy>UgiY>k\m~z`ojxdqYhsIm7v :@qx+w{vR=ssKVct&Zduy^lviSbwYgy I:kz]9p{+v7}BOw}BS}nX"}x4\d}h[`}XIe~>Hj~9o~+unM Q†=V8w=Zg}_]WdQEH8i9To +t"K)sOׅT*vzY@uf^WcCGhV9"nt+tiIN$!SMuXfD]7VbeGg8m+t+Hp7M{RK\upW!e\;8VXaGDgb8mr+scU5fiY:Ih]'ukxaeqn,dUqhF/t(m77+wq)[{Xw +`0^呣caEeetc0QgCnll05q)|v#bQ1MU"|YnM]Џ_b,,Qf֊Ckp5p)vMUPjT|Xsm\*_OaZPf!Bk)O5zp)uR[k5UVmYV{'n]=mpa^gsdOuLiASwmI3vzq&}w+g^jbiazl dlnLg]pjOsIn@vqk3Fy/u'&|yQdagx fixialkknB\npNuqpr@tut3#wx<'{{Satpad@qwfsWiit[lv5Mow@ s4yb2v{1'*z}.^y.[ayvfdzhg{%[j{Mng|l?r }&2u}'>z~ގ\ƁR_uwc h f1gZYi"Lm+?Rq2u)'Oyk]Zi{^MtagWdԇmYh]IL!l()?p* 2t}']x聫Y\t`L/fc'Y3g`!KkU>o}2ts'ix}ƌX|Y[7s_YvfJbҒXfKdj>n2Ks'rx'rU~LsYqqu)]Odva#WFx eIyiOr7)t.̂wY&y߂=|eǀq,\rS€t JWuz@߀w7sx.zN&Ł | *l}e~w\M5xS3OyIXzf@{j{77R|.}&E~ i dv}d~}[}~R~~Im~!@$~P07(~_.~' +c|([j|Rq|*I>}{@}U7}[.~='~k c{*[{ʊOR|#H|Q?|U6}.}'$~x W^㓈TVXN \fE%`a<~d3h*ˊm#Mr&w^[U^MwvbDep;ȋyi 3 l*dp#u yU]XgbUEddL=gD:jb;}md2.p+s#wl&z\hT jLClCȈo6;+q2̆t.+zv$0{y|e\ oT&pKErECKAs:5u28w+$Fy$aw{}[u uaS{~v|KGwBx:y2z+17|@$}+~Z{S |'Js|B|:n}w2~+GM~$<gZFpRJhTB\:4݀2P7+?$ہ2 Z3HHR'Jy B_τ:b2ZM+|߂$/TܜT#MZWE [>_6&d.`5h'Emm| r҈~wToRaX1R^DteA6lC*sJ>9Dz|JoP`V+R]LD,d}b6k^*rރK(f9k'y7oԃ-}t$ysyTJnXc]EXa@`MUeBj]7`o7-ct@>$ywlsQltWU+buYdVwU]KBxb?zf4|k*W~p!dvuoXkp\La.r_VtscJvbgC?Vx~k04zoO*l}Ds!xtkq`jmcj`4ofVUAqiKJtlX>vo4Oy!r*u{v" ~z{sLhh9igjju_llT|odnIlqqS>{ts4!wve*zy8"M}|/re)ohRgqs^ jsSmBtHpv)>*s2w4vfy*y{"} }q!bwvgexa]phy7RkpzH^nz=q{3uK|*x}"|`pS`k~fc\f5Rei@Gm1W=yp3tW*x("{р8o^f4a\AeAQh3Gxl=!oɂ3sY*w"{]2o9]$e`[deQgG.k%`[nb 5f,Mk$bCq5ՄvaCjWY[OPGJ^G6b=f4Ձ{j,[o8$sRqx`C|^X |aO}dF~.g=~kC4n,Z\rv$OvaIz[_Tye^W"zgN{j_E{l=|o4T}r,N~u% xI{^pvOlVNwnMxoEFyq<{t4|Nv6,B}x%0zkn}G]srUult!MGvunDx!vb.8XfH0j(fo "5sxV]IO;`uGc?vg7(j/nX(Ճr6"vFgzLUҁcNvfSF܂7i?#4k7P(n/,q(?u%"rxЂ{U)j Ml&F9nL>1p7 ar/u_(w"`z)}T_|p[M}qE~sz>-~|u6~v/Mx(z#t|ts~;SzvyL{wEB|{xt=} yn6{}z/k~2{)~|#D~!{3SAx|YLz/|D{&}-={}6@|}/:}R~x)~#o~RwqKxDz=qzX6U{/h||)'}c#~~NؓOHJSAqX:=\2av+#f%AzkqovM̐UGRY}@]_9}?aq2le+jO%lo RsGxM[F,_?Ռ)b8f2i+y1m%q [v/; z>LxaE|d?1g8{j1ɇm+eoqF%jt xM{Kڈ^gESj!>{l8o1q+\t%τwb }zA|KAmDƅo>@qn7Ąs^1s9up+cw%y!&| aN~JsDL t=v"7w{1Lx+Zmz&|![}~JLy/C炗y=z7V^{X1-|2+E} &2~!~ځ,I|~CR~=U~71l~1$0+T|&(!ĀTmft1!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92FJM`LrLڨPϦYǥdħoxƶ˳Я֫ݥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗92EJL`KqJڪMϩVȨaŪk¬u}ŶʲЫ֤ܚᚚᚚᚚᚚᚚᚚᚚᚚᚚᚚᚚᚚᚚᚚᚚᚚ82EJK`IqHۭJЬRɬ]ƯgñqyIJˬХ՝ړޓޓޓޓޓޓޓޓޓޓޓޓޓޓޓޓ82EJJ_HpFܯGҰNʱWȶbźlxŭ˧ϠӘ׏ڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏڏ82DKI_FoDݳCӶH̷Q\lxƩʢΛєԌ׌׌׌׌׌׌׌׌׌׌׌׌׌׌׌׌72DKG^DnA߸>ֽBJ¾\lxƥɞ̘ϑҊԊԊԊԊԊԊԊԊԊԊԊԊԊԊԊԊ72DKF^Bm>};yN_kzpwtuwsyr{q}poˀoˀoˀoˀoˀoˀoˀoˀoˀoˀoˀoˀoˀoˀoˀoˀoˀ )A$U5eFpTy{avhrnoqmtkwjyizh|g~g~g~g~g~g~g~g~g~g~g~g~g~g~g~g~g~9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@PUPeQuSڢ[РeȝpŜ{œºŸɶ̳ϲҭӭӭӭӭӭӭӭӭӭӭӭӭӭӭ9*F@OTNdOuQڥXѢbɟmşwžùǶ˳ϱԮקէէէէէէէէէէէէէէ9*F@NTMdNtOۧUҥ_ʣiŢt¡}øȵͱӮاڡ֡֡֡֡֡֡֡֡֡֡֡֡֡֡9*F@MTLdLtNܪSҩ[˦fƥpåzøɳϰիڠܛ؛؛؛؛؛؛؛؛؛؛؛؛؛؛8*E@LTKcKsLݭPԬX̪bǪlĪv~¸ɳϬգښܖؖؖؖؖؖؖؖؖؖؖؖؖؖؖ8*E@KSJcIrJްMհUΰ^ɰhƲsò|ɮϥ՜ڕّّّّّّّّّّّّّّܑ8*E@JSHbHqH߳JֵQжZ̸eʽq{ȦΝԔ؎یٌٌٌٌٌٌٌٌٌٌٌٌٌٌ8*E@ISGaFpFGٻNӿWcpyǠ͗Ҏׇه؇؇؇؇؇؇؇؇؇؇؇؇؇؇7*D@HREaDoC}DJTbnxǛ̓Њԃւււււււււււււււ7*DAFRD`BnA{BFRamxƘʐΈтӀӀӀӀӀӀӀӀӀӀӀӀӀӀӀ7*DAEQB_?l>x@FQ`mxŕȎˇ΂6*CACP?]Rcpzċņǂ5*BA?7J0R/U,h0BWgs|2*8=/E)H%R)l1EZit|~~~~~~~~~~~~~~~0*/8&<;#W*o5J]ku{~}{zyyyyyyyyyyyyyyy.*%0-A#Z.o<O_lt~x{{y}xvāuÃtÄs†s†s†s†s†s†s†s†s†s†s†s†s†s†s†$%#,F&[5lDzSb|lxquusxqzp|o~ǹm̂l˄l˄l˄l˄l˄l˄l˄l˄l˄l˄l˄l˄l˄l˄l˄ 1G,Y]?fCmMoNYfqyĆǀ|zyyyyyyyyyyyyy5"B7AE=P;Y69A4H3M6P6g;{HXgr{|zzzzzzzzzzzzzz2":43=.B/A.U3k;~J[is{}{ywwwwwwwwwwwwww1"31+6&6&A,Z3n=M^ktz}|zywussssssssssssss.!*+",-#G+]6oB}R`l~s{wx{v~tǀsƂqńpćnĊnËnËnËnËnËnËnËnËnËnËnËnËnË* "3#J.^FJFVHbKmOwU^lȷqw}Ɣɐˌ̊ɊƊƊƊƊƊƊƊƊƊƊƊ6C.F>EJEUFaIkNtU{ajĺpu{ŎȊʆˆɆƆƆƆƆƆƆƆƆƆƆƆ5B.E=DICTD_GhMpVudzinty~ĈDŽɀʁȂƂƂƂƂƂƂƂƂƂƂƂ5B.D=BHASB]FeMkXmazgmrw}Â}z{}}}}}}}}}}}}5B.B<@G>Q@YD`NcYg`yfkpv{}xvuwwwwwwwwwwww4A.@;=E;N>UDYOZQlZ}biqw~|yvtrrrrrrrrrrrr3A/=::C8J;OENF_KqR[fpx|ywvtttttttttttt3>.975?5D9EBHDRHZNaVgbmgmrx~‚ƒ3A&B3@=@GBOGWM]X``lf~kqv|}{}3A&A2?<>EAMESNVZW^kd}jotzzwtwzzzzzzzzzzz3A&?1<:IDMOMWV]jc{hmsx~ytqnqttttttttttt3@&<0989?%9.656::WEgKuS^h|qxwt}pȂnLJkŋiĐhĖfÞeåeåeåeåeåeåeåeåeåeåeå//*"$!# -55I4N?\JfUoy^urd{nk~jphueyc}bځ`ڄ_ه]؋\א[֔[֔[֔[֔[֔[֔[֔[֔[֔[֔[֔  !.,?7MDXOaxYhq_mjdqgjtdowbty`xz_{{]~|\}[~ZYXXXXXXXXXXX   $//==IIRxTZpZ_i_ddegaji^nk\rm[vnZyoX|pW~pVqUrTsStStStStStStStStStStSt'-49~BCwMJnSPgYUb^X^d[[h]Yl^Wp`VsaUvbTxbS{cR}dQdPeOfOfOfOfOfOfOfOfOfOfOf*(~82vD:mKAeQF_WI[]LXbNUfPSjQRmRPpSOrTNuTMwUMyUL{VK~WJWJWJWJWJWJWJWJWJWJWJW->L.S;WH\Tb`jkrv|䅄|yvsqonmlklţnƢnƢnƢnƢnƢnƢnƢnƢnƢnƢ->L.S;WH\Tb`jkrv|䅄|yvsqonmlklţnƢnƢnƢnƢnƢnƢnƢnƢnƢnƢ->L.S;WH\Tb`jkrv|䅄|yvsqonmlklţnƢnƢnƢnƢnƢnƢnƢnƢnƢnƢ->L.S;WH\Tb`jkrv|䅄|yvsqonmlklţnƢnƢnƢnƢnƢnƢnƢnƢnƢnƢ->L.S;WH\Tb`jkrv|䅄|yvsqonmlklţnƢnƢnƢnƢnƢnƢnƢnƢnƢnƢ->L.S;VG[Ta`hkpuz䇃߂~zwtrpnmll¤nĤoĤoĤoĤoĤoĤoĤoĤoĤoĤoĤ->K.Q:TGXS^_djluv~䊀߅ۀ|yvsqonmn§p§q§q§q§q§q§q§q§q§q§q§->J-O:QFVR[^aihtq~|߉ۃ{wtrpooqrssssssssss->J-M9OESQX\^herm|wߌۇց}yurporstuuuuuuuuuu->I-L9NDQPV[\fbqi{s}ۊքzvsqqtuvwwwwwwwwww->I,J8LCOOTZYe_ofyoyێևҁ|xussuwxyyyyyyyyyy->H,H7JBMMRXWc]mcwkuܒ~ӌ̆ƀ|yvvwyz{{{{{{{{{{->G,G7HAKLPVUa[kati~ޟsԘ}ˑĊ|zyz{}}}}}}}}}}}->F+F6GAIKNUS^Yh`qhz٥s͜zŕ~}}~->E+D5E@HILSR\Xe_mްivҩqȠx~-=D*C5D>FHKQPYWa^iڴisͬo¤v|-=C*B4B=EFJOOVV]`dԸgrȯmtz-=A*@3A2?;BBGINOWS^_˾dqjpv|~,=?(=1>9A@FEMIXK\^cphntz{xwz||||||||||,==';0<7?)F:MKUZ\hbwgm~svypŁjĉfÒbÜ`æ_ô_¨aaaaaaaaaa,51 .#-"3:.B@IPN_Ul\wc~jvqoyk΀g̈dʐbɘ`ɡ_ɫ_ɹ\â\â\â\â\â\â\â\â\â\â,0,'&- 73>EETLbRnXx}`vipqkxheцbύ`Δ^Λ]ͣ\ͭ[ͷ[ͷ[ͷ[ͷ[ͷ[ͷ[ͷ[ͷ[ͷ[ͷ,+$+&48>KGV}Q^vYen_jhendkraqt_vv]{x[yYzX|W}V~TSSSSSSSSSS   +06=@H}KQuTXmZ]g`bcfe_kg\piZtkXxlW|nUoTpSqRqQrPsPsPsPsPsPsPsPsPsPs־ "!..9:|DCtNJlTPeZT`_X]eZZj\Wn^Ur_Tv`RyaQ}bPcOdNdMeLfLfLfLfLfLfLfLfLfLf %1*|<4sF;jLAcSF^YIZ^LVcNThPRlQPoROrSNvTLyUK|UJVIWHXGXGXGXGXGXGXGXGXGXGX'{3$q<,hC2aJ7[P;VV=S\@P`ANdCLhDJkEInFHqFGtGFvHEyHD|ICIBJBJBJBJBJBJBJBJBJBJ( 9H%O1V=\IcTj^qhzp|wx}tqomkihgfeŒe͒fђhҒhҒhҒhҒhҒhҒhҒhҒhҒ( 9H%O1V=\IcTj^qhzp|wx}tqomkihgfeŒe͒fђhҒhҒhҒhҒhҒhҒhҒhҒhҒ( 9H%O1V=\IcTj^qhzp|wx}tqomkihgfeŒe͒fђhҒhҒhҒhҒhҒhҒhҒhҒhҒ( 9H%O1V=\IcTj^qhzp|wx}tqomkihgfeŒe͒fђhҒhҒhҒhҒhҒhҒhҒhҒhҒ( 9G%N1U=[HaSh^ohxp~xz~vspnkjhgffǔfДhГiДiДiДiДiДiДiДiДiД( 9F$M0T >(@0C8H?NEUK޻^TдdeŬksqx~' 7=='?/B6G0C4L6R?YQ¾`bfpl}rx~}xustwx¨x¨x¨x¨x¨x¨x¨x¨x¨' 588#9(<,B.L-O=WP^`doj|pv||vrommp§r§r§r§r§r§r§r§r§r§& 466!6%9'@&I(NNLVY]eco~jxvpnwhc·_ΐ[͚YͥWβV“VДWϕWϕWϕWϕWϕWϕWϕWϕWϕ& ,& '4#=3EBKPR\Xf|_ntfulmzfua}]܆ZۏX٘VءTجTطSɋS֋S֋S֋S֋S֋S֋S֋S֋S֋$ &  &2(;8CFKRR\|Yds^kjdpeluatx^|{[}YVߒUޚSޢRݪQݶQݿQݿQݿQݿQݿQݿQݿQݿQݿ!   &1,;:DGLQ|SZsY`k_fefjamm]tpZzsXtVvTxSyQzP{O|N|N|N|N|N|N|N|N|N|  ' 2.=;EE{MNrTUkZZd`_`gb\meYrgWxiU~jSlQmPnNoMpLqKrKrKrKrKrKrKrKrKr )!4.?9{GAqNHjTNcZR^`VZfXWlZUq\Sv^Qz_O`NaLbKcJdIeHfHfHfHfHfHfHfHfHfͻ, 7+zA4pG;hMAaTE\ZIX_KUeMRjOPnQNrRLwSK{TIUHVGWFWDXDYDYDYDYDYDYDYDYDY".y8%n>-fE2_L7YR;UX>Q]@ObBLfCJjDInEGrFFvGEzHC~HBIAJ@K?K?K?K?K?K?K?K?K?K $w-l3c:$\B(VI,QO/NU1KZ3H^5Fb6Df7Ci8Al8@p9?s:>w:={;<~<:<:=:=:=:=:=:=:=:=:=u$v5wCJ'R3Y>`HhR|oZwybshonlrjugxezd|b}a~`_À_ˁ^Ձ`ہbށc߁c߁c߁c߁c߁c߁c߁c߁u$v5wCJ'R3Y>`HhR|oZwybshonlrjugxezd|b}a~`_À_ˁ^Ձ`ہbށc߁c߁c߁c߁c߁c߁c߁c߁u$v5wCJ'R3Y>`HhR|oZwybshonlrjugxezd|b}a~`_À_ˁ^Ձ`ہbށc߁c߁c߁c߁c߁c߁c߁c߁v$w5yBI'Q2X=_HfQ~nZywbuiqnmskvhyf{d}cba`Ă_΂_׃aۃc݃d݃d݃d݃d݃d݃d݃d݃d݃w$x5|AH'O2V=]GdQlZ|tbxitoptlxj{g~fdba`Dž`Ӆbمd܅eۆeۆeۆeۆeۆeۆeۆeۆeۆx$x5~@G&N1U<[FbPiYqb{{ivprunyk}ifecbaˇbՇdڇeوgىg؉g؉g؉g؉g؉g؉g؉g؉y#y4?F&M0S;ZE`OgYna~xiyptvp{mjgedbÉbЊd؊f؊g׋h֌i֌i֌i֌i֌i֌i֌i֌i֌y#z4>E%L/Q:WD]NeXkati|pwvs|okhfdcnjcԌf֌hՍiԎjԎkԎkԎkԎkԎkԎkԎkԎkԎz#{4=D$J.N8TBZLaVi_phzp{wv|qmjgfeǎfԏhӏjӐkґlґmґmґmґmґmґmґmґmґ{#|4<C$H-L7RAXJ_Tf]nfwo态v{}uqnkihhϓkѓlГmДoГoѓoѓoѓoѓoѓoѓoѓoѓ|#}4;A#F,K5P?VH]Qc[kdumކ~u؀|zvromlkȖmϖoΖpϖqϕrϕrϕrϕrϕrϕrϕrϕrϕ|#}4:@"E+I4NEK2TC[Saahmnwtz{upmjiÜk˛n̚o̙o̙o̙o̙o̙o̙o̙o̙!+ 3214;?I0RBYQ`_fklur~xztojgdcd͘g͘h͗h͗h͗h͗h͗h͗h͗h͗!) 0.,/8 =H.P@XO^]dhjrpz{vt}nhda^]]Д`ДaДaДaДaДaДaДaДaД!( , (& (2 >G,O=VL\Ybehn{ovtu|m|hc_[YXWԎYӏZӐZӐZӐZӐZӐZӐZӐZӐ!'' !  0=F,N:UH[Ua`|gitnpmuvg|{b˄~^ʍZʗWʣUʯT˾SՆTوUىUىUىUىUىUىUىUى% /:"C1J>PJWT|^]tedlljftoa|s\لvYَyU٘{Sڣ|Qڰ}P۾}P|P~QQQQQQQQ  .9'B5IAPK{WSr]Zjc`dje_ri[zlWnSqPrNtLuKvJvJvKuKuKuKuKuKuKuKu !.9*B6JA{RIrWPi\VccZ]i^YpaUwcRfOgMiKkJlImHmGnFnFnFnFnFnFnFnFnӺ "/:+C5zL>qQEhVKa[O\bSWhVToXQuZN|\L]J_H`GaFbEcDdCdCdCdCdCdCdCdCdֲľ %2<)yE2oJ9gO?_UCZ[GUaJRgLOlNMrOKxQI~RGSETCUBVAW@X@X@X@X@X@X@X@X@XƸ  (4w<%mB,eG2]M6WS:SY=O_?LdAJiCHnDFsEDyFB~GAH?I>J=K$[D)TJ,PQ/LW2I\3F`5De6Bi7An8?s9=w:<|;;<9=8=7>6>6>6>6>6>6>6>6>|q$ h+_2W9Q?LF!HM#ER%BW'@[(>_)vF{M)|U3z]=vfFqnMmyTjZf_cbae_h^j\k[lZnYnXoXpXpYpZp]p]p]p]p]p]p]p]pj$i2 l>vF{M)|U3z]=vfFqnMmyTjZf_cbae_h^j\k[lZnYnXoXpXpYpZp]p]p]p]p]p]p]p]pj#i1 n>wE|M(~T3|\E%L.S8ZAaKiS|q[v|bqhmmiqfucxaz`{_|_}b}c~df߀g߀g߀g߀g߀g߀g߀g߀g߀o!o0 ~6<D$L-R6Y@`IfRnZ|yawhrnmsjwgze|c~bÀbӁd߁eނg݂h݃i݃i݃i݃i݃i݃i݃i݃i݃p!r/ 4;C"K+Q4W=]FdOkXu`|hwnrtnyk}hfee˄f܄hۅiۅkۅlۅlۅlۅlۅlۅlۅlۅlۅq!t. 3:C!I)N2T;[DbMiUs^ۂ|f|owurzoljiiĈi؈kوlوmوoڇoڇoڇoڇoڇoڇoڇoڇq v, 2:B G'L/R8X@_IgRڏp\чxfʁo|vw|tqomllϋn׋o؊p؊qىqىqىqىqىqىqىqىr x+ 09AE%J-P4V<\EܛeOғm\ʌufÆ}ov|}xusqppɍqՍs֌t֋t؊t؊t؊t؊t؊t؊t؊t؊s z* /9?C#H*N1T8\@՟bN˘k[Ñrfzow}}ywuttŏuԎvՍwՍw֋w֋w֋w֋w֋w֋w֋w֋s |) /8=A!F'L-R3ܪY?УaMƜiZpewov}~{yxxyӐzԏzՍ{֌{֌{֌{֌{֌{֌{֌{֌t~( .8<?D$J)Q.֮W>˧_MgZneun|v}~}}~Б~ӏ~Ԏ~Ս~Ս~Ս~Ս~Ս~Ս~Ս~Սt'.7:=B H$߷N,ѱU=Ǫ^LeYldsnzv|̑ӐԏՍՍՍՍՍՍՍՍu&- 68;?FڻK+ʹT<®\KcXjcqmwu~|}{ɑ|Ӑ|ԏ}Ս}Ս}Ս}Ս}Ս}Ս}Ս}Սu%- 568=EվI*ȸS;[JbWhbolut|{|yvtƑuӐvԏxՍxՍxՍxՍxՍxՍxՍxՍv$, 235:?H)ĻQ9YH`Ugamktszz{vronÐnӏpԎrՍrՍrՍrՍrՍrՍrՍrՍw", 0 /17 ;F'P8XG_Te_kirqxx~ztoliggՎiՍl֌l֌l֌l֌l֌l֌l֌l֌x!+, * + 29E%N6VE]Rc]igpovvy}|snieca`ҋc׋e؊e؊e؊e؊e؊e؊e؊e؊z )'$$'7C#L4TB[ObZhdnlytrs{xm}hc_][ZЇ\ڇ_ڇ_ڇ_ڇ_ڇ_ڇ_ڇ_ڇ_ڇ~& %5A!K1R?YL`Wf`zlgssmlzsgwb{^~ZXVUρVނX݂X݂X݂X݂X݂X݂X݂X݂ &6@I-Q;XH^R{eZskalrgfylaǁp]ƊtYƔvVşxSƬyRƻzQyQzS|S|S|S|S|S|S|S| &4? G-O9VD{]LsdTlkZfr_ayd\ԂgXԋjUԕmRԠnPԭoNռpMoMpNrNrNrNrNrNrNrNrع  ' 4>$G0N:zTCqZJiaPdhU_pYZx\V_SbPdMeKgJgIgHgJgJgJgJgJgJgJgJg ۱ʽ (5?&G1yN9pT@hZFa`K]gOXnRTuUQ}WNYK[H\F^D_C_B`A`A`A`A`A`A`A`A`ާ˶ +6@&xH/oM6gS<`X@[_DVeGRlIOrKKyMHOEQCRAS?T=U=VLh@InAFuCC|D@F=G4>3?3?3?3?3?3?3?3? y o( g0_7X>RDLJ"HP$DU&AZ'>_);d*:i+8n,6t-4z.3/1000.1-2-2-2-2-2-2-2-2 ujb!Z) S1M8H>CD?JwFxN(wV1t_:nhAjsHf~NbS_V\ZZ\X^W`UaTbScSdRdTdVdXdYeZfZfZfZfZfZfZfb$^/j5 t<zD|L'{T0w\9reAloHh{NdS`X][[^Y`XbVcUdTeSfTfVfYfZg[h\h\h\h\h\h\h\hc$_.m3 w:}BJ&R0|[8wcAplHlwOgTcY`\]_[bYdXfWgVhUhViYh[i\j]k^k^k^k^k^k^k^kd#a-p2 {8@I%Q.Y7|a@viHpsOlUhZd^aa_d]f[hZjYkYkYk[l]m^n_n`o`o`o`o`o`o`oe#d+s0 ~6?H$O-W6^>|fFvpNq{UmZi_ecbf`i^k]l\m\n]n^o_qaqbrcrcrcrcrcrcrcrf#g)w. 5>G"N+U3\_JeUl^sfzlrw|{wtrƒrڃsށt߀uuuuuuuo#+,,16ɻCM.V<]IdTj]qexkqvyzu~qnlkՂmށo߀pppppppq!)'&*5ĿAL-T;[GbRi[ocvj~|oxtsyo|khfeрfh~j~j~j~j~j~j~j~u % "3 @J+S9ZEaPgYm`~tgxzmrrmvhyd|a~_~_~_}b}c|c|c|c|c|c|c|x0 >H(Q6XB_MeVk]xrdryilngrbu_x\zZzYzXz[z]y]y]y]y]y]y]y} . ;F%O3V?]IcRxjYqp_kwdfiam]pYrVtTtStStTuVuVuVuVuVuVuVuٸ +9D"M/T;[DxbMqiSkoYev^`~b\‡fXhUkRlPmOmOlOnPoPoPoPoPoPoPoگͻ +9CK*S5yZ?qaFjhLeoR`vV[~ZWχ]Sϑ_PϜaNϩcLϸcKcLbJeKfKfKfKfKfKfKf ަδ¿ - 9B J*wP3oX;i_AcfF^nJZuNV}QR߆SOߐVMߛWKXIYHYHYGYF[F[F[F[F[F[F[ѭ¸ .:C!vJ*nP1fV7`\<[d@WkCSrFPzIMKJMHNEPCQBQARAR@Q@Q@Q@Q@Q@Q@QԥIJ$1~;tB lH'eO-^U1Y[5Ub8Qh;Mo=Jv?G~ADCBE@F>G4>3?3?3?3?3?3?3? v$n- f5_<XCSINO!JU$F[&C`'@f)>k*;r+9y-6.4/1001.2-3,3,3,3,3,3,3,3}rha'Z/ T7N>IDEJAO>U;Y9_6d4i2p /w!-"+#($'%&&%&%&%&%&%&%&%&xo d\T N'H/C6 ?< sHrQ&oZ.jc6enxqFs{MnSjXg]e`ccae`g_h_i`iajbjcjdieieieieieiei^#i"v#, 6>EL"S*Z2߅e;~mExvMtTpZl^ibgeehdjckclcldmflglhkhkhkhkhkhkhk_#k y"+4 <CJP&X.׊a:΄jE~sMy{Uu[q`ndlgjjhlgngogohoiojnkmkmkmkmkmkmkm_#n{!*2 :AGM!ږU-Ϗ^9ȉgDoM~wUy[v`sephnllnkpkqkrlqmpmpnonnnnnnnnnnnna!p~ )1 8 >DߠJӚR+ʓ\8dCmMtT~|[zawetirmpporosospsprqqqpqpqpqpqpqpqpc r'/6 ;@ڤFΞQ*ŗZ7bBjLrTy[`|eyjwmupssstsutttsuruqupupupupupupet&-4 7 =ԧDɡO)X6`BhKoSvZ~`e}j{nyqxswuwvxuxtxsxqxqxqxqxqxqxqgw$+03ܮ7 ϪCťN(W5_AfJmStZ{`ejn~q}t|u}|v|}v|}t}|s}|r}|q}|q}|q}|q}|q}|qiy#),/ײ4 ˭AL'U4]@dIkRrYy_dimq|tyvwvvvvtwsxrxqxqxqxqxqxqk{!&'ߴ)ҵ2 ǰ@K&S3[>cHiQpXw^~di~mzqvssuqvovptqsrrsqsqsqsqsqsqm~" ں!͸1 ´>I$R1Z=aGhOnWu]|c}hxltpprmtjuiuitksmqmqmqmqmqmqmqpӽȻ/<G#P0X;_EfNlUs[}zawfrjnnjqfsdscscreqgpgpgpgpgpgpgpsپ -:F!O-V9^CdLjS|qYvx_qclhhkdn`p^q]q]p^p`oaoaoaoaoaoaow׵ *8DM+U6\@bI|iPvoVpv[k}`fdbg^j[lXmWmWlWlZlZlZlZlZlZlZl| ح ͸ '6AK(S3Z<}aEvgKpmQjtVe|[`_\bXeUfSgRgRgQhShThThThThThTh ۥαŻ#3 ?H$Q.}X8v_?ofFilKdsP_{T[XW[T]Q_O`M`M_LaMbMbMbMbMbMbMb Ъŵ / <F~O)vV2o^9hd?ckD^sIZzLVʃORʍROʘTMʥVKʳWJWIVIXGYHZHZHZHZHZHZԢǯ !0 ;}DuM$nU+g\2bd7]k;Yr?UzCRڃENڍHLژJIڥKH۳LGLFLFLDOCOCOCOCOCOCOۚʩ %3 {<sDkK"dR(^Y-Y`2Uh5Ro8Ow;L=I?GADBBCAD@D@D@D@C@C@C@C@C@Cͣ (x2 p;iCbJ\P#VW'R^+Oe-Ll0Is2F{4C6A7>9=:;;:<9<8<8<8<8<8<8<8<|t&l0 e8^@XGSMOT KZ"Ha%Eg&Bm(@u*=}+:-8.6/40312212121212121212yog"`,Z4 T<OCJIGOCU@[>a;f9m6t 4}!1#/$-%,&+&*')')')')')')'~ukb[T&N.I5E< AC >H;N8S5X3^1d.j,r*z'%$#"!!!!!!~pg^ VOI C'?.:47:3?0D.I ,N )S 'X %^ #d !l t }L*H3O4T7ZA\JZTW`$Tk*Px/M3J6G9F;EC?B?B@AAAAABABABBADAFBGBGBGBGBGBGBM)J2Q2W6\?^I]SZ^$Wi*Su/P4M7J:HFNW&~a1xj:ssBo|HlMiQfUdXcZa\`^`_`_a_a_c_d_d^d^d^d^d^d^[ ht~#+4 ;CJڊT%Ѓ]0~g:xoBtxHqNnRkViZg\e_dadbdbdbebfag`h`h`h`h`h`h`]jw!)18 ?ݔGҎQ$ʈ[/ƒd9~lAytHu|NrSoWm[k^j`hchdhehdidjckbkakakakakaka_mz'.5; ֘C̓O"čX.a8iA~qHzyNwStXq[o_nbmdlflflfmendncnbnbnbnbnbnbao|$+1ݠ6 ќAǗM!V-_7g@nH~vN{}SxXv\t_rbqepgphpgqfrerdrcrcrcrcrcrccq!',ؤ2̟@ÚK U,]7e?lGsM{S}Wz\x`vcuftgththugvfueududududududet#ߦ&ҧ0ȣ>IS+[6c?jFqMxRW\}`{czf~yh{yizyiyzhzzfzyezydzydzydzydzydzydgv۫Ϊ/Ħ=HQ*Y4a>hEoLvR}W[_~czfw~hu}is~is~ht~ft}eu|du|du|du|du|du|dixծʭ-;FP)X3_bpC^wGZKVNSPPRMTLTKTKTJUJVJVJVJVJVJV֘ɥ(6 AyJrR&lZ-fa2ah7\oqHjPdX%__*[g/Wn3Sv6P9Lӈ;JӔ>GӠ?EԮ@DԿAC@D@BBADADADADADADјå }&u2n<gEaM\U W]$Td'Pk*Ms-J|0H2E4C5A6@7?7?7?6=8=8=8=8=8=8ơyq'j2d; ^CXKSRPYL` Ig#Go%Dw'A)?*=,;-9.8/7/7/6/6/6/6/6/6/{tmf&_/Z8 T@PGLNHUE[Bb@h=p:x8 6"4#2$1%0&/&.&.&.&.&.&.&yphaZ#T+O3J;FB CI @O=U:[8a5h3o0x.,*)('&&&&&&xlc\UOI&D.@4<;9A6F3L1Q .W ,] *d (l %u #! yk^VO IC> 9'5-23.8+=(B&G$L"Q W^enx        B-B2H2L6N<PGPRN_KkHw$E'B*A,?.?/>0=1=2<2<3;3;4;4;4<3<3=4?5?5?5?5?5?5C,D0J0N4Q:SFRQQ]Ni Kt$H(E+C-B/A0@1?2?3>4>4>5=5=5>5>5?4?6A7A7A7A7A7A7D,G.M.Q2T9WDVOTZQf Nr%K})H,F.E0D2C3B4B5A6A6@7@7@7@7A6A7A8C9D9D9D9D9D9E+I,P,U/Y7\B[MXWVc Ro%Oz*L-J0H2G4F5E6E7D8D8D9C9D9D9D9D:E;FH?J@J@J@J@J@J@G*P'X&^*c3f= fGdQ`[ \g&Yr+V}/S3Q5P7N9M;LK>L=K?KAJBLCMCNCNCNCNCNCJ(T$\#c(h0l; lDjNfXab%^m+[x0X4V7T9S;Q=Q>P?O@O@OAOAOCNENFPFQGQGQGQGQGQGM%W!` h&n.r8 rApKmTh^$di*at0^~4[8Y;W>U@TBSCRDRERFRFRHRIRJTJUJUJUJUJUJUJP#[dm$s+w5x>wGtPoZ"ke)go/cy5`:]>[AYCXEWGVIVJUKUKVLVMVMXMYMYMYMYMYMYMS ^hq"x(|1~: }CzLvWra(mk/it6e};b@`C^F]H[KZLYNYOYOZPZPZP[P\P]O]O]O]O]OValu |%.7 ?H}Sw]'rg0np7jxHQ%X._5f<}mAxtFs{KoOkRgUdXaY_Z_Y_Y_XaWaWaWaWaWaWo  ߍҘʢ© /<FO#V,]3}d9wk?rqDnyHiLePaS^U[WZXYWYWYV[U[U[U[U[U[Us ̜ؑå ,9DM T)}\0wb6qi|HuP!oX'j_-ee2`l6\t:X|>UAQDNFLHJHIHIHHIHJHJHJHJHJHJΔ¡ /{; tEnNhV!c]'^d+Zk/Vr3S{6O9LG?F@E@E?DACBCCCCCCCCCC֍ƛ y*r7lBfKaS\[Xb#Ti'Qq*Mz-J΃0HΎ2EΚ4CΨ5Bθ6A5A5@7?9>9>9>9>9>9ʖx sn&h3b> ]HYPUXQ`NgKo Hx#Fށ%Cތ'Aޘ)?ަ*>ߵ*=*=*<+;-:.:.:.:.:.vnic'^2X;TD OLLSI[FbDjAr?{<: 8!7"6#5#4#4#4#4#4#4#4#uid^Y&T0O8K@GG DN AU?\A;G8N5T 3Z 1a /i ,r *} (&%$#""""""sgYSMHC?&:-73390?.D+J)P'V$]"e ny         tgXMGB <840%,+)0%5#: ?DIOV^hr~      9/<0A1D4D:DEEQ C]Ai>v<:9 8!7#7#6$6%6%5&5&5&5&5&6&6&6&6'6(6(6(6(6(9/>/D/F2H8HCHO G[DgBs?=$=%=&<'<(;);););*;*;)<)<*;+;,;-;-;-;-;-<-D)J)N,Q4R>RJ PUMaJmHxE"C$B&A'@(@)?*?+?+?+?,?,?+?,?->/>0?0?0?0?0?0@*H&N&R)V2W<WG UQR]PiMt J#H&G(F)E*D+D,C-C-C.C.C.D-C0B1B2B3C4C4C4C4C4C'K#R"X'\/]9^C [NXXUdRo Pz$M'L)J+I-I.H/G/G0G0G0H0G2G4F5F6F7H7H7H7H7H7F$O V]$a,c5d@ bJ^T[_Xk Uu%S(Q+O-N/M0L1L2K3K4J5K5K6J8J:J:K;L;L;L;L;L;J!S[b"g)i2j< hFePa[^f [q%X{)V,T/R2Q4P5O7N8N9N:N:O;N=N=N>O>P>P>P>P>P>MV_g l&o.p8oB lKiWebal%]v*[~/Y2W5V7T9S;SR?R?R?RARASASATATATATATAPZdlq#u*v3v= sGoSk^fg&cq+`y0^4\7Z:YW@VBVCUCVDVDWDWDXDXDXDXDXDXDS]hpv z&|.|8zD uOpZlc&hl,fu1c}5a9_<]?\A[CZEZFYGZGZG[G[G\F\F\F\F\F\FU`ktz")ނ3@ zLvVq`%nh,kq2hy6f:d=b@`C_E^G^I]J]J^J_I_I`H`G`G`G`G`GXcnw~#և.̃= I{Sv]%se,om2mu7j|;h>fAeDcGbIbKaLaLbLcKcJdIdIdIdIdIdIZfqz݋Ћ,Lj; GQ{Z$wb+tj1qr6oy;m?kBiEhHfJfLeMeNfNgLgKhKhJhJhJhJhJ\ht}֏ˎ*Œ8 DOX#|`+xh1uo6sv;q}?oBmElHkKjMiNiOjOkNkLkKkKkKkKkKkK^kv ۏ Вǒ'6BMV"^*}e0zl5ws:u{>sBrFpIoLnN}nO{mPznPyoNyoMyoLyoKyoKyoKyoKyoK`m y ۋ ԑ ̕•%4AKT!\)c/~j5|q9zx=xBvEuI|sLyrNvrPurPsrPtsOtsMtsLtsLtsLtsLtsLtsLbo { ކՎϔ ǘ#2?IR Z(a.h4o9v=}~A}{EzyIvxLswNqwPovPnwPnwOnwNnwMowLowLowLowLowLd r ~ڈАʗ›!0=GPX'_-f3m8t={{AxEtHq}Km|Nk|Oi{Ph|Ph|Oi|Ni|Mj{Lj{Lj{Lj{Lj{Lf uԋ˓Ě.; ENV%],d2k7zrmBiFeIbK_M^N\N]M]L]K^K^K^K^K^Km|Ոʒ )6 AJR!~Z(y`.tg3on8kuQ@OBMCLCLCKCKDKDKDKDKDKD}ϋ–-}9 wCqLkSfZ"ba&^h+Zo.Vw2S5O8L:JE?E?E?E?E?ڃǑ {(u5o@ iIdQ_X[_ Wf$Tn'Qv*M-J0H2E4C4B5C4B5A7@7@7@7@7@7΋{tp"k0f<aE \NXVT]QdNlKt"H~$EȈ'Cȕ(AȢ*?ȱ+>+>*>+=-<.<.<.<.<.ē{pg d`*\6XATJ PR MZJbGiErB|@؇=ؓ<ء:ٰ 9 9 9 8"7#7#7#7#7#{pe]ZV'R2N<JDGMEU B\ @d>l;v9754221111111{ocXTQM&I/E8A?>G94 0,)&""',16<AHOW a l y 116.:/;2;9;C9O8\ 6h 4t2100//.........//......3/9,=->0?6?A=M<<;::9999999:9!9#9$9$9%9%9%9%<'C#H"L&O/P9NCLO J[HfEqC|BA@?? > >!>!>!>!>!?!>#=%='=(=(=(=(=(=(?#G LQ$U,V5U?SJ PVNbKmIwGFE D!C"C#C#B$B$C$C$C%B(B*B+A+A,A,A,A,A,C JPW![(\2[;YF VQT]QhOrM|K J!I#H$G&G'F(F(F)F*G*F,F.F/F/F/F/F/F/F/FNV\`%b-b7`A]L ZXXcUnRwP"O$M'L(L*K+J,J-J.J/K/J1J2J2K3K3K3K3K3K3JRZaf!h)h2g<dH aT^^[iXr V{$T'R*Q,P.O/O1N2N3N4N4N5O6O6O6O6O6O6O6O6MU_fkm$n,m6kCgOdZ`d]m"[v&Y~)W,V/U1T3S4R6R7R8R8R9S9S9S9T8T8T8T8T8OYcjort&t1q?mKiVf`ci"`q'^y+\.[1Y3X5W7W9V:V;VZ?Z?[>[>\=\<\<\<\<\`>`=`=`=`=Wb l t z ~ ҁȁ'6|B xMuVr_"of'ln,ju0h|3g6e9db@bBbBbCcBcAd@d?d?d?d?d?Yd n w}Ԃ ̄Å$4@ |KyTv\!sd&qk+or/my3k6j9h I}RzZ wa&uh+so/qw3o~6n:m=k?|kByjCxjDvjEvkCvkBvkAvl@vl@vl@vl@vl@] it|ЃɈÊ /< GP~X|_%yf*wm.ut2t|6r9|q=yp@voBtnDrnEpnEpoDpoCqoAqo@qp@qp@qp@qp@_kvˆŋ -: ENV]$~d)|k-zr2}xy5zw9wvf~Ac~Ca}D`}D_}C`}B`}Aa}@a}@a}@a}@a}@gtLj&3? HPX z_%ve*rl.ns2j{6f9c<`?]A[BZCZBZA[@[@[?[?[?[?jx̓Œ#1< FNzVu]#pc(lj,hq0ey4a7^:Z=X?V@T@T@T?U?U>U>U>U>U>o|ȇ .9 CyLtSoZ ja%fh)co-_w0[4X7U9R;P=O=O,=-=-=-=-=-ljsj gc(_5[?WH TP PXM_JfHnExBÂ@Î>Ü<ë ;ü!:!;!9"8$8$8$8$8$uj^YW!U.Q9NCKLISF[ Cc Ak>u<р:ь8њ6ѩ5ѻ45433333uj^TL JH&F2D<BE?M=U;]9f7o 5z 3 1 0..--,,,,,vj^SIEB@$=.:68>6F3M1U/]-e+p){(&%$#""""""wj]QF?<96 3(10.6+=)D'J%R#Z cn{xj]PD:52 .+(!&'#- 39?EMU_jx       yk^PC8/+'$!#(-28? F OYer,/0,2,30160A/M-Z+f)s(~ ' ' ' & &&&&&&&&&&''&&&&&&.,3)5*6-645?3K2W0d.p ,{ , + +****)))))**+***))))1)6&9&:);2;=9H7T5`3l 2w 0 0//.........//.......4&9#=#>&A/A9?E=P;\9h 7s 6~5443333333334332322228#= AE#G,G6F@DLAX?d >o>=========< qInRl[ibgj"fq%dx(c+a.`0_3_5^6^8^8_7~_6~`5~`4~`4~`4~`4~`4U`ipuxz{z/x<uF sPpXn`kg!jn%hu(g|+f.d1c4c6|b7zb9yb9xc8xc7xd6xd5xd5xd5xd5xd5Wblsx{} ~~,|9yD wNtVr]pd nk$lr(kz+j.~i1{h4xg6vf8tf9sf:rf9rg8rg7rh6rh5rh5rh5rh5Yenv{ *7}B {KxTv[tb ri$qp'~ow+{n.xm1vl4sk6pj8nj:mj:lj:mk8mk7mk6mk6mk6mk6mk6[gqy~ (5@ I}R{Yy`wg#|un'ytu*vs}.sr1pq4mp6ko8io:ho:go:go8ho7ho6ho6ho6ho6ho6^jt|%3> GPW~^{|e"xzl&tys*qx{-nw0kv3hu6ft8ds9bs:bs:bs8cs7cs6cs6cs6cs6cs6amw#0<ENU{\wc!sj%oq)l}y,i|/f{2cz5`y7^y8]y9\y9]y8]x7^x6^x5^x5^x5^x5dpz .9C LzSuZqa nh#jo'gw+c.`1]3[6Y7W8W7W7X~6X~5X~5X~5X~5X~5ht~+7A yItQpXl_hf!em%at(^},[/X1U3S5R5Q5Q5R4R4R3R3R3R3ly '~4y>sG oOjVf]cc_j"\r%Y{(U+R.P0N1L2L2L2L2L1L1L1L1L1q~|#w0r;mD hLdT`Z]aYhVp!Sy$P'M)J,H-G-F-F-F.F.F.F.F.F.w}wso,j7eAaI ]QZXW_SfPnMvJ!H$E&C'B(A'A'@(@)@)@)@)@)~ul ie'a3^=ZFVN SU P\McJkGtE~B@> < < < ;!:":#:#:#:#yma]Z X-T8QBNJLRIY F` DhAq?|<:8767554444{ocXP ML%J1G;EDCLAT>\=<&;19;8E6M5V3^1h0s.,ۍ*ܝ)ܭ(('&& & & & ~qeYMC:5 31 0*.3-<+D*L(T']%g#s" reYLA8/- +(&$$+"2!9AIQZersfYK@5,&$ !"(.5<CL V b ougZK?3)!  # (.5=FQ]k{',**+**.&4%?#K!X dp{     )*,'.'-*,2+=)I'U%a#m"x"!!!!!!!!!!!!!"" " ! ! ! ! ! ,&0$1#1&2/1:/F-R+^)i(u''&&&& & & & & & & & ' ' & & & &&&&/#3 57#8,876B4N2Z0e.p-{-, , , + + + + + + , , , , ,,,,,,,37:= ?(?2=>;I9U7a5l4v3 2 2 2 1 1 1 1 1 1 2 2 2111111117;?CF$F.D9BD?P=\FJDVCbAl @u ?~ >==<<<;;;<<<<<<<<<<>DJOQR#Q-O8MEKQI\Gf FpExDCBBAA@@@@AAAAAAAAABG OSVWV%U1S?RLPW Na LjJrIzHGGFFEEEEE F!F!F"F!F!F!F!F!EK S W Z[ZZ+Z;XHVS T\ RePmOuN|MLKJJ!I"I#I$J$J$J%K$K$K$K$K$K$H OV[ ^ ^ _`'_6^C[N YXWaUiTpSxRQP O"N#N%N&N'N'N'O'O'P&P&P&P&P&J SZ_bc ce#e2c@aK ^T\][eYlXsVzU T"T$S&R'R)R*R*S*S)T)T(T(T(T(T(LV]cghhj i/h<eG cQ aZ_a^i\p[wZ~!Y#X%W'W)V+V,V,W,W+X*X*X)X)X)X)OY`gjllmn,l9jDhN fWd^be`l_s^{!]$\&[([*Z,}Z-|Z.zZ.z[-z\,y\+z\*z\*z\*z\*Q[djnpp qq)p7nBlK jTh\fceicpbx!a$`&}_){_+x^-v^.u^/t^/t_.t_,t`+t`+t`+t`+t`+S^gmqss uu't4r?pI nRlYj`ighnfu!}e}$zd&wd)uc+rb-pb/ob/nb/nc.nc-nc,nc+nc+nc+nc+U`iptwwxy$x2v=tG rOpWo^md}lkzks wjz#ti&rh)og,mg.kf/if0if0ig/ig-ig,jg+jg+jg+jg+Xclsxzz{|"|/z;xE wMuUs\{rbxpiuop rnx#om&ml)jl+hk.fk/dj0ck0ck/dk-dk-ek,ek,ek,ek,[fov{~~-9}C {K ~zSzxZvwasugptnmsv"jr&hq(ep+bp-`o/_o/^o/^o/_o-_o,`o,`o,`o,`o,^iry+6@~I yQu}Xr|_n{ekzlhyt"ex}%bw'`v*]u,[u.Zt/Yu/Yt.Yt-Zt,Zt+Zt+Zt+Zt+amv} (4~>yG tOpVm]icfjcr `~z#]}&Z|)X{+V{,T{-S{-Tz-Tz,Ty+Uy*Uy*Uy*Uy*eqz $}1x;sD oL kTgZdaah^p[x!X$U&R)P*O+N+N+N*O*O)O)O)O)ju{!w-r8mBiJ eQbX^_[fXmUvR!O#M%K'I(H(H'I(I'I'I'I'I'o{~wso)k5f?bG_O \VX\UcSkPsM}JG!E#D#C#C#C$C$C$C$C$C$utn jf%c1_;[DXKUS RZ OaMhJqG{DB@>====<< < < |{oc_\Z+W6T@QHNOKW I^ Ff DnAx?<:988776666sgZS QO$M0J:HCFKDRAZ?b=k :u 8 64321100000ui^SGCB@'?2><5-% $#"%!. 7@JS^jx{naTH=3*" &-5=FP[i x }obUG;1'  # ) 08ALXfwqcVH:/% #*2<GTcs")#'#( +1=IVbnx$'&$&$$'"/ :FS_ju'#) ) (#)-'7%C#O![fq{+--. /)/4,?*K(W&b%m$w############$$$$$ $ $ $ $ .1256%6/4:1F/R-],h+r*{***)))))***** + * * * * * * 258;= <*;59A6M4X3c2m2v11000//// 0 0 1 1 111111169>ACB#A.>:=Ft ={ = < <<;;;;;;<<<<<<<<= BH K LLJJ,K;JHHSG]Ff Dn Cv C}BAA@@@@@@AAAAABBB@ FLOP O OQ'Q6PCONMXLa Ji IpHxGGFFEEEEEEFFFFGGGBJPTVU UV"W2V?TJSTQ] PdNlMsLzLKJJIIIIJJKKKKKKEMTY[[Z[\.[;ZFXPVY U`ShRoQvP}PONNNN N!N!O O OPPPPGQX]``^ `a*`7^C]M[U Y]XdWkVrUyTSSRR!R"R#}R#|S"|S!{T!{T {T {T {T JT\addc de'd4c@aJ_R ^Z]a[hZoYvX}XW}V {V"yV#wV$vV$uW$uW#uX"uX!uX!uX!uX!MW_dghghi$h2g=eGdO bW a^_e^l]s}]z{\y[v[!tZ#rZ$qZ%pZ%o[%o[#o["o["o[!o[!o[!OZbgkljkl!l/k:iDhM fU e\db}bizbpxaxu`s_p_!n^#l^%k^&j^&i^%j_$j_#j_"j_"j_"j_"R]eknonopp,o8mBlK jR ~iY{h`wffufnreupd~mckc"ib$gb%eb&db&db&eb$ec#ec"ec"ec"ec"U`hnqsqrst*s6r@pH}oP ymWvl^skdpjlmiski|hhfg!dg#bf%`f&_f&_f&`f$`f#`f#af"af"af"Xckquwuv wx'w3v=|uFxsN urUqq\npckojinqfnzcmal!_k#]k%[k&Zk&Zk%[k$[j#\j"\j"\j"\j"[fnty{yz {|$|1|{;wzDsyL pxS lwZivaguhdtoasx^r\q Zq"Xp$Vp%Up%Up%Up$Vo#Vo"Wo"Wo"Wo"_irx}~!{.w9rBnJk~Q h}Xd|_b{f_zm\yuYxWxTw!Rv"Qv#Pv$Pv#Pu#Qu"Qt!Qt!Qt!Qt!cmv}}yu+q6m?iGeO bV _\\cZkWsT}QO~M~ K}!J}"J}!K|!K{ K{ K{ K{ K{ gr{|vrn'j2f<cD`L\S ZZ WaThQqOzLJHFEEEEEEEEmxtn if"c.`8\AYIVPTW Q^ NfLnIxFDB@????????s~{le`][)X4U=REPMMTK[ Hc Fk CuA><:99998888zuh[V SQ#O/L8JAHIFPCXA_?h=r :} 8 6433322222ymaUKGED'B2A;?C=K;S9[7d5n3y1/.- ,, + + * * * }qdYMB; 875)423;2D1L/U.^,h*t)'&$###""""sg[OD:0* ('&'%0$9#B"K!U _lz͊͜ήuh\PD90(  "+4=HS_m~ߑ wj]PD8.%   ! ) 1 ;EQ^nyk^QC7-#  %.7BN]n{m`RD7+!  !)3>K[l&$%'.:G S _ k u           #!!$,7DP\gr{""! )4@LXcnw%&$%&%$0!;HT_is|)*),,!,+)7'C%O#Z"d!n!w!!!    !!!!""#######,.0332%00.<,I*U*_)i)r(z(((((((((()****** * * 02 6 8975(352B2O1Z1d0m0u0|/////////00 0 0 0 0 0 0 0 3 6< > =<99-:<:I9T9^8g7o7v6}6655 5 5 5 5 5 6 6 6777777;@BB ?>@'A6ADAO@Y?a>i=q=x< < ; ; ; ; :;;;<<<<<<<:@EHHF EG"H1H?GJFTE]DdClBs Bz A A @@@@@@@AAABBBB<DJNOMKMN-N:MFLOKXJ`Ig Hn Gu F|FEEEEEEEFFFGGGG?HOSUSQ RS)S6RBQKPTO\Nc Mj LqKxKJJIIIIJJ~K~K}K}K}K}KCLSXYXV WX%X2W>VHUQTXR_ Rf QmPtO{ONN}N{MzNxNwNwOvOvOvOvOvOFPW\^]Z[\"\/[;ZEYMXUW\ Vc UjTq~Tx|SzRxRvRtRrRqRpRpSpSpSpSpSpSISZ_ba^_``,`8^B]K\R[Y Z` }Yg{XnxXuvW}tWrVoVnVlVkVjVjWjWjWkWkWkWLV^beebbcd)c5b?aH`P}_W z^] w]d u\ks\rp[{n[lZjZhZfZeZeZeZeZeZeZeZeZOYafhief gh'g2f=eF{dMxcT ub[ raa paim`pk_yi_g^e^c^a^`^`^`^`^`^a^a^a^R\dillij jk$k0~j:ziCvhKsgRpgY mf` kefhdnfdvdcbc`b^b\b[b[b[b[b\b\b\b\bU_glpolmno!}o-yo8unArmInlPkkW ik^ fjedilait_h~]g[gYfWfVfVfVfWfWfWfWfWfYbjpsspqr|sxs*ts5ps?mrGjqNgqU dp\ boc_oj]nrZm|XmVlTlRkQkQkQkRkRjRjRjRj\fntwvuvzwvxry'oy2kx<hxDewLbwS_vZ ]ua ZuhXtpUsySsQrOrMqLqKqLqLpMpMoMoMo`jrx{zzz{t| o~l~$i/f9bB_~I]}PZ}W W|^ U|e R{nPzwNzKyIyHxFxFxFwGvGvGuGuGueow}~sl he b,_6\?YFWNTUR\ Oc Mk KtHFDBA@AA~A}A}A}A}ju}yjd`]['X2U;SCPJNRLYI`Gh Er B}@><;:;;;;;;q{se\W TR"P-M6K?IGGNEUC]Ae>o <:9)827;5C4K2S1\/f-q+*('&&%%%%%xk_SH=4/-, +)*2):(C'L&U$_#k"x {nbVJ?5,$ &/8AJUaoƑǤǹ~qdXK@5+#   ! * 4 > I U brԄԘԫsfYL?4*!    (1<GTctuhZM@3(  %.9ESdvwj\O@3'  *5CRcv#!! $ +7DQ]hr{ ) 4 AMYdnw%0=I U ` j s |   ",8DP[fow""!"" '2>KV`jrz&% ( )(& $+!8 DP[emu}   !"""#####) *./ -+("&/&='J'U(_(h(o'w'~''''''((())******-0342 .,.(/70D0O0Y0b0j/q/x///...///00011111058:95 46"818?8J8T7]7d6l6s6y55555555 5 6 6 7 7 7 7 7 3:?BB>;>?,?:?E?O>X=_=g^qF\pMYpTWp[UobSoj Pns Nn~LmJmIlHlGlGlHkHkHjHjHj^gnrrqzqqrktfucv`w(^w3[x<YwCVwKTwRRvYPv`NuhKuq It| GtEsCsBsAsBrBrBqCpCpCpclsvuvuvixcz^|\}Y~$W/U8S@PHN~OL~VJ~]H}eF}nC|y A| ?{ >{<{<{v;9 8 6 6 6 6 6 6 6 6 ox~wk^UNJHG%E/D8B@@G?O=V;_9h7s5310////// / v}peZOFA >=;(:19:7B6J5R3Z1d/o-{,*)(''''''~vj^TI@7210!.*-2,:+C*K)T(^&i%v#" }ocWMC80($#!! )1:BLVao~uh[PE;1' &.7ALW e t zl`SG<1' $,6@LYhy̌˟˳|obUH;0&  "*4?KZj}ݑݤ޶qdVI</$  '1=KZltfXK=/$  #.;J[m  (5ANZenw %1>JVaks{  "-9FQ\fow~( 4 ALWajrz   ".:F R \ e m u |   &3?KV_how}""%$! *8EPZbjqx~   !!""#####%(*+(! !$$%2&?'J'T']'d'l'r'y'''''(((()******(.353-*-.,/:/E0O/X/_/f/m/s.z.....///0011111-5:=<73 46'747@7J7S6Z6a6h5o5u5|555555566777772;ADC?; ;<"=0=;=E=Nk >k `inmmxmlnap[rVt RuPvNw'Lw1Kx9IxAHxIFxPDwWBw_@wh>ws<83245*555@5I5P5W5^5d4k4r4y4~4}4{5y5x5w6v6t7t7t7t7t75=BDB>98::&;1;;;D;L;S:Z~:`}:g{:ny:uw:~v:t:r:q:o;n;m;m<l<l<l<l<9BGHFC?> ??!@-@7@@}@H{@Oy@Vw?]u?cs?jq?rp?zn?l?k?i?h?g@f@f@e@e@e@e@>FKLJGCCCD~D){E4yE=vEEtDLrDSpDYnD`lCgkCoiCwgCfCdCbCaD`D`D_E_E`E`D`DAINOMKGGG|HxH&uI0sI:pIBnIIlHPjHVhH]fHdeHlcHuaG`G^H]H[H[H ZHZIZIZHZHZHELRQPNJJzKvLrL#oL-mM6jL?hLFfLMdLSbLZaLa_Li^Lr\L|ZLYLWLVLUL UL ULULULVLVLHPUTSQMzNuO pOmP jP*gP3eP<cPCaPJ_PQ]PX\P_ZPgYPpWPzUPTPRPQP PP PP PPQPQOQOQOKSWVUT|PuQpR kShTeT'bT1`T9^TA\THZTOYTVWT]VTeTTnRTxQTOTNTLTLT KT LTLSLSMSMSNVZYXWwTpUjVfWbW`X$]X.[Y7YY?WYFVYMTYTSY[QYcOXlNXvLXJXIXHXGXGXGXGWHWHWHWQY\[[}ZrXkYeZ`[]\Z\!X]+V]4T^<S^DQ^KP^RN^YL^aK]jI]tG]E]D]C]B]B]B\B\C[C[C[U]_^^x]m\e]__Z` WaUbRb(Qc1Oc9NcALcHKcOIcVGc^EcgDcqBc}@b?b>b=b`>`>`Yaaaataia_bYdTf QgNgLh$Ki-Ii6Hi>FjEEjLCjTBj\@ie>io=:731 12 3+353>}3F{3My3Tw3Zv3at3gr4oq4wo4n4l4j5i5h5g6f6f6f6f6f67>BA?<8677|8'z81w9:u9Bs9Iq9Pp9Wn9]l9dk9ki9th9~f9d9c:b:a:`;_;_;_;_;_;;BEDC@=;};y<u=#s=-p=6n=?l=Fk=Mi=Sg=Zf=ad=hc=qa>{_>^>\>[?Z?Z?Y?Y?Y?Y?Y??FHGFD@|?w@ s@oA lA*jA3hA;fBCdBJcAPaAW`B^^Be]Bn[BxZBXBWBVCUCTCTCTCTCTCTCBIKJIG}CvCqD mDjEgE'dE0bE8`E?_EG]EM[ETZF[YFcWFlVFvTFSFRGPGPGOGOGOGOGOGPGEMMLKJxFqGlGhHdHaI$_I-]I5[I=YIDWIJVIQUJYTJaRJiQJtOJNJMJLKKKJKJKKKKJKJKJHPOON{MsIlJgKbL_L\M!ZM*XM2VM:TMASNHRNOPNWON_NNgLNrKN}INHNGOFOFOFOFNFNGNGNLRQQQwPnLgNbO]P ZPWQUQ'SQ0QR8PR?NRFMRMLSUJS]ISeHSoFS{ESCSBSASASASARBRBRBQOTTT}SsSiQbR\SXT TURUOV$NV-LW5KW<JWDHWKGXRFXZDXcCXmAXy@X>X=Xc>=cEg4*!  "+5@N]nvgZNB7,"   )4BQbuɊɟʱn`SF:/$  (4CTg|fYL?2$ '5FXk,9EPZckrx~ (4ALV_fmtz "/;GQZbiouz )6AKT\cjpu{ "/;ENW^djpu{'3>HQX_ejpv|   ,7BJRY_ekqw~   $0;DLSZ`flry!%"*5>GNU[agmt|~}|zyxxx"),*'#$/9AIPV\bi} p| xz y!w!u"t"s#r#p$o$o$n$n$)020.*'# #$%*%4&=}&D|&Kz&Rx&Xw&^u&et'lr'tq'}o(n(l(k)j)i*g*g+f+f*f*/66540-*)*|+%y+/w,8u,@s,Gq,Mp,Tn,Zm,ak-hj-ph-zg.e.d.b/a/a0`0_0_0_0_04;::8520{/w0t0!q1+o14m1<k1Cj1Jh2Pg2We2]d2eb2ma3w_3^3]4[4Z5Z5Y5Y5X5X5Y58>>=<:}7x4t4 p5m5j5'h60f68d6?c6Fa6M`6S^7Z]7b\7jZ8tY8W8V9U9T9S:S:S:S:S9S9<A@@?~=x:s8n9j9g9d:$b:,`:4^:<];C[;JZ;PX;WW;_VN>N>M>N>N=N=?CCCBz@s=m<h=d=a>^>!\>)Z>1X>9W>@U?FT?MS?UR@\P@eO@oNAzMAKAJAIBIBIBIBIAIAIACEEEEvCo@h@cA_A \AYBWB&UB.SB6QB=OBCOCKNCRMDZLDcJDmIExHEGEEEEFDFDFDEDEEEEEFHHH{GrFjBcC^DZE VETFQF#OF+NF3LG:KGAJGIIHPHHXGHaFIkDIvCIBIAI@I?J?J?I@I@H@HIJJJwJnIeE^GYHUIQJOJLJ!JK)IK1GK8FL?ELFDLNCMVBM_AMh@Mt>M=MQS=R\U+=V24\F3]N1]W0]a/]l.]z,]+]*]*])]*\*[+[+ZUUUrUgV^VTWLYE[?]:_6` 4a2b1b#0b+/c2.c:-cB,cJ*dS)d](di'dv&d%d$d#d"d#c#b$a$aXXzYnYcYZZP\H^A`:c4f/h ,i*i)j(j&'j.&k5%k=$kF#kO"lY lelrlllkkjihh\\u\i]_]V^LaCdk7n0q)u"x{}}}~"~*~1~:~DNZh x  ~ ~ } } | { zewejeafVhLkBo9s1w*z#~    # + 3=HTaq~jqjgk[lPpFtQez)5AMV_fmty $1=HRZbiouz +7BLU]djpuz%1<GPW^ejpuz +6@JRY_ejouz$/:CLSY_djou{  (3=EMSY_djpv~   ,6? G N T Z _ e k r y  }|{{{ %/9AHOU[agnu}~|zxwutsqqqp%%#! )3<C~J|PzVy\wbvitqszqonlkjihhgg&***(%"|$z.w6v>tErKqQoXn^lek mi vh!f!e"c"b#a#`$`$_$_$_$,///-*(}$z" v#s# q$)o$2m$:k%Aj%Gh%Mf%Te%Zd&ab&ia&r_'}^']([)Z)Z*Y*X*X*X*X*13332/y-u*r( o(k)i)%g*-e*5c*=b*C`*J_+P^+W\+^[,fY,oX-zW-V.T.S/S/R/R/R/R/R/66665y3s1o/k.h-d.b.!`/*^/1\/9[/@Y/FX/MW0SV0[T1cS1lR2wQ2O3N3M3M4L4L4L4L4L39999|9t7n4i3e2a2 ^2\3Z3&X3.V35U4<S4CR4JQ4PP5XN5`M6jL6uK7J7I8H8G8G8G8G8G8G8;<<<x<p:j7d6`6\6 Y7V7T7#R7+P72O89M8@L8GK8NJ9UI9^H:hG:sF;E;D<C<B<B=B<B<B<B;=>>>u>l=f:`9[:W:S;Q;N; L;(K;/I<6G<=G\C>fB?qA?~@??@>@=@=@=@=@>?>?@@A|AqAh@a<[=V>R>N?L?I?G@%F@,D@3C@:BABAAI@AQ?BZ>Bc=CoE8=E?*VF)VO(WY'Wd&Wr%W$W#W"W"W"W#V#U$UMNuNiN_OVOMPER?S9V3X/Z+[*[(\'\$&\+%\3$]:#]C"]L!]V ^a^n^~^^^]]\[[Q~QpQdR[RRSJTAW;Y5[.^(`$b "c!cd d'd.d6e>eGeQe]ejezeeeedcbbTxUkU`VWVOWFY=\6_0b)d#gjllmm!m)m0m9nBnLnXnenu n n m m l k k jYrYfY\ZTZJ\A_9c1f*i$loru www w# w* w3 w< wGwRw_wowwvvuttt{]m]b^Y^N`EcM]pduWyK~?4)  &3ARdy\PD8,!  &5EWkӂӗөҸUI=0%  '8J]r &2=HRZbiouz !,8CMU]djpuz '2=GPX_ejpuz!-7AJRY_ejotz &1;DLSY_diotz  +5>FMTY_dinu{$.7@GNTY^diov~   '19AHNTY_dkrz~}{yxvuu t s s    * 3 ; B I~ O} T{ Zz `x gw nu vt r p omlkjiii~${-y6w=vDtJsPqVp\nbmjksi}hfecbba```"#$#" ~|z wtq(o0n8l?kEiKhQfXe^cfbo`y_]\[ZYXXXX'((('{%v#s q nki#g,e3c:bA`G_M^T\[[bY kX vV!U!T"S"R#Q#Q$Q$Q$Q#+,,-|,t*o(k%i"f!c"a"_#']#/\#6Z#=Y$CW$JV$PU$WS%_R%hQ&sO&N'M(L(K)K)J)J)K)K)./00w/o.j+e*c'_' \'Z'X($V(+U(2S(9R)@P)FO)MN)TM*\L*eJ+pI+|H,G-F-E.E.E.E.E.E-123|3r3k1e/`-],Y, V,T,R, P,(N-/M-6L-<J-CI-JH.QG.YF/cE0mC0zB1A1A2@2?2?2@2@2@2355y6n5f5a2\0W0T0Q0N0L1J1%H1,G12F19D1@C2GB2OA3W@3`?4k>5x=5<6;6;6:6:6;6;6;6678u8k8c7]6W3S4O4K4 I4F5E5"C5)A5/@56?6=>6D=7L<7U;8^:8i99v897:7:6:5:6:6:697989~:r;h;_:Y9S6N7J8F8 D9A9?9>9&<9-;:4::;9;B8;J7;S6<\52>1>1>1>1>2=2=;<{<n=d=\=U<N:I;E<A=>=<=:>9>#7>*6?15?84?@3@H2@P1@Z0Ae/Ar.B-B-B,B+B,B,B-A-A=>w?k?a@Y?R?I>D?@@K9L3N.P(S$T "U UVV$V,V3W;WDWNWYXfXuXXWWWVUUItJfK\KSKKLDM[6_.b&fjmps vx xyyyz&z/z9zDzPz_zpzzzyxxwj[_[V[L\B`9c0h(l ptw{ ~  (1<IWh{e`\`QaFdPdz͑ͤʹMA5) !1CVk !-8CMU]ciotz (3>HPX^djotz#.8BKRY_ejotz (2<EMSY_dintz",6?GMTY^chntz &08@GNSX]chnt| )2:AHMSX]ciow~}{zyxwxx  #,4;BHNS}X|^{dyjxrv{tsqpnmmlll  ~%|.z6x<wCuHtNsTqYp_nfmnkxjhg e d c c b b b }|| x u r (p 0o 7m >l Dk Ji Oh Ug \e cckbu`_]\[ZYYYY~xtqq oli"g*f2d9c?bE`K_Q]X\_ZhYrW}VTSRQQQQQ ""#w"p!ligfca_&]-\4Z;YAXGVMUTS\RdQnOzNMKJJIIIJ$%&{'q&j%f#b!`^ [YW"U)T0S7Q=PCOJMQLXKaIkH wG F!D"D"C"C#C#C#C"')*v*m*e)`'\%Y#W!U!R!P!N!%M",L"3J"9I"@H"FG#ME#UD$^C$iB%u@&?&>'>'='=(=(='>'*+-r-h-a,\+X(T&Q&N% L%J&H&"G&)E&/D&6C'<A'C@'K?(S>)\=)f<*r;*:+9+8,7,7,8,8,8,,.{/o0e0]/X.S+P*L*I* F*D*B*A*%?*,>+3=+9<+@;,H:,P9-Y8.d7.p6/5/4030202030304//1w2k2b2Z2T1O/K-G.D.A.?.=.;."9/)8//7/660>50F51N41W32b22n13}03/4.4-4-4.4/3/313t4h5^5W4Q4K2F1B2?2<2 938363 43&33-24414;05C05L/6U.6`-7l,7{+7*8)8(8(8)8*7*745q6e7[7T7M6G6B5=6:677 472718/8$.8+-92,99+9A*:I*:S);^(;j';y&<%<$<#<#<$<%;%;6|8m9b9X:Q9J9D9=99:5;2;/<-=,=*=!)=((>/'>6&>>%?G$?P#@["@h!@v @AAAA@@ ?9x:i;^<U<M<G<@<8=4>0@-A*B 'B&C$C#C%"C,!D3 D;DDENEYEeEtEFFFEEDD<s=f>[?R?J?D?=@6A1C,D'F$G !H III"I)J0J8JAJKKUKbKqKKKKKJJI?o@aAWBNBGBAB:C2E-G(I#KMO PPPP%P,Q4Q=QGQRQ_RmR~ Q Q Q Q P POyCjD]DSEKEDE>F6H/J)L$OQSV WXXX X( X0 X9 XC XN XZXhXyXXXWWWVsFdGYHPHHHAI:J2M+P%R UXZ] ` ` ```#`+`4`=`I`U`c`s`___^^^lJ_KUKLLEL=N5P.S'V Y\_b eg ghhhi&i.i8iCiOi]imiihhgfffOZOQOJOAQ8T0W([!^beh knp p qqrs!s(s1s<tHsVsfsyssrqqpaSVSOSEU;X2\*`"dhlo rvyzz {|}~"*5AO_q~~}\XTXIZ?]5a,e#josw { ",8FVh~Y]N_Cb8f.l$qw| #.<L^tSdGhHPW^dioty$.9BKRY_dinty )3=EMSY_dinsy #-7?GNSY^chmsz '09AHMSX]bgms{ !*3;AHMRW\agnu~~}}}} $-4;BGMRW\~b}h{pzyxvutrqpppp'}.|6z<yBwGvLuRsWr]qcokntl~kihgfeeee  ~| ywu!s)q0o6n<lBkGjMiRhXf_egcpbz`_^\\[[[[|vsr q nli#g*f1d7c=bCaI_N^U]\[ cZ mX xW V T S R R Q Q Q }tmjggf c a _ %] ,\ 3[ 9Z ?X EW KVQUYSaRkPvNMLKJIIIIvmfb_^^ [YW U'T.S4Q;PAOGNNLUK^IgHsFEDCBBBBB }!q"h"a!\YWUTQON#L*K0J7I=GCFJERCZBdAp?}>=<;;;;<!#x$l%c%\$W#S QOM KHG E&D-C3B9@@?G>O=X<b:m9{8 7!6!5!5!5!6!6!#&t'h(_(X'S&O$L"I G DB@ ? #> )< /;!6:!=9!D8"L7"U6#_4#k3$y2%1%0%0&/&0&0&1%&(q*e*\*U*O)K(H%D$A$?$ =$;$9$7$&6$,5%34%:3&A2&J1'S0']/(i.)w-),)+*****+*+*,)(|*m,b-Y-Q-L,G+C(?(<(9( 7(5(3(2(#0()/)0/*7.*?-+G,+Q+,[*,g)-u(-'-&.%.%.&.&.'-+x-j._/V/N/H.C-?,;,7,4, 2,0-.--- +-'*.-*.5)/=(/E'0N&0Y%1e$1s#1"2!2!2 2!2"1"1-u/g0\1S1K1E1@0;0603001-1 +1)2(2'2$%3+%32$3:#4C"4L!5W 5c5q666666650q2c3Y4P4I4B3=37314.5+5(6 %7$7"7!8" 8(80879@9I:T:`:n:;;;;::9}2m4`5U6M6F6@6:646.8*9&:#; <===>%>->4>=?G?Q?^?l@|@@@@??>y5i7\8R9J9C9=9791:+<'="?AB CCDD"D)D1D:ECENE[EiEy E E E E E D Dt9e:X;O;G<@<:<4<.>(@#BDFHJ JJKK% K- K6 K@ KJ KV KdKtKKKJJJIn<`=T>K>D>=>7?1@*B$EGILNQ Q Q QQ"Q)Q2R;RFRRR_RoRQQQPPPh@[APAHAAA;B4C-E&H KMPSU X XXYYY%Y-Y6YAYMZZZiY|YYXXWWcDVEMEEE?E7G/I(L"ORUX Z ]_ ` `aab b'b1b;bGbUcdbvbbaa``]HRIJHCH:J2M*P#SWZ] `cfgh ijklm"m*m4m@mNm]momllkkjXMNMHL>N5Q,T$X\`d gknprrs uvwxy#z-z9zGzVyhz|yxxwwTQLQBR8U/Y&^bgk oswz|~ %0>M_sRVGWr2x'  #5I^uیܟܫ $/9CKRY_dinsy*4=EMSY^chmsy $.7@GNSY^chmsy(1:AHNSX\aglsz "+3;BHMRW[afmt}%-5<BGLQV[`gn~w}{zxwvvvuu  '/5}<|A{FyKxPwUv[tasiqqp{nmkjjiiii{ ywv"t)s0q6p<oAmFlKkPjVh\gdeldvca`_^^^]] | wtq omki#h*g1e6d<cAbF`L_R^X]_[hZrX~WVUTTSTT zrli g f db`^%]+\1Z7Y<XBWGVNUTS\ReQoO{NMLKJJJJ~sjd`^] ] ZXV U'S-R3Q8P>O DN JL QK YJ bH mG zF D C B B B B B xlc]YVTTS Q O M "L (K .J 4I :GAFGEODWBaAl?y>=;;:::;sg^XSPNLL JHFE$D*B0A7@=?D=L<T;^9i8v76443344|nc Z S NJHFECA?> =';-:39:8A7I5Q4[3f2s0/.---..x j"_#V#O"J!F CA?= ;976#5)40361>0F/O.Y-d,q+*)( ' ' ( ) t#g$\%S%L%G$B#?!=:7 5310 /&.--3, ;+ C*!L)!V("b&"o%#$###"$"$"$#$$##q%c&Y'P(I'C'?&;$8"5"2"0" .","*")"#(#*'#1&$8%%A$%J#&T"&`!'m '}'((((('~%n'`)V)M*F*A)<(7'4&0&-&+' ('''%'$'!#('"(.!)6 )>*H*R+^+k+{,,,,,++z'j*]+S,J,C,>+9+4*0*+*)+&+#,", ,,-%-,-3.<.E/P/\/i0y000000/v*g,Z-P.H.A.;.6-1-,-'/$/!01 1222"2)31393C4M4Y4g5w5555444r,c.W0M0E0>08030/0)1$2!356 77888&8.969@9K9W:d :t : : 9 9 9 9 8n/_1S2J3B3;36312,3'4!689;= >>>># >* >3 >< ?G ?R?`?o???>>>>i3[4P5G5?59545.5)7#8;<?AC D D DD D'D/D8EBENE[EjE|EDDDDCd6W7L8C8<87818+9%; =@BDG I J KKKK#K+K4K>LILWLfLwKKKJJJ_:R;H;@;:;4;.<'>"ACFIK NPQ QRSSS&S/S9SESRSaSrSRRQQQY>N>E>>>8>0@)B#DGJMP SUWX YZZ[\!\*\4\?\M\[\l\[[ZZYTBJBBB^2c'jpx  &8Kaz7j+p x ,@WnԆԛӫ *4=FMSY^chnsy %.8@GNTY^cgmsz )2:BHNSX]bgls{ #,4<BHMRW[`flt}&.5<BGLQUZ`fmv}|||||  (/6<AFK}O|T{Zy`xgvpuzsqponnnnn~|{y"x)w0u6t;r@qEpJoOmTl[kbijhtfecbaaaaa~yuq omlk$k*i0h6f;e@dEcJaO`V_]]e\oZzYXWVVVVVzrligd ca`_%^+]0[6Z;Y@XEWKVQUXSaRjPvONMLLLLL | p h b _ ]\ ZXWV U&S+R1Q6P;OANGMMKUJ]IgGsFEDCCCCC ti`ZVT S S QONL!K'J,I2H7G=ECDJCQBZ@d?p>~=<;::::|nbZTPMKK J IGED#B(A .@ 3? 9> @= G< O: X9 c8 o6 ~5 4 3 2 2 2 2 wi^UOJGECCB @ ? = < $; *9 0877=6E5M3W2b1n/}.-,+++,rdYQKFB?><; :875!4'3-230:/B.K-T+_*l){('&%%%&~n`VMGB>:8754 20/-#,*+0*7)?(H'R&]$j#y"!   zj]S J D >:7420. ,*)' &&%-$5#="F!P [hwwg Z!P"H"A";"7!3 0-+(&%#!!$ *2:C M!Y!f!u"""""!!s d"W#M$E%>$9$4#0",")!&!$!"! !!""!"(#/#8$A$K%W%d&s&&&&&%%p"a$T&J&B'<&6&1%-%)$&$"%%& &''''%(-(5)>)I)U*b*q*** * * *)l$]&Q(H(@)9(4(/(+'''"()*++ ,,,-#-*-2.<.F .R ._ /n / / / .. . .h'Z)N*E+=+7+1*-*)*$* +-./1 222 2 2' 2/ 38 3B 3N3[4j4{333332d*V,K-B-:-4-/,+,&,"-/1246 8 8 888$8,848>9J9W9e9w988887_-R.H/?08/2/-/)/$013579 ;= >>>>!>(>1?;?F?S?a?s?>>===Z0N2D2<25201+1&2 468;= ?AC CDEEE$E-F6FBFNF]FnEEDDCCU4J5A59534.4(5"7:<?A DFHI J KLMN N(N2M=NJNXMiM}LLKKJP8F8=87817*9$;=@CF IKNPQR STUVW#W,W8WDWRVcVwVUTSSK<B<;;5;-<&?BEHK OQTWXZ[\ ]_`bb&b1b>aLa]ap``_^]G@??:?1@)C!FJNQ UX[^acdegh jlno o*o6nEnUnhmmlkjDD>C5D+G#KOTX\`dgkmoprtuw y|~".=~M}a}w|{zyCG9I/L%PU[`ejnrvy|~ %3DWm=N2Q(V\bhnty~ ):Mb{6W,\!bipw~ 0CXp0b%ipx  %8Ne~͖̩ %/8@HNTY^chmsz )3;BHNSX]bgmt{ $,5<CHNRW\agmt}'/6<BGLQUZ`fnv !(06<AFKOTZ`g~o|zzxwutsttt#*}0{6z;x@wEuItNsTqZpanimskihgfeffg|vt rqpp$n*m0k5j:i?hDgIeNdTc[ac`m^y][ZYYYZZ{snjgedccb%a*_0^5]:\>[DYIXOWVV^ThSsQPONNNNO{phb_][ YXWW V%U*S0R4Q9P?ODNKMRKZJcIoG|FEEDDDEq f ^ Y UTRP ONML K&J+I0H5G:F@EFCNBVA_@k>x=<<<;;; x j_WQM K JI H FEDC!B&A+?1>6=<<C;J:R9\8h6u5443333 qdYQKGDB A A ?><;:"9(8-72695?4G3P1Z0f/s.-,++++}l_TLFB><:: : 8 654 2 $1 )0 // 6. =- E, N+ Y) e( s' & % $ # # # xh[QHB=975332 0 / - , !+ '* -)4(;'D%N$Y#e!s sdWME?:520.-, +)(&%$$*#1"9!B KVcqp`TJB<62/,*(&% #" !'.6?ITapl]QG?94/+(&$"  $,4=GR_niZNE= 61-)%#  ")1:EP ] l | eWL!B!:!4!/!* &#    !!"""&#/#7 #A $M $Y $g $x$$$$##bT!I#@#8#2#,#("$!!!!!#$%& ' ' ' '# '+ (4(>(I(U)d)t))((('^"Q$F%=%5%/%*$&$"##$%&() , ,,,,!,(-0-:-E-R.`.q---,,,Z$M&C':'3'-'(&$&!&&')+, . 0 11222%2-263B3N3]3m322111V'J)?*7*0*+)'(#()*,.0 1 45 67888"8*939>9J9Y9i9}88776Q+F,<,4,.,*+%+ ,-/13 5 7:; < =>?@@%@/@:@F@T@e?x?>>==M.B/9/2/-.(."/0257 : <>ABC D FGHH!H*H5HAHOH`GsGFEEDH2>26201+1%2469< ?BDFHJKL NOQRR%R0R<QJQZQmPONMMC6;645/4'5!8;>A DGJMOQSTUW Y[]]]*]6\D\T[g[~ZYXW?98938+9#<?CG JNQTWZ\]_`bd fhkk#j.j<jMi_hugfed==7<.=%@DIM QUZ]`cfhjkmoqt vy{{'z5yExYxmwvut_C^H]N[UZ]XgWrUTSRQQRR|qid`^\ [[ZZY%W*V/U4T8S=RCPIOPNXMbKmJzIHGGFGG~pf^YVSRP OONN M%L*J.I3H8G>FDEKDSC]Ah@u?>====>uh]UPLJIG FEEDC B%A*@/?4>:=@;G:O9Y8d7q6544445~m ` V N H D B@?> =<;;:!9%7*60554<3C2L1U0`/m.}-,,,,,w g ZPIC> ; 9 8 76 54321"0'/,.2-8,@+I*R)](k'z&%%%%%r bVLD>9631 0 0 / .,+*)#()'/&5%=$F#P"\!i ym^RH@:51.,** ) ( ' %$# " &! , 3 ; D O [ i y      iZNE=71-*(&$## "     # * 2:DP\j{eWKB:4/*'$"   !(09CNZiy    bTI?71,($! &-6ALW e u    _QF=5/*%"  # * 3 < G S aq\NC:3,'#      '/9CP^nXKA80*%!   !!!$","5"@#M#Z#k#~#""!!UH> 5 . ( #   " $ % %&&&!')'2'='I(W(g'{''&&%Q E!;"2","&!"!   "# % &( ) +,,,,&-/-9-F-T-d-w,,++*M"A$8$0$)$$#!"""#$& ( *,. / 02333"3+363B3P3`3s22100I%>&4'-'(&#%$%&(* , .0245 7 8::::':2:>:L:\:o98876D):)1)+)&("'()+. 0 2579;<> ? ACCC#C.C9CGBWBjA@?>>?,6,/,*+%*+-/2 58:<?ACEFH JLMMM(M4LBLQKdK{JIHG;03/-/(-"/147 :=@CFHJLNOQS UXYX"X.W<WKV^VsUTRR8312,1%258< @DGJMPSUWYZ\^a dfgf'f4eDdWdkba`^5705(7 :=B FJOSVY\_adegilnq tww v-v=uOtcs{rpo5:+;"?CH MRW\`dhknqsuwz| $3E[r/@%DIN TZafkoty} );Pg)INT[bipw} 0E\t"T[bjs{ &:Qhˁʖ %.6>DJOTY^cipx  (07>DINSW]biqz "*18=CHLQV\bir}zx $+17<AFKPU[bk~u|zxwvurnl %~+|1z6y;w@vDuIsOrUp\odmnlzjhgfeda`}wspoooom%k*i0h4g9f>eCcHbNaU_^^g\s[YXWWWVTulhda` ____]%\*[/Y3X8W=VCUISPRXQaPmN{MLKJJJJrg_ZWUSR RRRQO$N)M.L3K8J=ICHJFRE\DgCuBA@@?@@tg]UOLJHG G FFFED$C)B-A3?8>>=E<N;W:b9o8766666|k^TMGCA?>= =<<<:9$8)7.635:4A3I2S1^0k/{.----.sdWMF@;87654 44321 0$/)./-6,=+E*O)Z(g'w&&%%%&m^ R H @ : 6 2 0..- , ,+*)( '%&+%2$9#B"K"W!d sh Y M C<61 - * ( ' && %$$"!!" (.6?ITapc UI@82-)&# "    %+3<FR_n_QF<5/*&"          " ) 1 : E Q _ n  \NC:2,'#        ( 0; F Q ^ m   XK@70)%!      % - 6 A MZj|UI>5-'"       "*3>JXgzRF;2+%!   '0;GUdwOC90)#    $-8DRbuL@6-&!      !!"!*!5"A"O"_"r!! H=3+$   !" $ &&&''''2'>'K'\'n&&%$#D90(#  !"$&(* + ----$...:.H-X-j-,+*)@ 6!-!&!! ! " $&(+-/0 2 4555 5*565C5S4f4|3210<#2$*$$# "!!#% ' )+.02468: < >>>>&>1>?=N=a@BD F IIH!H,G:GIF[EqDCBA4*,*'("'(*- 0 369<>ACFHJLNP STTS'S4SCRUQjPOML0-+,&+,.2 59=@CFILNQSUWY\_ bccb,a<`N_b^{\[Y/0*/"037;?DHLORUX[]`bdfimp tts%r4rEpYoqmkj.3%58<AGLQUY]aehkmortwz~ +=Rg~): =BHNTZ`dinrvz} !3G^w#CHN U\cjqv{ (<RjNT \dlt|1H_vȎ  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mft1!  !"#$%&'()*+,-./01123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~ :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗 :`˺2ƷPh{ĵ˳Ѱխ٫ܪި᧙㥗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗  9` ˻0ƸOg{ĵ˲ѯխ٫ܩާख़㡘䡘䡘䡘䡘䡘䡘䡘䡘䡘䡘䡘䡘䡘䡘䡘䡘  9` ˼.ŹMfzŵ˱Ѯլ٪ܧޥ࢚➙㞙㞙㞙㞙㞙㞙㞙㞙㞙㞙㞙㞙㞙㞙㞙㞙  9` ˾,ŹLg{Ŵ̰ѭի٨ۥݣߟᛙ⛙⛙⛙⛙⛙⛙⛙⛙⛙⛙⛙⛙⛙⛙⛙⛙  9 ` ˿+ĺLg{Ŵ̰Ѭթئۣݠޝᘚᘚᘚᘚᘚᘚᘚᘚᘚᘚᘚᘚᘚᘚᘚᘚ  8 _ )¹Mh{Ƴ̯Ѫէؤڡܞݚޕ  8 _ )Ni|Ʋ̭ѩԥעٟڛܗݓޓޓޓޓޓޓޓޓޓޓޓޓޓޓޓޓ  7 ^ ǿ+Pj|ư̫Чԣ֟؜٘ڔܐݐݐݐݐݐݐݐݐݐݐݐݐݐݐݐݐ  7 ^ ľ-Qj|Ʈ̩ХӠ՝ّ֙ؕڎێێێێێێێێێێێێێێێێ  6 _ 0Sl}Ǭ˧ϢўӚՖ֓׏؋ًًًًًًًًًًًًًًًً  5 b 3Um}ƪˤΟЛҗӓԐՌ։׉׉׉׉׉׉׉׉׉׉׉׉׉׉׉׉  7 e 8Xn}Ƨɡ̜ΗϓѐҍӊӇԇԇԇԇԇԇԇԇԇԇԇԇԇԇԇԇ  : h>[o}ģǝʘ˓͐΍ϊχЅхххххххххххххххх  > mD^p}ßřǔɐʍˊˈ̅̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓̓  B rI`p}ÕđƍNJLjȆȄɂɂɂɂɂɂɂɂɂɂɂɂɂɂɂɂɂ H xGbq|ÊĈĆńŃŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁŁſ% N p9Xlz€€€€€€€€€€€€€€€€€1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ1 S(|̨Dƥ]£pùƷʵͳбҰԯ֮ح٬ڬڬڬڬڬڬڬڬڬڬڬڬڬڬ0 S'|̨Dƥ]¤pùǷʵγбӰկ׭٭ګګګګګګګګګګګګګګګ0S&|˩CƦ\¤o~ùȶ̳ϱҰծ׭٬ܫݧۧۧۧۧۧۧۧۧۧۧۧۧۧۧ0S%|˩BƧ[¥n~ĸɵͲѰԮ׭ګܩߨߣܣܣܣܣܣܣܣܣܣܣܣܣܣܣ0S$|˩AƧZ¥m}ķɴαӯ֭ګܩߧ⤑ࠎܠܠܠܠܠܠܠܠܠܠܠܠܠܠ0S#|˪AƨY¦m}ŷʳϰԮثܩߧ⥗栖ݜݜݜݜݜݜݜݜݜݜݜݜݜݜ 0S"|ʪ@ƨX¦l|Ŷ˳аխڪݧच⟘㝚ᙗݙݙݙݙݙݙݙݙݙݙݙݙݙݙ 0S!|ʫ?ƩW§k{Ŷ˲ѯ֫ڧݤߠ◚ᗜޗޗޗޗޗޗޗޗޗޗޗޗޗޗ /R |ʫ>ƪV¨kyŶ̲Ѭ֨٤ܡݜޗޒޒޒޒޒޒޒޒޒޒޒޒޒޒ /R|ʬ<ƫU¨jwŵ̯Ҫ֥ءڝۙݔސގݎݎݎݎݎݎݎݎݎݎݎݎݎݎ /R|˭:ƬT©is~Ų̬ѧբמؚږۑ܍܋܋܋܋܋܋܋܋܋܋܋܋܋܋܋ /R|˯8ƭR«fo~ưͪѤӟ՛ًُ֗ؓڈڈڈڈڈڈڈڈڈڈڈڈڈڈڈ .Q|˰5ǯOð`l~ǭ̧ϡҜӘԔՐ֍׉؇؇؇؇؇؇؇؇؇؇؇؇؇؇؇ .Q|̳0DZLĸVnǩˣΞϙѕґӎԋԈՅՅՅՅՅՅՅՅՅՅՅՅՅՅՅ  -P|̶*ȷDYpªǦʠ͖̚ΒϏЌщч҅҅҅҅҅҅҅҅҅҅҅҅҅҅҅  ,O{ͼ"¼<^r¦Ţǜɗʓː͈̍͋Ά΄ττττττττττττττ  + N zFbtÞřǔȐɎʋˉˇ̅̃̃̃̃̃̃̃̃̃̃̃̃̃̃̃  ) L ~%OfuÖőƎNjljȇɆɄɂʂʂʂʂʂʂʂʂʂʂʂʂʂʂ ( R -WhuÌĊňņƄƃƁǁǁǁǁǁǁǁǁǁǁǁǁǁǁ - Y +Pgu~ˆ†…ÃÂÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ 4 [v%E]ny~~~~~~~~~~~~~~~:Uh-x@Vgs~x{|ywÂu„t…srrqqqqqqqqqqqqqqq'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~'*F6iާBǛběr›úƸȷʶ̵ʹϳгѲѰ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~Ѱ~')F5iިAǜaĜq›~ĹǷʵ̴γвұӱԮԬҬҬҬҬҬҬҬҬҬҬҬҬ'(F4jݨ@ǝ`Ĝqœ|ºŸɶ̴ϲѱӰկ֯תէӧӧӧӧӧӧӧӧӧӧӧӧ'(F3jݩ?ǝ`ĝpž{¹Ƿʵγѱӯ֮ح٪٥դԤԤԤԤԤԤԤԤԤԤԤԤ''F2jݩ>Ǟ_ĝoyøȶ̳бӯ֮ج۫ܦڢ֠ԠԠԠԠԠԠԠԠԠԠԠԠ&&F1jݪ=Ǟ^ĝoxĸɵͲѰծج۪ިߢڞ֜ԜԜԜԜԜԜԜԜԜԜԜԜ&&F0jݪ<Ǟ]ĞnvķʴϱӮ׬۪ި⤐ۚיՙՙՙՙՙՙՙՙՙՙՙՙ&%F0jܫ;ǟ]ğlt~ŷʳаխ٪ި⥗柕ۗזՖՖՖՖՖՖՖՖՖՖՖՖ&%F/jܫ:ǟ\Ġjs|Ŷ˳ѯ֬ۨߤ៙㜚ᗖܔؓ֓֓֓֓֓֓֓֓֓֓֓֓ &$F.jܫ:Ǡ\ġhqzŶ̲Ѯשۤޠᖛᕛݒؑבבבבבבבבבבבב &#F-jܬ9Ǡ[ģfnxŶ̰Ҫצڡܛޖߑߑݏُ׏׏׏׏׏׏׏׏׏׏׏׏ &"E,jܭ7ǡZťc©kuų̭ҧ֢؝ژےݎ݌܍ٌ׌׌׌׌׌׌׌׌׌׌׌׌ %"E+jۭ6ǢYŧ_­fp~ưͪѤԞُ֙ؔڋۈۈ؈׈׈׈׈׈׈׈׈׈׈׈׈ % E*jۯ4ȤUƫXó_n~Ǭ̦РқԖՑ֍׉؆؄ׄքքքքքքքքքքքք %E'j۰1ȨMDzNXpǩˢΝЗђҎӋԈՄՂՁՁՁՁՁՁՁՁՁՁՁՁՁ $D%jڲ.ʯ@Ƚ=]r©ƥɟ˙͔ΐόЉц҄ҁҀҀҀҀҀҀҀҀҀҀҀҀҀ $D!jڴ)ͼ(CasšǛɖʑˎ͈̋Ά΃΁πππππππππππππ #Ci#LeuÝŗƓǏȌɉʇʅʃˁˀˀˀˀˀˀˀˀˀˀˀˀˀ "Bh /Thv”ÐčŊƈƇƅǃǁǀǀǀǀǀǀǀǀǀǀǀǀǀ @ _ 4Zkw‰ˆÆÅÃĂāāāāāāāāāāāāā  = c3Sgt}€€€€€€€€€€€€€  Aax2L_nx|}|{zyxxxxxxxxxxxxxx " BZ(j9wI[i|qyvvzt}rqȁpǃoDžnƆmƈlŊlŋlŋlŋlŋlŋlŋlŋlŋlŋlŋlŋlŋlŋ &=N/[?gNq{[yveqlnrkwizg~fՀeԂdԄcӆbӉaҋaҌaҌaҌaҌaҌaҌaҌaҌaҌaҌaҌaҌaҌ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ #1:>YKyٚ\ȕrŕ}×»ĺŹƹǸȸ~ɷ}ʷ|ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ʴ{ "0:=YJy؛[Ǖrŗ{ØúŹǸɷʶ˶~̵}̳|ͯ|˯|˯|˯|˯|˯|˯|˯|˯|˯|˯|˯| !/:}֨DɨOǰSŸYm}Ƭ˥ϟјӒՌ׈ׅ׃քԄффффффффффф%91Z<~׬;ʭDɹEYo~ƨʡ͛ϕЏҊӆԃԁԀӀррррррррррр$9/Z9~ٴ/̸2½@]q~Ťȝʗ̒΍ωЅЂр~}}}}}}}}}}}}"9-Z0z!Hbs~àƙȔɏʋˈ̅͂̀~||||||||||||8)Z$t*Oet›ÖőƍNJȇɅɂʀ~|||||||||||| 7%Zh 2VhuÌĉņńƃƁ}}}}}}}}}}}}6P f6Vjv~†„ƒÁÀ~~~~~~~~~~~~ 4 Eh7Ser{~}||||||||||||  ' Ie%x9O`mux}{z}yĀwÁvƒu„tsrqqqqqqqqqqqq  ,H\1kBvP~~_{iwntsqwpzn}mĺk̓j̅i̇hˉgʌgʌgʌgʌgʌgʌgʌgʌgʌgʌgʌgʌ -A(P9\Hf|Tnw^uqezmk~jphufxe{c~bځaك`م`؇^؊^֍^֍^֍^֍^֍^֍^֍^֍^֍^֍^֍^֍ (7.C=N|KWwV_o]ehbjdinaoq_ss]wu\{v[~wZxYyXzXzW{V|V|V|V|V|V|V|V|V|V|V|V|'6/DJRe_~ܓnϒxƒĒÑ~}¼{¼züyøy¸y¸y¸y¸y¸y¸y¸y¸y¸y¸y'6/DJRe_~ܓnϒxƒĒÑ~}¼{¼züyøy¸y¸y¸y¸y¸y¸y¸y¸y¸y¸y'6/DJRe_~ܓnϒxƒĒÑ~}¼{¼züyøy¸y¸y¸y¸y¸y¸y¸y¸y¸y¸y'6/DJRe_~ܓnϒxƒĒÑ~}¼{¼züyøy¸y¸y¸y¸y¸y¸y¸y¸y¸y¸y'6/DJRe_~ܓnϒxƒĒÑ~}¼{¼züyøy¸y¸y¸y¸y¸y¸y¸y¸y¸y¸y'6/DJRe_~ܓnϒxƒĒÑ~}¼{¼züyøy¸y¸y¸y¸y¸y¸y¸y¸y¸y¸y'5/DJQe^~۔mϒwŒēÒ¼~¼}û{Ļzĺyĵyõyõyõyõyõyõyõyõyõyõy&4/CJPe]ڕi͔tŔ~ĕ•ûĺ~ź}ƺ{ƹzƵzƱzızızızızızızızızızız%4/BJOf\ږf̕qŕ|Ė—úŹƹǸ}ȸ|ɵzɰ{Ǭ{Ŭ{Ŭ{Ŭ{Ŭ{Ŭ{Ŭ{Ŭ{Ŭ{Ŭ{Ŭ{$3/AJOf[٘c̖oŖy׺ŹǸɷʶ}˶|˰{ʬ|Ȩ}Ũ}Ũ}Ũ}Ũ}Ũ}Ũ}Ũ}Ũ}Ũ}Ũ}$2/AKNgYٙa˗mŗwÙĹǸɶ˵ʹ~α|ά}˨}ɥ~ƥ~ƥ~ƥ~ƥ~ƥ~ƥ~ƥ~ƥ~ƥ~ƥ~#2/@KMgWٚ^˘jřtÚ}ºŸȶ˴γвѬ~Ϩ~̤ɡơơơơơơơơơơ#1/?KMgUٜ\ʙhŚrÜzùǷ˴βѱӬӧФ͠ʞƞƞƞƞƞƞƞƞƞƞ"1/?KLgSٝYʛeŜoÝxĸɵͲѰծקԣџ͜ʚǚǚǚǚǚǚǚǚǚǚ"0/>KKhQٟVʜbŝlßu~Ʒ˳ϰԭ٨ڢ՞ћΙʗǗǗǗǗǗǗǗǗǗǗ"0/>KKhO٠Sʞ_Ɵiár|ǵͲҮتߢܜ֙җΕʔǔǔǔǔǔǔǔǔǔǔ!//=KJhM٢Pˠ\ơeänx¸ȴΰիݥ曑ݖהӒϑːȐȐȐȐȐȐȐȐȐȐ!//PUQhS{WԞ_ʛkśuÛ~ŷʴϲҨϣˠǝś™%4%C>NUNhPzRա[˞fƝqÞz¹ǵΰԩ֡Н˚șŗ–%4%B>LULgMyNդV̡aơlâv÷ʲҬؚ۠ї̕ȔœÒ$3%B>JTJfJxK֨Qͦ[ǥeħpzö˯֥族ړґ͐ɐƏÏ$3%A>HTGfGwG٭KϬTȬ^Ưh±s}˥Քޏڍӌ΋ʋNjČ$2%A>FSDdCuB۴DҵJ˷Sʾ_n|©˜ҍ؆هӇχˇȈňˆˆˆˆˆˆˆˆˆ#2%@>CRAc?s=޾;?J]o}ãɖΊӁՁ҂ς̃ɄƅÅÅÅÅÅÅÅÅÅ#1%?>@Q>;O7]3j1u)8Ocsďȇʀ|zyz|}}}}}}}}}}!.%<>6L0Y,b'm&jNCdTH^YL[_OXdRUiTSmURqWPtXOxYN{ZM[L\K]I^H_H_H_H_H_H_H_H_H_H_$y3"p;*hB1aJ6\Q;WW?S]BPbDNgFLlHJpIItJHwKF{LEMDNCNBOAPAPAPAPAPAPAPAPAPAP' ;K/YCdTkcrq|}ㆄނ}zxwutrqppopqqqqqqqqq' ;K/YCdTkcrq|}ㆄނ}zxwutrqppopqqqqqqqqq' ;K/YCdTkcrq|}ㆄނ}zxwutrqppopqqqqqqqqq' ;K/YCdTkcrq|}ㆄނ}zxwutrqppopqqqqqqqqq' ;K0YCcTidprz~≂܅؂}{ywvtsrqqsttttttttt' ;K0YD`UfdmswጀۈՅ҂}{ywvutsuuvvvvvvvvv' ;K0YD^Udejts}ًԈЅ͂}{yxvuvwwxxxxxxxxx' ;J0XD\Uaegtpߏz؍ҋ·˄ȁ}{ywvxxxyyyyyyyyy' ;J1UDYU^edtlޑv؏э͊ɇƄā~{ywxxyyzzzzzzzzz& ;I1SDWU[eathޓr֑{ЏˍNJĆÃ{ywxyyz{{{{{{{{{& :I1QDTTXd]tcޖm֓wБʏƍɄ{yxyz{{|||||||||& 9H1ODRTUcZs_ޙi֖rϓ|ʑŐË{yz{{|}}}}}}}}}}& 9G1MCOSRcVr[ߝdךmЗwʔŒŽ{ijzī{¦|}~& 8G1KBMRPbSqW^؞gЛqʘ{ŕ’ŷ|ɫ|Ǥ}à~& 8F2IBJQM`PoT}Xڤbҡk˝uƚ˜¶ˬ}΢ɝĚ& 7F2GAHPJ_LmP{Tܫ\ԩeΦoȣzßİΠљʖŔ& 7E2E@FOG]IkLxOߴUٵ_ӵiεv|ġΔҐˏƎŽ& 6D1C?CND[EhHtL~Q[kƽqxÔ͉҇̈ljÉ& 6B1@>@L@YAdDoIwR|bhnvπ̂ǃĄ& 5?0==hOCbUG]ZKY`MVePSjQQnSOrTNvUL{VKWIXHYGZF[E\E\E\E\E\E\E\E\E\ ~)u5#l<*dC/^J4XP7TV:Q[Kd@JhAHlBFpCEtDDxEB}FAG@H?I=J=J=J=J=J=J=J=J=J| q$g,_5Y=!TE&OK)LR,HW/F]0Da2Bf3@j5?n6=s7KKPXUdZpa{iޚsו~Ўʅ}xy{}~ 4B$C0E=HILUQaWl]wcm֞y˕~|~ 4A#A/B;EGISN^ShZra{ۯn̦v~ 4?"?.@:BEFPKZRcYk߽drѶlĬsz4=!<-=8@BDLIUQ\Zaboɼipw4; 9+:5=?BGHNQR[Y`mgmt}x|386)82:;?AGETEWX^kd~krzvorwz}~353'4/65=8H8MEVV\ib{howxnhiosvxz{{{{{{{{300#/)2-;,@:HLN\Vl]zem}vsălgefknqstttttttt1-*)"-!3,XFeOpXzzdsmmvhdЈ`ϒ^Ν\ͩ[ιYȚZʜ\ɝ^ɞ^ɞ^ɞ^ɞ^ɞ^ɞ^ɞ^ɞ  "'-96J?XHcRmz\urd{mmhud~`؆]֏Z՘XԢWԮVԼV͐VђWѓWѓWѓWѓWѓWѓWѓWѓ   #*.;8IBUL_zVgs^mkdrflwbtz_|}\ZߋWޓUݜTܥRܯRܻQ̅RڅRڅRڅRڅRڅRڅRڅRڅ  $*09:EFOzQXrX^k^ceeh`lk]rnZypWrUtSvQwPxNyMzMzLzLzLzLzLzLzLzLzظ '(35??yJGpQNiWSb]W^d[Zj^Wp`TvbR|dPeNgLhKiJjIkHlGlGlGlGlGlGlGlGlݯż *#~6-vA6mHk2CE@K=P;U9Y7^!5b"4g#2l$1r%/w&.}'-(+)+)+)+)+)+)+)+)+)vs r1 qCqP&uY3ub?sjIptSn~[kaiggkencqbsau`v^w^x]y\z[z]z^y`y`y`y`y`y`y`y`yvs r1 qCqP&uY3ub?sjIptSn~[kaiggkencqbsau`v^w^x]y\z[z]z^y`y`y`y`y`y`y`y`yvst1 rBtO'xX3y`?wiJsqTq|\nckiimgqetdvbxay`{_|^}]}]}_}`|b}b}b}b}b}b}b}b}wtu1 sBwM'{V4|_@zgKwoUsz^qenkkpisgweyd{b}a~`_ŀ^Ё_ڀaހb߀c߁d߁d߁d߁d߁d߁d߁d߁xuv1 tBzL'U4]@~eLznVvw_tfpmmrkviyg|e~cba`DŽ_ӄaڄc݃d܄e܄e܄e܄e܄e܄e܄e܄e܄yvw0 vB~K'S4\@dLlVzt`whsoptmyk|hfecbaɇaՇdڇeڈfوgوgوgوgوgوgوgوgوzxy0 xAI'R3Z@bLiW~qa{{iwqswp|mjhfdcb΋d֋f֋g֌h֌i֌i֌i֌i֌i֌i֌i֌i֌{yz0 |?H&P3X@_LgWnaxj{rwys~oljgedďdҏgӏhӐjӐkӐlӐlӏlӏlӏlӏlӏlӏlӏ|z{0 >F&N2V?]KdVkask~s{zvrnkhfeʓhѓjДkДlДmДnѓnѓnѓnѓnѓnѓnѓnѓ}{|/ <E%M1S>YJ`Uh`pjyt|zuqmiggΗk͘l͘n͘o͘pΗqΖqϖqϖqϖqϖqϖqϖqϖ~|~/ ;C$K0P(B2G;MDTM[UܰeaΨlqßt|§åţƢȟȟȟȟȟȟȟȟ- 49<&@/E8K?SF\MӶb`ƭipqy¨æŤƢȠȟȟȟȟȟȟȟ+ 279$=,B3I9R>XL̺`_gon~v~~¨æŤƢȠȟȟȟȟȟȟȟ* 146!:(@-H1Q7VK^]enl}s{ytwz§|å}ţ~ơȟȟȟȟȟȟȟȟ( 1236"=&G&L5TI\[cljzqywpln§ræuĤwƢxǡzȟzɞzɞzɞzɞzɞzɞzɞ& /./2:DJ3RGZYaigxnvyohdeŤjţmƢpǡrȟtɝuʝuʝuʝuʝuʝuʝuʝ$ + )),7AI0QDXV_fetl|tqib^]ɞbȟfȟiɞkʝn˛n˛n˛n˛n˛n˛n˛n˛#' " $ 0=$F4NDVR]acokztsk~bȌ\ȜYȱWΖ[͘^̙a̙d͙g͘g͗g͗g͗g͗g͗g͗g͗!  .:)C9JHPVWb_lvhulr}c~\،W؝TװT͌UӏWґZѓ\ѓ_ѓ`ѓ`ѓ`ѓ`ѓ`ѓ`ѓ`ѓ  ,7.@=HJOVV`v^ilepdpw^||YVޗSݦQܸQԄSڇT؉V׊X֋Y֋Y֋Y֋Y֋Y֋Y֋Y֋ ٿ ,!70@>HJPTwW]m]defj_pnZzrVvSyQ{O|M|M|P|QRށSށSށSށSށSށSށSށ ۷ ,#71A=IGxQPnWWe^\`fa[oeVxhSkPmNoLqJrIrHrKrNsNtNtNtNtNtNtNt ެ˺!.#9/B9wJBmPIeVN_^SZeVUmZRu\O~_LaJbHdFeEfDgCgEgFgFgFgFgFgFgFgʹ $0 ~;*tB2kH9cN?]UCX]GSdJPkMMrOJyQGSETCVAW@X?Y>Z>Z=Z=Z=Z=Z=Z=Z=Zҭ &|1q8"h>)`E/ZL3TS7PZ:L`Fm@DtBA{C?E=F;G:I9J8J7K7K7K7K7K7K7K7K w# m*d1\8U@"PH&LO)HU+D[-Ba/?g1=m2;s39z5765738291:0;0;0;0;0;0;0;0;| of^! V)P2K:FABH?N5D2I0N.S,X*])c'i%o$w"~!hd#_/^@cKgT%h]/fg9drAb}H`N]R[VZYX[W]V_U`TaTbScRcRcScTcVbWcWcWcWcWcWcWcie#`._@fIjS%k\0ie:gpBd{IbO_T]X[[Z]X_WaVbUdUeTeSfSfUfVeXeYfYfYfYfYfYfYfjf"a.`?iHmQ&n[0ld:inCgyKdQaV_Z]][`ZbYdXeWgVhUhTiUiWhYhZi[i[i[i[i[i[i[ijg"b.c>lFqP&rY1pb;lkDivLgRdXa\_`]b[eZgYhXiWjVkUlWlYk[k\l]l]l]l]l]l]l]lkh!c-g<pEtN&vW1t`;piEmsMj~TfZc^ab_e]h\jZlYmXnWoWoYo\n]o^p_p_p_p_p_p_p_pli!e-k:tCyL&zU1y]\IdSk]vfoxwr~mjhhЌkՍmՍo֌p֋q؊qىrڇrڇrڇrڇrڇrڇrڇspu&, 6@F'L1R;YE`OhYߎscՆ}nxxsomlȑnґpӐrԏsՍt֌t؊uىuىuىuىuىuىuىtqx$+ 5>C$I.P7VA]JߝgTԕobˍxnÅyyurqsДtђvґwӏwՍw֌x؊x؊x؊x؊x؊x؊x؊ur{#) 4<A"F*M3T<[DףcS̚lb“un~y{xvwϖyДzђzӐzԏzՍz׋z׋z׋z׋z׋z׋z׋us}!) 49>D&J.R5ܯYAϨaRŠiarnzy~|}͗~ϕ~Г~ґ~ӏ}Ս}֋}֋}֋}֋}֋}֋}֋vt ( 37;A"H(P.ԴV@ɭ_Qg`omwx˘ΖДҒӐԎ֌֌֌֌֌֌֌wt'2 48=F!ܿL,ιT?ñ]Pe_lltw|}zǘ|Ζ}Д~ҒӐԎ֌֌֌֌֌֌֌xu&/ 04:DH+ȽS=[Nc]jjqvzytqØsϖvДxґyӐzՎ{֌{֌{֌{֌{֌{֌{֌xv%+ , /6<G)Q;YLa[hhotw~yqlikДnђqґsԏuՍv֋v֋v֋v֋v֋v֋v֋yx#&%(07E'O9WJ_Xfemqu{z~qjebcґgӐjԏmՍn֌p؊p؊p؊p؊p؊p؊p؊{|! $5C$M6UG]Udbkm{svr|~jc^[[Ս_Սc֌f׋h؊jوjوjوjوjوjوjو|%6A!K3SCZQb]~igtqpk{xd~]XVUۆXڇ\ڇ_ڇaۆcۅcۅcۅcۅcۅcۅcۅ~ھ %5@!I/R>YK`Wvhampiezp^̆uX̕yȚ{Qͼ|P|SU߀XށZށ\߁\߁\߁\߁\߁\߁\߁ ۵ % 3>%G2N?UIv]Smf[eoa^zgX܆kSܕoPݦqM޻rMqNtPwRxSyUzUzUzUzUzUzUz ݫ͸ % 3='F3N>vUGl[NdcU]mZXw^SbNeJgGiFiHiKjLmNoOpOpOpOpOpOpOp б '4>'G2vN;lTBdZH]bMWkQRuUMXHZE\B^A_@`C`G_HaIcIcIcIcIcIcIcԩµ )5~@%tF-kL5cR:\Y?V`CPhGLqJG{LCN@P>R=T;U;UA;C9E8F6G5H5I4I7I7I7I7I7I7I7Iɫ~u' l/d7\>VE"PK%KR(FX+A_->g/;o18x364361708/:.;.;-<-<-<-<-<-<-<yne^' W0Q7K>FEAL=R9X6_!4f"1n$/w%-&+())(*'+&,&-&-&-&-&-&-&-}ui _WPI&D. ?6 ;= 7C3I0O.U,[*b'i%r#{!|peZQ IC=8&4-03-9*>'C%I #N !T Z a i r |  \W&Q2N<WE[N\X"[c+Yo2Wz8T=RAPEOGNIMKLLKMJNIOIPHPHPIPKPMOOPOPOPOPOPOPOP\X&R2Q:ZC_M_W#^a+\m3Yy:W?TCRGPIOKNMMOLPKQKRJRISJSKSMRORPSQSQSQSQSQSQS]Y&S1T9]BbKbU#`_,_k4\w;Y@VETHRKQNPOOQNRMSLTKUKULUMUPTQURVSVSVSVSVSVSV^Z%T1X7a@eIfS#d]-bh5_t<\BYGVKTNSPQRPTOUNVMWMXLXNXPXSXTYUYUYUYUYUYUYUY_[%U0\4e=jGkQ$iZ-fd6cp=_|C\IYMWPUSSURWQYPZO[N[O\Q[T[U\V]X]X]X]X]X]X]X]`\$V/`2j;oDpN#oW-ka6gl>cxE`K\OZSWVVYT[S\Q^P_P_R_U_W`XaYb[b[b[b[b[b[b[ba]#Z-e/o8tAvK#uT-q]6lg?hsFdL`R]VZYX\V_T`SbRcScUcXdZe\f]f^f^f^f^f^f^f^fb^#^*i-t5z>|H"{Q,xZ6sc?mmGizNdT`X]\Z`XbVeUfTgVgZg\i]j_j`jajajajajajajajc`"b'n*y2<F!O+X5{`>uiGotNjUf[b__c\fZiYjXkZk]m_naobocndndmdmdmdmdmdmda"f%r'~0 ;EM)U3^=}fFvpNr|Um\hbdfaj_m]o]p^p`rbsdsesfrgqgpgpgpgpgpgpeb!i#w%/ 9CL&S0[:cDlMywUt]nciifncqatauavdwfwhwivjujsksksksksksksfc!m {#. 8AJ#Q-Y7`AiJ߁tSz~]teolkqhufxeze{h{j{kzlxmwmvnunununununugd p~", 7@H N)U3]<ݏfGӈoSˁy^{funqtnxk|j~jl~m}o|pzpypwqwqwqwqwqwqwhd s +5>DK%R-ߝZ7ӕcFʎlSÇu^~g{owuszp~ooʂpށq߀r~s|szsysxsxsxsxsxsxifv*4 ;AH O'آV6̚`EÓiRr^zgo}vy|vttńu݃vށvw}w{vzvyvyvyvyvyvyiix(2 7=DݭK$ЦT5Ɵ^DfRo]wgow~}{zyz܄z݂z߀z~z|yzyyyyyyyyyyyyjk{&03 9AֱG#ʫR4\CdQl\tf}ov}ۅ݃ށ~}}}{|z|z|z|z|z|zkm~$,/4 ݺ:еF!ůQ2ZBbOj[reznv||ywׅx݃zށz{}|{|z|z|z|z|z|zkp"&)/ֿ6ʺD O1X@`NgZodwmu{ztqoхq݃s߁u~v}w{wzwzwzwzwzwzls !&4 ľBM/V>^LeWmbuk~ryyr~mig̓iނl߀o~p|rzryryryryryrymv2 @K,T<\IcUk_rhy{orvk{fb`ʀbe~h|j{lymxmxmxmxmxmxn{ڻ / =I)R8ZFaQh[zpdrykkqdv_z[|Y|Z{^{azcyfwfwfwfwfwfwfwp ٳ Ͼ ,;F&P5XA_M|gVso^kwedk^pYsUuTuSvWvZv\u_t`t`t`t`t`t`tr ٩ε )7D!M0U<}]GtePlmWev^^ācYÎhTÝkQîlOmNmPoSpUpXpYpYpYpYpYpYpwޠϮĹ )7BL)T5u\?mdHelO_vTYҁYTю]Pѝ`MҰbKbJbKfMhOiQiRiRiRiRiRiRi ҦIJ * 7B}J)tQ3kY:daA^kGXuKSOOSKUIWGWFWFYG\I^J`K`K`K`K`K`K`ٞǬ , 9|AsI'jP/bW5\_:Vh?RqBM|FIIFKCM@N?O>NBOCQDSETETETETETET˦ . y7p?hF"`M(ZT-T\1Oe5Km8Gw;C=??D>F>F>F>F>F>FП{t* l3d;]CWJ QQ$LX'H`*Dh,@q.<{192543617/8.9-919393939393939}vme$^- X6R=LEHLCS?Z>>>=>=?>>@>C=D>F?F?F?F?F?F?P K*E5J8M=QHRRQ^Oj%Mw+J/H3F6D8C:B@?@@?@?@>A@@B@E@FAHAHAHAHAHAHAQL)G4M6Q;UFVPU\Rh&Pt,M1J5H8F;EC?CABAABAC@C@CCCFBHCIDJEJEJEJEJEJERM)J2P3U9YCZMYX Vd'Sq-P}3M7K:I=G?FAEBDDDECEBFBFCFFFIFKGLHMHMHMHMHMHMHSN(N/T0Z6^@`J^U [`(Xm/Ty4Q9N=L@JBIDHFGGFHEIDJEJGJJIMKNLOLQLQLQLQLQLQLTP'R,Y-_2d<fGdR a\(]h0Zu6V;R?OCMELHJIIKHLHMHMHNKMNOPPRPSQTQTQTQTQTQTQUQ'V)^*d/j:lElO hY(dc0`p7\|=XBUFSIQKOMNOMPMQLQMQPRRTTUVUWUXUXUXUXUXUXUWR&Z&b&j,q7sBsLpV(k`0fk8cw>_D[HXLVOUQSSRTQUQURVTXVYXZZZ[Y\Y\Y\Y\Y\Y\YXS%^#g#p*w5 z@zJxS&s\/nf7ir?e~EaJ^N\RYUXWWXVYVYV[X]Z^\^]^^]_\_\_\_\_\_\YV#b l u(}3 =GP${Y-vb6qm>lyEhKdQaU^Y\[[^Z_Z`Za\b^b`baabac_c_c_c_c_c_ZY!fpz&1 ;DM!V+~^4yi=ttEoLjSfXc]a`_c^d^e_f`fbfdeedecfbfbfbfbfbfb[\iu~$.8BJR'[0݁f:zpEuzNpUl[i`fddgcibjcjdjfighhgifidididididid[_ly!,6 ?GO"܎X-҇b:ʁlE{uNvVr]nbkfijglgngnimjlkjlilglflflflflflf\bp|)3 <DߚKӔU,ʍ_9‡iEqO|{Wx^tcqhnllolplqmonnolojoiogogogogogog]dr&08 ?؟G͙R+Ē]9fDnNwW}^ydvismqqqrqsrqsosmsksjrhrhrhrhrhrh^gu#,3ݨ9 ѣEǝP*Z8cDlNtW|^d|jynwrvtvtwrwpwnvlvjvivivivivivi^ix',֬4 ˧CN)X6aCiMqVy^djo}r|t}|u|}s||q|{o}zm}yk}yi}yi}yi}yi}yi}yi_k{ ݰ$а2 ƬAL'V5_AgLoUw]din|rwtuutsuqvow~mx}kx|ix|ix|ix|ix|ix|i`n~ֶ˴0?K%T3]@eJlSt[}bhymtqptmtmsoqpormsktitititititiaq ٵ ϹŸ.=I#R1[>cHjQrYz`xfrlmoirfserhpjnllmkninininininicu ܢԭ ϸ ɽ+;G!P/Y;aFhOpWxx^rdkifmbo_p^o`ncmfkgjihihihihihihgy ߚӦ̱ǻ(8DN,W8^BfKxmSqvZk`ed`h[kYlXkYk\j_iahcfcfcfcfcfcfk~ ̪֞Ĵ$5 BL(T3\>ydFqkNktTd~Z__ZbVeSfReRfUfXfZe\d\d\d\d\d\dp ݖΣĮ 1 >I#R.zZ8rb@kjGdsM^|SYWT[P]N^M]K_N`Q`S`U`U`U`U`U`U`wӛƨ ,:FzO'rX1j`8dh?^rEX|ITɈMOɕQLɥSJɹTISGUHXJYLZNZNZNZNZNZNZܓʢ ,9yCqM jV(c_/]g5Xq:S{>OوBKٖEH٦GFںHEGDIBMDOEPGRGRGRGRGRGRϛ~-v8nAfJ_R#Y[)Ud-Pm1Lx5I8F:C<@>?>>>=?=B?D@F@F@F@F@F@F֓ģyq+j6 c?]GWORW!M`$Ii(Fs*B~-?/<1:38465655476989898989898Ȟyskd'^1X; SCMKISEZAc>l;v!7#4%2'0(.)-*,*,*/*/*/*/*/*/*um e^W#R,L4H< CD ?L94%0,,2(8%>"DJQYcn|  rdTKD=7 1,($" ',16<BI Q Z fsD$?.<6@8A=AEAQ @]?j4B6D;DCEO D[Ah?u4@4A4A4A4A4A4G"A,E/I0L5M=NHMTKaHn E{%B(?+>.=/<1<2;3:4:5:5:5:5:5>5A7B8D8E8E8E8E8E8H"C,H,N-Q1S9UESQQ]Nj!Kw&H+E.D0B3A4A6@7?8?8?9?9?9@8C:EH@JAKAMAMAMAMAMAMAJ H'Q%X%]*`3c?bJ`U\a#Ym)Uy.R3P6N9L;K=J?J@I@IAJAJBJDLEOFPFQFQFQFQFQFQFL L$U!]!c'g1j< jGgRc\#_h*\t0Y5V9TeDbI`M^P]S[U[V[V\W]W^V`U`TaSaSaSaSaSaSPZepx$.8 BKW#yb/tl8ov@lFhKfPcSaV`Y_Z_[`[aZcYdXdWeUeUeUeUeUeUP]it}!*4= ܋HхT#^.zh8uq@qzGnMkRhVfYe\d^d^d^f]g\hZhYhWhVhVhVhVhVR_lx%/ޕ8 ӐEʋQ"…[.e8{nAwwHtNpSnWk[j^i`hai`j_k]k\lZlXkXkXkXkXkXTbo{(ؙ3̕BĐN!Y-b7k@|sHy|NvTsXq\o`nbmcnboao_o]o[oYoXoXoXoXoXVdr~ݞ ў1ǚ@L V,`7h@pH~yN{TxYv]tascrdsdtbt`s^~s\~rZ~rY~rY~rY~rY~rYXgu֣ˡ/ž>JT+]6f?nGvNT~Y{]ya}xdzxeyxexybyx`yw^yv\yuZyuZyuZyuZyuZyuZZix ݚ ٢ Цƥ,<HR)[4c>kFsM|SX]zav~ds}eq~eq~cr}`s{^tz\ty[uyZuyZuyZuyZuyZ]l { ܓ՝ ѥ ʪ*:FP(Y3a]xCXGTKPNMPKPKPJQLRNRPRQQQQQQQQQQv݉ʗ%4 |@uJmS#g\*ad0\m6Wv:S?OBKEHFGFGFDIEJGKILJLJLJLJLJLѐž y.r< lGeP_Y!Zb'Uk,Qu0Mρ4Iώ7Fϝ9DЮ;B;C:@>>@@BACBDBDBDBDBD݈ǘx tn+h7aB\MWVS_Oi"Ks%G~(D+B-?/>/>/<19496:8;9;9;9;9;9͒~tnhb*]5W? RHMQJZFcCm@x=!:#8$6&5&4&4&2(2+3,3,3,3,3,}qgb\W'R1M:HB DK AT>\;e8o5{20.,+********{oc[UPK#F,B4><:C7K4S1[ .d +o (| &$"! {n`TNIC?:%6,23/:+A(H%O"W `ly         |m_QGA< 72.*#&)"/5;BIQZf t   }m_PB:5/* &"#(-3 9 AIS^l|9'3254868;6C3N1[ /h -v+))((('''''''''(+-/////:'4181;4;9:A7K5X 3e1s/--,,++++* * * * + +,/!1"3"3"3"3"3";&50;/>1?6>=k;x977 6!5"5#4$4%4%4&4&4&5%5&6(8):)<*<*<*<*<*=%=*C(G)I-J6JAIM GZEgBt@> ="<$;&;':(:(:):):):);):+;-=.?.A.A.A.A.A.>%A&H$L%O)R3Q>QI OVLbJoG{ E#C%B'A)A*@+@,?-?-@-@-@/?1A2C3D3F3F3F3F3F3@$E#L R!V&Y/Y:YF VQT]QjNu!L%J(I+G,G.F/E0E1E1F1F2E5D6G7H8J8K7K7K7K7K7A#IQW\#`,`6`A ^M[XXdUp#S|'P+O.M0L2L3K4K5K5K6J8J:JO@OAQAR@S@T?T?T?T?T?FPYbhl$o.o8nDkNh[dg#`q*]{/[4X8W;U=T?SASBSCSDSETEVDWDXCXBXBXBXBXBHS]fmr!u)v3v> sJoWkb#gl+dv1a7^;\>[AYDXFWGWHXHXIYHZH[G\F\E\E\E\E\EKWakrx{$}-~9{FvSq^$mh,jq3g{8d=bA`E^G]J\K\L\M]L^L_J`I`H`G`G`G`G`GNZdov}'ۄ4ЁC|OxZ#sd,pm3lv:j?gCeGcJbMaO`P`PaObNcLdKdJdHdHdHdHdHP\h rzފ Ҋ0Ɇ@M}W#ya,uj4rr:o{@lDjHhLgOfQeReSfQgPgNhLhKgIgIgIgIgIR_k u ~ ֏̎.Ë= JU"~^+{g3wo:tx@rEoImMlPjSjTjTkSlQlOkMkLkJkJkJkJkJTa n x ܉ ؏ ГƓ+; HR!\+d3|m:yu@w}EuJrNqQoToU}oV|oT|pR{pP{oN{oM{nK{nK{nK{nK{nKWc p|܅ԌГ ʖ)9 FP Z*b2j9r?|zEzJxNvQ{uTxtVvtVutUuuSutQusOvrMvqLvqLvqLvqLvqLYfsֈϐʖĚ&7 DNW(`1h8p?xDI}}Mx{QtzTqyVoyVnzUnzSoyQpwOqvMquLquLquLquLquL[iw݂Ћɓę$4ALU'^/e7m=uC{~HvLrPnSkUhVgUhSi~Qj|Ok{MlyLlyLlyLlyLlyL^ lzֆˏė!2?JS%\-c5k;zsAu|FpKkOgRdTbUaTaRcPeOfMg~Lg~Lg~Lg~Lg~La o~ЉƓ /=HQ"Y+a2yi9tq?oyDjHeLaO^R[RZR[P\O^N`LaKaKaKaKaKdtڂˎ,: EOW(y_/sf5mn;hw@cE_I[LWNUOTNTNUMXLYK[J[J[J[J[JhyчŒ(6 BLxT#r\*ld1gl6bu;]@YCUGQIOJNININIPIRHTGTGTGTGTGnʍ#2~>wIqRkZ%eb+`j0[s5W}9S=O@LBJCIBHCGDIDKDMDMDMDMDMDu҆Ó {-u: oEiOcW^_#Yh(Uq-Q{0M4J7G9E:D9C;B=B>D>E>E>E>E>E>}ɍytp&k5e@ `K[TW]ReNo#Kz&GȆ)DȔ,BȤ.@ȸ/?/?0=3;5<6=7=7=7=7=7цxne c`-[:WF SP OYKbGlDwAׄ>ؓ <أ!;ٷ":":#7'6)4+6-6-6-6-6-ŐwlbZXT)P5L?HIES B\ ?fC;K8T6]3h 0t . ,*(''&&%%%%%vi]QIFB>!;*734:0B-J+S(\%f"s         vi[NC>: 62/#+*(1$7!?FNXcpwhZL@72.*&# &+28@H R ]k}xi[K>2+&!  $ *07@JVdu/++2/104/9+A'L#X!f t    !""""/+.02/3126/>+I)V'c%q$~ # #"""""""""""###$&''''0*1-5+7-624:2E/R-`,m *z )(((''''''''(((')+,,,,1)4)9(;*<.:69B7O5\3i 1v0/..--------..--/122223)8&=$@%A)B3A>?J=W ;d 9p7}655443333345433 6!7!8!8!8!8!5'="B F H%J/I:GFER C_ Ak?w=<<;;:::::;:!:#:%:%<&=&>&>&>&>&9$AGKO"Q+Q6OALM KZIfGrE}CBBA A!@"@"@#A#A$@'@)?*@*B*C*C*C*C*C*< EKQVX'X1W<UH RTPaNmLxJI H"G$G%F&E'E(E)F*E-E.E/F/H/I.I.I.I.I.@IPV\_#`,_7]BZO X\VhSrQ} O$N'M)L+K-J.J/J0K0K2J3K3L3M3N2N2N2N2N2CLT\aef'f1e=cJ `W]bZmWw#U'T+R.Q0P2O4O5O6O6O7P8P8Q7R6S5S5S5S5S5FPX `fjl!m+l7jE gRc^`h ^r&\{*Z.X1W4U6T8T:S;S;TX?X@Y?Y?Z>[<[;[:[:[:[:[:LV ` h o swyy.w> tKpVm`!ji(gr-ez2c6a9`<^?]A]B]C]C^A_@_>_=_<_;_;_;_;NX clsx{ ~~+|;yHvSr]!of(mn.jw3h7f;e>cAbCaEaEbEbCcBc@c>c=c|g=|g=|g=|g=R]irzʃņ&6CN|X y`'wi-tp3ry7pwj>wj>wj>T _lv}Ƀć#4ALU^&|f-yn2wv7u;t?|rCxqFupHsoIqpIqpGqqDrpBroArn?rn>rn>rn>rn>V boýŇ 1? JS\%d,k1}s6~{|;zy?vwBrvEouHluIkuIkuGkuEluCmsAmr?mr?mr?mr?mr?Yer|DŽ /< HQZ$b*i0|q5xz:t>p}Bl|Ei{GfzHd{Hd{Ge{DfzCgxAhv?hv?hv?hv?hv?[iv̀È ,: EOW"_({g.vo3rw8m_A\DZEXEXDXCYA[@]>]>]>]>]>bq~È%4@ JyStZ#ob(jj.fr2a|7]:Y>V@SARBRAR@R?U>V=W=W=W=W=gvɃ!0< xGsPmXh`$dg)_p.[y2W6S9P;N=L=L2@2A2A2A2A2|Š|phfc-^9ZDVN RWO_KiHsE~B ?"=#<#<#:&8(7)8*8+8+8+8+Ʌ|qf[WV#S2P>MHIRF[ Ce@o>{;ω9ϙ7ϫ664210!/!/!/!/!}qf[PG FE'D5A@?K=U:_8i5v 3 1 / .--+*)((((~qeYND? =;#9.684B1K/U-_*k(x&%#""!!     qdXLA85 30.'+0(8&@#I!R]iyrdVI>4.+ (%"&-4<DNYg w   sdVH;0'#  !' . 6>HTbsteVG9-#   &.7AM\m$/%/(/'1$6 >IVdr    %.)-+,+.)3$;FSan{       &-,).(/*-/)7'C$P"] jw             !!!!**/&2$3%2*14/?-L*Y(f&r%~%% % % % $ $ % % % % & & &%%&''''.&4"7 9!8%9/8;5G3T1a/m.y - - , , ,,,,,,---,,,-....2#8<>@"A+@6>B xJuSs\qd"ol'mt+l|/j2i5|h8yg:vf;tf#="=#<%;&;&;&;&;&;&zui^[Y$V1S=PGMPJY Gb DlAw><98775433 3 3 3 vk_TL KI(H5E@CJ@S>];g9s 7ǀ 4ǐ 2ǡ1ȵ00.-,++++xk`TJ@:98(756@4K3U1`/l-z+؋*؝(ٱ''& % $ # # # # yl`TH>5- ,+)*(5'?&J$U#a!n ~zl_SG<2*% #!"+4>HR_n      |m_RE9/&!(0 9 C N\l}n`RC7+"  "*3=IWi~paRC5)  #+6CSez/ ,!,.3<F T a o {                      -#)$)"+08CP^kw#*&&(%''#+3@MZgs~&&*", +"(&'0$<"IUbnz     *".000"0,.7+D(Q&]$i#u#########$$%%$ % % $ $ $ $ $ .35588'734?2K/X.d-o,z,,,,,,,, , -- , -,,,,---27:<?@">-<9:E8R7^6j5t5~44 4 4 3 3 3 3 4 44444344446;> CFFF&D2B?@L?Y>d=o}H |Q{zYwy`swhovp!lux%it(fs+cr.`q/^q0]q0]q.^q,^p+_p)`o(`n(`n(`n(Ubmu{.;~E zNuVq^n}fj|m g{v#cz'`y*]x,Zw.Xw/Ww/Ww.Xv,Xv*Yu)Zt(Zt'Zt'Zt'Yfqz +}8xBtL oTl[hcdkat!]}$Z(W*U~,R~-Q~-Q},R}+R|)S{(Tz'Tz'Tz'Tz'^kv~~{'v4r?mI iQeYb`^hW{!T$Q'O)M*K*K)L)L(L'M&N&N&N&cp{zur"o0j;fEbN _V[]XeUnQxN K#I$G&E&E%E%E%F$F$F$F$F$iv~pkhf*b7_A[JXR TZQbNkKuHEB@ ? ?? >!>!?!?!?!?!p}wi`][$Y1V<SEPNMW J_ GhDsA><:998777777xznbUPNM(K5I?FIDRA[?d+<6;A9K7T5_3j1w/-+**) ( ' ''''rfZOD:0.-,)+5+@*J(V'a&o$#ϑ!ϥ н tg[NC9/' &1<HUbrvh[NB7-$&0: F S b txi[M@4*!  $,7BPauyj\N?2'  '1>M_u|l]N?1%  !+9J]s,)(+0 8DQ^lx)&%',4 @N[ht&!" !#'0<J W c o z                ""$$"",8ER^ju&((&&&(#4 @MYepz*---.-",.):&G$T#`"k"u"~""""""###$$%%%%$$$$.12 4553'14/A-N,Z,e,p+y++++++++,-- - - - - , , , , 15 6: <;97+695G5T5`5j4s4|4433 3 3 3 3 4 4 4444444458<@A A?<"=1>A>O>Z=d=nCKQTTRQS"U3TATLSVQ_ PgOoNwNMLLKKKKLLLMLLLL@GPVYZXWYZ/Z=YIXS W[ VdUkTsS{RQQPP P!P!~Q }Q}Q}Q}Q}Q}Q}QBJTZ^_^\ ^`+`:_E^P \X [`ZhYpXwWVV~U!{U"yT#xU#wU"vV vVvVvVvVvVvVENX^bdcacd(e7dCcMaU `]_e^l]t~\}|[yZ wZ"tY$rY%qY%pZ#oZ"oZ pZpZpZpZpZHR[bfhhfgi%i4h@gJfS e[db~cj{brxazv`s_!p^#n^%l]%j^&i^$i^"j^ j^j^j^j^j^JU_ejlljkm"n1m=lGkP jX|h`xggvgosfxpemd!jc#hb%fb&db&db%db#db!ebebebebebLXbinppnprr.r;qE}pN znVvm^slepkmmjujigi!eh#bg%`g&_g&^g%^g#_g!_f`f`f`f`fO\emrutst vw+w8|vCxuL ttT qs[nrckqkhpseo|bn _m"]l$Zl%Yl%Xl%Yl#Yk!Zk[k[j[j[jS`iqvyywy {|({|5w{@szIoyQ lxYhwaevhbup_tz\tZs!Wr#Ur$Sr$Sr$Sq"Tq TpUpUoUoUoWdmu{~}}|x$u2q=mFiO fV c~^`}f]|nZ{wWzTzQy!Oy"Ny"Mx"Mw!NwNvOuOuOuOu\hrzytq n.j9gCcL`S ][ZcWkTuQNKIH GGH~H}I|I|I|I|anx{pk hf)b5_?\HYPVX S`PhMrJ}HECBAAAABBBBgt~uga^\#Z/W:TDRLOTL\ Ie GoDzA?=;;:::::::n{{nbWRQO(M4K>IGGPDXBa?k =w : 86544333333wsg[OGDCA+@7?A=J;S9\7g5s20.- ,, + * * * * * xk_SH=6 43!2,170A/K.U,`*m){'%$##"!!!!!{naUJ?4+$ ""!* 4?JVcsDžǙȮ}pbVJ>4*" %0<H V e x ֍ ؤ ؾ   rdWI=2(  $.:GVg{teWI<0%  !+7EVh~vfXJ;.#  '4CUixhYK;-! "0@Si(%% '-5AO\it~%"!# (0=KXdpz"" ,9FS`kv(4 A N[fqz     !! $/<IUaku~%%$ ##")5CO[fpy() (+ +)&"#.!; I U `!j!t!|!""""###$%%%%%%%%%, -.11 /+)%(3(B*O+Z+e+n,v,~,,,,,,,--....----/15763/.1,3<4I5U5_5h5p4x444444 4 4 5 5 5 5 5 5 5 5 5 35:>@=7 8:&=6>D>P=Z=c=kGPVXYVSTV%W4W@WJVSU[ Tc TjSrRz}R{QxPvPtPsPqPpQpQpQpQqPqPqP@KTZ]^[XY["\1\=\G[PZX Y` ~Yg{XoyWwvVtVrUoUmTlTjUjUjUjUjUkUkUkUCOX]ab`\^`a.a:`E`N~_V {^] x]ev\ls\tp[}nZkZiYgYeYdYdYdYdYeYeYeYeYFR[aefcabde+e7eB|dKxcSuc[ sbbpajm`rk`{h_f^c^a]`]_]_]_]_]`]`]`]`]JV^eiigef hi(~j5zi?viIshQpgY mg` kfghepedycd`c^b\bZbYbYbZbZa[a[a[a[aMYbhmmkik m|n%xn2un=qnFnmOklV hl^ ekecjm`iv]i[hXgVgUgTgTgTfUfUeVeVeVeQ]flqpon}pxrus!rs/os:lsDirLfrTcq[ `pc ]pk[otXnUnSmQmOmNmNlOkOkPjPjPjPjUajqutt|svuqwoxly+iy7fy@cyI`xQ]wX [w` XvhUuqRu|PtMtKsIsHsIrIqJqJpKpKpKpZfovyxxwyo|j} g~d&b2_=\FZNWUT~] R}e O}oL|yJ|G{E{D{C{CzCyCxDwDvDvDv_kt|~}~rfa^\!Z.X8UBSJPRNZKb Il Fw CA?=<<<===~=~=~fq{ym_XTRP'O3M=KEINFVD_Bh?s = : 8 766555666myrfZPI GE D+C6A@@H>QKZj~̫̔|n`RE9.#  '1>K[nބߛߴpaSE8,!  $/<K]qrcTF7*  +9J^tteVG8*  (7J^v$" !$)2>LYepz! #-:HUalv )6CP\gqz $0>KWblu~ + 8EQ\fpx   $0> J V a j s { " ! ! (6COZdmu}&%&'%! -<I U!_"h"p#x###$$$$%%&&&&&&&&)(-0/+" #&'(6*D+O,Y,b,j-r-z--------..//....,.5996/-0!214>5J5T5]5e5m5t5|554445556666555/4<AB@:69;,<:=F=P=Y=a=h @B'C5DBDLDUC]CdCkBsB{B A A A A~A|AzB yB xB xB xB xA xA 6@HMNMIEFH#I2J>JHJQIYI`IhHoHw G }G zGxFvFuFsFrGqGqG qG qG qF qF 9DLQSRNJKM O.O:OEONOVN]~Nd|Ml yMt wL} uLsLqKoKmKlKkLjLjLjK jK jK jK =HPUXVSOPRT+T7TBTK|TSzSZxSbuRi sRq qQz nQlPjPhPfPePdPdPdPdPeO eO eO ALTY\ZWTU WX'Y4}Y?zYHwXPtXXrW_oWf mVn kVw hUfUdTbT`T_T^T^T_T_T_S _S _S DPX]_][XZ [}\$z]1w]<t]Fq]No\Ul\]j\d h[l eZu cZaY^Y\X[XYYYXYXZXZXZW ZW ZW HS[aba_\^{_xa!ub.rb9obClaKjaSgaZe`b c`j `_s ^^}[^Y]W]U]T]T]T]U\U\U[V[ V[ LV_dedcaybudreof+lg7jg@gfIefQbeX`e`]dg [dp Yc{VcTbRbPbObObOaOaP`P`P` P` OZcihggyesgoiljik(gl4dl=blF_kN]kVZj]Xje Vin Six QhNhLgKgIgIgIfJfJeKe Kd Kd T^gmlkkskmmhn epbq$`q0^q:\qCYqKWqSUpZRpbPpk Nou Ko InGnEnDnCmDlDkEk Ej Ej Ej Xclqpozonpes`u]v[wYx+Wx6Ux?SxHQxOOwWLw_JwhHvs Ev Cu Au?u>u=u>s >r >q ?q ?p ?p ^iquttutiv^yX|T}R~Q&O1M;LCJKHTF\CeAp?~|<~ :~ 9~ 7~ 7} 7{ 7z 7y 8x 8x 8x doxyy{ypzd|XPK HG E+D5C>AG@O>X4*!! + 6 A N \ l teWK@5*!  "+6BP_qćĝĵxj\OA5)  !*5CRcxՏէ{l^PB4(  '3BTg~}n_QB4'  $1AUjqaRD4&!/AVm  %.;IVbmv  *7EQ^hrz%2@LYcmu}  ,:GS^gpx  &3@MXajrz  +9FQ[dlt{   " 0 > J U ^ gov~ (7DOYaiqx"!'*)$"1 >!I"S#\$d$l$s$z%%%%&&&''((''''&)1440)#&(+*8+D,N-W-_-g-n.u.}......////////)18<<92- /1&344@5J5S5[5b5i5q5y5555556}6{6{6z6z6z5z5-7?CD@:679":/<;h >g >f?e?e?d?dWaihg{gqgeh\jXlTnRoPo$Np.Mp8KqAJqIHqQFqYDpbBpl@px>p0$  !,:J]rzk\M?0# +:Maym^O@1"  );Of"+8FS^irz&4BNZdmu} ".<IT_hpx   (6CNYbkry "/<HS\elsz  (5ALV_fnt{  -:EPYahov}   $ 2 >IS[cjqx#%$+8CMV]els{       &-0.(" &!3">#H$Q$Y%`%g&n&v&&''''((~)})|(|(|(|($.5861,&&(!*.+9,D-L-T.\.c.j.r.z//}/{/z/x/v0u0s0s0s/s/s/*5;?<83/.02)354?5I5Q5X~5_}5f{6ny5vx5v5t5r6p6o6m6l6k6k6j6j5j50:ACA>:65 78%:1;<|;Ez"z?.x@8uABsAJrAQpAYnA`lAgjAphAygAeAcAaA`A^A^A]A]@]@]@]@9CJKIGDA~AzBvCtE*qE5oF?mFGkFOjFVhF]fFedFmbFv`F^F\E[EYFXFXFWEWEWDXDXD=GNNLKI}ExFtGpHnI'kJ2jK<hKDfKLdKSbKZ`Kb_Kj]Kt[JYJWJUJTJSJRJRJRIRIRHSHAKQPON~LxHrJnK kMhN$fN/dO9bOBaPI_PQ]PX[O`YOhWOrUO}SORNPNNNMNMNMNMMMMNLNLDNTSRQzPrMlOhP eQcR!aS,_S6]T?[TGZTNXTVVT]TTfRSoPS{NSLSKSISHSHRHRHQIQIPIPHRWVUTvSlQgSbT_V]W[W)YX3XX<VYDUYLSYSQY[OXdMXmKXxIXGWEWDWCXCWCVCUDUDTDTLVZYX{XqWfVaX]YYZW[U\&S]0R]9Q^AO^IM^QL^XJ^aH]kF]vD]B]@]?]>]=\>[>Z>Z>Y?YPZ]\[v[m[a[[]V^R` PaNb"Mb,Lc5Jc>IcFGcNFcVDc^Bch@cs>co=o"JV`hpx~ +8EPZckry  %2?JT]elsz  ,8CNW_gmtz  $1<GQY`gnt{  )5@JS[bhou}  !.:DMU \ c j q x  ! &3>GPW^els|#)*&"!-8BKRY`gow~ } { y!w"v"u"t!t!t!!+11.*&! !(#3$=$F%N&U&\~&c|'k{'sy'|x(v(t(r(q)o)m)l)k)k)k(k((28752-)' (*#+/~,9|,Bz-Jx.Qw.Xu.`s/gr/op/yo/m/k/i/h0g0e0d0c0c/c/c/.8=<:730. /{0x2+v35t3>r4Fp4No5Um5\l5dj5lh5ug5e5c5a6`6_6]6]6\6\5\5\43<A@><96{4w5t7q8'o92m9;k:Cj:Kh;Rg;Ye;ac;ib;r`;}^;\;[;Y;X;W;V;V;V:V:V97ADCB@~>y;t:q:m<k=$i>/g?8e?@d@Hb@Oa@W_@^]@f\@oZ@zX@V@T@S@R@Q@P@P?P?Q>Q>;EGFEDyBt>o?k@ gAeB!cC+aC5_D>^DE]EM[ETYE\XEdVEmTExREQDODMELEKEKDKDKCLBLB?HJIH}GuEnBiCeD bE_F]G(\H2ZH;YICWIJVIRTIYSIaQIkOIvMIKIJIHIGIFIFHFHGGGFGFCLLLKyJpIiFdG_I\JZKXL%VL/UM8SM@RMHQNOONWNN_LNiJNsHMFMEMCMBMAMALALBKBJBJGOONNuMlLcJ^LZMVNTORP"QQ,OQ5NR=MRELRMJRTIR]GRfERqCR~AR?R>R=RW{?\F>]O=]W;]a:]l8]y6]4]3]1]1\1[1Z1Y2Y2XTYXXsWiW`XTYN[H]C_@`>a=a ;b):b29b:8cB7cK6cT4c]3ch1cv/c.c,c+c*c*b*`+_+_+^Y\\{[o[e[\\Q^I`CbKYi{w}uptbuUxI|?4+" "+5BP_q}x|i|[NA6,#  "+7ETf{qaSF9.#  !+8HZnyhYK=1%  +:L`wؒجp`QC5(  *<QggXI:* ,?Un%2?KV`hpx -:FQ[cksy  (5@KU^fmtz ".:EOX`gmtz'3>IRYagmsz !,8BKSZagmtz%1;EMU[bhnu|   )4>GOV\cipx   " . 8 A J Q X ^ e lt}~}zxwwww!$# '2<DLSZ`~h}o{xyxvtsronmmmm )+*($  "-~7|@zHyOwUv\tcskq tp n!l!k!i"h"f"e#d#d"d"d!&/10.+($ ~ {"x#)u$3s%<q%Cp&Kn&Rm'Yk'`j'hi(qg({e(d)b)`)_)^*\*\)\)\)\(,55431-|+y(v'r)p*%m+/k,8j,@h-Gg-Ne.Ud.]c.ea/n_/x^/\/Z/Y/X0V0U0U/U/U.U.1:9876z2u0r.n. k/i0!f1+d24c2=a3D`3K_4R]4Z\4bZ4kY5uW5U5T5R5Q5P5O5O5O4O4O36=<<;{:t7o5l3h4 e5b6`7(^71]8:[8AZ9HY9PW9WV:_T:hS:sQ:O:N:L:K:J:I:I9I9I8J8:@??>w=p;j8f8b9_:\;Z;%Y<.W=7V=>T>FS>MR>UQ>]O?fM?pL?}J?H?G?E?D?D>D>D=D=E<>CBB}As@k?e<`<\>Y>W?U@"SA+RA4PB<OBCNBKMCRKCZJCdHCnGC{ECCCBC@C?C?C?B?A@A@@AEEEyDoDgB`?[AWBTC QDOENE(LF1KF9JGAIGHHGPFGXEGaCHlBHx@H>HCKFBLMALV@L_>LjPC%cG#cQ"d\!didyddddca``_YX{XmXbXYXPYG[>^7`1c*f$i !j jj k(k0k9kBlLlXleltllllkihhg]]u\h\^\U\K^Ba9d2g+j$mps ttt!u)u2u;uFuRu_ un u u ut t s q q pbapadaZaObEe2' $1@Re}o_QC6*  $3DXnшФgWI;.! $6I_x_PB4& %9Og"/;GR[dlsz *6ALV_fmtz $0;FPY`gntz *5@JRZagmsz#.9CLT[agmsz (3=FMU[agmsz!,6?GOU[agnu}   %09AIPV\bipx~}|{{{{  )3<CKQW^dl}t|~z x w u s r p p o o o    # - 6~>|F{MySxZvauhsqq{pnlkihfeeee$$#!|y(v1t:rAqHoOnVl]kdimhwfdca`^]\\\\%*))(%}"yxvro#m-k5i=hDfKeRc Yb aa i_!s]!\!Z"Y"W"V#U#T#T"T"T"+...-|+v(r&o#m! j"g#e$)c$1b%9`&A_&H]&O\'V[']Y'fX(pV(|T(S)Q)P)O)N)M)M)M(N(02221v0p-k+h)f( c(`)^*%\+.[+6Y,=X,DW-LU-ST-[S-cQ.nP.zN.L/K/I/H/H/G/G.G-H-4555{5r4k2f/b._-\.Z/X0"V0+U13S1:R2BQ2IP2PN3XM3aK3kJ3wH4G4E4C4B4B4B4B3B2B28888w8m7f6a3]2Y2W3 T4R5Q5(O60N68L7?K7FJ7NI8VG8_F8iD8uC8A9@9>9=9<9<8=7=7=6;;;;s;j:b9]7X6T7Q8 O9M9K:%J:-H;5G;<F=<=:=9=8=7=7<8;8;8:=>>|>o>f=^=X;S:O;L<I=G>F?"D?*C?2B@:A@A@@I>AQ=AZ@@@xAlAb@[@T?N?J@FADBBC@C?D'>D/:EF9EN8FX6Fb5Fn3F|1F0F.F-F-F-E.D.C.CCCCtChC_CWCPCHCDEAF>G nJnWnenvnmmllkjjZtZfZ\YSYHZ?]6`.c&gjmqt w wwww$x-x7xCxPx^xoxxwvuutt~_n_b^Y^M_Bb9e0h'lptw {~ &0;HWh|weid_cRdGgGNU[agmsz#.7@HOU[`fls{ '1:BIOU[`gmu~ !*3<CIPU[ahp~y|{yxvusssss   $.6>}D|KzQyWw]vdtlsuqonlkihhggg  |y(w0u8s @r Fp Lo Sm Yl aj ii rg ~f d b a ` ^]]]]{xxw sp"n+l3j;iBgIfOdVc]af`o^{\[YWVUTTTT""##"y!sonm jge'c/a7`>^E]K\RZZYbWlVwTRQONMLLMM&''({'r&l$h!fdb_]#[+Z3X:WAV HT OS WQ!_P!iN!tM!K"I"H"G"F#E#E"F"F!*++,v+m*f)b&_$]"[!X"V#T$(S$0R%7P%>O&EN&LL&TK'\I'fH'qF'E(C(A(@(?(?(?(@'@'-./}/q/h.a-]+Z(W'T' R(P)N)%M*,K*4J+;I+BH,IF,QE,ZD,dB-o@-}?-=-<-:-:-:-:-:,:,012y2m2d2]1X/U,Q,O- L-J.I/"G/*F01E08C0?B1GA1O@1W>1a=2m;2{928262524242515150345u5i5`5Y4T3P0L1I1G2E3C3B4'@4.?56>5==5D<6L:6U96_76k66x472717/7/7/6050504667r8f8]7V7P6K4G5D6A7 ?8>8<9$;9,:939::8:B6:J5:S4;]2;h0;v/;-;,;*;);*:*:+9,889|:n:c:Z:S:M:F8B:?;<< :<8=7=!6>)4>03>72??1?G0?P.?Z-@f+@t)@(@&@%@$@$?%>&=&=;<x=j=_=V=O=I=B=<>9?6A4A2B1B/C%.C--C4,D<+DD*DM(DX'Ec%Eq#E"E EEDDC B!A>?t@g@\@S@L@F@>A8C4E0F-G +H*H)H"(I)'I1%I9$IA#JJ"JU JaJoJJJJJIHGGBBpCcCXCPCICBD;E5G0I+K&M $N"N!O O%O,O5O=PGPQP]PkP|PPPPONMME{FkF_GUGMGFG?G7J1L+N&P SU VVV V'V0V9WBWMWYWhWyW W W V V U TSIvJgJ[JQJJJCJ;L3N,Q&T!VY\^ ^^^"^* ^3 ^= ^H ^T^b^s^^^]]\[[NpNbNWNNNGN>O6Q.T'W!Z]`c f gggg$g-g7gBgNg\gmgffeeddczRjS]RTRKRBS9U0X([!_beh kn ooopp'q0q;qHqVqfqyqpoonmmsXeWZWQVFWHRZbiou{ !,8CLT\ciou{ '2<FNV\chnt{!+6?HOV\agmsz %/8AHOU[afls{)2:BIOUZ`flt} #,4<CIOTZ`fnw~|{zxxxxx &.6=C~I}O|Uz[yawiuqt|rqonmlkkkk  | z(x0v8t>sDqJpPnVm]ldjmhwgedca`````| y x usp#n+l3j9i@gFfLeRcYba`j_t]\ZYWV V U U V vqnm m j g e &c .b 5` <_ B^ H\ O[ VY ^XhVsUSQPNMMMMMwoifddb_]![)Z1X8W>VETLSSQ[PeNpL}KIGFEEEEE!"|"q"h!b_\[Z WUT%R-Q4O;NBMHKPJXHbGmEzCB@?>=>>>#$%w&l&c%]$Y"VTS QNM"K)J1I7G>F EE MC UB _@!j?!w=!;!9!8"7"7"7"8!8!&')s)g)_)X(T&Q#O"L"J"H"G#E$&D$.B$4A%;@%C?%J=&S<&\:&g9&u7'5'4'2'1'1'2&2&3%)*},o,d-[,U+P*L(J&G'D' B(A(?)#>)+=)2<*9;*@9*H8+P6+Z5+e3+r1+0,.,,,+,,,,+-*-*,-y.k/`/X/Q.L.H,E+A+?, =,;-:.!9.(7./6/65/>4/E3/N10X00c.0p,0*0)0'0&0&0'/(/(..0v1h2]2U2N1H1D0@/<0:1 71625233%23,13304;/4C-4L,4V*5a)5n'5~%5#5"5!5!4"4#3#213r4e4Z5Q5K4E4@4:374452607/7.7"-8)+81*88)9@(9I&9S%9_#9l!:| :::9988746n7a7W7N7H7B7<75829/:,; *<)<(=&=&%=.$=5#>=">F >P>\?i?y???>>=<<7z8j9^:S:K:E:?:9:2<.>)@&A$B"B!B C#C*C2C:DCDMDYDgDwDDDDCBBA;v<f=Z=P=H=B=<=6>/@*B%D!FH IIII&I.J6J@JJJVJdJtJ J J J I H G G>q?b@V@M@E@?@9A2B+E&G!IKNPPPP!P)P1 P; QF QQ Q_ QoPPPPOONM}BkC]DRDJDCCGOW]ciou|"-7@IPW]chnu| &0:BJPV\agmt| *3;CIOUZ`fmt} $,5<CIOTZ_fmv~&.6=CINTY~`|gzoyzwutrrqpppq !})|0y7x=vCtIsNrTpZobmjktjhgeeddccd~{wurq#o+m2l8j>iDgIfOeVc]be`o_{]\[YYXXXY }v q om kige&c-a3`9_?]E\K[RZYXbWlUxSRQPONNNNtlgec c a^\![(Y/X5V;UBTHSOQVP _N iM vK I H G F E E E E xme_\ZZZ W U S $R +P 1O8N>MEKMJUH^GhEuCA@>====>rg_YUSRR PNL J'I.H4G;EBDICRA[?e>r<:8755667{ m!b!Z!TPMLKIGED$B*A1@8??=F<O:X9c7o5~320///00"w#i$^$V$P#K"H FEC A?>!<';.:59<7D6L4 V3 `1 m/ |-!,!*!)!)!)!* + "%s&e'['S'L&G%D$B!?!=! ;!9"8"6#%5#+4$23$92$A0$J/%S-%^+%k*%z(%&%$%#%#%$%%$%$%'o)b*W*O*I)D(@'=&:%7&5&4'2'1("0()/(0-)7,)?+)G))Q(*\&*i$*x#*!****) )!((|*l+_,T,L,F,A+<+8*5*2+0+ .,-,,,*-&)--(-4'.<&.E$.O#.Z!/g/v////..--+x-h.[/Q/I/C/>.9.4.0.-/+0 )1'1&1%2#$2*#21!39 3B3L3W3d4t44333321.t/e1X1N2F2@1;16111+3(4%5#6 !6 77 7'8.868?8I9U9b9q999888761p2a4U4K4D4=48434-5(7$9 :; <===#=+>3><>F>R>_>o> > > > = = < ;}4k6]7Q7H7A7;75707*9%; =?AC CCCD'D/D9 DC DN D[ DjD|DCCCCBAx8g9Y:N:E:>:8:3:-;'=!@BDFI J J J J#J+J4J>JIJVJeJwJJIIIHHr<b=U>J>B=<=6=/>)@#BEGJL O P QQQQ&Q/Q9QDRQR`QrQQQPPOOl@]AQAGA@@9@2A*C$FHKNQ SVW XXYZ!Z)Z3Z?ZLZZZlZYYXXWWeEXEMEED>D5E-G%JMPSV Y\^_ ` abcd#d-d8dEdTdfd{ccbaa`_JSJJICH9I/L'ORUY ]`cfhij k mnpq&q1p>pNp_psoonmllZOPNHM=N3Q)T X\` dhkortuwx z |}(5EVk~}|{zVTNSBT7V,Z"_ch mrvz} ,;MbzUYHZ;]/a$flr w} !1CWpNa@d3i'nu| %7LdFk9p+w +@XtӒҰ>y1# 3Kd )4?HPX^ekqw~ #.9BJRX^djpv} (2;DKQX]chov~"+4=DKQV\agnv %.6=DJOUZ`fnw'/7=CINTY`goz~|zyxwxxwu !)07}=|CzHyMwSvYtariqsomljihiiii|ywvt#s+q1o7n=lCkHjNhTg[eccmbx`_]]\\\\\xtpm kihf%e,c2b8`=_C^I\O[VZ^XhWsUTRQQQQQR ~ s l heca _]\!['Y-X3V9U?TESKQRPZOdMoL}JIHGGFGG ukc^[ Z Y WUSR#Q)O/N5M;LAJHIOHWFaEmCzB@?>===>|nd\VSQP P OMKI%H +G 1F 8D >C EB M@ U? _= k< y: 8 7 5 5 5 5 6 vi^VPMJIIH F D C!B(@.?5><=C;K:T8^6k4y21/---./qdYQLGDCBA @><;%:+82796@4H3Q1\0h.w,*('&'()}m`VNHC@>=;9865"3(2/160=.F-O+Y*f(t&$"! !"#yi!\"R"J"D!?!< 9854 20/.%-,+3*;)C'M&W$d"r  u"e#Y$O%G%A$<#8#5"3 0 .! ,!+!*"("#'")�%#8##A"$J!$U$a$p$$$$$$##"q$b&V'L'D'>'9&5&1%.$+%)%'&%&$'#' "''!(. (6(>(H)S)_)n))))((('%n'_(S)I*B);)6)2(.(*(&)$*"+ +,,,$-+-3-<-E.P.].l.~.. - - -,,|(j*[+P,F,?,9,4+/+++&,"./0 1112!2(20293C3N3[3i 3z 3 3222 1 1w+f-X.M/C/<.6.1.-.).#02356 7778$8,85 8? 8J 8W 8e8v8877766s.b0T1I1A19141/0+0%2 368:< = = = =! =)=1>;>F>R>a>r>===<<<m2]3P4F4>47423-3'4"68:=? A C DDDD$D-D6DADND\DmDDCCBBBh6X7L8C8;75606)7#9;=@B EGI IJKK K(K2K=LILWKhK}KJJIIIb:T;I;@;9:39,:%<?ADG ILOP P QRTT#T,T7TDTRTcTwTSRRQQ\?O?E?>>7=/>'@ CFIL ORTWXY Z[]^_&_1^=^L^]^q]]\[ZZVDKCCBFLRX]cipx &/7?EKQV\ahpy  (08>DJOUZahq{|{y "*18>CHNT~Z|azixsvusqpoooml ~}|$z+w1u7t=rBqHoMnSlZkbilgxfdba`aaa`|wrp nllk%i,g1f7d=cBbH`N_U]]\fZrYWVUTTTUUunifc a`_^ ]&[,Z2X7W=VCUISPRXQaOlNzLKJIIIIJtjc^[YW VTSR"Q(P-N3M8L>KEJLHTG]FhDuCA@@??@@ y l a Z U R PON LKJI#G)F/E4D:BAAH@P>Z=d<r:9876667 re[SNJH G G EDBA @%>+=1<7;>:E9N7W6b4p210/..-.}l_UNHDA@@ @ > < ; 9 "8 (7 .6 55 ;3 C2 L0 V/ a- o+ * ( ' % % & ' wg[QIC?<:998 7542%1,02/:-B,K*U(a&o$#! scWME@;85432 1/-,"+)*0(7'?&H$S"_ m~o_SJB<741/.,+)(' %&$-#4"= FQ]k|}k\P G ? 941-+)'% $"! #*2:DN[izzgY!M"D"<"6"2!.!* ' $"  !!!"!"'"/"8#A#L#X#g#x# # # # " " !vd"V#K$A$:$4$/#+#(#$# #$%& &&''%','5(?(J(V (d (t ( ('''&&q"`$S&H'?'7&1&-&)%%%"%'(*+ ,,,,",)-2 -; -F -R-`-p--,,,++m%]'O(E)<)5)/(+(''#'(*,.01 1 1 1 1&2.272B2N2\2l2211000h)X*L+A,9,2+-+)*%* +,.024 7 7777"7*838>8J8X8h8|776665c,T.H/>/6.0.+-'-"-/1357 :; <=>>>&>/>:>F>T>d>w>==<<;^0P1D2;241.0)/$02469 ; =@A B CDEF"F+F5FAFOF_FsEEDCCBX4K5A59524-3&4 58:= @ BEGHJ KLNOO%O/O<OJOZNmNMLKKJS9G9>97817)7!9<?B EHJMOQRT UWYZY)Y6YDYTXgXWVUTTN=C=<<5;,<$>ADH KNQTWY[]^` bdgg"f.f<fMe`ewdca`_IBAA:?0@&CFJN RVZ]`cegikmo ruwv&v5uFtYtosrponFF@E5F*H LQV Z_chkoruwy{} +<OfFK:L.O#SX^ diotx| !1D[v?R2U&Z`g mt{ &9Pj7\+ahp x.E_~ɞȾ/i#py #:Tr !+5>GNU[afms{ $.8@HNTZ_ekr{(19@GMSX^dks| !*2:@FLQV\cjs~}| #+29?DJOU[ckv~|zywrpo %,28}={CyHxNvTu[scqnozmljihgedc{xv utsr%p,n2l7j<iBhHfNeUc]bf`r^][ZYYYXXyqmif edcc a&`,^1\7[<ZBXHWOVWT`SlQyPONMMMMMukd`]ZX WVVU!S'R,Q1O7N=MCLJJRI[HfFsEDCBBBCCxjaZURPN M LKJI"H'G-E2D8C>BEAM?V>a=n;~:988899o b X Q LIGFD CBAA?#>)=.;4::9A8I7R6]4j3z210///0 x h \RKE A ? >=< ;:98 6%5+40372>1F/P.Z-g+w*)('''' rcVME@<97 6 6 54210"/(..-4+<*D)N'Y&e$u#"  m^RHA;74200 0 / - , * ) %( +' 2& :$ C# M! X e u       {iZNE=830-+**) (&%$##)!1 9BLXfvweWKB:40,)'&%# "!  '.6@JVdt  saSH?72-)&$"  $+4=HTbr       o^PE<5/*&#! ")1;E Q ^ m k[MB:2-($! !!!!"& ". "7 "A "M"Z"i"|""!! gWJ!@!7"0!*!& "  !#$& & & & &"&*'3'='I'V'f'y'&&%%$c T"G#=$4$.#(#$"!"!"#$&( * ++++,',0,:,E,S,c,v,++**)_#P%D&:&2&+&&%#$$$%')+ -/ 00111#2,262B2O2_2r1100//Z'L(@)7)/))(%'!&'(*,. 024 5 6788 8(829=9K9[8n877655U*H,=,4,-+(*$)*+-/ 1 468:; = >@@@$@.@9@G@V@i@?>=<<P/C/9/2/,-', -/13 6 8;=@ACE FHJJJ(J4IBIQIdH{HGFEDJ3?36301*0#1358 ;>ACFHJLNO QTUU"T.T<TKS^StRQPONE7<756/4&57:= ADHJMPSUWX[] _bbb'b4aE`W`m_]\ZYA<:;49*:!<@C GKOSVY\_acegjm psr r-q=pOoenmkih?@9>.?$BFJ OTX]aehknqsux{~ $4F]v~|z?D3E(HLR W]chmqvz~ )<Rl8K,N SY `gntz 0F`~1U$[aiqy %;TqȒų)biq{ /Ie&0:BIPV\bhov  *3;CIOU[`gnv #,4;BHNSY_fnw~%-4;AFLQW^eny|vsr &-4:?EJPV^f~q|}ywusrnige  }&z-w3u8t>rCpIoOmVl^jhhugedba`\[Z~xsom lkkj h&f,e2c7b<`B_H]O\WZaYmW{VUSRRPOOxngc`]\ [[[Z!X&V,T1S6R<QBOINQM[KfJtIHGFFEEExlb[VSQOO NNML!J&I,H1G7E=DDCLBU@`?n>~=<;;;;<~naXQLIGED CCCB@"?'>,=2;8:?9G8P7[5h4x3211123vfYPIC@><;: :9976#5(4.342;0C/L.W-d,s+*))))*n_ S J B = 9 6543 2110/.$,*+0*7)?(I'T&`$o#"!!!!"{ h Z NE=8 3 0 . - -, +*)('!&'%-$4#="F!Q]lu dUJ@93/,)' ' ' & %$"! $+2:DO\k}q_QF=60+(%#"! !     " ) 1 9 C O \ k ~  m\NC:2-(%"  !(09DP] k |  iXK@70*&" %.7 @ K X gxeUH=4-(#   " ) 2 <GTcuaRE;2+%!   &/8DQ`r^OB8/)#     !#!+!5!@!N!]!o! ZK?5-'" ! " # $%%& &(&2&=&J&Z&l&%%$##UG ;N;`:w98765G);*2*+)%'!&'(*, /1468;=?A CEEE!E,D9DHD[CqBA@?>B-8./-)+$**,. 1 47:<?ADFHJL NPPP'O4OCOUNjMLJIH>251./). .137 :=@DGILOQSUXZ ]_^ ^,]<\N[cZ~XWUT:634-2$369=AEILPSVY[]`behk oon%m4mFk[juhfdb8927(9;?DIMRVZ^behkmpsvy} ,>~T~k{zwu8=,>"AFKQW\bfkotx{~ !3Ib1D%HMSZahnty (>Vs*OT[ bjs{2KfƇ©"[b kt}'?[z ",5=ELRX^djrz %.7>EKPV\bjr|'/7=DIOU[ais{vt  (/6<BGMSYaju|smjh !(/5:@E~K|RzYxbvltyrqomle`^\|zx wxwt!r'p-n3l8k>iDhJfQdZcdap_^]\[WTRQtnjfec ccca!_'],\2Z7Y=WCVKUSS\RhPwONMLKIGG|ne^YWUTS STRQ!O&N+L1K7J=IDGLFVDaCpBA@??>=>ocYQMJHGG FFGED!B&A+@1>7=><G:P9[8i7z6554445teXOHC?=<<; ;;:97!6&5,42391A0K/V.c-s,,++++,l]QH@;74322 2 110/-",(+.*5)=(F'Q&^%n$##""#$weVKB:50-,+*) ))('&%$$*#1"9!C NZi|p_Q F = 5 0 + ( %$## " "!  &.6?JWfxk[ M B 9 1 , ' # !     #+3<GTcug W I>5.($           ! ( 0 : E R a s      c SF;2+%!        ' / 9 E Q ` q      _PC8/(#      $ , 6AN]o\M@6-&!      !)3>KZlXI=3+$     '0;HXjUF:0("     $-8FUg}QC7.&         !!*!5!B!R d zM?4+$  !# %&&&'''2'?&N&`&w%$#"!H<1("  !#%') , ....#...;.J-\-r,+*)(D 8!.!&!  !#%'),.03 5 6666)666E5W5m4210/?$4$+$$#!  !# %(*-/2479;> @AA@%@1@@?R>g=<:98:(0()'#%#$%( *-0368;>@BEGJ MMLL+K:JLIaH|GECB6,-+')#'(*- 037:=@CFHKMPSVY [[Z%Y4XFWZUtTRPO30,.',-/2 6:?BFILORUXZ]`cgk lkk,i=gRfjda_]13,1"259 =BGLPTX[_behknquy} $~5|I{axvsp16&8;@ EKQV[`einrvy|~+@Ys+> AG MT[ahnsy~!5Mi#HNT\dmu| )A\|U\enw6Qn߱  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mft1!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C#K2UE^Zepl׺p̲tëvy·}˱ӫܥ楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗楗%0:C"K2TE]Zdqjo˸r±twĴ{ͫԢۙᙚᙚᙚᙚᙚᙚᙚᙚᙚᙚᙚᙚᙚᙚᙚᙚ%0:C"K1TE\[cqimɿpruëxʢ|љؐݐݐݐݐݐݐݐݐݐݐݐݐݐݐݐݐ%0:C"K1SE[[argknqsvȚyΒ~ԉ؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉%0:C!K1RDZZ`rejmprtĔwʋ{τԄԄԄԄԄԄԄԄԄԄԄԄԄԄԄԄ%0:B!J0RDXZ^rdiloprvƆz%09B J/QCWZ\qdiknoqtx{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}$0 9BJ/PBUY[pchkmoqt}ww|w|w|w|w|w|w|w|w|w|w|w|w|w|w|w|w|$0 9BJ-O@SY[ocgjmoqszwt{t{t{t{t{t{t{t{t{t{t{t{t{t{t{t{t{$/ 8AI+M@RXZmbgjmoq{tvwq{q{q{q{q{q{q{q{q{q{q{q{q{q{q{q{q{$/ 8AI(L@QWYkazgknp}sxusxn|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|$/ 8AF(LAPUXfatg~korzuuxq{l~l~l~l~l~l~l~l~l~l~l~l~l~l~l~l~l~#- 6 =F*K@OQX`akhtm{qytuxr{n~kւkւkւkւkւkւkւkւkւkւkւkւkւkւkւkւkւ#,/;E+I=NLWXaaiionytruwuqzwn}yk{i|i|i|i|i|i|i|i|i|i|i|i|i|i|i|i|i|""':B*F9MEVObV~j\wp`sucoxem|gjhhjfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfkfk& :>'D3K=UE|aKujOppRluTjyVh|WfXdZc[c[c[c[c[c[c[c[c[c[c[c[c[c[c[c[c[ & 6;#A,J4xS:q_?liChoEetGcwHb{Ia~J_J^K^K^K^K^K^K^K^K^K^K^K^K^K^K^K^K^K"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8AI+S<]Ofcowuؤ{Λȓŷ˴}ϮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮyѮy"- 8@I+R<\Oedmxsըy̟}ŗŶ̲ү֧~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~ӧ~"- 7@I+R<[Pddlyrӭwʤzœ~÷ʲҮئڡաաաաաաաաաաաաաա"- 7@H+QG(N9TNYe`{fjmoruxz}tqqqqqqqqqqqqqqq!, 5>G'M8RLWd_zfjloqt|wv|qnnnnnnnnnnnnnnn!, 5>F%M6OLUc_xeiloq~txws{nkkkkkkkkkkkkkkk!, 5>F"K4OLTb^tdimorzttxp{khhhhhhhhhhhhhhh!+ 4 =EI5NLS_]pd}inq{tvwqym}iŁfąfąfąfąfąfąfąfąfąfąfąfąfąfąfą *3 <BI5MJR[]ietj}o|swwszo}lрhЄeχeχeχeχeχeχeχeχeχeχeχeχeχeχeχ )13 B!H5LFQU]`ejlq}qvwvzsy}o|l߀iރg݇e܉e܉e܉e܉e܉e܉e܉e܉e܉e܉e܉e܉e܉e܉e܉%"2A"E3JAQM]Vf^}ndvshrxkn|mlojpgresctctctctctctctctctctctctctctct1>"B/H:PD\K{gQtnVosYlx[i|]g^f_d`baababababababababababababababab 2:?*F3O:x[@qfElmHhsJfwLd{MbNaO`P^Q^Q^Q^Q^Q^Q^Q^Q^Q^Q^Q^Q^Q^Q^Q^Q  05<$|D+sM1lX5gc9ck;aq=_u>]y?\|@[AZAYBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXB+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>G&Q4[EeWohxyےԋυˀ|yvtqooooooooooooo+ 6>F%P4ZEdWmiw{}ٖюˈǂ~zwuµqórrrrrrrrrrrrr* 5=F%O4YFcXlku}ߣ{՛͒Nj…|ùyǵvʭuƫvīvīvīvīvīvīvīvīvīvīvīvīv* 4=F%N4XFaYjlsݨxӟ~ʖĎŷ˴|ϫxϥyȤyƤyƤyƤyƤyƤyƤyƤyƤyƤyƤyƤyƤy* 4=E%N4WF`YimqܬvФ{Țŷ˴βѤ|џ}ʞ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}Ȟ}* 4<E$M4WF_YgnoڱtϨyş}Ƶ˯ϪҞә̘ʘʘʘʘʘʘʘʘʘʘʘʘ* 4<E$M3VF^Zfomٶsͭwĥ{Ʈ̨ϢҙӔ͓˓˓˓˓˓˓˓˓˓˓˓˓* 3<E$L3UF]Zeolػq̲uí|ƨˡЛӔԏΏˏˏˏˏˏˏˏˏˏˏˏˏ* 3<D#L3UE\ZdojoʹtzƢ˛ϕҏԊΊ̊̊̊̊̊̊̊̊̊̊̊̊* 3<D#L2TE\Zbphmżsx}ŝ˕ϏҋӆΆ̆̆̆̆̆̆̆̆̆̆̆̆) 3;D#L2SEZZ`pflqw|ŗʐΊхҁ΁́́́́́́́́́́́́) 3;D"K1RDYY_pdjoty}Ðȉ̃~}|||||||||||||) 2;D!K1QCWY]ocimptx†}ƀzvvwwwwwwwwwwwww) 2;C K/PBVW[nchlnqt~xw|rmmnnnnnnnnnnnnn) 2:CJ.O@RWZmbgknqtywt{njgfffffffffffff) 1 :BJ+L?QVYka|gknq{tuxp{lhdccccccccccccc(0 9BG(L@QUXhawglo~sxvryn|ifbaaaaaaaaaaaaa'/ 8 AF*L@PSWcapg{mqzutyp|lh̃dˈaʍ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ`ɏ&-4<F+J>OOW\ahhqnx{s}uxq{mjڃgنd׋a֐`Ց`Ց`Ց`Ց`Ց`Ց`Ց`Ց`Ց`Ց`Ց`Ց`Ց#&)<D+H;MIWTa]je|pjvvnqzqm~tkvhwfycza|`|`|`|`|`|`|`|`|`|`|`|`|`|( ;A)F6LAVKaR{kWtq\ov_l{aicgdefcgah_i_j_j_j_j_j_j_j_j_j_j_j_j_j ) 9>&D0K9T@xaFrjJlpMivPf{QdScTaU`V^W]X\X\X\X\X\X\X\X\X\X\X\X\X\X )4:!A)zI0rR6l^:hh=do@atA_yC^}D]E\E[FZGXGXHXHXHXHXHXHXHXHXHXHXHXHXH* 06w>"nG(fP,aZ/]d1[l3Yq5Xu6Vy6V|7U7T8S9R9R9R9R9R9R9R9R9R9R9R9R9R9R9) 5;D!N-YFI3NIT]\nc}imq{usxn|ieb_^^^^^^^^^^^^$,4 =BI3NHRZ[icvio~swwq{lhʃdɈaǎ^ƕ\ƛ\ƛ\ƛ\ƛ\ƛ\ƛ\ƛ\ƛ\ƛ\ƛ\ƛ\ƛ#*25 BH4LFQU[bdmkvp}yuszn~kׂgՆdԋaӐ^і\ћ\ћ\ћ\ћ\ћ\ћ\ћ\ћ\ћ\ћ\ћ\ћ!&%3B!G3KBPO[Zecljzrptxto|wlzh|f}c`^ߖ\ޚ\ޚ\ޚ\ޚ\ޚ\ޚ\ޚ\ޚ\ޚ\ޚ\ޚ\ޚ3@"D0I=PH[PeWzm]tsaoydk~ghifjdlbm`n]p\q\q\q\q\q\q\q\q\q\q\q\q 3< B,H6O?ZFxeKqmOlsRiyUf~WdXbYaZ_[^\\][^[^[^[^[^[^[^[^[^[^[^[^  39?&F.zN5sX:mc?ilBerDbwF`|G_H]I\J[KZLXMWMWMWMWMWMWMWMWMWMWMWMWM! .4; vC'mL,fT0b`3^i5\o7Zt8Yy9X}:W;V;UR>R>R>R>R>R>R>R>R>R>R>" )~0s8i@bI#[Q&WZ(Ub*Ri+Qo,Ps-Ow.Nz.N}/M/L0K0K0K0K0K0K0K0K0K0K0K0K0K0(4:BK'W4bBmOx\gq삓y|xtqomlk˜i̚e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛(4:BK'W4bBmOx\gq삓y|xtqomlk˜i̚e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛(4:BK'W4bBmOx\gq삓y|xtqomlk˜i̚e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛(4:BK'W4bBmOx\gq삓y|xtqomlk˜i̚e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛(4:BK'W4bBmOx\gq삓y|xtqomlk˜i̚e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛(4:BK'W4bBmOx\gq삓y|xtqomlk˜i̚e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛e˛(39BK'V4aBmPw]hr냒{}xtronlk›iʜfʜfʜfʜfʜfʜfʜfʜfʜfʜfʜfʜ'28AJ'T4_CjQt_~l펈x燏―{wtqomlægæiǡiǡiǡiǡiǡiǡiǡiǡiǡiǡiǡ'1 7@I'S4]ChSrb|pꔅ}㋋݄~zuromikmĥmĥmĥmĥmĥmĥmĥmĥmĥmĥmĥ'0 7@H&R4\DfTpdys瘂ߏوҁ{vspmknppppppppppp&0 6?H&Q4[DdUnewvܔԌ΄}xutpoqsssssssssss&/ 6?G&P4YDcUlgux|٘ѐʇł|ztrtvvvvvvvvvvv&. 6>G%O4XDaVjhszz͔֝ƍ}yvxyyyyyyyyyyy&. 5>F%N3WD`Vhip{ުwП|Ǘ~y{}}}}}}}}}}}&- 5>F$M3VD_Vgin}֬sʣz~&- 5=F$M3UD]Vej߸k~ЯqŦx~%, 5=E#L2TC\Vcjڻi~̲pv|‹Š%, 4=E#L2SC[VajԿh~Ƕntz†„%, 4<D"K1RBYU`jf}¹lrx~€%, 4<D!K0QAXT^ie|kpv|}{yzzzzzzzzzzz%+ 3<D J.P?VS]hc{iotzzwtsttttttttttt$+ 3 ;CJ,O=UQ[gbzgmrx~ytpnmnnnnnnnnnnn$*2 :BI)L;SQZe`xfkpv|xrmjgghhhhhhhhhhh#)1 :BG%K;QPYc_tejosuxn}iea__bbbbbbbbbbb!(08 @E&K;OOW`_of|lqzuszlgDŽcƊ_đ\ęZäZİZİZİZİZİZİZİZİZİZİZİ &.3<E(J;NLV[_hgsm|~rvxp}kԂf҇cь_ϒ\ΙY΢XͫXͫXͫXͫXͫXͫXͫXͫXͫXͫXͫ#&);D)I:MHUU_`hhopxuurzym}ie߉bݎ_ܓ]ۙZڡX٨X٨X٨X٨X٨X٨X٨X٨X٨X٨X٨) ;C(G6LCUM_Vi]ypbsvgn|jjmgodqar_t]uZwXxXxXxXxXxXxXxXxXxXxXx ) ;@&E2KG"R-]:iGtS~_ir}yxtpmkjiȓfϕdѓeԎeԎeԎeԎeԎeԎeԎeԎeԎeԎ&0 5=F!P-[;fHqV|bmw耕zuromkiɞeɞg͘iѓiѓiѓiѓiѓiѓiѓiѓiѓiѓ&/ 4=F!O-Z;dIoXyeqꋌ|䃒}xtpmkf§hƢj˛lΖlΖlΖlΖlΖlΖlΖlΖlΖlΖ&. 4<E M-X;bJlYvhu珉ڀzupmkhkæmȟo̙o̙o̙o̙o̙o̙o̙o̙o̙o̙%- 3<D L-W;`KjZtj~y䓆܋Ճ|wtspknpƢrʜrʜrʜrʜrʜrʜrʜrʜrʜrʜ%, 3;DK,U;_Kh\qlz|ߗՎͅǀ{xvupqtĤuɞuɞuɞuɞuɞuɞuɞuɞuɞuɞ%+ 2;CK,T;]Kf\onvՙ}̑Ŋ|zytuwæyǠyǠyǠyǠyǠyǠyǠyǠyǠyǠ%* 2:BJ+S;\Kd]loۥsΝzŕ~}zy{|Ƣ|Ƣ|Ƣ|Ƣ|Ƣ|Ƣ|Ƣ|Ƣ|Ƣ|Ƣ%* 1 :BJ+R:ZKb^jpөpȠw~}ţţţţţţţţţţ$) 1 9BI*P:YKa^ܵgqάoäu|ĥĥĥĥĥĥĥĥĥĥ$) 1 9AI)O9WJ_]ֹfpɰmszææææææææææ$) 0 9AH(N8VJ^]Ѽeoijkqw~ææææææææææ$(0 8@H'N7UH\\̿coipu{~{}}§}§}§}§}§}§}§}§}§}§$(/ 8@G&M5TF[[bnh~nsz~zxuwx§x§x§x§x§x§x§x§x§x§#'/ 7?F#L2REYZ`lf|lrx~}xtqopr§r§r§r§r§r§r§r§r§r§"'. 6>F K.PDXX^kezjpu|}vqmjijkækækækækækækækækækæ &-5 =DH-OBVV]hcxhnt}zvpkgecdeŤeŤeŤeŤeŤeŤeŤeŤeŤeŤ%,3 <@H.MBUT[eatfl~rvyoƁjʼneŒbĝ_ħ]Ĵ^Ĥ_Ƞ_Ƞ_Ƞ_Ƞ_Ƞ_Ƞ_Ƞ_Ƞ_Ƞ_Ƞ#)14 AG.LASRZaanhynzur|k҂eψ`͏\̗ZˠX˫W˺Y̙Y̙Y̙Y̙Y̙Y̙Y̙Y̙Y̙Y̙ %$2 @G/K?QNZZbejn}ruux{o~i݄dۊ`ّ]ؘZ֠X֨VմTTTTTTTTTT1@E.JC+H7OAYI}cPwmVptZkz^hadcae_g]hZiXkVlTmTmTmTmTmTmTmTmTmTm 2;A'G1N9zX?sbEnlIisLfzOcQ`S^T\UZWYXWYUZT[T[T[T[T[T[T[T[T[T[Ϳ!17>"}E)uM0nU5i`9ej_w@\~BZCYDWEVFUGSHRIQJQJQJQJQJQJQJQJQJQJϸ#-3y;pC"iJ'bR*]\-Ze0Xm1Vs3Ty4S~5R6P7O8N8M9L:K:K:K:K:K:K:K:K:K:K:"( v/m7e?^GXN!TW#Q_%Ne&Ml'Kq(Jv)I{*H*G+F+E,D,C-C-C-C-C-C-C-C-C-C-t# i*`2Y:SBNIKQHXF]DcCgAl@p?t >x =| qJ}U^g{nvsrxo}ligƆeψb׊aوb݂ccccccccc}y&|. 2:CL'X3c?nLzWbk~syztpljhƏfђbђdՌeۆf݂f݂f݂f݂f݂f݂f݂f݂f݂}z&, 1 :BK&V3a@lMvZfp삔y{uqmkișd˛eΗgґh؊iۆiۆiۆiۆiۆiۆiۆiۆiۆ~{&+ 1 9BJ&T3_AiOs]~j쌈u煑~xrmlkŠgǠh˛jДlՍlىlىlىlىlىlىlىlىlى~{%* 0 8AI&R3]AgPq_{m參zއ~xtqonkţkȟm͘oґp֌p֌p֌p֌p֌p֌p֌p֌p֌|%)/ 8@H%Q2[AdQnavpܑ~҉˂}xusrpæoƢq˛sГtԎtԎtԎtԎtԎtԎtԎtԎtԎ|%(/ 7?G$O2YAbRkbޞrsҕzʍÇ}ywvvsåuɞwϖwґwґwґwґwґwґwґwґwґ}%'. 6?G#N1WA`Rhd֢pt̙wÒ~{zywyǠz͘{ѓ{ѓ{ѓ{ѓ{ѓ{ѓ{ѓ{ѓ{ѓ~$&. 6>F#M0V@^RݮfdХnsƝu|~}{}Ƣ~̙ДДДДДДДДД~$&- 5=E"L0T@]Qײdc˩lsszŤ˛ϕϕϕϕϕϕϕϕϕ$%- 5=E!K.R?[Qѵccƭjrqw~ĥʜΗΗΗΗΗΗΗΗΗ#%, 4 <DK-Q=ZP͸abhqo~u|æɝ͘͘͘͘͘͘͘͘͘"$,3 <CJ+Q;XOȼ`agpm}sy|zzæ{ɞ|͘|͘|͘|͘|͘|͘|͘|͘|͘!$+3 ;BI(O9WN^`eok|qx~}xussæuɞv͙v͙v͙v͙v͙v͙v͙v͙v͙ #*2 :AH%M8UL]^cnj{ov|{vqnlmæoɞp͘p͘p͘p͘p͘p͘p͘p͘p͘")08@F K6TK[\blhxnsz{uokhffŤhʜi͗i͗i͗i͗i͗i͗i͗i͗i͗!'/6 >CJ4RHZZ`ifvlr{xtnieb`_Ša̚bϕbϕbϕbϕbϕbϕbϕbϕbϕ %+18C I3QFXW^edrj||ptwn~hÇc_\[³ZŚ[ϕ\ґ\ґ\ґ\ґ\ґ\ґ\ґ\ґ\ґ!"%7C"H3ODVS]`ck~juup}nwgbЇ^БZМXЧVеUǑVԎV֋V֋V֋V֋V֋V֋V֋V֋V֋&7B#G2L@UM]Xeaylirtol|tgxb{^~[XߧUޱS޾R҃Q܂Q܂Q܂Q܂Q܂Q܂Q܂Q܂Q܂ &8@"F0K!D,J5S>y]ErfJmoNhvRd~UaW_Z\[Z]W^U`SaRaPbPbPbPbPbPbPbPbPb ָ ) 5;B&}I.uQ4o[:ie>enAbuD_|F\HZIXKVLUMSNQOPPOQOQOQOQOQOQOQOQOQگƼ+ 18y@ pG&iO+cX/_b2\k4Zr6Xx8V9T;RN>M?K@JAJAJAJAJAJAJAJAJAȵ & -u5l=eD^L"XT%U]'Re)Pl*Ns+My,L-J.I/H0G0E1D2C2C2C2C2C2C2C2C2C2 }!r( h0`8Z@THOOLWI]Gc Ei Do!Bt"Az"@#?$>$=%<%;&;&;&;&;&;&;&;&;&znd# \+ U3O;IBFIBO@U>Z<_;d9h8m7r6w5|43222222222pl)i3 r7 y>}GQ!~_)|m2y{9v@sEpJnNkQiShUfWcYa[_\^]\^[_Y`Y_Y_Y_Y_Y_Y_Y_Y_pl)i3 r7 y>}GQ!~_)|m2y{9v@sEpJnNkQiShUfWcYa[_\^]\^[_Y`Y_Y_Y_Y_Y_Y_Y_Y_pl)i3 r7 y>}GQ!~_)|m2y{9v@sEpJnNkQiShUfWcYa[_\^]\^[_Y`Y_Y_Y_Y_Y_Y_Y_Y_pl(k1 u6 {<FP!^*~k3{x;xBuHrMpQmTkWiZg\e^b_`a^b\c[dZdZbZbZbZbZbZbZbZbqm(n0 x4 ;DN![+h4u=|EyLvRrVoZm^jahcfecgai_k]l[m\h\g\g\g\g\g\g\g\grn(q. {2 :CL!Y+e5r?~H|PyVu\r`ndlhikgmdpar_s\t\q^l^k^k^k^k^k^k^k^kso't-~1 9BK!V+c6oA{KS|[xatgpkmojshvexbz_|]{_v`p`n`n`n`n`n`n`n`ntp'v+/ 8@I!T,`7lCwMW`zgvnrsnxk|hf͂b؄_܅`azctcrcrcrcrcrcrcrcrtp&y*. 7?H R,^8iDtP[e}nwur|njgeʍbԎb؊c܄e~fxfvfvfvfvfvfvfvfvuq&|(- 6>G P+[8fEpR{_ꅅj~tx}rmjhhÑgђeԏgىh݂i|jyjyjyjyjyjyjyjyvr&', 5=FN+Y8cFmTwboڀ{zuqnlkk˕iДkՍlۆmm|m|m|m|m|m|m|m|vs%&, 4<DL*W8aGjVre،{sυ|zvspooĘm͘oӐp؉qނqqqqqqqqwt%%+ 3 ;CK)T8^GgWڙogϑxsNJ}zwtsrr˚sГt֌u܄uށuށuށuށuށuށuށuށxv$#*2 :BJ(R7\GޥdXѝmfȕus|}{ywvwʜwϖxԎxۆx݃x݃x݃x݃x݃x݃x݃x݃xx##*1 :BI'P6ZFةcW̡kfšrrz|}{{{ƞ{͘|Ӑ|و|܅|܅|܅|܅|܅|܅|܅|܅yz"")1 9AH&O4ߴYEҭaVǥieprw|~ž̚Ғ؉ۆۆۆۆۆۆۆۆy{!"(0 8@G$N3۸WDͰ`V©gdnqu{|˛ѓ؊ڇڇڇڇڇڇڇڇz} !(/ 7?F"N0ռVCȴ^Ufclps{z~~ʜД֋ووووووووz!'.6 >EL/пTBķ]Sdbjoqzw~}zxwʝyϕy֌y؉y؉y؉y؉y؉y؉y؉y؉{ &-5 =DI.SA[Rbainoxu|{wsqpȝrϕsՌt؉t؉t؉t؉t؉t؉t؉t؉|%,3 ;BH,R@ZQa_glmwtzzupljiślДm֌m؉m؉m؉m؉m؉m؉m؉m؉}#)18 :F*P>XO_]ejktq}xztnifcbØeѓf֋gىgىgىgىgىgىgىgى~!&,19D(N;VL]Zcgiqoyzvs}mhc`^\”^Ӑ_ى`چ`چ`چ`چ`چ`چ`چ`چ  ,;D%L8TI[Wachl{nusu{l|gb^ZXWX׋Y܅Y݃Y݃Y݃Y݃Y݃Y݃Y݃Y݃,;D%K5RDYR`]|fftmnlttf|yaͅ}\̎Y̙V̥T̳SąS݃S~T}T}T}T}T}T}T}T} , <C%H3P@YK~`Tvh\oobhwhcl^ވpZޑsWޛuTާwRߴxPxOxOuOtOtOtOtOtOtOtOt۸ - ;A$G/N:~XCwaJpiPjqUeyYa\]_ZaWcUeRfQgOhNhMhMhMhMhMhMhMhMh ݮ̼ / 9?!F*|M2uW9n`?iiCdqGayJ]LZOXQVRSTQUPVNWMWLWLWLWLWLWLWLWLWδ / 6=xD$pL*jT/e^3ag7]o9ZvV?SAQBPCNEMEKFJGIGIGIGIGIGIGIGIGѮ"+ ~2u:lBeI"_Q%ZZ(Wc+Tk-Rr/Py0O1M2K4J5H5G6F7D8D8D8D8D8D8D8D8D8{' q.h6a>ZFUMQUN] Kd"Ik#Gq$Fx%D&C'A(@(?)=)<*<*<*<*<*<*<*<*<*wm"d* \2U9PAKHHOEVB\@a>guEqKoPlTjXh[f]d`ab^c\e[fZc[`][][][][][][][][ie(n+x. 6?HS%`/l8|yAxItPqVnZk_hbfedhbk_m]n[m\h^d________________jf(q){, 5 >GP%]/i:uD|MxUs\oblgikfocrau`w\x^r_m`hbcbcbcbcbcbcbcbckg't'+3 <EN%Z0f;qF|Q|Zvbqilphudzb~aa_~awbrcmdgdgdgdgdgdgdgdglj&w&*2 ;CL$W0bF M-X<٠aL͘jYőreznv}}ywuttƏu֋v݃v|vtvtvtvtvtvtvtvtou%-5 =EL+߫W;Ҥ_KȜhYodwnv}~{yxxzՍzۅz~zvzvzvzvzvzvzvzvpv%,4 <CK)گU:ͨ^J fXmdun|v}~}}ӏ~ڇ~~w~w~w~w~w~w~w~wpx$+2 :BJ'ԳS9ȫ\IdWkcrmyu|Αو߁yxxxxxxxqz#)1 9@ݼH%϶R8ï[HbVjbplwu~||{ˑ|؉}ނ}z}y}y}y}y}y}y}yq|"(/7 ?F$ʺP7YGaUhankut|{|xvtȑv؊w݂wzwzwzwzwzwzwzwzr &-5 <D#ŽO5XF_Tf`mjsszzzuromŐp؊p݃q{q{q{q{q{q{q{q{s$*15B!M4VD^Rd^khqqxx~ytokhgŽi؊j݂k{k{k{k{k{k{k{k{t %*2 AL1TB\Pb\ifonvuy}{smheb`bوcށezezezezezezezezv0 ?J/R?ZMaXgbmkytqr{wl|gb^\Z[ڄ]^x^x^x^x^x^x^x^xz / =H,P;XI_Te^ylfrrlkzrfvaz\}YWUUVzXuXtXtXtXtXtXtXt 1 =F'N7VD]OzdXrj_kreeyj`ɂo[ɋrWȖuTȢwRȯxQxPwQsRoRoRoRoRoRoRoRo ߮м 1 =D&L3T>{\GscOkjVer\`z`[كdWٌgSٗjP٣lNٱmMmLlMjNgNgNgNgNgNgNgNg Ѵſ"3;B$I.{S6s\>ldDglIbtM^|QZTVVSYQZN\M\L]K]J\J\J\J\J\J\J\J\Ԭŷ$2:A xH'pP.jZ4ec8`k<]t?Y|BWDTFQHOJMKKLJMIMHMHMHMHMHMHMHMHMڣDZ'/ }7t?lG fN%`W)\`-Yi0Vq2Sx4Q6O7M9K:I;HD>D>D>D>D>D>D>ˬ$z, p4h<aD[KVS S["Pc$Mk&Ks'Iz)H*F+D,B-A.@.?/>0>0>0>0>0>0>0>0 v l( d0 ]8W@QGMNJVG\DcBi@p?x=; :!8"7"6#5#5#5#5#5#5#5#5#} rh_#X+ Q3 L: GACH@N=T;Z9_7e5k3r1z/.,+********xn cZRK$F,A3 <: 9@ 5E 2J 0P .T,Y*^(d&j%q#x" \"W-X3_6 c= eFfPe^dn"a|'_+^.\1[3Z5Y6X7X9W9V:U;TU>T?S?R@R@R>R>R>R>R>R>R>]!X,\0d3 h: kClNlZjj$gx)d.b2a6_8^:]<\>[?ZAYBWCVDUDTETETDTBTBTBTBTBTBTB^!Y,_.f2 l8 oAoLqWng%ku+h0e5d9b<`>_A^B]D\FZGYHWIVJUJUJVGVEVEVEVEVEVEVE^!Y+b-j0o6 r@tJuUrd&or-l3i8fxHyRw`'tn.p{5m;jAgEeIcLaN`Q^S]U[VZXXYYVZS[O[M[M[M[M[M[M[M` ])h)q+x3 |<}F~P}](yj0uv8q?mEjKgOeSbV`Y_\]^\`ZaZ`[[\W]S^Q^Q^Q^Q^Q^Q^Qa`'k&u)|1 :DMY(f2zr;u~CqKmQiVf[c_`c^f\i[kZk\f^a_\`XaUaUaUaUaUaUaUbc%o$y(0 9BKV(b3n=zyGuPpXk^fdci`m_o^p^q]q_kafbac\cXcXcXcXcXcXcXcf#r"}'. 7@IS(_4j?tKx~Ur^mejjgmepcsbtauavcqdjeef`g\g\g\g\g\g\g\ch!u %-5 >GO([4fAoN}yXw`sgollpisgvfxeyeyfvhoiiicj_j_j_j_j_j_j_dk x$,4 <EM'Y4bB׉lN΃uX}~axhtmprnulxj{i|i}jzlrllmfnbnbnbnbnbnbnbem{#*2 ;CK%V3ږ`AώiNLjrXza}hynusrwpzn}m~mn~pupoqhqdqdqdqdqdqdqdeo~")1 9AI#ޡT1Қ^@ȓgMoXwah}nzswxt{s~qqr؁txtqukufufufufufufuffq!(/7 ?H ئR0̞\@×eMmWta|hn~t{xy|wvuvтxzxsxlxhxhxhxhxhxhxhgs &.5 =߯FҩQ/ǢZ?cLjWr`yhntx}||zzz̓|||u|n|i|i|i|i|i|i|igu%,4 ;۳DͭO.æY>aKhVp_wg~nsx|ʄ}vojjjjjjjhx#*19 շBɰN-W=_JgUn_uf|msx|}{yDŽz{w{p{k{k{k{k{k{k{kiz!'.޽5 к@ĴL,V;^IeTl]sfylrw|{wtrăttxuqvlvlvlvlvlvlvlk}#)0 ˽?J*T:\GcRj\qdwkq~vy{t~pmkmnxoqplplplplplplpln!-=I(R8ZEaQhZobui~|oxtsyn|jgeehxiqjljljljljljljlq+;G&Q6XC`NfXm`~sgwzlrrlvhyd|`}_~^}avbpclclclclclclclt (9E#O3W@^KdT~k\wqcqxikmfrau]x[yYyXyZs\n]j]j]j]j]j]j]jy ܮһ %6B L/T<\GbPwiWpp^jwceh`l\oXqUsSsRsToVjWgWgWgWgWgWgWg ҳɾ#3 @J*R7ZAxaJphQjoWdv\_`ZňdVĒgSĞiPĬjOļkNjOhPdQaQaQaQaQaQaQa Ԫȶ %5 >H%P0xX:p_BigIcnO^vSYWUӉZRӓ]OӠ_Mӭ`KԾ`J`K^L\LZLZLZLZLZLZLZڢʯ (4=D"wN*oW2i_8cg=_oBZwEVISKPNMPKQIRHRHRHQHOHOHOHOHOHOHOͩ *3|;tClK#fT)a]-]f1Yn5Vv7S:PK@IAGBFCECDCDBDBDBDBDBDBDBѢ (y1 p9iAbI\P WY#Tb&Qj(Os*L{,J.H/F1D2C3A4@4?4?5?5?5?5?5?5?5Ī~u%l- d6]>XERMOUL\IdGkDs B|"A#?$=%;&:&9'8'8(8(8(8(8(8(8(zpg!_)X1 R9 MAIHEOBU@\=b;i9p7y5320//.......vlbZS$M+G3 C: ?A ;G 8M 5S3X1^/d-k+s)|'%$#"""""""~pg] TMGA$<+72480=-C*H (M &R $W "] c k s |          R%M/Q2W5Z< [EZOY]XmV{U"S%R'Q)P*P+O,O-N.N.N/N/M0M0L0L0L/L/L/L/L/L/L/S$M/T0Y4]: _C^N]Z[jZy!X$V'U)T+S-R.R/Q0Q1P2P2O3O3N4N4M4N2N2N2N2N2N2N2S$N.V/\2`8 bAbL`X_h]v"[&Y)X,V.U0U1T3S4S5R6R7Q7Q8P8O8O7P5P4P4P4P4P4P4T#P-Y-_0c6 f@fJeUceas#^(\,[/Y1X4W5V7U8U9T:T;SkHjShafp%c}*`/^3\6[8Z:XW?VAUBUCTDSDTAU?U\A[CYEXGWHVJVKULVJWFXCY@Y?Y?Y?Y?Y?Y?W"Y'c&k(q0t9 uCuMuY!qg)mt0j6fHR!~_+yk5su>nFiMeTaY_\]_\a[b[cZc\`_Z`UaQbMbKbKbKbKbKbKY!b nx#+3 <EN![+~f6xpArzKmRiXf\d_bb`d_f^g^h_fc_dYeUePeOeOeOeOeOeOZ eq|")1 :CL X+b7~lCxvLsSoYk^ibfeehcjbkblbkfdg]hXiSiRiRiRiRiRiR[ gt '/7 @IU*ۊ_7фiC}rLx{TtZq_ndkgijglfnfofojhkal[lVlUlUlUlUlUlU\jw%-5 >FޖR)Ґ\7ʉfBÃoL~wTy[u`rephmllnkpjqjqnkodo^pXpWpWpWpWpWpW^lz#+3 ;EכP(̔Z6čcBlLtT~|[z`wetirmppornsosrnsfs`sZsYsYsYsYsYsY_n}")09 ޥCџN'ǘX5aAiKqTy[`|eyjvmuqssstsuvpwhwbw\wZwZwZwZwZwZaq &.6 ة@̣L&œV4_@gJoSvZ~`e}j{nyqxtwuwvzr{j{d{]{\{\{\{\{\{\cs#*2Ҭ>ǦK$U3^?eJmRtY{`ejn~q}t|v}|v}~ske~^~]~]~]~]~]~]eu &۴.ί=êI#S1\>dIkQrYy_dinq|tyvwvvtylyfz_z^z^z^z^z^z^gw!շ*ɳ;H"R0Z=bGiPpXw^~di~myqvsrupvousmsft`t_t_t_t_t_t_izݹϺ(ķ9F P/X;`FgOnVu]|c}hxlsporltjuiulmmgn`n_n_n_n_n_n_l} տʾ&7DN-W9^DeMlUs[|zawfrjmniqfscsbsflgfh`h_h_h_h_h_h_o ڭ Ӹ #5BL*U7\AcJjR|qYvx^pckggkcn_p]p\p_kaeb`b^b^b^b^b^b^s ۥѱ˻ 2 @J'S4Z>aG|hOuoUovZj}_ecag]jYkWlVlXhZc[^\]\]\]\]\]\]x ߜҩɴ¾/ =H#Q/X:|_CufJomPitUd|Z_^[aWdTeRfQfRcT_U[VZVZVZVZVZVZ~ ֡ʭ +:EN*}V4u]=neDhlIcsN^{SYVUYR\O]M^L^L\NYOUPUPUPUPUPUPUݘͦ (7B}K$uT-m\5gc*=+;+;+:+:+:+:+:+:+:+~wog&`/Y7 T?OGKNGVD]Bd@l=u;~9765332 2 2 2 2 2 2 {r jaZ"T*N2I: EA AH >N;U8[6b4i2r/{-+*)('''''''zmd\TMH$B,>3:96@3E0K .Q +W )] 'd $l "v yk_VN GA<7$2*/0+6';%@"E JPV\dmw         I'D1K1P4R:RC QNO\MkLyKIHH G!G"F#F#F$F$F%F%F%F%F%F%F$F#F#F#F#F#F#I'F/M/R2U9UB TMRYPhOwNLK!J"J#I$I%H&H&H'H'H(H(H(H(H(H'H&H&H&H&H&H&J'H-P-U0X6Y@ XKUVTfRtQO!N#M%M&L'K(K)K*J*J+J+J,J,J,J+J)J(J(J(J(J(J(K&K+R+X.[4]> ]IZTYbWqU~ S#R&Q(P*O+N,N-M.M/L0L0L1L1L1M/M-M+M+M+M+M+M+K&N)V)\+`1b; bF`Q^_\mZz#X&V)U,S.R0Q1Q3P4O5O6N7N8N8O5P3Q1Q/Q/Q/Q/Q/Q/L%Q'Z&`(e/h9 hCgNeZbh _v%]*Z.X1W4U6T8S:R;Q=Q>P?P@Q>S;T8U5U3U3U3U3U3U3M$T$]#e%j-m6 n@mKkVhd!eq(b}-_2\6Z:X=W@UBTDSFRHQIRHTDV@X=Y:Y8Y8Y8Y8Y8Y8N$X!a j#p+s4 t>tHrRo_#kl*gw1c7`=]AZEXIVLTNTPTPSQTNWJZE\B\>\<\<\<\<\<\HT"~_.xi8ss@n|GkLhQeTcWbZ`\`^_^__bYeSgNgJgFgFgFgFgFgFWdp{"*2; DފQ!Ԅ\-~f8xoAtwHpMmRjVhYf\e_d`cacbe]iWjQkLkIkIkIkIkIkIYgs~ '/8 B֏N ̉Y-Ńc7}k@ytHu|NrSoWm[k^i`hcgdgdiamZnTnOnKnKnKnKnKnK[iv$,4ܚ?ϔLƎW,`7i@~qHzyNwStXq\o_mbldlfkfmdq\rVrQrMrMrMrMrMrM]ky!(0՞=ʘJT+^6f?nG~vN{}SxXv\t_rcqepgpgpft^vXvRvNvNvNvNvNvN_n{#ݥ+ϡ;ŜHS*\5d?lGsMzS}Wz\x`vcufthththx`zYyTyOyOyOyOyOyOap~ר(˥9FQ)Z4b>jFqLxRW\}`{czf}yh{yizyi||a~~Z~}U~}Q~}Q~}Q~}Q~}Q~}QcrߪѬ&Ǩ7 DO'X3`=hEoLvR}W[_~czfw~hu~is~ivbx[xVyQyQyQyQyQyQeuٯ̯$«5 CN&V1^;fDmKtQ{V[|_xbteqhnimiocr\sVsRsRsRsRsRsRhx ޠ ֩ Ҳ Dz"3 AL$U0]:dBkIrPyU{Zv^rbnekghhghicl\mWmRmRmRmRmRmRk{ ֣Ь ˵ 1 ?J"S.[8b@iHpNzwSu~Xp\l`hcdebf`fbbe\gWgRgRgRgRgRgRn ٛϦɯĹ/=H Q+Y5`>gEznKtuQo|UjYf]b`^b\cZc[`_[`VaRaRaRaRaRaRr ߓџɪ,:EO(W2^:yeBslHnsMizQdV_Y\\X^V_U_U]XXZT[P[P[P[P[P[Pw֘ˤ(7CL$U.y\6rc=mjCgqHbyL^PZTVVSXPYOYOXQTSPTMTMTMTMTMTM}ߏΝè#3 ?IyR(rZ0ka7fh.=.=.=.=-=-=-=-=-=-şztm f*_4Z= TEOLLUI]FeDnAw?=; 9!8"7"6"6"6"6"6"6"6"6"wo g`Z'T0O8J@ FH CO@V=^;e8n6w420/.-,,,,,,,uia [TN"I+D2@:+C(I%O#V!]eoz           ugXNHA ;61-")(%-"28=BHNU]g r }        ?*?0D0H3I9HBFM E[CiAw@?>>====<<<<<==========@*A.G.J1L7K@JK HYFgDuCBAA@@??????????@@@@@@@@*C,I,M/O5P>NI LVJdHrGFEDDCCBB B B!B!B!B!B!C CCCCCCCA)F*L)Q,S2T<TG QRO`MoL|JIHG!G"F#F#F$E%E%E&E&E&E&F$F#G!G!G!G!G!G!B(I'P&U(X/Z9ZD WOU\SjQwON!M#L%K&J'J)I*I*H+H,H,H,I*J(J'K%L%L%L%L%L%C(M$T#Z%^,`6`A ^L[WYfWrU~"S%Q(P*O,N.M/L0L2K3K4J4K3M0N-O+P)P)P)P)P)P)F%P!X _!d*f3f= eHbS`a]m Zy%X)V-T0R3Q5P7N9N;MR@QAPBPCPDPCR?U;W7X4Y2Y1Y1Y1Y1Y1M W`io%r-t7sAqKnXjd$en+ay3^8\IS'[0b8i>pDxI~MzQvUrXoZl\k\kYnRqMrHrGrGrGrGrGf u܏Ҙ̡Ȩ-<GQ%Y/`6g=nC}vHy}LtPpTlWiYf[e[eYhRkMlHlGlGlGlGlGi x֒͜Ƥ+:EO#W-_5f;}lAxsFs{KnOjRfUcX`Y_Z^XbRdMfHfGfGfGfGfGl|ފЖȟ(7 CM!U*\2|c9wj>rqDmyHhLdP`S]UZWYWXV[P]L_G`F`F`F`F`Fp֏ʚ$4 @JS'|Z.va5ph;ko@gwDbH^LZOWQTSSSRRUNWJYFYEYEYEYEYEuϓğ 1=H|P"uX*o_0jf6em;`u?\~CXGUJQLOMMMMMNIPFRCRBRBRBRBRB|׌ș ,: {DtNnV$h]*cd0_l4Zt9V|K=K=K=K=K=͒&z5sAlJfSa[#\b(Xj,Tr0P|3Mņ6JĒ9Gğ;EĮ#<$;$:$9$9#9$9$9$9$9$9$~si d_ Y+T5O>KF GN DWB_?g=p:{8653211111111~qe^ YSN'J0E9A@>H;O 8W 6^ 3g 1p .|,+)(''&&&&&&~pdXR MGC">*:2793?0F-M+T([&c#m!y            ~pcUKF@;73#/)+0(5%;"AGNU^htpbTF?94 /+'#!%*/4:@FN V `lx6-9.>.@2@8>A@J>W *C*F-G2F<EHCU Ab ?p=}<;;::::99999::::::::::9+A'F'J)K/L9KEHQ F^DlByA@@??>>>>==>>>>???????=(E$J#N%Q,R6QAOM LZJgHtGFEDCCBB B B!A!B"B"B CCDDDDDD@%H!O S!W)Y3X>VI RUQcOoM{KJI!H"G$G%F&F'E(E)E)F(G&H$I"I IIIIIC"LSY]&_0_:]E ZPX^UjSvQ!O$M&L)K+J,I.H/H1H1H1I.K+L)M&N%N#N#N#N#N#GPW^c#f,f6dA bL_Y\eYp V{%T)Q-P0O2N3M5M6L7L8L8M5O1Q.R+S)S'S'S'S'S'JT\ci l)m2l= iGfTc`_k"\u(Y-W0U3T6S8R:Q;PU?UATBTBUAW[AZCYDYEXFXF[@^;_7`3a1a1a1a1a1S]hpw|$-;zIuTq_$mh+jp1gy6e:c=a@`C^E^G]H]I\I_Db>c9e6e3e3e3e3e3U`kt{އ'ф7F{Qv[#re+om1lu6j|:h>fAdDcGbIaKaLaLcGeAgm:n7n7n7n7n7Ye q z ݎϏ ƍ2AMV"|_*xg0uo6sv:q}?oBmFlIjKjMiOiOjLmEo?p;q8q8q8q8q8[gs}ކٌ Ց ʒ0?JT!])}e0zl5ws:u{>sBrFpIoLnN|mO{mPznM|qF~sAt=u:u:u:u:u:]jvىҏϔ Ŗ.= HR [(c/~j5|q9zx=xBvEuI|sLyrNvrPtrPtrOvuGxwBzx>{y:{y:{y:{y:{y:_ lyރӋ͒ɗ,; GPY'a.h4o9v=}~A}{EyzIvxLswNpwPnwPmwOpyHr{Ct|>u};u};u};u};u};a o|نώȕÚ*9 ENW&_-f3m8t={{AwEtHp}Km|Nj|Oh|Pg|Pj~ImCn?olBhFeIaK^M]N\M^H`Cb?cHQ ~Y'x`-sg2on7ju];];];];];n~΋ĕ .; F~NxV#r]*md/ik4ds8`{<\?YBUESGQGPGQDS@UΨ&<κ&<&<%;%;%;%;%;%;%;%Óyod ^[ W-S:PDLN IW F_ChAq>|<߉:87665444444ymbXUQ M+I5E>BG?O=X :` 8j 6t 320.--,,,,,,,yl`UN JFC'?0;88@5G3O0W._+i)t' % $ # " ! ! yl_RHC?;7!4)00-7*>'D%K"S \frzl^PD<73 /+(!%'!-28?FMV`l {    {l^OB61,'# !&,1 7 >FOYft./3,7-80764?1K/X,f*t ) ( ( ( ( ' ' ' ' ' ( ( ( ( ( ) ) ) ( ( ( ( ( 0-6*9*;.:48<6I3V1c /q -~ - , , , , , , + , , , , , , - - - , , , , , 2+9(=(?*>0=:}==<<;;;;;;;;;<<======="DIMP&Q0P;NFKS H`FlExDCBAA@@????@@ABBBBBBB@HNRV#X,W7UBRM PZMgLrJ}HGFE D"D#C$C%C&C&D$E"F GGHHHHHDLRX]_(^2]=ZI WUUbRmPwNL"K$J&I(I)H*H+H,H,H+J(K%L"M MMMMMGOV^be$e-d8aC _Q\]XhVrT{"R&P(O*N,N.M/L0L1L2L1N-P*Q'R$R"R"R"R"R"JS[bhjk(k2i>fL bX_c\m Zv$X~(V+U.S0R2R3Q5Q6P7P7R3T.V+W(W%W%W%W%W%MV_ glpq"q,p:lH hTe_bh!_q&]y*[-Z0X3W5V7V8U:U;U;V7X2Z.[+\(\(\(\(\(PY c k ptvw%v6rD nPk[gd!em'bu+`|/_2]4\7[9Z;Y=Y>Y>Z;]5^1_-`*`*`*`*`*R\ f n t x{| {3wA tMpXla!ji'gq+ex/d3b6a8_;^=^?]@]A^?a8b3d0d,e,e,e,e,U_irx|  ́0|? xKuUq^!nf&ln+ju/h}3g6e9db@aBaBbAd;f5g1h.i-i-i-i-W alu{ӀЃ Dž-< }HyRv[ sc&pk+nr/my3k6i:hyn8zo4{p0|p0|p0|p0|p0[fr{ςɇĊ(8DNW|_$yf*wm.ut2t|6r9|q=yp@voBsnDqnEpnErp?sr9us5vt1vt1vt1vt1vt1]it}˅Ċ&5BLU]$~d)|k-zr2}xy5zw9vv HQY!`'{g+wn0su4o}7k;h>eAb~C`~D_~D`@b:d6e3f2f2f2f2dr~LJ .; FOWz^%ue*ql.ms2i{6f9b=_?\AZBYBZ?\:^6_2_2_2_2_2hv͂Œ +8CLyTt\"pc'kj,gq0dy3`7\:Y=W?T@S@T=V9W5Y2Y1Y1Y1Y1m{ȇ'5@ yJsRnYi`$eg(ao,^w0Z3V6S9Q;O&=&=&=%=$=#=#=#=#=#Ljsh`^[,W8TCPLMU J]GfDoAy?ȅ<ȓ:Ȣ9ɳ887766666th]S OM"K0I<FFDOAX?a5;>9G7P4Y2b0m.y,+ ) ( ' ' ' & & & & & th[OE> <96%4.17.?,G)O'W%a#l!zugZMB851.+)&%-#4 ;CKS]jxvgZL?5-*& # #)/5=E N XetwhZK>2'#   "(.5=GR^m~*-.+0+0..5)=%I#W!dr,+0(3(3+11-:+G(T&a$o"|""!!!!!!!!!""""""""""".(3%6%7'5-482D/Q,^*k)w('' ' ' ' ' ' ' ' ' ' '(((((((((2%7":!;#;);49@6M4Z1f0s. . . - - - - - - - - - . . . . . . . . . . 5";?@B&B1@<>H;U9b7n 6y 5 4 4 43333333444455 5 5 5 5 9?CFI#I-H8EDCP@] >i =t <;;::9999999::;;;;;;;=CHLOP(O3M?JJGW Fd DoCyBA@??>>>>>>?@@AAAAAAAGLRVW$V.T9QEOR M^ KiItH}FEEDDCC C!C!C!DEFGGGGGGDKQW[]]([3Y?WMTY RdPnNwLKJ J!I#H$H%H&H'G'I%J"KLLMMMMGO V \`bc!b,`:^H[T X_ViTrRzQ!P#O%N'M(M*L+L,L,M*O&P#Q RRRRRJR Z ` eghg$f5dDaP ^[\dZmXu W}#U%T(S*R,R-Q/Q0Q0Q/S*U&V#V!WWWWM U]di k lml1j@gL dWa`_i]q!\x$Z'Y*X,W.V0U2U3U3U3W-Y)Z%[#[![![![!O Wahmpp rq.o=lI iTg]debm!at%_|(^+]-[0[2Z4Y5Y6Y6\0]+^(_%_#_#_#_#Q Zdlqtu vv*t:qF nQkZibgi!eq%dx(b+a.`1_3^5^7^7^8_3a-b)c&d%d%d%d%S]gotxyzz(x7vD sNpWm_kg!jn%hu(g}+e.d1c4b6|b8zb9yb9yc4ze/{f+|g(|g&|g&|g&|g&U`jrx{}~~%}5zA wLtUr]pd nk$lr(kz+j.~i1{g4xg6vf8tf9sf:sg6ti0uj,vk)wk'wk'wk'wk'Wcmu{#2~? {JySv[tb ri$qp'~ow+{n.xm1ul4sk7pj9nj:mj:mk7om1pn-qn*qo(qo(qo(qo(Yepx~ 0=H}Q{Yy`wg#|un'ytu*vs}.sr1pq4mp7jo9ho:go:gp7iq2kr-ls*ls(ls(ls(ls(\hs{ .;EOW~^{|e"x{l&tys*qx{-nw0kv3hu6et8ct9at:at8cv2ev.fw+gw)gw)gw)gw)_lv +8C LUz\vc!sj%oq)l~y,h}/e|2b{5_z7]z8\z9\z7^{2_{.`|+a|)a|)a|)a|)boz(6A JzRuZqamh#jo'fw+c.`1]4Z6X7V7V6X1Y-[*[)[)[)[)fs~$2> yHtPoWk^he!dm%`u(]~+Z.W1T3R4Q5P4R0S,T)U(U(U(U(kxƒ ~/x;sE nMiUe\ac^j![r%W|(T+Q.N0L1K1J1L-M*N(N&N&N&N&p}~ zu*p7lA gJ cR_Y[aXhTp Qz#N&K)H*F,E,E+E)F'G%G$G$G$G$w„tol$h2d=_F [O XVT^QfNnKxH E"C$A%@%?%?#@"@!@ @ @ @ ~wjca^,Z8WBSKPS M[JcGkDuB?=;:99999999ymbVSR#P0M;JEGNEWB_ @h =r ;~8Ì6Û5ë333221111{ncXMD CB%@2?==G;P9Y6c4n2z0҈.Ҙ -ө ,Ӿ , + * ) ) ) ) ) |ocWLB9 542'120=.G-P+Z*e(q&%#"!  }pcVK@6/-+)"'+%4#<!ENXdqqcVI=3*&$ !")19AJUa o   rcVH;0&  $ + 2;DO\k}sdVG:.# $+3=IVfx%+()))(,#2;GUbp|()+&,&+)(/"8 DR_ly*&.#/"/%,+*5'A$N"[ ht."243 2&22/>,J*W'd&p%{$$$$$$$$$$$$%%%%%%%%%2688:#9-8:5F2R0_.k-v,,+++++++++,,, , ,,,,,,5:=?AA)@4=A:M8Z6e5q4{3 3 2 2 2 2 2 2 2 2 2 3 3 3 3 4 4 4 4 4 9>AEHH$G/D;BG?T>`>>>>>>?@@AAAAA@F K Q STT"R-P;OIMUK` IjHsG{FEEDCCCCCCEEFFGGGGDJPU X YXW$W5UDTPR[ PeNmMvL}KJIIH H!H"H"H"IKKLLLLLG MTZ]] \]]0\?ZLXW V`TiSqQxPOO N!M#M$M%L&L&N"OPQQQQQIPX^bca bc,b;`H]S [\ZdXlWtU{T T"S$R%Q'Q(Q)Q*R&T"UVVVVVLS\bfhggh(g8eEcP aY_a]h\pZwY!X#W%W'V)V*U+V,W)X$Y ZZZZZNW_fjlklm%l5jBgM eVc^be`l_t^{!]$\&[(Z*Z,}Z-|Z.{[+|\&|]"}^}^}^}^}^PYcjnpppq"p2n?lJ jSh[fbeicpbx!a$`&}_){^+x^-v^.u^/t^-u`'va#wb wbwbwbwbR\fmrtttut/r=pG nQlYj`ighnfu!}e}$zd'wc)uc,rb.pb/ob/nb.od(pe$qf!qfqfqfqfT_ipuxxx yx-w:uE rNpVo^md}lkzks wj{#ti&rh)og,lf.jf/if0hf/jh)ki%li"lj lj lj lj Wblsx{|| }|*{8yC wLuTs[{rbxpiuop rnx#om&ll)jl,gk.ek/dk0bk/dl*fm&fm#gn gn gn gn Yeov|(5~A|J ~zRzxYvw`svgptnmsv#jr&gq)dq+bp-`p/^p/]p/_q*`q&ar#br br br br \irz%3>~H yPu~Wq}^n{ekzlhyt"ex}%bw(_v*\v,Zu.Yu.Xu.Yv*[v&\w#\w \w \w \w `lv~!0~;yE tNpUl\icfjbr _{#\~&Y})W|+U|,S|-R|-S|)U|%V|"W| W| W| W| dpz},x8sBnK jSgZca`h]pZy!V$T&Q(O*M*M*M'O$P"PPPPiu~ yu(q5l?hH dP aW]^ZfWnTwQ N#K%I&H'G'G$H"I JJJJn{upm#i0e;aE]M ZT W\TcQkNtKHE C!B"A"A BBCCCCuyjec`+]6Y@VISQ PY M`JiGrD}B?=<;;;;<<<<|}qdZWU#S0P;MDKMHUE] Ce @o >z;97655444444th\PI HF'E3C=AG?P=X:a8k6w4 2 0 / . . - , ,,,,vj^RG=876'534=3G1Q0[.e,q*)̐'̡&ʹ%%$#####xk_RG=4+ &%%%$0#;#E"P![ hvއߙ߬yl_RF;1)!'09CNZgw {m_RE9/% % - 5 ?JWfw}n`RD7,"  '0:ESbupaSC6*  !)4@N^r )"'"'*09E S ` m y             #&%$%$#',5BP]jv         &#( ( &""( 2?LYeq|*,,+)$(/%;"HTamw-0101 0*.6+C(O&\$g#r#|""""""""""###$$$$$$$146798%613=1J.V-b,m+w+*********++,,,,,,,,59: >@? =*;78D6Q5\4g3r3{222111 1 1 1 2 2 3 3 3 3 3 3 3 3 9= @ D FED#A/?<>J=W>>>>>>?@@@@AAA? DJNPO LLM0M?LLKWIa Hi GqFyFEDDCCCCCDEFFFFFFBGOSUUR ST+T;RHQRP\ Nd MlLtK{JJIIHHHHIJKKLLLLEKSX[[XXZ'Z7XDWOUX T` ShQoPvP~ONNMMM M MOPPPQQQGOW]``^]_#_3^@\KZT Y\XdVkUrTzTSRRQ!Q"Q"~R!~S~T~U~U~U~U~UJR[adecbc c0b=aH_Q ^Y \a[hZoYvX~WW}V!{V"yV#wV$vV$vWwXwYwYwYwYwYLV_ehihg hh-g:eEcN bW a^_e^l]s~\{{\y[vZ!tZ#rZ$qZ%oZ%p[ q\q]q]q]q]q]OYbhlmlk ll*k7iChL fT e[cb}bizapxaxu`s_p^"n^$l^%k^&i^&j_!k`kalalalalaQ\ekoqqoop'o5n@lIjR ~iY{h`wffufnrevpd~mckc"ib$fb%eb&db&dc"edfdgdgegegeS_hosuusst$s2r>pG}oO ymWvl^skdpjlmjski|hhfg"cg$af%`f&_g&_g"`hahbhbhbhbhWbkrwyywxx!x/w;|uExtM trUqq\npckojhnqfnzcm`l!^l#\k%Zk&Yl&Zl#[l\m]m]m]m]mZfov{~~||}}-||9wzCsyK pxS lwZivafuhctoasx^r[r Yq"Wq$Uq%Tq%Tq"VqWqWqXqXqXq^isz {)v6r@nIj~P g}Wd|^a{f^zm[zvYyVxSx!Qw"Pw#Ow#Ow!PwQwRwRwRwRwbnw} xt&p2l=hFeN aU ^\[cYkVtS~PNL J!I!I~J~K~K~L~L~L~gs||uom!i.e9bB^K[R XY VaShPqM{JHFDCCDDEEEEmxylfca)^5Z>WGUORV O^ LfJoGyDB@>===>>>>>ssd\ YW"U/R9PCMKJSHZEc Cl @v>;9877666777{wk_RMKJ'H3F=DFBN@V>_;h9s7 4 2 1 0 0 / / / / / / {ocWKA>=;):49>7G6P4Z2d0o.|,*)(('&&&&&~qeYMB8/ -,+)*3)=(G'Q&\%h#v"Ɔ ƘƫsgZNB8/& %/:DP]k|׏ؤٻuh[NB7-$ # - 7 B O ]mwi[NA5*!  "*4?L\myj\N@3(  &0<IZm{l]O@2&  !+7FXk&$$'- 6CP^kv#!!#)2 @ MZgs}""!$/<IV b n y         %&%! !+7EQ^it})*)'(''#3 ?LXdnx-.. //.!,-)9&F$S"^"i!s!|!!!!!!!!""##$$$$$$$02 36 652%02-?,L+X+c*m*v**********++,,,,,,,4 69<< ;85)473F4R3]3g3p2x222211122 2 3 3 3333337:>AA? <:;1<@DGHF@ BD+D;DHCSB\BeAl@t @{ ? ? >>>>>>??@@ A A A A =CINONIIJ&K6KCJNIWH`Gg Fo Fv E}EDDCCCCDEFFF F F F @GOSUTPOP"Q2Q?PJOSN\Mc Lj Kq JyJIIHHHHHJJKKKKKCKSXZZWTVV.V;UFTPSXR_ Qf PmOtO|NNM~M|MzMyMxNxOxOxPxPxPxPFOW\__\Y Z[*[8ZCYLXUW\ Vc UjTqSy}SzRxRvQtQsQqQqRqSqTrTrTrTrTHS[`cca^ __'_5^@]J\R[Y Z` }Yg{XnxXuvW~tVrVoVnUlUkVkVkWkXlXlXlXlXKV^dghfbcd$c2b=aG`O}_V z^] w]d u\ks\sp[{n[lZjZhYfZeZeZe[f[f\g\g\g\NYagjljggg!g/f;eD{dMxcT ub[ raa paim`pk_yi_f^d^b^a^_^_^`_a_a_b_b_b_Q\djnpnkjkk,~k8zjBviJshRpgY mf` keghdnfdwdcac_b]b[bZbZb[c\c\c]c]c]cU_hnrtsoo o}p)yo5un?rmHnlPklW ik^ fjedilaiu_h\hZgXgVgUgUgVgWgWhXgXgXgXckrvxwss |txt&tt2ps=msFjrNgqU dp\ apc_oj\nsZn|WmUlSlQlPlOlQlQlRlRlRlRl\gov{||xzyuyrz#nz/ky:hyCdxKawR_wY \v` YuhWtpTtzRsOsMrLrJrJrKrLrLrMrMrMr`kt{z~snkh,e7b@_H\~PY~WW}^ T|f Q|nO{xL{JzHzFzEzDzEyFyFxGxGxGxepywkf c`'^3[<XEVMSTP[Nc Kl IvFDB@?>??@@@@kvse] ZX!V-S8QANILPJXG`Ei Bs @ ><:98889999r}zm_TONL'J2H<FDDLBT@\>f;p9|7 5 3 2 2 1 1 1 1 1 1 zrfZNE B@?*>4<>;G9O7X5a3l1y/-,+**)))))vj^RF<5 32!1+/5.>-H,Q+[)g't&$#"!!  zm`UI>3*$ "! !* 3=GR^l|}obVJ>3*! %/:F R ` p ΃ Η ά qdWJ>2(  $.9ERbsވߝ߳seXJ=1&  "+6CRbvugYK</$  '3@QcwwhZL<."  #/>Obw#!!$*3AN\ht~  %0=KXdpz! , 9FS_ku~ (4 A N Zfpy ##!#/;IU`jt|'' % & %# (5BOZenw+ ++- ,)& #-!:HT _ h q!y!!!!!"""##$$$$$$$$//232/+'"'2)A*N*Y*b*k*s*z******+++,,,--,,,238995. /1,3;3H4S3\3e3m3t2{222222223344444458>BB?88:&;6EIJGA?A!B1C>CIBSA[Ab@j@q?x?? > > > > >?? @ @ @ AAA<CJOPNIFHI,I:IEHNGWG^FeFlEs E{ D D DCC~C|D{DzE zF zF zF zF zF >HOTUTPL MN(N6NAMKMSLZKaKhJo Jw ~I |IzHxHwHuHtIsIrJrJ rJ rJ rJ rJ BLSXZYVRRS$S2S>RGQPQWP^~Oe{Ol yNs wN{ uMsMqMoMnMlMlMlNlOlO lO lO lO EPW\^^[VVW!X/W;VDVM|UTzT[wTbuSh sSp qRx oRmQkQiQgQfQeReRfSfS fS fS fS ISZ_bb_ZZ[[,[8}[AzZJwYQtXXqX_oWf mWm kVv iVgUeUcUaU`U_U`V`VaWaW aW aW LV^cffd^^__)|_5x_?t^Gq]Oo\Vl\\j[c h[k fZs dZ}bZ_Y^Y\Y[YZY[Z[Z\Z\Z \Z \Z OYafijhbb ~czc&vc2sc<obElaLjaTg`Ze`ac_i a_q _^{]^Z^X]W]V^U^V^V^W^W^ W^ W^ S]djmnmg~g xgtg#qh/ng9kgBhfJefRceX`e_^dg \do ZcyXcUbSbRbQbPbQbQbRbRb Rb Rb V`hnqsqkxkrknlkl,hl7fl@ckH`kO^jV\j]Yie Wim Uiw ShPhNgMgKhKhKgLgLgMg Mg Mg Zdlrvwvyqqqkqhqfr(cr4`r=^rE[qMYqTWp[TpcRok Pot MnKnInGmFnEnFmFmGmGl Gl Gl _iqw{|{uxkwew ax_x$]y0Zy:XyBVxJSxQQwXOw`LvhJvr Hu} EuCuBu@u@u@t@tAs As As As dnv|re]YW U+S6Q>OFMNKUI]FfD~pB~{ ?~ =} <} :}:~ :| :{ :{ :z :z :z it|{n`UPNM&K0I:HBFJDRBZ@c=m;x97 5 4 3 3 3 3 3 3 3 pzuhZOG DCA*@4?==E;M:V8_6i4u20.-,,+++++xzmaUI?976"4,352>1G0P.Z-d+q)'&$###""""reYNB7.)('"&,%5$?#H"S!^ jyuh\PD9/&!*4>ITbq yk^RF:/%   (2=IWfwƋƠŶ{m`SF:.$ '1<IXi|ֿ֧֒~oaTF9-"  $.:IYkqcUG9,  !+8HZmteVH9+  (6GZn  !'0>LYepz!-:HUalv (6CP\gqz  $0>KWblu}  * 8EQ\fow !  #0>J V ` i q y %##$! '5COYcks{('**'" -< I S!]!e"m"t"|"""####$$%%%%%%%,-243.% %'')6*C+N+W+`+g+o+v+}++++++,,---.---03:=<91.0!203=3I3R3Z3b3i3p3w2222223344444443:ADDA;789+:8;D;M:V:]:d:k9r9z9999999:}:|;|;|;|;|;7@GJKIC> ?@&A4A?AIAQ@Y@`@g?m?u?}>}>{> z> x> w? u? t@t@t@s@s@s@;ELOPOJDEF"F0G<FEFNFUE\~Ec|DjzDqyDywDuC sC qC pC nD mD mE lElElElElE?IPTUTPJIJK,L8KBKJ|JRyJXwJ_uIfsImqIvoHmH lH jH hH gH fI fI fI fJfIfIfICMSXYXUNNOO)P5{P?xOGvOOsNUqN\oMcmMjkMriM|gL eL cL bLaM`M`M `N `N `N`N`NGPW[]]ZSR S|S%yT1uT<sSDpSLmRSkRYiR`gQheQpcQyaQ `P ^P \P[QZQZQ ZR [R [Q[Q[QJSZ_aa^WV zWvW"sX.pW9mWAjWIhVPfVWdV^bUe`Um^Uw\U ZU YU WUVUUUUU UU VU VU VUVUMW^beec\{[u[q[n\+k\6h[?e[Gc[NaZU_Z\]Zc[ZkYYuWY UY TY RYQYPYPY QY QY QY QYQYQZafhig}`u_o_k_h`(f`3c`<a`D__L\_S[_ZY_aW^iU^sS^~ Q] O] M] L^K^K^ L^ L] L] L]L]T^ejmmlxeodidedbd%`e0^e:\eBZeJXdQVdXTd_RdgPcqNc{ Lc Jc Hc Gc Fc Fc Fb Gb Gb GbGbXbinqrqtkiici _i\j!Zj-Xk6Vk?UkGSjNQjUOj]MjeJinHiyFi Di Ch Ai @i @h Ah Ag AgBgBg]fmsvwvpreq\pXpVpTq(Rq3Pq<OrDMqKKqSIqZGqbEplCpwAp?p=o ;p ;p :o ;n;n;m;m;mbksy{|{|mz`xVwPwNxLx$Ky.Iy7Hy@FyHDyOByWAy`?xiC=K;S9\7f5q310.----~-}-}-}nx}pcUKA;98"7,654=3F2O1X/b-n+{*(&%%%%%%%vvi\PD:1-,+$*-)6(?'H&R%\#h"w zmaUI=3*! $-6?JUapqdXL@5*" "+ 5 @ K X gxugZNA5+!  "+6AN\mxj\OB5*   "+5AP`rχϝϳzl^PB5) (4AQcw|n`QC5(  $1ASf|paSE6'  !.@Sh  $.<JVcmw *7ER^ir{ %3@MYdmv}  -:GS^hpx  &4AMXbjry  ,9FQ[dlsz   " 1 > J U^fmt{" #$! )7DNW`gnu|&'-/-'"1 =!H"R"Z#b#i#o#w#~#$$$$%%&'''''')06872+%')+*8*C+L+U+\+c+j+q,x,,,,,,-.....~.~..7=??<5/ /1&232>3H3P3X3^3e3l3s3|333}3|3z3y4w5v5u5u5u5u53=CEFC=668!9.999C9L9S9Z9a~9h|9oz9wy9w9u9t9r9q9o:n:n;m;m;m:m:9BHKKID><=>*?5??~?H|?Oz?Vx?]v>dt>kr>sp>|o>m>k>j>i?g?g?f@f@f@f?f?=FLOPOJDA BC&}D2zD<wDDuDLrDSpCYoC`mCgkCoiCyhCfCdCcCaC`D`D`D_D_D`D`DAJPSUSOIG }GyG"vH.sH8qHAnHIlHPjHVhH]fGdeGlcGvaG`G^G\G[HZHZHZIZIZHZHZHDMSWYXTN}KwKsLpL+mL5kL>hLFfLMdLSbLZaLb_Lj^Ls\K~ZKXKWLVL UL TLTMULULULULHQW[\\YSwOqOnPjP(hP2eP;cPCaPJ_PQ]PX\P_ZPgXPqWP{UPSPRPPP PP OPPPPPPPPPPPKTZ^``]|WrTlShTeT$bT/`T8^T@\THZTOYTVWT]UTeTTnRTyPTNTMTKTKT JTKTKTKTKTKTNW^bddbw[mXfX bX_X"]Y,[Y6YY>WYFVYMTYTRY[QYcOYlMYwKXIXHXGYFYEYFYFXFXGXGXR[afhigr`h^a] \]Z]W])V^3T^;R^CQ^JO^RN^YL^aJ^jH^uF^D]C^A^@^@^@]A]A]A\A\V_fjmmlogdd[bVbTbRc%Pc/Nd8Md@KdHJdOHdWFd_EdhCdsAc?c=cr@=rH;rP:rY8rc6rm4rz3r1r/r.r.r.q.p.o.o.ofovz|~}r}d|W{LzBy)G(P'Z&f$s#! t}~qeXL@6,% #"!% .6@IT`n~}wi]PE9.% $-7ALXg w {m`TH<0& $.8DP^nqcVJ=1&  %/9FTdvtfXK>1&  $.:GWi}ɔȪwhZM?1%  "-9IZn߅ߜ߲yk\N@1$   +:K^sm^PA2$ ):Mbx!+9GT_js{ '4BO[env~  "/=JU`iqy  )7DPZcksz "0=IT]emsz  (6BMW_fmtz -:FPX`gnu{   %2?IRZahov}#(*'!,8CLT\bipw     $,131-%  &!2"="G#O#V#]$d$k$r$z$%%%&~&}'{'y(x(x(x(x(+39;:6/('( )-*8+B+J+R+X,_,f,m},u{,~z,x,v-u-t-r.q.p/o/o/n/n/1:?AA>81./0(132=2F}2M{2Ty2[w2au2it2pr2yp3o3m3l3j4i4h5g5g5f5f5f46?DGGD?94 56$|7/y79w8Bt8Ir8Pq8Wo8^m8el8mj8uh8g8e8d9b9a:`:`:_:_:_:_:;CIKLJE?: {:w; t<+r<5o=>m=Fk=Mi=Sh=Zf=ad=ic=ra=}`=^=]>[>Z>Z?Y?Y?Y?Y?Y>?GLPPOKEz@u?q@m@(kA2iA;gABeAIcAPaAW`A^^Af]Bo[BzZBXBWBUCTCTCSCSCTCTCTCBJPSTSPJuEnCkDgE$eE.bE7aE?_EF]EM[ETZF[YFcWFlVFwTFSFQFPGOGNGNGNGNGOGOGFNTWXWT{NpJiH eHbI!_I+]I4[I<YICWIJVIRUJYTJaRJjQJuOJNJLKKKJKIKIKIKJKJKJKIQW[\\YvSkNdM _L\MZM(XM1VM:TMASNHRNOPNWON_MNhLNsJOIOGOFOEODPDOEOEOENENLU[^``^rWgS^QYQWQTQ%RR/QR7OR?NRFMSMLSUJS]ISfGSpES}DSBSAT@T?T?T@S@S@S@RPX^bee}bn\cYYVTVQVOV"MW,LW4JW<IXDHXKGXSEX[DXdBXn@X{?X=X^a<^l;^x9^7^6^5^4_4^5]5]5\5\Yaglnnvlgi\fQdHb DbBbAc$?c->c5=d=s4r 1s0s/s#.s+-t4,t<+tD)tM(uW'uc%uo$u"u!u uutsr q qksy|~tgZM~C~8}/}(} &}$}#~%"~-!~6!~?HR^kz~|{{{rz{m`TH<2( &.7ALXeu {seYLA4*!   & / 9 DP^nwj]PD8,"  '1<HVew{m`SF9-#   (2>L[lqcUG:-"  '2@O`tËáøseWI;-! &2ASf|ٔ٫vgYK<.!  $2CVkj[L>/   #3FZq(7DQ\fow~$2?LWajry ,:FR\eltz  &4@LV_gnt{  -:EOX`hnt{  %2>IRZahnt{  *7BKT[bhnu{  !.: D M U \ b i o v ~  $%" '3>GOV\cipx}||{{!)-/,' !-8AIPW^dks|}|zxwv t!r!q"q!q!q!(05751+# !'"2#<#D~#K|$R{$Yy$_w$fv%nt%ws%q&o&n&m'l'j(i)h)h)h(h(.6;==93-' '("|)-y*7w*?u*Gs+Nq+Tp+[n+bl+jk,ri,}h,f-e-d.c.a/`/`/`/`/`.4<ACC@:4.z-w.s/)q03o0;m0Ck1Ji1Qg1Wf1^d1fc2oa2y`2_2]3\3[4Z4Y5Y5Y4Y4Y48@EHHF@;y5s3o4l4%i5/g57e6?c6Fb6M`6T_6[]7c\7k[7vY7X8V8U8T9S9S:S9R9S9S9<DILLKF}@s;l8 h9e9"c:+`:4^:<]:C[:JZ;PX;XW;`V;hUM>M>M>M>M=M=@HMPQOKyEn@f= b=_=\>(Z>1X>8W>@U?FT?MS?UR@]P@fO@pN@|LAKAJAIBHBHBHBHBHAHADKPTTSPuJjFaB\AYBWB%UB.SB5QB=OBCOCKNCRMDZKDcJDnIEzGEFEEFDFCFCFCFCFCECEGOTWXX~UqOfJ\FWFTFQF"OF+NF3LG:KGAJGIIHPHHXGHaEIlDIxBIAI@J?J>K>J>J>I?I?IJRX[]\{YmSbOWLQJ NJLKJK(IK0GK8FL?ELFDLNCMVBM_@Mj?Mv=NRT2]F1^N0^W/^b-^n,_}*_)_(_'_'_'^'](](\\djnoyonn`kTiIg?e5c 2c0c/d!.d)-d1,d9+eB*eJ(eT'e_&fk$fz#f"f fff e d c!cbjpsuuuit\rOqDo:n0m)l 'l&l%m$$m,#m4"m=!nF nPn[ngnvnooonmlkkiqvy|{q{d{WzJy?x5x+w"vvwww&w.w7x@xJxVxcxrxxxxwvuutqx|wj]PD8.$ '0 9 D P ] l~y~}obUI=1&  )2=IVevtfYL@4(  "+5@N\nxj\OB6) "+6DScw{m_QD6*  !+8GXk~pbSF8*   +:K^sҋҤӻsdVG9* *<Od|fXI;+  +>Sj&4AMXbksz !.<HS]fmu{  )6BNW`hov| #0<GQZbiov|)5AKT\ciou{ ".:DMU\ciou{ '2=FOV\chou|  *5?HPV\ciov  !  # . 8 A I P W ] c jqz~|{zxvuttt&**(#'2;CKQ~W|^{eylwtv~trqonmkjjjj&-131,& "~,{6y>wEuLsSqYp`ngmpkzjhge d!c!b"a"a"a"a",48985/(!{ w!t"'q"1o#9m#Ak#Hi#Nh$Uf$[e$cc%kb%ua%_&^&]'[([(Z)Y)Y)Y)Y(29=??<60y*r&n'k(#i(,f)5e)<c)Ca*J`*Q^*W]*_\+hZ+rY,}X,V-U-T.S.R/R/R.R.R.6=BDDA<{7r1k, g-d-a.(_.1].9\/@Z/FX/MW/TV0\U0dS1nR1zQ1P2N2M3M4L4L4L4L3L3:BFIIGBw=m7d2 `2]2Z2%X3-V35U3<S4CR4JQ4QP4YO5aM5lL6wK6J7H7G8G8F8F8F8F8F7>EJMMK~GsBi=_7Z6W7T7"R7*P72O89M8@L8GK8NJ9VI9_H:iG:uE;D;C<B<A=A=A=A<A<A<BINPQP{LoFeBZ=T;Q;O;M;'K;/I<6G<=G\C>gB?s@???>@=@Ce=Cq;C:D9D8E7E7E7E7D8D8CIPUXYXvVhP]LSHJE FDDDBD"AE)?E1>E8=E?I=I;J&:J.9J58K=7KD6KM4LV3L`2Ll1Mz0M.M-N,N,N,M-M-L-LPX]ab{ap_b[XXNUCQ;O 8O6O5O#4P+3P22P:1PB0QJ.QS-R],Ri+Rx)R(S'S&S&S&S'R'Q'QU\bfgxfme`aU^J[?X5V1U0V.V-V',V/+W6*W>)WG(WP&XZ%Xg$Xu#Y!Y YYYX X W!WZbgkluljk]hQeFc;`1^*] (]&]%^#$^*#^2"^:!^C _L_W_c`q`````_^^]`hnp|rrrfqXnLlAk6i-g#fffff%f-g5g>gHgSh_hnhhhhhgfeegosvxxmx`wSvFt;s1r'qqp pppq'q/q8qBqN q[ qi qz qqqppo n nouy~|t~f~Y~M~@}5}*|!||| | | ||!|)|2|=|H|U|c|t|{{zyyyxw|yl^QE9-#  #,6BN]m~~qcVI<0$  $.9FUexugYL?2&  %/<K[nxj\NA3&  $0?Pbx{m_PB4&  $2CUj̜̃˵paRD6' $5H\scUF8(%8Mc|#0=IT^fnv|  +8DOYaipw}%2>IS\cjqw}  ,8CMV]dkqv|%1<FOW^djpv| *5?HPW^diou|#.8AJQW]ciov} &1:CJQW]cipw~}{zzyxx  )3<DKQW]c}j{rz|x v t s q p o nmmm#&&$   " ,~ 5|=zExKwQuXs^qepnnwlkihfedccbb$*./-("}yv's0q8o?mFlLjShYgaeidrb~a_^\\ZZYYY*15641+%ysol"i+g3e;dAbH`N_U]\\d[nYyXV U T!S!R"R#R#R"R"/6:<;82z-r&j f c!a!&_"/]"6["=Z#DX#JW#QU#XT$aS$jQ%vP%O&N'L'L(K(K)K(K(K(4;?A@>9u3l-c'^&\&Y'"W'+U(2T(9R(@Q(FP)MN)UM)]L*gK*sI+H+G,F-E-E.D.D.E-E-8?CEEC{>q9g4^.X+U+R,P,'O,/M-6L-<J-CI-JH.RG.ZF/dE/pC0~B0A1@2?2?3?3?2?2?2<CGIIHxDm>c9Z4R0 O0L0J0$I1+G12F19D1@C2GB2OA3X@3b?4m>4{=5<6;6:79797:7:6:6@FKMNLuHjC`>V9M5 I4G5E5!C5(A5/@56?6=>6E=7M<7U;8`:8k99y897:5:5;4;4;5;5:5:CJNQR~PsMgH\DR?H:D9A9?9>9&<9-;:4::;9;B8;J71>0?/?/?/?0?0>0>GMRUV|UqRdLYIOEE@?> <>:>9>#7>*6?15?84?@3@H2@Q1A[0Ag.Bu-B,C+C*C)D*C*C+B+BJQVYZyZnWaRWNMKCG:C 6C4C3C 2D'1D/0D6/E=-EF,EO+FY*Fd)Gr(G&G%H$H#H$H%G%G&GOUZ^_w^k\_XUUKQ@M5J0I.I-I,I$+J+*J3(J;'KC&KL%KV$Lb#Lp!L MMMNMLL KSZ_c~dtcia\^R[GXf3e)c a` ````&`.a7a@aKaX af bv b a aaa ` _ _fmq~suujt\sOrCp8o-n$lkkj j j j! j) j2j<kGkSkakqjjjiiihhmsw{zp{c{VzIz=y1x'wvvv v vvvv$u,u6uAuNu\ulu~ttssrrquz~vi[NA5)  &/;GUex~}}|{n`RE9,!  (2?M]prdVH;." )5CTf{ugYK=0# )8HZoxj\M?1# +<NbzƔƭl^OA2$  -@Tk`RC4%  1F\t ,9EPYbjqw~'3?JT]dkrx~ ".9ENW^elrw~ (3>HQX_ekqw} "-7AJRY_ejpv} &1:CKRX^dipv~  *4<DKRX]cipw  #,5>EKQW]cjqz}{ywutrrrqq  %/7>~E}K{QyWx]vdtkrtpnlkihgff e e  ##  |y(v0t8r ?p Eo Lm Rl Xj _h gg pe zc b ` _ ^ \\[[[!(++)${u q n!k*i2g9e@dFcMaS_Z^b\k[vYXVUTSRRRR(.221-'z!rk gda%_-]4\;[BYHXOVVU^SgRrPONLKKJJJJ-47874}/t)l#d^[Y!W)U0T7R=QDOKNRMZKcJnI|GF E!D!C"C"C"C"C"28<>=:y5o0f*^$W T Q O!%N!,L!3K":I"@H"GG"NF#WD#`C$kB$yA%?&>&='='=(=(='='6=@BB?v;l6b0Y*Q% M%K%I%!G&(E&/D&6C&=B'DA'K?(T>(]=)i<)v;*9+8+7,7,7,7,7,8,:@DFF}Ds@h;_6U1L+G)E*C*A*%?*,>+3=+9<+A;,H:,Q9-[8.f6.s5/4/30201111212030>DHJJ{IpEe@[;R6H1B. ?.=.;."9/)8//7/660>50F41O31Y22d12q03/4.4,5,5,5-5-4.4AHLNNyMnJbEX@N<E7=3 93736343&33-24414<05D/5L.6V-6b,7o+7*8(8'9&9'9(9(8)8EKORSwRlO_IVFLBB=88482818/8$.8+-92,99+:A*:J);T(;_'!>"=#=#<IOSVWuVjS]OSLJH@D6@/= -=+=*>!)>((>/'>7&??$?H#@R"@]!Aj AzABBBBBAAMSX[}\r[gX[TQRHN=J3G*C &C%C$C#D%"D,!D4 E<EEEOFZFhFxGGGHGGFFRX]`zap`e^YZOXDT9Q/N&K JJJJ!K(K0K8KBLLLWLeMuMMMNMMLLW]bewfmfcdVaJ^?[5X+V"TR RRRR$R,R4R>SHSTSb Tr T T TT T S R R]dh~ktlkl_jRgEd:b0`&^][Z ZZ [ [' [0 [: [E[Q[^[m[[[[ZZZYdkn{prrgqYpLn@l5k*i!gff e eedd#d,d5d@dLdZdid{dccbbbalquxwmx`wRvFu9t.t#rqq qqp ppoo&o0o;oGoTodounmmlkkksx}{s}e~X~K~>~2~&}|| |}}| ||||!|)|4{@{N{^{ozzyxwvvzxk]OB5)  ",8FVh|}oaSE8+  ".=M^srdVH:,  #1ASgugYJ<-   $5G[rj[M>/! '9Md~ܙܰ]O@2" *?Um  (4ALU]elrx~#/;FPX_flrx~ *5@JRY`flrx~$/9CLSZ`fkqw~ )3=EMTZ_ejpw",6>FMSY^djpw &/7?FLRX]cjqy~|zxxwww (19@FLRW}]{czkxsv}tqpnlkjjjj !~*{2y9w@uFsLrQpWn^mekniwgecb`__^^^  ~ yur#o+m3k:i@gFfLdRcYa`_i^s\ZYWVU T T T T %((%!{tn if d %b -` 4^ :] @[ GZ MX TW \U dT oR {PONLLKKKK&+//-)}$tle_\ZX'V.T5S;RBPHOPNWL`KkIxHFEDCCCCC+14541x+o&f ^W TQO#N*L1K7I>HDGLETD]CgAt@?=<;;<<<069;:~7s2j-a'Y!Q LJHF&E-C3B:AA@H>P=Y<d;q987 6 5!5!5"5!6!4:>??{<p8g2]-T(L"FCA?"> )= 0; 6:!=9!E8"M7"W6#b4#n3$~2$1%/%/&/&/&0&0&8>BCCxAn=c8Z3Q.H(@$ =#;$9$8$&6$,5%34%:3&B2&J1'T0'_/(l.({,)+***)*)+*+**+*<BFGGvElBa=W8N3D.<) 7(5(3(2(#0()/)0/*7.*?-+H,+R+,]*,j(-y'-&.%.$/$/%/%/&.?EIK~LtJjG^BT=K9A48/2- 0-.--- +-'*..).5)/=(/F'0O%0[$1h#1w"2!23333 3!2CIMO|PsOhL\FRCI??;66.2 +2)2(2&2$%3+$32#4:"4C!5M 5X6e6u77788877GMQS{TqSfPZLPIGE=A3=*9 %7#7"8!8" 8(80989A:K:V;c;r;<<==<<;KQUXyYnXdVXQNOEK:G0C'@ > >>>>%>-?5?>?H@S@`ApAAABBAA@PVZ]v^l]b[VWLUAQ6N,K#HE DDEE"E)E1E;FEFPG^ Gm G G GGG G F FU[`}bscjb`aS^GZUJVWVeUwUUUTTSSbhlwnoocnVlIj=h2f'ecba `` ____&_/_:_E_S_a^r^]]\\[[jo}rutju]tOsBr6p+o nml lkk jjjj!i*i4i@iNi\imhhgfeedqvzyp{b{U{Hz;z/z#yxw wwwwv vvvv#v.u:uGuVuht|tsrqppy}vhZL?2%  &2?O`u~~zl^PB5'  (6EWk~paSE7)  *:L`xsdVG9* .@TjgXJ;,  2F]vԒի[L=/ $8Ng $0<GQY`gmsy  +7BKS[agmsy&1;EMU[aglrx  *5>GNU[aflrx $.8@HNTZ_ekqx (19AHNSY^djqz~ "*2:AGMRX]dks}}{xvusqpppp  $,3:}A{GyLwRvWt]rdpmovljigedccbc ~zv%t-q4o:n@lFjLiRgXf_dgbq`|^\[YXXXWW~ w rnjh'e.d4b;`@_F]L\SZZXbWlUwSRPONMMMM"%%"}un g c_]![(Y/W5V;TASGQNPUN^MgKsI H G E D D C C D $),,*&w!nf_Y U S Q "O )M /L 6K <I BH IF QEZDdBp@?><;;;;<)/221|-r(i#aYQLJHF$E+C1B7A>@E>M=V<a:m9|76543444.4786x4n.e*\$TLF B@? ='<-;49:8B7J6S5^3j2y0/.---..28;<<v9k4b/Y*P%G@ <:86#5)40372>1G/P.[-g,v*)(' & ' ( ( 6<?A}@t>i:_5V0M+D%; 6320 /&.--4, ;+ D*!N)!X'"e&"t%###"$!$!%"%"$#$:?CE{DrCg?]:S6J1A,8&1# .","*")"#(#*'#1&$9%%A$%K#&V"&c!'r'(())))(>CGIzIpGfDZ?Q;G7>25-,( ('''%'$'!#('"(.!)6 )?*I*T+`+o,,------AGKMxMnLdIXDO@F==834*/$, !, ,--%-,.4.</F/Q0^0m11122211EKOQvRmPbNVIMFDC;?1:'62 2222"3)314:4D4O5\5k6}66 7 7 666IOS~VuVjU`SUOLLBI8E.A$=:88899&9.97:A:L ;Y ;h ;z ; <<<< ; ;NTX|[r[hZ^XSUIR>N4K*G!DB@ ??? @# @+ @4 @> AJAVAeAvAAAAAA@TY^y`p`f`]^Q[EW:T/Q%OLJH GGGG H(H1H;HGHSHbHsHHHGGGGZ`cwenfefYdL`@]5[*Y WUS RQ PPPP%P.P8PCPPP^PoPOONNMMaf}itllmakSiFg:d/c$a_^ \\[ ZZZY!Y)Y3Y?YLYZYkX~XWWVUUhmzprrgrZqLp?n3m(kjh ggff e eddd$d.d:cGcUcfczba`__^otxwnx`xRwEw8v+v tssrrrqq qpppp'p3o@oPo`ntnmlkjiw|{s}e~WI</"~~~~~~ ~ ~~~ ~+}9}H}Y|m|{zyxwwi[M?2$ "/?Pd{{m^PB4& $4FYppaSD6' '9Md~dUG8),@Vǫ͋XI:,2H`{ !,8CLT[bhntz '2=FOV\bhnsy",7@IPV\bgmsy &0:BJPV[aflrz *3;CIOUZ_ekr{ #,4<CINSY^dks}}{yxwwu&-5<BGMR}X{^yexmvvsqomljihhi  |'z.w5u;tArGpLoRmXk_ifgpe{cb`^]\\[[  { wso!l(j/h5g;eAcFbL`R_Y]a[jYuWUTSQPPPP wqkgda"^)]/[5Y;XAVFUMSTR\PeNpL}KIHGFFFE ""woh a ]YVT#R*P0O5N;LAKHIOGWFaDlCyA@>=<<<<"'))'{#qiaZ S OLJH$G*E0D6C=AC@K> S= ]; h: v8 7 5 4 3 3 3 4 ',//.w*m%d \TLF C A ? > %< +; 2: 88 ?7G6P4Z3f1t0.-,+,,-,145}4t1j+`'X!OG@ ;976!4'3-241;0C.M-W,c*q)'&%$%&&169:{9q6g1]-T(L"C;5 21/.$,*+1*8)@(J'T&`$o#!   4:=>y=o;e7[2R-I(@#80 ,*)' &'%-$5#>"G!R ^l~8=ABwBm@c<Y7O3F.=)5$- ' %#!!$ +2;E O!\!j"{""#####<ADFuFlDbAW<M8D4<03+*&#" !!""!"(#0#8$B%M%Y&h&y&'''(''@EH}JtJjI`FUAL>C::612(- ) ''''(%(-(6)@)K*W*f+w+ , , , , , +DIL|NsOiN^KSGJDB@9=/8%40- ,---#-*.3.= /H /U 0c 0t 0111100HMQzSqTgR]PRLIJ@F5B+>":74 33 3 3 4( 41 5;5F5R6`6q6666665MRVxXoYeX[UQRGOHPW]ciot{#.8BJQX]chnt{ (2<DKQW]bgmt{"+5=EKQV[afmt| %.6>DJPUZ_flu~~| '/7=CINSY_em~w|zxusrqppn !)07}={ByHxMvRtXr_qgopl{jhfecbaaa|xu#r)p0n6m<kAiGhLfRdYc`ai_t][YWVUUTU  {u plhf#c*a0`6^;]A[FZLXSV[TdRnQ{OMLKJIIIy qke a]ZX$V*T0S6Q;PANGMNKVI_GiFvDCA@??>?zrjb\WSPNL%J+H0G6F<DBCIAQ?Z>e<r:9866555 $&&$u ld\T N JGDB @%?+>1<7;>9E8M6V5a3n1~0/-,,,,%*,-{+r'h"_WOHA >;98!6&5,322 91 A/ I. S, ^+ l) |( & % $ # $ % */22y1o.e)\$SKC<5 3 1 / . "- (+ .* 5) ='F&P$\#j"{ /367v6m3c/Y*P%H ?80,*('%$$*#2":!C NZhx37:~;t;k8a4W/N+E&=!4-& #" !'/7AKWev6;>|?s?i=_9U5L0C,:'2"*" $,4>IUct  :?B{DqChB^>S:J6A29-1)(%  ")2<F S a !q ! " " " " " !>CFyHpHgF\DR?I;@884/0','# !!"" "'#/ $9 $D %P %^ &o&&&&&&&BGJxLoLeK[HPDGA?>7;-6$1-*( ' ( ( (% )- )7*B*N+\+l++++++*FKOvQmQcPZMOJGG>D3@)< 841 / ..//#/+050?0L1Y1i1|11000/KP}TuVkVbUXSNPEM:I/E%B>;9 7 6666 6)627=7I7W7g7y766655PV|Zr[i[`[WYLV@R5N*K HFC A@ ?>>>>&>/>:>F>T>d>v==<<;;W\y_paha_aT^G[:W/U%RPM KJI H GGFF"F,F7FCFQF`EsEDDCBB]bwenggh[fNcAa4^)\ZWVTSRQ QPOOO'O2O?OMN]NoNMLKJJe|itlmnbmTkGi:g-e"db` _^^]\[ ZZYY"Y-Y:YHXXXkWWVUTSlypsshsZrLq?p2o%nlk jjiihgff feee'd4dCdSdec{ba`_^}twwny_yQyCy6x)xwv uuuvuttsss rrr r,r;qLq_qtponlk{{r~d~UG9+  #2CVl~}|vhYK<.   '8Lb|j\M?0! -@Vo_PA3# 3Ib~SD5& %;Snߌݩ$/:CKRY^diou| )4=ELSX^cinu} #.7?FMRX]bhnu~'08@FLQV[agnv !)29?EJPUZ`gox}|{zwu #+28>DINS}Y{`yhwqu|spomkjiig }$z+x2v8t=rBqHoMmSlYjahjftda_^\[[ZZz uqnk%i+g1f7d<cAaG_M^S\[ZdXnV{TRQPONNM |unieb_]%[+Y1X6V;UASGQNPUN^LhJuHGEDCBBB{ sle_ [WTQO%N+L0K6I<HBFHEPCYAc?o>~<;:9888uld ]VQ MJGE D&B+A1?6>=<D;K9T7_6k4z210//.."$$z!qg_WP IE A><:!9&7,62483?1G0P.[-g+v*('&%%%#(**w(m%d [RKC = 96310"/'--,4*;)C(M&X%e#t"  (-/~/t.j+a&X!OG?81 .+)('#%)$ 0# 7! @ J U b r       -14|4r3h1_,U'L#D<4-& $ " !   % , 4=GSaq158z9p8g6]2S-J(B$91*# !)1:EQ_o     59<x=o=e:[7R2I.@*7%/!(  &.8BO \ l   8=@wAmAd?Z<P8G3>06+.''# # , 5 @ L Zi|<ADuElEcDYAO=F9>652..%*%!    "*3 > J!W!g!y!!!!! @E}HtJkJbIXFNBE?=<59+4"/+( $ ###$ $(%1%<%H&U&e&w&&&&%%EI{MsOjO`NWKMHDEO2L(HEB@=<; :999 9)949@9N9]9o887765UZv]m_e_]_R\DX8U-R"OLJ HFED C BAAA&A1A=AJAZAl@??>=<\|`scledfYdKa>^2[&YVT RQONML KKJJ"J,J9JGJVIhI~HGFEDcygrjkl`kRiDf7d*b`^ ][ZYXWVV UTTT'T4TBSRSdRyRQPON~jwnpqfqXpJoK=S;]9i7x6432211zph_ XQL HDA?=!<&:,91776>4F3O1Y/e.s,+*)((( !!ulcZR KD@ <8643!1'0,.3-:+B*K(U&a%p$"! "&(|'r%i"_WNF? 84 1.,*)"'(&.$6#>"G R^m~'+-y-p+f(]$TKC;4 - ) &$"! $*2:DO\j| +/1w2n1d.[*Q%I @81)#    ' . 7 A M Z i { /36v6l5c3Y/P+G&>!6.'       # + 4? J X g y37~:t;k:a8X5N0E,='5#-&    ( 2 <HUev6;|>s?j?`=W9M6D1<.4*,&%"   &/:FSbt:?{BrChC_BV?L;C7;430,,$)$   $-8DQ`r>CyFpHhH^FUDK@C=;:37*2 -)% "   " +!6!A!O!^"p"!!! CHxKoLfM]KTIJFBC:@/;%73/ ,)' &%&&!&)&3'?'M'\'m''&%%$HLvPnQeR\QSOJLAI5D+@!<96 20/ .----'-1-=-J-Y-k-,,+**M}RuUlWcW[VSUGQ;M0I%FC? =:87 6 5444$4.4:4G4W4h4}32110S{Xs[j]b][]OZBV6R*O LIGDBA?> ==<s0r#qo nmmmmlkjiiih hhg!g/g?fRffedcbawxmz_zPzBz3{%{zyyyyzzzxxwwwwwwww&v6vIu_uwtsrqq~cTE6(,?UmfWH9*!3IbZK<- '=UpM?/  /HbЀНи  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mft1!  !"#$%&'()*+,-./01123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~ݯŌh̜λŽzې[=eu4TӔ~I,Nʳ~emŮ滑tcĚsE&4}U0 `t5 R4Oi  R;5L[ML^`6`ʼϚmZF|>&T<.Sm1 aZ]5\} T}EDd/"7IXkA(?cղ廗wb۞g6 ?^ف9/Z$^w%j}[+L<0 -a''U'%ʝv]J<2-,09GԻ縏jK/og4<ւ;1oBPi7/"y4Ftjc)"aW7hӮ|uqprwۺiiȓe=ێLn|,E*"D}6jXFG5% ' p pUB3& &ӼҩeH,q<O5u#gCH.8thB`z]a$fɬ}vqligfgkpzŪyawݦwP, 1Np`o7@r_M;*3^+ ƣhM2|Fq|/;d tjK0/Ryt6m|i hpaPliZI9X)V/)G .>RhҰw]B( J}EP h6HuiR>3+X"\Jzwz LWhtңzX:)#RiC4yO]:*Ot3grD\A_KW $1?N`t¾~S?0# vuFNDkyf!SJ?w+ EM.*-E`ct˷|xtplhejH- 1B)kZN4 =eNCzt _t,8ESbrٲymd]VQKFA<82-(#K% f=3l 5[/^w^C@^N,>Rj|þm[L@7/(" 4v$Q|yfQ#:62/.1%B} 9b"Hri(N\3.2Rwr/BXpon~dVKC<60+'" RmQ:B#h >m7/Ptr*AZuXDTdu{xvtrsuxO:0(! #i 9c4[I9]{ !8RoX)9IZl~wqlhda^[YXWWY^eq1 V/W|7+a ,Pv0 #;Wvc*;L_tſld^YUQOLJHGFHKPYf&VP:y !2X1Z'KqI/Jhu&8J^urZSOKHFDCBABCGNYi}.VA{ 4`?%Jqf*Db5+>QhvPJGEDDDEFGKQZhA6ce 'Ls/*DbP6Ja{҇|SGIMQV`sV5Pmo>_{desc Little CMS Little CMSdesc2.x 2.xlcms2-2.5/testbed/testcms2.c0000644002406300000240000066336112163060730015304 0ustar mariamausers//--------------------------------------------------------------------------------- // // Little Color Management System // Copyright (c) 1998-2010 Marti Maria Saguer // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the Software // is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO // THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // //--------------------------------------------------------------------------------- // #ifdef _MSC_VER # define _CRT_SECURE_NO_WARNINGS 1 #endif #include "lcms2_internal.h" // On Visual Studio, use debug CRT #ifdef _MSC_VER # include "crtdbg.h" # include #endif // A single check. Returns 1 if success, 0 if failed typedef cmsInt32Number (*TestFn)(void); // A parametric Tone curve test function typedef cmsFloat32Number (* dblfnptr)(cmsFloat32Number x, const cmsFloat64Number Params[]); // Some globals to keep track of error #define TEXT_ERROR_BUFFER_SIZE 4096 static char ReasonToFailBuffer[TEXT_ERROR_BUFFER_SIZE]; static char SubTestBuffer[TEXT_ERROR_BUFFER_SIZE]; static cmsInt32Number TotalTests = 0, TotalFail = 0; static cmsBool TrappedError; static cmsInt32Number SimultaneousErrors; #define cmsmin(a, b) (((a) < (b)) ? (a) : (b)) // Die, a fatal unexpected error is detected! static void Die(const char* Reason) { printf("\n\nArrrgggg!!: %s!\n\n", Reason); fflush(stdout); exit(1); } // Memory management replacement ----------------------------------------------------------------------------- // This is just a simple plug-in for malloc, free and realloc to keep track of memory allocated, // maximum requested as a single block and maximum allocated at a given time. Results are printed at the end static cmsUInt32Number SingleHit, MaxAllocated=0, TotalMemory=0; // I'm hidding the size before the block. This is a well-known technique and probably the blocks coming from // malloc are built in a way similar to that, but I do on my own to be portable. typedef struct { cmsUInt32Number KeepSize; cmsContext WhoAllocated; union { cmsUInt64Number HiSparc; // '_cmsMemoryBlock' block is prepended by the // allocator for any requested size. Thus, union holds // "widest" type to guarantee proper '_cmsMemoryBlock' // alignment for any requested size. } alignment; } _cmsMemoryBlock; #define SIZE_OF_MEM_HEADER (sizeof(_cmsMemoryBlock)) // This is a fake thread descriptor used to check thread integrity. // Basically it returns a different threadID each time it is called. // Then the memory management replacement functions does check if each // free() is being called with same ContextID used on malloc() static cmsContext DbgThread(void) { static cmsUInt32Number n = 1; return (cmsContext) n++; } // The allocate routine static void* DebugMalloc(cmsContext ContextID, cmsUInt32Number size) { _cmsMemoryBlock* blk; if (size <= 0) { Die("malloc requested with zero bytes"); } TotalMemory += size; if (TotalMemory > MaxAllocated) MaxAllocated = TotalMemory; if (size > SingleHit) SingleHit = size; blk = (_cmsMemoryBlock*) malloc(size + SIZE_OF_MEM_HEADER); if (blk == NULL) return NULL; blk ->KeepSize = size; blk ->WhoAllocated = ContextID; return (void*) ((cmsUInt8Number*) blk + SIZE_OF_MEM_HEADER); } // The free routine static void DebugFree(cmsContext ContextID, void *Ptr) { _cmsMemoryBlock* blk; if (Ptr == NULL) { Die("NULL free (which is a no-op in C, but may be an clue of something going wrong)"); } blk = (_cmsMemoryBlock*) (((cmsUInt8Number*) Ptr) - SIZE_OF_MEM_HEADER); TotalMemory -= blk ->KeepSize; if (blk ->WhoAllocated != ContextID) { Die("Trying to free memory allocated by a different thread"); } free(blk); } // Reallocate, just a malloc, a copy and a free in this case. static void * DebugRealloc(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize) { _cmsMemoryBlock* blk; void* NewPtr; cmsUInt32Number max_sz; NewPtr = DebugMalloc(ContextID, NewSize); if (Ptr == NULL) return NewPtr; blk = (_cmsMemoryBlock*) (((cmsUInt8Number*) Ptr) - SIZE_OF_MEM_HEADER); max_sz = blk -> KeepSize > NewSize ? NewSize : blk ->KeepSize; memmove(NewPtr, Ptr, max_sz); DebugFree(ContextID, Ptr); return NewPtr; } // Let's know the totals static void DebugMemPrintTotals(void) { printf("[Memory statistics]\n"); printf("Allocated = %u MaxAlloc = %u Single block hit = %u\n", TotalMemory, MaxAllocated, SingleHit); } // Here we go with the plug-in declaration static cmsPluginMemHandler DebugMemHandler = {{ cmsPluginMagicNumber, 2000, cmsPluginMemHandlerSig, NULL }, DebugMalloc, DebugFree, DebugRealloc, NULL, NULL, NULL }; // Utils ------------------------------------------------------------------------------------- static void FatalErrorQuit(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text) { Die(Text); cmsUNUSED_PARAMETER(ContextID); cmsUNUSED_PARAMETER(ErrorCode); } // Print a dot for gauging static void Dot(void) { fprintf(stdout, "."); fflush(stdout); } // Keep track of the reason to fail static void Fail(const char* frm, ...) { va_list args; va_start(args, frm); vsprintf(ReasonToFailBuffer, frm, args); va_end(args); } // Keep track of subtest static void SubTest(const char* frm, ...) { va_list args; Dot(); va_start(args, frm); vsprintf(SubTestBuffer, frm, args); va_end(args); } // Memory string static const char* MemStr(cmsUInt32Number size) { static char Buffer[1024]; if (size > 1024*1024) { sprintf(Buffer, "%g Mb", (cmsFloat64Number) size / (1024.0*1024.0)); } else if (size > 1024) { sprintf(Buffer, "%g Kb", (cmsFloat64Number) size / 1024.0); } else sprintf(Buffer, "%g bytes", (cmsFloat64Number) size); return Buffer; } // The check framework static void Check(const char* Title, TestFn Fn) { printf("Checking %s ...", Title); fflush(stdout); ReasonToFailBuffer[0] = 0; SubTestBuffer[0] = 0; TrappedError = FALSE; SimultaneousErrors = 0; TotalTests++; if (Fn() && !TrappedError) { // It is a good place to check memory if (TotalMemory > 0) printf("Ok, but %s are left!\n", MemStr(TotalMemory)); else printf("Ok.\n"); } else { printf("FAIL!\n"); if (SubTestBuffer[0]) printf("%s: [%s]\n\t%s\n", Title, SubTestBuffer, ReasonToFailBuffer); else printf("%s:\n\t%s\n", Title, ReasonToFailBuffer); if (SimultaneousErrors > 1) printf("\tMore than one (%d) errors were reported\n", SimultaneousErrors); TotalFail++; } fflush(stdout); } // Dump a tone curve, for easy diagnostic void DumpToneCurve(cmsToneCurve* gamma, const char* FileName) { cmsHANDLE hIT8; cmsUInt32Number i; hIT8 = cmsIT8Alloc(gamma ->InterpParams->ContextID); cmsIT8SetPropertyDbl(hIT8, "NUMBER_OF_FIELDS", 2); cmsIT8SetPropertyDbl(hIT8, "NUMBER_OF_SETS", gamma ->nEntries); cmsIT8SetDataFormat(hIT8, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(hIT8, 1, "VALUE"); for (i=0; i < gamma ->nEntries; i++) { char Val[30]; sprintf(Val, "%u", i); cmsIT8SetDataRowCol(hIT8, i, 0, Val); sprintf(Val, "0x%x", gamma ->Table16[i]); cmsIT8SetDataRowCol(hIT8, i, 1, Val); } cmsIT8SaveToFile(hIT8, FileName); cmsIT8Free(hIT8); } // ------------------------------------------------------------------------------------------------- // Used to perform several checks. // The space used is a clone of a well-known commercial // color space which I will name "Above RGB" static cmsHPROFILE Create_AboveRGB(void) { cmsToneCurve* Curve[3]; cmsHPROFILE hProfile; cmsCIExyY D65; cmsCIExyYTRIPLE Primaries = {{0.64, 0.33, 1 }, {0.21, 0.71, 1 }, {0.15, 0.06, 1 }}; Curve[0] = Curve[1] = Curve[2] = cmsBuildGamma(DbgThread(), 2.19921875); cmsWhitePointFromTemp(&D65, 6504); hProfile = cmsCreateRGBProfileTHR(DbgThread(), &D65, &Primaries, Curve); cmsFreeToneCurve(Curve[0]); return hProfile; } // A gamma-2.2 gray space static cmsHPROFILE Create_Gray22(void) { cmsHPROFILE hProfile; cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 2.2); if (Curve == NULL) return NULL; hProfile = cmsCreateGrayProfileTHR(DbgThread(), cmsD50_xyY(), Curve); cmsFreeToneCurve(Curve); return hProfile; } // A gamma-3.0 gray space static cmsHPROFILE Create_Gray30(void) { cmsHPROFILE hProfile; cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 3.0); if (Curve == NULL) return NULL; hProfile = cmsCreateGrayProfileTHR(DbgThread(), cmsD50_xyY(), Curve); cmsFreeToneCurve(Curve); return hProfile; } static cmsHPROFILE Create_GrayLab(void) { cmsHPROFILE hProfile; cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 1.0); if (Curve == NULL) return NULL; hProfile = cmsCreateGrayProfileTHR(DbgThread(), cmsD50_xyY(), Curve); cmsFreeToneCurve(Curve); cmsSetPCS(hProfile, cmsSigLabData); return hProfile; } // A CMYK devicelink that adds gamma 3.0 to each channel static cmsHPROFILE Create_CMYK_DeviceLink(void) { cmsHPROFILE hProfile; cmsToneCurve* Tab[4]; cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), 3.0); if (Curve == NULL) return NULL; Tab[0] = Curve; Tab[1] = Curve; Tab[2] = Curve; Tab[3] = Curve; hProfile = cmsCreateLinearizationDeviceLinkTHR(DbgThread(), cmsSigCmykData, Tab); if (hProfile == NULL) return NULL; cmsFreeToneCurve(Curve); return hProfile; } // Create a fake CMYK profile, without any other requeriment that being coarse CMYK. // DONT USE THIS PROFILE FOR ANYTHING, IT IS USELESS BUT FOR TESTING PURPOSES. typedef struct { cmsHTRANSFORM hLab2sRGB; cmsHTRANSFORM sRGB2Lab; cmsHTRANSFORM hIlimit; } FakeCMYKParams; static cmsFloat64Number Clip(cmsFloat64Number v) { if (v < 0) return 0; if (v > 1) return 1; return v; } static cmsInt32Number ForwardSampler(register const cmsUInt16Number In[], cmsUInt16Number Out[], void* Cargo) { FakeCMYKParams* p = (FakeCMYKParams*) Cargo; cmsFloat64Number rgb[3], cmyk[4]; cmsFloat64Number c, m, y, k; cmsDoTransform(p ->hLab2sRGB, In, rgb, 1); c = 1 - rgb[0]; m = 1 - rgb[1]; y = 1 - rgb[2]; k = (c < m ? cmsmin(c, y) : cmsmin(m, y)); // NONSENSE WARNING!: I'm doing this just because this is a test // profile that may have ink limit up to 400%. There is no UCR here // so the profile is basically useless for anything but testing. cmyk[0] = c; cmyk[1] = m; cmyk[2] = y; cmyk[3] = k; cmsDoTransform(p ->hIlimit, cmyk, Out, 1); return 1; } static cmsInt32Number ReverseSampler(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void* Cargo) { FakeCMYKParams* p = (FakeCMYKParams*) Cargo; cmsFloat64Number c, m, y, k, rgb[3]; c = In[0] / 65535.0; m = In[1] / 65535.0; y = In[2] / 65535.0; k = In[3] / 65535.0; if (k == 0) { rgb[0] = Clip(1 - c); rgb[1] = Clip(1 - m); rgb[2] = Clip(1 - y); } else if (k == 1) { rgb[0] = rgb[1] = rgb[2] = 0; } else { rgb[0] = Clip((1 - c) * (1 - k)); rgb[1] = Clip((1 - m) * (1 - k)); rgb[2] = Clip((1 - y) * (1 - k)); } cmsDoTransform(p ->sRGB2Lab, rgb, Out, 1); return 1; } static cmsHPROFILE CreateFakeCMYK(cmsFloat64Number InkLimit, cmsBool lUseAboveRGB) { cmsHPROFILE hICC; cmsPipeline* AToB0, *BToA0; cmsStage* CLUT; cmsContext ContextID; FakeCMYKParams p; cmsHPROFILE hLab, hsRGB, hLimit; cmsUInt32Number cmykfrm; if (lUseAboveRGB) hsRGB = Create_AboveRGB(); else hsRGB = cmsCreate_sRGBProfile(); hLab = cmsCreateLab4Profile(NULL); hLimit = cmsCreateInkLimitingDeviceLink(cmsSigCmykData, InkLimit); cmykfrm = FLOAT_SH(1) | BYTES_SH(0)|CHANNELS_SH(4); p.hLab2sRGB = cmsCreateTransform(hLab, TYPE_Lab_16, hsRGB, TYPE_RGB_DBL, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE); p.sRGB2Lab = cmsCreateTransform(hsRGB, TYPE_RGB_DBL, hLab, TYPE_Lab_16, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE); p.hIlimit = cmsCreateTransform(hLimit, cmykfrm, NULL, TYPE_CMYK_16, INTENT_PERCEPTUAL, cmsFLAGS_NOOPTIMIZE|cmsFLAGS_NOCACHE); cmsCloseProfile(hLab); cmsCloseProfile(hsRGB); cmsCloseProfile(hLimit); ContextID = DbgThread(); hICC = cmsCreateProfilePlaceholder(ContextID); if (!hICC) return NULL; cmsSetProfileVersion(hICC, 4.3); cmsSetDeviceClass(hICC, cmsSigOutputClass); cmsSetColorSpace(hICC, cmsSigCmykData); cmsSetPCS(hICC, cmsSigLabData); BToA0 = cmsPipelineAlloc(ContextID, 3, 4); if (BToA0 == NULL) return 0; CLUT = cmsStageAllocCLut16bit(ContextID, 17, 3, 4, NULL); if (CLUT == NULL) return 0; if (!cmsStageSampleCLut16bit(CLUT, ForwardSampler, &p, 0)) return 0; cmsPipelineInsertStage(BToA0, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 3)); cmsPipelineInsertStage(BToA0, cmsAT_END, CLUT); cmsPipelineInsertStage(BToA0, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, 4)); if (!cmsWriteTag(hICC, cmsSigBToA0Tag, (void*) BToA0)) return 0; cmsPipelineFree(BToA0); AToB0 = cmsPipelineAlloc(ContextID, 4, 3); if (AToB0 == NULL) return 0; CLUT = cmsStageAllocCLut16bit(ContextID, 17, 4, 3, NULL); if (CLUT == NULL) return 0; if (!cmsStageSampleCLut16bit(CLUT, ReverseSampler, &p, 0)) return 0; cmsPipelineInsertStage(AToB0, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(ContextID, 4)); cmsPipelineInsertStage(AToB0, cmsAT_END, CLUT); cmsPipelineInsertStage(AToB0, cmsAT_END, _cmsStageAllocIdentityCurves(ContextID, 3)); if (!cmsWriteTag(hICC, cmsSigAToB0Tag, (void*) AToB0)) return 0; cmsPipelineFree(AToB0); cmsDeleteTransform(p.hLab2sRGB); cmsDeleteTransform(p.sRGB2Lab); cmsDeleteTransform(p.hIlimit); cmsLinkTag(hICC, cmsSigAToB1Tag, cmsSigAToB0Tag); cmsLinkTag(hICC, cmsSigAToB2Tag, cmsSigAToB0Tag); cmsLinkTag(hICC, cmsSigBToA1Tag, cmsSigBToA0Tag); cmsLinkTag(hICC, cmsSigBToA2Tag, cmsSigBToA0Tag); return hICC; } // Does create several profiles for latter use------------------------------------------------------------------------------------------------ static cmsInt32Number OneVirtual(cmsHPROFILE h, const char* SubTestTxt, const char* FileName) { SubTest(SubTestTxt); if (h == NULL) return 0; if (!cmsSaveProfileToFile(h, FileName)) return 0; cmsCloseProfile(h); h = cmsOpenProfileFromFile(FileName, "r"); if (h == NULL) return 0; // Do some teste.... cmsCloseProfile(h); return 1; } // This test checks the ability of lcms2 to save its built-ins as valid profiles. // It does not check the functionality of such profiles static cmsInt32Number CreateTestProfiles(void) { cmsHPROFILE h; h = cmsCreate_sRGBProfileTHR(DbgThread()); if (!OneVirtual(h, "sRGB profile", "sRGBlcms2.icc")) return 0; // ---- h = Create_AboveRGB(); if (!OneVirtual(h, "aRGB profile", "aRGBlcms2.icc")) return 0; // ---- h = Create_Gray22(); if (!OneVirtual(h, "Gray profile", "graylcms2.icc")) return 0; // ---- h = Create_Gray30(); if (!OneVirtual(h, "Gray 3.0 profile", "gray3lcms2.icc")) return 0; // ---- h = Create_GrayLab(); if (!OneVirtual(h, "Gray Lab profile", "glablcms2.icc")) return 0; // ---- h = Create_CMYK_DeviceLink(); if (!OneVirtual(h, "Linearization profile", "linlcms2.icc")) return 0; // ------- h = cmsCreateInkLimitingDeviceLinkTHR(DbgThread(), cmsSigCmykData, 150); if (h == NULL) return 0; if (!OneVirtual(h, "Ink-limiting profile", "limitlcms2.icc")) return 0; // ------ h = cmsCreateLab2ProfileTHR(DbgThread(), NULL); if (!OneVirtual(h, "Lab 2 identity profile", "labv2lcms2.icc")) return 0; // ---- h = cmsCreateLab4ProfileTHR(DbgThread(), NULL); if (!OneVirtual(h, "Lab 4 identity profile", "labv4lcms2.icc")) return 0; // ---- h = cmsCreateXYZProfileTHR(DbgThread()); if (!OneVirtual(h, "XYZ identity profile", "xyzlcms2.icc")) return 0; // ---- h = cmsCreateNULLProfileTHR(DbgThread()); if (!OneVirtual(h, "NULL profile", "nullcms2.icc")) return 0; // --- h = cmsCreateBCHSWabstractProfileTHR(DbgThread(), 17, 0, 0, 0, 0, 5000, 6000); if (!OneVirtual(h, "BCHS profile", "bchslcms2.icc")) return 0; // --- h = CreateFakeCMYK(300, FALSE); if (!OneVirtual(h, "Fake CMYK profile", "lcms2cmyk.icc")) return 0; return 1; } static void RemoveTestProfiles(void) { remove("sRGBlcms2.icc"); remove("aRGBlcms2.icc"); remove("graylcms2.icc"); remove("gray3lcms2.icc"); remove("linlcms2.icc"); remove("limitlcms2.icc"); remove("labv2lcms2.icc"); remove("labv4lcms2.icc"); remove("xyzlcms2.icc"); remove("nullcms2.icc"); remove("bchslcms2.icc"); remove("lcms2cmyk.icc"); remove("glablcms2.icc"); remove("lcms2link.icc"); remove("lcms2link2.icc"); } // ------------------------------------------------------------------------------------------------- // Check the size of basic types. If this test fails, nothing is going to work anyway static cmsInt32Number CheckBaseTypes(void) { // Ignore warnings about conditional expression #ifdef _MSC_VER #pragma warning(disable: 4127) #endif if (sizeof(cmsUInt8Number) != 1) return 0; if (sizeof(cmsInt8Number) != 1) return 0; if (sizeof(cmsUInt16Number) != 2) return 0; if (sizeof(cmsInt16Number) != 2) return 0; if (sizeof(cmsUInt32Number) != 4) return 0; if (sizeof(cmsInt32Number) != 4) return 0; if (sizeof(cmsUInt64Number) != 8) return 0; if (sizeof(cmsInt64Number) != 8) return 0; if (sizeof(cmsFloat32Number) != 4) return 0; if (sizeof(cmsFloat64Number) != 8) return 0; if (sizeof(cmsSignature) != 4) return 0; if (sizeof(cmsU8Fixed8Number) != 2) return 0; if (sizeof(cmsS15Fixed16Number) != 4) return 0; if (sizeof(cmsU16Fixed16Number) != 4) return 0; return 1; } // ------------------------------------------------------------------------------------------------- // Are we little or big endian? From Harbison&Steele. static cmsInt32Number CheckEndianess(void) { cmsInt32Number BigEndian, IsOk; union { long l; char c[sizeof (long)]; } u; u.l = 1; BigEndian = (u.c[sizeof (long) - 1] == 1); #ifdef CMS_USE_BIG_ENDIAN IsOk = BigEndian; #else IsOk = !BigEndian; #endif if (!IsOk) { Fail("\nOOOPPSS! You have CMS_USE_BIG_ENDIAN toggle misconfigured!\n\n" "Please, edit lcms2.h and %s the CMS_USE_BIG_ENDIAN toggle.\n", BigEndian? "uncomment" : "comment"); return 0; } return 1; } // Check quick floor static cmsInt32Number CheckQuickFloor(void) { if ((_cmsQuickFloor(1.234) != 1) || (_cmsQuickFloor(32767.234) != 32767) || (_cmsQuickFloor(-1.234) != -2) || (_cmsQuickFloor(-32767.1) != -32768)) { Fail("\nOOOPPSS! _cmsQuickFloor() does not work as expected in your machine!\n\n" "Please, edit lcms.h and uncomment the CMS_DONT_USE_FAST_FLOOR toggle.\n"); return 0; } return 1; } // Quick floor restricted to word static cmsInt32Number CheckQuickFloorWord(void) { cmsUInt32Number i; for (i=0; i < 65535; i++) { if (_cmsQuickFloorWord((cmsFloat64Number) i + 0.1234) != i) { Fail("\nOOOPPSS! _cmsQuickFloorWord() does not work as expected in your machine!\n\n" "Please, edit lcms.h and uncomment the CMS_DONT_USE_FAST_FLOOR toggle.\n"); return 0; } } return 1; } // ------------------------------------------------------------------------------------------------- // Precision stuff. // On 15.16 fixed point, this is the maximum we can obtain. Remember ICC profiles have storage limits on this number #define FIXED_PRECISION_15_16 (1.0 / 65535.0) // On 8.8 fixed point, that is the max we can obtain. #define FIXED_PRECISION_8_8 (1.0 / 255.0) // On cmsFloat32Number type, this is the precision we expect #define FLOAT_PRECISSION (0.00001) static cmsFloat64Number MaxErr; static cmsFloat64Number AllowedErr = FIXED_PRECISION_15_16; static cmsBool IsGoodVal(const char *title, cmsFloat64Number in, cmsFloat64Number out, cmsFloat64Number max) { cmsFloat64Number Err = fabs(in - out); if (Err > MaxErr) MaxErr = Err; if ((Err > max )) { Fail("(%s): Must be %f, But is %f ", title, in, out); return FALSE; } return TRUE; } static cmsBool IsGoodFixed15_16(const char *title, cmsFloat64Number in, cmsFloat64Number out) { return IsGoodVal(title, in, out, FIXED_PRECISION_15_16); } static cmsBool IsGoodFixed8_8(const char *title, cmsFloat64Number in, cmsFloat64Number out) { return IsGoodVal(title, in, out, FIXED_PRECISION_8_8); } static cmsBool IsGoodWord(const char *title, cmsUInt16Number in, cmsUInt16Number out) { if ((abs(in - out) > 0 )) { Fail("(%s): Must be %x, But is %x ", title, in, out); return FALSE; } return TRUE; } static cmsBool IsGoodWordPrec(const char *title, cmsUInt16Number in, cmsUInt16Number out, cmsUInt16Number maxErr) { if ((abs(in - out) > maxErr )) { Fail("(%s): Must be %x, But is %x ", title, in, out); return FALSE; } return TRUE; } // Fixed point ---------------------------------------------------------------------------------------------- static cmsInt32Number TestSingleFixed15_16(cmsFloat64Number d) { cmsS15Fixed16Number f = _cmsDoubleTo15Fixed16(d); cmsFloat64Number RoundTrip = _cms15Fixed16toDouble(f); cmsFloat64Number Error = fabs(d - RoundTrip); return ( Error <= FIXED_PRECISION_15_16); } static cmsInt32Number CheckFixedPoint15_16(void) { if (!TestSingleFixed15_16(1.0)) return 0; if (!TestSingleFixed15_16(2.0)) return 0; if (!TestSingleFixed15_16(1.23456)) return 0; if (!TestSingleFixed15_16(0.99999)) return 0; if (!TestSingleFixed15_16(0.1234567890123456789099999)) return 0; if (!TestSingleFixed15_16(-1.0)) return 0; if (!TestSingleFixed15_16(-2.0)) return 0; if (!TestSingleFixed15_16(-1.23456)) return 0; if (!TestSingleFixed15_16(-1.1234567890123456789099999)) return 0; if (!TestSingleFixed15_16(+32767.1234567890123456789099999)) return 0; if (!TestSingleFixed15_16(-32767.1234567890123456789099999)) return 0; return 1; } static cmsInt32Number TestSingleFixed8_8(cmsFloat64Number d) { cmsS15Fixed16Number f = _cmsDoubleTo8Fixed8(d); cmsFloat64Number RoundTrip = _cms8Fixed8toDouble((cmsUInt16Number) f); cmsFloat64Number Error = fabs(d - RoundTrip); return ( Error <= FIXED_PRECISION_8_8); } static cmsInt32Number CheckFixedPoint8_8(void) { if (!TestSingleFixed8_8(1.0)) return 0; if (!TestSingleFixed8_8(2.0)) return 0; if (!TestSingleFixed8_8(1.23456)) return 0; if (!TestSingleFixed8_8(0.99999)) return 0; if (!TestSingleFixed8_8(0.1234567890123456789099999)) return 0; if (!TestSingleFixed8_8(+255.1234567890123456789099999)) return 0; return 1; } // Linear interpolation ----------------------------------------------------------------------------------------------- // Since prime factors of 65535 (FFFF) are, // // 0xFFFF = 3 * 5 * 17 * 257 // // I test tables of 2, 4, 6, and 18 points, that will be exact. static void BuildTable(cmsInt32Number n, cmsUInt16Number Tab[], cmsBool Descending) { cmsInt32Number i; for (i=0; i < n; i++) { cmsFloat64Number v = (cmsFloat64Number) ((cmsFloat64Number) 65535.0 * i ) / (n-1); Tab[Descending ? (n - i - 1) : i ] = (cmsUInt16Number) floor(v + 0.5); } } // A single function that does check 1D interpolation // nNodesToCheck = number on nodes to check // Down = Create decreasing tables // Reverse = Check reverse interpolation // max_err = max allowed error static cmsInt32Number Check1D(cmsInt32Number nNodesToCheck, cmsBool Down, cmsInt32Number max_err) { cmsUInt32Number i; cmsUInt16Number in, out; cmsInterpParams* p; cmsUInt16Number* Tab; Tab = (cmsUInt16Number*) malloc(sizeof(cmsUInt16Number)* nNodesToCheck); if (Tab == NULL) return 0; p = _cmsComputeInterpParams(DbgThread(), nNodesToCheck, 1, 1, Tab, CMS_LERP_FLAGS_16BITS); if (p == NULL) return 0; BuildTable(nNodesToCheck, Tab, Down); for (i=0; i <= 0xffff; i++) { in = (cmsUInt16Number) i; out = 0; p ->Interpolation.Lerp16(&in, &out, p); if (Down) out = 0xffff - out; if (abs(out - in) > max_err) { Fail("(%dp): Must be %x, But is %x : ", nNodesToCheck, in, out); _cmsFreeInterpParams(p); free(Tab); return 0; } } _cmsFreeInterpParams(p); free(Tab); return 1; } static cmsInt32Number Check1DLERP2(void) { return Check1D(2, FALSE, 0); } static cmsInt32Number Check1DLERP3(void) { return Check1D(3, FALSE, 1); } static cmsInt32Number Check1DLERP4(void) { return Check1D(4, FALSE, 0); } static cmsInt32Number Check1DLERP6(void) { return Check1D(6, FALSE, 0); } static cmsInt32Number Check1DLERP18(void) { return Check1D(18, FALSE, 0); } static cmsInt32Number Check1DLERP2Down(void) { return Check1D(2, TRUE, 0); } static cmsInt32Number Check1DLERP3Down(void) { return Check1D(3, TRUE, 1); } static cmsInt32Number Check1DLERP6Down(void) { return Check1D(6, TRUE, 0); } static cmsInt32Number Check1DLERP18Down(void) { return Check1D(18, TRUE, 0); } static cmsInt32Number ExhaustiveCheck1DLERP(void) { cmsUInt32Number j; printf("\n"); for (j=10; j <= 4096; j++) { if ((j % 10) == 0) printf("%u \r", j); if (!Check1D(j, FALSE, 1)) return 0; } printf("\rResult is "); return 1; } static cmsInt32Number ExhaustiveCheck1DLERPDown(void) { cmsUInt32Number j; printf("\n"); for (j=10; j <= 4096; j++) { if ((j % 10) == 0) printf("%u \r", j); if (!Check1D(j, TRUE, 1)) return 0; } printf("\rResult is "); return 1; } // 3D interpolation ------------------------------------------------------------------------------------------------- static cmsInt32Number Check3DinterpolationFloatTetrahedral(void) { cmsInterpParams* p; cmsInt32Number i; cmsFloat32Number In[3], Out[3]; cmsFloat32Number FloatTable[] = { //R G B 0, 0, 0, // B=0,G=0,R=0 0, 0, .25, // B=1,G=0,R=0 0, .5, 0, // B=0,G=1,R=0 0, .5, .25, // B=1,G=1,R=0 1, 0, 0, // B=0,G=0,R=1 1, 0, .25, // B=1,G=0,R=1 1, .5, 0, // B=0,G=1,R=1 1, .5, .25 // B=1,G=1,R=1 }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT); MaxErr = 0.0; for (i=0; i < 0xffff; i++) { In[0] = In[1] = In[2] = (cmsFloat32Number) ( (cmsFloat32Number) i / 65535.0F); p ->Interpolation.LerpFloat(In, Out, p); if (!IsGoodFixed15_16("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodFixed15_16("Channel 2", Out[1], (cmsFloat32Number) In[1] / 2.F)) goto Error; if (!IsGoodFixed15_16("Channel 3", Out[2], (cmsFloat32Number) In[2] / 4.F)) goto Error; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr); _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } static cmsInt32Number Check3DinterpolationFloatTrilinear(void) { cmsInterpParams* p; cmsInt32Number i; cmsFloat32Number In[3], Out[3]; cmsFloat32Number FloatTable[] = { //R G B 0, 0, 0, // B=0,G=0,R=0 0, 0, .25, // B=1,G=0,R=0 0, .5, 0, // B=0,G=1,R=0 0, .5, .25, // B=1,G=1,R=0 1, 0, 0, // B=0,G=0,R=1 1, 0, .25, // B=1,G=0,R=1 1, .5, 0, // B=0,G=1,R=1 1, .5, .25 // B=1,G=1,R=1 }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT|CMS_LERP_FLAGS_TRILINEAR); MaxErr = 0.0; for (i=0; i < 0xffff; i++) { In[0] = In[1] = In[2] = (cmsFloat32Number) ( (cmsFloat32Number) i / 65535.0F); p ->Interpolation.LerpFloat(In, Out, p); if (!IsGoodFixed15_16("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodFixed15_16("Channel 2", Out[1], (cmsFloat32Number) In[1] / 2.F)) goto Error; if (!IsGoodFixed15_16("Channel 3", Out[2], (cmsFloat32Number) In[2] / 4.F)) goto Error; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr); _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } static cmsInt32Number Check3DinterpolationTetrahedral16(void) { cmsInterpParams* p; cmsInt32Number i; cmsUInt16Number In[3], Out[3]; cmsUInt16Number Table[] = { 0, 0, 0, 0, 0, 0xffff, 0, 0xffff, 0, 0, 0xffff, 0xffff, 0xffff, 0, 0, 0xffff, 0, 0xffff, 0xffff, 0xffff, 0, 0xffff, 0xffff, 0xffff }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_16BITS); MaxErr = 0.0; for (i=0; i < 0xffff; i++) { In[0] = In[1] = In[2] = (cmsUInt16Number) i; p ->Interpolation.Lerp16(In, Out, p); if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error; if (!IsGoodWord("Channel 3", Out[2], In[2])) goto Error; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr); _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } static cmsInt32Number Check3DinterpolationTrilinear16(void) { cmsInterpParams* p; cmsInt32Number i; cmsUInt16Number In[3], Out[3]; cmsUInt16Number Table[] = { 0, 0, 0, 0, 0, 0xffff, 0, 0xffff, 0, 0, 0xffff, 0xffff, 0xffff, 0, 0, 0xffff, 0, 0xffff, 0xffff, 0xffff, 0, 0xffff, 0xffff, 0xffff }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_TRILINEAR); MaxErr = 0.0; for (i=0; i < 0xffff; i++) { In[0] = In[1] = In[2] = (cmsUInt16Number) i; p ->Interpolation.Lerp16(In, Out, p); if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error; if (!IsGoodWord("Channel 3", Out[2], In[2])) goto Error; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr); _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } static cmsInt32Number ExaustiveCheck3DinterpolationFloatTetrahedral(void) { cmsInterpParams* p; cmsInt32Number r, g, b; cmsFloat32Number In[3], Out[3]; cmsFloat32Number FloatTable[] = { //R G B 0, 0, 0, // B=0,G=0,R=0 0, 0, .25, // B=1,G=0,R=0 0, .5, 0, // B=0,G=1,R=0 0, .5, .25, // B=1,G=1,R=0 1, 0, 0, // B=0,G=0,R=1 1, 0, .25, // B=1,G=0,R=1 1, .5, 0, // B=0,G=1,R=1 1, .5, .25 // B=1,G=1,R=1 }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT); MaxErr = 0.0; for (r=0; r < 0xff; r++) for (g=0; g < 0xff; g++) for (b=0; b < 0xff; b++) { In[0] = (cmsFloat32Number) r / 255.0F; In[1] = (cmsFloat32Number) g / 255.0F; In[2] = (cmsFloat32Number) b / 255.0F; p ->Interpolation.LerpFloat(In, Out, p); if (!IsGoodFixed15_16("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodFixed15_16("Channel 2", Out[1], (cmsFloat32Number) In[1] / 2.F)) goto Error; if (!IsGoodFixed15_16("Channel 3", Out[2], (cmsFloat32Number) In[2] / 4.F)) goto Error; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr); _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } static cmsInt32Number ExaustiveCheck3DinterpolationFloatTrilinear(void) { cmsInterpParams* p; cmsInt32Number r, g, b; cmsFloat32Number In[3], Out[3]; cmsFloat32Number FloatTable[] = { //R G B 0, 0, 0, // B=0,G=0,R=0 0, 0, .25, // B=1,G=0,R=0 0, .5, 0, // B=0,G=1,R=0 0, .5, .25, // B=1,G=1,R=0 1, 0, 0, // B=0,G=0,R=1 1, 0, .25, // B=1,G=0,R=1 1, .5, 0, // B=0,G=1,R=1 1, .5, .25 // B=1,G=1,R=1 }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, FloatTable, CMS_LERP_FLAGS_FLOAT|CMS_LERP_FLAGS_TRILINEAR); MaxErr = 0.0; for (r=0; r < 0xff; r++) for (g=0; g < 0xff; g++) for (b=0; b < 0xff; b++) { In[0] = (cmsFloat32Number) r / 255.0F; In[1] = (cmsFloat32Number) g / 255.0F; In[2] = (cmsFloat32Number) b / 255.0F; p ->Interpolation.LerpFloat(In, Out, p); if (!IsGoodFixed15_16("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodFixed15_16("Channel 2", Out[1], (cmsFloat32Number) In[1] / 2.F)) goto Error; if (!IsGoodFixed15_16("Channel 3", Out[2], (cmsFloat32Number) In[2] / 4.F)) goto Error; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr); _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } static cmsInt32Number ExhaustiveCheck3DinterpolationTetrahedral16(void) { cmsInterpParams* p; cmsInt32Number r, g, b; cmsUInt16Number In[3], Out[3]; cmsUInt16Number Table[] = { 0, 0, 0, 0, 0, 0xffff, 0, 0xffff, 0, 0, 0xffff, 0xffff, 0xffff, 0, 0, 0xffff, 0, 0xffff, 0xffff, 0xffff, 0, 0xffff, 0xffff, 0xffff }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_16BITS); for (r=0; r < 0xff; r++) for (g=0; g < 0xff; g++) for (b=0; b < 0xff; b++) { In[0] = (cmsUInt16Number) r ; In[1] = (cmsUInt16Number) g ; In[2] = (cmsUInt16Number) b ; p ->Interpolation.Lerp16(In, Out, p); if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error; if (!IsGoodWord("Channel 3", Out[2], In[2])) goto Error; } _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } static cmsInt32Number ExhaustiveCheck3DinterpolationTrilinear16(void) { cmsInterpParams* p; cmsInt32Number r, g, b; cmsUInt16Number In[3], Out[3]; cmsUInt16Number Table[] = { 0, 0, 0, 0, 0, 0xffff, 0, 0xffff, 0, 0, 0xffff, 0xffff, 0xffff, 0, 0, 0xffff, 0, 0xffff, 0xffff, 0xffff, 0, 0xffff, 0xffff, 0xffff }; p = _cmsComputeInterpParams(DbgThread(), 2, 3, 3, Table, CMS_LERP_FLAGS_TRILINEAR); for (r=0; r < 0xff; r++) for (g=0; g < 0xff; g++) for (b=0; b < 0xff; b++) { In[0] = (cmsUInt16Number) r ; In[1] = (cmsUInt16Number)g ; In[2] = (cmsUInt16Number)b ; p ->Interpolation.Lerp16(In, Out, p); if (!IsGoodWord("Channel 1", Out[0], In[0])) goto Error; if (!IsGoodWord("Channel 2", Out[1], In[1])) goto Error; if (!IsGoodWord("Channel 3", Out[2], In[2])) goto Error; } _cmsFreeInterpParams(p); return 1; Error: _cmsFreeInterpParams(p); return 0; } // Check reverse interpolation on LUTS. This is right now exclusively used by K preservation algorithm static cmsInt32Number CheckReverseInterpolation3x3(void) { cmsPipeline* Lut; cmsStage* clut; cmsFloat32Number Target[3], Result[3], Hint[3]; cmsFloat32Number err, max; cmsInt32Number i; cmsUInt16Number Table[] = { 0, 0, 0, // 0 0 0 0, 0, 0xffff, // 0 0 1 0, 0xffff, 0, // 0 1 0 0, 0xffff, 0xffff, // 0 1 1 0xffff, 0, 0, // 1 0 0 0xffff, 0, 0xffff, // 1 0 1 0xffff, 0xffff, 0, // 1 1 0 0xffff, 0xffff, 0xffff, // 1 1 1 }; Lut = cmsPipelineAlloc(DbgThread(), 3, 3); clut = cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table); cmsPipelineInsertStage(Lut, cmsAT_BEGIN, clut); Target[0] = 0; Target[1] = 0; Target[2] = 0; Hint[0] = 0; Hint[1] = 0; Hint[2] = 0; cmsPipelineEvalReverseFloat(Target, Result, NULL, Lut); if (Result[0] != 0 || Result[1] != 0 || Result[2] != 0){ Fail("Reverse interpolation didn't find zero"); return 0; } // Transverse identity max = 0; for (i=0; i <= 100; i++) { cmsFloat32Number in = i / 100.0F; Target[0] = in; Target[1] = 0; Target[2] = 0; cmsPipelineEvalReverseFloat(Target, Result, Hint, Lut); err = fabsf(in - Result[0]); if (err > max) max = err; memcpy(Hint, Result, sizeof(Hint)); } cmsPipelineFree(Lut); return (max <= FLOAT_PRECISSION); } static cmsInt32Number CheckReverseInterpolation4x3(void) { cmsPipeline* Lut; cmsStage* clut; cmsFloat32Number Target[4], Result[4], Hint[4]; cmsFloat32Number err, max; cmsInt32Number i; // 4 -> 3, output gets 3 first channels copied cmsUInt16Number Table[] = { 0, 0, 0, // 0 0 0 0 = ( 0, 0, 0) 0, 0, 0, // 0 0 0 1 = ( 0, 0, 0) 0, 0, 0xffff, // 0 0 1 0 = ( 0, 0, 1) 0, 0, 0xffff, // 0 0 1 1 = ( 0, 0, 1) 0, 0xffff, 0, // 0 1 0 0 = ( 0, 1, 0) 0, 0xffff, 0, // 0 1 0 1 = ( 0, 1, 0) 0, 0xffff, 0xffff, // 0 1 1 0 = ( 0, 1, 1) 0, 0xffff, 0xffff, // 0 1 1 1 = ( 0, 1, 1) 0xffff, 0, 0, // 1 0 0 0 = ( 1, 0, 0) 0xffff, 0, 0, // 1 0 0 1 = ( 1, 0, 0) 0xffff, 0, 0xffff, // 1 0 1 0 = ( 1, 0, 1) 0xffff, 0, 0xffff, // 1 0 1 1 = ( 1, 0, 1) 0xffff, 0xffff, 0, // 1 1 0 0 = ( 1, 1, 0) 0xffff, 0xffff, 0, // 1 1 0 1 = ( 1, 1, 0) 0xffff, 0xffff, 0xffff, // 1 1 1 0 = ( 1, 1, 1) 0xffff, 0xffff, 0xffff, // 1 1 1 1 = ( 1, 1, 1) }; Lut = cmsPipelineAlloc(DbgThread(), 4, 3); clut = cmsStageAllocCLut16bit(DbgThread(), 2, 4, 3, Table); cmsPipelineInsertStage(Lut, cmsAT_BEGIN, clut); // Check if the LUT is behaving as expected SubTest("4->3 feasibility"); for (i=0; i <= 100; i++) { Target[0] = i / 100.0F; Target[1] = Target[0]; Target[2] = 0; Target[3] = 12; cmsPipelineEvalFloat(Target, Result, Lut); if (!IsGoodFixed15_16("0", Target[0], Result[0])) return 0; if (!IsGoodFixed15_16("1", Target[1], Result[1])) return 0; if (!IsGoodFixed15_16("2", Target[2], Result[2])) return 0; } SubTest("4->3 zero"); Target[0] = 0; Target[1] = 0; Target[2] = 0; // This one holds the fixed K Target[3] = 0; // This is our hint (which is a big lie in this case) Hint[0] = 0.1F; Hint[1] = 0.1F; Hint[2] = 0.1F; cmsPipelineEvalReverseFloat(Target, Result, Hint, Lut); if (Result[0] != 0 || Result[1] != 0 || Result[2] != 0 || Result[3] != 0){ Fail("Reverse interpolation didn't find zero"); return 0; } SubTest("4->3 find CMY"); max = 0; for (i=0; i <= 100; i++) { cmsFloat32Number in = i / 100.0F; Target[0] = in; Target[1] = 0; Target[2] = 0; cmsPipelineEvalReverseFloat(Target, Result, Hint, Lut); err = fabsf(in - Result[0]); if (err > max) max = err; memcpy(Hint, Result, sizeof(Hint)); } cmsPipelineFree(Lut); return (max <= FLOAT_PRECISSION); } // Check all interpolation. static cmsUInt16Number Fn8D1(cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5, cmsUInt16Number a6, cmsUInt16Number a7, cmsUInt16Number a8, cmsUInt32Number m) { return (cmsUInt16Number) ((a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8) / m); } static cmsUInt16Number Fn8D2(cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5, cmsUInt16Number a6, cmsUInt16Number a7, cmsUInt16Number a8, cmsUInt32Number m) { return (cmsUInt16Number) ((a1 + 3* a2 + 3* a3 + a4 + a5 + a6 + a7 + a8 ) / (m + 4)); } static cmsUInt16Number Fn8D3(cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5, cmsUInt16Number a6, cmsUInt16Number a7, cmsUInt16Number a8, cmsUInt32Number m) { return (cmsUInt16Number) ((3*a1 + 2*a2 + 3*a3 + a4 + a5 + a6 + a7 + a8) / (m + 5)); } static cmsInt32Number Sampler3D(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { Out[0] = Fn8D1(In[0], In[1], In[2], 0, 0, 0, 0, 0, 3); Out[1] = Fn8D2(In[0], In[1], In[2], 0, 0, 0, 0, 0, 3); Out[2] = Fn8D3(In[0], In[1], In[2], 0, 0, 0, 0, 0, 3); return 1; cmsUNUSED_PARAMETER(Cargo); } static cmsInt32Number Sampler4D(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { Out[0] = Fn8D1(In[0], In[1], In[2], In[3], 0, 0, 0, 0, 4); Out[1] = Fn8D2(In[0], In[1], In[2], In[3], 0, 0, 0, 0, 4); Out[2] = Fn8D3(In[0], In[1], In[2], In[3], 0, 0, 0, 0, 4); return 1; cmsUNUSED_PARAMETER(Cargo); } static cmsInt32Number Sampler5D(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { Out[0] = Fn8D1(In[0], In[1], In[2], In[3], In[4], 0, 0, 0, 5); Out[1] = Fn8D2(In[0], In[1], In[2], In[3], In[4], 0, 0, 0, 5); Out[2] = Fn8D3(In[0], In[1], In[2], In[3], In[4], 0, 0, 0, 5); return 1; cmsUNUSED_PARAMETER(Cargo); } static cmsInt32Number Sampler6D(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { Out[0] = Fn8D1(In[0], In[1], In[2], In[3], In[4], In[5], 0, 0, 6); Out[1] = Fn8D2(In[0], In[1], In[2], In[3], In[4], In[5], 0, 0, 6); Out[2] = Fn8D3(In[0], In[1], In[2], In[3], In[4], In[5], 0, 0, 6); return 1; cmsUNUSED_PARAMETER(Cargo); } static cmsInt32Number Sampler7D(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { Out[0] = Fn8D1(In[0], In[1], In[2], In[3], In[4], In[5], In[6], 0, 7); Out[1] = Fn8D2(In[0], In[1], In[2], In[3], In[4], In[5], In[6], 0, 7); Out[2] = Fn8D3(In[0], In[1], In[2], In[3], In[4], In[5], In[6], 0, 7); return 1; cmsUNUSED_PARAMETER(Cargo); } static cmsInt32Number Sampler8D(register const cmsUInt16Number In[], register cmsUInt16Number Out[], register void * Cargo) { Out[0] = Fn8D1(In[0], In[1], In[2], In[3], In[4], In[5], In[6], In[7], 8); Out[1] = Fn8D2(In[0], In[1], In[2], In[3], In[4], In[5], In[6], In[7], 8); Out[2] = Fn8D3(In[0], In[1], In[2], In[3], In[4], In[5], In[6], In[7], 8); return 1; cmsUNUSED_PARAMETER(Cargo); } static cmsBool CheckOne3D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3) { cmsUInt16Number In[3], Out1[3], Out2[3]; In[0] = a1; In[1] = a2; In[2] = a3; // This is the interpolated value cmsPipelineEval16(In, Out1, lut); // This is the real value Sampler3D(In, Out2, NULL); // Let's see the difference if (!IsGoodWordPrec("Channel 1", Out1[0], Out2[0], 2)) return FALSE; if (!IsGoodWordPrec("Channel 2", Out1[1], Out2[1], 2)) return FALSE; if (!IsGoodWordPrec("Channel 3", Out1[2], Out2[2], 2)) return FALSE; return TRUE; } static cmsBool CheckOne4D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4) { cmsUInt16Number In[4], Out1[3], Out2[3]; In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; // This is the interpolated value cmsPipelineEval16(In, Out1, lut); // This is the real value Sampler4D(In, Out2, NULL); // Let's see the difference if (!IsGoodWordPrec("Channel 1", Out1[0], Out2[0], 2)) return FALSE; if (!IsGoodWordPrec("Channel 2", Out1[1], Out2[1], 2)) return FALSE; if (!IsGoodWordPrec("Channel 3", Out1[2], Out2[2], 2)) return FALSE; return TRUE; } static cmsBool CheckOne5D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5) { cmsUInt16Number In[5], Out1[3], Out2[3]; In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5; // This is the interpolated value cmsPipelineEval16(In, Out1, lut); // This is the real value Sampler5D(In, Out2, NULL); // Let's see the difference if (!IsGoodWordPrec("Channel 1", Out1[0], Out2[0], 2)) return FALSE; if (!IsGoodWordPrec("Channel 2", Out1[1], Out2[1], 2)) return FALSE; if (!IsGoodWordPrec("Channel 3", Out1[2], Out2[2], 2)) return FALSE; return TRUE; } static cmsBool CheckOne6D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5, cmsUInt16Number a6) { cmsUInt16Number In[6], Out1[3], Out2[3]; In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5; In[5] = a6; // This is the interpolated value cmsPipelineEval16(In, Out1, lut); // This is the real value Sampler6D(In, Out2, NULL); // Let's see the difference if (!IsGoodWordPrec("Channel 1", Out1[0], Out2[0], 2)) return FALSE; if (!IsGoodWordPrec("Channel 2", Out1[1], Out2[1], 2)) return FALSE; if (!IsGoodWordPrec("Channel 3", Out1[2], Out2[2], 2)) return FALSE; return TRUE; } static cmsBool CheckOne7D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5, cmsUInt16Number a6, cmsUInt16Number a7) { cmsUInt16Number In[7], Out1[3], Out2[3]; In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5; In[5] = a6; In[6] = a7; // This is the interpolated value cmsPipelineEval16(In, Out1, lut); // This is the real value Sampler7D(In, Out2, NULL); // Let's see the difference if (!IsGoodWordPrec("Channel 1", Out1[0], Out2[0], 2)) return FALSE; if (!IsGoodWordPrec("Channel 2", Out1[1], Out2[1], 2)) return FALSE; if (!IsGoodWordPrec("Channel 3", Out1[2], Out2[2], 2)) return FALSE; return TRUE; } static cmsBool CheckOne8D(cmsPipeline* lut, cmsUInt16Number a1, cmsUInt16Number a2, cmsUInt16Number a3, cmsUInt16Number a4, cmsUInt16Number a5, cmsUInt16Number a6, cmsUInt16Number a7, cmsUInt16Number a8) { cmsUInt16Number In[8], Out1[3], Out2[3]; In[0] = a1; In[1] = a2; In[2] = a3; In[3] = a4; In[4] = a5; In[5] = a6; In[6] = a7; In[7] = a8; // This is the interpolated value cmsPipelineEval16(In, Out1, lut); // This is the real value Sampler8D(In, Out2, NULL); // Let's see the difference if (!IsGoodWordPrec("Channel 1", Out1[0], Out2[0], 2)) return FALSE; if (!IsGoodWordPrec("Channel 2", Out1[1], Out2[1], 2)) return FALSE; if (!IsGoodWordPrec("Channel 3", Out1[2], Out2[2], 2)) return FALSE; return TRUE; } static cmsInt32Number Check3Dinterp(void) { cmsPipeline* lut; cmsStage* mpe; lut = cmsPipelineAlloc(DbgThread(), 3, 3); mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 3, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler3D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne3D(lut, 0, 0, 0)) return 0; if (!CheckOne3D(lut, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne3D(lut, 0x8080, 0x8080, 0x8080)) return 0; if (!CheckOne3D(lut, 0x0000, 0xFE00, 0x80FF)) return 0; if (!CheckOne3D(lut, 0x1111, 0x2222, 0x3333)) return 0; if (!CheckOne3D(lut, 0x0000, 0x0012, 0x0013)) return 0; if (!CheckOne3D(lut, 0x3141, 0x1415, 0x1592)) return 0; if (!CheckOne3D(lut, 0xFF00, 0xFF01, 0xFF12)) return 0; cmsPipelineFree(lut); return 1; } static cmsInt32Number Check3DinterpGranular(void) { cmsPipeline* lut; cmsStage* mpe; cmsUInt32Number Dimensions[] = { 7, 8, 9 }; lut = cmsPipelineAlloc(DbgThread(), 3, 3); mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 3, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler3D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne3D(lut, 0, 0, 0)) return 0; if (!CheckOne3D(lut, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne3D(lut, 0x8080, 0x8080, 0x8080)) return 0; if (!CheckOne3D(lut, 0x0000, 0xFE00, 0x80FF)) return 0; if (!CheckOne3D(lut, 0x1111, 0x2222, 0x3333)) return 0; if (!CheckOne3D(lut, 0x0000, 0x0012, 0x0013)) return 0; if (!CheckOne3D(lut, 0x3141, 0x1415, 0x1592)) return 0; if (!CheckOne3D(lut, 0xFF00, 0xFF01, 0xFF12)) return 0; cmsPipelineFree(lut); return 1; } static cmsInt32Number Check4Dinterp(void) { cmsPipeline* lut; cmsStage* mpe; lut = cmsPipelineAlloc(DbgThread(), 4, 3); mpe = cmsStageAllocCLut16bit(DbgThread(), 9, 4, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler4D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne4D(lut, 0, 0, 0, 0)) return 0; if (!CheckOne4D(lut, 0xffff, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne4D(lut, 0x8080, 0x8080, 0x8080, 0x8080)) return 0; if (!CheckOne4D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888)) return 0; if (!CheckOne4D(lut, 0x1111, 0x2222, 0x3333, 0x4444)) return 0; if (!CheckOne4D(lut, 0x0000, 0x0012, 0x0013, 0x0014)) return 0; if (!CheckOne4D(lut, 0x3141, 0x1415, 0x1592, 0x9261)) return 0; if (!CheckOne4D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13)) return 0; cmsPipelineFree(lut); return 1; } static cmsInt32Number Check4DinterpGranular(void) { cmsPipeline* lut; cmsStage* mpe; cmsUInt32Number Dimensions[] = { 9, 8, 7, 6 }; lut = cmsPipelineAlloc(DbgThread(), 4, 3); mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 4, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler4D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne4D(lut, 0, 0, 0, 0)) return 0; if (!CheckOne4D(lut, 0xffff, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne4D(lut, 0x8080, 0x8080, 0x8080, 0x8080)) return 0; if (!CheckOne4D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888)) return 0; if (!CheckOne4D(lut, 0x1111, 0x2222, 0x3333, 0x4444)) return 0; if (!CheckOne4D(lut, 0x0000, 0x0012, 0x0013, 0x0014)) return 0; if (!CheckOne4D(lut, 0x3141, 0x1415, 0x1592, 0x9261)) return 0; if (!CheckOne4D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13)) return 0; cmsPipelineFree(lut); return 1; } static cmsInt32Number Check5DinterpGranular(void) { cmsPipeline* lut; cmsStage* mpe; cmsUInt32Number Dimensions[] = { 3, 2, 2, 2, 2 }; lut = cmsPipelineAlloc(DbgThread(), 5, 3); mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 5, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler5D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne5D(lut, 0, 0, 0, 0, 0)) return 0; if (!CheckOne5D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne5D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234)) return 0; if (!CheckOne5D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078)) return 0; if (!CheckOne5D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455)) return 0; if (!CheckOne5D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333)) return 0; if (!CheckOne5D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567)) return 0; if (!CheckOne5D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344)) return 0; cmsPipelineFree(lut); return 1; } static cmsInt32Number Check6DinterpGranular(void) { cmsPipeline* lut; cmsStage* mpe; cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2 }; lut = cmsPipelineAlloc(DbgThread(), 6, 3); mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 6, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler6D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne6D(lut, 0, 0, 0, 0, 0, 0)) return 0; if (!CheckOne6D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne6D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122)) return 0; if (!CheckOne6D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233)) return 0; if (!CheckOne6D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344)) return 0; if (!CheckOne6D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455)) return 0; if (!CheckOne6D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566)) return 0; if (!CheckOne6D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677)) return 0; cmsPipelineFree(lut); return 1; } static cmsInt32Number Check7DinterpGranular(void) { cmsPipeline* lut; cmsStage* mpe; cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2, 2 }; lut = cmsPipelineAlloc(DbgThread(), 7, 3); mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 7, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler7D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne7D(lut, 0, 0, 0, 0, 0, 0, 0)) return 0; if (!CheckOne7D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne7D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122, 0x0056)) return 0; if (!CheckOne7D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233, 0x0088)) return 0; if (!CheckOne7D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344, 0x1987)) return 0; if (!CheckOne7D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455, 0x9988)) return 0; if (!CheckOne7D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566, 0xfe56)) return 0; if (!CheckOne7D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677, 0xbabe)) return 0; cmsPipelineFree(lut); return 1; } static cmsInt32Number Check8DinterpGranular(void) { cmsPipeline* lut; cmsStage* mpe; cmsUInt32Number Dimensions[] = { 4, 3, 3, 2, 2, 2, 2, 2 }; lut = cmsPipelineAlloc(DbgThread(), 8, 3); mpe = cmsStageAllocCLut16bitGranular(DbgThread(), Dimensions, 8, 3, NULL); cmsStageSampleCLut16bit(mpe, Sampler8D, NULL, 0); cmsPipelineInsertStage(lut, cmsAT_BEGIN, mpe); // Check accuracy if (!CheckOne8D(lut, 0, 0, 0, 0, 0, 0, 0, 0)) return 0; if (!CheckOne8D(lut, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff)) return 0; if (!CheckOne8D(lut, 0x8080, 0x8080, 0x8080, 0x8080, 0x1234, 0x1122, 0x0056, 0x0011)) return 0; if (!CheckOne8D(lut, 0x0000, 0xFE00, 0x80FF, 0x8888, 0x8078, 0x2233, 0x0088, 0x2020)) return 0; if (!CheckOne8D(lut, 0x1111, 0x2222, 0x3333, 0x4444, 0x1455, 0x3344, 0x1987, 0x4532)) return 0; if (!CheckOne8D(lut, 0x0000, 0x0012, 0x0013, 0x0014, 0x2333, 0x4455, 0x9988, 0x1200)) return 0; if (!CheckOne8D(lut, 0x3141, 0x1415, 0x1592, 0x9261, 0x4567, 0x5566, 0xfe56, 0x6666)) return 0; if (!CheckOne8D(lut, 0xFF00, 0xFF01, 0xFF12, 0xFF13, 0xF344, 0x6677, 0xbabe, 0xface)) return 0; cmsPipelineFree(lut); return 1; } // Colorimetric conversions ------------------------------------------------------------------------------------------------- // Lab to LCh and back should be performed at 1E-12 accuracy at least static cmsInt32Number CheckLab2LCh(void) { cmsInt32Number l, a, b; cmsFloat64Number dist, Max = 0; cmsCIELab Lab, Lab2; cmsCIELCh LCh; for (l=0; l <= 100; l += 10) { for (a=-128; a <= +128; a += 8) { for (b=-128; b <= 128; b += 8) { Lab.L = l; Lab.a = a; Lab.b = b; cmsLab2LCh(&LCh, &Lab); cmsLCh2Lab(&Lab2, &LCh); dist = cmsDeltaE(&Lab, &Lab2); if (dist > Max) Max = dist; } } } return Max < 1E-12; } // Lab to LCh and back should be performed at 1E-12 accuracy at least static cmsInt32Number CheckLab2XYZ(void) { cmsInt32Number l, a, b; cmsFloat64Number dist, Max = 0; cmsCIELab Lab, Lab2; cmsCIEXYZ XYZ; for (l=0; l <= 100; l += 10) { for (a=-128; a <= +128; a += 8) { for (b=-128; b <= 128; b += 8) { Lab.L = l; Lab.a = a; Lab.b = b; cmsLab2XYZ(NULL, &XYZ, &Lab); cmsXYZ2Lab(NULL, &Lab2, &XYZ); dist = cmsDeltaE(&Lab, &Lab2); if (dist > Max) Max = dist; } } } return Max < 1E-12; } // Lab to xyY and back should be performed at 1E-12 accuracy at least static cmsInt32Number CheckLab2xyY(void) { cmsInt32Number l, a, b; cmsFloat64Number dist, Max = 0; cmsCIELab Lab, Lab2; cmsCIEXYZ XYZ; cmsCIExyY xyY; for (l=0; l <= 100; l += 10) { for (a=-128; a <= +128; a += 8) { for (b=-128; b <= 128; b += 8) { Lab.L = l; Lab.a = a; Lab.b = b; cmsLab2XYZ(NULL, &XYZ, &Lab); cmsXYZ2xyY(&xyY, &XYZ); cmsxyY2XYZ(&XYZ, &xyY); cmsXYZ2Lab(NULL, &Lab2, &XYZ); dist = cmsDeltaE(&Lab, &Lab2); if (dist > Max) Max = dist; } } } return Max < 1E-12; } static cmsInt32Number CheckLabV2encoding(void) { cmsInt32Number n2, i, j; cmsUInt16Number Inw[3], aw[3]; cmsCIELab Lab; n2=0; for (j=0; j < 65535; j++) { Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j; cmsLabEncoded2FloatV2(&Lab, Inw); cmsFloat2LabEncodedV2(aw, &Lab); for (i=0; i < 3; i++) { if (aw[i] != j) { n2++; } } } return (n2 == 0); } static cmsInt32Number CheckLabV4encoding(void) { cmsInt32Number n2, i, j; cmsUInt16Number Inw[3], aw[3]; cmsCIELab Lab; n2=0; for (j=0; j < 65535; j++) { Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j; cmsLabEncoded2Float(&Lab, Inw); cmsFloat2LabEncoded(aw, &Lab); for (i=0; i < 3; i++) { if (aw[i] != j) { n2++; } } } return (n2 == 0); } // BlackBody ----------------------------------------------------------------------------------------------------- static cmsInt32Number CheckTemp2CHRM(void) { cmsInt32Number j; cmsFloat64Number d, v, Max = 0; cmsCIExyY White; for (j=4000; j < 25000; j++) { cmsWhitePointFromTemp(&White, j); if (!cmsTempFromWhitePoint(&v, &White)) return 0; d = fabs(v - j); if (d > Max) Max = d; } // 100 degree is the actual resolution return (Max < 100); } // Tone curves ----------------------------------------------------------------------------------------------------- static cmsInt32Number CheckGammaEstimation(cmsToneCurve* c, cmsFloat64Number g) { cmsFloat64Number est = cmsEstimateGamma(c, 0.001); SubTest("Gamma estimation"); if (fabs(est - g) > 0.001) return 0; return 1; } static cmsInt32Number CheckGammaCreation16(void) { cmsToneCurve* LinGamma = cmsBuildGamma(DbgThread(), 1.0); cmsInt32Number i; cmsUInt16Number in, out; for (i=0; i < 0xffff; i++) { in = (cmsUInt16Number) i; out = cmsEvalToneCurve16(LinGamma, in); if (in != out) { Fail("(lin gamma): Must be %x, But is %x : ", in, out); cmsFreeToneCurve(LinGamma); return 0; } } if (!CheckGammaEstimation(LinGamma, 1.0)) return 0; cmsFreeToneCurve(LinGamma); return 1; } static cmsInt32Number CheckGammaCreationFlt(void) { cmsToneCurve* LinGamma = cmsBuildGamma(DbgThread(), 1.0); cmsInt32Number i; cmsFloat32Number in, out; for (i=0; i < 0xffff; i++) { in = (cmsFloat32Number) (i / 65535.0); out = cmsEvalToneCurveFloat(LinGamma, in); if (fabs(in - out) > (1/65535.0)) { Fail("(lin gamma): Must be %f, But is %f : ", in, out); cmsFreeToneCurve(LinGamma); return 0; } } if (!CheckGammaEstimation(LinGamma, 1.0)) return 0; cmsFreeToneCurve(LinGamma); return 1; } // Curve curves using a single power function // Error is given in 0..ffff counts static cmsInt32Number CheckGammaFloat(cmsFloat64Number g) { cmsToneCurve* Curve = cmsBuildGamma(DbgThread(), g); cmsInt32Number i; cmsFloat32Number in, out; cmsFloat64Number val, Err; MaxErr = 0.0; for (i=0; i < 0xffff; i++) { in = (cmsFloat32Number) (i / 65535.0); out = cmsEvalToneCurveFloat(Curve, in); val = pow((cmsFloat64Number) in, g); Err = fabs( val - out); if (Err > MaxErr) MaxErr = Err; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0); if (!CheckGammaEstimation(Curve, g)) return 0; cmsFreeToneCurve(Curve); return 1; } static cmsInt32Number CheckGamma18(void) { return CheckGammaFloat(1.8); } static cmsInt32Number CheckGamma22(void) { return CheckGammaFloat(2.2); } static cmsInt32Number CheckGamma30(void) { return CheckGammaFloat(3.0); } // Check table-based gamma functions static cmsInt32Number CheckGammaFloatTable(cmsFloat64Number g) { cmsFloat32Number Values[1025]; cmsToneCurve* Curve; cmsInt32Number i; cmsFloat32Number in, out; cmsFloat64Number val, Err; for (i=0; i <= 1024; i++) { in = (cmsFloat32Number) (i / 1024.0); Values[i] = powf(in, (float) g); } Curve = cmsBuildTabulatedToneCurveFloat(DbgThread(), 1025, Values); MaxErr = 0.0; for (i=0; i <= 0xffff; i++) { in = (cmsFloat32Number) (i / 65535.0); out = cmsEvalToneCurveFloat(Curve, in); val = pow(in, g); Err = fabs(val - out); if (Err > MaxErr) MaxErr = Err; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0); if (!CheckGammaEstimation(Curve, g)) return 0; cmsFreeToneCurve(Curve); return 1; } static cmsInt32Number CheckGamma18Table(void) { return CheckGammaFloatTable(1.8); } static cmsInt32Number CheckGamma22Table(void) { return CheckGammaFloatTable(2.2); } static cmsInt32Number CheckGamma30Table(void) { return CheckGammaFloatTable(3.0); } // Create a curve from a table (which is a pure gamma function) and check it against the pow function. static cmsInt32Number CheckGammaWordTable(cmsFloat64Number g) { cmsUInt16Number Values[1025]; cmsToneCurve* Curve; cmsInt32Number i; cmsFloat32Number in, out; cmsFloat64Number val, Err; for (i=0; i <= 1024; i++) { in = (cmsFloat32Number) (i / 1024.0); Values[i] = (cmsUInt16Number) floor(pow(in, g) * 65535.0 + 0.5); } Curve = cmsBuildTabulatedToneCurve16(DbgThread(), 1025, Values); MaxErr = 0.0; for (i=0; i <= 0xffff; i++) { in = (cmsFloat32Number) (i / 65535.0); out = cmsEvalToneCurveFloat(Curve, in); val = pow(in, g); Err = fabs(val - out); if (Err > MaxErr) MaxErr = Err; } if (MaxErr > 0) printf("|Err|<%lf ", MaxErr * 65535.0); if (!CheckGammaEstimation(Curve, g)) return 0; cmsFreeToneCurve(Curve); return 1; } static cmsInt32Number CheckGamma18TableWord(void) { return CheckGammaWordTable(1.8); } static cmsInt32Number CheckGamma22TableWord(void) { return CheckGammaWordTable(2.2); } static cmsInt32Number CheckGamma30TableWord(void) { return CheckGammaWordTable(3.0); } // Curve joining test. Joining two high-gamma of 3.0 curves should // give something like linear static cmsInt32Number CheckJointCurves(void) { cmsToneCurve *Forward, *Reverse, *Result; cmsBool rc; Forward = cmsBuildGamma(DbgThread(), 3.0); Reverse = cmsBuildGamma(DbgThread(), 3.0); Result = cmsJoinToneCurve(DbgThread(), Forward, Reverse, 256); cmsFreeToneCurve(Forward); cmsFreeToneCurve(Reverse); rc = cmsIsToneCurveLinear(Result); cmsFreeToneCurve(Result); if (!rc) Fail("Joining same curve twice does not result in a linear ramp"); return rc; } // Create a gamma curve by cheating the table static cmsToneCurve* GammaTableLinear(cmsInt32Number nEntries, cmsBool Dir) { cmsInt32Number i; cmsToneCurve* g = cmsBuildTabulatedToneCurve16(DbgThread(), nEntries, NULL); for (i=0; i < nEntries; i++) { cmsInt32Number v = _cmsQuantizeVal(i, nEntries); if (Dir) g->Table16[i] = (cmsUInt16Number) v; else g->Table16[i] = (cmsUInt16Number) (0xFFFF - v); } return g; } static cmsInt32Number CheckJointCurvesDescending(void) { cmsToneCurve *Forward, *Reverse, *Result; cmsInt32Number i, rc; Forward = cmsBuildGamma(DbgThread(), 2.2); // Fake the curve to be table-based for (i=0; i < 4096; i++) Forward ->Table16[i] = 0xffff - Forward->Table16[i]; Forward ->Segments[0].Type = 0; Reverse = cmsReverseToneCurve(Forward); Result = cmsJoinToneCurve(DbgThread(), Reverse, Reverse, 256); cmsFreeToneCurve(Forward); cmsFreeToneCurve(Reverse); rc = cmsIsToneCurveLinear(Result); cmsFreeToneCurve(Result); return rc; } static cmsInt32Number CheckFToneCurvePoint(cmsToneCurve* c, cmsUInt16Number Point, cmsInt32Number Value) { cmsInt32Number Result; Result = cmsEvalToneCurve16(c, Point); return (abs(Value - Result) < 2); } static cmsInt32Number CheckReverseDegenerated(void) { cmsToneCurve* p, *g; cmsUInt16Number Tab[16]; Tab[0] = 0; Tab[1] = 0; Tab[2] = 0; Tab[3] = 0; Tab[4] = 0; Tab[5] = 0x5555; Tab[6] = 0x6666; Tab[7] = 0x7777; Tab[8] = 0x8888; Tab[9] = 0x9999; Tab[10]= 0xffff; Tab[11]= 0xffff; Tab[12]= 0xffff; Tab[13]= 0xffff; Tab[14]= 0xffff; Tab[15]= 0xffff; p = cmsBuildTabulatedToneCurve16(DbgThread(), 16, Tab); g = cmsReverseToneCurve(p); // Now let's check some points if (!CheckFToneCurvePoint(g, 0x5555, 0x5555)) return 0; if (!CheckFToneCurvePoint(g, 0x7777, 0x7777)) return 0; // First point for zero if (!CheckFToneCurvePoint(g, 0x0000, 0x4444)) return 0; // Last point if (!CheckFToneCurvePoint(g, 0xFFFF, 0xFFFF)) return 0; cmsFreeToneCurve(p); cmsFreeToneCurve(g); return 1; } // Build a parametric sRGB-like curve static cmsToneCurve* Build_sRGBGamma(void) { cmsFloat64Number Parameters[5]; Parameters[0] = 2.4; Parameters[1] = 1. / 1.055; Parameters[2] = 0.055 / 1.055; Parameters[3] = 1. / 12.92; Parameters[4] = 0.04045; // d return cmsBuildParametricToneCurve(DbgThread(), 4, Parameters); } // Join two gamma tables in floting point format. Result should be a straight line static cmsToneCurve* CombineGammaFloat(cmsToneCurve* g1, cmsToneCurve* g2) { cmsUInt16Number Tab[256]; cmsFloat32Number f; cmsInt32Number i; for (i=0; i < 256; i++) { f = (cmsFloat32Number) i / 255.0F; f = cmsEvalToneCurveFloat(g2, cmsEvalToneCurveFloat(g1, f)); Tab[i] = (cmsUInt16Number) floor(f * 65535.0 + 0.5); } return cmsBuildTabulatedToneCurve16(DbgThread(), 256, Tab); } // Same of anterior, but using quantized tables static cmsToneCurve* CombineGamma16(cmsToneCurve* g1, cmsToneCurve* g2) { cmsUInt16Number Tab[256]; cmsInt32Number i; for (i=0; i < 256; i++) { cmsUInt16Number wValIn; wValIn = _cmsQuantizeVal(i, 256); Tab[i] = cmsEvalToneCurve16(g2, cmsEvalToneCurve16(g1, wValIn)); } return cmsBuildTabulatedToneCurve16(DbgThread(), 256, Tab); } static cmsInt32Number CheckJointFloatCurves_sRGB(void) { cmsToneCurve *Forward, *Reverse, *Result; cmsBool rc; Forward = Build_sRGBGamma(); Reverse = cmsReverseToneCurve(Forward); Result = CombineGammaFloat(Forward, Reverse); cmsFreeToneCurve(Forward); cmsFreeToneCurve(Reverse); rc = cmsIsToneCurveLinear(Result); cmsFreeToneCurve(Result); return rc; } static cmsInt32Number CheckJoint16Curves_sRGB(void) { cmsToneCurve *Forward, *Reverse, *Result; cmsBool rc; Forward = Build_sRGBGamma(); Reverse = cmsReverseToneCurve(Forward); Result = CombineGamma16(Forward, Reverse); cmsFreeToneCurve(Forward); cmsFreeToneCurve(Reverse); rc = cmsIsToneCurveLinear(Result); cmsFreeToneCurve(Result); return rc; } // sigmoidal curve f(x) = (1-x^g) ^(1/g) static cmsInt32Number CheckJointCurvesSShaped(void) { cmsFloat64Number p = 3.2; cmsToneCurve *Forward, *Reverse, *Result; cmsInt32Number rc; Forward = cmsBuildParametricToneCurve(DbgThread(), 108, &p); Reverse = cmsReverseToneCurve(Forward); Result = cmsJoinToneCurve(DbgThread(), Forward, Forward, 4096); cmsFreeToneCurve(Forward); cmsFreeToneCurve(Reverse); rc = cmsIsToneCurveLinear(Result); cmsFreeToneCurve(Result); return rc; } // -------------------------------------------------------------------------------------------------------- // Implementation of some tone curve functions static cmsFloat32Number Gamma(cmsFloat32Number x, const cmsFloat64Number Params[]) { return (cmsFloat32Number) pow(x, Params[0]); } static cmsFloat32Number CIE122(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number e, Val; if (x >= -Params[2] / Params[1]) { e = Params[1]*x + Params[2]; if (e > 0) Val = pow(e, Params[0]); else Val = 0; } else Val = 0; return (cmsFloat32Number) Val; } static cmsFloat32Number IEC61966_3(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number e, Val; if (x >= -Params[2] / Params[1]) { e = Params[1]*x + Params[2]; if (e > 0) Val = pow(e, Params[0]) + Params[3]; else Val = 0; } else Val = Params[3]; return (cmsFloat32Number) Val; } static cmsFloat32Number IEC61966_21(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number e, Val; if (x >= Params[4]) { e = Params[1]*x + Params[2]; if (e > 0) Val = pow(e, Params[0]); else Val = 0; } else Val = x * Params[3]; return (cmsFloat32Number) Val; } static cmsFloat32Number param_5(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number e, Val; // Y = (aX + b)^Gamma + e | X >= d // Y = cX + f | else if (x >= Params[4]) { e = Params[1]*x + Params[2]; if (e > 0) Val = pow(e, Params[0]) + Params[5]; else Val = 0; } else Val = x*Params[3] + Params[6]; return (cmsFloat32Number) Val; } static cmsFloat32Number param_6(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number e, Val; e = Params[1]*x + Params[2]; if (e > 0) Val = pow(e, Params[0]) + Params[3]; else Val = 0; return (cmsFloat32Number) Val; } static cmsFloat32Number param_7(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number Val; Val = Params[1]*log10(Params[2] * pow(x, Params[0]) + Params[3]) + Params[4]; return (cmsFloat32Number) Val; } static cmsFloat32Number param_8(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number Val; Val = (Params[0] * pow(Params[1], Params[2] * x + Params[3]) + Params[4]); return (cmsFloat32Number) Val; } static cmsFloat32Number sigmoidal(cmsFloat32Number x, const cmsFloat64Number Params[]) { cmsFloat64Number Val; Val = pow(1.0 - pow(1 - x, 1/Params[0]), 1/Params[0]); return (cmsFloat32Number) Val; } static cmsBool CheckSingleParametric(const char* Name, dblfnptr fn, cmsInt32Number Type, const cmsFloat64Number Params[]) { cmsInt32Number i; cmsToneCurve* tc; cmsToneCurve* tc_1; char InverseText[256]; tc = cmsBuildParametricToneCurve(DbgThread(), Type, Params); tc_1 = cmsBuildParametricToneCurve(DbgThread(), -Type, Params); for (i=0; i <= 1000; i++) { cmsFloat32Number x = (cmsFloat32Number) i / 1000; cmsFloat32Number y_fn, y_param, x_param, y_param2; y_fn = fn(x, Params); y_param = cmsEvalToneCurveFloat(tc, x); x_param = cmsEvalToneCurveFloat(tc_1, y_param); y_param2 = fn(x_param, Params); if (!IsGoodVal(Name, y_fn, y_param, FIXED_PRECISION_15_16)) goto Error; sprintf(InverseText, "Inverse %s", Name); if (!IsGoodVal(InverseText, y_fn, y_param2, FIXED_PRECISION_15_16)) goto Error; } cmsFreeToneCurve(tc); cmsFreeToneCurve(tc_1); return TRUE; Error: cmsFreeToneCurve(tc); cmsFreeToneCurve(tc_1); return FALSE; } // Check against some known values static cmsInt32Number CheckParametricToneCurves(void) { cmsFloat64Number Params[10]; // 1) X = Y ^ Gamma Params[0] = 2.2; if (!CheckSingleParametric("Gamma", Gamma, 1, Params)) return 0; // 2) CIE 122-1966 // Y = (aX + b)^Gamma | X >= -b/a // Y = 0 | else Params[0] = 2.2; Params[1] = 1.5; Params[2] = -0.5; if (!CheckSingleParametric("CIE122-1966", CIE122, 2, Params)) return 0; // 3) IEC 61966-3 // Y = (aX + b)^Gamma | X <= -b/a // Y = c | else Params[0] = 2.2; Params[1] = 1.5; Params[2] = -0.5; Params[3] = 0.3; if (!CheckSingleParametric("IEC 61966-3", IEC61966_3, 3, Params)) return 0; // 4) IEC 61966-2.1 (sRGB) // Y = (aX + b)^Gamma | X >= d // Y = cX | X < d Params[0] = 2.4; Params[1] = 1. / 1.055; Params[2] = 0.055 / 1.055; Params[3] = 1. / 12.92; Params[4] = 0.04045; if (!CheckSingleParametric("IEC 61966-2.1", IEC61966_21, 4, Params)) return 0; // 5) Y = (aX + b)^Gamma + e | X >= d // Y = cX + f | else Params[0] = 2.2; Params[1] = 0.7; Params[2] = 0.2; Params[3] = 0.3; Params[4] = 0.1; Params[5] = 0.5; Params[6] = 0.2; if (!CheckSingleParametric("param_5", param_5, 5, Params)) return 0; // 6) Y = (aX + b) ^ Gamma + c Params[0] = 2.2; Params[1] = 0.7; Params[2] = 0.2; Params[3] = 0.3; if (!CheckSingleParametric("param_6", param_6, 6, Params)) return 0; // 7) Y = a * log (b * X^Gamma + c) + d Params[0] = 2.2; Params[1] = 0.9; Params[2] = 0.9; Params[3] = 0.02; Params[4] = 0.1; if (!CheckSingleParametric("param_7", param_7, 7, Params)) return 0; // 8) Y = a * b ^ (c*X+d) + e Params[0] = 0.9; Params[1] = 0.9; Params[2] = 1.02; Params[3] = 0.1; Params[4] = 0.2; if (!CheckSingleParametric("param_8", param_8, 8, Params)) return 0; // 108: S-Shaped: (1 - (1-x)^1/g)^1/g Params[0] = 1.9; if (!CheckSingleParametric("sigmoidal", sigmoidal, 108, Params)) return 0; // All OK return 1; } // LUT checks ------------------------------------------------------------------------------ static cmsInt32Number CheckLUTcreation(void) { cmsPipeline* lut; cmsPipeline* lut2; cmsInt32Number n1, n2; lut = cmsPipelineAlloc(DbgThread(), 1, 1); n1 = cmsPipelineStageCount(lut); lut2 = cmsPipelineDup(lut); n2 = cmsPipelineStageCount(lut2); cmsPipelineFree(lut); cmsPipelineFree(lut2); return (n1 == 0) && (n2 == 0); } // Create a MPE for a identity matrix static void AddIdentityMatrix(cmsPipeline* lut) { const cmsFloat64Number Identity[] = { 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 }; cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocMatrix(DbgThread(), 3, 3, Identity, NULL)); } // Create a MPE for identity cmsFloat32Number CLUT static void AddIdentityCLUTfloat(cmsPipeline* lut) { const cmsFloat32Number Table[] = { 0, 0, 0, 0, 0, 1.0, 0, 1.0, 0, 0, 1.0, 1.0, 1.0, 0, 0, 1.0, 0, 1.0, 1.0, 1.0, 0, 1.0, 1.0, 1.0 }; cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocCLutFloat(DbgThread(), 2, 3, 3, Table)); } // Create a MPE for identity cmsFloat32Number CLUT static void AddIdentityCLUT16(cmsPipeline* lut) { const cmsUInt16Number Table[] = { 0, 0, 0, 0, 0, 0xffff, 0, 0xffff, 0, 0, 0xffff, 0xffff, 0xffff, 0, 0, 0xffff, 0, 0xffff, 0xffff, 0xffff, 0, 0xffff, 0xffff, 0xffff }; cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocCLut16bit(DbgThread(), 2, 3, 3, Table)); } // Create a 3 fn identity curves static void Add3GammaCurves(cmsPipeline* lut, cmsFloat64Number Curve) { cmsToneCurve* id = cmsBuildGamma(DbgThread(), Curve); cmsToneCurve* id3[3]; id3[0] = id; id3[1] = id; id3[2] = id; cmsPipelineInsertStage(lut, cmsAT_END, cmsStageAllocToneCurves(DbgThread(), 3, id3)); cmsFreeToneCurve(id); } static cmsInt32Number CheckFloatLUT(cmsPipeline* lut) { cmsInt32Number n1, i, j; cmsFloat32Number Inf[3], Outf[3]; n1=0; for (j=0; j < 65535; j++) { cmsInt32Number af[3]; Inf[0] = Inf[1] = Inf[2] = (cmsFloat32Number) j / 65535.0F; cmsPipelineEvalFloat(Inf, Outf, lut); af[0] = (cmsInt32Number) floor(Outf[0]*65535.0 + 0.5); af[1] = (cmsInt32Number) floor(Outf[1]*65535.0 + 0.5); af[2] = (cmsInt32Number) floor(Outf[2]*65535.0 + 0.5); for (i=0; i < 3; i++) { if (af[i] != j) { n1++; } } } return (n1 == 0); } static cmsInt32Number Check16LUT(cmsPipeline* lut) { cmsInt32Number n2, i, j; cmsUInt16Number Inw[3], Outw[3]; n2=0; for (j=0; j < 65535; j++) { cmsInt32Number aw[3]; Inw[0] = Inw[1] = Inw[2] = (cmsUInt16Number) j; cmsPipelineEval16(Inw, Outw, lut); aw[0] = Outw[0]; aw[1] = Outw[1]; aw[2] = Outw[2]; for (i=0; i < 3; i++) { if (aw[i] != j) { n2++; } } } return (n2 == 0); } // Check any LUT that is linear static cmsInt32Number CheckStagesLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages) { cmsInt32Number nInpChans, nOutpChans, nStages; nInpChans = cmsPipelineInputChannels(lut); nOutpChans = cmsPipelineOutputChannels(lut); nStages = cmsPipelineStageCount(lut); return (nInpChans == 3) && (nOutpChans == 3) && (nStages == ExpectedStages); } static cmsInt32Number CheckFullLUT(cmsPipeline* lut, cmsInt32Number ExpectedStages) { cmsInt32Number rc = CheckStagesLUT(lut, ExpectedStages) && Check16LUT(lut) && CheckFloatLUT(lut); cmsPipelineFree(lut); return rc; } static cmsInt32Number Check1StageLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); return CheckFullLUT(lut, 1); } static cmsInt32Number Check2StageLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUTfloat(lut); return CheckFullLUT(lut, 2); } static cmsInt32Number Check2Stage16LUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUT16(lut); return CheckFullLUT(lut, 2); } static cmsInt32Number Check3StageLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUTfloat(lut); Add3GammaCurves(lut, 1.0); return CheckFullLUT(lut, 3); } static cmsInt32Number Check3Stage16LUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUT16(lut); Add3GammaCurves(lut, 1.0); return CheckFullLUT(lut, 3); } static cmsInt32Number Check4StageLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUTfloat(lut); Add3GammaCurves(lut, 1.0); AddIdentityMatrix(lut); return CheckFullLUT(lut, 4); } static cmsInt32Number Check4Stage16LUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUT16(lut); Add3GammaCurves(lut, 1.0); AddIdentityMatrix(lut); return CheckFullLUT(lut, 4); } static cmsInt32Number Check5StageLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUTfloat(lut); Add3GammaCurves(lut, 1.0); AddIdentityMatrix(lut); Add3GammaCurves(lut, 1.0); return CheckFullLUT(lut, 5); } static cmsInt32Number Check5Stage16LUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); AddIdentityCLUT16(lut); Add3GammaCurves(lut, 1.0); AddIdentityMatrix(lut); Add3GammaCurves(lut, 1.0); return CheckFullLUT(lut, 5); } static cmsInt32Number Check6StageLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); Add3GammaCurves(lut, 1.0); AddIdentityCLUTfloat(lut); Add3GammaCurves(lut, 1.0); AddIdentityMatrix(lut); Add3GammaCurves(lut, 1.0); return CheckFullLUT(lut, 6); } static cmsInt32Number Check6Stage16LUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); AddIdentityMatrix(lut); Add3GammaCurves(lut, 1.0); AddIdentityCLUT16(lut); Add3GammaCurves(lut, 1.0); AddIdentityMatrix(lut); Add3GammaCurves(lut, 1.0); return CheckFullLUT(lut, 6); } static cmsInt32Number CheckLab2LabLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); cmsInt32Number rc; cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread())); cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread())); rc = CheckFloatLUT(lut) && CheckStagesLUT(lut, 2); cmsPipelineFree(lut); return rc; } static cmsInt32Number CheckXYZ2XYZLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); cmsInt32Number rc; cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread())); cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread())); rc = CheckFloatLUT(lut) && CheckStagesLUT(lut, 2); cmsPipelineFree(lut); return rc; } static cmsInt32Number CheckLab2LabMatLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); cmsInt32Number rc; cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocLab2XYZ(DbgThread())); AddIdentityMatrix(lut); cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocXYZ2Lab(DbgThread())); rc = CheckFloatLUT(lut) && CheckStagesLUT(lut, 3); cmsPipelineFree(lut); return rc; } static cmsInt32Number CheckNamedColorLUT(void) { cmsPipeline* lut = cmsPipelineAlloc(DbgThread(), 3, 3); cmsNAMEDCOLORLIST* nc; cmsInt32Number i,j, rc = 1, n2; cmsUInt16Number PCS[3]; cmsUInt16Number Colorant[cmsMAXCHANNELS]; char Name[255]; cmsUInt16Number Inw[3], Outw[3]; nc = cmsAllocNamedColorList(DbgThread(), 256, 3, "pre", "post"); if (nc == NULL) return 0; for (i=0; i < 256; i++) { PCS[0] = PCS[1] = PCS[2] = (cmsUInt16Number) i; Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) i; sprintf(Name, "#%d", i); if (!cmsAppendNamedColor(nc, Name, PCS, Colorant)) { rc = 0; break; } } cmsPipelineInsertStage(lut, cmsAT_END, _cmsStageAllocNamedColor(nc, FALSE)); cmsFreeNamedColorList(nc); if (rc == 0) return 0; n2=0; for (j=0; j < 256; j++) { Inw[0] = (cmsUInt16Number) j; cmsPipelineEval16(Inw, Outw, lut); for (i=0; i < 3; i++) { if (Outw[i] != j) { n2++; } } } cmsPipelineFree(lut); return (n2 == 0); } // -------------------------------------------------------------------------------------------- // A lightweight test of multilocalized unicode structures. static cmsInt32Number CheckMLU(void) { cmsMLU* mlu, *mlu2, *mlu3; char Buffer[256], Buffer2[256]; cmsInt32Number rc = 1; cmsInt32Number i; cmsHPROFILE h= NULL; // Allocate a MLU structure, no preferred size mlu = cmsMLUalloc(DbgThread(), 0); // Add some localizations cmsMLUsetWide(mlu, "en", "US", L"Hello, world"); cmsMLUsetWide(mlu, "es", "ES", L"Hola, mundo"); cmsMLUsetWide(mlu, "fr", "FR", L"Bonjour, le monde"); cmsMLUsetWide(mlu, "ca", "CA", L"Hola, mon"); // Check the returned string for each language cmsMLUgetASCII(mlu, "en", "US", Buffer, 256); if (strcmp(Buffer, "Hello, world") != 0) rc = 0; cmsMLUgetASCII(mlu, "es", "ES", Buffer, 256); if (strcmp(Buffer, "Hola, mundo") != 0) rc = 0; cmsMLUgetASCII(mlu, "fr", "FR", Buffer, 256); if (strcmp(Buffer, "Bonjour, le monde") != 0) rc = 0; cmsMLUgetASCII(mlu, "ca", "CA", Buffer, 256); if (strcmp(Buffer, "Hola, mon") != 0) rc = 0; if (rc == 0) Fail("Unexpected string '%s'", Buffer); // So far, so good. cmsMLUfree(mlu); // Now for performance, allocate an empty struct mlu = cmsMLUalloc(DbgThread(), 0); // Fill it with several thousands of different lenguages for (i=0; i < 4096; i++) { char Lang[3]; Lang[0] = (char) (i % 255); Lang[1] = (char) (i / 255); Lang[2] = 0; sprintf(Buffer, "String #%i", i); cmsMLUsetASCII(mlu, Lang, Lang, Buffer); } // Duplicate it mlu2 = cmsMLUdup(mlu); // Get rid of original cmsMLUfree(mlu); // Check all is still in place for (i=0; i < 4096; i++) { char Lang[3]; Lang[0] = (char)(i % 255); Lang[1] = (char)(i / 255); Lang[2] = 0; cmsMLUgetASCII(mlu2, Lang, Lang, Buffer2, 256); sprintf(Buffer, "String #%i", i); if (strcmp(Buffer, Buffer2) != 0) { rc = 0; break; } } if (rc == 0) Fail("Unexpected string '%s'", Buffer2); // Check profile IO h = cmsOpenProfileFromFileTHR(DbgThread(), "mlucheck.icc", "w"); cmsSetProfileVersion(h, 4.3); cmsWriteTag(h, cmsSigProfileDescriptionTag, mlu2); cmsCloseProfile(h); cmsMLUfree(mlu2); h = cmsOpenProfileFromFileTHR(DbgThread(), "mlucheck.icc", "r"); mlu3 = cmsReadTag(h, cmsSigProfileDescriptionTag); if (mlu3 == NULL) { Fail("Profile didn't get the MLU\n"); rc = 0; goto Error; } // Check all is still in place for (i=0; i < 4096; i++) { char Lang[3]; Lang[0] = (char) (i % 255); Lang[1] = (char) (i / 255); Lang[2] = 0; cmsMLUgetASCII(mlu3, Lang, Lang, Buffer2, 256); sprintf(Buffer, "String #%i", i); if (strcmp(Buffer, Buffer2) != 0) { rc = 0; break; } } if (rc == 0) Fail("Unexpected string '%s'", Buffer2); Error: if (h != NULL) cmsCloseProfile(h); remove("mlucheck.icc"); return rc; } // A lightweight test of named color structures. static cmsInt32Number CheckNamedColorList(void) { cmsNAMEDCOLORLIST* nc = NULL, *nc2; cmsInt32Number i, j, rc=1; char Name[255]; cmsUInt16Number PCS[3]; cmsUInt16Number Colorant[cmsMAXCHANNELS]; char CheckName[255]; cmsUInt16Number CheckPCS[3]; cmsUInt16Number CheckColorant[cmsMAXCHANNELS]; cmsHPROFILE h; nc = cmsAllocNamedColorList(DbgThread(), 0, 4, "prefix", "suffix"); if (nc == NULL) return 0; for (i=0; i < 4096; i++) { PCS[0] = PCS[1] = PCS[2] = (cmsUInt16Number) i; Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) (4096 - i); sprintf(Name, "#%d", i); if (!cmsAppendNamedColor(nc, Name, PCS, Colorant)) { rc = 0; break; } } for (i=0; i < 4096; i++) { CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = (cmsUInt16Number) i; CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (4096 - i); sprintf(CheckName, "#%d", i); if (!cmsNamedColorInfo(nc, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; } for (j=0; j < 3; j++) { if (CheckPCS[j] != PCS[j]) { rc = 0; Fail("Invalid PCS"); goto Error; } } for (j=0; j < 4; j++) { if (CheckColorant[j] != Colorant[j]) { rc = 0; Fail("Invalid Colorant"); goto Error; }; } if (strcmp(Name, CheckName) != 0) {rc = 0; Fail("Invalid Name"); goto Error; }; } h = cmsOpenProfileFromFileTHR(DbgThread(), "namedcol.icc", "w"); if (h == NULL) return 0; if (!cmsWriteTag(h, cmsSigNamedColor2Tag, nc)) return 0; cmsCloseProfile(h); cmsFreeNamedColorList(nc); nc = NULL; h = cmsOpenProfileFromFileTHR(DbgThread(), "namedcol.icc", "r"); nc2 = cmsReadTag(h, cmsSigNamedColor2Tag); if (cmsNamedColorCount(nc2) != 4096) { rc = 0; Fail("Invalid count"); goto Error; } i = cmsNamedColorIndex(nc2, "#123"); if (i != 123) { rc = 0; Fail("Invalid index"); goto Error; } for (i=0; i < 4096; i++) { CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = (cmsUInt16Number) i; CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (4096 - i); sprintf(CheckName, "#%d", i); if (!cmsNamedColorInfo(nc2, i, Name, NULL, NULL, PCS, Colorant)) { rc = 0; goto Error; } for (j=0; j < 3; j++) { if (CheckPCS[j] != PCS[j]) { rc = 0; Fail("Invalid PCS"); goto Error; } } for (j=0; j < 4; j++) { if (CheckColorant[j] != Colorant[j]) { rc = 0; Fail("Invalid Colorant"); goto Error; }; } if (strcmp(Name, CheckName) != 0) {rc = 0; Fail("Invalid Name"); goto Error; }; } cmsCloseProfile(h); remove("namedcol.icc"); Error: if (nc != NULL) cmsFreeNamedColorList(nc); return rc; } // ---------------------------------------------------------------------------------------------------------- // Formatters static cmsBool FormatterFailed; static void CheckSingleFormatter16(cmsUInt32Number Type, const char* Text) { cmsUInt16Number Values[cmsMAXCHANNELS]; cmsUInt8Number Buffer[1024]; cmsFormatter f, b; cmsInt32Number i, j, nChannels, bytes; _cmsTRANSFORM info; // Already failed? if (FormatterFailed) return; memset(&info, 0, sizeof(info)); info.OutputFormat = info.InputFormat = Type; // Go forth and back f = _cmsGetFormatter(Type, cmsFormatterInput, CMS_PACK_FLAGS_16BITS); b = _cmsGetFormatter(Type, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS); if (f.Fmt16 == NULL || b.Fmt16 == NULL) { Fail("no formatter for %s", Text); FormatterFailed = TRUE; // Useful for debug f = _cmsGetFormatter(Type, cmsFormatterInput, CMS_PACK_FLAGS_16BITS); b = _cmsGetFormatter(Type, cmsFormatterOutput, CMS_PACK_FLAGS_16BITS); return; } nChannels = T_CHANNELS(Type); bytes = T_BYTES(Type); for (j=0; j < 5; j++) { for (i=0; i < nChannels; i++) { Values[i] = (cmsUInt16Number) (i+j); // For 8-bit if (bytes == 1) Values[i] <<= 8; } b.Fmt16(&info, Values, Buffer, 1); memset(Values, 0, sizeof(Values)); f.Fmt16(&info, Values, Buffer, 1); for (i=0; i < nChannels; i++) { if (bytes == 1) Values[i] >>= 8; if (Values[i] != i+j) { Fail("%s failed", Text); FormatterFailed = TRUE; // Useful for debug for (i=0; i < nChannels; i++) { Values[i] = (cmsUInt16Number) (i+j); // For 8-bit if (bytes == 1) Values[i] <<= 8; } b.Fmt16(&info, Values, Buffer, 1); f.Fmt16(&info, Values, Buffer, 1); return; } } } } #define C(a) CheckSingleFormatter16(a, #a) // Check all formatters static cmsInt32Number CheckFormatters16(void) { FormatterFailed = FALSE; C( TYPE_GRAY_8 ); C( TYPE_GRAY_8_REV ); C( TYPE_GRAY_16 ); C( TYPE_GRAY_16_REV ); C( TYPE_GRAY_16_SE ); C( TYPE_GRAYA_8 ); C( TYPE_GRAYA_16 ); C( TYPE_GRAYA_16_SE ); C( TYPE_GRAYA_8_PLANAR ); C( TYPE_GRAYA_16_PLANAR ); C( TYPE_RGB_8 ); C( TYPE_RGB_8_PLANAR ); C( TYPE_BGR_8 ); C( TYPE_BGR_8_PLANAR ); C( TYPE_RGB_16 ); C( TYPE_RGB_16_PLANAR ); C( TYPE_RGB_16_SE ); C( TYPE_BGR_16 ); C( TYPE_BGR_16_PLANAR ); C( TYPE_BGR_16_SE ); C( TYPE_RGBA_8 ); C( TYPE_RGBA_8_PLANAR ); C( TYPE_RGBA_16 ); C( TYPE_RGBA_16_PLANAR ); C( TYPE_RGBA_16_SE ); C( TYPE_ARGB_8 ); C( TYPE_ARGB_8_PLANAR ); C( TYPE_ARGB_16 ); C( TYPE_ABGR_8 ); C( TYPE_ABGR_8_PLANAR ); C( TYPE_ABGR_16 ); C( TYPE_ABGR_16_PLANAR ); C( TYPE_ABGR_16_SE ); C( TYPE_BGRA_8 ); C( TYPE_BGRA_8_PLANAR ); C( TYPE_BGRA_16 ); C( TYPE_BGRA_16_SE ); C( TYPE_CMY_8 ); C( TYPE_CMY_8_PLANAR ); C( TYPE_CMY_16 ); C( TYPE_CMY_16_PLANAR ); C( TYPE_CMY_16_SE ); C( TYPE_CMYK_8 ); C( TYPE_CMYKA_8 ); C( TYPE_CMYK_8_REV ); C( TYPE_YUVK_8 ); C( TYPE_CMYK_8_PLANAR ); C( TYPE_CMYK_16 ); C( TYPE_CMYK_16_REV ); C( TYPE_YUVK_16 ); C( TYPE_CMYK_16_PLANAR ); C( TYPE_CMYK_16_SE ); C( TYPE_KYMC_8 ); C( TYPE_KYMC_16 ); C( TYPE_KYMC_16_SE ); C( TYPE_KCMY_8 ); C( TYPE_KCMY_8_REV ); C( TYPE_KCMY_16 ); C( TYPE_KCMY_16_REV ); C( TYPE_KCMY_16_SE ); C( TYPE_CMYK5_8 ); C( TYPE_CMYK5_16 ); C( TYPE_CMYK5_16_SE ); C( TYPE_KYMC5_8 ); C( TYPE_KYMC5_16 ); C( TYPE_KYMC5_16_SE ); C( TYPE_CMYK6_8 ); C( TYPE_CMYK6_8_PLANAR ); C( TYPE_CMYK6_16 ); C( TYPE_CMYK6_16_PLANAR ); C( TYPE_CMYK6_16_SE ); C( TYPE_CMYK7_8 ); C( TYPE_CMYK7_16 ); C( TYPE_CMYK7_16_SE ); C( TYPE_KYMC7_8 ); C( TYPE_KYMC7_16 ); C( TYPE_KYMC7_16_SE ); C( TYPE_CMYK8_8 ); C( TYPE_CMYK8_16 ); C( TYPE_CMYK8_16_SE ); C( TYPE_KYMC8_8 ); C( TYPE_KYMC8_16 ); C( TYPE_KYMC8_16_SE ); C( TYPE_CMYK9_8 ); C( TYPE_CMYK9_16 ); C( TYPE_CMYK9_16_SE ); C( TYPE_KYMC9_8 ); C( TYPE_KYMC9_16 ); C( TYPE_KYMC9_16_SE ); C( TYPE_CMYK10_8 ); C( TYPE_CMYK10_16 ); C( TYPE_CMYK10_16_SE ); C( TYPE_KYMC10_8 ); C( TYPE_KYMC10_16 ); C( TYPE_KYMC10_16_SE ); C( TYPE_CMYK11_8 ); C( TYPE_CMYK11_16 ); C( TYPE_CMYK11_16_SE ); C( TYPE_KYMC11_8 ); C( TYPE_KYMC11_16 ); C( TYPE_KYMC11_16_SE ); C( TYPE_CMYK12_8 ); C( TYPE_CMYK12_16 ); C( TYPE_CMYK12_16_SE ); C( TYPE_KYMC12_8 ); C( TYPE_KYMC12_16 ); C( TYPE_KYMC12_16_SE ); C( TYPE_XYZ_16 ); C( TYPE_Lab_8 ); C( TYPE_ALab_8 ); C( TYPE_Lab_16 ); C( TYPE_Yxy_16 ); C( TYPE_YCbCr_8 ); C( TYPE_YCbCr_8_PLANAR ); C( TYPE_YCbCr_16 ); C( TYPE_YCbCr_16_PLANAR ); C( TYPE_YCbCr_16_SE ); C( TYPE_YUV_8 ); C( TYPE_YUV_8_PLANAR ); C( TYPE_YUV_16 ); C( TYPE_YUV_16_PLANAR ); C( TYPE_YUV_16_SE ); C( TYPE_HLS_8 ); C( TYPE_HLS_8_PLANAR ); C( TYPE_HLS_16 ); C( TYPE_HLS_16_PLANAR ); C( TYPE_HLS_16_SE ); C( TYPE_HSV_8 ); C( TYPE_HSV_8_PLANAR ); C( TYPE_HSV_16 ); C( TYPE_HSV_16_PLANAR ); C( TYPE_HSV_16_SE ); C( TYPE_XYZ_FLT ); C( TYPE_Lab_FLT ); C( TYPE_GRAY_FLT ); C( TYPE_RGB_FLT ); C( TYPE_BGR_FLT ); C( TYPE_CMYK_FLT ); C( TYPE_LabA_FLT ); C( TYPE_RGBA_FLT ); C( TYPE_ARGB_FLT ); C( TYPE_BGRA_FLT ); C( TYPE_ABGR_FLT ); C( TYPE_XYZ_DBL ); C( TYPE_Lab_DBL ); C( TYPE_GRAY_DBL ); C( TYPE_RGB_DBL ); C( TYPE_BGR_DBL ); C( TYPE_CMYK_DBL ); C( TYPE_LabV2_8 ); C( TYPE_ALabV2_8 ); C( TYPE_LabV2_16 ); C( TYPE_GRAY_HALF_FLT ); C( TYPE_RGB_HALF_FLT ); C( TYPE_CMYK_HALF_FLT ); C( TYPE_RGBA_HALF_FLT ); C( TYPE_RGBA_HALF_FLT ); C( TYPE_ARGB_HALF_FLT ); C( TYPE_BGR_HALF_FLT ); C( TYPE_BGRA_HALF_FLT ); C( TYPE_ABGR_HALF_FLT ); return FormatterFailed == 0 ? 1 : 0; } #undef C static void CheckSingleFormatterFloat(cmsUInt32Number Type, const char* Text) { cmsFloat32Number Values[cmsMAXCHANNELS]; cmsUInt8Number Buffer[1024]; cmsFormatter f, b; cmsInt32Number i, j, nChannels; _cmsTRANSFORM info; // Already failed? if (FormatterFailed) return; memset(&info, 0, sizeof(info)); info.OutputFormat = info.InputFormat = Type; // Go forth and back f = _cmsGetFormatter(Type, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT); b = _cmsGetFormatter(Type, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT); if (f.FmtFloat == NULL || b.FmtFloat == NULL) { Fail("no formatter for %s", Text); FormatterFailed = TRUE; // Useful for debug f = _cmsGetFormatter(Type, cmsFormatterInput, CMS_PACK_FLAGS_FLOAT); b = _cmsGetFormatter(Type, cmsFormatterOutput, CMS_PACK_FLAGS_FLOAT); return; } nChannels = T_CHANNELS(Type); for (j=0; j < 5; j++) { for (i=0; i < nChannels; i++) { Values[i] = (cmsFloat32Number) (i+j); } b.FmtFloat(&info, Values, Buffer, 1); memset(Values, 0, sizeof(Values)); f.FmtFloat(&info, Values, Buffer, 1); for (i=0; i < nChannels; i++) { cmsFloat64Number delta = fabs(Values[i] - ( i+j)); if (delta > 0.000000001) { Fail("%s failed", Text); FormatterFailed = TRUE; // Useful for debug for (i=0; i < nChannels; i++) { Values[i] = (cmsFloat32Number) (i+j); } b.FmtFloat(&info, Values, Buffer, 1); f.FmtFloat(&info, Values, Buffer, 1); return; } } } } #define C(a) CheckSingleFormatterFloat(a, #a) static cmsInt32Number CheckFormattersFloat(void) { FormatterFailed = FALSE; C( TYPE_XYZ_FLT ); C( TYPE_Lab_FLT ); C( TYPE_GRAY_FLT ); C( TYPE_RGB_FLT ); C( TYPE_BGR_FLT ); C( TYPE_CMYK_FLT ); C( TYPE_LabA_FLT ); C( TYPE_RGBA_FLT ); C( TYPE_ARGB_FLT ); C( TYPE_BGRA_FLT ); C( TYPE_ABGR_FLT ); C( TYPE_XYZ_DBL ); C( TYPE_Lab_DBL ); C( TYPE_GRAY_DBL ); C( TYPE_RGB_DBL ); C( TYPE_BGR_DBL ); C( TYPE_CMYK_DBL ); C( TYPE_GRAY_HALF_FLT ); C( TYPE_RGB_HALF_FLT ); C( TYPE_CMYK_HALF_FLT ); C( TYPE_RGBA_HALF_FLT ); C( TYPE_RGBA_HALF_FLT ); C( TYPE_ARGB_HALF_FLT ); C( TYPE_BGR_HALF_FLT ); C( TYPE_BGRA_HALF_FLT ); C( TYPE_ABGR_HALF_FLT ); return FormatterFailed == 0 ? 1 : 0; } #undef C #ifndef CMS_NO_HALF_SUPPORT // Check half float #define my_isfinite(x) ((x) != (x)) static cmsInt32Number CheckFormattersHalf(void) { int i, j; for (i=0; i < 0xffff; i++) { cmsFloat32Number f = _cmsHalf2Float((cmsUInt16Number) i); if (!my_isfinite(f)) { j = _cmsFloat2Half(f); if (i != j) { Fail("%d != %d in Half float support!\n", i, j); return 0; } } } return 1; } #endif static cmsInt32Number CheckOneRGB(cmsHTRANSFORM xform, cmsUInt16Number R, cmsUInt16Number G, cmsUInt16Number B, cmsUInt16Number Ro, cmsUInt16Number Go, cmsUInt16Number Bo) { cmsUInt16Number RGB[3]; cmsUInt16Number Out[3]; RGB[0] = R; RGB[1] = G; RGB[2] = B; cmsDoTransform(xform, RGB, Out, 1); return IsGoodWord("R", Ro , Out[0]) && IsGoodWord("G", Go , Out[1]) && IsGoodWord("B", Bo , Out[2]); } // Check known values going from sRGB to XYZ static cmsInt32Number CheckOneRGB_double(cmsHTRANSFORM xform, cmsFloat64Number R, cmsFloat64Number G, cmsFloat64Number B, cmsFloat64Number Ro, cmsFloat64Number Go, cmsFloat64Number Bo) { cmsFloat64Number RGB[3]; cmsFloat64Number Out[3]; RGB[0] = R; RGB[1] = G; RGB[2] = B; cmsDoTransform(xform, RGB, Out, 1); return IsGoodVal("R", Ro , Out[0], 0.01) && IsGoodVal("G", Go , Out[1], 0.01) && IsGoodVal("B", Bo , Out[2], 0.01); } static cmsInt32Number CheckChangeBufferFormat(void) { cmsHPROFILE hsRGB = cmsCreate_sRGBProfile(); cmsHTRANSFORM xform; xform = cmsCreateTransform(hsRGB, TYPE_RGB_16, hsRGB, TYPE_RGB_16, INTENT_PERCEPTUAL, 0); cmsCloseProfile(hsRGB); if (xform == NULL) return 0; if (!CheckOneRGB(xform, 0, 0, 0, 0, 0, 0)) return 0; if (!CheckOneRGB(xform, 120, 0, 0, 120, 0, 0)) return 0; if (!CheckOneRGB(xform, 0, 222, 255, 0, 222, 255)) return 0; if (!cmsChangeBuffersFormat(xform, TYPE_BGR_16, TYPE_RGB_16)) return 0; if (!CheckOneRGB(xform, 0, 0, 123, 123, 0, 0)) return 0; if (!CheckOneRGB(xform, 154, 234, 0, 0, 234, 154)) return 0; if (!cmsChangeBuffersFormat(xform, TYPE_RGB_DBL, TYPE_RGB_DBL)) return 0; if (!CheckOneRGB_double(xform, 0.20, 0, 0, 0.20, 0, 0)) return 0; if (!CheckOneRGB_double(xform, 0, 0.9, 1, 0, 0.9, 1)) return 0; cmsDeleteTransform(xform); return 1; } // Write tag testbed ---------------------------------------------------------------------------------------- static cmsInt32Number CheckXYZ(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsCIEXYZ XYZ, *Pt; switch (Pass) { case 1: XYZ.X = 1.0; XYZ.Y = 1.1; XYZ.Z = 1.2; return cmsWriteTag(hProfile, tag, &XYZ); case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; return IsGoodFixed15_16("X", 1.0, Pt ->X) && IsGoodFixed15_16("Y", 1.1, Pt->Y) && IsGoodFixed15_16("Z", 1.2, Pt -> Z); default: return 0; } } static cmsInt32Number CheckGamma(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsToneCurve *g, *Pt; cmsInt32Number rc; switch (Pass) { case 1: g = cmsBuildGamma(DbgThread(), 1.0); rc = cmsWriteTag(hProfile, tag, g); cmsFreeToneCurve(g); return rc; case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; return cmsIsToneCurveLinear(Pt); default: return 0; } } static cmsInt32Number CheckText(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsMLU *m, *Pt; cmsInt32Number rc; char Buffer[256]; switch (Pass) { case 1: m = cmsMLUalloc(DbgThread(), 0); cmsMLUsetASCII(m, cmsNoLanguage, cmsNoCountry, "Test test"); rc = cmsWriteTag(hProfile, tag, m); cmsMLUfree(m); return rc; case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; cmsMLUgetASCII(Pt, cmsNoLanguage, cmsNoCountry, Buffer, 256); return strcmp(Buffer, "Test test") == 0; default: return 0; } } static cmsInt32Number CheckData(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsICCData *Pt; cmsICCData d = { 1, 0, { '?' }}; cmsInt32Number rc; switch (Pass) { case 1: rc = cmsWriteTag(hProfile, tag, &d); return rc; case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; return (Pt ->data[0] == '?') && (Pt ->flag == 0) && (Pt ->len == 1); default: return 0; } } static cmsInt32Number CheckSignature(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsTagSignature *Pt, Holder; switch (Pass) { case 1: Holder = cmsSigPerceptualReferenceMediumGamut; return cmsWriteTag(hProfile, tag, &Holder); case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; return *Pt == cmsSigPerceptualReferenceMediumGamut; default: return 0; } } static cmsInt32Number CheckDateTime(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { struct tm *Pt, Holder; switch (Pass) { case 1: Holder.tm_hour = 1; Holder.tm_min = 2; Holder.tm_sec = 3; Holder.tm_mday = 4; Holder.tm_mon = 5; Holder.tm_year = 2009 - 1900; return cmsWriteTag(hProfile, tag, &Holder); case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; return (Pt ->tm_hour == 1 && Pt ->tm_min == 2 && Pt ->tm_sec == 3 && Pt ->tm_mday == 4 && Pt ->tm_mon == 5 && Pt ->tm_year == 2009 - 1900); default: return 0; } } static cmsInt32Number CheckNamedColor(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag, cmsInt32Number max_check, cmsBool colorant_check) { cmsNAMEDCOLORLIST* nc; cmsInt32Number i, j, rc; char Name[255]; cmsUInt16Number PCS[3]; cmsUInt16Number Colorant[cmsMAXCHANNELS]; char CheckName[255]; cmsUInt16Number CheckPCS[3]; cmsUInt16Number CheckColorant[cmsMAXCHANNELS]; switch (Pass) { case 1: nc = cmsAllocNamedColorList(DbgThread(), 0, 4, "prefix", "suffix"); if (nc == NULL) return 0; for (i=0; i < max_check; i++) { PCS[0] = PCS[1] = PCS[2] = (cmsUInt16Number) i; Colorant[0] = Colorant[1] = Colorant[2] = Colorant[3] = (cmsUInt16Number) (max_check - i); sprintf(Name, "#%d", i); if (!cmsAppendNamedColor(nc, Name, PCS, Colorant)) { Fail("Couldn't append named color"); return 0; } } rc = cmsWriteTag(hProfile, tag, nc); cmsFreeNamedColorList(nc); return rc; case 2: nc = cmsReadTag(hProfile, tag); if (nc == NULL) return 0; for (i=0; i < max_check; i++) { CheckPCS[0] = CheckPCS[1] = CheckPCS[2] = (cmsUInt16Number) i; CheckColorant[0] = CheckColorant[1] = CheckColorant[2] = CheckColorant[3] = (cmsUInt16Number) (max_check - i); sprintf(CheckName, "#%d", i); if (!cmsNamedColorInfo(nc, i, Name, NULL, NULL, PCS, Colorant)) { Fail("Invalid string"); return 0; } for (j=0; j < 3; j++) { if (CheckPCS[j] != PCS[j]) { Fail("Invalid PCS"); return 0; } } // This is only used on named color list if (colorant_check) { for (j=0; j < 4; j++) { if (CheckColorant[j] != Colorant[j]) { Fail("Invalid Colorant"); return 0; }; } } if (strcmp(Name, CheckName) != 0) { Fail("Invalid Name"); return 0; }; } return 1; default: return 0; } } static cmsInt32Number CheckLUT(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsPipeline* Lut, *Pt; cmsInt32Number rc; switch (Pass) { case 1: Lut = cmsPipelineAlloc(DbgThread(), 3, 3); if (Lut == NULL) return 0; // Create an identity LUT cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageAllocIdentityCurves(DbgThread(), 3)); cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocIdentityCLut(DbgThread(), 3)); cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocIdentityCurves(DbgThread(), 3)); rc = cmsWriteTag(hProfile, tag, Lut); cmsPipelineFree(Lut); return rc; case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; // Transform values, check for identity return Check16LUT(Pt); default: return 0; } } static cmsInt32Number CheckCHAD(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsFloat64Number *Pt; cmsFloat64Number CHAD[] = { 0, .1, .2, .3, .4, .5, .6, .7, .8 }; cmsInt32Number i; switch (Pass) { case 1: return cmsWriteTag(hProfile, tag, CHAD); case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; for (i=0; i < 9; i++) { if (!IsGoodFixed15_16("CHAD", Pt[i], CHAD[i])) return 0; } return 1; default: return 0; } } static cmsInt32Number CheckChromaticity(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsCIExyYTRIPLE *Pt, c = { {0, .1, 1 }, { .3, .4, 1 }, { .6, .7, 1 }}; switch (Pass) { case 1: return cmsWriteTag(hProfile, tag, &c); case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; if (!IsGoodFixed15_16("xyY", Pt ->Red.x, c.Red.x)) return 0; if (!IsGoodFixed15_16("xyY", Pt ->Red.y, c.Red.y)) return 0; if (!IsGoodFixed15_16("xyY", Pt ->Green.x, c.Green.x)) return 0; if (!IsGoodFixed15_16("xyY", Pt ->Green.y, c.Green.y)) return 0; if (!IsGoodFixed15_16("xyY", Pt ->Blue.x, c.Blue.x)) return 0; if (!IsGoodFixed15_16("xyY", Pt ->Blue.y, c.Blue.y)) return 0; return 1; default: return 0; } } static cmsInt32Number CheckColorantOrder(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsUInt8Number *Pt, c[cmsMAXCHANNELS]; cmsInt32Number i; switch (Pass) { case 1: for (i=0; i < cmsMAXCHANNELS; i++) c[i] = (cmsUInt8Number) (cmsMAXCHANNELS - i - 1); return cmsWriteTag(hProfile, tag, c); case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; for (i=0; i < cmsMAXCHANNELS; i++) { if (Pt[i] != ( cmsMAXCHANNELS - i - 1 )) return 0; } return 1; default: return 0; } } static cmsInt32Number CheckMeasurement(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsICCMeasurementConditions *Pt, m; switch (Pass) { case 1: m.Backing.X = 0.1; m.Backing.Y = 0.2; m.Backing.Z = 0.3; m.Flare = 1.0; m.Geometry = 1; m.IlluminantType = cmsILLUMINANT_TYPE_D50; m.Observer = 1; return cmsWriteTag(hProfile, tag, &m); case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; if (!IsGoodFixed15_16("Backing", Pt ->Backing.X, 0.1)) return 0; if (!IsGoodFixed15_16("Backing", Pt ->Backing.Y, 0.2)) return 0; if (!IsGoodFixed15_16("Backing", Pt ->Backing.Z, 0.3)) return 0; if (!IsGoodFixed15_16("Flare", Pt ->Flare, 1.0)) return 0; if (Pt ->Geometry != 1) return 0; if (Pt ->IlluminantType != cmsILLUMINANT_TYPE_D50) return 0; if (Pt ->Observer != 1) return 0; return 1; default: return 0; } } static cmsInt32Number CheckUcrBg(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsUcrBg *Pt, m; cmsInt32Number rc; char Buffer[256]; switch (Pass) { case 1: m.Ucr = cmsBuildGamma(DbgThread(), 2.4); m.Bg = cmsBuildGamma(DbgThread(), -2.2); m.Desc = cmsMLUalloc(DbgThread(), 1); cmsMLUsetASCII(m.Desc, cmsNoLanguage, cmsNoCountry, "test UCR/BG"); rc = cmsWriteTag(hProfile, tag, &m); cmsMLUfree(m.Desc); cmsFreeToneCurve(m.Bg); cmsFreeToneCurve(m.Ucr); return rc; case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; cmsMLUgetASCII(Pt ->Desc, cmsNoLanguage, cmsNoCountry, Buffer, 256); if (strcmp(Buffer, "test UCR/BG") != 0) return 0; return 1; default: return 0; } } static cmsInt32Number CheckCRDinfo(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsMLU *mlu; char Buffer[256]; cmsInt32Number rc; switch (Pass) { case 1: mlu = cmsMLUalloc(DbgThread(), 5); cmsMLUsetWide(mlu, "PS", "nm", L"test postscript"); cmsMLUsetWide(mlu, "PS", "#0", L"perceptual"); cmsMLUsetWide(mlu, "PS", "#1", L"relative_colorimetric"); cmsMLUsetWide(mlu, "PS", "#2", L"saturation"); cmsMLUsetWide(mlu, "PS", "#3", L"absolute_colorimetric"); rc = cmsWriteTag(hProfile, tag, mlu); cmsMLUfree(mlu); return rc; case 2: mlu = (cmsMLU*) cmsReadTag(hProfile, tag); if (mlu == NULL) return 0; cmsMLUgetASCII(mlu, "PS", "nm", Buffer, 256); if (strcmp(Buffer, "test postscript") != 0) return 0; cmsMLUgetASCII(mlu, "PS", "#0", Buffer, 256); if (strcmp(Buffer, "perceptual") != 0) return 0; cmsMLUgetASCII(mlu, "PS", "#1", Buffer, 256); if (strcmp(Buffer, "relative_colorimetric") != 0) return 0; cmsMLUgetASCII(mlu, "PS", "#2", Buffer, 256); if (strcmp(Buffer, "saturation") != 0) return 0; cmsMLUgetASCII(mlu, "PS", "#3", Buffer, 256); if (strcmp(Buffer, "absolute_colorimetric") != 0) return 0; return 1; default: return 0; } } static cmsToneCurve *CreateSegmentedCurve(void) { cmsCurveSegment Seg[3]; cmsFloat32Number Sampled[2] = { 0, 1}; Seg[0].Type = 6; Seg[0].Params[0] = 1; Seg[0].Params[1] = 0; Seg[0].Params[2] = 0; Seg[0].Params[3] = 0; Seg[0].x0 = -1E22F; Seg[0].x1 = 0; Seg[1].Type = 0; Seg[1].nGridPoints = 2; Seg[1].SampledPoints = Sampled; Seg[1].x0 = 0; Seg[1].x1 = 1; Seg[2].Type = 6; Seg[2].Params[0] = 1; Seg[2].Params[1] = 0; Seg[2].Params[2] = 0; Seg[2].Params[3] = 0; Seg[2].x0 = 1; Seg[2].x1 = 1E22F; return cmsBuildSegmentedToneCurve(DbgThread(), 3, Seg); } static cmsInt32Number CheckMPE(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsPipeline* Lut, *Pt; cmsToneCurve* G[3]; cmsInt32Number rc; switch (Pass) { case 1: Lut = cmsPipelineAlloc(DbgThread(), 3, 3); cmsPipelineInsertStage(Lut, cmsAT_BEGIN, _cmsStageAllocLabV2ToV4(DbgThread())); cmsPipelineInsertStage(Lut, cmsAT_END, _cmsStageAllocLabV4ToV2(DbgThread())); AddIdentityCLUTfloat(Lut); G[0] = G[1] = G[2] = CreateSegmentedCurve(); cmsPipelineInsertStage(Lut, cmsAT_END, cmsStageAllocToneCurves(DbgThread(), 3, G)); cmsFreeToneCurve(G[0]); rc = cmsWriteTag(hProfile, tag, Lut); cmsPipelineFree(Lut); return rc; case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; return CheckFloatLUT(Pt); default: return 0; } } static cmsInt32Number CheckScreening(cmsInt32Number Pass, cmsHPROFILE hProfile, cmsTagSignature tag) { cmsScreening *Pt, sc; cmsInt32Number rc; switch (Pass) { case 1: sc.Flag = 0; sc.nChannels = 1; sc.Channels[0].Frequency = 2.0; sc.Channels[0].ScreenAngle = 3.0; sc.Channels[0].SpotShape = cmsSPOT_ELLIPSE; rc = cmsWriteTag(hProfile, tag, &sc); return rc; case 2: Pt = cmsReadTag(hProfile, tag); if (Pt == NULL) return 0; if (Pt ->nChannels != 1) return 0; if (Pt ->Flag != 0) return 0; if (!IsGoodFixed15_16("Freq", Pt ->Channels[0].Frequency, 2.0)) return 0; if (!IsGoodFixed15_16("Angle", Pt ->Channels[0].ScreenAngle, 3.0)) return 0; if (Pt ->Channels[0].SpotShape != cmsSPOT_ELLIPSE) return 0; return 1; default: return 0; } } static cmsBool CheckOneStr(cmsMLU* mlu, cmsInt32Number n) { char Buffer[256], Buffer2[256]; cmsMLUgetASCII(mlu, "en", "US", Buffer, 255); sprintf(Buffer2, "Hello, world %d", n); if (strcmp(Buffer, Buffer2) != 0) return FALSE; cmsMLUgetASCII(mlu, "es", "ES", Buffer, 255); sprintf(Buffer2, "Hola, mundo %d", n); if (strcmp(Buffer, Buffer2) != 0) return FALSE; return TRUE; } static void SetOneStr(cmsMLU** mlu, wchar_t* s1, wchar_t* s2) { *mlu = cmsMLUalloc(DbgThread(), 0); cmsMLUsetWide(*mlu, "en", "US", s1); cmsMLUsetWide(*mlu, "es", "ES", s2); } static cmsInt32Number CheckProfileSequenceTag(cmsInt32Number Pass, cmsHPROFILE hProfile) { cmsSEQ* s; cmsInt32Number i; switch (Pass) { case 1: s = cmsAllocProfileSequenceDescription(DbgThread(), 3); if (s == NULL) return 0; SetOneStr(&s -> seq[0].Manufacturer, L"Hello, world 0", L"Hola, mundo 0"); SetOneStr(&s -> seq[0].Model, L"Hello, world 0", L"Hola, mundo 0"); SetOneStr(&s -> seq[1].Manufacturer, L"Hello, world 1", L"Hola, mundo 1"); SetOneStr(&s -> seq[1].Model, L"Hello, world 1", L"Hola, mundo 1"); SetOneStr(&s -> seq[2].Manufacturer, L"Hello, world 2", L"Hola, mundo 2"); SetOneStr(&s -> seq[2].Model, L"Hello, world 2", L"Hola, mundo 2"); #ifdef CMS_DONT_USE_INT64 s ->seq[0].attributes[0] = cmsTransparency|cmsMatte; s ->seq[0].attributes[1] = 0; #else s ->seq[0].attributes = cmsTransparency|cmsMatte; #endif #ifdef CMS_DONT_USE_INT64 s ->seq[1].attributes[0] = cmsReflective|cmsMatte; s ->seq[1].attributes[1] = 0; #else s ->seq[1].attributes = cmsReflective|cmsMatte; #endif #ifdef CMS_DONT_USE_INT64 s ->seq[2].attributes[0] = cmsTransparency|cmsGlossy; s ->seq[2].attributes[1] = 0; #else s ->seq[2].attributes = cmsTransparency|cmsGlossy; #endif if (!cmsWriteTag(hProfile, cmsSigProfileSequenceDescTag, s)) return 0; cmsFreeProfileSequenceDescription(s); return 1; case 2: s = cmsReadTag(hProfile, cmsSigProfileSequenceDescTag); if (s == NULL) return 0; if (s ->n != 3) return 0; #ifdef CMS_DONT_USE_INT64 if (s ->seq[0].attributes[0] != (cmsTransparency|cmsMatte)) return 0; if (s ->seq[0].attributes[1] != 0) return 0; #else if (s ->seq[0].attributes != (cmsTransparency|cmsMatte)) return 0; #endif #ifdef CMS_DONT_USE_INT64 if (s ->seq[1].attributes[0] != (cmsReflective|cmsMatte)) return 0; if (s ->seq[1].attributes[1] != 0) return 0; #else if (s ->seq[1].attributes != (cmsReflective|cmsMatte)) return 0; #endif #ifdef CMS_DONT_USE_INT64 if (s ->seq[2].attributes[0] != (cmsTransparency|cmsGlossy)) return 0; if (s ->seq[2].attributes[1] != 0) return 0; #else if (s ->seq[2].attributes != (cmsTransparency|cmsGlossy)) return 0; #endif // Check MLU for (i=0; i < 3; i++) { if (!CheckOneStr(s -> seq[i].Manufacturer, i)) return 0; if (!CheckOneStr(s -> seq[i].Model, i)) return 0; } return 1; default: return 0; } } static cmsInt32Number CheckProfileSequenceIDTag(cmsInt32Number Pass, cmsHPROFILE hProfile) { cmsSEQ* s; cmsInt32Number i; switch (Pass) { case 1: s = cmsAllocProfileSequenceDescription(DbgThread(), 3); if (s == NULL) return 0; memcpy(s ->seq[0].ProfileID.ID8, "0123456789ABCDEF", 16); memcpy(s ->seq[1].ProfileID.ID8, "1111111111111111", 16); memcpy(s ->seq[2].ProfileID.ID8, "2222222222222222", 16); SetOneStr(&s -> seq[0].Description, L"Hello, world 0", L"Hola, mundo 0"); SetOneStr(&s -> seq[1].Description, L"Hello, world 1", L"Hola, mundo 1"); SetOneStr(&s -> seq[2].Description, L"Hello, world 2", L"Hola, mundo 2"); if (!cmsWriteTag(hProfile, cmsSigProfileSequenceIdTag, s)) return 0; cmsFreeProfileSequenceDescription(s); return 1; case 2: s = cmsReadTag(hProfile, cmsSigProfileSequenceIdTag); if (s == NULL) return 0; if (s ->n != 3) return 0; if (memcmp(s ->seq[0].ProfileID.ID8, "0123456789ABCDEF", 16) != 0) return 0; if (memcmp(s ->seq[1].ProfileID.ID8, "1111111111111111", 16) != 0) return 0; if (memcmp(s ->seq[2].ProfileID.ID8, "2222222222222222", 16) != 0) return 0; for (i=0; i < 3; i++) { if (!CheckOneStr(s -> seq[i].Description, i)) return 0; } return 1; default: return 0; } } static cmsInt32Number CheckICCViewingConditions(cmsInt32Number Pass, cmsHPROFILE hProfile) { cmsICCViewingConditions* v; cmsICCViewingConditions s; switch (Pass) { case 1: s.IlluminantType = 1; s.IlluminantXYZ.X = 0.1; s.IlluminantXYZ.Y = 0.2; s.IlluminantXYZ.Z = 0.3; s.SurroundXYZ.X = 0.4; s.SurroundXYZ.Y = 0.5; s.SurroundXYZ.Z = 0.6; if (!cmsWriteTag(hProfile, cmsSigViewingConditionsTag, &s)) return 0; return 1; case 2: v = cmsReadTag(hProfile, cmsSigViewingConditionsTag); if (v == NULL) return 0; if (v ->IlluminantType != 1) return 0; if (!IsGoodVal("IlluminantXYZ.X", v ->IlluminantXYZ.X, 0.1, 0.001)) return 0; if (!IsGoodVal("IlluminantXYZ.Y", v ->IlluminantXYZ.Y, 0.2, 0.001)) return 0; if (!IsGoodVal("IlluminantXYZ.Z", v ->IlluminantXYZ.Z, 0.3, 0.001)) return 0; if (!IsGoodVal("SurroundXYZ.X", v ->SurroundXYZ.X, 0.4, 0.001)) return 0; if (!IsGoodVal("SurroundXYZ.Y", v ->SurroundXYZ.Y, 0.5, 0.001)) return 0; if (!IsGoodVal("SurroundXYZ.Z", v ->SurroundXYZ.Z, 0.6, 0.001)) return 0; return 1; default: return 0; } } static cmsInt32Number CheckVCGT(cmsInt32Number Pass, cmsHPROFILE hProfile) { cmsToneCurve* Curves[3]; cmsToneCurve** PtrCurve; switch (Pass) { case 1: Curves[0] = cmsBuildGamma(DbgThread(), 1.1); Curves[1] = cmsBuildGamma(DbgThread(), 2.2); Curves[2] = cmsBuildGamma(DbgThread(), 3.4); if (!cmsWriteTag(hProfile, cmsSigVcgtTag, Curves)) return 0; cmsFreeToneCurveTriple(Curves); return 1; case 2: PtrCurve = cmsReadTag(hProfile, cmsSigVcgtTag); if (PtrCurve == NULL) return 0; if (!IsGoodVal("VCGT R", cmsEstimateGamma(PtrCurve[0], 0.01), 1.1, 0.001)) return 0; if (!IsGoodVal("VCGT G", cmsEstimateGamma(PtrCurve[1], 0.01), 2.2, 0.001)) return 0; if (!IsGoodVal("VCGT B", cmsEstimateGamma(PtrCurve[2], 0.01), 3.4, 0.001)) return 0; return 1; default:; } return 0; } // Only one of the two following may be used, as they share the same tag static cmsInt32Number CheckDictionary16(cmsInt32Number Pass, cmsHPROFILE hProfile) { cmsHANDLE hDict; const cmsDICTentry* e; switch (Pass) { case 1: hDict = cmsDictAlloc(DbgThread()); cmsDictAddEntry(hDict, L"Name0", NULL, NULL, NULL); cmsDictAddEntry(hDict, L"Name1", L"", NULL, NULL); cmsDictAddEntry(hDict, L"Name", L"String", NULL, NULL); cmsDictAddEntry(hDict, L"Name2", L"12", NULL, NULL); if (!cmsWriteTag(hProfile, cmsSigMetaTag, hDict)) return 0; cmsDictFree(hDict); return 1; case 2: hDict = cmsReadTag(hProfile, cmsSigMetaTag); if (hDict == NULL) return 0; e = cmsDictGetEntryList(hDict); if (memcmp(e ->Name, L"Name2", sizeof(wchar_t) * 5) != 0) return 0; if (memcmp(e ->Value, L"12", sizeof(wchar_t) * 2) != 0) return 0; e = cmsDictNextEntry(e); if (memcmp(e ->Name, L"Name", sizeof(wchar_t) * 4) != 0) return 0; if (memcmp(e ->Value, L"String", sizeof(wchar_t) * 5) != 0) return 0; e = cmsDictNextEntry(e); if (memcmp(e ->Name, L"Name1", sizeof(wchar_t) *5) != 0) return 0; if (e ->Value == NULL) return 0; if (*e->Value != 0) return 0; e = cmsDictNextEntry(e); if (memcmp(e ->Name, L"Name0", sizeof(wchar_t) * 5) != 0) return 0; if (e ->Value != NULL) return 0; return 1; default:; } return 0; } static cmsInt32Number CheckDictionary24(cmsInt32Number Pass, cmsHPROFILE hProfile) { cmsHANDLE hDict; const cmsDICTentry* e; cmsMLU* DisplayName; char Buffer[256]; cmsInt32Number rc = 1; switch (Pass) { case 1: hDict = cmsDictAlloc(DbgThread()); DisplayName = cmsMLUalloc(DbgThread(), 0); cmsMLUsetWide(DisplayName, "en", "US", L"Hello, world"); cmsMLUsetWide(DisplayName, "es", "ES", L"Hola, mundo"); cmsMLUsetWide(DisplayName, "fr", "FR", L"Bonjour, le monde"); cmsMLUsetWide(DisplayName, "ca", "CA", L"Hola, mon"); cmsDictAddEntry(hDict, L"Name", L"String", DisplayName, NULL); cmsMLUfree(DisplayName); cmsDictAddEntry(hDict, L"Name2", L"12", NULL, NULL); if (!cmsWriteTag(hProfile, cmsSigMetaTag, hDict)) return 0; cmsDictFree(hDict); return 1; case 2: hDict = cmsReadTag(hProfile, cmsSigMetaTag); if (hDict == NULL) return 0; e = cmsDictGetEntryList(hDict); if (memcmp(e ->Name, L"Name2", sizeof(wchar_t) * 5) != 0) return 0; if (memcmp(e ->Value, L"12", sizeof(wchar_t) * 2) != 0) return 0; e = cmsDictNextEntry(e); if (memcmp(e ->Name, L"Name", sizeof(wchar_t) * 4) != 0) return 0; if (memcmp(e ->Value, L"String", sizeof(wchar_t) * 5) != 0) return 0; cmsMLUgetASCII(e->DisplayName, "en", "US", Buffer, 256); if (strcmp(Buffer, "Hello, world") != 0) rc = 0; cmsMLUgetASCII(e->DisplayName, "es", "ES", Buffer, 256); if (strcmp(Buffer, "Hola, mundo") != 0) rc = 0; cmsMLUgetASCII(e->DisplayName, "fr", "FR", Buffer, 256); if (strcmp(Buffer, "Bonjour, le monde") != 0) rc = 0; cmsMLUgetASCII(e->DisplayName, "ca", "CA", Buffer, 256); if (strcmp(Buffer, "Hola, mon") != 0) rc = 0; if (rc == 0) Fail("Unexpected string '%s'", Buffer); return 1; default:; } return 0; } static cmsInt32Number CheckRAWtags(cmsInt32Number Pass, cmsHPROFILE hProfile) { char Buffer[7]; switch (Pass) { case 1: return cmsWriteRawTag(hProfile, 0x31323334, "data123", 7); case 2: if (!cmsReadRawTag(hProfile, 0x31323334, Buffer, 7)) return 0; if (strncmp(Buffer, "data123", 7) != 0) return 0; return 1; default: return 0; } } // This is a very big test that checks every single tag static cmsInt32Number CheckProfileCreation(void) { cmsHPROFILE h; cmsInt32Number Pass; h = cmsCreateProfilePlaceholder(DbgThread()); if (h == NULL) return 0; cmsSetProfileVersion(h, 4.3); if (cmsGetTagCount(h) != 0) { Fail("Empty profile with nonzero number of tags"); return 0; } if (cmsIsTag(h, cmsSigAToB0Tag)) { Fail("Found a tag in an empty profile"); return 0; } cmsSetColorSpace(h, cmsSigRgbData); if (cmsGetColorSpace(h) != cmsSigRgbData) { Fail("Unable to set colorspace"); return 0; } cmsSetPCS(h, cmsSigLabData); if (cmsGetPCS(h) != cmsSigLabData) { Fail("Unable to set colorspace"); return 0; } cmsSetDeviceClass(h, cmsSigDisplayClass); if (cmsGetDeviceClass(h) != cmsSigDisplayClass) { Fail("Unable to set deviceclass"); return 0; } cmsSetHeaderRenderingIntent(h, INTENT_SATURATION); if (cmsGetHeaderRenderingIntent(h) != INTENT_SATURATION) { Fail("Unable to set rendering intent"); return 0; } for (Pass = 1; Pass <= 2; Pass++) { SubTest("Tags holding XYZ"); if (!CheckXYZ(Pass, h, cmsSigBlueColorantTag)) return 0; if (!CheckXYZ(Pass, h, cmsSigGreenColorantTag)) return 0; if (!CheckXYZ(Pass, h, cmsSigRedColorantTag)) return 0; if (!CheckXYZ(Pass, h, cmsSigMediaBlackPointTag)) return 0; if (!CheckXYZ(Pass, h, cmsSigMediaWhitePointTag)) return 0; if (!CheckXYZ(Pass, h, cmsSigLuminanceTag)) return 0; SubTest("Tags holding curves"); if (!CheckGamma(Pass, h, cmsSigBlueTRCTag)) return 0; if (!CheckGamma(Pass, h, cmsSigGrayTRCTag)) return 0; if (!CheckGamma(Pass, h, cmsSigGreenTRCTag)) return 0; if (!CheckGamma(Pass, h, cmsSigRedTRCTag)) return 0; SubTest("Tags holding text"); if (!CheckText(Pass, h, cmsSigCharTargetTag)) return 0; if (!CheckText(Pass, h, cmsSigCopyrightTag)) return 0; if (!CheckText(Pass, h, cmsSigProfileDescriptionTag)) return 0; if (!CheckText(Pass, h, cmsSigDeviceMfgDescTag)) return 0; if (!CheckText(Pass, h, cmsSigDeviceModelDescTag)) return 0; if (!CheckText(Pass, h, cmsSigViewingCondDescTag)) return 0; if (!CheckText(Pass, h, cmsSigScreeningDescTag)) return 0; SubTest("Tags holding cmsICCData"); if (!CheckData(Pass, h, cmsSigPs2CRD0Tag)) return 0; if (!CheckData(Pass, h, cmsSigPs2CRD1Tag)) return 0; if (!CheckData(Pass, h, cmsSigPs2CRD2Tag)) return 0; if (!CheckData(Pass, h, cmsSigPs2CRD3Tag)) return 0; if (!CheckData(Pass, h, cmsSigPs2CSATag)) return 0; if (!CheckData(Pass, h, cmsSigPs2RenderingIntentTag)) return 0; SubTest("Tags holding signatures"); if (!CheckSignature(Pass, h, cmsSigColorimetricIntentImageStateTag)) return 0; if (!CheckSignature(Pass, h, cmsSigPerceptualRenderingIntentGamutTag)) return 0; if (!CheckSignature(Pass, h, cmsSigSaturationRenderingIntentGamutTag)) return 0; if (!CheckSignature(Pass, h, cmsSigTechnologyTag)) return 0; SubTest("Tags holding date_time"); if (!CheckDateTime(Pass, h, cmsSigCalibrationDateTimeTag)) return 0; if (!CheckDateTime(Pass, h, cmsSigDateTimeTag)) return 0; SubTest("Tags holding named color lists"); if (!CheckNamedColor(Pass, h, cmsSigColorantTableTag, 15, FALSE)) return 0; if (!CheckNamedColor(Pass, h, cmsSigColorantTableOutTag, 15, FALSE)) return 0; if (!CheckNamedColor(Pass, h, cmsSigNamedColor2Tag, 4096, TRUE)) return 0; SubTest("Tags holding LUTs"); if (!CheckLUT(Pass, h, cmsSigAToB0Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigAToB1Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigAToB2Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigBToA0Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigBToA1Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigBToA2Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigPreview0Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigPreview1Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigPreview2Tag)) return 0; if (!CheckLUT(Pass, h, cmsSigGamutTag)) return 0; SubTest("Tags holding CHAD"); if (!CheckCHAD(Pass, h, cmsSigChromaticAdaptationTag)) return 0; SubTest("Tags holding Chromaticity"); if (!CheckChromaticity(Pass, h, cmsSigChromaticityTag)) return 0; SubTest("Tags holding colorant order"); if (!CheckColorantOrder(Pass, h, cmsSigColorantOrderTag)) return 0; SubTest("Tags holding measurement"); if (!CheckMeasurement(Pass, h, cmsSigMeasurementTag)) return 0; SubTest("Tags holding CRD info"); if (!CheckCRDinfo(Pass, h, cmsSigCrdInfoTag)) return 0; SubTest("Tags holding UCR/BG"); if (!CheckUcrBg(Pass, h, cmsSigUcrBgTag)) return 0; SubTest("Tags holding MPE"); if (!CheckMPE(Pass, h, cmsSigDToB0Tag)) return 0; if (!CheckMPE(Pass, h, cmsSigDToB1Tag)) return 0; if (!CheckMPE(Pass, h, cmsSigDToB2Tag)) return 0; if (!CheckMPE(Pass, h, cmsSigDToB3Tag)) return 0; if (!CheckMPE(Pass, h, cmsSigBToD0Tag)) return 0; if (!CheckMPE(Pass, h, cmsSigBToD1Tag)) return 0; if (!CheckMPE(Pass, h, cmsSigBToD2Tag)) return 0; if (!CheckMPE(Pass, h, cmsSigBToD3Tag)) return 0; SubTest("Tags using screening"); if (!CheckScreening(Pass, h, cmsSigScreeningTag)) return 0; SubTest("Tags holding profile sequence description"); if (!CheckProfileSequenceTag(Pass, h)) return 0; if (!CheckProfileSequenceIDTag(Pass, h)) return 0; SubTest("Tags holding ICC viewing conditions"); if (!CheckICCViewingConditions(Pass, h)) return 0; SubTest("VCGT tags"); if (!CheckVCGT(Pass, h)) return 0; SubTest("RAW tags"); if (!CheckRAWtags(Pass, h)) return 0; SubTest("Dictionary meta tags"); // if (!CheckDictionary16(Pass, h)) return 0; if (!CheckDictionary24(Pass, h)) return 0; if (Pass == 1) { cmsSaveProfileToFile(h, "alltags.icc"); cmsCloseProfile(h); h = cmsOpenProfileFromFileTHR(DbgThread(), "alltags.icc", "r"); } } /* Not implemented (by design): cmsSigDataTag = 0x64617461, // 'data' -- Unused cmsSigDeviceSettingsTag = 0x64657673, // 'devs' -- Unused cmsSigNamedColorTag = 0x6E636f6C, // 'ncol' -- Don't use this one, deprecated by ICC cmsSigOutputResponseTag = 0x72657370, // 'resp' -- Possible patent on this */ cmsCloseProfile(h); remove("alltags.icc"); return 1; } // Error reporting ------------------------------------------------------------------------------------------------------- static void ErrorReportingFunction(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *Text) { TrappedError = TRUE; SimultaneousErrors++; strncpy(ReasonToFailBuffer, Text, TEXT_ERROR_BUFFER_SIZE-1); cmsUNUSED_PARAMETER(ContextID); cmsUNUSED_PARAMETER(ErrorCode); } static cmsInt32Number CheckBadProfiles(void) { cmsHPROFILE h; h = cmsOpenProfileFromFileTHR(DbgThread(), "IDoNotExist.icc", "r"); if (h != NULL) { cmsCloseProfile(h); return 0; } h = cmsOpenProfileFromFileTHR(DbgThread(), "IAmIllFormed*.icc", "r"); if (h != NULL) { cmsCloseProfile(h); return 0; } // No profile name given h = cmsOpenProfileFromFileTHR(DbgThread(), "", "r"); if (h != NULL) { cmsCloseProfile(h); return 0; } h = cmsOpenProfileFromFileTHR(DbgThread(), "..", "r"); if (h != NULL) { cmsCloseProfile(h); return 0; } h = cmsOpenProfileFromFileTHR(DbgThread(), "IHaveBadAccessMode.icc", "@"); if (h != NULL) { cmsCloseProfile(h); return 0; } h = cmsOpenProfileFromFileTHR(DbgThread(), "bad.icc", "r"); if (h != NULL) { cmsCloseProfile(h); return 0; } h = cmsOpenProfileFromFileTHR(DbgThread(), "toosmall.icc", "r"); if (h != NULL) { cmsCloseProfile(h); return 0; } h = cmsOpenProfileFromMemTHR(DbgThread(), NULL, 3); if (h != NULL) { cmsCloseProfile(h); return 0; } h = cmsOpenProfileFromMemTHR(DbgThread(), "123", 3); if (h != NULL) { cmsCloseProfile(h); return 0; } if (SimultaneousErrors != 9) return 0; return 1; } static cmsInt32Number CheckErrReportingOnBadProfiles(void) { cmsInt32Number rc; cmsSetLogErrorHandler(ErrorReportingFunction); rc = CheckBadProfiles(); cmsSetLogErrorHandler(FatalErrorQuit); // Reset the error state TrappedError = FALSE; return rc; } static cmsInt32Number CheckBadTransforms(void) { cmsHPROFILE h1 = cmsCreate_sRGBProfile(); cmsHTRANSFORM x1; x1 = cmsCreateTransform(NULL, 0, NULL, 0, 0, 0); if (x1 != NULL) { cmsDeleteTransform(x1); return 0; } x1 = cmsCreateTransform(h1, TYPE_RGB_8, h1, TYPE_RGB_8, 12345, 0); if (x1 != NULL) { cmsDeleteTransform(x1); return 0; } x1 = cmsCreateTransform(h1, TYPE_CMYK_8, h1, TYPE_RGB_8, 0, 0); if (x1 != NULL) { cmsDeleteTransform(x1); return 0; } x1 = cmsCreateTransform(h1, TYPE_RGB_8, h1, TYPE_CMYK_8, 1, 0); if (x1 != NULL) { cmsDeleteTransform(x1); return 0; } // sRGB does its output as XYZ! x1 = cmsCreateTransform(h1, TYPE_RGB_8, NULL, TYPE_Lab_8, 1, 0); if (x1 != NULL) { cmsDeleteTransform(x1); return 0; } cmsCloseProfile(h1); { cmsHPROFILE hp1 = cmsOpenProfileFromFile("test1.icc", "r"); cmsHPROFILE hp2 = cmsCreate_sRGBProfile(); x1 = cmsCreateTransform(hp1, TYPE_BGR_8, hp2, TYPE_BGR_8, INTENT_PERCEPTUAL, 0); cmsCloseProfile(hp1); cmsCloseProfile(hp2); if (x1 != NULL) { cmsDeleteTransform(x1); return 0; } } return 1; } static cmsInt32Number CheckErrReportingOnBadTransforms(void) { cmsInt32Number rc; cmsSetLogErrorHandler(ErrorReportingFunction); rc = CheckBadTransforms(); cmsSetLogErrorHandler(FatalErrorQuit); // Reset the error state TrappedError = FALSE; return rc; } // --------------------------------------------------------------------------------------------------------- // Check a linear xform static cmsInt32Number Check8linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan) { cmsInt32Number n2, i, j; cmsUInt8Number Inw[cmsMAXCHANNELS], Outw[cmsMAXCHANNELS]; n2=0; for (j=0; j < 0xFF; j++) { memset(Inw, j, sizeof(Inw)); cmsDoTransform(xform, Inw, Outw, 1); for (i=0; i < nChan; i++) { cmsInt32Number dif = abs(Outw[i] - j); if (dif > n2) n2 = dif; } } // We allow 2 contone of difference on 8 bits if (n2 > 2) { Fail("Differences too big (%x)", n2); return 0; } return 1; } static cmsInt32Number Compare8bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan) { cmsInt32Number n2, i, j; cmsUInt8Number Inw[cmsMAXCHANNELS], Outw1[cmsMAXCHANNELS], Outw2[cmsMAXCHANNELS];; n2=0; for (j=0; j < 0xFF; j++) { memset(Inw, j, sizeof(Inw)); cmsDoTransform(xform1, Inw, Outw1, 1); cmsDoTransform(xform2, Inw, Outw2, 1); for (i=0; i < nChan; i++) { cmsInt32Number dif = abs(Outw2[i] - Outw1[i]); if (dif > n2) n2 = dif; } } // We allow 2 contone of difference on 8 bits if (n2 > 2) { Fail("Differences too big (%x)", n2); return 0; } return 1; } // Check a linear xform static cmsInt32Number Check16linearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan) { cmsInt32Number n2, i, j; cmsUInt16Number Inw[cmsMAXCHANNELS], Outw[cmsMAXCHANNELS]; n2=0; for (j=0; j < 0xFFFF; j++) { for (i=0; i < nChan; i++) Inw[i] = (cmsUInt16Number) j; cmsDoTransform(xform, Inw, Outw, 1); for (i=0; i < nChan; i++) { cmsInt32Number dif = abs(Outw[i] - j); if (dif > n2) n2 = dif; } // We allow 2 contone of difference on 16 bits if (n2 > 0x200) { Fail("Differences too big (%x)", n2); return 0; } } return 1; } static cmsInt32Number Compare16bitXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan) { cmsInt32Number n2, i, j; cmsUInt16Number Inw[cmsMAXCHANNELS], Outw1[cmsMAXCHANNELS], Outw2[cmsMAXCHANNELS];; n2=0; for (j=0; j < 0xFFFF; j++) { for (i=0; i < nChan; i++) Inw[i] = (cmsUInt16Number) j; cmsDoTransform(xform1, Inw, Outw1, 1); cmsDoTransform(xform2, Inw, Outw2, 1); for (i=0; i < nChan; i++) { cmsInt32Number dif = abs(Outw2[i] - Outw1[i]); if (dif > n2) n2 = dif; } } // We allow 2 contone of difference on 16 bits if (n2 > 0x200) { Fail("Differences too big (%x)", n2); return 0; } return 1; } // Check a linear xform static cmsInt32Number CheckFloatlinearXFORM(cmsHTRANSFORM xform, cmsInt32Number nChan) { cmsInt32Number i, j; cmsFloat32Number In[cmsMAXCHANNELS], Out[cmsMAXCHANNELS]; for (j=0; j < 0xFFFF; j++) { for (i=0; i < nChan; i++) In[i] = (cmsFloat32Number) (j / 65535.0);; cmsDoTransform(xform, In, Out, 1); for (i=0; i < nChan; i++) { // We allow no difference in floating point if (!IsGoodFixed15_16("linear xform cmsFloat32Number", Out[i], (cmsFloat32Number) (j / 65535.0))) return 0; } } return 1; } // Check a linear xform static cmsInt32Number CompareFloatXFORM(cmsHTRANSFORM xform1, cmsHTRANSFORM xform2, cmsInt32Number nChan) { cmsInt32Number i, j; cmsFloat32Number In[cmsMAXCHANNELS], Out1[cmsMAXCHANNELS], Out2[cmsMAXCHANNELS]; for (j=0; j < 0xFFFF; j++) { for (i=0; i < nChan; i++) In[i] = (cmsFloat32Number) (j / 65535.0);; cmsDoTransform(xform1, In, Out1, 1); cmsDoTransform(xform2, In, Out2, 1); for (i=0; i < nChan; i++) { // We allow no difference in floating point if (!IsGoodFixed15_16("linear xform cmsFloat32Number", Out1[i], Out2[i])) return 0; } } return 1; } // Curves only transforms ---------------------------------------------------------------------------------------- static cmsInt32Number CheckCurvesOnlyTransforms(void) { cmsHTRANSFORM xform1, xform2; cmsHPROFILE h1, h2, h3; cmsToneCurve* c1, *c2, *c3; cmsInt32Number rc = 1; c1 = cmsBuildGamma(DbgThread(), 2.2); c2 = cmsBuildGamma(DbgThread(), 1/2.2); c3 = cmsBuildGamma(DbgThread(), 4.84); h1 = cmsCreateLinearizationDeviceLinkTHR(DbgThread(), cmsSigGrayData, &c1); h2 = cmsCreateLinearizationDeviceLinkTHR(DbgThread(), cmsSigGrayData, &c2); h3 = cmsCreateLinearizationDeviceLinkTHR(DbgThread(), cmsSigGrayData, &c3); SubTest("Gray float optimizeable transform"); xform1 = cmsCreateTransform(h1, TYPE_GRAY_FLT, h2, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0); rc &= CheckFloatlinearXFORM(xform1, 1); cmsDeleteTransform(xform1); if (rc == 0) goto Error; SubTest("Gray 8 optimizeable transform"); xform1 = cmsCreateTransform(h1, TYPE_GRAY_8, h2, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0); rc &= Check8linearXFORM(xform1, 1); cmsDeleteTransform(xform1); if (rc == 0) goto Error; SubTest("Gray 16 optimizeable transform"); xform1 = cmsCreateTransform(h1, TYPE_GRAY_16, h2, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0); rc &= Check16linearXFORM(xform1, 1); cmsDeleteTransform(xform1); if (rc == 0) goto Error; SubTest("Gray float non-optimizeable transform"); xform1 = cmsCreateTransform(h1, TYPE_GRAY_FLT, h1, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0); xform2 = cmsCreateTransform(h3, TYPE_GRAY_FLT, NULL, TYPE_GRAY_FLT, INTENT_PERCEPTUAL, 0); rc &= CompareFloatXFORM(xform1, xform2, 1); cmsDeleteTransform(xform1); cmsDeleteTransform(xform2); if (rc == 0) goto Error; SubTest("Gray 8 non-optimizeable transform"); xform1 = cmsCreateTransform(h1, TYPE_GRAY_8, h1, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0); xform2 = cmsCreateTransform(h3, TYPE_GRAY_8, NULL, TYPE_GRAY_8, INTENT_PERCEPTUAL, 0); rc &= Compare8bitXFORM(xform1, xform2, 1); cmsDeleteTransform(xform1); cmsDeleteTransform(xform2); if (rc == 0) goto Error; SubTest("Gray 16 non-optimizeable transform"); xform1 = cmsCreateTransform(h1, TYPE_GRAY_16, h1, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0); xform2 = cmsCreateTransform(h3, TYPE_GRAY_16, NULL, TYPE_GRAY_16, INTENT_PERCEPTUAL, 0); rc &= Compare16bitXFORM(xform1, xform2, 1); cmsDeleteTransform(xform1); cmsDeleteTransform(xform2); if (rc == 0) goto Error; Error: cmsCloseProfile(h1); cmsCloseProfile(h2); cmsCloseProfile(h3); cmsFreeToneCurve(c1); cmsFreeToneCurve(c2); cmsFreeToneCurve(c3); return rc; } // Lab to Lab trivial transforms ---------------------------------------------------------------------------------------- static cmsFloat64Number MaxDE; static cmsInt32Number CheckOneLab(cmsHTRANSFORM xform, cmsFloat64Number L, cmsFloat64Number a, cmsFloat64Number b) { cmsCIELab In, Out; cmsFloat64Number dE; In.L = L; In.a = a; In.b = b; cmsDoTransform(xform, &In, &Out, 1); dE = cmsDeltaE(&In, &Out); if (dE > MaxDE) MaxDE = dE; if (MaxDE > 0.003) { Fail("dE=%f Lab1=(%f, %f, %f)\n\tLab2=(%f %f %f)", MaxDE, In.L, In.a, In.b, Out.L, Out.a, Out.b); cmsDoTransform(xform, &In, &Out, 1); return 0; } return 1; } // Check several Lab, slicing at non-exact values. Precision should be 16 bits. 50x50x50 checks aprox. static cmsInt32Number CheckSeveralLab(cmsHTRANSFORM xform) { cmsInt32Number L, a, b; MaxDE = 0; for (L=0; L < 65536; L += 1311) { for (a = 0; a < 65536; a += 1232) { for (b = 0; b < 65536; b += 1111) { if (!CheckOneLab(xform, (L * 100.0) / 65535.0, (a / 257.0) - 128, (b / 257.0) - 128)) return 0; } } } return 1; } static cmsInt32Number OneTrivialLab(cmsHPROFILE hLab1, cmsHPROFILE hLab2, const char* txt) { cmsHTRANSFORM xform; cmsInt32Number rc; SubTest(txt); xform = cmsCreateTransformTHR(DbgThread(), hLab1, TYPE_Lab_DBL, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hLab1); cmsCloseProfile(hLab2); rc = CheckSeveralLab(xform); cmsDeleteTransform(xform); return rc; } static cmsInt32Number CheckFloatLabTransforms(void) { return OneTrivialLab(cmsCreateLab4ProfileTHR(DbgThread(), NULL), cmsCreateLab4ProfileTHR(DbgThread(), NULL), "Lab4/Lab4") && OneTrivialLab(cmsCreateLab2ProfileTHR(DbgThread(), NULL), cmsCreateLab2ProfileTHR(DbgThread(), NULL), "Lab2/Lab2") && OneTrivialLab(cmsCreateLab4ProfileTHR(DbgThread(), NULL), cmsCreateLab2ProfileTHR(DbgThread(), NULL), "Lab4/Lab2") && OneTrivialLab(cmsCreateLab2ProfileTHR(DbgThread(), NULL), cmsCreateLab4ProfileTHR(DbgThread(), NULL), "Lab2/Lab4"); } static cmsInt32Number CheckEncodedLabTransforms(void) { cmsHTRANSFORM xform; cmsUInt16Number In[3]; cmsCIELab Lab; cmsCIELab White = { 100, 0, 0 }; cmsHPROFILE hLab1 = cmsCreateLab4ProfileTHR(DbgThread(), NULL); cmsHPROFILE hLab2 = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hLab1, TYPE_Lab_16, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hLab1); cmsCloseProfile(hLab2); In[0] = 0xFFFF; In[1] = 0x8080; In[2] = 0x8080; cmsDoTransform(xform, In, &Lab, 1); if (cmsDeltaE(&Lab, &White) > 0.0001) return 0; cmsDeleteTransform(xform); hLab1 = cmsCreateLab2ProfileTHR(DbgThread(), NULL); hLab2 = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hLab1, TYPE_LabV2_16, hLab2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hLab1); cmsCloseProfile(hLab2); In[0] = 0xFF00; In[1] = 0x8000; In[2] = 0x8000; cmsDoTransform(xform, In, &Lab, 1); if (cmsDeltaE(&Lab, &White) > 0.0001) return 0; cmsDeleteTransform(xform); hLab2 = cmsCreateLab2ProfileTHR(DbgThread(), NULL); hLab1 = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hLab1, TYPE_Lab_DBL, hLab2, TYPE_LabV2_16, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hLab1); cmsCloseProfile(hLab2); Lab.L = 100; Lab.a = 0; Lab.b = 0; cmsDoTransform(xform, &Lab, In, 1); if (In[0] != 0xFF00 || In[1] != 0x8000 || In[2] != 0x8000) return 0; cmsDeleteTransform(xform); hLab1 = cmsCreateLab4ProfileTHR(DbgThread(), NULL); hLab2 = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hLab1, TYPE_Lab_DBL, hLab2, TYPE_Lab_16, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hLab1); cmsCloseProfile(hLab2); Lab.L = 100; Lab.a = 0; Lab.b = 0; cmsDoTransform(xform, &Lab, In, 1); if (In[0] != 0xFFFF || In[1] != 0x8080 || In[2] != 0x8080) return 0; cmsDeleteTransform(xform); return 1; } static cmsInt32Number CheckStoredIdentities(void) { cmsHPROFILE hLab, hLink, h4, h2; cmsHTRANSFORM xform; cmsInt32Number rc = 1; hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hLab, TYPE_Lab_8, hLab, TYPE_Lab_8, 0, 0); hLink = cmsTransform2DeviceLink(xform, 3.4, 0); cmsSaveProfileToFile(hLink, "abstractv2.icc"); cmsCloseProfile(hLink); hLink = cmsTransform2DeviceLink(xform, 4.3, 0); cmsSaveProfileToFile(hLink, "abstractv4.icc"); cmsCloseProfile(hLink); cmsDeleteTransform(xform); cmsCloseProfile(hLab); h4 = cmsOpenProfileFromFileTHR(DbgThread(), "abstractv4.icc", "r"); xform = cmsCreateTransformTHR(DbgThread(), h4, TYPE_Lab_DBL, h4, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); SubTest("V4"); rc &= CheckSeveralLab(xform); cmsDeleteTransform(xform); cmsCloseProfile(h4); if (!rc) goto Error; SubTest("V2"); h2 = cmsOpenProfileFromFileTHR(DbgThread(), "abstractv2.icc", "r"); xform = cmsCreateTransformTHR(DbgThread(), h2, TYPE_Lab_DBL, h2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); rc &= CheckSeveralLab(xform); cmsDeleteTransform(xform); cmsCloseProfile(h2); if (!rc) goto Error; SubTest("V2 -> V4"); h2 = cmsOpenProfileFromFileTHR(DbgThread(), "abstractv2.icc", "r"); h4 = cmsOpenProfileFromFileTHR(DbgThread(), "abstractv4.icc", "r"); xform = cmsCreateTransformTHR(DbgThread(), h4, TYPE_Lab_DBL, h2, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); rc &= CheckSeveralLab(xform); cmsDeleteTransform(xform); cmsCloseProfile(h2); cmsCloseProfile(h4); SubTest("V4 -> V2"); h2 = cmsOpenProfileFromFileTHR(DbgThread(), "abstractv2.icc", "r"); h4 = cmsOpenProfileFromFileTHR(DbgThread(), "abstractv4.icc", "r"); xform = cmsCreateTransformTHR(DbgThread(), h2, TYPE_Lab_DBL, h4, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); rc &= CheckSeveralLab(xform); cmsDeleteTransform(xform); cmsCloseProfile(h2); cmsCloseProfile(h4); Error: remove("abstractv2.icc"); remove("abstractv4.icc"); return rc; } // Check a simple xform from a matrix profile to itself. Test floating point accuracy. static cmsInt32Number CheckMatrixShaperXFORMFloat(void) { cmsHPROFILE hAbove, hSRGB; cmsHTRANSFORM xform; cmsInt32Number rc1, rc2; hAbove = Create_AboveRGB(); xform = cmsCreateTransformTHR(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hAbove); rc1 = CheckFloatlinearXFORM(xform, 3); cmsDeleteTransform(xform); hSRGB = cmsCreate_sRGBProfileTHR(DbgThread()); xform = cmsCreateTransformTHR(DbgThread(), hSRGB, TYPE_RGB_FLT, hSRGB, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hSRGB); rc2 = CheckFloatlinearXFORM(xform, 3); cmsDeleteTransform(xform); return rc1 && rc2; } // Check a simple xform from a matrix profile to itself. Test 16 bits accuracy. static cmsInt32Number CheckMatrixShaperXFORM16(void) { cmsHPROFILE hAbove, hSRGB; cmsHTRANSFORM xform; cmsInt32Number rc1, rc2; hAbove = Create_AboveRGB(); xform = cmsCreateTransformTHR(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hAbove); rc1 = Check16linearXFORM(xform, 3); cmsDeleteTransform(xform); hSRGB = cmsCreate_sRGBProfileTHR(DbgThread()); xform = cmsCreateTransformTHR(DbgThread(), hSRGB, TYPE_RGB_16, hSRGB, TYPE_RGB_16, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hSRGB); rc2 = Check16linearXFORM(xform, 3); cmsDeleteTransform(xform); return rc1 && rc2; } // Check a simple xform from a matrix profile to itself. Test 8 bits accuracy. static cmsInt32Number CheckMatrixShaperXFORM8(void) { cmsHPROFILE hAbove, hSRGB; cmsHTRANSFORM xform; cmsInt32Number rc1, rc2; hAbove = Create_AboveRGB(); xform = cmsCreateTransformTHR(DbgThread(), hAbove, TYPE_RGB_8, hAbove, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hAbove); rc1 = Check8linearXFORM(xform, 3); cmsDeleteTransform(xform); hSRGB = cmsCreate_sRGBProfileTHR(DbgThread()); xform = cmsCreateTransformTHR(DbgThread(), hSRGB, TYPE_RGB_8, hSRGB, TYPE_RGB_8, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hSRGB); rc2 = Check8linearXFORM(xform, 3); cmsDeleteTransform(xform); return rc1 && rc2; } // TODO: Check LUT based to LUT based transforms for CMYK // ----------------------------------------------------------------------------------------------------------------- // Check known values going from sRGB to XYZ static cmsInt32Number CheckOneRGB_f(cmsHTRANSFORM xform, cmsInt32Number R, cmsInt32Number G, cmsInt32Number B, cmsFloat64Number X, cmsFloat64Number Y, cmsFloat64Number Z, cmsFloat64Number err) { cmsFloat32Number RGB[3]; cmsFloat64Number Out[3]; RGB[0] = (cmsFloat32Number) (R / 255.0); RGB[1] = (cmsFloat32Number) (G / 255.0); RGB[2] = (cmsFloat32Number) (B / 255.0); cmsDoTransform(xform, RGB, Out, 1); return IsGoodVal("X", X , Out[0], err) && IsGoodVal("Y", Y , Out[1], err) && IsGoodVal("Z", Z , Out[2], err); } static cmsInt32Number Chack_sRGB_Float(void) { cmsHPROFILE hsRGB, hXYZ, hLab; cmsHTRANSFORM xform1, xform2; cmsInt32Number rc; hsRGB = cmsCreate_sRGBProfileTHR(DbgThread()); hXYZ = cmsCreateXYZProfileTHR(DbgThread()); hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform1 = cmsCreateTransformTHR(DbgThread(), hsRGB, TYPE_RGB_FLT, hXYZ, TYPE_XYZ_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); xform2 = cmsCreateTransformTHR(DbgThread(), hsRGB, TYPE_RGB_FLT, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hsRGB); cmsCloseProfile(hXYZ); cmsCloseProfile(hLab); MaxErr = 0; // Xform 1 goes from 8 bits to XYZ, rc = CheckOneRGB_f(xform1, 1, 1, 1, 0.0002926, 0.00030352, 0.00025037, 0.0001); rc &= CheckOneRGB_f(xform1, 127, 127, 127, 0.2046329, 0.212230, 0.175069, 0.0001); rc &= CheckOneRGB_f(xform1, 12, 13, 15, 0.0038364, 0.0039928, 0.00385212, 0.0001); rc &= CheckOneRGB_f(xform1, 128, 0, 0, 0.0940846, 0.0480030, 0.00300543, 0.0001); rc &= CheckOneRGB_f(xform1, 190, 25, 210, 0.3203491, 0.1605240, 0.46817115, 0.0001); // Xform 2 goes from 8 bits to Lab, we allow 0.01 error max rc &= CheckOneRGB_f(xform2, 1, 1, 1, 0.2741748, 0, 0, 0.01); rc &= CheckOneRGB_f(xform2, 127, 127, 127, 53.192776, 0, 0, 0.01); rc &= CheckOneRGB_f(xform2, 190, 25, 210, 47.043171, 74.564576, -56.89373, 0.01); rc &= CheckOneRGB_f(xform2, 128, 0, 0, 26.158100, 48.474477, 39.425916, 0.01); cmsDeleteTransform(xform1); cmsDeleteTransform(xform2); return rc; } // --------------------------------------------------- static cmsBool GetProfileRGBPrimaries(cmsHPROFILE hProfile, cmsCIEXYZTRIPLE *result, cmsUInt32Number intent) { cmsHPROFILE hXYZ; cmsHTRANSFORM hTransform; cmsFloat64Number rgb[3][3] = {{1., 0., 0.}, {0., 1., 0.}, {0., 0., 1.}}; hXYZ = cmsCreateXYZProfile(); if (hXYZ == NULL) return FALSE; hTransform = cmsCreateTransform(hProfile, TYPE_RGB_DBL, hXYZ, TYPE_XYZ_DBL, intent, cmsFLAGS_NOCACHE | cmsFLAGS_NOOPTIMIZE); cmsCloseProfile(hXYZ); if (hTransform == NULL) return FALSE; cmsDoTransform(hTransform, rgb, result, 3); cmsDeleteTransform(hTransform); return TRUE; } static int CheckRGBPrimaries(void) { cmsHPROFILE hsRGB; cmsCIEXYZTRIPLE tripXYZ; cmsCIExyYTRIPLE tripxyY; cmsBool result; cmsSetAdaptationState(0); hsRGB = cmsCreate_sRGBProfileTHR(DbgThread()); if (!hsRGB) return 0; result = GetProfileRGBPrimaries(hsRGB, &tripXYZ, INTENT_ABSOLUTE_COLORIMETRIC); cmsCloseProfile(hsRGB); if (!result) return 0; cmsXYZ2xyY(&tripxyY.Red, &tripXYZ.Red); cmsXYZ2xyY(&tripxyY.Green, &tripXYZ.Green); cmsXYZ2xyY(&tripxyY.Blue, &tripXYZ.Blue); /* valus were taken from http://en.wikipedia.org/wiki/RGB_color_spaces#Specifications */ if (!IsGoodFixed15_16("xRed", tripxyY.Red.x, 0.64) || !IsGoodFixed15_16("yRed", tripxyY.Red.y, 0.33) || !IsGoodFixed15_16("xGreen", tripxyY.Green.x, 0.30) || !IsGoodFixed15_16("yGreen", tripxyY.Green.y, 0.60) || !IsGoodFixed15_16("xBlue", tripxyY.Blue.x, 0.15) || !IsGoodFixed15_16("yBlue", tripxyY.Blue.y, 0.06)) { Fail("One or more primaries are wrong."); return FALSE; } return TRUE; } // ----------------------------------------------------------------------------------------------------------------- // This function will check CMYK -> CMYK transforms. It uses FOGRA29 and SWOP ICC profiles static cmsInt32Number CheckCMYK(cmsInt32Number Intent, const char *Profile1, const char* Profile2) { cmsHPROFILE hSWOP = cmsOpenProfileFromFileTHR(DbgThread(), Profile1, "r"); cmsHPROFILE hFOGRA = cmsOpenProfileFromFileTHR(DbgThread(), Profile2, "r"); cmsHTRANSFORM xform, swop_lab, fogra_lab; cmsFloat32Number CMYK1[4], CMYK2[4]; cmsCIELab Lab1, Lab2; cmsHPROFILE hLab; cmsFloat64Number DeltaL, Max; cmsInt32Number i; hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, Intent, 0); swop_lab = cmsCreateTransformTHR(DbgThread(), hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, Intent, 0); fogra_lab = cmsCreateTransformTHR(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, Intent, 0); Max = 0; for (i=0; i <= 100; i++) { CMYK1[0] = 10; CMYK1[1] = 20; CMYK1[2] = 30; CMYK1[3] = (cmsFloat32Number) i; cmsDoTransform(swop_lab, CMYK1, &Lab1, 1); cmsDoTransform(xform, CMYK1, CMYK2, 1); cmsDoTransform(fogra_lab, CMYK2, &Lab2, 1); DeltaL = fabs(Lab1.L - Lab2.L); if (DeltaL > Max) Max = DeltaL; } cmsDeleteTransform(xform); if (Max > 3.0) return 0; xform = cmsCreateTransformTHR(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, Intent, 0); Max = 0; for (i=0; i <= 100; i++) { CMYK1[0] = 10; CMYK1[1] = 20; CMYK1[2] = 30; CMYK1[3] = (cmsFloat32Number) i; cmsDoTransform(fogra_lab, CMYK1, &Lab1, 1); cmsDoTransform(xform, CMYK1, CMYK2, 1); cmsDoTransform(swop_lab, CMYK2, &Lab2, 1); DeltaL = fabs(Lab1.L - Lab2.L); if (DeltaL > Max) Max = DeltaL; } cmsCloseProfile(hSWOP); cmsCloseProfile(hFOGRA); cmsCloseProfile(hLab); cmsDeleteTransform(xform); cmsDeleteTransform(swop_lab); cmsDeleteTransform(fogra_lab); return Max < 3.0; } static cmsInt32Number CheckCMYKRoundtrip(void) { return CheckCMYK(INTENT_RELATIVE_COLORIMETRIC, "test1.icc", "test1.icc"); } static cmsInt32Number CheckCMYKPerceptual(void) { return CheckCMYK(INTENT_PERCEPTUAL, "test1.icc", "test2.icc"); } static cmsInt32Number CheckCMYKRelCol(void) { return CheckCMYK(INTENT_RELATIVE_COLORIMETRIC, "test1.icc", "test2.icc"); } static cmsInt32Number CheckKOnlyBlackPreserving(void) { cmsHPROFILE hSWOP = cmsOpenProfileFromFileTHR(DbgThread(), "test1.icc", "r"); cmsHPROFILE hFOGRA = cmsOpenProfileFromFileTHR(DbgThread(), "test2.icc", "r"); cmsHTRANSFORM xform, swop_lab, fogra_lab; cmsFloat32Number CMYK1[4], CMYK2[4]; cmsCIELab Lab1, Lab2; cmsHPROFILE hLab; cmsFloat64Number DeltaL, Max; cmsInt32Number i; hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, INTENT_PRESERVE_K_ONLY_PERCEPTUAL, 0); swop_lab = cmsCreateTransformTHR(DbgThread(), hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0); fogra_lab = cmsCreateTransformTHR(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0); Max = 0; for (i=0; i <= 100; i++) { CMYK1[0] = 0; CMYK1[1] = 0; CMYK1[2] = 0; CMYK1[3] = (cmsFloat32Number) i; // SWOP CMYK to Lab1 cmsDoTransform(swop_lab, CMYK1, &Lab1, 1); // SWOP To FOGRA using black preservation cmsDoTransform(xform, CMYK1, CMYK2, 1); // Obtained FOGRA CMYK to Lab2 cmsDoTransform(fogra_lab, CMYK2, &Lab2, 1); // We care only on L* DeltaL = fabs(Lab1.L - Lab2.L); if (DeltaL > Max) Max = DeltaL; } cmsDeleteTransform(xform); // dL should be below 3.0 if (Max > 3.0) return 0; // Same, but FOGRA to SWOP xform = cmsCreateTransformTHR(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, INTENT_PRESERVE_K_ONLY_PERCEPTUAL, 0); Max = 0; for (i=0; i <= 100; i++) { CMYK1[0] = 0; CMYK1[1] = 0; CMYK1[2] = 0; CMYK1[3] = (cmsFloat32Number) i; cmsDoTransform(fogra_lab, CMYK1, &Lab1, 1); cmsDoTransform(xform, CMYK1, CMYK2, 1); cmsDoTransform(swop_lab, CMYK2, &Lab2, 1); DeltaL = fabs(Lab1.L - Lab2.L); if (DeltaL > Max) Max = DeltaL; } cmsCloseProfile(hSWOP); cmsCloseProfile(hFOGRA); cmsCloseProfile(hLab); cmsDeleteTransform(xform); cmsDeleteTransform(swop_lab); cmsDeleteTransform(fogra_lab); return Max < 3.0; } static cmsInt32Number CheckKPlaneBlackPreserving(void) { cmsHPROFILE hSWOP = cmsOpenProfileFromFileTHR(DbgThread(), "test1.icc", "r"); cmsHPROFILE hFOGRA = cmsOpenProfileFromFileTHR(DbgThread(), "test2.icc", "r"); cmsHTRANSFORM xform, swop_lab, fogra_lab; cmsFloat32Number CMYK1[4], CMYK2[4]; cmsCIELab Lab1, Lab2; cmsHPROFILE hLab; cmsFloat64Number DeltaE, Max; cmsInt32Number i; hLab = cmsCreateLab4ProfileTHR(DbgThread(), NULL); xform = cmsCreateTransformTHR(DbgThread(), hSWOP, TYPE_CMYK_FLT, hFOGRA, TYPE_CMYK_FLT, INTENT_PERCEPTUAL, 0); swop_lab = cmsCreateTransformTHR(DbgThread(), hSWOP, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0); fogra_lab = cmsCreateTransformTHR(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0); Max = 0; for (i=0; i <= 100; i++) { CMYK1[0] = 0; CMYK1[1] = 0; CMYK1[2] = 0; CMYK1[3] = (cmsFloat32Number) i; cmsDoTransform(swop_lab, CMYK1, &Lab1, 1); cmsDoTransform(xform, CMYK1, CMYK2, 1); cmsDoTransform(fogra_lab, CMYK2, &Lab2, 1); DeltaE = cmsDeltaE(&Lab1, &Lab2); if (DeltaE > Max) Max = DeltaE; } cmsDeleteTransform(xform); xform = cmsCreateTransformTHR(DbgThread(), hFOGRA, TYPE_CMYK_FLT, hSWOP, TYPE_CMYK_FLT, INTENT_PRESERVE_K_PLANE_PERCEPTUAL, 0); for (i=0; i <= 100; i++) { CMYK1[0] = 30; CMYK1[1] = 20; CMYK1[2] = 10; CMYK1[3] = (cmsFloat32Number) i; cmsDoTransform(fogra_lab, CMYK1, &Lab1, 1); cmsDoTransform(xform, CMYK1, CMYK2, 1); cmsDoTransform(swop_lab, CMYK2, &Lab2, 1); DeltaE = cmsDeltaE(&Lab1, &Lab2); if (DeltaE > Max) Max = DeltaE; } cmsDeleteTransform(xform); cmsCloseProfile(hSWOP); cmsCloseProfile(hFOGRA); cmsCloseProfile(hLab); cmsDeleteTransform(swop_lab); cmsDeleteTransform(fogra_lab); return Max < 30.0; } // ------------------------------------------------------------------------------------------------------ static cmsInt32Number CheckProofingXFORMFloat(void) { cmsHPROFILE hAbove; cmsHTRANSFORM xform; cmsInt32Number rc; hAbove = Create_AboveRGB(); xform = cmsCreateProofingTransformTHR(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, hAbove, INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_SOFTPROOFING); cmsCloseProfile(hAbove); rc = CheckFloatlinearXFORM(xform, 3); cmsDeleteTransform(xform); return rc; } static cmsInt32Number CheckProofingXFORM16(void) { cmsHPROFILE hAbove; cmsHTRANSFORM xform; cmsInt32Number rc; hAbove = Create_AboveRGB(); xform = cmsCreateProofingTransformTHR(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, hAbove, INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_SOFTPROOFING|cmsFLAGS_NOCACHE); cmsCloseProfile(hAbove); rc = Check16linearXFORM(xform, 3); cmsDeleteTransform(xform); return rc; } static cmsInt32Number CheckGamutCheck(void) { cmsHPROFILE hSRGB, hAbove; cmsHTRANSFORM xform; cmsInt32Number rc; cmsUInt16Number Alarm[3] = { 0xDEAD, 0xBABE, 0xFACE }; // Set alarm codes to fancy values so we could check the out of gamut condition cmsSetAlarmCodes(Alarm); // Create the profiles hSRGB = cmsCreate_sRGBProfileTHR(DbgThread()); hAbove = Create_AboveRGB(); if (hSRGB == NULL || hAbove == NULL) return 0; // Failed SubTest("Gamut check on floating point"); // Create a gamut checker in the same space. No value should be out of gamut xform = cmsCreateProofingTransformTHR(DbgThread(), hAbove, TYPE_RGB_FLT, hAbove, TYPE_RGB_FLT, hAbove, INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_GAMUTCHECK); if (!CheckFloatlinearXFORM(xform, 3)) { cmsCloseProfile(hSRGB); cmsCloseProfile(hAbove); cmsDeleteTransform(xform); Fail("Gamut check on same profile failed"); return 0; } cmsDeleteTransform(xform); SubTest("Gamut check on 16 bits"); xform = cmsCreateProofingTransformTHR(DbgThread(), hAbove, TYPE_RGB_16, hAbove, TYPE_RGB_16, hAbove, INTENT_RELATIVE_COLORIMETRIC, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_GAMUTCHECK); cmsCloseProfile(hSRGB); cmsCloseProfile(hAbove); rc = Check16linearXFORM(xform, 3); cmsDeleteTransform(xform); return rc; } // ------------------------------------------------------------------------------------------------------------------- static cmsInt32Number CheckBlackPoint(void) { cmsHPROFILE hProfile; cmsCIEXYZ Black; cmsCIELab Lab; hProfile = cmsOpenProfileFromFileTHR(DbgThread(), "test5.icc", "r"); cmsDetectDestinationBlackPoint(&Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hProfile); hProfile = cmsOpenProfileFromFileTHR(DbgThread(), "test1.icc", "r"); cmsDetectDestinationBlackPoint(&Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0); cmsXYZ2Lab(NULL, &Lab, &Black); cmsCloseProfile(hProfile); hProfile = cmsOpenProfileFromFileTHR(DbgThread(), "lcms2cmyk.icc", "r"); cmsDetectDestinationBlackPoint(&Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0); cmsXYZ2Lab(NULL, &Lab, &Black); cmsCloseProfile(hProfile); hProfile = cmsOpenProfileFromFileTHR(DbgThread(), "test2.icc", "r"); cmsDetectDestinationBlackPoint(&Black, hProfile, INTENT_RELATIVE_COLORIMETRIC, 0); cmsXYZ2Lab(NULL, &Lab, &Black); cmsCloseProfile(hProfile); hProfile = cmsOpenProfileFromFileTHR(DbgThread(), "test1.icc", "r"); cmsDetectDestinationBlackPoint(&Black, hProfile, INTENT_PERCEPTUAL, 0); cmsXYZ2Lab(NULL, &Lab, &Black); cmsCloseProfile(hProfile); return 1; } static cmsInt32Number CheckOneTAC(cmsFloat64Number InkLimit) { cmsHPROFILE h; cmsFloat64Number d; h =CreateFakeCMYK(InkLimit, TRUE); cmsSaveProfileToFile(h, "lcmstac.icc"); cmsCloseProfile(h); h = cmsOpenProfileFromFile("lcmstac.icc", "r"); d = cmsDetectTAC(h); cmsCloseProfile(h); remove("lcmstac.icc"); if (fabs(d - InkLimit) > 5) return 0; return 1; } static cmsInt32Number CheckTAC(void) { if (!CheckOneTAC(180)) return 0; if (!CheckOneTAC(220)) return 0; if (!CheckOneTAC(286)) return 0; if (!CheckOneTAC(310)) return 0; if (!CheckOneTAC(330)) return 0; return 1; } // ------------------------------------------------------------------------------------------------------- #define NPOINTS_IT8 10 // (17*17*17*17) static cmsInt32Number CheckCGATS(void) { cmsHANDLE it8; cmsInt32Number i; SubTest("IT8 creation"); it8 = cmsIT8Alloc(DbgThread()); if (it8 == NULL) return 0; cmsIT8SetSheetType(it8, "LCMS/TESTING"); cmsIT8SetPropertyStr(it8, "ORIGINATOR", "1 2 3 4"); cmsIT8SetPropertyUncooked(it8, "DESCRIPTOR", "1234"); cmsIT8SetPropertyStr(it8, "MANUFACTURER", "3"); cmsIT8SetPropertyDbl(it8, "CREATED", 4); cmsIT8SetPropertyDbl(it8, "SERIAL", 5); cmsIT8SetPropertyHex(it8, "MATERIAL", 0x123); cmsIT8SetPropertyDbl(it8, "NUMBER_OF_SETS", NPOINTS_IT8); cmsIT8SetPropertyDbl(it8, "NUMBER_OF_FIELDS", 4); cmsIT8SetDataFormat(it8, 0, "SAMPLE_ID"); cmsIT8SetDataFormat(it8, 1, "RGB_R"); cmsIT8SetDataFormat(it8, 2, "RGB_G"); cmsIT8SetDataFormat(it8, 3, "RGB_B"); SubTest("Table creation"); for (i=0; i < NPOINTS_IT8; i++) { char Patch[20]; sprintf(Patch, "P%d", i); cmsIT8SetDataRowCol(it8, i, 0, Patch); cmsIT8SetDataRowColDbl(it8, i, 1, i); cmsIT8SetDataRowColDbl(it8, i, 2, i); cmsIT8SetDataRowColDbl(it8, i, 3, i); } SubTest("Save to file"); cmsIT8SaveToFile(it8, "TEST.IT8"); cmsIT8Free(it8); SubTest("Load from file"); it8 = cmsIT8LoadFromFile(DbgThread(), "TEST.IT8"); if (it8 == NULL) return 0; SubTest("Save again file"); cmsIT8SaveToFile(it8, "TEST.IT8"); cmsIT8Free(it8); SubTest("Load from file (II)"); it8 = cmsIT8LoadFromFile(DbgThread(), "TEST.IT8"); if (it8 == NULL) return 0; SubTest("Change prop value"); if (cmsIT8GetPropertyDbl(it8, "DESCRIPTOR") != 1234) { return 0; } cmsIT8SetPropertyDbl(it8, "DESCRIPTOR", 5678); if (cmsIT8GetPropertyDbl(it8, "DESCRIPTOR") != 5678) { return 0; } SubTest("Positive numbers"); if (cmsIT8GetDataDbl(it8, "P3", "RGB_G") != 3) { return 0; } SubTest("Positive exponent numbers"); cmsIT8SetPropertyDbl(it8, "DBL_PROP", 123E+12); if ((cmsIT8GetPropertyDbl(it8, "DBL_PROP") - 123E+12) > 1 ) { return 0; } SubTest("Negative exponent numbers"); cmsIT8SetPropertyDbl(it8, "DBL_PROP_NEG", 123E-45); if ((cmsIT8GetPropertyDbl(it8, "DBL_PROP_NEG") - 123E-45) > 1E-45 ) { return 0; } SubTest("Negative numbers"); cmsIT8SetPropertyDbl(it8, "DBL_NEG_VAL", -123); if ((cmsIT8GetPropertyDbl(it8, "DBL_NEG_VAL")) != -123 ) { return 0; } cmsIT8Free(it8); remove("TEST.IT8"); return 1; } // Create CSA/CRD static void GenerateCSA(const char* cInProf, const char* FileName) { cmsHPROFILE hProfile; cmsUInt32Number n; char* Buffer; cmsContext BuffThread = DbgThread(); FILE* o; if (cInProf == NULL) hProfile = cmsCreateLab4Profile(NULL); else hProfile = cmsOpenProfileFromFile(cInProf, "r"); n = cmsGetPostScriptCSA(DbgThread(), hProfile, 0, 0, NULL, 0); if (n == 0) return; Buffer = (char*) _cmsMalloc(BuffThread, n + 1); cmsGetPostScriptCSA(DbgThread(), hProfile, 0, 0, Buffer, n); Buffer[n] = 0; if (FileName != NULL) { o = fopen(FileName, "wb"); fwrite(Buffer, n, 1, o); fclose(o); } _cmsFree(BuffThread, Buffer); cmsCloseProfile(hProfile); if (FileName != NULL) remove(FileName); } static void GenerateCRD(const char* cOutProf, const char* FileName) { cmsHPROFILE hProfile; cmsUInt32Number n; char* Buffer; cmsUInt32Number dwFlags = 0; cmsContext BuffThread = DbgThread(); if (cOutProf == NULL) hProfile = cmsCreateLab4Profile(NULL); else hProfile = cmsOpenProfileFromFile(cOutProf, "r"); n = cmsGetPostScriptCRD(DbgThread(), hProfile, 0, dwFlags, NULL, 0); if (n == 0) return; Buffer = (char*) _cmsMalloc(BuffThread, n + 1); cmsGetPostScriptCRD(DbgThread(), hProfile, 0, dwFlags, Buffer, n); Buffer[n] = 0; if (FileName != NULL) { FILE* o = fopen(FileName, "wb"); fwrite(Buffer, n, 1, o); fclose(o); } _cmsFree(BuffThread, Buffer); cmsCloseProfile(hProfile); if (FileName != NULL) remove(FileName); } static cmsInt32Number CheckPostScript(void) { GenerateCSA("test5.icc", "sRGB_CSA.ps"); GenerateCSA("aRGBlcms2.icc", "aRGB_CSA.ps"); GenerateCSA("test4.icc", "sRGBV4_CSA.ps"); GenerateCSA("test1.icc", "SWOP_CSA.ps"); GenerateCSA(NULL, "Lab_CSA.ps"); GenerateCSA("graylcms2.icc", "gray_CSA.ps"); GenerateCRD("test5.icc", "sRGB_CRD.ps"); GenerateCRD("aRGBlcms2.icc", "aRGB_CRD.ps"); GenerateCRD(NULL, "Lab_CRD.ps"); GenerateCRD("test1.icc", "SWOP_CRD.ps"); GenerateCRD("test4.icc", "sRGBV4_CRD.ps"); GenerateCRD("graylcms2.icc", "gray_CRD.ps"); return 1; } static cmsInt32Number CheckGray(cmsHTRANSFORM xform, cmsUInt8Number g, double L) { cmsCIELab Lab; cmsDoTransform(xform, &g, &Lab, 1); if (!IsGoodVal("a axis on gray", 0, Lab.a, 0.001)) return 0; if (!IsGoodVal("b axis on gray", 0, Lab.b, 0.001)) return 0; return IsGoodVal("Gray value", L, Lab.L, 0.01); } static cmsInt32Number CheckInputGray(void) { cmsHPROFILE hGray = Create_Gray22(); cmsHPROFILE hLab = cmsCreateLab4Profile(NULL); cmsHTRANSFORM xform; if (hGray == NULL || hLab == NULL) return 0; xform = cmsCreateTransform(hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hGray); cmsCloseProfile(hLab); if (!CheckGray(xform, 0, 0)) return 0; if (!CheckGray(xform, 125, 52.768)) return 0; if (!CheckGray(xform, 200, 81.069)) return 0; if (!CheckGray(xform, 255, 100.0)) return 0; cmsDeleteTransform(xform); return 1; } static cmsInt32Number CheckLabInputGray(void) { cmsHPROFILE hGray = Create_GrayLab(); cmsHPROFILE hLab = cmsCreateLab4Profile(NULL); cmsHTRANSFORM xform; if (hGray == NULL || hLab == NULL) return 0; xform = cmsCreateTransform(hGray, TYPE_GRAY_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hGray); cmsCloseProfile(hLab); if (!CheckGray(xform, 0, 0)) return 0; if (!CheckGray(xform, 125, 49.019)) return 0; if (!CheckGray(xform, 200, 78.431)) return 0; if (!CheckGray(xform, 255, 100.0)) return 0; cmsDeleteTransform(xform); return 1; } static cmsInt32Number CheckOutGray(cmsHTRANSFORM xform, double L, cmsUInt8Number g) { cmsCIELab Lab; cmsUInt8Number g_out; Lab.L = L; Lab.a = 0; Lab.b = 0; cmsDoTransform(xform, &Lab, &g_out, 1); return IsGoodVal("Gray value", g, (double) g_out, 0.01); } static cmsInt32Number CheckOutputGray(void) { cmsHPROFILE hGray = Create_Gray22(); cmsHPROFILE hLab = cmsCreateLab4Profile(NULL); cmsHTRANSFORM xform; if (hGray == NULL || hLab == NULL) return 0; xform = cmsCreateTransform( hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hGray); cmsCloseProfile(hLab); if (!CheckOutGray(xform, 0, 0)) return 0; if (!CheckOutGray(xform, 100, 255)) return 0; if (!CheckOutGray(xform, 20, 52)) return 0; if (!CheckOutGray(xform, 50, 118)) return 0; cmsDeleteTransform(xform); return 1; } static cmsInt32Number CheckLabOutputGray(void) { cmsHPROFILE hGray = Create_GrayLab(); cmsHPROFILE hLab = cmsCreateLab4Profile(NULL); cmsHTRANSFORM xform; cmsInt32Number i; if (hGray == NULL || hLab == NULL) return 0; xform = cmsCreateTransform( hLab, TYPE_Lab_DBL, hGray, TYPE_GRAY_8, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(hGray); cmsCloseProfile(hLab); if (!CheckOutGray(xform, 0, 0)) return 0; if (!CheckOutGray(xform, 100, 255)) return 0; for (i=0; i < 100; i++) { cmsUInt8Number g; g = (cmsUInt8Number) floor(i * 255.0 / 100.0 + 0.5); if (!CheckOutGray(xform, i, g)) return 0; } cmsDeleteTransform(xform); return 1; } static cmsInt32Number CheckV4gamma(void) { cmsHPROFILE h; cmsUInt16Number Lin[] = {0, 0xffff}; cmsToneCurve*g = cmsBuildTabulatedToneCurve16(DbgThread(), 2, Lin); h = cmsOpenProfileFromFileTHR(DbgThread(), "v4gamma.icc", "w"); if (h == NULL) return 0; cmsSetProfileVersion(h, 4.3); if (!cmsWriteTag(h, cmsSigGrayTRCTag, g)) return 0; cmsCloseProfile(h); cmsFreeToneCurve(g); remove("v4gamma.icc"); return 1; } // cmsBool cmsGBDdumpVRML(cmsHANDLE hGBD, const char* fname); // Gamut descriptor routines static cmsInt32Number CheckGBD(void) { cmsCIELab Lab; cmsHANDLE h; cmsInt32Number L, a, b; cmsUInt32Number r1, g1, b1; cmsHPROFILE hLab, hsRGB; cmsHTRANSFORM xform; h = cmsGBDAlloc(DbgThread()); if (h == NULL) return 0; // Fill all Lab gamut as valid SubTest("Filling RAW gamut"); for (L=0; L <= 100; L += 10) for (a = -128; a <= 128; a += 5) for (b = -128; b <= 128; b += 5) { Lab.L = L; Lab.a = a; Lab.b = b; if (!cmsGDBAddPoint(h, &Lab)) return 0; } // Complete boundaries SubTest("computing Lab gamut"); if (!cmsGDBCompute(h, 0)) return 0; // All points should be inside gamut SubTest("checking Lab gamut"); for (L=10; L <= 90; L += 25) for (a = -120; a <= 120; a += 25) for (b = -120; b <= 120; b += 25) { Lab.L = L; Lab.a = a; Lab.b = b; if (!cmsGDBCheckPoint(h, &Lab)) { return 0; } } cmsGBDFree(h); // Now for sRGB SubTest("checking sRGB gamut"); h = cmsGBDAlloc(DbgThread()); hsRGB = cmsCreate_sRGBProfile(); hLab = cmsCreateLab4Profile(NULL); xform = cmsCreateTransform(hsRGB, TYPE_RGB_8, hLab, TYPE_Lab_DBL, INTENT_RELATIVE_COLORIMETRIC, cmsFLAGS_NOCACHE); cmsCloseProfile(hsRGB); cmsCloseProfile(hLab); for (r1=0; r1 < 256; r1 += 5) { for (g1=0; g1 < 256; g1 += 5) for (b1=0; b1 < 256; b1 += 5) { cmsUInt8Number rgb[3]; rgb[0] = (cmsUInt8Number) r1; rgb[1] = (cmsUInt8Number) g1; rgb[2] = (cmsUInt8Number) b1; cmsDoTransform(xform, rgb, &Lab, 1); // if (fabs(Lab.b) < 20 && Lab.a > 0) continue; if (!cmsGDBAddPoint(h, &Lab)) { cmsGBDFree(h); return 0; } } } if (!cmsGDBCompute(h, 0)) return 0; // cmsGBDdumpVRML(h, "c:\\colormaps\\lab.wrl"); for (r1=10; r1 < 200; r1 += 10) { for (g1=10; g1 < 200; g1 += 10) for (b1=10; b1 < 200; b1 += 10) { cmsUInt8Number rgb[3]; rgb[0] = (cmsUInt8Number) r1; rgb[1] = (cmsUInt8Number) g1; rgb[2] = (cmsUInt8Number) b1; cmsDoTransform(xform, rgb, &Lab, 1); if (!cmsGDBCheckPoint(h, &Lab)) { cmsDeleteTransform(xform); cmsGBDFree(h); return 0; } } } cmsDeleteTransform(xform); cmsGBDFree(h); SubTest("checking LCh chroma ring"); h = cmsGBDAlloc(DbgThread()); for (r1=0; r1 < 360; r1++) { cmsCIELCh LCh; LCh.L = 70; LCh.C = 60; LCh.h = r1; cmsLCh2Lab(&Lab, &LCh); if (!cmsGDBAddPoint(h, &Lab)) { cmsGBDFree(h); return 0; } } if (!cmsGDBCompute(h, 0)) return 0; cmsGBDFree(h); return 1; } static int CheckMD5(void) { _cmsICCPROFILE* h; cmsHPROFILE pProfile = cmsOpenProfileFromFile("sRGBlcms2.icc", "r"); cmsProfileID ProfileID1, ProfileID2, ProfileID3, ProfileID4; h =(_cmsICCPROFILE*) pProfile; if (cmsMD5computeID(pProfile)) cmsGetHeaderProfileID(pProfile, ProfileID1.ID8); if (cmsMD5computeID(pProfile)) cmsGetHeaderProfileID(pProfile,ProfileID2.ID8); cmsCloseProfile(pProfile); pProfile = cmsOpenProfileFromFile("sRGBlcms2.icc", "r"); h =(_cmsICCPROFILE*) pProfile; if (cmsMD5computeID(pProfile)) cmsGetHeaderProfileID(pProfile, ProfileID3.ID8); if (cmsMD5computeID(pProfile)) cmsGetHeaderProfileID(pProfile,ProfileID4.ID8); cmsCloseProfile(pProfile); return ((memcmp(ProfileID1.ID8, ProfileID3.ID8, sizeof(ProfileID1)) == 0) && (memcmp(ProfileID2.ID8, ProfileID4.ID8, sizeof(ProfileID2)) == 0)); } static int CheckLinking(void) { cmsHPROFILE h; cmsPipeline * pipeline; cmsStage *stageBegin, *stageEnd; // Create a CLUT based profile h = cmsCreateInkLimitingDeviceLinkTHR(DbgThread(), cmsSigCmykData, 150); // link a second tag cmsLinkTag(h, cmsSigAToB1Tag, cmsSigAToB0Tag); // Save the linked devicelink if (!cmsSaveProfileToFile(h, "lcms2link.icc")) return 0; cmsCloseProfile(h); // Now open the profile and read the pipeline h = cmsOpenProfileFromFile("lcms2link.icc", "r"); if (h == NULL) return 0; pipeline = (cmsPipeline*) cmsReadTag(h, cmsSigAToB1Tag); if (pipeline == NULL) { return 0; } pipeline = cmsPipelineDup(pipeline); // extract stage from pipe line cmsPipelineUnlinkStage(pipeline, cmsAT_BEGIN, &stageBegin); cmsPipelineUnlinkStage(pipeline, cmsAT_END, &stageEnd); cmsPipelineInsertStage(pipeline, cmsAT_END, stageEnd); cmsPipelineInsertStage(pipeline, cmsAT_BEGIN, stageBegin); if (cmsTagLinkedTo(h, cmsSigAToB1Tag) != cmsSigAToB0Tag) return 0; cmsWriteTag(h, cmsSigAToB0Tag, pipeline); cmsPipelineFree(pipeline); if (!cmsSaveProfileToFile(h, "lcms2link2.icc")) return 0; cmsCloseProfile(h); return 1; } // TestMPE // // Created by Paul Miller on 30/08/2012. // static cmsHPROFILE IdentityMatrixProfile( cmsColorSpaceSignature dataSpace) { cmsContext ctx = 0; cmsVEC3 zero = {{0,0,0}}; cmsMAT3 identity; cmsPipeline* forward; cmsPipeline* reverse; cmsHPROFILE identityProfile = cmsCreateProfilePlaceholder( ctx); cmsSetProfileVersion(identityProfile, 4.3); cmsSetDeviceClass( identityProfile, cmsSigColorSpaceClass); cmsSetColorSpace(identityProfile, dataSpace); cmsSetPCS(identityProfile, cmsSigXYZData); cmsSetHeaderRenderingIntent(identityProfile, INTENT_RELATIVE_COLORIMETRIC); cmsWriteTag(identityProfile, cmsSigMediaWhitePointTag, cmsD50_XYZ()); _cmsMAT3identity( &identity); // build forward transform.... (RGB to PCS) forward = cmsPipelineAlloc( 0, 3, 3); cmsPipelineInsertStage( forward, cmsAT_END, cmsStageAllocMatrix( ctx, 3, 3, (cmsFloat64Number*)&identity, (cmsFloat64Number*)&zero)); cmsWriteTag( identityProfile, cmsSigDToB1Tag, forward); cmsPipelineFree( forward); reverse = cmsPipelineAlloc( 0, 3, 3); cmsPipelineInsertStage( reverse, cmsAT_END, cmsStageAllocMatrix( ctx, 3, 3, (cmsFloat64Number*)&identity, (cmsFloat64Number*)&zero)); cmsWriteTag( identityProfile, cmsSigBToD1Tag, reverse); cmsPipelineFree( reverse); return identityProfile; } static cmsInt32Number CheckFloatXYZ(void) { cmsHPROFILE input; cmsHPROFILE xyzProfile = cmsCreateXYZProfile(); cmsHTRANSFORM xform; cmsFloat32Number in[3]; cmsFloat32Number out[3]; in[0] = 1.0; in[1] = 1.0; in[2] = 1.0; // RGB to XYZ input = IdentityMatrixProfile( cmsSigRgbData); xform = cmsCreateTransform( input, TYPE_RGB_FLT, xyzProfile, TYPE_XYZ_FLT, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(input); cmsDoTransform( xform, in, out, 1); cmsDeleteTransform( xform); if (!IsGoodVal("Float RGB->XYZ", in[0], out[0], FLOAT_PRECISSION) || !IsGoodVal("Float RGB->XYZ", in[1], out[1], FLOAT_PRECISSION) || !IsGoodVal("Float RGB->XYZ", in[2], out[2], FLOAT_PRECISSION)) return 0; // XYZ to XYZ input = IdentityMatrixProfile( cmsSigXYZData); xform = cmsCreateTransform( input, TYPE_XYZ_FLT, xyzProfile, TYPE_XYZ_FLT, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(input); cmsDoTransform( xform, in, out, 1); cmsDeleteTransform( xform); if (!IsGoodVal("Float XYZ->XYZ", in[0], out[0], FLOAT_PRECISSION) || !IsGoodVal("Float XYZ->XYZ", in[1], out[1], FLOAT_PRECISSION) || !IsGoodVal("Float XYZ->XYZ", in[2], out[2], FLOAT_PRECISSION)) return 0; // XYZ to RGB input = IdentityMatrixProfile( cmsSigRgbData); xform = cmsCreateTransform( xyzProfile, TYPE_XYZ_FLT, input, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(input); cmsDoTransform( xform, in, out, 1); cmsDeleteTransform( xform); if (!IsGoodVal("Float XYZ->RGB", in[0], out[0], FLOAT_PRECISSION) || !IsGoodVal("Float XYZ->RGB", in[1], out[1], FLOAT_PRECISSION) || !IsGoodVal("Float XYZ->RGB", in[2], out[2], FLOAT_PRECISSION)) return 0; // Now the optimizer should remove a stage // XYZ to RGB input = IdentityMatrixProfile( cmsSigRgbData); xform = cmsCreateTransform( input, TYPE_RGB_FLT, input, TYPE_RGB_FLT, INTENT_RELATIVE_COLORIMETRIC, 0); cmsCloseProfile(input); cmsDoTransform( xform, in, out, 1); cmsDeleteTransform( xform); if (!IsGoodVal("Float RGB->RGB", in[0], out[0], FLOAT_PRECISSION) || !IsGoodVal("Float RGB->RGB", in[1], out[1], FLOAT_PRECISSION) || !IsGoodVal("Float RGB->RGB", in[2], out[2], FLOAT_PRECISSION)) return 0; cmsCloseProfile(xyzProfile); return 1; } /* Bug reported 1) sRGB built-in V4.3 -> Lab identity built-in V4.3 Flags: "cmsFLAGS_NOCACHE", "cmsFLAGS_NOOPTIMIZE" Input format: TYPE_RGBA_FLT Output format: TYPE_LabA_FLT 2) and back Lab identity built-in V4.3 -> sRGB built-in V4.3 Flags: "cmsFLAGS_NOCACHE", "cmsFLAGS_NOOPTIMIZE" Input format: TYPE_LabA_FLT Output format: TYPE_RGBA_FLT */ static cmsInt32Number ChecksRGB2LabFLT(void) { cmsHPROFILE hSRGB = cmsCreate_sRGBProfile(); cmsHPROFILE hLab = cmsCreateLab4Profile(NULL); cmsHTRANSFORM xform1 = cmsCreateTransform(hSRGB, TYPE_RGBA_FLT, hLab, TYPE_LabA_FLT, 0, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE); cmsHTRANSFORM xform2 = cmsCreateTransform(hLab, TYPE_LabA_FLT, hSRGB, TYPE_RGBA_FLT, 0, cmsFLAGS_NOCACHE|cmsFLAGS_NOOPTIMIZE); cmsFloat32Number RGBA1[4], RGBA2[4], LabA[4]; int i; for (i = 0; i <= 100; i++) { RGBA1[0] = i / 100.0F; RGBA1[1] = i / 100.0F; RGBA1[2] = i / 100.0F; RGBA1[3] = 0; cmsDoTransform(xform1, RGBA1, LabA, 1); cmsDoTransform(xform2, LabA, RGBA2, 1); if (!IsGoodVal("Float RGB->RGB", RGBA1[0], RGBA2[0], FLOAT_PRECISSION) || !IsGoodVal("Float RGB->RGB", RGBA1[1], RGBA2[1], FLOAT_PRECISSION) || !IsGoodVal("Float RGB->RGB", RGBA1[2], RGBA2[2], FLOAT_PRECISSION)) return 0; } cmsDeleteTransform(xform1); cmsDeleteTransform(xform2); cmsCloseProfile(hSRGB); cmsCloseProfile(hLab); return 1; } /* * parametric curve for Rec709 */ static double Rec709(double L) { if (L <0.018) return 4.5*L; else { double a = 1.099* pow(L, 0.45); a = a - 0.099; return a; } } static cmsInt32Number CheckParametricRec709(void) { cmsFloat64Number params[7]; cmsToneCurve* t; int i; params[0] = 0.45; /* y */ params[1] = pow(1.099, 1.0 / 0.45); /* a */ params[2] = 0.0; /* b */ params[3] = 4.5; /* c */ params[4] = 0.018; /* d */ params[5] = -0.099; /* e */ params[6] = 0.0; /* f */ t = cmsBuildParametricToneCurve (NULL, 5, params); for (i=0; i < 256; i++) { cmsFloat32Number n = (cmsFloat32Number) i / 255.0F; cmsUInt16Number f1 = (cmsUInt16Number) floor(255.0 * cmsEvalToneCurveFloat(t, n) + 0.5); cmsUInt16Number f2 = (cmsUInt16Number) floor(255.0*Rec709((double) i / 255.0) + 0.5); if (f1 != f2) { cmsFreeToneCurve(t); return 0; } } cmsFreeToneCurve(t); return 1; } #define kNumPoints 10 typedef cmsFloat32Number(*Function)(cmsFloat32Number x); static cmsFloat32Number StraightLine( cmsFloat32Number x) { return (cmsFloat32Number) (0.1 + 0.9 * x); } static cmsInt32Number TestCurve( const char* label, cmsToneCurve* curve, Function fn) { cmsInt32Number ok = 1; int i; for (i = 0; i < kNumPoints*3; i++) { cmsFloat32Number x = (cmsFloat32Number)i / (kNumPoints*3 - 1); cmsFloat32Number expectedY = fn(x); cmsFloat32Number out = cmsEvalToneCurveFloat( curve, x); if (!IsGoodVal(label, expectedY, out, FLOAT_PRECISSION)) { ok = 0; } } return ok; } static cmsInt32Number CheckFloatSamples(void) { cmsFloat32Number y[kNumPoints]; int i; cmsToneCurve *curve; cmsInt32Number ok; for (i = 0; i < kNumPoints; i++) { cmsFloat32Number x = (cmsFloat32Number)i / (kNumPoints-1); y[i] = StraightLine(x); } curve = cmsBuildTabulatedToneCurveFloat(NULL, kNumPoints, y); ok = TestCurve( "Float Samples", curve, StraightLine); cmsFreeToneCurve(curve); return ok; } static cmsInt32Number CheckFloatSegments(void) { cmsInt32Number ok = 1; int i; cmsToneCurve *curve; cmsFloat32Number y[ kNumPoints]; // build a segmented curve with a sampled section... cmsCurveSegment Seg[3]; // Initialize segmented curve part up to 0.1 Seg[0].x0 = -1e22f; // -infinity Seg[0].x1 = 0.1f; Seg[0].Type = 6; // Y = (a * X + b) ^ Gamma + c Seg[0].Params[0] = 1.0f; // gamma Seg[0].Params[1] = 0.9f; // a Seg[0].Params[2] = 0.0f; // b Seg[0].Params[3] = 0.1f; // c Seg[0].Params[4] = 0.0f; // From zero to 1 Seg[1].x0 = 0.1f; Seg[1].x1 = 0.9f; Seg[1].Type = 0; Seg[1].nGridPoints = kNumPoints; Seg[1].SampledPoints = y; for (i = 0; i < kNumPoints; i++) { cmsFloat32Number x = (cmsFloat32Number) (0.1 + ((cmsFloat32Number)i / (kNumPoints-1)) * (0.9 - 0.1)); y[i] = StraightLine(x); } // from 1 to +infinity Seg[2].x0 = 0.9f; Seg[2].x1 = 1e22f; // +infinity Seg[2].Type = 6; Seg[2].Params[0] = 1.0f; Seg[2].Params[1] = 0.9f; Seg[2].Params[2] = 0.0f; Seg[2].Params[3] = 0.1f; Seg[2].Params[4] = 0.0f; curve = cmsBuildSegmentedToneCurve(0, 3, Seg); ok = TestCurve( "Float Segmented Curve", curve, StraightLine); cmsFreeToneCurve( curve); return ok; } static cmsInt32Number CheckReadRAW(void) { cmsInt32Number tag_size, tag_size1; char buffer[4]; cmsHPROFILE hProfile; SubTest("RAW read on on-disk"); hProfile = cmsOpenProfileFromFile("test1.icc", "r"); if (hProfile == NULL) return 0; tag_size = cmsReadRawTag(hProfile, cmsSigGamutTag, buffer, 4); tag_size1 = cmsReadRawTag(hProfile, cmsSigGamutTag, NULL, 0); cmsCloseProfile(hProfile); if (tag_size != 4) return 0; if (tag_size1 != 37009) return 0; SubTest("RAW read on in-memory created profiles"); hProfile = cmsCreate_sRGBProfile(); tag_size = cmsReadRawTag(hProfile, cmsSigGreenColorantTag, buffer, 4); tag_size1 = cmsReadRawTag(hProfile, cmsSigGreenColorantTag, NULL, 0); cmsCloseProfile(hProfile); if (tag_size != 4) return 0; if (tag_size1 != 20) return 0; return 1; } // -------------------------------------------------------------------------------------------------- // P E R F O R M A N C E C H E C K S // -------------------------------------------------------------------------------------------------- typedef struct {cmsUInt8Number r, g, b, a;} Scanline_rgb1; typedef struct {cmsUInt16Number r, g, b, a;} Scanline_rgb2; typedef struct {cmsUInt8Number r, g, b;} Scanline_rgb8; typedef struct {cmsUInt16Number r, g, b;} Scanline_rgb0; static void TitlePerformance(const char* Txt) { printf("%-45s: ", Txt); fflush(stdout); } static void PrintPerformance(cmsUInt32Number Bytes, cmsUInt32Number SizeOfPixel, cmsFloat64Number diff) { cmsFloat64Number seconds = (cmsFloat64Number) diff / CLOCKS_PER_SEC; cmsFloat64Number mpix_sec = Bytes / (1024.0*1024.0*seconds*SizeOfPixel); printf("%g MPixel/sec.\n", mpix_sec); fflush(stdout); } static void SpeedTest16bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent) { cmsInt32Number r, g, b, j; clock_t atime; cmsFloat64Number diff; cmsHTRANSFORM hlcmsxform; Scanline_rgb0 *In; cmsUInt32Number Mb; if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL) Die("Unable to open profiles"); hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_RGB_16, hlcmsProfileOut, TYPE_RGB_16, Intent, cmsFLAGS_NOCACHE); cmsCloseProfile(hlcmsProfileIn); cmsCloseProfile(hlcmsProfileOut); Mb = 256*256*256*sizeof(Scanline_rgb0); In = (Scanline_rgb0*) malloc(Mb); j = 0; for (r=0; r < 256; r++) for (g=0; g < 256; g++) for (b=0; b < 256; b++) { In[j].r = (cmsUInt16Number) ((r << 8) | r); In[j].g = (cmsUInt16Number) ((g << 8) | g); In[j].b = (cmsUInt16Number) ((b << 8) | b); j++; } TitlePerformance(Title); atime = clock(); cmsDoTransform(hlcmsxform, In, In, 256*256*256); diff = clock() - atime; free(In); PrintPerformance(Mb, sizeof(Scanline_rgb0), diff); cmsDeleteTransform(hlcmsxform); } static void SpeedTest16bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut) { cmsInt32Number r, g, b, j; clock_t atime; cmsFloat64Number diff; cmsHTRANSFORM hlcmsxform; Scanline_rgb2 *In; cmsUInt32Number Mb; if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL) Die("Unable to open profiles"); hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_CMYK_16, hlcmsProfileOut, TYPE_CMYK_16, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE); cmsCloseProfile(hlcmsProfileIn); cmsCloseProfile(hlcmsProfileOut); Mb = 256*256*256*sizeof(Scanline_rgb2); In = (Scanline_rgb2*) malloc(Mb); j = 0; for (r=0; r < 256; r++) for (g=0; g < 256; g++) for (b=0; b < 256; b++) { In[j].r = (cmsUInt16Number) ((r << 8) | r); In[j].g = (cmsUInt16Number) ((g << 8) | g); In[j].b = (cmsUInt16Number) ((b << 8) | b); In[j].a = 0; j++; } TitlePerformance(Title); atime = clock(); cmsDoTransform(hlcmsxform, In, In, 256*256*256); diff = clock() - atime; free(In); PrintPerformance(Mb, sizeof(Scanline_rgb2), diff); cmsDeleteTransform(hlcmsxform); } static void SpeedTest8bits(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent) { cmsInt32Number r, g, b, j; clock_t atime; cmsFloat64Number diff; cmsHTRANSFORM hlcmsxform; Scanline_rgb8 *In; cmsUInt32Number Mb; if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL) Die("Unable to open profiles"); hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_RGB_8, hlcmsProfileOut, TYPE_RGB_8, Intent, cmsFLAGS_NOCACHE); cmsCloseProfile(hlcmsProfileIn); cmsCloseProfile(hlcmsProfileOut); Mb = 256*256*256*sizeof(Scanline_rgb8); In = (Scanline_rgb8*) malloc(Mb); j = 0; for (r=0; r < 256; r++) for (g=0; g < 256; g++) for (b=0; b < 256; b++) { In[j].r = (cmsUInt8Number) r; In[j].g = (cmsUInt8Number) g; In[j].b = (cmsUInt8Number) b; j++; } TitlePerformance(Title); atime = clock(); cmsDoTransform(hlcmsxform, In, In, 256*256*256); diff = clock() - atime; free(In); PrintPerformance(Mb, sizeof(Scanline_rgb8), diff); cmsDeleteTransform(hlcmsxform); } static void SpeedTest8bitsCMYK(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut) { cmsInt32Number r, g, b, j; clock_t atime; cmsFloat64Number diff; cmsHTRANSFORM hlcmsxform; Scanline_rgb2 *In; cmsUInt32Number Mb; if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL) Die("Unable to open profiles"); hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_CMYK_8, hlcmsProfileOut, TYPE_CMYK_8, INTENT_PERCEPTUAL, cmsFLAGS_NOCACHE); cmsCloseProfile(hlcmsProfileIn); cmsCloseProfile(hlcmsProfileOut); Mb = 256*256*256*sizeof(Scanline_rgb2); In = (Scanline_rgb2*) malloc(Mb); j = 0; for (r=0; r < 256; r++) for (g=0; g < 256; g++) for (b=0; b < 256; b++) { In[j].r = (cmsUInt8Number) r; In[j].g = (cmsUInt8Number) g; In[j].b = (cmsUInt8Number) b; In[j].a = (cmsUInt8Number) 0; j++; } TitlePerformance(Title); atime = clock(); cmsDoTransform(hlcmsxform, In, In, 256*256*256); diff = clock() - atime; free(In); PrintPerformance(Mb, sizeof(Scanline_rgb2), diff); cmsDeleteTransform(hlcmsxform); } static void SpeedTest8bitsGray(const char * Title, cmsHPROFILE hlcmsProfileIn, cmsHPROFILE hlcmsProfileOut, cmsInt32Number Intent) { cmsInt32Number r, g, b, j; clock_t atime; cmsFloat64Number diff; cmsHTRANSFORM hlcmsxform; cmsUInt8Number *In; cmsUInt32Number Mb; if (hlcmsProfileIn == NULL || hlcmsProfileOut == NULL) Die("Unable to open profiles"); hlcmsxform = cmsCreateTransformTHR(DbgThread(), hlcmsProfileIn, TYPE_GRAY_8, hlcmsProfileOut, TYPE_GRAY_8, Intent, cmsFLAGS_NOCACHE); cmsCloseProfile(hlcmsProfileIn); cmsCloseProfile(hlcmsProfileOut); Mb = 256*256*256; In = (cmsUInt8Number*) malloc(Mb); j = 0; for (r=0; r < 256; r++) for (g=0; g < 256; g++) for (b=0; b < 256; b++) { In[j] = (cmsUInt8Number) r; j++; } TitlePerformance(Title); atime = clock(); cmsDoTransform(hlcmsxform, In, In, 256*256*256); diff = clock() - atime; free(In); PrintPerformance(Mb, sizeof(cmsUInt8Number), diff); cmsDeleteTransform(hlcmsxform); } static cmsHPROFILE CreateCurves(void) { cmsToneCurve* Gamma = cmsBuildGamma(DbgThread(), 1.1); cmsToneCurve* Transfer[3]; cmsHPROFILE h; Transfer[0] = Transfer[1] = Transfer[2] = Gamma; h = cmsCreateLinearizationDeviceLink(cmsSigRgbData, Transfer); cmsFreeToneCurve(Gamma); return h; } static void SpeedTest(void) { printf("\n\nP E R F O R M A N C E T E S T S\n"); printf( "=================================\n\n"); fflush(stdout); SpeedTest16bits("16 bits on CLUT profiles", cmsOpenProfileFromFile("test5.icc", "r"), cmsOpenProfileFromFile("test3.icc", "r"), INTENT_PERCEPTUAL); SpeedTest8bits("8 bits on CLUT profiles", cmsOpenProfileFromFile("test5.icc", "r"), cmsOpenProfileFromFile("test3.icc", "r"), INTENT_PERCEPTUAL); SpeedTest8bits("8 bits on Matrix-Shaper profiles", cmsOpenProfileFromFile("test5.icc", "r"), cmsOpenProfileFromFile("aRGBlcms2.icc", "r"), INTENT_PERCEPTUAL); SpeedTest8bits("8 bits on SAME Matrix-Shaper profiles", cmsOpenProfileFromFile("test5.icc", "r"), cmsOpenProfileFromFile("test5.icc", "r"), INTENT_PERCEPTUAL); SpeedTest8bits("8 bits on Matrix-Shaper profiles (AbsCol)", cmsOpenProfileFromFile("test5.icc", "r"), cmsOpenProfileFromFile("aRGBlcms2.icc", "r"), INTENT_ABSOLUTE_COLORIMETRIC); SpeedTest16bits("16 bits on Matrix-Shaper profiles", cmsOpenProfileFromFile("test5.icc", "r"), cmsOpenProfileFromFile("aRGBlcms2.icc", "r"), INTENT_PERCEPTUAL); SpeedTest16bits("16 bits on SAME Matrix-Shaper profiles", cmsOpenProfileFromFile("aRGBlcms2.icc", "r"), cmsOpenProfileFromFile("aRGBlcms2.icc", "r"), INTENT_PERCEPTUAL); SpeedTest16bits("16 bits on Matrix-Shaper profiles (AbsCol)", cmsOpenProfileFromFile("test5.icc", "r"), cmsOpenProfileFromFile("aRGBlcms2.icc", "r"), INTENT_ABSOLUTE_COLORIMETRIC); SpeedTest8bits("8 bits on curves", CreateCurves(), CreateCurves(), INTENT_PERCEPTUAL); SpeedTest16bits("16 bits on curves", CreateCurves(), CreateCurves(), INTENT_PERCEPTUAL); SpeedTest8bitsCMYK("8 bits on CMYK profiles", cmsOpenProfileFromFile("test1.icc", "r"), cmsOpenProfileFromFile("test2.icc", "r")); SpeedTest16bitsCMYK("16 bits on CMYK profiles", cmsOpenProfileFromFile("test1.icc", "r"), cmsOpenProfileFromFile("test2.icc", "r")); SpeedTest8bitsGray("8 bits on gray-to gray", cmsOpenProfileFromFile("gray3lcms2.icc", "r"), cmsOpenProfileFromFile("graylcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC); SpeedTest8bitsGray("8 bits on gray-to-lab gray", cmsOpenProfileFromFile("graylcms2.icc", "r"), cmsOpenProfileFromFile("glablcms2.icc", "r"), INTENT_RELATIVE_COLORIMETRIC); SpeedTest8bitsGray("8 bits on SAME gray-to-gray", cmsOpenProfileFromFile("graylcms2.icc", "r"), cmsOpenProfileFromFile("graylcms2.icc", "r"), INTENT_PERCEPTUAL); } // ----------------------------------------------------------------------------------------------------- // Print the supported intents static void PrintSupportedIntents(void) { cmsUInt32Number n, i; cmsUInt32Number Codes[200]; char* Descriptions[200]; n = cmsGetSupportedIntents(200, Codes, Descriptions); printf("Supported intents:\n"); for (i=0; i < n; i++) { printf("\t%u - %s\n", Codes[i], Descriptions[i]); } printf("\n"); } // ZOO checks ------------------------------------------------------------------------------------------------------------ #ifdef CMS_IS_WINDOWS_ static char ZOOfolder[cmsMAX_PATH] = "c:\\colormaps\\"; static char ZOOwrite[cmsMAX_PATH] = "c:\\colormaps\\write\\"; static char ZOORawWrite[cmsMAX_PATH] = "c:\\colormaps\\rawwrite\\"; // Read all tags on a profile given by its handle static void ReadAllTags(cmsHPROFILE h) { cmsInt32Number i, n; cmsTagSignature sig; n = cmsGetTagCount(h); for (i=0; i < n; i++) { sig = cmsGetTagSignature(h, i); if (cmsReadTag(h, sig) == NULL) return; } } // Read all tags on a profile given by its handle static void ReadAllRAWTags(cmsHPROFILE h) { cmsInt32Number i, n; cmsTagSignature sig; cmsInt32Number len; n = cmsGetTagCount(h); for (i=0; i < n; i++) { sig = cmsGetTagSignature(h, i); len = cmsReadRawTag(h, sig, NULL, 0); } } static void PrintInfo(cmsHPROFILE h, cmsInfoType Info) { wchar_t* text; cmsInt32Number len; cmsContext id = DbgThread(); len = cmsGetProfileInfo(h, Info, "en", "US", NULL, 0); if (len == 0) return; text = _cmsMalloc(id, len); cmsGetProfileInfo(h, Info, "en", "US", text, len); wprintf(L"%s\n", text); _cmsFree(id, text); } static void PrintAllInfos(cmsHPROFILE h) { PrintInfo(h, cmsInfoDescription); PrintInfo(h, cmsInfoManufacturer); PrintInfo(h, cmsInfoModel); PrintInfo(h, cmsInfoCopyright); printf("\n\n"); } static void ReadAllLUTS(cmsHPROFILE h) { cmsPipeline* a; cmsCIEXYZ Black; a = _cmsReadInputLUT(h, INTENT_PERCEPTUAL); if (a) cmsPipelineFree(a); a = _cmsReadInputLUT(h, INTENT_RELATIVE_COLORIMETRIC); if (a) cmsPipelineFree(a); a = _cmsReadInputLUT(h, INTENT_SATURATION); if (a) cmsPipelineFree(a); a = _cmsReadInputLUT(h, INTENT_ABSOLUTE_COLORIMETRIC); if (a) cmsPipelineFree(a); a = _cmsReadOutputLUT(h, INTENT_PERCEPTUAL); if (a) cmsPipelineFree(a); a = _cmsReadOutputLUT(h, INTENT_RELATIVE_COLORIMETRIC); if (a) cmsPipelineFree(a); a = _cmsReadOutputLUT(h, INTENT_SATURATION); if (a) cmsPipelineFree(a); a = _cmsReadOutputLUT(h, INTENT_ABSOLUTE_COLORIMETRIC); if (a) cmsPipelineFree(a); a = _cmsReadDevicelinkLUT(h, INTENT_PERCEPTUAL); if (a) cmsPipelineFree(a); a = _cmsReadDevicelinkLUT(h, INTENT_RELATIVE_COLORIMETRIC); if (a) cmsPipelineFree(a); a = _cmsReadDevicelinkLUT(h, INTENT_SATURATION); if (a) cmsPipelineFree(a); a = _cmsReadDevicelinkLUT(h, INTENT_ABSOLUTE_COLORIMETRIC); if (a) cmsPipelineFree(a); cmsDetectDestinationBlackPoint(&Black, h, INTENT_PERCEPTUAL, 0); cmsDetectDestinationBlackPoint(&Black, h, INTENT_RELATIVE_COLORIMETRIC, 0); cmsDetectDestinationBlackPoint(&Black, h, INTENT_SATURATION, 0); cmsDetectDestinationBlackPoint(&Black, h, INTENT_ABSOLUTE_COLORIMETRIC, 0); cmsDetectTAC(h); } // Check one specimen in the ZOO static cmsInt32Number CheckSingleSpecimen(const char* Profile) { char BuffSrc[256]; char BuffDst[256]; cmsHPROFILE h; sprintf(BuffSrc, "%s%s", ZOOfolder, Profile); sprintf(BuffDst, "%s%s", ZOOwrite, Profile); h = cmsOpenProfileFromFile(BuffSrc, "r"); if (h == NULL) return 0; printf("%s\n", Profile); PrintAllInfos(h); ReadAllTags(h); // ReadAllRAWTags(h); ReadAllLUTS(h); cmsSaveProfileToFile(h, BuffDst); cmsCloseProfile(h); h = cmsOpenProfileFromFile(BuffDst, "r"); if (h == NULL) return 0; ReadAllTags(h); cmsCloseProfile(h); return 1; } static cmsInt32Number CheckRAWSpecimen(const char* Profile) { char BuffSrc[256]; char BuffDst[256]; cmsHPROFILE h; sprintf(BuffSrc, "%s%s", ZOOfolder, Profile); sprintf(BuffDst, "%s%s", ZOORawWrite, Profile); h = cmsOpenProfileFromFile(BuffSrc, "r"); if (h == NULL) return 0; ReadAllTags(h); ReadAllRAWTags(h); cmsSaveProfileToFile(h, BuffDst); cmsCloseProfile(h); h = cmsOpenProfileFromFile(BuffDst, "r"); if (h == NULL) return 0; ReadAllTags(h); cmsCloseProfile(h); return 1; } static void CheckProfileZOO(void) { struct _finddata_t c_file; intptr_t hFile; cmsSetLogErrorHandler(NULL); if ( (hFile = _findfirst("c:\\colormaps\\*.*", &c_file)) == -1L ) printf("No files in current directory"); else { do { printf("%s\n", c_file.name); if (strcmp(c_file.name, ".") != 0 && strcmp(c_file.name, "..") != 0) { CheckSingleSpecimen( c_file.name); CheckRAWSpecimen( c_file.name); if (TotalMemory > 0) printf("Ok, but %s are left!\n", MemStr(TotalMemory)); else printf("Ok.\n"); } } while ( _findnext(hFile, &c_file) == 0 ); _findclose(hFile); } cmsSetLogErrorHandler(FatalErrorQuit); } #endif #if 0 #define TYPE_709 709 static double Rec709Math(int Type, const double Params[], double R) { double Fun; switch (Type) { case 709: if (R <= (Params[3]*Params[4])) Fun = R / Params[3]; else Fun = pow(((R - Params[2])/Params[1]), Params[0]); break; case -709: if (R <= Params[4]) Fun = R * Params[3]; else Fun = Params[1] * pow(R, (1/Params[0])) + Params[2]; break; } return Fun; } // Add nonstandard TRC curves -> Rec709 cmsPluginParametricCurves NewCurvePlugin = { { cmsPluginMagicNumber, 2000, cmsPluginParametricCurveSig, NULL }, 1, {TYPE_709}, {5}, Rec709Math}; #endif // --------------------------------------------------------------------------------------- int main(int argc, char* argv[]) { cmsInt32Number Exhaustive = 0; cmsInt32Number DoSpeedTests = 1; cmsInt32Number DoCheckTests = 1; #ifdef _MSC_VER _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #endif printf("LittleCMS %2.2f test bed %s %s\n\n", LCMS_VERSION / 1000.0, __DATE__, __TIME__); if ((argc == 2) && strcmp(argv[1], "--exhaustive") == 0) { Exhaustive = 1; printf("Running exhaustive tests (will take a while...)\n\n"); } printf("Installing debug memory plug-in ... "); cmsPlugin(&DebugMemHandler); printf("done.\n"); printf("Installing error logger ... "); cmsSetLogErrorHandler(FatalErrorQuit); printf("done.\n"); #ifdef CMS_IS_WINDOWS_ // CheckProfileZOO(); #endif PrintSupportedIntents(); // Create utility profiles Check("Creation of test profiles", CreateTestProfiles); if (DoCheckTests) { Check("Base types", CheckBaseTypes); Check("endianess", CheckEndianess); Check("quick floor", CheckQuickFloor); Check("quick floor word", CheckQuickFloorWord); Check("Fixed point 15.16 representation", CheckFixedPoint15_16); Check("Fixed point 8.8 representation", CheckFixedPoint8_8); // Forward 1D interpolation Check("1D interpolation in 2pt tables", Check1DLERP2); Check("1D interpolation in 3pt tables", Check1DLERP3); Check("1D interpolation in 4pt tables", Check1DLERP4); Check("1D interpolation in 6pt tables", Check1DLERP6); Check("1D interpolation in 18pt tables", Check1DLERP18); Check("1D interpolation in descending 2pt tables", Check1DLERP2Down); Check("1D interpolation in descending 3pt tables", Check1DLERP3Down); Check("1D interpolation in descending 6pt tables", Check1DLERP6Down); Check("1D interpolation in descending 18pt tables", Check1DLERP18Down); if (Exhaustive) { Check("1D interpolation in n tables", ExhaustiveCheck1DLERP); Check("1D interpolation in descending tables", ExhaustiveCheck1DLERPDown); } // Forward 3D interpolation Check("3D interpolation Tetrahedral (float) ", Check3DinterpolationFloatTetrahedral); Check("3D interpolation Trilinear (float) ", Check3DinterpolationFloatTrilinear); Check("3D interpolation Tetrahedral (16) ", Check3DinterpolationTetrahedral16); Check("3D interpolation Trilinear (16) ", Check3DinterpolationTrilinear16); if (Exhaustive) { Check("Exhaustive 3D interpolation Tetrahedral (float) ", ExaustiveCheck3DinterpolationFloatTetrahedral); Check("Exhaustive 3D interpolation Trilinear (float) ", ExaustiveCheck3DinterpolationFloatTrilinear); Check("Exhaustive 3D interpolation Tetrahedral (16) ", ExhaustiveCheck3DinterpolationTetrahedral16); Check("Exhaustive 3D interpolation Trilinear (16) ", ExhaustiveCheck3DinterpolationTrilinear16); } Check("Reverse interpolation 3 -> 3", CheckReverseInterpolation3x3); Check("Reverse interpolation 4 -> 3", CheckReverseInterpolation4x3); // High dimensionality interpolation Check("3D interpolation", Check3Dinterp); Check("3D interpolation with granularity", Check3DinterpGranular); Check("4D interpolation", Check4Dinterp); Check("4D interpolation with granularity", Check4DinterpGranular); Check("5D interpolation with granularity", Check5DinterpGranular); Check("6D interpolation with granularity", Check6DinterpGranular); Check("7D interpolation with granularity", Check7DinterpGranular); Check("8D interpolation with granularity", Check8DinterpGranular); // Encoding of colorspaces Check("Lab to LCh and back (float only) ", CheckLab2LCh); Check("Lab to XYZ and back (float only) ", CheckLab2XYZ); Check("Lab to xyY and back (float only) ", CheckLab2xyY); Check("Lab V2 encoding", CheckLabV2encoding); Check("Lab V4 encoding", CheckLabV4encoding); // BlackBody Check("Blackbody radiator", CheckTemp2CHRM); // Tone curves Check("Linear gamma curves (16 bits)", CheckGammaCreation16); Check("Linear gamma curves (float)", CheckGammaCreationFlt); Check("Curve 1.8 (float)", CheckGamma18); Check("Curve 2.2 (float)", CheckGamma22); Check("Curve 3.0 (float)", CheckGamma30); Check("Curve 1.8 (table)", CheckGamma18Table); Check("Curve 2.2 (table)", CheckGamma22Table); Check("Curve 3.0 (table)", CheckGamma30Table); Check("Curve 1.8 (word table)", CheckGamma18TableWord); Check("Curve 2.2 (word table)", CheckGamma22TableWord); Check("Curve 3.0 (word table)", CheckGamma30TableWord); Check("Parametric curves", CheckParametricToneCurves); Check("Join curves", CheckJointCurves); Check("Join curves descending", CheckJointCurvesDescending); Check("Join curves degenerated", CheckReverseDegenerated); Check("Join curves sRGB (Float)", CheckJointFloatCurves_sRGB); Check("Join curves sRGB (16 bits)", CheckJoint16Curves_sRGB); Check("Join curves sigmoidal", CheckJointCurvesSShaped); // LUT basics Check("LUT creation & dup", CheckLUTcreation); Check("1 Stage LUT ", Check1StageLUT); Check("2 Stage LUT ", Check2StageLUT); Check("2 Stage LUT (16 bits)", Check2Stage16LUT); Check("3 Stage LUT ", Check3StageLUT); Check("3 Stage LUT (16 bits)", Check3Stage16LUT); Check("4 Stage LUT ", Check4StageLUT); Check("4 Stage LUT (16 bits)", Check4Stage16LUT); Check("5 Stage LUT ", Check5StageLUT); Check("5 Stage LUT (16 bits) ", Check5Stage16LUT); Check("6 Stage LUT ", Check6StageLUT); Check("6 Stage LUT (16 bits) ", Check6Stage16LUT); // LUT operation Check("Lab to Lab LUT (float only) ", CheckLab2LabLUT); Check("XYZ to XYZ LUT (float only) ", CheckXYZ2XYZLUT); Check("Lab to Lab MAT LUT (float only) ", CheckLab2LabMatLUT); Check("Named Color LUT", CheckNamedColorLUT); Check("Usual formatters", CheckFormatters16); Check("Floating point formatters", CheckFormattersFloat); #ifndef CMS_NO_HALF_SUPPORT Check("HALF formatters", CheckFormattersHalf); #endif // ChangeBuffersFormat Check("ChangeBuffersFormat", CheckChangeBufferFormat); // MLU Check("Multilocalized Unicode", CheckMLU); // Named color Check("Named color lists", CheckNamedColorList); // Profile I/O (this one is huge!) Check("Profile creation", CheckProfileCreation); // Error reporting Check("Error reporting on bad profiles", CheckErrReportingOnBadProfiles); Check("Error reporting on bad transforms", CheckErrReportingOnBadTransforms); // Transforms Check("Curves only transforms", CheckCurvesOnlyTransforms); Check("Float Lab->Lab transforms", CheckFloatLabTransforms); Check("Encoded Lab->Lab transforms", CheckEncodedLabTransforms); Check("Stored identities", CheckStoredIdentities); Check("Matrix-shaper transform (float)", CheckMatrixShaperXFORMFloat); Check("Matrix-shaper transform (16 bits)", CheckMatrixShaperXFORM16); Check("Matrix-shaper transform (8 bits)", CheckMatrixShaperXFORM8); Check("Primaries of sRGB", CheckRGBPrimaries); // Known values Check("Known values across matrix-shaper", Chack_sRGB_Float); Check("Gray input profile", CheckInputGray); Check("Gray Lab input profile", CheckLabInputGray); Check("Gray output profile", CheckOutputGray); Check("Gray Lab output profile", CheckLabOutputGray); Check("Matrix-shaper proofing transform (float)", CheckProofingXFORMFloat); Check("Matrix-shaper proofing transform (16 bits)", CheckProofingXFORM16); Check("Gamut check", CheckGamutCheck); Check("CMYK roundtrip on perceptual transform", CheckCMYKRoundtrip); Check("CMYK perceptual transform", CheckCMYKPerceptual); // Check("CMYK rel.col. transform", CheckCMYKRelCol); Check("Black ink only preservation", CheckKOnlyBlackPreserving); Check("Black plane preservation", CheckKPlaneBlackPreserving); Check("Deciding curve types", CheckV4gamma); Check("Black point detection", CheckBlackPoint); Check("TAC detection", CheckTAC); Check("CGATS parser", CheckCGATS); Check("PostScript generator", CheckPostScript); Check("Segment maxima GBD", CheckGBD); Check("MD5 digest", CheckMD5); Check("Linking", CheckLinking); Check("floating point tags on XYZ", CheckFloatXYZ); Check("RGB->Lab->RGB with alpha on FLT", ChecksRGB2LabFLT); Check("Parametric curve on Rec709", CheckParametricRec709); Check("Floating Point sampled curve with non-zero start", CheckFloatSamples); Check("Floating Point segmented curve with short sampled segement", CheckFloatSegments); Check("Read RAW portions", CheckReadRAW); } if (DoSpeedTests) SpeedTest(); DebugMemPrintTotals(); cmsUnregisterPlugins(); // Cleanup RemoveTestProfiles(); return TotalFail; } lcms2-2.5/testbed/bad.icc0000644002406300000240000000046612163060730014571 0ustar mariamausersSHELL = /bin/sh CFLAGS = -g -O4 -fomit-frame-pointer -Wall -I../include testcms.o: testcms.c testcms: testcms.o ../src/liblcms.a $(CC) $(CFLAGS) testcms.o ../src/liblcms.a -o $@ -lm all: testcms test test: testcms ./testcms install: # Nothing to install clean: -rm testcms.o testcms testcms.exe lcms2-2.5/testbed/test2.icc0000755002406300000240000237624012163060730015117 0ustar mariamausers lcmsprtrCMYKLab 5acspMSFT-lcms desccprt#wtptA2B0,_fA2B2,_fA2B1a_fB2A08B2A18B2A22d8gamt kdmnd dmdd ,tdesc,Test profile, not suitable for real use-Test profile, not suitable for real usetextNot suitable for real useXYZ IÂmft2 -Ge % M u EtHHt !"$,%Z&'(*+E,s-.0132e345728]9:;=>;?i@ABD"EPFzGHIKLCMjNOPRS&TKUjVWXYZ\]*^F_b`abcdf g&hAi]jyklmnp q-rMsntuvwxy{ |"}9~Phʄ*AXoĐؑ.<=<:852/+'# ׮ϯǰo]K9'ǼȪɗʄp\H3ҵӒnI#تـT'ݘg5e0[%k&V7Yy.Pw/P^X"7Ni * Jl.[8^!"+#V$%&())*S+~,-/011a23467;8e9:;=>J?z@ABD!EGFlGHIKL$MGNjOPQRSUV5WRXoYZ[\^ _%`>aXbrcdefgij;k[l|mnoprst5uPvkwxyz|}"~Ca{˄8Rmӏ,9FR]hr{|wroljiijkmosvspmkihfeeeeeeeefeedb`]O?.ժ֏rS3ܟuJZ&Br,T t(=KT\ fnf>j#6Ld~  5RpAa / S!x"#$&'#(E)g*+,-/0>1`23457889]:;<=?@A:BUCqDEFGHJ K#L:MPNgO}PQRSTVWX3YDZU[f\x]^_`abdef5gKhcizjklmnpq0rLsituvwxz{2|O}l~Á6Rm֌2G\oəٚ $'+/38=BGMSZ`gnu|“ÚĢŪƬǧȢɜʖˏ̆}sgZL=+بٍqS4ߩS!K_!_Mt*Jf8T[:i&8Ng *@Vl $<T m!"#$%&().*E+\,s-./0124 5"687M8c9x:;<=>?A BC4DHE\FpGHIJKLMOPQ-R@SRTeUwVWXYZ[\^ _`.a@bRcdduefghijkmno"p3qCrTsdttuvwxyz{|},:IWftȍ֎ $0|7{̑|֩ڽ|}|u|YԢ|1|,.||/iG|=TN|A;|z3}ط}7u`|є|ɲ|OC|.za|f{Q{ר9&{pjx$N~~"dVfqth}^E2#TCG.c0ϽaĨ܄s>ӄ]LDq#߅f{s]jY dǂcA4QVBւ3mr!.\NDO$D텃_/ {͂S_ꏙTmpځG[~C$H4끃 \ ف~O0ׂ΀oZ1C$[$u:{s6Eƾǡ㵏Xo2ߚ풪vmlmY"|8A "(爂.jJ*֐=?~^vk[WC䓒?5pS%;|=FrG7碽|)\itU{S3='?~t >X ٝ$yRgG^SS~ӛe;~wV}rƂུ˜@47w%%n yې_3I-U kꞝ` JxCfbSP"<9كXܸ{Ĩ(٩J'vZڜd.Q:ƀNGؑא$W ΰ^|NڃxtblȞ>Od8D~ZՒt3YmلÂGaqhP~_v2L57 |ٍӟ%p|~?u"ҐQMo ]L+I;3-~Y{'|c|䏆}s}Ԍg~*~|щjV(L@*Մ!ڈfS؃Rʂˋ劁{SL ikPUՇ?b!፳5)*,5f61Fy戻h-Tdž߇>[!ЎbIc!sΌ\Ysx[%vfۇ$S@=񅨊!͏ӊmF8זɐvڇme.RK=J!}ېaџbj̜̋>͔bÈTtԇcQ.>;ÄGlʑY͐=m ⌢@ WrrayOR{90ɐn=fЌ{lҦ{݉iGpn;p_M 7ǂϕm+ܐ¼.h?Gĭu娼~]n+堓]u1KipU5#gyS˺N0?uغxD+{=SkZ„PH)2X~3g}aRyދ %PyG!1i@m\X_F=0(⠐|γ{!{|*E|}_x~'vQe׀TS =!?#ق۔trdӓL͎̄~uAĂkdcD#Q_< É7Ay3*7pՇˇ,c3sՌ;c! PމF;9 ɉ``,LёCZ[/)dErJa͊,O͈H;" JǗ7Ɖ󈲐(ӛs )]xwjt[.J~7ǑQ`O2o󟉘avh@UYh$.Hv5HX6d*O9~$Wt8_fsՔ_WfG3q AԞlH`=LTdrFdqpU9E\V1u6<j2$' ;~@9pcbKS^֛QC?/2@N4ƥjf_ѕW{2m_ƌ٣PK@m(,U}̱NSry-kݏ`]MNe5=̥)8 -czJJzH{L{[|~w}Wi~hZ\Iߐ5X\Ў06#4ϣBSdZ€xv hU8qYLuHΏb 51DOWݛsg~Sə-ta}fX(.GɎq4tщ@v"Ǣrћˉƀrψ\eVҐ"FŎ3ŒPMc51ў{/P~ygqfCjd|U>E΍wm3gp'{3P|oԐb6aSݏpDNQ1%8|f-աԝؔ qaę/zlm}`4RQ#Ba/ mϫsᤓ[졞x+k-^Q?P$@ыF-gT߯ I .vi\IpN7>x+KϚ tTF_fz-tQgZڥ@Y搼K;(fEQ ЇǦWȼ?dʚ³re\ĬWː ILg9jͥ=%Ǚ QkLZ7z!0z{ JM{||&p8}c~TȕE#1Ƒ ^ƪfǢznSaMSP-Dn1;UbuƄnUyTm$`qRoC _0drL) C>Tġwkbt_KQ0B/lE5/ǎf==v\6jҋQ]OsA&qR/*Bb=ì(ԕq`ztѐhSc][֖hNV?8-N3_lƢ\ϝZDL~v%r*fuY@L}=e+q0稲 *}EpJdĘ'X0MpJ˒dѕ,,GGτܑ:Pr|.hqكe7Y Lv=-q,rM'W0dDNzo=dTXF}KEW=y+vՐ&G\Ve yDn'bgVJRM<+΋g*㏁ȘIůҫwlD>aLLUCfH΍:ȓ?Y):`nyvcșIٗ"vvejء_MdScFۖd9Ǒ'{6 ߉Leﯿժt?~iHk]Q普E=7W% 뉣bwӥS~Nzs+g\xP"m7Cb5~#;u հn|ةDq6He¡Z kN KPA H2Ÿ| 8<PE{U݆JV`{ocdXSa L3/>`00r} .{lҺ{D{u {jI|7`|T~ G枰9P'wZ~. sOi^æ(S܀Fݝ8Κ&'j  ؽˆ츽9}[rͮ>huɂ]mR]%eEޝ38 [&U0E^,{q2g"\:†VQuoDŜ|K7DF&>cggڷz6KpGhOeƨZZ#OɟΉC͊:6݋&.j3Z|ylԐndRkYkNJJ.BFBz5@G$͓` ǏQXQxm?bݧWGL@ӑ3͒"ѓ3 S^I5=vڱUl9lal=VKF ?BUIG=(09 H |x~sX iBX^kSrqDgf\VpZK마?!-2"N څuT8|Ƅlr޻i<ƒ_kU_Jߦ;?S1 R!D 񕫈{Y(qXh%^`T'υI+>O1S/!~G ?NH*B3zp鹻go].R#UHxJU=ˊ=0a!AZ xeѓ y*oعAe[QG";Ѡ3/ /djxȖHnǸ㔋dóZP[#EƤD:jG.B,HL>ywsmbc1YO(D۔9P,ϗW,PvmldbX\pMxC7 *͚me݊XO4uVpfkP_a0V]LbdAw5w(|l4f~7Wt#qj'\`穖UNKT3@u.3%^t|' ]|{\|||};|e}}db~~!~~ډun_F}E;" {d {˃+|7|}A^X}ɃXn~\ntC~^>Ƅ!E>"ڃYz;zC{?{ω|lƙ}'}Rs$~J]BDj K#vy6ޗyɓ'zdϻ{{O!|Fх|jq}N\@~hxCd`#RYxdyxy&zA2z`{΄|=p|[H}ČwHӲx.4xа]y (ya y8{ zj%h>zޞS{K;{4zk5x=lx ]xy=ygyUx^z9ezQzŠ;8zx3xTy38y-Byg+yyڷvz Ccz9NzFw6yy$Mwڌ`z0͂~zɃ5{ׂ ||}Xk~,Epς/[YBmH!v;x́sdǁBR,S+]с%Co|"ZtBAC!"wř^ VFxSHhnjΆIYp1iA݇J!ҌH)GÍг&Y摌ފm Xi@ [!ł_~~i~ٖձ4~ߔ~m~x2kxWoߋ@Onp!ہ]~nϷ~k[@~d~e m~d~}||f~i~U9>ဂ~|͑~s~6~~<~z~*sg~VT~6<~Ӑ~,c~}K}ͨ}1}7w}Oe}ӘR?}:~?4}y ~a^F~(~}" } f}|ㆯ}h;u}^c}cP }g8}=r{׶~ʜ~k ~ }ָ8}l}N2r}#`}MP|5|upz]կt ~ ~^ܣz}{}}7Wj݄V?pqL QVڄKH^|М˄wH {ՃiuUg>M F0ؔ!SWӍ֪LŋkՃ\mzIhOʈT>Z <֚x]ז )$xĂWg$USa=^;m 3Ԏ %>jOЃVh.ǖ܂4/vɑe/Qpb;ہs%ҝĩ'#sGޟzAτŘtrQ%cP#̑9؀v|Ѳi(d;肖ϒBۂtbSrMaN_/Z7ΔdT~؏v(>3xR1*p ^LB5}*gwaȄҬpR}mu?o\@Iw`2~C4{ʋj ;Ȅ ცÜ<ڋ[ {tԲk/YUF~0l}zұDxrx7qy~Gzј!{ȉ'|x>}gF4S=xjJыUێL|–Q楢ˉi`WzwcTeRņdE6ۂ}J=Ɗ!o'ņ<{ԅ4l/\=UJr4聭uBO3 eOy3j\ОZ⛠HX$2+~IG PeƈǶMd)w'gуWt}Eu/(H}!UQʶ6Ɉxc 5te?WU"!C-Ym {∬wNx1ky 2zĎ{ |$r}`b[s~Pt:ʈ}E F~:~~~Ȝޏrsxcq{a ЁNĂ9.dÅ -'=Ҩ͐Wv5F*~pc_lj1M׈h9l\ߍ[>SH菰I:|u}.(n^nLo8IfE׎ٿ͓qQm鍟{l]K̊7{ޏ rϰ~Vpyw k[QUYJ%(59 s;3S`ߎnΓ)ƚU\wBhوYI˒ HN3g.2K6CBQގ:"Hru2/fχ/W^IFp1탙EGseَ-](zs CdC3U=՚Drc/ؘkKڻqV͌i~͊kppb%cRnA,ڂa ~^5`W_~{ӌt|Wlnw_񆩪PV=?2qJ*Kh <}?bvٙwwxFyzz{lÏ2|]~{KЌ 7pˌӹ}<9+}ږ}~Hd~ybvPkO[Ɍ3JZ6R¸ уv}@H]w׏փ!igZHI/5'b/Q՗ՉQ^~@ v-5'hbTY4H4ӉΈpKƛʎtÒS㐅6t\fጴW?Gz`E40|-S@+fPĒ>ސ rd*V$oE툿32]j5x^/f&O,} pv7bዴT+GD#0=%z󠹈Ñ{Ï^gn|P`DRMjBB],.ʕqM_Rc䧅ʑ^y%6llq^ӊP8@H ,B {}s۞ wu jҤ\dM=)h] d䇳KA(uzh fZ@P{Kg?; $&Ѓ> #~.BvuEwa)xYyyFz>sZ{`f?|Wh~PF3Db'|{|i}V}~~1r~dْVV(8E;2rچ 3͂ Ղny\rO}XrFpzcT􏔃Dߍ1S R#4o:ɛØv {φojSbDS놝CՌۇ0M7󏙩֝& ߋz 3mwˊY`jRgEBٌ3#0;o։pahYN%rAt x"kM^⍛PAW.֏DҍN%^l$Q*Jv%fmi\ŏrNҍ5?e,@|x0 9tJgZ M=܊s'*X Ʌ%RUȝҙ~ġr_(eˑHX뎱KV1;͉(U Mr۠ݝOIϙ|̨p8ϥcVmHe9 %pPϟև ܴzǖհnVAa~T1QFX6""ˆeSj㪄v}4wG[x{!xxByl8{ _|kQn~ B5~/cPT| ڦE|`5|j}(v/}ję?~Z^c[MPA+E.U7IvkmuFyi^]KOaH@--e騈Lʊ+QF~s݅gٗr[ N"g'?/ۇy,@{ "{9K}kr$?f[LIZCbLꑾ0>=. ,H/Ik*ۆW{Vp\Ɏ+d΍PXیKJ/x<Ǝ*vZy~yRXߗ4yɔTnrbnVpIz;^( FϧzƝكܛx5lș#`T GÐE9^@&o ɆՇK.ɤhݟšvybfj _&֛SwEԏ嘚7T *$bq?uή:ިti hg] FP̒Ck 4!mߖW~IrΜqg,ڪ[1NْO=AHU*2RU&Θ3&v܎Nwvxz1.xo̢dydzX||>Kg~<*5k{b|&B4|]x٥t|ne}8c72}W~Jy<)ߒTƁ 䬸𨂀wm a蝁9VkI~;)9ʼn.İ+Mɀ݅AvkI`zфUfHNG:.A(ۊM$Et|Hj_*aSSG$9M( %-PLܫ.}ڎs hy,]lBR2E 7&o` Iݯo}|qlfȞӑH[JUPWȏC䔓66k$~ɔ$ FZDěVzQ`ore4ZNhBD'4픾"([uՃqx4.nPK"cQ(XfL|@kϘP2 )zT) ˪רtw/֐4E(Ղl&77uWGjU`>uTIŦY< \9-ZOpX)wcxzQxpy1fjy\q}zQ|KD~!6Ҁ%;oK //=t|8]|]y6|oz|e}.[5}PU~CR6$u JOĀY%x[nPd~܀ZO4B5A+b$+ c `B|@vޮm kuc)$0X8LMYAܚͅ4r`# zo÷.u "kǩňa٥wWiL@ʚ3#; `}$}wtSj`J`bUK0g?^}2_!˓0 ӎZQؕ#|'r=hd^㤕;TdI =ʙ0Ǖxzozx,{iYqg3]~>R>H E7c~;00 |wf|nܷ|eг|\O}R}H̥~=/ܝǃsAӊ? (A1l*.v'mcdز?L[vEQ GŤp<4/1߅Ì ]T~uɻtl:JczZP?F߄_;7ۅ.k *u}tω4kSbŇYZBO9Er:=-ܛ+/:ɐ Ć}\sGj״az7XaN:D8t,ٗ,|F듹rْwi2`Gʐ%Vͪ(L{B7+,Ζ 0{(.q幍h1_)gU{KAa6%)~BϖgMzpǹ_g1]'TYFLJP͗?[4<#'ҙ/^̏rx߾OoSMf*P\R):H¥>@=2y$r%$ˌwwnUIIdܨ[_mQGh<á&S0"%\/qybvۢyw6zyg{5z,Z{{X||ph}u}q~R~\ cCف lwwfٛx3ykzz/@z{΀|apo}Z~BQ vזww3xVy1kzpz{Do7|ׅ"Y}ez*U{"Zm|X}*@~k 䀽ktQuxtv{!woxn ybGoz`l{^W|x@V}6 TsϢ tџuߜp.v֙wӖ֎xŔ]}VyjzVP{Í>|׌ ~[@sLt[.uwܭvjWw^njAxGzy6hzTt{B<{|Ls5<̏t'u"ҫsvv/wџJxxxfyRzb;{ mzېMsG]t#u%uٯovwbvyxNdSyPy(8z+'GycإsXtkL0u8uQv w^_sx MaxMy 6)yAcRwڌcֆt,Թt ujvv v'w>cqw̮_PxBK_x 3x\v֊Lu[Yvgx9"ygzb{ڀL}m%~[XTy@E6ՈY޲}}X~$~Z~P~Ȱ7~2K~&~kڀ jW8W?}Ã1ܲ|†+^}ǽ}MbX}}Ύ~J}"~ȄjOV)>-Vڤ{|O| N|eX|}\}A{~}iH~U@> )(-،zіA{/{e{D|I| z}Ag}֋eT~_=fj7$(ez/l z·z{X}{$u|"w|f!}/R}؍n;~ƎeZy"z$>zz{@{u|[d|P}$9}~ y ©yzBzz֡{4s{,b| .N|ww8|2Q|6yyy쵭z"Cz]1zzࣆq@{6x_{L{֘5{ݗzzgBz-mzLBzm-z  z`nz]9{J{7p3!zO5yWzV+z:Tzu䜲z{2zwq|zDlizEZzGz0zO x?MՓHt(v"„Nwoۃxʃyg{7zM|h]}T=zj>+ӟ|7}уG}~)~HVyg:St<kѧ_B$܂U×1郤ԃw҃eR`,;߂ÆˋϨ:@Fҁ{J!LPvd-BQMq@;!n͢*/C𒏰ـߢ:n{^:PtOcQrPI:q:=LˋF_%{D͓bra~͎EN8`+=ɐWŞb^C{pC0!_j9LUW6s_"ȩ{1v9L~}~қn&~]t~@K!~4~o-}J ±ƨ USYP~~?{g~|k~L[N~-I ~ G2}|"|,mu  ~vx~GPii}NX}FR}l"0 |3z‰xJĚԅ~v~g0}Vn}P1C|٥O-{ݞ ygbt!`ufvRvqwHyQY zt܆{|c}PɅm:Hȋ={c Q{Y|}<|}݂F~s]vbobtO19ԅtLoƦ6'[uƆq a*pNwL9C*ļR6_م LtZćp_J_ЃMs87ۈ&"-ʇIFȅ9} n׃^;Li 7|Jx‡ @4;N^KՄ{u'lۂ\~JقV5A=҆&۞{jϕOn yZjoZAI3T; Wȓͅ0wBhXtYGD1j7=@f¦du6fuVE1X/}&Ѫօ׶#ǩrVc.TBz,~ O|RN׆ƻ!~󂪲pŭaрݪBQЀl@ 0*n}Ŝ zنſ;sx!tvHwTx}z o{^}1MJ97,,`xzHُ$zM{1j|N.}| }m~]@Kڇ7[؋! @0wсCj_Dizt`l4f=\YJԃ6/z׎̈,s چq/xjZ؆I5ZLj6'QQ񑷊" wKiY&CHm04 ]o`P?Гfu \g&\W܅F)2/YF)-8V㛈yy>y>5e-rie֑UބmE)}0CDH$Nx0wO~Zpކskc X?S[wCk[..Y.0QHt m|FKnȆ`@QٙAY,z .~ڈs@7ز~B1y#lqפd^nOed>,)ـN }R#ѿEV-P?Xwgjd\g6M+<7'LĚT|s @tHuQ9vڃmx0vŽyiR{.YȌ|HΊ4Xa\Yyi"z!zَd{A|Ru(}J'+ݎTVzחʓؘWL}+rVq'eYAKH<#) 91Þ+džٕm{]oʐƖcŎdWkI֊“:ψ', 0dƥ4F'ym吀aێ]Ux>G݊K8ƈO%;_/m֎F4MNwuܥkɐ]_$S6Et6ɝ"T6䗦.t[t;WIuҭWi>}]ɍ5Q:CQ3LՕiCmrٓHsIu(~vXswhVyy\MzN|?S ,T-qIxSy֞y}&zrh@{Lf䖼|NZF}Ml>A E+҅>l-}ΐm'~T~e{F~peYLA_=;I*o,1yorNL/z%o^ȃ$cI\XBփK<6)!AǗ߉.fЈ0#x܇mԗUb.Vݒ8Iɏ臡;>ӈ)GV?iX6u#LvǙZ}l `”0U#H+J9č('c < /ɒtoj2"D^擓aSG F\Ď8"% *ܡ웾lɚ~}MsHhv•'](,QDEv6X#MօM0䢗z|ORXqoef|[VܘO>B֗*4Rj!9;vrЃm çzdV3ocd`YBM}@`w1i>s\;F7_.䯘x]mݘZ_bFWogK>H"/-|~ےAs*t!l uuv:kjwh`֜_xUczyH|q:)L'ʒ ̐ͬnx2dx~;yet3zj=z_|{TT}6G~9)O' }9%}t|äv}rס.~h~{^/)SFr@n83&RP KjoJ{Q,qbr4gl"J\ƚQŗ)3EC}>7?%1 cfˇEyoejC[ccJPshD<6V5%\t wBPvxUn[<dWߊrYӊ&NӕҊB ~4鐋#u@ 57pv0lڏbvXe2M^@ؒ36f!Xے؉7MZ ~楳u4ߖ k%a|VcKl?5&1dJ%(O"C}[siJ(_Z՘TxI=]/Y猁JR{rq֡Yg<]uRG];p,܎ыu2σ{uz pCf2[͚PeEĔ&9**h$o+s}رtuUul "v~b`wXȡxN=}z}Bm|4Q"w q_x\|ɰExt2ysjLzazW{M}@~3:!Օއ0 ~|{~}4s>}qi}}`n~*VbJ~K?Ё^2a!: rほzqƪ|hw_U}0J>"1o ? n\9ygKpɅg5]Ԣ1S՞IN=Ϙ80J )x#o)Beƥu\XRV$fH|6{߰ܣeril=_֤`V&uKbAWSo5P a'Ϛ8zuq*C3E&Frb􉩀ssTjϴVb5Y=CP1蕐F6<1wJq$'•Kr@Ƞi0`دfWϫvNvDG:Ȝ/]&!𗬖qh\_DYV(MXVC9a`-} k> v#rxwswumxvyx zy{{{m||X~:~p@^o~tzqu{lv|Dw|x}Wy~fz:lO|W}j?}w^s 2`t9&uu*v9wx}zk {KJV||>~6qJۗq6st^u7Hvʈmw| y@/iz{Ug{ֆn>}^k_p|qԺs\tau+wzwxhhhUyDT`{A=m|e~Ao;q%θNrFsu/vmxawfxxRzN\;{}b}vo &~prUsbtuޖvwHdZxQPy9z| {ҟnɯP3p/eqOr棟Qt%݄OuW{sv)bZw3O5x̓p8yylnp 0ZqodrsѦt{qv`.w!M$x5xx1np7}qKrvsvtXo u]vJuwYU3Tw*v䊩oYͰp|ɬq!r ?sT}yu5\uɹvvuvwzyx{jxxYNyFyi0AyF x^*us:ui}vv߆w[wwͯ9gx>W x-DlxO-x8 EwḘprY`^t3Iu9wSÁOxvzd|1QWw~:bʰ5xR 4y=r4z9T:{C| l|t~ cV'P.9ۂȬ~)|"ju;OUv@s߁bG9O܃9˄΄_1ƞ}͇}.o~&}~LPm~q~q `x}M8:&TĎ|ҏx}Wt}<.}k*})}ފMo~7_Y~LP7}$L^n|e|R:|Ù_|Ē h|}|}5 m}]}~K[~54}dh{yx{ȝ|s|H3|nz|k|[}SQI}Ď3~+{~پ){?װ{xƢ{{֞{x|+6i|kY|xG}2}$s |{,a{Rܠ{s{{vX{Şg{Wz|&'E|N/| {&{T#{iS{w.k{|3X{t0s{e{ T{C{-{ uyƇ{٪ {G{;]{m@{M:q{D1b{8cR{'c@z*z >x?zp>qŨ9s&u8v_xapz_{M}7oۈyj()wD\xEyWRzIH{F}|No}y^~LjR6j56~qp~Ϥ6)a|)fm]`KJ#6>vt)0քOzdQl2\3J,[m5HنËͺ@=͂HZx!judZk6I 4 =¸.Qh$ZEc vٍhX߀GӋ&25ŜAV~.s1 Z*/txQyf_#VE 0߀:"S :8/a̞KscrmЗd`nToCK9.~7s%SL4)}pSh)bGR~ߘFA~,~ |΁Q f{m_~Px~Z=?L}䜾)| z{iڿ > y]k~ޫ>]~Z NH}ॼ<}<\'s{暬Uy݄nvorgq?Pr [tlfv3xwjy[Ib{Iއ}5)Y`EvUHw]ÊCxtD`yt~zwM{is|Y~KHD40{ʈĊ-.}ȊA}L~~u~w~uhRFXց1G}3C;6ۊ1Pʙe)ătftWI JFf2ăd*Yۣx0ʆd_rZOd愺UJEP145C򈲑א#h}WPQp]gb T,C2/ǍX,+\k{4ВjnD`vR:뎷Aj-؂Q$𠿝|,@y6XlM_2PdI@2+ր0 بݏ kw.jG1k\k1N`j>)W) }نԥև̆ލ٪f٧tǤhZ[K3t;J&~"|S,Ɉ*cЇ ̅ԳyrHfVXÌ.9$$8}}{ìoO~$pqr)t!~ꍾur;wse ZyJV:d{ 7*ڎui}ڊ5r4ʖfvYqg KW<D(Z8 |(d򒯌颕|V0{p@od+W{IȖ:R&;_Kw@_J~yʉˤn7VaކܠU9G1F7n#2;}Ѓ뎟鎸ƃBwl4_򆗧S=&EϤ5R <|}dښ)o&np&re.sw'?uk:w4^ЏyP{A}-,_Պa>"tԗvwF5xSucyhiz]l7| O}?ዳ,HgkM2z֔34{}$|.~Y|t}khC~4\r)NHh>ʊ9+Պg~?זӡ o34~pr-ysoVu6d1vXxKLz6N$O ·Ϛ%z yHo!veZڐOC 4"k])ܜJs)xZn/cLY'M AU$37E T  }g"#(X~vؚlnoKb(WMǖL?p13?ɂU"r~|tšjvO`%ǞU>IC=.E. 4ҁ,2|Jrh4^cHSoHH ;ģ","z*OYovҥKpz#+rpKsgAfu\ۙvQ'|O~(C3k54c #YV _ʥ~~Ѣ~u lecXܗRqN=ρHB48"j g}ktуk#aWL@ȅ3GȇN!⎈C Epq4{erD7ҏ( )W} ns٠GjamW^!M&B;_5̢̎'R.gpox>q-p7rggss^FuTՙz1=]}R?TNc9t|w&ueovSfDwK]jbxOS]yIk{)=ʘ}#0NwH2n~D_yuymާzHez\7{R|H}<ʗ/iV2BW}$}t˩~lC~icŢ~Z럫A8"}6#)[]щJwރrB}=j}zb୾}Z~Rx&~I~a@":}5*.>(nF,op:qHi|aϬY QYGHbƂ? [44P-'ј$djpD*8:Ď/֙}#_Blֳ*dɯ-\ͫ T\BIKףhB㒾9#lf.#|?iVl@nC%:pqs(CtuUvI&cw݈_Py:{a~̰k̾NmKo( 6pOhr\ssCuzbwOFx9z_:|rHʀj{lܭxn"pqLsHptܑ`v]Mpw97yBAKzDy#j=al 5m좺oq%z~rnt<^ u@Kw50x%xj{kŮmGo)׋np|=r7ls[u IvE+3ww0åj.%kҷmopDyqBjsGWYetqGui0~uÙ \ufj_ƶk[mSolp`uwqgr㩢W+sDt.(t 'tͪxblyn(yq'zRszu"V{vv|xe}zQ |:܀F˓vt߽w{v+0xSwyxēyzz{8t{|}c|}P~-69ف*Utu|һv}a1w }!w~xysz;bi|Og}Q9~G =Jsڹt„uބ} vԄ\ w̄E|F)|J ,{3|!Ț|'|'|"v'|i"|[|tL|v<{ݛ&{Zz+|;0|*|{t*{٫eg"{ŨkY{J{}9{$myĘx@eKkmoȌLqstAufwWyF|72U{qFxrS>Rsu261v=wrlLyTezV*|Ex~1Oox_#yʕ;zo${{}|Rpڄ]}7c~;TބjDM0S؇ot KE%{o(oKb:Sy&C#:/d2!| Ch2y˅m~`ZRNBkJ.֋}v|GVً탲v9wkʉ^zP_5@uQ,݁Պ3ߊǃ|@?H󁜁uvi*\덛N{Č>*U ׀o4+Eǘa\sg}Z؀HL <Ґ(p- ~XjbEo}qzeXJh:&r~@2|ޝvMҒBө0N{}ʤoǀ5cuAVH6Hh~ԛ8W~r0t&{$upaveB'xhYizK{<ȊV~W)ӊp݉{`Iv񍒑w,xyyopzcҌA{X%},J9~;~(݉9 x1D|Ӌِ}a*7}w؍~~mw bFWV?Ii[:B'󈕆 􉙈“\Ԋ'݂{Pv5;k_`ŠrU5]H#9|օ' {$p"P$~ptXB%j^SvF} 7%iP f c?~|rl6hQ]!QD6+(q#<v j愛z⌕p4fMʑ[FO҇fB\4wXs! pсރALՂΛXy =nʊԘjds_YmMAl2wR1QÍwl bb]WV›Kӆl>ƅ+/܃ϛ ʂ'Z.~㍚|u4njmz`٤UqMI S(7HVѓ< D._G0&wRnڑe<[FQ+[F:_9ˆ+cxJMv.m!åAcȣYÍmOOܡD^70s)D0D_k|m\tž(o kɛpbƙFrX—txNAvB7x4D{" υ`Tp{qsosAjrtaiUuWs.wM yW@W{o31~:!4$Quz9v}r&wwixv`lyV1KzKޓ>|/?ۑ{}2* QH&.^zxɝ{5p<{g|^}DTؔ_~.JRJ>1$ xTwZ oa]f8]J-SxIUj=0*F~5ͅuĜKmvdS([GQŅG<.x]|1t/Ck-bЖ͉YؔaP;E&:=X,팵ɐ'vʁ{ ǐrIj#1a/RX-%NlD=8+>1{א4р#yoyph{Y_Vs4LOBs)64);J"wNvo&ǜEf$%]%T;KJ@`4rf&v3me9[%R͒VH됱=>`2l:^$%pzMl$rmko9bpZP rPutcGv};x.Q|Ɂ ry+pqoqiߣs#atlYuOƛwRE y!:{R-U ~W攴&ۑ5Iwup8vhw`MxW*yNz[D${9},d4j"v ynzpgQ{&^ {V=|Ml}CǗ7~8v+sKPNOluw9~m(~f]].UcWUL6ɁBQ 7i6*j:6ttlBvdU\6Sٚ;JAr5{) iݐ6rեۈjۢ߈qbˈjZWR1"RI?c4=f'j⍄䎍S 8qWjiaiaOPYPGm=Ȕ!2O%Đ/;og8`W!ODEÖ<&0Бӓ#|Snb՚GfRיu^UUϛM0Cؖb:̘.o!-V ӌYlndᡰh\۞TGKȞB( /8;},˔ W凫nڳZlgįn`۬PoRY3pQrdHӢt6?vI4x( |)Sn=pf⮿q_5rX9t%PzumGΡv>x3ќ{''-~v85[bm?teu^:vW1wOtxFԠy=Ɲ{{2!}&U{j8kXydɬy]MzZV {NR{E|<~b10[%zƗI߁jjy}gc}\n~>T~M4^DC;Ёu1ID$$}3SVibwD-[OcSkK͡C::</#LXnJvT]ha>Y(R JHAy8]-B!8Flg__*XNPƣ`-H۠'@07],or 01f(+>^ÐWJAJO]G[>35k5* C dݗG]R}Uɦ.MEm<Ŝh_3mt(`͘$qZ \Tc\FQTvϜLY{D4;&-199&W` 'ohbpk4r[mڣksp&u rvrtvwvdyxQf{{:T~}^v mqZo-rptrKv7sw'uay twzcTx|P5z}9o|vmkyJ6mz4oO{1p{kr|ԂtT}s v~obwDOyˀG8{Ƃj k򁹫m㝑oqz'sxT)OxxZyxtpqrçsvUtCiPuX[v&#Lv؛<w[&v7x pkqrysh1tRt6gNtYuGJv2c9vk$?ukyQg1jIlʍoqVtCsguW:xFz1}aۮ}nףH~p~Qrr ~t~us/weey%VgEzEc*}0Oֆ!|Nu̡V|v|x,>}Ty<~E}zUqt~{ld!~|UT}D8:/FSz|؟T{P}c"{}U|*~|s|o}b}HS~`CN2.̀-oyTz3z{{z{n|`|RT}r`A~h-lOsix$2yycz,}xzl{6_{Ո!P|@d}s,Q~u<qjĤ`wtxNUx4>yw'vyj z}/]{RN{>|vm*@} I~V#w wkxLʀ=x͕7tyHhy͒4[:zXLz<{8(C{q|wvwBȉwҝ~5xMrx™fywBmzu.օ} }!n8|Poq̄sqyVu%mv`QxQ zA~|-DŽWu3tu#w6xWwykz^{P}o@J,ăՇơG{a|5|}[u怜~ i݀~]YO9(?b+΂6MΟK9VdJt+h:[BM݀:>D„*火s承8~撳~G~3}G~r3~fU~ՇUY-L*V8<̇):|| ?H@}Ԑ}ӎ4}{9}Sp,~d\~X~AIJS~}:~̋'( 0Ɔ6}! }9>}OlyO}V'nF}Wb}kVE}H} 97}ӎ% }n}фY||ǜȂA|֛wY|ؙQlV|ϗ`|ؖTa|┰F|퓷7>|哗"|O9 |||q|b|Cu/|5j/|s1^v|hbR:|YDl|@4{zɕ|S|lGk|j~$|bEsK|IhN| \|PU{ܢBk{2q{ay8/ =g?$ikgl8~ˈnbtphkr\7&u%New>zZ+h}]׆3ndm}osqC}rrrtf݆v[Zʆ-x;Mz;=|*V N sЏyuv^{ldwpօxe^z Yj8{qK҅}<#)O1 pVĆz܆DzȄ{yJ|Qo"}cÄ|}W:~Jx ;Y9(U鄂 _]䅠W)Kw=@myɁb/{VnAyI%1/:=U['j ͅ|ꄱƊDSӆzudXk@`[7TeIG{N8`j%Ȋ P!~U""ti?^s늟ŔMEwJ6b#nρNP/()|t&r+)ǵ4\<]Q 鎨CY54k!n 2R֍Q6xz zpGeZπO6FB39~}N悤:2xjǟzn-Ecր1X7M?>R0~+}& Ђ\$Ev:lWLb[}VТ KC<=~.e}|{;Ygi΀̎lv؍un=l׌fpjaՋrVOtI("wa:RzK'B~C ύmHUlo 2IpuFJrkHPt9`\|uTwG2y9$|&7_ <ɆDr5tH} us/viÊBx)^{y~SzFF|8~%7 $xĄy{ʋzr{kh(6|I]mv}9R:~LEfR6$B 17c~.&zpaf1[vPӆ΁D#a5φ1;#]芉R%x;+nFdƇ^Z,1O{B4E@O!vӅOzkvQHlbކXMrME>c@2Jo,I&ΆÉc}ՐtjՆHaVJ K?0̓ZHّ--݉P+{crj i_ATI{=+5.тs܁)yyp f,~]6)?RFEGa:,A׀ ꧃wԇnцIe.[lѡlPݠÊT8\)񀨜\~8 _gixknӒnep![8rNPd}tC荌w+5z6# ~.l~nvphm\mr dsYՎuOwBy4|z" Tυr9}iVsutkݐZv%bwvXxMzvA|V3~!)Ww{˒@xshyjLPzla${cW|rL}@S42g%j KA} z4<}q֏~IhȎQ~_yU/K5 ?Â:1]=?ւxudp =gv]SIÄ=酈/׈P<d1Svkn6@Ve)߈9\s(R <5Go;'$.e;/yj*}tt7lycnEMZS،PfFo:k-,]~5{#s Oj/aɒXVND2֑c83 *]'|4yΏҜq:` hݚ _pV=LBH5 'ÄSQwom&{gB]!,TʼnLJˈ5@IƟ3gt%hݙK5~IgvƜ/io kfm]oTDUr Jth>Cbv0zz(h% }HluinZmpe+q\ sNRVuHꑹw%=#nyr/|jl ZH{՛qsrlKt.c˕uy[>vQ\xNGĐy< |.~zzavrwj̖xbWyYؓzPiY{F}:䎅~-]冼Pzx{q |SiY|`}X}~mOZLEFǀZ9,ۉVdςKwPokKg_C# Vё:}MxC83+ˇN̋χ݁9uɘ=Vm˖Uce`{]~UKAݍW6p)@&Pt(lċdGˋ[֑eSUCIXO@,4ËS'Dre>;jpQbTZ!tQDH:Ԑ&>b*c2芬%@Qph`_X:O&LF:c:3|&ߐJcmrEf^PWDO/eFe'=#)2.J%j ylфDdh]UUmM}VoDF;fK0ta#4B勫Ѐj>c Չ[КZSKĉC9.Ώ!g"h;i ɏsa`#ZARIJzP{H|~@}7י--V9$ ̄hc8}\x~8Uۢ~N%qGD['? ؁6]oh+rizL\!?b U[/-ThDME=iB4܅*0ψ&,( RqT݀`k]Y̤uSKD-2&;ޙ3R(6 s su_e錬XtQ3J&|B:7A{1S܎&pw^!W gPPHu,]@ʛe8J擨/?}$]d \}Wsvntw^vyKy${{5{}x4ځgtA,j uvl7w 7nx:p yo{qzms{\u|Jkx"~.4?z(1e|jhF}Wj}7l~)n~yp5kkr[HtۀNIJw3sy}kd6fOi.jIkSE&mv!xCoiqYs̓H8v2xyQ|" %bȪeN g/j5flhv2ngp5X'rχFu 18w1 z|iax Yd.giJk'smeo͌V1qߋwDsz/Lu8 x͈`l cYVf!4hk+jqlϓ2cnSTXpCCr6-vt= wIUJ`b£_Teugƞ}njZolan1wR[pTAUq֒+grYiu_xbǔe8gjc{i9m~kQ_gmPo9>p1(pIu`@_θJbVd.gyi%ktk ]_lpMnifxihtxkHynt0zqf{sW|vE~dx02{XtQku_mvyoNweq8xPs0ryTue zuw U{xD}[{#/=z}["ermrPsstuAuv}wwpx&y=cyazTxz| C_|U}.S~[Dpyrznsv{Dt|| u|oOv}bxE~gSyLB;{Os-u}?!J*Ϩ%op:rs sXzDtmuՂ`w-ZQxA&zPD,|- †mqoSprIRx4sktن^v2oPwK?y=a+z؇W }lnK^pqiv r3isf\uRN$v=x )yM |*kΗ_m|0Ho:p>t qgs+zZty8L\u6<3w'(wzegVk:=l❧0n}oqq8erwXs:Jpt:Eu %vAxjln={ioopecnq=Vs :H't7tƘ5"Zt3cI|#jɱ-lUDmYyso%mpIa~q_eTrg9F#s85srC~i{c|fc|i2r|kz}VnJnz}pa{~sIRmuBx-G{ yyjz;l znȄ{{py:| rl|t`}uvQi~cx@z,F} أwqaxrގ-yltnzuwzw6k\{x^|azP#}\{?~}}+Q` U ~v"xPwy59xz( x{uy{iz^|]{F}N|N~>}**hD: 'φRotJuTv >w_tx\hy</Mr{E=|)~0 ākjHs_Sty(8u}1vrw\f-xAYy5KzD;{ '|ׇ 7rFxszÆt{udpvd)wg,WxSIyMd:8z`{%{E/}qݎ{rs钁yt֑Unu*bEvUwx)H*x]|8yDQ#y{Ӄp𜀌frۂsJ6wt1lu `UuwTvFFw}!6x,!wY|p4qrztsĞxit{^/uLQvDv4&w7v s=N~peh(qz}rzss`h t\LtġPue-B u؟1ust <yc?f>)h_%kit6mhfpe\ZrNR/u>~x]*c{ Љ-:~jfAlbn=}p)rr"g%:tZv*M%xH=Iz)V} ;t}Tp{}q~s{~iuq>~vxewYyK{-<}=(Ty օ{w|Aw|yz"}#yo}|zd }{X~n} Jh~E:'^^W -U̖zX}z~{~~xa{m|Obw|ʀ!V}YI~ 9~&wJ y&HyȄIzrRvgzTk{R_`{τvT|]Go}8S}ޅ$~ˁExxӊ~yt^ziz{F^zR{wE| 6|*"}Vslw^ x4|xȐKryyBehy\z#Q*zC{4{ {/}%ЎVvǙmwvzx+pxnf'y"ZynOQyՑBz8l2zQy\e4v_/gwzxwȝnix0(d xXxؙ*M7y&?ya0wya |x v$fvɧvwrlwˣb4x WxNCK^x.=x.=xGrv .ccf+.hx k2mׅ=mbpVrI!uG:xx@& { QYi؄~k}^mve/ol=qa'sUuHNw9Dz%Ӆ}@zo q7~rttJju_wRT>xGz8} $̄߀:7euʆ4v|큶wsyiz^({0Rˁ|hE‚}6#у8C|d]|{+{}GqRy}glp~\6Q\Dy5߁_"悩0DUnHy7woj|evZfOB`4Vtv!0Oms~ }~]|w;~Cmt~ c~X~M~·A2Q 逃}dw~}uZ}؎)k}a}ڌW3}kL}?c~0~3~8~l|ɖn|}asr};[i}?V_}1]U`}0JF}-=}/.}|_|\zz|qZ|՛/g|̙]|ST|H7||;^|X,p{zr|x|JUo|{e|d.\|1Q| Ff{ٞM9m{*0z霆xԎ.cË|f*yhppkfpm\SoQ>yrxDyOu5x," |oiQkVx]empnoXe^Fw4Ç}z}!~JĈAnhpvr.mSscu5YvN\xBAzt3u| )}vt}Futw k_x(bRyMX zMFE{@˅4}e2l,ȇv;nzx{ {=sS|j7|`˄}Vn~_K0Q?)1ui<pn ԅRizqt9h?A^́TڃziJ9:=+/V\=ʄ+_px7soچfYs~]SHi^<29./:atN~vO_vm!d[X;`QE%F:O,!(} {tnĒk|b‚UYOz.'Dɏ8rT*HW{rpUi`W Mu8Bހ6(~{}y#Llp#h^*UKTAp4~ѝ%}~S|= ecyFf.q%hhŏ j_m*wl0w9oϊ:jgƉv_.VMjB*7K)ZTʌTv?Hm~f ]uىT҆KNAL`5Ɗ(Jw It@l4dE[98S EIr?3˃&CAr]9djJtbQ YkQG֔=x1#x3ԉpޞh`@XJXOU\Gw dpe|f@hh`͔djXlOCo^EnUq9яt,ZAw]|@\+vhn#jgl_v-nzW;pdMsrnDAIt8}w"+A0z<_ uTmmo+f5jp^rKUsLƏ`uC@w7wy*3!|isrlsdAu \vJTxwKsDyAލ*z6vf|)%A~aqwjxc8(yz[7zpS+_{uJ%-|@}5SX(# .)pR|hڑ}ka<~Y~Qw{HFQ?+X3NJe&RΊĀnđg6q_ʏuWŎ;OF>=?e 2n$E~nm?e^#VfN'E ̈~;0]#-afkMcяi\r#NTjˍ%LMaCN%I9ˈ.鏡!' !i;0q3{tx&eww}.߀lShegj^lbW n4OfEpFr= tX2sv%]z.рkmdn]^p>UїqN7)s`Eu<w1uyl$^|Di|qbr[t@TyuLvD`zx_;Tz0^|1#]yH؅h:cv@aYwKZxcS(ynKzC'k{:)}>/K&"hm'-kFxfb{_Ԙ{Y |Q}J~[A^8-Ǐl mƉ~eT|^PWl6O/HYe[?ېՃ'6ڏ\=, 5'x yc`\U=NYFF>;&E52B*bpTo 5b-![-iTKL4El<3n (\O`!YR9Js C0F:1^g&< wVI_DW񕒗P՗IQ A*8׎|/֚$-mvJZzbϨ:d\yfVQehoOV jvHQl@-n7zqV,ҙbt% w ~78ah[hjIUEkNImG>o?&q6s+Kvz K`lZFXnT'oM3qF1qr>(mt~5v*:y$| XY }_UpY 8qRsIKtE[u=Yw4|yn)*{1P Vπ^ ntWơ#uQwJƜxpؚhrjt7 lutowUfq]xW5sz[Ev5{/x} ~m_aw%d8xfy%iz4kz{ rm{e>p |Ur}Du~.w |V!_&rb[veΊg~lj iqVlocn T~qUWCrs.2v\ {u˫]"4`džɔcrf@ |XhхoZkCamKRp1Arń,u( yۅP\r1_k&[bMe!+z)gGm@j7s_lPo@?qZ*sSr x<R[kU^\7ag$:dx fkHi5]kUO$n>p?(qIvƄp Z]`bc8Pveޗ:iEhTI[jÓeM=l Ń~Bk?fϡNli4nkpm~qpJq7serucu-tTwvCTydy-|{h hnY:jplqEnxs|fpEu6orvbUtxgSAvyB1xE{,z} /HfuhwjxXly'znz`r|KQt}VAw"~+y l~d}g~ i[~{kc~xmnilVoq_HqWPs@vo+*xer R}Acc1/eg]jvl8jcnG]opdNry>t̄)vޅM {ˡaߖd@f֋E/itk*hSm>U[so[MqjLzp{)|} ܂Q$kt̕muoHw px4trZy^hszz\Fu{MwK|=yK~H({ WYj|k|0m}.~8oV}s.p~Yg@r~ZtOLvDgQnIxwn_dxbQxea~yh-szMkh{*m[|'pM}asV=rvI(|yiZ5u+fvhrwj}wm rGxohfyqZSzsLE|rpiedka^ulݣ_kn~aoMVtpk3Jqy=Rr?-rxpr|z_t|bIF}=e's9ށiv"%yzш,zWeÉzh{zjyva| ll,|na}Qq-Ua~sG~u8Cx$i{_zqxflym~yotzq{j{CsA_|uT|vF}x7{#"}僶vr,wks|xJuryvbhyw^ zyR{zgEp|{6b}}"ۀEkčtxIuy{vzq>w{pgYx|L\ys}(Q3zl~D*{#5K|ـ}!~6su?t}yu=oKvwevwaZxOpOzyIBzZ3{ }Dir,-;sN wtxmGunc}v]XwIMx9@y5M2 zE{;~JՇbq9~-rUusxketpraudWvLKw2S?xZ0`x y 0Qpo/|+q7srDi{sZ_tzU/ujJv@)=Gw.vwvڐ32oڛz plpr#gbr]sՖS#tH u^;u,v7tՏKotxpOoqerj+[s.QXs朻F }K/~2]Rzi€Gwxxoy`2fyQ]pzp}SLzH{bbre)iԆVg`jnVmLo?Cr1ZucyqUfe;y3g|qLihOk_En4UCprJr>luT02x= {#ŀH |7=|4;1|!#{ϕ@4{`q{6Di {cLa{kX{O{FM{y<#{^/{!b!8zrv zzz-_rubpjebgZj1PlF~o:rv,ˊ̓O2„%- nifӃG_^WE8OZsFQnt30wC%zN׎+Vրl`nqeLo^b(qjVNrO wtFRv*=:w1يz$N|")jōshct\uULw M;xXEy;Љ{?0}#|3ibxbyl[.z^S{PK+|TC_}n:6~/(f!#?gO}`f~^YmQ׉ J6?vAR8qg-j 62 eaX^WÈ P.&mH]?톴6Ɔv+1m ŇCc/\މ0ފG534)넨Wu=ǃb-[ tj,v!z( /rb'm}\`oUqpNؒ1r&Gs?ou{6wf+ˎy| ԐaurZs]T7tM}vF[wb>.x5tz*t| 6_铳vY^nwR&xKz D{-<|p3ߌ})&gY Ӌ^l{W̑r|QL:}gJ.~;C :׌02'csGt Džq\V*{O]H6Ab ^91E0m)%TLkӄW[oTʆN#Fv?I7xF.VS#Ӊ=^H*YrSwRЏ+LHE΍I=̋5,!{C,lWʏ˓Q0%JoWCw8<3ƉҖX*mٕ@y\*`VGbPӞgdJ'gClis;^k3n(]jq6 u6{}[ldrUvfcOhZILj^BNls:w%n2 q&'e@s2w_, ~ӀZ<]hlTJj$NkG mA8_o9pq1s&uv_6yۀX lzRHnM3oFq)?-r8?t/v%cy4t|ƒ6WpQ qKTs\EXt>v;7 w.˓dy$Q|:KׄV7uP;v3JbMw]CЖx=-y5}{E-8u}"ő]?xTyNЙ zHЗl{B.|;}=}3Ò~+n  G茍ST~MB20GO@9u2 !)84.HyQԙ KxE•䄱?UZ8=00fll'=_BqրPRgAJ ܉DMC=?6Z.k%ŏ юC TFNԏHOBzƐk;.A4,#܎ѕ peZREgY]•i(a`-kd}?lhpbnkbqnBSsoqBjvKt ,yvK!z^bb"*ddޓfgQijO{xk4lnmiogasoqR_r4tDABuv+Kx5xka| _ib7ldn$ogpyirm&ks`nmuQpw@&syl*v{+}~u]-qΙ_s#bte5uwgw1k}jhxr^{myOoz?r|J)u\}|8%Zy]zU`{cj{v7f7|ih}+\k}NsnV~>q=>) szӁAXk}[с^aށt7dŁgg[4jKLm>iIhhS}uV+Yĥ_u>\j/_^Jb"bQdpCf!3,gњf=iZ kw]hlamndwpgklqj^snOup?xjs)1{v{硦g)ahd~jgtNljvnllipVo]r^qN~tt=w$v(Rz0x}vd}i[fkhhmjot_lqhNnsd[quRM=sTw1~;Xb~e~d~gb~si{4ik^umRoE5qŁ5t!;uH/|'Ia(0c{eqh)gjP\l^PnnCtpr4 r{U;s~[_⌂pbCyd:of䊥eiZk(Om83Ao$2vp5Lq ^ܔZa9wcmeҐchXj MNl@mڍ0oSn^+-`]ubke{ag Vi KGj=l\.Imfl]U}&_psb3id=_f<#UhI~i嚛< kx|s0z:~6|Zq=)mUzyyn{TppG|gq|^{s}nTHtX~,Iu=w&.x,zY2k0w|mT_nnep\\qĂ*RjsGto;Luă,w"Ywo~juwllm}co SZp7Pq.Fs.F9tf+2u9u| is~k ;klbnXozNpČ=DKq 7sH)Qsۍt hyh2qhjA>hkӔT_m0}VnLo,BKp֑5qU&rrwh4otigk^'lbUmKn@o3pc$p%|q|[W{.}@^Mr}a]i~dA`Y~~g:V#jKcm$>p0r6s]U5v za,yo{#cq{fDh|Jh^|k-T}mJ!~up==wr/JuCxxtgwy(iolyk4ftzm4]m{hoBSo|8qMH}su<~*u..xC;"{^~7vlluwEnmx%p;dxq[ys}Rzu#G{v;X|x-~4z>}|Strtut&kvzudchoXjO]mUDo8r*̓uyw}f}o~Ihh4~j_ lW@xnMpCs7āVuT)xz{v|ln=|{mf|or^+}qqU}rL`~tBn&vV6xM(-z~NtHz=qlzrd{YtW\{uTV|svK}xXA*}y5k~{p'})MrdxwjjyEx\cyyZZzzKR{{IIZ{|P?|l}v3}<~&~Mipw1}?hw}a)x~tXyG PyGzi={(H2-{܂u$c|}~ _nucfv_^wpW8xOxhEyV<#yn0z"{ |-Ylte u]veUnw }M>wDx7:ex$.y)R yc zjtctΐ)[uStvKGvnB$w"8hw!,wǑBw ay/Xhsma9tUYtQuFRIu@iv b6vj*vpkuYxr[k1g^cac[ӆdSfJi@̆l5#Vo'Xrvq `icDbmjeZlShR]DjzIDRl?o4r8&<8uPyÀodehg`惼jXlQ n'H pA>}1r2t%)w{mk(fj l_InWw2p@ONrFs=;u1ƃ]w$kzs߇~kLpldŀkq]s-UtN4vE`w{;jy0z#}I,j,~ub~v[)wT?VyLz#C{P:c|/~9! hs}f{Ha8}|Z}|Rm~"}J~V~bA~I8~݀`-bF~ Wf|4_e|yXb|P|iH}1@E}k6}x+}(~H /d{'*]{oDV{mN{G?| >|OZ5=|x,)|)| }pbzJ[zTzԍMzEP{<{663={EJ'{=zב@|)`yYyҔ|Rz9KUz (Cz*Z:z1#1xz#%yjyzi\bȍ^\saXTcMhfDeit;!l_/֋/oY"=tr Lvh)`a`ZcZebSK_gKƉjC,l:o.q!&u Ǝ(yfel_≨gjYO8irQkwJmARo8Bq-tr w} |e jj@^SkWŇmPyXogI q6@s7u,7wJ;z, Xcjo(\ĆwpVE'rO szGąu?fv6sxU+nzR} 0aPt2[uUTvM[wFXx=DŽ=zK4݄:{)愂}Sz ]`yPY_z3R̃{#Kh|DR3} <~$3 t()6JDŽ.^?~WiQ y IIBj:XN1p}&v3 \z̈́U⁢OhvCH6C@ 78/5$瀟kzZTŠM+FNR|? 6̌-"lJ~퍔qX׀;RGKÑDv=Q4~ɓ+~h f}}p~`]O\BZR^SӒYa[L֑~cEʐf=i24l)oTrTpUx#^`XbReKg`DBi`d8 Ċ80='Dq 'PxhOJDΎD&0=R6Z.EE%h. ڂVe\nPV^K$a,Dc>1f!6th. k#5FnrOOqyU`KOmbsI旀dCXf= Ai 5\ek-n"4pCt T|SSۘ}d=N3Cf.Hh%BYj&;l64Mn`,p!;sPCvp~RhJLjG[kA m:oy3qq*ؑ,s `vEy~oQ$ltK\mF;o?.q-9]*r1אht)vy W|6O'pIr#Dps>#t7Ðvk0=Hx ( yj|U9NHu 0J?( bڌG~UAdj<r05yI.{'$]jْˉXxaU\cYe\ng`zt+i{dgkge[+mjLpcm;sip%wsgtxmr^]``ccB}eMfr|ghfjikYl\nnKQnq:qs%uSu~zv4[Cd]g`i{ckpemdh;pXpjr?J mtJ9p|vk$Xsx?}|]X lc[n^!oy`qro cscWfxtViCv:Hl w8nyU#qz{~#U>t X|u"[vFx(^wMmqaxYadyVUgzZGj}{P7mz|V#p%}]Fz?”jR{yVD|&Y|v#\}$k`}_c~Sf ~Fh6Yk!mҀZz9PTPTU.~X! t[^i^^"aRdDpgX4i j~O &R]||Vr*Yщ+g]\e`PxcBeʇ%3LhhT M QizzU3p=Xe[nZ^ÍlNa}A7d91f"jf}LPo@xTT6n*Wu@cZX]fL`N-?AbM/[cӑF;dUQL[OfvpSPslZVb"YV\hK=^=`-aa}cutfUĎZgY[]iJ]yj`nld c/nsgLVpyjHrm8sup"y8syHb\Pd_xfc whemHjhalkhUnn+Gqap7`t!s{"wqu^{"_dDNbfddiv2fkIkhm`CkoT?mqF[os6Yrv7!$~}g\k?_]mP~botcdpj fr{^i^tRkuE!nhw[5Rqy sz?}L Yr2\t|_uLrbtvjhmew]?gxQ{j9yClz4Yo|r}dX| Wz- Zzz]{sp`| fc\|[}e}EOh}Bkk<~2mLYot~.rU}X́x\*n_da΁YdyNg!"@ia1gkflބ(*SW/svZl]qb`JDWbLqe?7h/jjCRm}U؏tY6j\`^V(a8Jd5=fk.)hD`hQ@{TܖrX;h[q^]˓m}/p~qZl{]Pr`Fi)bĀS_e5UgIiׁM=l-no?u[X͆y|[p^SgNa1]cSYfHWhQ;zjc,mlxm;9BWtwxZ[ln]Oen_֌[bN{QdFfڊ9hu*i$k~VvuYYZl\Jcc^ZaOcJDeaC7f3(_gSj+|Us`Xij[[a]XE_uMb xCc5eGE&ReiϊnVcoYwp]Cmr`csJcY9tfMv9j5@xmN1tzmp~ s{|k\~m_unbl-pe_b}qwh!WsjLtm?vp90`xs|2u~rhca|jet l[hjmjPaolVqanKvs5q>{u#sA/VwYuzMx$ f'izh$kr>j-mhloY_mq%U orJ.qt=Ssv}.Nuxx_zcpyeqphsAgKj t^luSmw)Hox<3qy-Tt-{gvv}katw/wcx nf1xekhEy\f1g"f" QlT?sVytYpt]Mgu`t^YvcT xfI.yViEtt9w9vd|njf|fVh}]j}Ulx~>KXn~Ao5qO~&ruEftclre'd{gX[i,S@j2Ilu?}n*3oo%psramjc̉"beZg̈QuixGk#k=l1mЉ(#CnY r=p`h|b`dڏ`XfOzh>oEi6;kJ/k2 k Cp㇝nt_Mfa—Y^cҖsVNezMg D8h_:i-jXi6 8pj<zwVrOxxZ j2y*]_ajy`oXzcN{~fDO|i8}l)p1s1xu\pv _rhwb;_wdW.xgMryj!C){l7|to(~Lr"uwvrbnsdgtg^vviQUwkL9xHmByp5zrw'|u"wup&h`m&qj5e[rl\tmTkuPoJvq@ws4yUu&{ w4~zs.mnCkdo^ocpq6[jr7rS st#Itu?v8w.3wx%yfzZ|`}q;kt'tz2Xu|9$Ew}}zmobizNgkz_m}{Wn|OO|pT}F>q}H}i>(~rl2WoK$>urFR9u}oFwbgxd\`DyyfX+zBhP{kF{mV=|o1Q~!r#5t}-x5mungfvqiz^w}kgVxcm?NyHo$EzjWc_Z\Q@]Ti`bLcSCǂf=:6iE.lK o hs;h\a_4ZEaS6dTKmfBgiv9 l)-nq 0ugX}Ma`R}cYo~Tf$Q~hSJ(AjAjl8o(,qCtg ?xe{"f^{hW|gjP^|lxH}nf@(~"pW6~rc+tw -|cyl]ymV\zo-N{"pG{{rc>|lt5}1u*o~8wz g~b%w/qP[QwrTxsMAyzu%Ezvz=Szw42{yT(|{}}^̀u`du|vYv]wRwExKswyD xz;yL{2vy}'Az~\{b=~8^{s|fWt} Qu}Iv}~fBZw(!9w0xl%yyp|Ã@\rSUswOQtnHu }@u80vT/vօ#w1wr'C{A4ZqYSrHM_s9 Fs؉N>t^6Btъr-u#!u):ul}XpeR,qBKrDgr=s04sc;+Ws~)st8b&W[lZUR]Mч3`IF|c!=7t`^\Z%a_SjaLldE~+e| _}2G}suTxNykmH{y AzC:zf2wz̃^){{6qP{8 RwLx;TFx?x[8y%0yH*'yP ;y'` zXYQvJw*Dw'=wȍ6wَ.wא'%w0*w xYX5SeGZM[]F`9?9b7 e.Ih#zMkv)naǏuX\iR`^L aKEKc>uf%6kh-kC"umvpcxV`PbJReD g==Fip5Ok,Kn!w:psQ{wU*eO)gIKhBfj;Jl4an+wq _sTv'~SiMkMGmATn:p~2مrI*Kt7IvZyE\rQ7nBL 2oF<1q7?$r9t51?_8b0ܑe?([h j[m'xNNؒ\.IY^Cv`=c.7c[e/h'G1jbm# pE{*My`H Yb7BdZi4"k-fm% ,pHrm jv!ӀJahPEVj@gk9m3oQ,(fq.#֋s0ƌul I)yI)lCQn>qo8O{q52 r*t"12vk2x }yGEpBr>H{9N |3 },Ćs~%$JeI8„˃Bn<'7L1*4s#qO(ׄ> Ă@`/:ą5Έ/NoL("!@ тN]fJ]PIs_|T,a6X7uAc#[je__ gOcURifDl^j:4oms8owYWЇl\[}^7^ls`a~ibd]e^gQgjCjml3mp;,prZxV*_LlXa|[Cdq]gg`i\ScjlP|f@nnBip2ksntzRfƃQUhhz XYjp [Ple^VnZaLpOdKriAg3t41jv lw||^iOnA2R8oxUwqn>Xr{dF[sYP_#u1MbCv@geEw0h,y_jz3(}KuOuvvSwflKVnxcN{/e|ih}HI=}.|M }gsP}jSTo}`W~UU[A~J^|=vaU~.2cf\G8zKkqN7h~R{ ^VTKYhI\<_Y,a(dE/xIOpM(fPŊG]-T_RWGZۈ:]JS+$^WncOdD.vGnKǑdO[[XRPVEX<8Z) Zgkb`}IC(,tFԚlIJ=cN YQzObTYD`W:y7&XS'(Xy1daP1c:TydXoofh\eh!_Zj"cHNlQfA1nj1aqm]uoygc^WՁ#_[xa^KncaWd edrY'h2gcMjj`@m&m30eop sHr@{9CZd^*\av0^dqt|%Vf.})Yvh)tM\&j2j^l&aa{n(Vdd)p Kfq=is.l:uo w_~SmZ{$VqnrtYhpNi \Kq__5s3Tb tIdvH>km;Dmp+prst[Fe}w]g~n`iefb_k\&dmQg,oGiq~:.lsl+nur rw5}XlSuZml]Zogc_pZbrtPesEguo9j$v*lxq\pdy{]UAs#sXt*jZu8a]vCX`pwWNcxaDWeyv7hz(j2{n}IyTRzqUzhX{`[{W,^n|w6PoSgV^PY@Ux\smK_A4a4cr%d`kdu1N‡m"QЇe1Tb\WćSZI];?_3,as $-aň)j)?sML[kP[c)Sl ZV6tQXH'[e=]]1@^!^5 lqLJi*O =a\R9XTSP9WVFY<3[/\o\h of~iQvNjU"mkXdmJ\7[:n_Pp?cF rfm9Jt:i*Qvl{1o}|fQWtxg[liF^!cja YldOnWfDpSi8Br{l)Qtoy"qizc^_rd`jjfcazh{eXsjghlNqlljCnmI7Epo([s r;(w6tTx_dpafhch_fjW h6lM+j^nBlp6ScvkJYfxfw|2Jhi}#i~_p6SpUQiX La]ZX][Py_-Fb5Hopo22qr{#stxwpYapjOhc~ka!emXgoa_4bĊb(c;!dЍvdUp7]?WVZN[E]ܐ><_aV30`u ''`@c\)1xprRpirUaHsYXt\JP]u_FvbnbVp:eMqgDsBi:tld.vn xqp }trkii1ccje\lVgTmiLokClq0m9ro-tqvt7 D{woif]iTbBhk[ilS9kngKFm[pBIoq8ps,ruItPw% zzgco5`lepYLgqQips%Ik@t@lu76nwF+pLxOqzs ^x2~9eaWu'^cjv WmevOgcwGi9x>jy5l{)m|cn~7vOc_A{T\aY{Ucv|`Me[|F%g5}=Wh~V3j_2(dkkk&lZgu.Ta]fZ_}SaL+csJDee@;f΃23h&hŅAjSw̓G_[Ј\X]؈AQ_ވ1J6a6BqcLV9d0;ey$eehьBz^Z_W\S9P ^BH~_鎰@am7b.{c,V"bTgύk}ivRb&wTUZwYERx\dJy_Azb7{e,2}hk *o}gsX*`tZYxu]Qv`IwcN@xf6zh+={k~nhr3f:p]|_ r_Ws'bfP;tSdHfug)?vi5xKk*Pynn{p递u-dsn#b]`omdVlpgNr iGsek0>Ytm>4v@o^)Uwq~ysX~xvbkuh][ljTnVkMnomEq6o\=6rq3t#r(autwdv}{`hmYjoRS+lpKmr%D?os;pu2mrv&sex tz{:~_fsX+hRtQUjuIkvBvmw9nx0ozD%Op{ri}Zy_ ]#dyrVOfBz$OhzH:i{@k|d8Glq}F/m~S#nqUpczʂ[>bTyddMf OFzg? iH6j[-bk^!k[n· }%$YJa RbKdbMDeΆ= g4h$+ihʈhmFWl_~Pa!JbBd ;me6?2e)f7f lub{S1[)|V@Tm|tY\L|\aEY}_q<~cbr3%e'&h|kc-xp#`xX3YylZSz]Kz`RD!{c;{|e2&}hp&Bk#mZs^v],X5v_QwaJUxdLByf:fzi 10{kx%}Xmp[4_v_]6smb=VtgdJP$uff`HvkhmAw{j9p}Lsāy[pg^U qi!Ns jGt(l@juLn8vtpL/wr+#yt { v]|kYnvlSLonLpoErq>s5r6t]t-uu"j<7k0n/k_&wl/lEc ^q]PodKJ+f;iCg=hs 6 i<-i$i~j1 kp ZQSSVMDYoF\X?_M7.b6.e-"n7hgjV#q`X~5X6R~ZLw~]yEyp`>\b6eM-g!yJjrYm tWO{\Q|2_&K|aD,}[c=,~ f)4~h, j UmGowUyaOycIzneB{&g;{i3|k*}n6p2r~W(zTvfQNwbhH1x!iA}xk:ym2zos){q^}sJ]ut}MRUt]k8L[u,lFunV?vo9wqz1xs(Qytzv},yJPr=p8JsqDtr> tt7Guuo/Ovv&wsx_=xFz@ {}Np'uHqvBr w<]rx5sy-tz$uE|Qu~o y=Ln@{Go7{A:p,|:q}e3q~P+rvo#rsO wJlEms?>n^88o1o)p$#!p#%>q3JvfIjwC?k=}lf6mH'08mÊ;(2mی1mPo6u3RTSLkVFY@\W9C_+11`a(G7d'gm [MjxuPX-K7ZEVZ]L>„_8 b]0 d'6ig|>i lxBOu\rI^D:a=cZ6߃e.g&.jEKl 4ol{8MW`H1bBd<'rg5i-k/%mKz/o_ *rx}LJ}e2F}dgA4}h:~Ej4X~l,n#{p~irl uJziE{Bkn?{m91|Cn2|p`*}r "J~rsu byHxntCOyBo=yqT7bzer0zt&)!{u s|nwJ}dyV r~GvslAw\t<wu5xv//y&x2'hyyzT{-{E}}E4tx?uy:1vz3v{-cwB|%w~ w#yHY{惞C,r~7=s8t51t+Yu3A#u^u#nwOszOUANq ;qE6Hri"0r݇;)s1!s r u|>I"T DgV?;Ys9 f\!2k^*a"8d4 f~֑+jycHVWCZo=a\7Ŋc_[1za)ŠdI!f3h@l|.G[AÈu^+<^`m6ob0Ld(g* iaKkfo~ES_@pFb;E@d56]f/h1'[j:lDՊ-n3(sDTd!? e9g3Ai-{k&mn|oVqAvBhY=ii8? k29YmO, o$o7pʄ)r2vtuz@l; n6jOo0`q*,r"~t-ւNum$x{h~c>~q$9~Drn4~s.~u(cBvt wZy ΁}'`<|Lu7|w2|xI,}y}&~}}z}|b~~ ~ Հ:zq{:5z|Z0z}*{+~$I{~Y{e~{ |8xSF3xS.y(yM"My|y8iyD{mft2 -Ge % M u EtHHt !"$,%Z&'(*+E,s-.0132e345728]9:;=>;?i@ABD"EPFzGHIKLCMjNOPRS&TKUjVWXYZ\]*^F_b`abcdf g&hAi]jyklmnp q-rMsntuvwxy{ |"}9~Phʄ*AXoĐؑ.<=<:852/+'# ׮ϯǰo]K9'ǼȪɗʄp\H3ҵӒnI#تـT'ݘg5e0[%k&V7Yy.Pw/P^X"7Ni * Jl.[8^!"+#V$%&())*S+~,-/011a23467;8e9:;=>J?z@ABD!EGFlGHIKL$MGNjOPQRSUV5WRXoYZ[\^ _%`>aXbrcdefgij;k[l|mnoprst5uPvkwxyz|}"~Ca{˄8Rmӏ,9FR]hr{|wroljiijkmosvspmkihfeeeeeeeefeedb`]O?.ժ֏rS3ܟuJZ&Br,T t(=KT\ fnf>j#6Ld~  5RpAa / S!x"#$&'#(E)g*+,-/0>1`23457889]:;<=?@A:BUCqDEFGHJ K#L:MPNgO}PQRSTVWX3YDZU[f\x]^_`abdef5gKhcizjklmnpq0rLsituvwxz{2|O}l~Á6Rm֌2G\oəٚ $'+/38=BGMSZ`gnu|“ÚĢŪƬǧȢɜʖˏ̆}sgZL=+بٍqS4ߩS!K_!_Mt*Jf8T[:i&8Ng *@Vl $<T m!"#$%&().*E+\,s-./0124 5"687M8c9x:;<=>?A BC4DHE\FpGHIJKLMOPQ-R@SRTeUwVWXYZ[\^ _`.a@bRcdduefghijkmno"p3qCrTsdttuvwxyz{|},:IWftȍ֎ $0=_u{|;n`S7Tҽb5%bŪ=җ#-x{+Sam@\_:RZ⁨5bI /M]ׇVy1 k~^m~VQ~ᯃp T%=}vC9Ywx~j~đ/]5~P~賋}s슒}AK~3z6~̇5N\Abrtc]wUVƒS΄^o2K""Ճo$q?cOeU\V'.aDZ쉪CTGq b{KUagsԛ{zZjb` bٚ҄K˃҈~0p^Ib(Ufᡉو"ؕ<ޒyސ/j싘V}o1bBUj9JʈϢ.󇷞%|ry뎒|EPnljqt>7h\Q{섺̺(֍ϋP]_"aG}~L5rhfō[GP*_ 24t]W|pςyey Z}bP!DC{őJ||i})f}œHh~~ŊvPzh]҄Sςʄ5v➌̍5VF}rÇ{hM]pHSw`Yy_R<ݒqR |qMLg'\S|k7Qn5M1-UCwz-`p*ދf[񃋆R%[Jǘ5ޜߙbS⃄Sy!ʏnwe:[?QF .&NPӡyڑΝ\=rwqmUcڋZPo h!ϡ^ӎϘ{{)|}"m}|~rBg]"`RfŻ6.]:ݛG1S:a;'{" qm?g_W\R؄ᢡ I~gzDpVf{Ⴭ\g6R̃$"ˆq&ޑ 7yoɋ8ef\ʄRGP7\\ԡJB&njؓIxڍneX[˅e!RxΡĪԓ,S&@wmފ>d~[R"w[pڔJK͐ev#.lΊ#c1Z9}_Q?t靜l& G|~WPtԌ=@kebDYePq[c@{_ 㚪Ē@|spBj>0azDEXzvOu陓[ߞZ{9ɖqӋJh`>W\AOͮ6]ԣ?&՘pǍܡ胜 yɎpmI0g\U^ą!Vd`NYرzԧ{N~{̔ŝ|YJ|}x*T~nudb [2hQτۃ簢wȦΥGĝ@Ҋ逇Z>w6mF`dUׂ4Z⇜Q̄vㄫ.O[`IizvN+l󍻂c̊SUZ&QɄAhhw+ǟΆ̇х~V*]uNl*.cCӄsZQeQƃi:~ABۛGOzC}:tSkf4bÉZZPQÃkgg!受wߍ΅ό{{s" jd*a㆘Yp܅Q<§9-ᖷ~ 8qzqݏiHCarXd!PjmYHB_biiH_yQWPph?L`6WׄOƧ@ȔOD\۔xonSg_-V"OӦ}5_H7u].КWyvʔmet]·8qUNpߥ <wlz~%=u36l_dq1\ڋAUMÄXm{Px{䦷{,|`|{ڙL}s\ ~jb Y@vPυImyϦx|zܘr}gyi]6a]YPՄ37"cƥfՂt;WyGqɂXi@ǂa ҃)XÈPڄ[yڇΆנ8܁T!xUp*Jh1+`L1XPP߄*Fo^E;;wۖoג;g֎`%΅/XW?PلmIT܍ڇ4?v7WnŒ f_rR,WdžDžfPianØ$gDڏ^}ƚYuNjme񍦈w^݇!WLOքʠ2T񨒗Hs|tial&e7]։oVNنdNU؞ҕ!qQz{ntsA kō`cϋ \UiN[䝰ѣYeS:zE,qȒ j5nbjN[T:MӁ}aɓ" kX'{xpǔ i"asZ.mSM^$<|!4j|Mz|w|}֡},v}ng~f?^܎W*!O兯% pی|u#m1me򒕁,^wV(OINٵjh؃As|tP@l薃ea^rVԉPtүxΩĆƤV{ esf.lՃd‘P]VCP U􊟉/Tԣ6zrQkI/d'5]__V;P>s$Aܨˣyy 4qWpj]ac`'\ŋۅV AOĄΘΓʐ0ЇըWxpڊ{ijb\ ]U^>N6ܗ׏mۨ~ˢw Rrohvha/[_釁TƆ'NQy׎ɘԧɖ}Ǣhkv n ag='`׎Š ZvCTPM‚?dU|?3t m|Rf~卮_Z?YZSԆMDׄ@ϭ ]{s꜎Ple^BXWRKh7L؁}PF}g\}CR}~}Cw1}zpCD~i~b[ؐN2U2%O B}ʋYwu}Mvoonhab!ρ$[U5O"huՄ1փs˯|=unמhKHaT[G UO7GA_4 {̩,tߣWn gza!nZtT퉞7OJiƂORn{~Zt SmF+fՅ`DŽZ焥Tى-O[̐ʺBŋYz.s3lsf3_,ZwȦ[p͠jcՕ]א/|݇w}u~~&t_ydUvك>y*zG$z{,|4P|؊} ~/sj~#d8UwxOyoz4jSz{|EX|3 }r~cIUxtqyyƜ}%́px)k^OR߀!4g߃zܢЪ^=NV]ovÀ[jj)^ 臻QX ضӨiy!l%me7♵cu= i nj\uQ)Tx+3 .k9Be4Ý/sjɒgvz[:&Pt~\KDi.8N J^ti~mqf6Z~O~xy1z8{tf|e_}Yo}~_{*lm℟`ЃÁT9:FX識-ۈQFz8}m*! `cNT)8҉KAŘӉ1_eJe+jyQl|_ރvTwՋRƷYgІ͈NIӇZކrx^kЃ2_uIT .׵iiߨSO=XGЄW3wsk.ÆS_ESkNuX`޳/ΐN@ԎJv-j8S^S[˗g"ұšdIx(owE~pti]2Rb2ɷnټ دƇ,[΅) | shHh s\ȇ[QQ튖ʭ}]9nݗ}kѓ|qf΁'[iPm"],dDߟ{ p4qe5ԌZ_PNUlŷCC˯ZNnQͣkyXunc7cҀYOĉ>On~>xFxy짏 zۛȌ>{׏Ċ|ރވ}w$kxi_sSFɴ~e ~~W:Nptvj…_.S͂߃O0"SE\aᤂH+v u׆}j1^XS}ƅ캃箴È٢_mшSdtil^7TS"0&3ޡd^ފ[\݈@t~ h̄(]܂S΃1r)Ǖ-Oϒן 1n匧}erȅg݃5]R]epyʊєa5,|O0qkfȃD\' QQ݄1k泭nTRCم%zԅp%1eĂ܉[CQeKvަ<_a|lڕyF?nՎ`d~ZI;PLbCE"f Tl|]`wIm"c &Y߈6OxHov{l;ڊ[ߋyCqvu􄰖k4a؍)XO Gwx锆y1zy {x|2}s|~hۇwQ]΅S63E}=Y}٩t~/{~7~ԍv~sh-]cSJlјOŕ ɝboi}qwrBugy\CR郡WCDjjHVj{q]f:\bKۊ4X݂CO[gL|ݑĎqTߚo}7usYi]`׃|EWOz W(ZL:ewˋ{]rh b_(?VŁ`HNUw=cxsm,ynUMz^yl{U^|jzl }p,~~fK[݆R+[|}Ms}~#0~3 ykyoZegl[~Ră3Ɂ&˂xvnjRdч[%:Qcòh};a7YX߅qP%9žu ,y<ֈp鍰h`t߅XC8 PmVۢenƒAщ8*whbo$B`{'>~NՃevT 8nN$fȍ>_%AwWpP,%Έ`S(C}=0)uYemŐf+^„wW:XPSk^&׋Q| t7هl!e;,^CvVOnިkUAwւY0zϗ7s dkdD)]9ʆnU񅝅lN삌Aђ ǔ"X?yю-qLj7c_\xZXUB(NC c)4ԣʀZ=x~pӒjiӌ5b^L$[2T]M,q(̙K~Hw)DSoRhIwa$iZZwSDM,7èFT^@ND鄕:_khp{k tDVmIf}`5ZȆS Mh2Mdʕܣyzh=sClQe@_V5@YITSMٜ>BwNy@r!Tk6\nkޛd]e͖l_ڂYʍK*S߃N^hLDž[dž~wޤޅLqvk#Ge$΄_,1YSm2NHH2}ũw>pjS-db+^#Y/S{넨NḮ@⮴6|v1boŞmiuc]א GXnRcM@8F Ng|*uj.Zg (7a9F:[fV$/P/L(Ї|C]yrҢOlqJfB؎`sxZDNUGNP=~yKȁ=ywXzqxx{y{zİ|q{衞}*|k}~~sFc΀xTvTxq?yDBz 5zҀ9?{y6|vđ=}Q~+jrcfTrlwUxdx.ry>y􅭭z{Ȅ|1}q~jcTtvHvqw:Ɂx7ry+z)`{|T}4q$~ b&T=lucm{vc Ǜwoxpay{bz~g{v |p{}bS~ĄTX]tßWeuМ2zvw_x z:{}|"ot}AWa~ZT$rtO<^uj4Ovw?;xtyz|{;n?|ى`}S'[t>Ou@GFvMBwK?xO 'yQ\zZz{d}m|y_}R?~`tTPuBC>v:gw*?x">yszqy {k|% ^}7Qt~Z4]t:u%voszwJDx)!y /ypw)zj{ގ]2|kP~ _ju.YNu %vwe-x/pKx҂yלSuzh{\|(P%}ƄZvԯhwƵvxz {]L|<}z~pǀbJgT2>~"~~N~~{~~J~? ~ p yaT1v} }J>$}е9}su~1~΋ }~Po[!a{T/3| 7-|gF|Ɗv}!}~}~o|~naT.$F{?O{v| |oͤ:|֌}Q;U}ډ{~onC`T-XfLz3N{ij{{K|ZN|؎}cxzV}'m~`FSmz?WzS{3D{>{|zl}Ox}Uk~9^_~نR~cz- Xz]z+{K V{+|#I|$wk}:yj}֊^~siQuz@bhzBhzӧ{&j{y%U{療|du|퐑iz}G]~2P~-zazȳŵLz{9S{teN{͝ |6t|g}4[}ƈP?~dSϔ{{Cs{$h{I{o{y~| |r|xfh| Z}~O~u؋uh[wuxMHuy@z͖|}J|v~nTa`тSS˂La|ɦT}e}篡~dV~蕕%u{!ꀪm߁P`e܁SႬ􂲃dw؃B1Bukz9blc_kS|"΋-PJ #C׀܆z@҅yBׅl=]_S6JHؐhouOyvA=xTQ6kv_FSǃtc"[Uw -4ՏǍ{ŋcw ܉[jQ^/qR[͖vv̙=yiׁcuvmi]GR ˙ Σ1*Vuk%+7: t=thr4/\TQ0uɸɩ`k,1~훺i~ϗ~~er~ŏng7~ۋ[~Pn&̀c׺2攓~ڟx~|~q ~qe~Zq~O~IλހAg@7~ʣ~{~Qo~@TdD~CYf~T#O/~lgZ^u$*Uvk5Awĩ^yzS{Q|xa~Bk_g8Si̪O{\|g_} a}b~55~܄,mwՀRk2D^SRG\jχ{VᆐB΅т2#r)ق=vσN`jǂ^PS< 7 F$ԇ|(˙cjхAuނÄyiقM^.惟S(Huُ]9x'£wmʊ47ހt>i8ۅh]ԁhS1šY5N%C3VsƈhGg]5Rw0񫬄[׃rBʈ΂YQ}͌rV[g23\$QDAمѩJW,~|#miq sf.[D/PЃ(쩷 fP'iɂ[dzoNd2ZM͇jOh I+"$"\!}b!؎<-x΀ؔjmQ1c|݌ Y$sOM ?|dZn/9!قWwDl b,0X#$N~YAt_uwBaxyތ7{6w|uDK~i$^S ¬zٷnu{p|31|ږ&D}~J׆!tZhᄡ]R킦֌ ً((S$oŃyK%o)ue" d[IdQTr0l4ܐs>ȎfC_Ŋ·|܉+x6nMMdZAQ8\Д_1MdvYm/cZ?˄QJ˱ }giFVGG~و;juukbY^P{PmKy+nЍKɐɋj5 }kՏ1t"2jфaÃ:IX݆!OvPW576.;{rӎiL&`ՉcWtN#𑗧Lev~Ή8zP;q.~2h_PuwVENV:BӬԟlVۛexGoх3Df̓O^sUM_O^'tRݘuv"]x7ڐyIzw[|Zn+}d\{Z'QTOyzeS{6֒{􉗐7|%}v拾~mGctZAtQ:,~٤* Ej_TKu(l Mc(YQ#%cC؄ÖAܙ,7f݃+}ጯtk| br(YVQ ȃט=P]'ݎؐ%ώ9k|sEjb QYC+PsũYŎڕ&QoXۄ[{brjxiއnva=}XPnc^ȑ6ϏzڍHyqeh`RW̃7IOwO@Ӕ_bSvxp.g_uW ÅN!ė1PnIs wKW3n)f#$^s0V3XnN@9-@:nz{T:~x_uNJmsяe%Œ](ȉU4M'OfP2|k nϜ}.twЕ$l0cl\ lTWeM3Єbtuvx'}yj{zss|Gj}aɉd}Xف;P\aU)y^zfz؋˖{q|^z}Kr0~PiՋoa9؀XZPLT o~A~g+~ UTyOqXi `QX@アP<䞽=I^Vq$dVxϏ\pth`Z`+΂WrJP.5"r*VwÎoЌPgɄB_RW P!߃Hsod:S̔%O~/NvqknņfC^ԅWOh@'F і!g}K.u\;τz=Cerԑ kdc]HVOZCxЈƀb@yqanj'cA\/UmdN˄!YiN›`A$̊w֔7p刦ib[ևTN4C9ٓK/}bvnjZosh7Ya-[?T9vqMńOӢ[_|Ηulndg΋ `É=Z>·SMUc⊟9{xؓt=&wm!f^n_TYX\RULt3_њezOsl ueR[^X!Q݃+LRu֌XvÅw~xxyq{jU |c;8~ \?lU?|N,i yzJϣLz}؟/{w%|DpE.}/iR~6bd[؋ЀU 7N_}}ȃ뢀~|f~\vLS~oqBhb 耸[v;TׇNXɐժdj`dӏZ^;X׈1RʅR?LdTƄԒ}3w pyڍ/j{c1]׋`X,R!݅L|uȨ(V| u⚽oXhlbގ͋p\͋/WQRg LI |y{t䚀Nn_AgM5au[ϊV#HgPdK򄓉v!w}ͩ5xUwy:qʟz,kD{`eЖ|_[~4YS{MꅇV-zYHz}V{ v{q|[km}>e8~?_ oY/RSV"2MU}nn}|iw}v?~3p^~jbd9^X㌵S2M#{u|oDiρdt]^4N1zAns䠆nЅ9h2ab]MW֋,R)3MzRVyIy4=sJm+E^g_Նa咆\njpW@vQMeP~ThxcSq Mrt!Uu|vܐ8Qx5 yzzm1|kG`}Ӆ3SXF+prs4uנvuZwё?y5yzl|_ }g$Ri~ڃjpRq̥ksX;t!vwsNxؑwz8j{o^!} Q~upIq+s1AtNuߝvw4xqvy(i{H]|P~pýq̵sTteuۡЍwxi_tSy`h zs[|XP#}ʄ pr+jswæAttuצw 7xC-ryzxfzZ|rO}4%|4r~|t|uֲb}\wg:}y~Bzb~| ||}rn1~`܀ES@zy{Yzн{{|h||}Sc}~2~6~{~m`mnGSv=Xyb)z:s&z灈{%|! |ӁÈ}z~\m.+`ASjׂkhxyDy8JzRPz{_ |!o|y}̄Fl}~_2S`xvw(exW}y-)yɞzg5{w|Xx}@k~9A_J*SV wvԗrdw7wx詨y[Νzvz􌳄{ڊwk|Ɉj}Ɔ^~R9ΔvEmw3gx+x󕳛yݎz/V{uu|ai}YX]~KQBśvܿlv vwОEx6yZz1{Nt| h|\}ㆹP~׃ʉvyvШ~wxaXyAy!z͓ s&{gv|<[}PA~xȆv4nvŮnwqxfnPydyΚ};zqn{o6e|KZ}1HO~"Ɛvw*wѮxj5yoly{znzo{50d|Y|O }؄*kzq Xs5uZ|v?xz$=+{yKU}=lC~_k̀NSΜ0xK/y2.zހ2{8|WW}~~xXfk X^UCR<"%w<]AV<qŐ Ewp2j؀^1RD~侱~1^~aզ~^~莢~Evyj* e^/vRҀ}!μ}[}X}̊4$~E~N~ui]ԀR "|v|}ǣ }@U}{"}ˋj~)tK~ h!Y]R(!FP{v|EЭ||ۓm}}e~s}Ìar~3g~\*,QC{K{<#|%|EJ|R|'} |}cq}Ќf{~I4[L~kPr7a{A{I|ӝx|G|uw|M{[}p7}{eO}튋ZZ~_)O~҃׿m{կH{קH|~|>|Z|y|ٔCn}3 c}Y7~O~x|q|%|'B|6B|BÂ|mx |m%|b}OX;}N~)!ΆqTs5stv6Xx9yт{xu4}i~^ WRxxywxz({|=2} ~ui8e1]6@R[Wy~~΃Qs-NP΂Ct/)h䁦]- Rf5$ɫv҂f)ɂ݉Ӄ~ks?>gg\ɁWRKOʂ}Xi?P_ʈK-}}rVLg@|\mR3ekt"5׋.|q$xRfVz[QS/ZԁNÚ̀oc>QzEoӀ EeLGZ̀^PA]ѣ瀮ۘ_!*uېsyn-dRYOiI,r!zؗ*"]rǖ܁w`:mFHc2'הg1:znmrPi`s\XZP=<՛בpNM+eς-ryÄ(qXhʆ`fX pP$4o'Tފ%ȎS"ֈyĊxU4p*g̅c_{WkOq֐i>Ode Oxvmn2f^VNف5-&KRˍ{<} uNm>e]ꃍU^N'ܞ-ȏߗ֍T|ы|tgxl{#Q{€|ny1}r}k$~c^\U NT\~ˍu.+@ x+q"3KjUic=^\K UJNT; o}`w-Sp<|ib![އU>TN]O˛!ǃڗՆ?|ʔŅvLo(h%aʉL[8 TN-א֋}W{Ftϑ6nb ga`Zw Sل?vM󏖝xψZ8sizgҋs}lGf0`YÆ$S8DŽL~ S2;2ry8ur\kፃaeĉ_-LXRTtLb%8Ǚ~ؖSw0qA j(d\]]W7QKꀭ9W}!v’p%ǑiُcZ(][V͈xQzKKWKir‡#t ȠEuX{Jvuxn{yh5 {Wa}ZN~TTNvCwbxzoyt6'zmŔ{gM}`~yZTN |EGzd2m{{y|Psd[|m}f搘~`wTZ+S2Nxɥw~5E~~x $r{l=,f4ހ_ꌬ0YˉSMפU~!w]qʁkvme)F_b YpSLMR҉Ԥ݃M>~}W!vp&ij̄+d^vX{S MكޣH{ш;u5oiE+c]݊X7RlVLR 7AgzXMt1n"hɈb捋,]uSWzQۄL^Մ$N)yRsSm^gZb\M{VۇUQ;&=Kg8{?xŚir~l[f`G[LUㆋPzKqKyN}ewšgSqk e`QZo+U "OԃNK[Rstz.*ut~w4ox{iaycᔦ{^ }OXX&R"M`F5w4~wy|Ʀ4wC+q:lDWNfԕia\JWyt뉀o idk_g?ZZBUą!PcK߂&8?Iy`~sʟw2n/Fhߗc2^iYɆTKP KjK~V7xprӟm8eg閱bÊe] XSTцOTzfKU[}uw7qlcgTaܒc\􎔊QW툱SAg'NJiځsn)u#pvUsw|uoxvyx̊{6z|||Bn~}`}S]+ؘr`vTsw=uy;vnzWw{xy$|Vz}{|~n }`}SO֜p~kmrg~ؼksOJumRv2xeV.yz{qmU}P`~SB/ԏo rq6rPt{꠭vw$yByzۃcl|_~"S6ς0҅n`ŀp q\s6uC MvxxzIk|_P}S+w{nmuFloNPqsϖuۀwOtyyhzʼn\\|yVP~9KFl?TRn{p qɞYsbuDdwms1xgzk[|.P/}݃;lar=n5zZpaqˣLs}u%}x}vz yBzz{|k|}Fx}~ak~_ 퀒RÁ}v'}/w"}x%~:y~ztYuɗW vMzx4`}'y}sqzċf|[Z}UPM~Sqŧs tZѝu>vZw딽{y/#pgzpe|{5Zl|O~:qծIxsȧt\/u|ːHvawĘyxnz,d{cYP|N}ヹrs0ʥt` urjvMGwZxGxʖtm]yb{X[|PVNy}0~n)~Op7H~r`~tV-~v[bIx=z(v{/{j:}^IR[ہ\|u}vh}_wҤ }y~z` ~{|u~ i3c]πR=qĄ{`{{||R}Z~.O~[w:ڭwvxyI'yO}zx{bm|,cq|Y}ʆO~wC7w/xy3 Iy͚$zuEvk{'ol{䎧b |X }pDNv~8wkw֟$xJy|y*zLWtzj{|`|]#W} M}߿#*mfor$]tz'v x~ysT{g}\&QAhtbuɨRwAdxIy7E{5}N|rie}gHH\EQ؁󻤀zȱ{|X y} t}~r|y0qf[؁9}Qu;,GHio#́{Qp9e򀂂/[r˂WQy ~~O~~υ~zWz.Yo eR [f%Q[Â.}ˍʫ}{~!~3h~TH~3x~ч n)dpZaPǀPi}.}b9}mV}M}4~NwX~^mN~cp^YsO΃/w|ؚ,}ϝ}*h}P}t}fu} l%~Ib~XO2Ub|?F|ŝG)|E}N}&Q~2}\lt}j}싽ao~EW~;N~郏|{e؃\}[qQs̴sЪ[u<v+!xtyptzy|Bo[3}e'/ZQF8ԅyƩ Oz{z=|B}CR}x~ndMZ uQׂX(dXڀ:+fu񀴀wyICmcف́Z*DP{q셤zPRL2Zvalxc=TAYˁ:Pс&ӭ5͊aՇ~KSuAkkbdׄYP> JJCҘځTZ!q|̀ۊ sj{yEan[XCAOo(;#@ޕ 8xˁ{jkrv0id`)WzʅGNi_Ş؁--6ǔ\\yq(ҍKh8_ZV_N :b?ǁ{t(xmҒofR^=&U~My~փW73|ˀwrnhEe5]"~ՊT~!L~~׭&^m֤+oЛDqܒsɉuʇwvym{c}YPǃ ;sitؙԉvTw͇y~zu| l2}b%"Y\P=+x yԘ\zďT{|}~}htA~^kfn^bBqY!wPq?}z.~q,~ϖӈ$202:|JbQsjׁ7aXz:PJ₺UWǕXT~g|zW{7riEaXeP&7aS ʇbnyƄqY`rh`C%=WO$ $5]_N.cxap䇲g@_ZzVcNҀQ凨'pŐ܎Cw)npf̈C^1V.N {9fr|r5uo~vuÂʎ?m e}e]LJU`0M}~PņURO4̈́Vq|XtJlLFd1 \TeToʆBL3ćO֔*EՅ0Pc+{5"sBkpWc[GSqLy~ۃޤ6moۏ"rusMuzʊ_wrlyiw{a}XKO݃.ɑs&t(v'5wxyzhq4{h}`u#WBOoYx9y94@zA{,C|x}p~h3@2_]ẂO揘}N}ӏ̌f~]~zIw%oۀUgn_TvW0[;OvNsĂ^L3krz[(y~wvn~n1f^̓V߂OXiʌ쉉},uFׅ(meP^ yVCxNց~Kw{\Mxnwt {ćsYlj#d]3U@NsӍ^ŋ%zv(rBkOc\h-T΁|MsxC˖FDAf;y"Ɏqj)Ib)[7T rL߀#̆zv. wp 0Ch݃aĊZ]=S,L\ؕ ,O@}ۇ˗ZveEznꑠg`qlY`J)RjCwKM8n]p:}r!Vs}1uu+wng0yfF{^c}VO`st^uՐqwZ|^xthz@m~{eЈ}q^,#V_N~wCx&yz{}{t|lÉ}e& ]HJV N˃ٗd|]|}~zb~s @kdti]$nU2ri~x;t2wvqwjWycF{\Q~U"~EN;S<s0t:u}{VwLvxp3@z3i{bx}r[Ԉ*/TՅN%ʐ"wg|x_'yZ|y~zZv {]o`|zh"}b~[^BT|Nu{\|6:|{k}ru~n~h iat4kZQTGAM8ڙχ?& oFzgဈt Xm gb|`܈Z~TTM살i#xƃy6;r|l]hfp[`WY݆[SoM};v!͕䇞~r:wqʎ+k{؅ei%_-Y#ZRރLہ#]kl}A}vӐ3pjq]dv$^Z Xu KRCLG:ψޗN #| SuɌsoB"i`cy]vZW.QKƀ̃里pz%tYugnG药h-bXHW\f&VP؂4|KTk?;uy”Ts8,-m0g#6a_[|U҃P/υJoq]}^rw.trvflx?fz+_ԍ|/Y2~IStfxMst}gv,wDwqK+xkH.zUet@{_Pd}YMNS4܁Mv<􇸡"wLȝxJ|(yIv4hzGpY{Fji|hd܎}^ҋ~XJRYMg΃*Ƞ:{֜{{2|muM}o}iՐ~d4^^LIXpCRނLMYg\ɟl~ߜ%0zDtmnْ7iހc]ʊtX/0RlMM~ћqy3)sdmےh.8bz]߂W]!RbL炏Ğ S}Ț҆xrN`l̑g0aҋn\NW7VՄ QdLO ̂-|Nxw qM kӐOfF*`s[مlVdWPdKŁ灉{ߌvpFjѐeR`ZƈbU߅P`tKL#gÑzz5tזAo .Wi"d>I{_YχTDžhO?J„WQyq@{sԕn"ۏhɎ cOF^0(XS4OJn%p{r-vsq\Qu.l_vgxa{zn\|jW;~}QDL݅t zuIuvpp^wkxf~+zwas|\L}VlQ?LԄewsz)xWu;$y9pzz2k{-e]|U`}[~V[SQ,L˄N~zy`{ctpB|oH|ja}ieM~A`m1([I(VJā6QUWLÃ~}Ϥ~x5~nsl~n3i1dƀ&_xZ݌J_V7 Q-5LU|=twwrǜmhڕ|c_,ӂDZBUPƅUL]܃|+vݟՄqڜYl˜r#gc ^_BYTP?'KςW{<*u?pz kᆂgTb?]!XTrO„AKNރz\}upkbf;Ԉaiy<\ٍ?X9SчCO95J݁ryyt&Wo|j Ie>a`t[ƇWYRNDžJy$x/sDn@8i.dd _[%\RG@NgZJ%4q-jdrm %soucrbvtkxKvFyxyR{zlL}K|_8~RfπoarF‘pskruê t?wJuxؑgw|zKy-{xVz}k|~z^~RUbmyozʴqk{as(|Tt}Uv~x~wfzV{j|9,^\~RE]lCpn:pCr!tɎuӂwҁvhyj${]}R7j꼿mBo/q(+s'?@u|w!ury#6i{{7w]};R)DƻiӐ>lծn_bpmRr~t<vt/xhz\|˃Q~ۂRhwkSDmÓo_qʉt~Nv(rx9gwzQ\|[P~l hj՛m:o^ꓐq sK|uqwՊfvy3[+{P ~hCjlTvjkvl8wo|xqҚyt9Gzvk|xvV}Czj~|]~Q=YtQqutsbvu3wv̘xxmz y`{S{}ub||i\~~i]`lQȀҁ+irxҸtyЭumzۢYv{× w|yB}Dz~aty|1h}\~QlqqXr΀2tQuuw @xxyNs{twg}\~Q zp;q8sHtv4-w}yG8rz߃gX|+\6~Qxo@pnjŨCr*tvKuSEw2|mxq]z^fo|[}PIinHƱNpߦEq;s"ouVvzxKp yeg{}i{m oCprzyt utwPjx`z0W {ćM}azjW{SlǪa{oU~|[q|t}v;~~>xyse zg|\v~Q_y5q!-yrߨzt{CvTX{ww|y}}{3ry~g|g8]~W\KQ@=U wwڱjxx yqz bz:{{|7{|||}q}~f~[րQ#ف+vo~we~JxaSyDnz({d{v|!p}1e~Qg[6gQ{FuG/vR飙we+x^]yWz`zP{xo|1e@}ւZ~P$9StVuyʡvۗ`wFx yɇ"xz8n|Ld`}[ZZ,~lPdys(tɐvw%fx5݁ayPZwtzvmW{Scb|YT~IO8òvstOTuvwxߍvz jl-{;Mbv|v1X}N~Ńr̞˦Is>u5vPL=wix~Uxtyjzߋ8aj|W}[qqs,4v{yx]pfzé7|[(~P +~p~Wrn~tI~u w`yEyzo-|e~HZ$P||v}xI}vyN_}z]~'{p~|{x }n~ds!ZMP@ɱ{}9${}|p~J|~ċ=}MAm}w~[3m~c1Y@Pz%zoomz[{}JK{.|~,}v}l~cc2#YڂtP[TFyz$2z7{N={ۆ~|yu`}#kk}݄bZ~XbIOҀx͏y|Rez.zƋ{Ys}.{.s|j}dah~*`X~O ԪxXy—yAzHz{{:r|8]i|`}WN~oNZxzS3xz0o{2f|D2^F|6U}HM3~Tpwxwny ՉVy8\z$w^zn{Xze{]1|[T}VL~˄zjYlo*Fpqo# suw?xEmxzcy|Ym PskU)pDr !sقgu˂5wJnxv7zl|rc~:Y|PG|v!dwWxmny~Rz~HI|u}v#>}~}vj}ύn3~e~A]~jUY~ɅVMAI<} Ȗ}**}I}Z}J}h;t}l}d}D\~,Tn~hL~tr}%}}#Ԅ},{}2ss}MCk}pct}[~}ډS~LF~JY`j݈lוo:qvCs{usdxDjmUza|XF-O͂ԁ̈pc^qϔJsĆuWx[wzބxrm6zi|^`6~9XʀOkϣ:uuCv؅xny6@}zkyʃ{q|h܃~.`RWUOxz\9{Y|d*}}x6~p@hz_*WU恗OQTƀJ؄HɀćPׁ.wxbo%gF_,VQO.Tl9^R/~Q/v?ل7nbfNW^h+XV_N܂ɜփF㔣W|ၧtTm0 'eEօ]]U~MSŐ(b>CJ{)s؉lWdO^ \2TzMKԃ/udOsԁ1z1ĎrpsKj,|cH[ƆT(Lc[0eÁ˘$d?x~Jq %i֌bVZdSH1L7~e-5~ွwg@MohaGY R~؆?K~Zj͖*mouڊq@^swH>vos&x^gGz_7}V*XNG%o͋qksuD~{vv@qxnnzfx|^^~EV"N˂ۂ tjv>wix|zuD{`m|eل~^V23NtHyzɊ{"|x{Ά}Ct8~l҅~e;]xU܂N$~琝Pezjs4#kVdg}]UXPNm4ڏ7·5ŀDy]TrejރFc+\RvTۃMC%4q xʆpÃi<[b[>TDWMH$" }ą3vJoshÇcaZZŁ{YS݄SL@Pd񃢅|lˍuzpnlgXa`Y dRmL#уwb[!h<o[z_tdmffdo_GkX܀mRyKnˇ3ć7e4 y@rڃJ.kreWT^WA\QdKCtkDxms͏o=qy錉srv1k\xvdGz]d}!UrN#,XoAqsxFu*x݋vqȊ xjވz|c4|^\x~QUANC:ݑBtuׅsw1~]xzwڊypZ{j|b}[CzTɄMڂy?yz4z}_}{vˉ|o}iJ5~bQ[yT|M҂v?Q}x~,(~|B)uƉ)o ̀haT'[9T5&NM܎7Pqkzytm+g炣`؄ĂZ[SMKֆZ\FۆyfsJQl†fqd_B;Y0S$LGN3ZҊq~Qxhrpk%Beut_ɅX肶Rg/Lo⏟dm}?w'qpjdp{N^,XXBQ8K7(h|:uň*oiQTcJ8]舊WΆPʅ?K)փ\L0Ӗ@zE>t͒'nsVh?bL\.VCgPUiJ͍k̖tm+pzrtt5n vcg׋xa:zZ}KSMg+既p cq$syu/svmLxg#z`|mZB~hSVeMQktGbu~ؒ/vxx8r ylzfx)|``S}YІ}S_ׁM<7xtoye}GzYw8{Lqˍ0|@kF}Bel~L_gYaS_M)тr|h}/|l}vc~\p_~jߊe 3^ XzR߃PMs7.ʀ{t3u|goȋi܉ہd#^,zSX^RcqLA .#z2tC]n 0hƉPc&]TWlQƂ탂Lxh~hys"ImgňΆ#b=\zW Q6rKn*}ywюq&lk$1fY:aJG[ZVNzwPKБ |*vlpk2e_`80 ZUbZO灏J5ȀՑzt?u]]o_j#ed[_K̊Yׄ&T&OK,tJYl&5nylpt\rotiZzvcҍx]}{3XG}R^LtZp|~C/r$yfssuqn?+whxc<2z]|Ww~R0L›t>}T1ux4tvrx5m}Rygzby|c]&}WQ䅬1LҁȚw|]?yw@zq֒{lx{gF} b~&\}RW#PQ0L$Ú{{d_|ivS}p%}k䏧~nfL%as\ ܀VʆɁyQzVLă:@tzTuA7omje6`e[`EVDug7pΌ7kSfό aԊ]dX[ŋWkS?jNكJuBpݙloqGgݓscF_*Z ]VrRNZ>J@8t,okpfߒ/b`^79ZUQ}]MăI܃sojfjaN]fɉ1YTU- Q;MCIncfN{pi7qlHssonuqMvt@xvuzry"il|{}]~}P lkm๠n]p]p_r@r2t*t vuw~wyty{}h{}6\~ ~P4aju^lvnx'6qyW s zu{bw%|sy?}h{n~\O}P̀ h|ȵkL}Zm}o~rr~Ht:a~2vlrx5g[z逕[}&Pl gpilɝnރq(Tsi} uqxfzk3[|Pvf8?h[ks nDpoZrĆ{u"pweyZ|MPa~лe4Eh jmmSoo݋r@%zto`wdy|gZ{ڃO~>*d&gmڣ-jTVlג4oV߃qōxt9Zn-v#cyYZ{qN}؂}d;gOi薌lsn|qhw3sߎlvH5bxbX{NX}}Ǵd"nfПKiџ"lO(nǗq0NusknuMax\WznM}, d+f訦iLl.n~9p~t.scXj'u?`gx3Vzt0M]|Drfm:tAiDul?vnwq yBt.~!zvr|*y gU}{[i}P06qmqrot'qޝ'usҒvu·xew}yyq{{`f}@}1[`~~PqEo]tqu;rwqtfx1uzw{:{y;|rpz}e|~Z~vPbtLauvNdkxNnbzSzX|GNf~9riPȥHk(\m~Wo܇q4}s폗tujrwiayWM{XM}ڂԭsi'Rkqƙlm˜}{oș@q|srui wi_yCVZ{$MM}{i,1|keOmfo@qzsxq?un gw]E^yNU{BL}:I.wf xmiQ0yRl<znߏzq{tz|vo}yeK{ZD}P vf\um7SvoSwqxsyuzwky|y_o}A{Ad~}-Z~O ót%sҩuhuEvvȖwxXxy{_zzx{Y|nB|}cc}~YQO݀rzgt{-@u{uv|x}vyL~)wpz~m_|cZ}y?YZ~OȀHnqTr tv6uЁSw%qxv\yl{lb|Y~zO񁺭p?D0q˚sQ9u ӇvrS~dwuyZOkpza|~3Xe~O: oVZqhrEvto,z_z}q{h|B` }W/~ׂN$t^Duivꉌ)w򈮁xxypp{g|-_*}CGVo~Y[Ngmsˑu TvSIwbՀ+xi^wywo=zzf{ ^W|υU}%M`~򂱠s^Ә'tݏuv~xv;ynz&e{D]j|iT}~L~ s#oWteuj`v}wLtxǏly֍8dXz\C| T}!LW~,#:s tB]u}уv{wssxknysc?zW[D{>S]|φ7K}ۃRhf瞴iNlVnq|4t s|'vjbYy'aY{X~>O.7̥"l'`nהq1su{*wrhyi{`})Wg#O ρ}r~t ]~xu~wxyVzq{hҀ}`~~WUNlkm|hxD|y@}dzDj}{3C~|$x~}p~~hs~_VNȁ{:}f{~iX|b~ |I}Aw}o~E}g>~ۀ^|CVNz@z烀{m|O~|0vm}nz}fG~M^;~V mN1E>Syh z({zڄ{x5}{u|mE}$Be>}ʄ]c~xUQ8M~x֎\ytzTO~z{{ss| l&|dH}P\\~-T~LFxby"Ny吤zzz[{5r{~j|=cC|[}^S~=L`~قx>xޗFylz6xz~q({NFi{b|Z}9S}݅SK~x+Awnaxyo yUwzwo{h{1a |>hY|戡R]}K~$V}ig9~iԏτlDŽVo qw܃to߃Ovgy?_J{V̂~hNl nspㆁAr~΂tv͂vnyfȂi{^J}5Vi9BNn4Rar|sfu8;=v}x}]az&}ksS}nlb}Ge}^}ڊ{X ~ QV~LK ~e%gGYj5ElفoRzqsw)tPl3ovdyk]&|UM~MD-lnňdpȆryʅtrSvk`yc{$\}OTlMyqsBPtvyxxqyj{0cB||\~T3M<ՓGRv1wkNx~cz w2{'p|Ci@}fb~[{TS'Mq܂؅>{wׄ|3$[|}6}vZ~Eo~h邌a=C[T MZUUOU_{߃$uMXnDgaZet'S?\L ܃7FztPmQf؁d`)%YRRွLXˍApERy9ŕ?l7/eۀ_QXvnRHDK̀j!~ٌowwEqkd׀q^j8X.{QքRKT/* 0wȑ}1vp?iڀYec ]\Ј)W5PqJGY͗ {9uJϑo]hȀb\suV^BuPFjJ~~h6j׌}m+|A5ouro:t}hwăqy[d|4Sh~Lz^lӇ㌉n܁ap{31rttnXvgy a-{2Z}gSL ȍqYirStz"9v3swmyfg9{`%|Z=~SNgQLՂ `uc[wXVxWyJyr=zlF{ftY}!_~hYS LÂ=KnUzd&_{6~-i| wh|qe}k}~ce._]Y+-RɂLႆm~߂ΈL|݇vp҅xjҀdĄ1^LXROYLQl?z̓G{Rum Go;i@,căw]ŃW߂ QKĀB.KzF\t>tmn{hwb؂\GW:Q( KCu#ڇ|~dž3yۊcs mWgAaむ\ӅV2P.JӀ NhQ}]IwxqlPfVՊ`Ђ[c`UÆ O3JptƔ|vi ;p7kIeTv"_ばuZAT̀bOI؅1J_h9kC|k{mvoprQjPte"wB^!yX熤|kR8 LJ܁mۑo{ngqusptj.{w dxy%^jv{PXv }R;L=isq9ďrze`tqtv o40wipyMc׈7{]|X w~Q1sL0?G~uZ~vyOgwsynLOzWh{c'x|]W)~MWQL$|{yt}zZxB}{Br|%mkx}g݈}b{~\΅WBcQHL9܎}|P#~w~q9*l\ff/a\=VفQɂYKĂ耰ʁ{guڋpik=$:e߆҂[`|[OiVRPFK=E`y…ptg>oSj4dHw_ׅ6ZU}ՃP ̓JŀуC~x8ssn8yi'.cʆ^􄔅ỸrHTЂ`O^ J]jj|ό&wfˌrHqmgb܅U]X߂S셔NހJ{‘vv:hq-k􇥍af:a]FXS>bNRIizl u甄nGpNpk͐rfu0ahw[z$V|Q OK7~ޗmyЕozurqloNsWk 3uAeލ'wH`ً'y^[7{V?V}P΅K/}閵qEx唐rt.rto!]vjQQwe{%d:|*_i}@[#~ZWSP߀ÓK Ӄs{Zod| k|g]u}cg~Z_= [@|WZRPNK_JÂ^2r~nj6fsĀ b^w^iZ~aV`ˁReĂdN>ǂJQYq]miIe!ga‚]Yˉ^UɇFQC3MփN\Iq}p0lʔS hۑd`ڍ3\ۊZYل0U%DŽQe˃MdރI p3vkؓψgߑscď _茬[p X9QT`F*PSLނu5I@ojXg"bT_6[0WۆSՆ(P]LkHiнkbTmeToghq>kʒsnuq} w tqyUw}f{z8[ ~ |OtTii|kk&mnop"rsCut+u|{vcwpxye{&{Z}}OĹgzpܮiralFthnvpw3sHy/zuzp x|.e?z}ZM}~O.exh:yjzKme{ 9o{re|yt}o#ww~dzRY|O=c@fiՖlEnTqxt.nEvڀdyY|?O~ b6e˟h`k^'n"!pׄwFsm,vO c3yY {́O/~}Q)al dgNJ%jpm~pE~usikuԅKbGx%XJ{YN~`cՑSg #vicl匡~otr&juaiakx1WzM}`1..cTʙf]i}>lr|oQ-s6r/iut`qwχVzMX}Sg_u3cqfSeiBd~l0azo jqquh^t_:wyUz=L}_覣]bf$TOi kyn˔pqqg2thi^-w-U ybLv|pbmqyerhtkkunwqyy0to/{wd|zTY~|O,mi`ok֠3qgnfCsptsvuZxxqwnOz`yc|k{Yk~k}O$rlpGmr osqu3swEXuxwwz{myy|cT{}Y}O ajAw#:lnx4nyP.pzYr{it|dvv}^ly ~Jb{Z5X}Oh}pk~N,mk~o#hq~tuv;m_Ão͋Gzr5qtJhw_ypEVk{ƒMa~*=elgTjm8l oYyqȌpWt:glv^y U{aL}yIdНjgz6j1 2l_qowq| nscf"vP]x T{ `Le}]ddO\gVili|nі=v;q8msev\xgMTzL}QtZbupeΛvizwkSxoyqvr{Htl|wb~>zpX}NFҬrYiFAskKun=v_pwr~yu4unzwk|yb}|X8C~Nڀ5po¡rqssju)u!vv}x3xtwyz:j{m{au}"}W~Nunv8pw\rext yZuz|PwU{sny|j z~ `|W~\ Nmi|oK}q5}r~3t~{&v;rmxMiUz,)`P|W;}N>"l,ʜLn2p@rsyu҂yq6wchTy=_{V}}NQVk"䚅mI4oyRqlހsWy!;^{U}Mx~ځajk䘶lSnƌfpƋ)wrvtnvmf=x)]zUJ|L~lAilnD"3pIP}rK}utImvHe,xF]zF4T|.^Lc~ ix"k͘npb|jqt-sl)uQcw[y쇆S{օ#K}̛i~pk(TmŚ=oQ{ qirsjubwZyS {K}hxc Gygfz%i7zl${o{|qs}iti~iw`~zWq}INU Hvi0wkZxn#ypvXzrz{ur|wti"}y`1~|W~>N?>kuoE v;qwas^x{tł!yvyzxEq4{zhb}{_~`}V,N*ـásuVgtvNv'wوwcy xzFxsy{up:{%|g|y}_ }~Vc-N{r${Os{u|v[}Vw}wXy ~oFzl@f{^}YeV~ŀN%cBp* rI"tlu~&vv x]n ýe{M]|ׁU~LMoYqtssPitӅ|vOtwɄlyD6dz˃\|X1T}ςL8 o@p틚rt.{Cuskw?kxņczR\5{ℂT5}[nLn~łVn phHrqsyu@r$v͊rjxYbyU[Z{zS|.K~_ng2pqѓ}samx^t_pvuNi\x@ay#ZL{R|K~ؕXn8ፓoMq~qs&wtov&hBwp`y?Ycz̈(R|IK&}}cl}gf`}ij~+lJ~o7wrotgTw^zV[X}sME{Bi+ {kz|dn ~|p]~}rv~!un~wgfky^g!|U~]Mׁpynڔzdp{r4{tm}|v=u}Bxm~ye~{]}Ud>M7x2t yuՋyw.zxw|d{yt|h{ m}A|Te#~#}]M ~UOMځ?*vzwz*x{y|{8z}Hs{~ l,|~dl}\~:UMruv刖w/xsyy怸rbzk{4c|f\~ TwM"ՕtŅ?u†w-xv}tgw֍mgxfz6_{#aX|DQ}RK~Rr𙼇t'|u`Byvvs*wlCxeyK^zЉW{Q"}KJ~bpcofljہoilrl{@voisr~QU~O~YJ1!o|e|t|v|鐄p}kX}=Je}s`!} Zg}PT~AO1~I~҃Dze&g}܈jwƇmQq/pkÆireu_\xjYb{KRf~$KB k ipRl|ŇnYvÆpq6rjuyTey`szyn4x{h}|b}]d~W^QhK$(H{}t|Fx}rr}m~hg]b \`̀mVρPdKa7d݃e|*3vĂɀq7nk$fria#z[@V.5PrnJ怺m8zׂa&upɃj߁wey1`FZۀeUAOkJvH wyɇtVnY*؆=T:N4I8|N,v{q؀8l]g bsЊE]X`wSc\NGJIv<^N'e|hw쌑k+rPmmYplgֈs!bwu\xW{Q~gK7I4j{팙lYvnnqEpl sguiaنw\$K#V|}4zewqP{?rn|m|h}c~_)ZZc+UOۂ!Jف{UV~WvF~q_lgFc:^J$YVցT6O_kJgz_uǂ}phk/fbb]}XSSN*JxˆHs(oJejz{eՅ.a0!\wWلJOu&ycqyz_mJX{Yh|Hd}1`\e~\#1 WSCNJ]݂tF|pn}l<~WgF~cȇ_yŀ[WVDRqNAekIes{o[-k?Jf򈝁b^^1Z=V^~REMځIr΄5nN0j>H,ea̓]҅YلUQ~MjtIBHq?m2ni$d~`DE\X eTQ oLH@mpl‹:l*h.Gd`̈_\XBTDPm-LvńWHshowj]kWlgݒ0odq_ҍt"[vWXy|S|CNnJLrڗlkUnKmmk68og2$qcds_Iv[P(x]V>zRe};NIJԁr ?nn$0ptj/rDf*t"b͎1u^njDwZiyV|Ru~)N' =JchЎheQ4at^1Z"W, S*P-LLw;\HckqgڎVWdW?`]J.YVd R愓JO-LӃHjfˈ$c|_bD\YRURJKOÄKx,HjGi]k ax\me-ohq)ls^o[xurmx,ucszxX}{NQH~fe/$hhkDjmmwop^rirwtulwxbzHzXz}|NY.dglcFfn}ippl3rnt{qzvvt(xlvzlb:y|LX*|}N`qbPs|me-tܚHhvHjwmx~@pzGtsa{kCvB|ay6}W|! Ng `uzqc{(f{bi|]l}D}o}sr~jvuaxW{ Nm~k^9b6DeQh[kӁg{njrqiiwuW`Zx6;W{GN ~Pا]ߝa4 dg=k]z>nFqmqm)het_wV^zӂMp}G\ŽI`A Uc͋ˊlg"juWxmp?pght^wJSUzhL}%\"@_c4ڈfJi)wm;Qo p~yf[s]vU z Lf}* 0[К[_Ub敱fEH~ivlwmp*e%s`\v6T8yK|܂]H[j_ j2bjej}IiXltlrloގds[vHSyvK|m!^onapfe~rh؇slD~3uotwrkKyua|yW~`{M瀲~$je> lh ;njpm9rpV}trsvuj}y,xa{zWT}}MDnBhlMjn&m%pYo[rcqtv{svosv+xlixzZ`qz|PW}k~M٦]fri4t1ku,nwpxzryrud{Khw|_zv}V|M}=ydyXgz+ej[{l{тSo~|yr }cqt~$h*wD~_]yzVu|M$cÙf^iB-k`nxJqOosg6v^yt U| M~bD 4eKh\!{k*Qm]vpnspf0v2]xUD{L~Kiaq(hdz&Ig"jm$}mJ&up"mrekr'ct[6wˆS7zK}6oK`G~0cQΉ^fb"\iDsyl!qniq؍rbtZNw~RzAPK0|@q5^蜟rbJLseʋu5i@vlozx#oqyrh{{v_}Yy/V5|5MCuoeVphr7jDsmuzpMykw0rpxuhzx&_A|zV8~}v}ex~]{1[UZ}gMhǜDh~UAj~l o;d|qtsm"vaexS\zT|M !'fHiylănr{lp΃Yss" kuudwЂ\7z0KT4|wLz~fhPJkBmzp'r]r'jtZcwW[yS|K~Aerď%h pjm(xooq ritb&v_ZyVR{K}8eDggkjT~~lϏw;oCoqht$(a v=YxPR={PcK }SdߚgsDj }lun(nq`gzsҌf`vBXxQ{J}DuF_gzvCbwBf"xQi\~yelvzon{s ff}'v,^~y\U{|lM!xs4ertsh.Muj_vm}xIpPuyrm{ue|{x7]~zU'}fM )qRkm^rmtBoτuq|w7ttxvmzBx*e{z=\}s|\T~XMHtoqbq>rgrttv!{av/wswy=l3y{zdN{.|K\}|}T~@LInw>5oxGqyWysqz\z;u5{crv|akXx}_cz~P\|i=TK~5Ll|n}yep}r~xxtb~qv;mjLxbyI[Z{倩S}LM]kmołv~qlw|sdpwlexQhMy7kz&myu{pWr|rj}ucT~xJ[0zT'J}Lh"uk6rvmawoWxqxezsq+{-uj|Nxb}uz7[]~|dS~tL{spȋuFrk'vt~wuwIy wWp3zIxiJ{zb||+Z~}SaQLΑtrvFzswhuZx|vyv6xzoCym{h~z}af|.~Zl}!SK~!L}Qq>{r|MOtW|{~u}tw@~5n"x~gzi`{Y}|R~~L!߁p8p Yqρs~/zu Qsvvlxfuy_{ Y|R:}KbȌoQ*q[rmxtU rdu넯kwwLe}x^z~Xp|Q}K$~nY|yR~LgxupGyTqz3syf{ u\s/{w l|xf_}zh_~i|Y2E}Rw'mL $wuex v~y wxEyyr/zzRk{{e||_#}}X~R72KNuzq>v{7}6x |vy|pz}j{!~Bd|$~^`}/X.~;ZQBK@tcu{w8uxUJoykiz}c{%]|cW}Q6~K"{sLNu5"znvut`wnxǃhypbz>\|V}:P~KJMwvwӎvqxAlyfgz b]z≏]m{UX@|oS8}=N}RI?~ b~exhs kmƄenhqbt\w.VTzSPЃ,}rJу i]f|i2wkr.nSlbpgX,szav \4xV{P~>J͂)k{m>vonq8qlisfPuaX;x$[,zjV-"|P^%Jɂ1;぀oz|qMuxsp6ttk-qveځrxl`wz7[2| Ú}P*JŁ΁~9sy]MuRtkavo=sxjOyez` |CZ}Ur  O=kJs}GxCxDyKs5nzTn{TiG|Sd.}M_? ~DZ D;T1O"J} |~|v~]}*q~}l~~nh0c2;^bs/YRTdPO%AJSz}Fu} p}ہKk~}g.~^bJ~]~X/4S|_N͂}IyN|tU|o}7j}wf+}˄Da_~ \~bW~SH `NAeIaw{s|Znc| i|ve}F`\}L[}酴W~F R~_M Ifv{q{&mG|>:h|Ed|҉W_}}'][}~gVi}VQ~PBM?~/H+|ߊGcwuesShn[ki"n~deqt_tyZZ wU,yzO}J1j{ψg+virfrl&mnhՆ#q)cޅs_v_Y\yTЃ{Ojd~J4-zhk9um]qnDolqh-sc9v^+x?YtzTzD|O<7J6xyoLtօqpi#rktgC8vbxX]gz/X |T$~OgJ9&xfsTsĄwtolv=jӃwfxOy,aӂz]V|Xe}SԂ)NJ;Ɂw1wSrsxtnP#yi˂ze{`<|\}WSa#Ny5IZ?v {7qz|m/R|h}d~O` [ʁdWE:yR߁1N)I䂀tȁ0pPl g\gc)_: [ ՁyVRf.MŀyIFxs< o,k 'f+b-^_o+ZIP)V:$Qڀ(MY HrTm}iYMe/a]oEYoτU<Ä{Q+ LHŃq(lڀhۉCd`\q3X^T\PcLlo H~}Fv@dqlfm׌=iiyl`eVo(`߈r \tW܆wSB{NZ~IuGCgq$jEm lho*dq`Ft)\ vWvyjR|"N4"~IKhtLkpml+ogqct _vA[,xzWJzRp}*NvI݁sOo.o&qkDrg$tc?v_6xe[ hzCV|5Rc~-M%IvrKrn4tejbufXwvb(x^tezZ|VF}RW$MЂI/q8svm*wibxehz1a]{a]|Yׄ}Ub~Q̀!M7LImp/}z l#{h\{doY|`}\؄~YjcU Ԁ?QCEM%I25o }k~HgfM~cl_\muXk݀TP{PցɂLˁGvĤm3j ?xflb_ l&[L܂UWVS҂PYVLjނHol҅?h􄣄eY ap^ڄlZoNGV̄!SCSO僸K}yH`:kgdi\`]JZY҆ VCSR O1{K(H+փ^oeLkڑwghtjtdNm"a1o]V.rYu|U-xtQu{yM/a~pIVnhkXQ\ `mc׋z+grQk1fjnЇbrj[u[S.yK}fW[_=c{8xg0Wqj֋xinsarZ%uRvy;K#|Wh^[f_d~c(0w~fߐoj[hn `qYRucQxJ|u]CjGZwl ^:mb oeĀqizx7hn>yBkHqnJjqij{sJmsuJpl/wYsd"yvp\*{yoT~%|OLZ~-igkj&mlpozr&qyrtXskivv4cxx[{E{S}}RLZgom]ioÈ)lbqns}yrq uVqsfw"juxbx;z[=z|S}=~KL[!eshCuNjvkm~wxXoy.pr}zjit{b=w|Zz:~S`|5L[_W_cy"fz2i{s}lw|+wo|oq}htQ~Farw~Z7yR|`)L ~be僢hр|k=unUmnq gs`vxYy8Rb{K~,aedυ +g{0jτPtxmmpkfs/1_uXxĂgQ{zK~E`߇VdgD$yj0>s;m Xlloqer^uX:x`QR{J}ꌏ`|(c"fߍvxaiˌqlk5o~LdrT]u2zWYx Pz˃J^}i:`7R.cbv}fwipplDj)o"cq]t)Vw†:PzQJ}"q[Ȏs3_]^tc ufxw$jq`xmjz*qb{t[}xSbp{LJRoaqAdrg~tmjwumpvwpi]y_sa{,vZ}yS~|KpmgoojqMl}sovtqjovshxv3aWzxZ#|z{R~z}{Kyӑkmw mo`QoqR|Zqs2usunuvgwx`yzY{|R~ ~gK1gis6l.tn~v{.pw`trxmtzg%w{f`)y6|YL{n~Rh}FKÀh`xԆjym[zyo{lsgq|Clt}f9vU}_jx~XzpQ}).KU*g~Qqi~lg~xonJrq"ksre:uD^xXzgQu|K"~߁Q~fhփ}kXw%n'ppnjr҂dOu,]w]Wy(P|=J~re`ih!:|:j݇umdooچ0isrJ~c^t]w VykPs{܂JV~?dgzjotslnuohbhHq݈8bQtI\vVy3O{yJ}OdbgUCygjs>lmYoegFq{ahs'[Evm{UGxON{A%I}su\}v_Twc{uxftyjtmzmgK|*qV`V}stY~xMRy1{KLYsbte v/hzXwqjsxmm#zpf{_s_|vY~3yR4|K8qg/s/jtly>v-nrwq`lUysezv7_;|xX}{2Q;}KԀ Jomqo~sSqxtrqvtk}x.ve=yx^{szX>}|Q~~Kvdn(rz]ps}NrunwsvpuxOjwHydy{(^%z|W|}Q~aVK %lwƁnx{pyurzot{iv|cxR}]pz0~oWR|SQ}4K2kw|mm}jz}o}tgq~]ns~huRbw\y:V{P}iJ5sj ~lقy(o#s-q6mys8gu2aw"[yV({P!|JX~Ł̃iʆ}l#~wnvqplUrft`v[*xUz O|I~biD| kvdmppkr*elt4*_v4@ZCxCJTzMSO |UڀzCP@}AJvAyg{zzjCv.{lp|>o&kn|qe}s`~pvqZ0xU{OՀ~Jrx:lzBy:nuz7po{rj{te4|v`}xZ~zU'b|OO~Jn<~kvqGywrsxtnyvizwd{yF_m|zZ}|mT~~OyJj0}uvuwvwrwxWmy yhzzc{#{^|,|Ys}@~T^~S=O!haJ*u{tWzgvtu{5qw|lqx<|gyY}bzw~B]{~X|S}̀qN~'IzDse~u'tKpUv<k\wzfxPayր] zX!|)BS^}RNO~wIq$xrNstAo(u5jEvփex`yH\@zwWt{R|悩M~I$0iwrrs(muivPmr`lhncq^tYiKwTPzN}I؂g{7~ hv8~xjrq~ll;oFgqbt^BvXy"S{Ń}~PIہy|lqu}nypz}pk~rg~tb;v]xxXzSv|NIށ)x{ps{rvo||utj}ufN}wma~#y]~zX$O|cSd~NI@owyurzvcnZ{owi|xe[|z9`}^{{\I~|W~}Rd9N1|IӁvExyAqyz2m/z{#h{J|dY{|_|}[}d~V~!R~ހ]M7IP_ tw}zpax~ly~gz ck{L_|Z|ҀwVX}R~dpMr/ISsw o2xjy fyb{z^*{*Z|KBU}!\Q}vM~˂Hr]vkmwvaixy-eyUavz#]>zaY5{̄T|P}yL~r!H~DqulvhwKdx؇`y\sziX{\TX|KPV}<_L1~%HI~wd`2rcBnfTj|ine&lao\rWÃovKSNyN<}I=4{vzdOqgm˃iiKSl|e"o7`yr \tW_wRÂzMꂳ}IH€uhGhZqFjlFmh~8o~dU(q_tS[vWy[R|{MȂ2~IQVtIlconokpxgrc(t_E9v[LxVgzR6}MCIZfs0penrksf؀ub2w=^]xZzV8|gQ~&MIIbr ~Nt\m~ui~w!e%xb[y]{3Y|U&}Qv=MFπI2)p}HZmGzՃid{de{탳a|[^e|Z}.W}uSM~XO~9K$H#lzKQhSz܆d{ga{׆:]|?Y|rVh}' R}O(~EKr~փG_qbahmd]iʈ gOeŇpjOamN]ކpkYysUvQ`iz*L}xHpelcgijoeMmaTo]Q6rYqu\U?:xGQ!{@Lփj~.Hă ohkφk(h4mdY;o`r?\̄[tYwT냑yP5|ML~HԂXn(lpjng\pc)r` t\;{vX/xT{P}TLnHAmpjqfhsb܃"uq_ew.[xXpzT8D|Pu~NLHlshu>elva;x,^ yZ{Wy|oS}PPLWHƁw$kwFgx|dyasz]T{Z2=|V΁*~S51OLL `H~gjzf{c|`3}`\~#Y}~V/RqO\8KHRQ*MWJzG3kbh'xee xhHafk-^ZZnZˈMqWWIt*SWw^OͅvzK償}H5ـjfgd%hdS>k`Hm]ȈXpXZNisVuS=xO{KՄ~HLbGi݊iSfkcm`X=pG]=brY؆uVwoRyOjB|Kǃ%Haiyle܈nbp_1r\ktYTvV"yRV{RO:}KHuh7?oeqb.s_/uW\ ~wXӄxUFzRW|O+~vKMH*gHs;d/taRvO^9Kw[QyTX- zU(|VQ}N‚bKy-HdQf`vacHw`ly]az@Z{sWz{|T}QlNgIK0uH"ReU"ybWz_H{\|YσT}VԂ~hSxJP 6N!JEGdSK|ah}^~A[̃"~YV+N#Sg쀺P}WM1J|GcB`c:w]Z}LX?UoRWBOM/JGGK&b4!_pF\JjZ 상WT́1R3ԃOmLX}I-dG_ LcUf Yˍh.^ jb}mf)udojmKrnduq\xuT|eyK}a\c` \f$cNhf|~kj_thnml}qqd=ttP\x\wS{zL~C^VcoaDfVd2i1gKk{bjmnswmqIkpsctXv[wyfS{p|L~g[jR_lpZb[nepz.i+rrqltjpvbsy[?wH{S{}L2~Ykp]rx`tLdHu{ygvqokxmjoGyb\s{QZv|SWz~"LD~`|W{wiD[`xM7_Ay5~czwfzpQj{in|aro}ZIvI~fRz+2K}U}Z}^1~,}db5~}vlf*~o/j%hnu`qYuRhy?K}}T̃Yo ]<*| aZu:ejn$iwag;my`qwYuhQyX;K}3HS~SXD\z`t dՆJmhyfWm_NqXku Qdy(J|߁dSW͍)\qyZ`Jrdtkh{e_l+^mpWthPxJ[|ċS=j8W}~[x(_qdk h;JdlD|]p`VtzP>xJ|SSgV}iiZ:kH^mbbzofr@qjyjtzndbwBr?[z.v/S#}>zK\}~d]g`qidc5kgcedf\Xgi1~jDkwm nproqVi6rt auvZ0yyR|I|:K~ߓ_jbl4en`}hpvkronthorva uGyYx{0R{}EK$N>]pe5`qzd s|rghuujvnmx0gqAy`xt{EVQuOyI|߇WaC[Pz_0tbtnfhbjz>bTn+[qUuWOtyGI|.kWNl[5nf_7}[p;cvbrgo&t7jhvqn`xrY{jv{R:~zVKC~> h]j`؃la{|\e0|Jvhl|pk}zin~cq~]8u3Vx;P{YLJ~Yԇ#]h`Ԁ{d4tgnjՀhnbqO \tVowǁ'P3z4JJ}A\x`ycu!sf݄mj5>gmapу^[t!Uwf{Oz I}["}_9x7cSrFfkilifm`pjZsƄUwO,zII}Gn["|_!vbYq fkiXel3`)pZ;sviTlvӄNzIg}C;nX%op [qx_y3scrtglv~kBezxjo^z{rX|vQ[~zJ~l9^maJ~odxqgqsyk k6un\dwq^3ytW| xVQ%~]{J~ic̃kf}un iVwp/l prTnjutqzd>vt8]y'wWW{{yP}|JLegi4jk|0lvmunp2oq1rkistcvv];xyyVz{ZP}t}JȆeo/hipzjrtmtVopv hrwbu6yk\w{Vzm|P} ~wJ#^d)tWfuyiwslwxSmo'ygqzb4t~{\ w4}V/y~

|fJ)bz}ezx=h{irak|lnV|fq}aVs~B[lv~UyeO|RJK~LaI|yd|vgq4jkmfptS`sDZvU(xOe{0I~Kd`ńQ{cufpijlCeo_r‚Zu~Tx?N{PI}큿I`-9ycZtFfwniiyluadom^rTY?uMq%ptkruf#tw`w)yLZy_{ U\{|O}~JUfhKszju.um+v}oowjqye>t*za_vn{Z\x|T{ ~0Op}RuJQfxytiyt0l$znn{ciq |;dDsr}_u}Yx+~TizO|ՀXI #}e}xh~Ark4~mm~hpKTc\r^Su1YwnSz N|c,I~|dvgqjrlmggoPbpr3:]t%Xbw-SfyN9|IK~>zd[`u_g(phiSkIlflo$Eajq\t5BWvȃRyP:M{I}'y:ctfo@ikj8lern `qH[sΆ1Vvo?RyNMK{oWH}iHuZ|pv]vwaKq#xdkyhezl4`p|=oZ}sUH~wrO^{EJ.)s_-{?tbTuvep9wUhjxkeIzn_{ur9ZX|uT~SxOg|1J)kqd>zsfttioNvl]jwody#q_lztY|@wXT}z9O8d}J$~1oiIxqlkssmn\tpiLv{rUdx/t^yvY{y8TQ}6{O ~}JA|mnBwoprqqmtsshulucawAwh^hy y;Y'z{ T||N~~JP{slos%vJntqlpul]rwUgtxbvoz]xS{yXz@|S|'~/N~Iz*kwumZxp/oyk6qzfs{au|\w}Wy~S&{yN3}iIkTxj |sl`}on}j%p~er~`u!\'wW[y$(R{%M}3I4~w^i0+rwk9mmHip&\drSr_ty[bvVxR4zMu|H~uhq%jAlmQgocwqɄA^sZvUxAMQzfL|lH~HGth ojv!klΈ_fobqP^ s&YuuUNw䄻PzL|&AHz}|yG[wy^r|zb'mC{pehK|3i9c}l^~ pkXtSʀ wN#{IB{wB_vpx7bqy)flkz&i3g{ lIbx|/on]}ArXt~YuS}py3N_|IzhubduUvgIpwjkxlfzoWa{Lr]|tX}wS5~zN9$}^Im8y"siGt/ukovYmjwp(fyrmaFz\t\{wW}yaR~O{N~+I wqmssonuqivseawuz`yqwZ\'zy9WY|W{R}|ME~Ivprqr>tmlsuhuvdwwxo_xy[|z'{XV{|RL}A~s{ gruV{cyv|_x}e[yg~+X z~T|PN}ML=~SHX΂nq~Ajs~fjtbv^wj[ xπQWaz(S{$O|⁓K~5Ht[lp.hruEeKs[auqj]vׂxZ6xCVyR{OQ|K}G$kp?gqޅdRsni`t]$vVY~wȄVy.2R[zN|-K1})G~r]im`jce܀gCaj]>nY~q}UPHd[lxqpi/ysezstb{EvW^|wZ|yWT}{%S~|OQ~^L)HskwuGh#xvdywazly.]{LzmZ |/{V} |S}~3O|~vKH3jvy(gwzcx{ `?y{\z|Ym{}V|x~R}kO&~V|K|EeG)Ciu|fv}bw~_]x~\"y7XzUt{PR |N}vK1~G҂hQudv(awA'^fxSg[CyXWzbT{b Qq|t?N=}pJ~Gg=tO$cu`v]wȃZx҃WHyT1z郟P| wM}+MJ~BGsBl6^i9aeуeb&hG^xk~ZVnWP:r2Sd/uO.yJK>|GփVbkbyhgeZe~h5a}vk^qmZrppVrtS~w+O_zeK}G့kf'g+hdT@kN`ԁ[m]upzYs!VuRӁxO2{wK{4~JHtj"iflcnh`#:p\qrYxuNV!wR+z Ol|Kp~HPi%~5mne~owb~qx_z#sy\ZtupXwpU+ykR>{vN܀}KfLH-h!|qd}^ra}t^~1v3[~wXV yU0}{*Q|N_~K7Հ9HHg-{tc|Yv `|wu]}`xZ}z'W~b{T~|Q]b~-NAJ_GՀ݂)fzx&b{ryC`|zX\|{cZ}1|cV}}gT ~S~eP~oMfxJzG|mey{az|c_&{B}*\${}YS|~VT}0ISx}Px~bM~_Jt Gt'cy`y^"z[8{GwX{U|@R}6O}M~HJ:GL܂bxN__y&]AyZmzW{kT| RN|Os}sL~1I~G* g`dqc+af+^]iG[l^XV_oU*rQvQN4,yJ}HG_f͆vcc͆fQa i ]5k[nWzqTʄ tQdwNzJX}G}-f fcii`akk]`"nrZpWpsTndv7Q#,yM{J~GAeKj;baol_9n\ qYsGVuT wP߂zYMɂi|J\M|Mj]~JvuhGbt_u]Q%wZCxxX _yUF{PR|Oр~)MJ;G'Ta~w=^&xw\}RyYzWZ{T}R~)Ol@PLՀetJGRȂ`~z]]~X{S[~|@Y~}"V}TV~QNvL~IIŀ4G)u_}E}\}~:Z}~X.~(U~zSd~Q~1N~?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~O3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBRRScUuWY[\]_ޟa۞bٝdלe՛fћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjO3PBQQSbUtWYZ[\]ߣ_ݣ`ڢaءbԟdҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgҝgO3PAQQSbUsVXYZ[\ߨ[ۧ\إ^ԢbҠdўfўfўfўfўfўfўfўfўfўfўfўfўfўfўfўfўfO3OAPPRaTrVXYZZY۪Yب[ԥ_ңbѡdРfРfРfРfРfРfРfРfРfРfРfРfРfРfРfРfРfN2OAPPR`SqUWXYXܬVجWԩ\Ҧ_ѤbУdСfСfСfСfСfСfСfСfСfСfСfСfСfСfСfСfСfN2O@POQ_SpTWXWޭUذRԭXҪ\Ѩ`ЦbϥdϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeϣeN2N@OOP^RnU}WWUٴOԱSѮYЫ]ϩ`ΨbΧcΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeΦeM2M?NNO]RlUyVUܳPշMѲTϯYέ]ͫ_ͪaͩc̨d̨d̨d̨d̨d̨d̨d̨d̨d̨d̨d̨d̨d̨d̨d̨d̨dM1M>MLN[RhTxT߱Q׿FѸOϴUͱZ̯]̮_ˬa˫c˪d˪d˪d˪d˪d˪d˪d˪d˪d˪d˪d˪d˪d˪d˪d˪d˪dL1L=LKNXRdSzRھGHκP̶V˴Zʲ]ʱ_ɯ`ɮbɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcɮcK0J+"?,Q6_>iDqJvPzS}UVWXYYZZZZZZZZZZZZZZZZZJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P9QGSWUhWxZ\]^behjmoޖsۗtٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvٗvJ*P8QGSWUgWwY[]^`dgilߙoۘrؘu֙w֙w֙w֙w֙w֙w֙w֙w֙w֙w֙w֙w֙w֙w֙wK*O8PGRVTfVvYZ\]_behkܜn؛rԛuқvқvқvқvқvқvқvқvқvқvқvқvқvқvқvK*O8PFRVTfVvXZ[]^adgݢj١mӞrϝuΞvΞvΞvΞvΞvΞvΞvΞvΞvΞvΞvΞvΞvΞvΞvK*O8PFQUSeVuXY[\^adݪh٩iԧlͤqɢuɢuɢuɢuɢuɢuɢuɢuɢuɢuɢuɢuɢuɢuɢuɢuK*N7OFQUSdUtWYZ\_bޱfڰfհgЫiʧkťoŦsŦsŦsŦsŦsŦsŦsŦsŦsŦsŦsŦsŦsŦsŦsL*N7OEQTScUsVXZ]`a۷cֶeѱfͬgʧhťkĦnĦnĦnĦnĦnĦnĦnĦnĦnĦnĦnĦnĦnĦnĦnL*N7OEPSRbTqVY[]]ܹ]ֹ_ѴbαḓfʩgƧiħkħkħkħkħkħkħkħkħkħkħkħkħkħkħkL*N7NDPSQaSpV|YZZݸYּYҸ]δ`̰cʭeɪfȩhƨjƨjƨjƨjƨjƨjƨjƨjƨjƨjƨjƨjƨjƨjƨjM)M6NDORQ`SnVyYYߵXٿTҼXη\̴`ʱbɮdȬfȪgƪiƪiƪiƪiƪiƪiƪiƪiƪiƪiƪiƪiƪiƪiƪiM)M6MCNPP^TkWuWW۾RSϻX̷\ʴ_ɲaȰcǮeǬgĬhĬhĬhĬhĬhĬhĬhĬhĬhĬhĬhĬhĬhĬhĬhL)L5LBMOP\TgVuU޹SLS̼Xɸ\ȶ_dzaƲcưdůfîgîgîgîgîgîgîgîgîgîgîgîgîgîgîgK(K4K@KMPXTbTxREMSɽXǺ\Ʒ^Ŷ`ŴbijdòefffffffffffffffK(J3I>LIQRSeQzDENTƿYļ\ú^ù`÷b¶cdeeeeeeeeeeeeeeeI'H1G;MDPQPhF|IPUY\^_`bbcccccccccccccccE"B*H.K@GW/k6{AJQVY[]_``abbbbbbbbbbbbbbbAB"H,FC*X2j:wCKQVY[]^^_`aaaaaaaaaaaaaaa>DD/$E-W6f>rEzLRVXZ[[\]^_______________>A/2'E1T:aAjGqMvRzT|V~WXYZ[[\\\\\\\\\\\\\\\>5 !2+B5O=YDaIgLkOnQpSrUsVtVuWuXvYvZwZwZwZwZwZwZwZwZwZwZwZwZwZwZwC#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#P0Q>RMU\WkZz\^`eimprtuwyߔ|ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}ޔ}C#O0P>RLT[WkYy[]_dhlprtvxߔ{ܔ۔۔۔۔۔۔۔۔۔۔۔۔۔C#O0P=RLT[VjXx[]^bgkpruwޕz۔ؕוווווווווווווC#O0P=QKSZViXwZ\^`ejpsuݖyڕ֗ӗҗҗҗҗҗҗҗҗҗҗҗҗҗD#N/O=QKSYUhWvY[]_diosݛwٙ~ԘљΚΚΚΚΚΚΚΚΚΚΚΚΚΚD#N/OH/[7j>vFNSWZ]^_`abcddddddddddddd=BE!?6)I2Z:gAqHxO~TWY[\]^_`aaaaaaaaaaaaaa=A?$#7-I6W>bDjIpOuSyU{W}X~YZ[\]^_____________==&'70F9Q@ZFbKgMkPnRpTqVrWsXtYuZu[v\v\w\w\w\w\w\w\w\w\w\w\w\w\w; '+54AOKQWTcVnYx]bf߶iֽn̴sĭy=J'L2M>OJQVSbWlZu^|ceglƻpv|=K&L2M=NIPUT`WiZq_wc}޾dfimrx=K&K1LK&K1K;LFPQTZXa[g]t]`cegjlotz>J%J0J:LDPNTVW[XjXwV\bdfhjlot{>I%I/I8LBQJTPV^TmK{SY^bdfhjlpuyyyyyyyyyyyy>H$H-H6L>QDSQRbGpI}QW\`ceghjmrtttttttttttt?G#F+H3M9PAPTGe@sHPV[_adeghjnpppppppppppp@E!E(I.M1NDGW:g?uHPVZ^`cdefhkmmmmmmmmmmmm@CE$I'K4GH3Y:h@uH~PUZ]`acdegijjjjjjjjjjjjBAEH#F7-J5[fDoKvQ{UXZ\]_`abdeeeeeeeeeeee< A A0*)<1K:WAaFiKoQsTwVyX{Z|[~\]^`abbbbbbbbbbbb<> 5",,;5HOHSRV[Yc^icp߽dgmrx7CJ)J2L=OFSPVXY^_cao`ekpu|7CI(J1L;ODSMVTZX_]_n^~chmrx7CI'I0L9OBSIVNZT\aYl]|bfimqw}7DH&H/L7O>SDUJVXSdUp]{adgjmpu{7DF%H-L4O:S=SMO[JhQtY~^cfhjmptzƒ7EE#H*L0O3P@MPA_GkOvV[`dfhkmqv|ŁŁŁŁŁŁŁŁŁŁŁ7ED!H&L*M3LD9S@aFmMxTZ^befhkmqv{{{{{{{{{{{8BDH!K$J68G9V@cFnMxSY]`bdfhkmquuuuuuuuuuu8@DHG'<92I:X@dFnMvS|X\^`bdfhjmppppppppppp9 @DE>*,<4K;XBbGkMrSwW{Z~\^`bcegilllllllllll: @ B >$-.=6K=VD_IfMlRpUtXvZx\z]{_|a}b~dfhhhhhhhhhhh;?='.0<8H?REYJ`MdPhSjUmWnYp[q\r^r_satcudvdvdvdvdvdvdvdvdvdvdv:; *.3:;DALFRHWK[N^Q`SbUcWdXeZf[g\g^h_iajajajajajajajajajajaj7'# .+65==@DCJENHQKSNUPWRXSYUYVZW[Y[Z\~[\|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]].'1'7/96=@3"!,/4;;FBOHVL\OaRdUgXjZk]m_naocpeqgr~js|lt|lt|lt|lt|lt|lt|lt|lt|lt|lt5<6$"..79>CDJGPIULYP\S^V`XaZc\d]e_faf~cg|ehzgizgizgizgizgizgizgizgizgizgi56 (!1,95>=ACDHFLJOMRPTRUTVVWXX~ZY|[Z{][z_[xa\wb]wb]wb]wb]wb]wb]wb]wb]wb]wb]1  !+4(70;6>;A@CCGEJGLI}OJ|QKzRLyTMxUMvWNuXNtZOs\Pr]Pr]Pr]Pr]Pr]Pr]Pr]Pr]Pr]Pr]P  $*."2)6.:2=6@8|C:zFuL?sN@rO@qQApRAoTBnUBmWClXDlXDlXDlXDlXDlXDlXDlXDlXDlXDc. t5=F(M3S>XI[R^[ebkgpkuoyq}s}t{uzvzvywywywyvzvzuzuzuzuzuzuzuzuzuc. t5=F(M3S>XI[R^[ebkgpkuoyq}s}t{uzvzvywywywyvzvzuzuzuzuzuzuzuzuzuc. t5=F(M3S>XI[R^[ebkgpkuoyq}s}t{uzvzvywywywyvzvzuzuzuzuzuzuzuzuzuc. t5=F(M3S>XI[R^[ebkgpkuoyq}s}t{uzvzvywywywyvzvzuzuzuzuzuzuzuzuzue- v5=F(N3T>XH[R^[ebjhplupxr}t~v|w{w{xzxzxzxzx{w|w|w|w|w|w|w|w|w|wg- x4=F(N2T=WHZR][bbiiontrxt}wx}y}z|{|{{{|{|z}yzzzzzzzzzzzzzzzzzzi- z4=F'N2SVHYQ\Z_cgkorޘv{ؒэ̉džÄs+ 3=H"L+O4S=VEYN\W`_ggߤmrמw{ϗɓďt* 3=H!L*O2S;VCYK[Sa[eg٪lrФt|ȝ|™v* 3=H!K(O0R8V@YH\OaWݵcfҲjrɩq|yw* 3=H K'O/R6U=XC\I_W`e͸grðn|v~x* 3>GK&O-R3U9X?\D[U^deql{szy) 3>GK$O+R0U5X8ZCTT\ccpj{pw{) 3>GK"O(R,U0X1VASSZbaogznt|}) 3>GK N$R'T(U0L?QQY`_mexkry~yx}) 3@GKN Q!R(J3L?POW^]kcviov|ˉvɔqǠmƬsx{{{{{{{{{( 3 AGKNOI+A7ICPNV\\hasf{lryzՂtӌoҗjҤhаmǰp°p°p°p°p°p°p°p°p°(2 CGJLH!8.?;FGMRR]Zf`newi}ms~yx؁t֊p֔m֟g֬eԵeԵeԵeԵeԵeԵeԵeԵeԵ'3 C GIG/%72>>DJKUP^Wf]mbsfxj|ns}yy݀v݈sݑoܛkۡkۡkۡkۡkۡkۡkۡkۡkۡ'5B F F7.(65=ADLJUO^VeZj^obsfvjyn{~r}zx~w}usq~q~q~q~q~q~q~q~q~&8BD<%.+77=BDLJTO\TaXf\j_mcpfrit}muzqwwuxuzxrxqxqxqxqxqxqxqxqxqx%<A=& 0,88>BEJJRMWR\V`Yc\f_hbiek}hlzknwoourprwpq{qq{qq{qq{qq{qq{qq{qq{qq{q&<< )!2-97@?EGHMKROUSXV[Y]\__`}aa{dcyfdvietlfrofprgprgprgprgprgprgprgprgprg$9# !+!4+<4?;BAEFIJLMPPSRUS}XU{ZVy]Ww_XuaYtdZrf[pi[nk\nk\nk\nk\nk\nk\nk\nk\nk\,  %.4(8/;5?:B>FAID~LF{OGyRIwTJvVKtXLrZMq\Mo^Nn`OlcPkePkePkePkePkePkePkePkePkeP %*/#4)8.;2?5|B8yF:wI;uKpQ?nS@mUAlWAjYBi[Ch]Cg_Dg_Dg_Dg_Dg_Dg_Dg_Dg_Dg_D  $).!3%|7)w:+t>-qA/oD0mF1lH2jJ3iL3hN4gP5fQ5eS6cU6bW7aY7aY7aY7aY7aY7aY7aY7aY7aY7X+h0u7? G*M4R=WF^MeS|lXyr\vx_t}arbpcodnenenenememendndndndndndndndndndX+h0u7? G*M4R=WF^MeS|lXyr\vx_t}arbpcodnenenenememendndndndndndndndndndX+h0u7? G*M4R=WF^MeS|lXyr\vx_t}arbpcodnenenenememendndndndndndndndndndZ+i0w7? F*M4R=WF]NdT~kY{q]xw`u}bscqeoeofogogngngnfofoeoeoeoeoeoeoeoeoe\*l/z7? F)M3R=WF[NcTjZ}p^zwaw}dufsgqhqipipipioiphphpgnhnhnhnhnhnhnhnh])n/|6>F)M2RF(M2R;WEZM`Uh[n`ud}{gzixkulsmrmqnqmqmrlpmlnkokokokokokokokoa(r. 6>F'M1S:WD[L^Tf[mateyi}kzmwnuorprpqoropomplrlrlrlrlrlrlrlrlrc't- 6>F&N/T9WBZK^Td[lasfxjm}oyqvrsrqrrqpqnsntoupvpvpvpvpvpvpvpve'v- 5>G%O.S7WAZJ]RbZkarfwkoqzsvtruovnvqurwsxsytytytytytytytytyf&x- 5>H$P-S6V?YH\P`Yj`qfvlptyvuxtyszszuzv{w{x|x|x|x|x|x|x|x|x|h%z, 5>I#O+S4VJ"O)R2V:YB\K^Sg[oeْxmҌs̈xDŽ|~~}~k$}, 5?K O(R/U7X?[G^OeZٟmeИvnʓ~tĎz~l$+ 5@KO&R-U4X<[C^LܫcZҥkeʞsn˜{u{m$+ 4AKN$R+U1X8Z>߳\Kճ`Y̫heäpnxu{n#+ 4AKN"R(U.W3Y:ڿWJϹ^XƱfdmnuv}|p#+ 4BKN Q%T*W-W9SI\Wdckmruz|q"* 5CKNQ"T%V'P7QHZVbcimouw|s"* 5EJNQSS#G6OFXU`aflmtt{|~z|u!* 6 FJMPRK!G4NEVS]`djksqzyzuqrvz||||||||w!)7 FJMOKA#H2MBTQ[]bhhpowv}~xÈrmihlqrrrrrrrrz )9 F JL J5?&H1M?SNZZ`efmmt}tzv|~o҆jБeΞa̫^ʺbļghhhhhhhh~):F I I ;4=*E5L@RKYV_`dhjozqtsxyl|gb]ߦX޵X\^^^^^^^^*=EG? *4"<.C9ICOMWU]]bcgi~lmxrqryulwhydyay]yW{V{V{V{V{V{V{V{V{+@DA*3%;1B;HEMMTTYZ^`cdghzlkurmpxolpiqfqcp`q^r^r^r^r^r^r^r^r,@@%!+4(;2BGCLGPJ~TL{WOxZPu^RraTpdUmhVkkWioXfsYcyZb{Zb{Zb{Zb{Zb{Zb{Zb{Zb{Z  '04&8-<3@8D<H?{LAxPCvSEsVGqYHo\Im_JkbKieLghMekNboOaqOaqOaqOaqOaqOaqOaqOaqO  %+0"5(9,=0|A4xE6uI8rL:pO;nQhY?g\@e_AcaBbdC`hC_iD_iD_iD_iD_iD_iD_iD_iDӾ %+0!}4%w8(s<*p@,nD.kG/iJ1hL2fN2eQ3cS4bV5`X5_[6]]7[`7[a8[a8[a8[a8[a8[a8[a8[a8 %y*s/n3j7!g;"e>$cA%bC&`E&_H']J(\L([O)YQ*XS*WV+UX+UY,UY,UY,UY,UY,UY,UY,UY,R,Z, h2r:xA!{H*zN3wV:u^@rfFomJktMi|OfQdRbS`S_T_T_T_T_T_T`S`S`R`R`R`R`R`R`R`RR,Z, h2r:xA!{H*zN3wV:u^@rfFomJktMi|OfQdRbS`S_T_T_T_T_T_T`S`S`R`R`R`R`R`R`R`RS+[+ j2t:zA!}H*|N2yT:v]AseFplJmtNj{PgReScTaT`U`U`U`U`U`UaTaTaSaSaSaSaSaSaSaSU+^+ l1v9}@!G*M2|S:y[AvdGskKosOlzQjShUfVdVbWaWaWaWbWbWbVbVbUbVbVbVbVbVbVbVW*`* o1y8@ F)M2R:|ZAybGvjLrqPoySmUjWiXfXdYcYcYcYcYcYdXdWbYbYbYbYbYbYbYbYX)c)q0|8? F)L1R:XA}`HyhMvpQrwToWmXkZi[f[d[d\d[d[eZfYd[a\a\a\a\a\a\a\a\Z(e(t07>F(M0R9WA_H}gMynRvvVs}XpZn\k]i]f^e^e^f]g\d]c_b`b`b`b`b`b`b`b`]'h(w/7>F'M/R8W@\GeN}mSytWv|Zs\q^n_k`i`f`g`g_f_eadcedededededededed_'j'y.6?G%N.S6W?[FcMkS}sXz{[w^s`pbmbjcibgbgbfdgehfigigigigigigigiga&m&|.6?H$O,T5X=[EaLjSrX~z\z`ubqdnfkgighhigkhkiljmkmkmkmkmkmkmkmkb%o&- 6@I"P*U2Y;\C_KiRrXz]|bweshqjoknlmlnlolpmqnqnqnqnqnqnqnqnqnd$q%- 7AJ!R(U0X8[@^HgPpXۆy_Հd|hykwmuotpsprptpuquqvqvqvqvqvqvqvqvqf$s$, 7BKR&U-X5[=^EeOْnXҌw`̇fǃjn}p{rysxtxtytytztzszszszszszszszsg#u$, 7CMQ#U*W1Z9]BڟcNјkXʒt`č|gloruv~w}w~w~v~v~u~u~u~u~u~u~u~ui#w#, 8DNQ!T'W-Y4ݪZAӥ`N˞iXØqaygmqtwyzzyyxwwwwwwwwj"x#, 8ENQT#V)X1زT@ͪ]MŤfXnavh~mrvx{||{{zxxxxxxxxk!z", 9FNQSU$ݴS0ҸR?Ȱ[LdWl`sh{nrwz|}~}|{zzzzzzzzm!|"- : GMPRTG.̿P>¶YKbVi`qgxnsw{}~|{{{{{{{{o ~!-: IMPQ޹OD-NIKJ5 ;A'I6QDYP`Zgbniuo{~ttxo{j}f~c~d}h}l|l{l{l{l{l{l{l{x/@HH>/;C$H3PAWM^We_lfysls{pmɅtgǐwbŜz^é{[{Zz^zbybybybybybybyby|/BFB" /9B%J0O=VI\RcZ{jasqglykf܃o`ڎr[כtWԨuSҸuQuTuXvXvXvXvXvXvXvXv0CB"$ /8A)H3N}PBxUEtZHp^KmcMigOflQbrR^yTZTWUSUPUPUPUPUPUPUPUPU! */4#9)>/B4}G8xL;tQ>pU@mYBj]DhaFeeGbjI^oJ[tKX{LTLQMQMQMQMQMQMQMQM պ %+0 5%:*z?.vD1rH4oL6lP8iT9gX;d[]g?Zk@WoATtBQ{CQ{CQ{CQ{CQ{CQ{CQ{CQ{Cش &,~1 w6#r;'n?)kD+hG-fK.dN/bR1`U2^X3\\4Z_5Wc5Ug6Sk7Po8Oo8Oo8Oo8Oo8Oo8Oo8Oo8ϼ !z't,n1i5f: d>"aA#_D$]H%\K&ZM'XQ(VT)TW)RZ*Q^+Oa,Me,Le,Le,Le,Le,Le,Le,Le, |u o i&e+`/]3[7Y:W=U@TCREQHOKMNLQJTIW G[!G[!G[!G[!G[!G[!G[!G[!K,R,Y. d6j=lD!kL(jV/h^4eg8ao;^x>\@YAVBTCQCPCNCNDODPCPCQCQBRBSASASASASASASAL,S,[. e5k=mD!lK(kU/i^4ff9co<`w?]@ZBXCUCSDQDODOEPDQDQDRDRCSBTBTBTBTBTBTBTBN+V+]- h4n<pC!oJ(nS/l\5ie9fm=cu@`}B]CZDXEUFSFRFQFRFRFSFSETEVDVDVDVDVDVDVDVDO*X*`, k4q;sB!sI(qQ/o[5lc:ik>etAc|C`E]FZGXGVHTHSHSHTHTGVGWFXFTGTGTGTGTGTGTGQ)Z)c+ m3t:wA wH(tO/rY5ob;lj?hrBezEcF`H]I[IYJWJUJUJUIWIXHYGVIUJUJUJUJUJUJUJT(\(f* q2x9{A |H'zO/vW5s`;oh@lpCixFfHcJ`K^K[LYLXLVLXKZKYJWKVMVNVNVNVNVNVNVNV'_'i) t1|9@G&N.zT5w^;sf@pnElwHiJfLcMaN^N]N[NZNZMZLYNXPXQXRXRXRXRXRXRXRX'b&l( x09@G%M-S4{[;xdAtmEpuIl~LiNfOdPbQ`Q_Q]P]O[PZR[T\U]V]V]V]V]V]V]V[&d%p'|09@G$M+S3X:}b@xkFttJp}MmPjQgReScTaT_T^T^U_W`XaYbZbZbZbZbZbZbZ]%g$s&/9AG"M)R1W9_?}iExsJt|NpQlTjVgXeYdYcZcZdZe[f\f]g]g]g]g]g]g]g]_$i#v%/ 9AH N'S/W6]>gD~qJx{PtTqWnZm\k]j^i_h_i^j_k`k`l`l`l`l`l`l`l`a#l"x$/ 9BIO$S,W3\;eCڄnK~xRzVwZu]s_qaobncncncococpcpcpcpcpcpcpcpcb"n!{$0 :BJP!U(X/Z8ّbCъkL˅tSƁ}X}\{`ybwduftgsgsftftftftftftftftftftfd"p }$0 :CLSV$X+۞X8җ`CʑiLČqSyY^b~e}g{iyjxjxjxixixhxhxhxhxhxhxhxhf!r$0 : DNSU ߥU)դT7̝]BėfLnTvZ_cfikl~m}m}l}k}j}j}j}j}j}j}j}jg s$0; EPRSڭL(ϩQ6Ƣ[AdKlTtZ|`dhkmnoonmlkkkkkkki u$0; G OQPԶD'ʮO4YAbKiSqZy`eilnpqqponmmmmmmmjw$0< I N O۵GϻC%ŴM3W?_JgSoZv`~eimpqrrqponnnnnnnly$0=K M L 4A$K2U>]IeRlZt`|ejmpr{sxsxrzq}p~o~o~o~o~o~o~on|#0>KK޸D2?"I0R=[HcQjYq_yeim|pwrstptosrrupwowowowowowowop~#0>IG$0< G.P;YF`OgWo^vchyltporkshsfsjqmpoooooooooooooos#0?Gߺ;%/:E+N8VC^MeUl\~taw|frjlnhpcq`r^qapdofofofofofofofov"/?A&3 :C(L5T@\JcQ}jXvr^pzcjgej`l\nXnVnWm[m]m]m]m]m]m]m]mz -;޿+'4>D%K1SHG?C?@@=@=@=@=@=@=@=@ѷ"(.w3p8!k>$gC'dH)aM+^Q,\V.YZ/V_1Sd2Pj3Kp4Hw5D~6A6>7>7>7>7>7>7>7Ӳɾ  {"t(n.h3d9a=^B![F"YJ#WN%TR&RV'O[(M`)Je*Fk*Cp+@v,>{,>{,>{,>{,>{,>{,>{,˺~ wp j"d(`-\2Y7W;T?RBPFNJLMJQHVEZC_ @d =i!;m!;m!;m!;m!;m!;m!;m!ÿzpj d_Z V& R* P/N2L6J9H<F@ECCGAK?O>S;W9\7_7_7_7_7_7_7_E-L,P-U2 [:]B^K]U$[_(Yh,Vq/Rz0O2L3I4G4E4D5B5@5?5?4@4A4C3D3F2F2F2F2F2F2F2G,N+R,W1 ^8`@`J`T$^])\f-Yo0Ux2R3O4L5J5H6F6D6C6A6A6B5D5E4G4G3G3G3G3G3G3G3H+O*U+Z0 a7c?cHcR%a\)^e-[n0Xv3U4Q5O6L7J7I7G8E8D7C7D7F6H6I5F5F6F6F6F6F6F6J*R)W*]/ d6g>fGfP%dZ*ac.^l1[u4X~6T7R8O8M9K9J9H9G9F9G8I8J7H7G8G9G9G9G9G9G9M)T(Z)a- h5k=kEiN%hX*ea/bj2_s5[|7X9U:S:Q;O;M;L;J;J:K:J9J9I:HJ@J@J@J@J@J@J@R'Z&a&i* q4u<vCtJ$pS*n\0jf4gn8cw:`<]>Z?X?V@U@T?T?R>Q=N?MANCODODODODODODODT%]$e%n* v3z;{BzI#vP)rZ/oc4kl9gua@^A\B[BZBXBWAVATBRDSFTGUHUHUHUHUHUHUHW$`#h#r)z2:AH!}N(wV/ta4pj9lt=h~@eBbC`D_E\FZGYGYGYGXIYJZK[L[L[L[L[L[L[LY#c"l"v)2 :AGM&~T-y^3th9pr=l|AiDfGdIbJaK`L_L^L^L]N_O_P`P`P`P`P`P`P`P["e!o!z(2 :@GL$R+[1|f8vo>qyCnGlJjMhNgPeQdQdRdQcRdSeSeTeTeTeTeTeTeT]!h r }(1 9@FL Q'Y/ڂc8|l?xuEt~JrMpPnRlTkUjViViViViVjWjWjVjVjVjVjVjV_ ju '1 9 @FKO#ڏV/щ`8˃i@qF{zKxOvRtUrWqXoYoZnZnZnZnZoYoYoYoYoYoYoYa lw '19 @FKܛJ"ҕS.ː]8Êf@nGvL~Q|TzWxZv[u]t]s]s]s\s\s[s[s[s[s[s[s[cnz&09 A GK֡E!͛Q-ĕZ7c@kGsM{RVY}\|^z_y`x`w_w_w^w]w]w]w]w]w]w]ep|&09A H ܦEѦC ǠN,X7a@iGqMxRWZ]`a~b}b|b{a{`z_z_z_z_z_z_z_fr~%09AI ױ5̫A¥L+V6_?gGnMvS~W[^acdddcb~`~`~`~`~`~`~`ht%/9AߪFҶ3ǰ?J)T5]>dFlMsS{X\_bde|fze|d}cbaaaaaajv$.8Aڵ5ͼ1=H(R3Z=bFjMqSyX\`c|exfugrftevdxcybybybybybybly#-6=. ;F&P2X<`DgLoRvW\~`yctepgmgkglfodqcrcrcrcrcrcrcn|!*1ܷ+, 9D$M0V:^CeJlPtV||[v_qbmeifegcfcegdjcjcjcjcjcjcjcq%% ) 6A"K-T7[@cHjNzqTtyYo]j`ecae^e[e[d^cacbbbbbbbbbbbbt &3?H*Q4Y=aEyhKsoPmwUhYc]^_ZaVbSbRaUaXaY`Y`Y`Y`Y`Y`xٴ*4=F&O0W9x_@qfFlmLfuPa~T\ʼnWWÕZR\O]L]K\L\O]P]P]P]P]P]P]} ѹ ,7 >E"M+yU3r]:kd@ekE`sIZ|MUևPPԔSLҡTIϱUFUEUDVGWHWHWHWHWHWHWձ˿ , 5<C~L&wT-pZ3ja8dh=^oAXxDSGNIJKGLDLBK?L@N@O@O@O@O@O@O ٪θ * 29?xG%rO*lV/g\3bc6]i9WqM@HAEBCABA@AfD!bJ$^P&ZU(V[*Sa,Nh.Ip/Dy1?2;3734323232323232323اʹ¿ ~ v&o-h2c8_>\DXIUN!QS"NX#K^%Fe&Am'=v(9)5*1*.+-+-+-+-+-+-+ϰżyrk f'`-[2W7T<QANEKJHOETCZ>a:i7q 3x 0!-!,!,!,!,!,!,!Ǹulf`[V% R* N/ K4I8F<D@BE@J>O;T7[4a1h.n+v+x+x+x+x+x+xvkb[UOJG D$B)@->1=5 ;9 9= 7B 5G 2L /R ,W *] 'c'd'd'd'd'd'dA-F,I-K0L7 P@QJQTO^Lh!Hq#E{$B%?&='<':'8'7'5'4'4'3'3&3&5%4$3$3$3$3$3$3$B,G+K,M/O5 S?TISSQ]Of!Kp$Hz%E&B'@(>(<(;(9(8(7(7(6(6'6'5&5%5&5&5&5&5&5&D+I*N+P.R4 V=WGVRU[Re"On%Kx&H(E(C)A)?*>*<*;*:*:)9)9(8(6'7'7(7(7(7(7(7(E*L)Q)S,V2 Z<[EZPXY Vc#Sl&Ov(L)I*G+E+C+A+@+?+>+>+=*<*:)9)9*8,8,8,8,8,8,H(O'T(W*\1 _:_C_M]W Za$Wj'Ts)P}+M,K,I-G-E-D-D-C-C-A,@+?+<-;.;/;/;/;/;/;/K'R&X&\(a0 e9eAcJbT _^%\g(Yq*Uz,R-P.N/L/J/I/I/H/G.E.E-A/?1>2@3@3@3@3@3@3N&U$\$a'g/ k7k?iGfQ d[%ae)^n,Zx.W/T0R1Q1P2O2N1L1L0K/H1E4D6E7G8G8G8G8G8G8P$Y#_#f&l- p6q=oElN iX%fb)bl-_u/\1Y2W3V4U4T4R4Q4O4O4M7L9K:L;M[?Z@Z@Y@YAXBXCYCZDZDZDZDZDZDX!bjs$z*2 9@F}N yY&tc.om3lv8i;g>e@dBcCaD`E_E_E_E^F^G_G`G`G`G`G`G`GZdnw#~)18 >DLـV&z`.vi4rr:oz=mAkCjEhGgHfIeJdJdJcJdJdJdJdJdJdJdJdJ\gqz"(06 <AڌHцR&ʁ\.}f5yn;vv?sCqFoHnJmLkMjNiNiMhNiMiMiMiMiMiMiMiM^it}"&.5: ޖ=ӒDʍP%ÈZ.c5k;|s@y{DwHuJsMrOpPoQnQnQmQmPmPmOmOmOmOmOmO`kv!%-37؜6͗BŒM$W-`5hI"S,\4d;kArFzJNQTV}X|X~{X}zW~yVyUxTxTxTxTxTxTeq}!$%Ԯ ɫ/ <G!Q+Z3b;iApFxKORUW|YyZvYuXw~Wx}Vz|Uz|Uz|Uz|Uz|Uz|Ugsݫϳİ- :EO)X2_:g@nFuK~OS}VyXuZr[o[nZpXrWsVsVsVsVsVsVivճ ʹ+8CL(U1]9e?lEsJ{OzRvVqXnZj[h[gZhYkXlWlWlWlWlWlWlyتϷÿ(5@J&S/[7c>jD}qIxyNsRoUjXfZc[`[_ZaYcXeWeWeWeWeWeWo| ҮȻ$2>H#Q-Y5`<|gBwoGqvKlPhScV_X[YYYWXXX[W]V]V]V]V]V]Vr֧ͳ / ;E N)V1{^8ue>plDjtHe}LaP\SXUTVQVOUOURUUUUUUUUUUUUUvѬǸ+ 8BK&zT-t\4nc:ij?drC_{GZKUNQPMQJQHPHPJQLQLQLQLQLQLQ{  զ˱ *5?zI!sQ(mZ.ga4bi9]p=XyAS˃DOʏGKȝHGūJDþJCIBJBKDKDKDKDKDKDK ڠϬŸ +5 |>tFmO"gW(b_-]f1Xn5Sv8N߁;Jݍ>Fܛ?Bڪ@@ؽA>@=@;B6<588696969696969סͮù'x/ p6j>eF`M\T!XZ#Sa&Ni(Jr*E|,A-=.;.9.8.7-5-5-5-5-5-5-ܜЩƵ ~w#p+ i2c9_@[FWLSSOYK` Gh"Bp$>{%9&5'3'1(0(/'/'/'/'/'/'Ҧɲ{ smg% a, \3X9T?QEMJJPGVC]?e:n6x2.+ ) ( ( ( ( ( ( ˯{qib]X%S+ O1 L7 J<GADFAL>R:Y6`2i.s*}'$""""""Ķ}pg_YSMI"F'C,A1>6<; :@ 7E 4K 0R ,Y )a %j "s{sf]VOJ FB>;!9&6*4.22/7-<)A&H"OV^ekkkkkk<,@,C-C0B6A> CICTA^=h:r7|531/.,++**)((&$$#####>+B+D,E/E4E= FHFRD]Af=p:z86421/..-,,,*((&%%%%%?*D*G*H-H3I< JFJQH[EeAn>x<9864322110/-,+('''''A)F(J(L+L1M: ODNNMXJbFlCv@><:8776655220-+ * * * * * D'J&N'P)R/S7 TATKRVO`LiHsE}C A ?!=!=!YHWSU]RgNpKz!H"F"D#C#C#B#A"A"?">!= :#7%7&6'6(6(6(6(6(J$P#V"[%^,`3 `;_E]OZZWdTm!Qw"N#L$J%I%I%H%G$F$E#D"A%@'>)>+=,=,=,=,=,=,M#T!Z `$d*f1g9 eAbL`V]aYj"Vt$T~%R&Q'P'O'M(K(J(I)I)H*G,F.E/E0E0E0E0E0E0O!W^e#j)l.m7 l?hGeRb]_h"\r%Z{'W)U*T,S-R-Q.P.O/O/O/M1L3L4L4M4M4M4M4M4R [bj"o'r-t4 s<pDlNiZfd#bn'_w*]-\/[0Y1X2W3V4U4U4U4T6S7R8S8S8S8S8S8S8U^fn!t&w+z2z9 x@tKpVl`$ij)fs-d{0b2a4`6_7]8\9[9Z:Z:Z:Y;Y`>_>_>^?^?_?_?_?_?_?_?Ycmv|#',2܇9 уD~OzY%vb+sk0ps4n{7m:ki@gAfBeBdBdBcBcBcBcAcAcAcAcA[epy"$(-ԍ5 ˉAÅLV%}_+yh1vo5tw9r

n@mBlDjEiEhEhAh=h9g6g5g5g5g5g5[enx "Ԕ,ɏ;GR#\*d0|l5yt:w|=u@tBrEpFoHmHlHlEl@l{AyDwFuHsJrKqKpHpB~p>}o:}n9}n9}n9}n9}n9_is}Ԟɞ&6 BM!W)`0g6o:v>B~E|HzJxL|wLyuMwtJxuEwt@wrpv=pv=pv=pv=pv=bm y ߖҟɧ !1 >IS'[/c5k:r?zC}FyIuLqNnOkOiNjHj}Cj{?j{>j{>j{>j{>j{>ep {  ֚͢¬/ <GQ&Y-a4h9p>{xBvFrInLjNfOdOaOcIcDcAc?c?c?c?c?gr  ەўȧ,9DN$W+_2~f8yn=tuAo~EkIgKcN_O\OZN[I\E\A\@\@\@\@\@j v ֙͢ë(6AK!T)}]/wd5rk:ms?h|CdF_I[LWMTMRLSHTDUAU@U@U@U@U@m zܔўȧ #2 >H|Q%vZ,pb2ki7fq;az?\CXFTHPIMJKIKFLBM?N>N>N>N>N>q֙ͣí.:{EtN oW'i_-dg2_o6Zx:U=Q@LBIDFDDCDAE>F;>:>8?6?6?6?6?6?6}̥֚¯z%r1k<eF_PZYUa"Qj&Lt*H-Dڍ/@؜1=խ2;29190808/8.8.8.8.8.ܕТƬ{s!k,c6 ^@XJTSO\KeGoCy"?$<%9&7&5%4%3%2%2%2%2%2%2%Ԟʩ{skd']0W9 SB NKJSF\Bf>p:}7420/.,,,,,,ٚͦırj c\ V)P1L9HA EI AQ =;D7L3T /^ +j &x "         ɭwj^VP KFA=$:*70461=-D)L$V bo~´zl_TLFA= 9520#-(*.'4#:BLVb nzqdWKC=951. +)&$ !%+17@ IR[dggggg6+9*:+:.733:-D'O![gs     7*;(<)<,:1681B,M'Y"eq|   9(='?'?*=/966@2K-W(c $n !y          <&?%A%B(@,=3<=9H4T /` ,k )v & $ $ # " " ! >%B#E#F%E)D1B:@E

KI GU D`Ak@v>=<<;;99776666666666G MRUY"Z)Y1U: RE OQL]JhHrG|FEDCBA@????????????JQV[` b'a.^6Z@ WLTYRdPnOxMLKKJ I!H!G!G!F!GGGGGGGGGMTZ`fh%h+f3c< `H^U[`YjWtV|!T"S$R%R&Q'P'O(N(M(N%N#N!NNNNNNPW^ekn"o(n/k7iD fPc\af_o"]w$\'[(Z*Y+X,V-U-T.T.T+T(U%U$U"U"U"U"U"RZaios u%u+t3q@ nLkXib fk$ds'c{*a,`._/^1]2[2Z3Y3Z0Z-Z*Z'Z&Z&Z&Z&Z&U]dmsx{!|%|.y< vIrTo^!mg%ko)iw,g/f1e3d4b5a6`7_7^5^1_-_+_)_)_)_)_)W_gpw|ރ҃*ǀ9 }FyQv[!sd&ql*os.m{1k3j5i7g9f:d:c:b9c4c1c.c,c,c,c,c,Yaj sz؉ˉ'7 CN|X!ya'vi+tp/rx2q5o7m9l;jmt9mt6mr3mr3mr3mr3mr3`ju  ӏʖ-:EOX%`*g/n3}v7y~;u>q@nBk}Dh{DezDfy?fy;gx7gw5gw5gw5gw5gw5b lxٌϓŚ*8 CMV$^)e.{l3wt7s|:o>k@gCdDaD^D^@_<`~8`}6`}6`}6`}6`}6e o{Ԑ˘'5 @JS"[(zc-uj1qr6lz9h=d@`B\CYDWCW@XY@UARBPBO?Q;Q8R6R6R6R6R6kx֐̚¡.:}DwNqV"l^'hf,cn0^v4Z7V:Q=N>K?H>H1<1;0;/;-;,;,;,;,;,|ތјȢxoj)e6_A ZKVTQ]MfIpE{"A·$>͖&;˦'8ɻ(7'6'6&5&5%5%5%5%5%ה̟©qic$]/W:SE OO KXGaCk?v<964210/.....ݏМƧwic\V)Q3M<IEEO AX =b:m6y31.-+*((((((ԙɥ|naZ UO!J*F2B;?C;L7U3_ /k +y ( & $ # " ! ̣íqdXRLGC ?(;/865>1F-O(Z$f uŬtgZOIC?;74#1)./+6&>!FQ^l} xi\PG?;62 /,)&!#' -4<G S`n~}oaTH>72-*&#! #* 1;EQ]gppppp2+4*4+3-/3):"CNZf r|3)6(6)5,21-8&A LXdo z 6(8&9'8)5.05,?'I!Ualw     8&;$<$<&9+523</G*R%^!it~  ;$>"@"?#='==<;::99988888888GMQUZ[$Z+V3R>OJ LV KaIkHuG}GFEEDCBBAAAAA@@@@@JPU[`b!a(^/Z8XE VR T]RgQpPxONNMLKJIHHHHHHHHHHMTY`egh$f*b3a@_M ]X[bYkXsW{VU T!S"R#Q#P$O$N#O OONNNNNOV\ dilml$k.i<gIeTc^ag_o^w ]~"\$Z%Z&X'W(V)U)T(T%T"T TTTTTRY` hmprqr*q8nElPiZgcfk ds#cz%a'`(_*^+],[-Z-Y-Y)Y&Y#Y!X!X!X!X!T[ c kqtv wy&x5uBrMpWm`kh!jo$hw'g)f+d-c.a/`0_1]0],])]&]$]$]$]$]$V^ f n t x {}#~3{? xJuTs]qe"ol%mt(l{*j-i/g1f2d3c3}b3|a0|a,{a){a&{a&{a&{a&{a&X` iq w|Ѐǃ 0= ~H{RxZvb"ti%rq(px+o.m0l2~j4{i5yg6vf6uf2uf.ue+te(te(te(te(te(Yblt{ԁ˅.; FO~X{`"yg&wn)uv,s~/~r2{q4wo6tm7rl7pk7nj4oj0oj-oi*oi)oi)oi)oi)[ dnw~ЅNJ+8 CMV^"~e&|l)~zt,{y|0xw2tv5qt7nr8kq9ip9ho6hn1in.im+im+im+im+im+] fqzւ͉Ž(6 AKT\!c%|j)yr-uz0q}3n{5kz7gx9dw:bu:at7bt3bs/br,br,br,br,br,` it~ӇɎ%3?IRZ {a$wh(sp,ox0k3h5d8a9^}:[{:Zz8[y3\x0\x-\x-\x-\x-\x-bmxڂϋŒ "0< F~OyWu_#qf'mn+iv.e2a5]7Z8W9T9S8T3U0U~.U~-U~-U~-U~-eq|Շː-9 ~CxMsUo]!jd%fl)bt,^}0Z3V5S7O7M7L6M2M0N-N-N-N-N-iu݂эǕ(}5w@qJmRhZdb"`j%[r)W|,S/O2K3H4F4E3E0F.G,G+G+G+G+m{؈͓Û{#u1p< jFfOaW]_Yg!Tp$Pz'L*H,E.B/?/>.?,?*?(?(?(?(?(sҏșxqm+g7cB ^KYTU]QeMnIx!E#B%>';(9'9'8&8%8$8$8$8$8$zڊ͖ğsfb!^0Y;UF QO MYIbFkBu?ł;Ð86433222222Ғȝ|l^WS&P3L>IIES B] >g;r85؎2֟0Գ..,,+++++؎̛¥seXRMI*E5B?>I;S8]4h1u / , * ) ' % $ # # # # # Иƣxj]QK FB!>+;38<4E0O-Z)g%t#!ɢ|naUJD?:7 4'1/.7)?%I!Taq     ªqdWLB;73 /,)!&(#/7@KY i|ugYMC:3/+'# !&- 6AO^n{l_RF;2+&"  #+6BP]jwyyyy.*/).*+-&2 9B MYeo{0)1(1(.+)0#7@J Wbmx2'3%3&1(--&4"=HT_ jt4%6#7#5%1),1*;$EP\gq {    7"9 : 9!6%4.27.B(M#Xcmw          : =>=<"<*:47>2I-T)_&i$s#|""!! =ACCDD'B0?:;E6P3[0f.o.x--,,+**)'''('''&&&&@EGHLL$J,F5C@?K>=<;;;::9 9 9 9 GLPUYZY#U+P4OAMNMY Lc KkJsJ{IIHGFEDCCCBBBBBBBIOS Z^`^[$X/X<WIVT U^TgSoRvQ~POONMKJIIIIHHHHHLR X_ cdc_a)a8`E ^P ]Z[cZkYrXyWVUTSR P O ONNNNNNNNU [c g h g fi%i5gA eLcVb_`g_n^v]}\[!Y"X#W$U$T$T"SSSSSSSQW_fjlmmp"o1m> kIiSh\fdekcrbz a"_#^%]&['Z'Y'~X%}X"}X|W|W|W|W|WS Zbinqss uu.s;qF oPmYkajhhogw!e#d%c'b(~`*{_*y]*w\(v\%v\"u\ u[u[u[u[U \elqvxy{{,y9vD tNrVp^nemlkt"j|$h'|g)zf*we,tc,rb,p`+p`'p`$o`"o_ o_ o_ o_ V ^gouz~)~6|A yKwTu\scqj pq"|ny%ym(vl*sk,pi-nh.lf.je-je)jd%jd#jc"jc"jc"jc"X`jry&4? I|RzZxa}wh yuo#vtw&sr(pq+mo-jn.gl/ek/cj/di*di'dh$dh#dh#dh#dh#[cmv~ƃ#1= GPW{~_w|f t{m#qyu&mx~)jv+gu-dt/ar0^q0]o0]n+^m(^m%^l$^l$^l$^l$]fpz͂È /: D~MzUv]rdnk#ks&g~|)d}+a{-]z/Zx0Xv0Vt0Ws,Wr(Xr&Xq%Xq%Xq%Xq%_itʇ,8~B yKtSp[lbii!eq%az(^*Z-W.T/Q}0O{/Py,Px(Qw&Qw%Qw%Qw%Qw%bnyЄƌ(}4x? sHnQjYf`bh_o#[x&W(S+P-M.J.H-I*I(J&J~$J~$J~$J~$fr̉‘|#v1q<lE hNdV`^\eXnTw"P%L'I)F*C*B*B(B&C$C#C#C#C#jxӅȏysn+i7eA aK \SY[UcQlMuI F#B$?%=%<%;#<"N^m|))))()$,18ALWcnx+(,'*'&* /6 >IU`kt~.&/$.%*'$+2< FR]hq{1#1"1".$('#/ 9CN Ydnw3!542-#+,)6#@JU`j s { 68865 4(12-<'F"Q\fow 9<=;<<%:.681B,M(X&b$l$t$|##""!!  =@ABDC!A)=39=5H2T0^0h/q/y/////..-,,+++*****@CEHKKH$D-?7== < < ; ; ; ; FJ NT WVSLN*O8PEOPNZ Nb Mj LqLyKJIIHGFEDCCBBBBBHMRY[ [ V TW%Y4XAWLVV U^ TfSmRtR|QPONMLJIIHHGGGGK PV]`_^\_!`0`=_H]R \[[cZjYqXxWVUTRQONNN~M}M}M}M}MM RZ`cffd fg-f:eE cO bWa__f^m]u\}[YXW~V{TySxSwRwRvQvQvQvQOU]chkljlm*l7jBiL gUf\ddcjbr`y_~^{] y\!vZ"tY"rW"qWqWpVpVpVpVpVQW`flprpqr'q4p?nI lRjZiaghfo}ewzdxc ua"r`#p_$n]$k\$k[ k[jZjZjZjZjZSZcjquwvww$v2u=sG qPoWm_}lezkmwjtth}rg!of#le$jc%gb&e`%e`"e_e^e^e^e^e^U]fnuy||||!|/z;xE vMtU{r\xqcupkrnrom{ll"ik$fj%ch&ag'_e&_d#_c _c_b_b_b_bW_iry~ -8}B ~{KyzSvxZrwbouiltpisy fq"cp$`o&]m'[k'Yj'Yh$Yh!YgYfYfYfYfYcmv~*6}@ xI tQq~Xm}`j{ggzncyw`w"]v$Zt&Ws'Tq'So'Rn%Sm!SlSkSkSkSk\fq{Ń&}3w=sF oOkVh^deam]uZ~!W}#S{%Py&Nw'Lv&Lt$Ls!MrMqMqMqMq_kv̀{"v/q:mD iL eTb\^c[kWtT~P!M#J$G%E}$E{#Ez FxFwFwFwFwcp|Ȇy so+k7f@bI _Q[YXaTiQrM|IF C!A"?!> ??????iw΃Črjg%c2_<[FWN TV Q_MgJpF{C?=:98888888o~ʊma ]Y+V7SAOJLS I\ Fd Bn?y<96432211111xІő{jYQN"K/I:FDCN@W=a;k 8v 5 20.,,+*****ׂʏteUF@>"3+ (% #* 4?LYiz  vh[NC8.&" %.9 ETfyzk^QF;2)  &1=M`upaTG=3+" (4DWlvhZM@5+#  *:L_s%($(!)+07@IV`kv''&%$&)- 4<GS]hr{*$)#'#"%*0:DOZenw,", * %"%-7 AKVajs{/0.*#!"*3=G R]fow~232.,+&'/!9CNX b k s z 676343"0++5%> IT^gow~9;: ;<:7&2/-9(D&O%Z%c&l&s'z''''''&%%$$##""""<> > B CA<7(22/>1J2U3_3g4o4v4}44332210/..--,,,?B CH I GA:8+;9=E>P>Z>b>j>q>x===<;; 9 8 8 7 655555B EHMNK D @D&G4HAHLHUG^GeFmFt E{ E D D C B A @ ? > = < < ; ; ; E HMRSQNJN!P0Q<PGPQOZNa Ni Mo Lw L~KJIHGFDDCBB A A A GJQVXZXT VX,X9XDWNVV U^ Te SlRsQzQPONL~K|IzIyHxHxGwGwGwGIMUZ^`_\]_)_6^A]J\S [[ Zb YiXpWwVU}T{SyQvPtNsNrMqLqLqLqLqLKPX^cffbce%e3d>bGaP `X __]f\m~[t{Z}yYvXtWrVoTmSlRkQkQkPkPkPkPMS[bhklhij"j0i;gEfM dU c\}bczajx`ru_zs^p]n\kZiYgWfVeVeUeTeTeTeTOV^flpqnn oo-n9lBkK ~iS zhZwgaufhreopdxmbjah`e_c]a\`[`Z_Y_Y_X_X_XQYbjqtvts tt+s6q@}oI ynQ umXrl_pjfmimjhvggefbe_d]b[`Z_Z^Z]Z]Z\Z\Z\S\fouy{zyyy(x4|v>wuF tsN prVmq]jpdhokentbl~_k\jYhWgUeTcTbTbUaU`U`U`V_jsz~~~${~1v|;r{DoyL kxT hw[evbbuj_sr\r|YqVoSnQlOjNiNgOfOfOeOeOeXcoxz!u.q9mBiJ fR c~Y`}`\{hYzpVyzSwPvMtKrHqHoHmHlHkIkIkIk\ht}y so*k5g?cG`O ]W Z^VfSoPxMI}G|DzBxAvAtBsBrBqBqBqanzÃrkg%d1`;]DYLVT S\ PdMmIwFC@><;;|;{;y;y;y;yguʀnb^[,X7U@RIOQLZ Ib FkBu?<:765544444n|ƈ}jZTQ$O0L;IDFMDVA_>h ;s 8 531//.-----w̅wfVI EC'A3?==G:Q8Z6e3p0}., * ( (' & & % % % ҁƎpaRC8 53'220=.H-S+^)k'y%#!ˋxi[M?2' $"#!/:FSaṕ˔ɪŕ~oaSF:/$*6C Q asޜܴseXK?4*! %0=M_rxi[NB8.%  )6FZp}m_QE:0'  .>SitfXJ>2(   %5I_t ''(*/5=GS^js|"%!$%' ,29EO[fpx%##""$(.6BLWblt|( &## +4>HS^hpw~+*' '1:DOYcksz..+%# #-5 ?JU_gou|11.++)$(1:E P Z c k r x  55 3 3 30+"%+4?KU^fmt{88 7:: 60)""-$9'E)P+Y,b,i,p-w-~--,,+*))(''&%%%; <=@@; 2*/'245@6K7U7]7e7l7r7y7766543210//...>?BFEA;7;!>0?<@G@P@Y@a@h@n@u?}?>>=<;99876555@BGJKLGB EG+I8ICILHUH]HdGjGqFxF E D C B A ? }? |> z= z< y< y< y< CDKOSTRLMO'P4P?PIOQOYN`MgMn Lu K} K J ~I{HyFwEuDtC sB rA rA rA rA DHOUZ[ZTUV$W1W<VFUNUVT]Sd Rj Qr }Qz zPxOvNtMqKoJnImHlGlF kF kF kF FKSZ_a`Z[\ ].\9\C[KZSYZ }Xa {Wh xVo vUwtUqToSmQkPiNgMfLfLeKeJeJeJINW_dffaa bb+b6a@`I}_Pz^W w]^ u\e r[lpZunY~kXiWgVdUbSaR`Q`P`O_O_O_OJR[chkkhf gg(f4e>{dFxcNubU ra\ o`c m_jk_rh^|f]c\a[^Y\W[V[U[TZSZSZSZSLU_gmppnlkl%~k1zj;viDshLpgS mfZ jea hdhecpcbz`a^`[_Y]W\UZUYUXUWUWUWUWNXckquvtqp~p"yp.uo9qnAnmIklQ hkX ej_ cig`io]hx[fXeUdSbQ`O_P]P\P[P[P[P[P\gpvy{zv}vxvsv+pu6lt?isGfrOcqV `p] ]oe[nmXmvUlRjOiMgKfJdJbJaJ`J`J`J`Talu{}w| q|n|(j{3g{=czE`yM]xT [w[ Xvc UtkRsuOrLqIoGmElDjDhDgDfDeDeDeYfqzqkg$d0`:]BZJWRU~Y R}a O|jL{sIy~FxCvAu?s=q=o>m>l>k>k>k_lw~nc_\+Y6V?SGQONWK_ Hh Eq B}?=:}8{7y7w7u7t7s7s7sfs~|j[VS%Q1N:LCILFTD]Af>p ;{ 9 64211 0~ 0} 0{ 0{ 0{ n{yfVKHF*D4B>@G>P;Y9c7m4y1/ - + * * ) ) ) ) ) vȃtcRC<: 8,665@3I2T0^-i+v)'%##"!!!!!΀Œ}m^N@2-+ )+'5&@$K#V!c pNJufWI;/#'2>JXgw  {l^PC7+! !-:HXh{ѐΦqcUH<1' '5DVh}ufYK?4*!  .>Rf|zk\NB7-#  &7LbyrcUG;/% 0DZp&%&)-2:EQ]hqy$## %*/7BNYdmu} !  !%*4>JU`iqx#  (1;FQ\eltz&$ %-6ALW`hou{)'" )2<GR[cjpv|-+& # "$-7BLV^elrx0. *+)%& 0 ; FPYahnu{3 2020* !(5@ K"T#\#c$j$q%w%~%%%$#""!! 65685-&!&#*0,;-F.O/X0_0f0m0s1z000/.-,+*)((((98<==;5/ 25+778B9K9T:[:b:i9o9w9~98875432}1|0|0{/{/;;ACGFB;<?'@3A>BGBPBWA^AeAl@s@{@?>~=|<z;x:v8u7t6s6s6s6=?EKOOLEEG#H/I:IDILHTH[GbGhFoFw|EzExD vC tB r@ p? n> m=m<l;l;l;@CIQUVTNLNO,O7OAOINQNX~M^|LeyLlwKtuK} sJ qI nH lG jE iD hC gB fA f@f@f@BGOW[][US TU)U4U>TF}SNzSUwR\uQbsQjqPq oOz lO jN hM fKdJbHaG `F `F `E `E `E CJT[`ba[YZZ&Z1~Z;zYDwXKtWRqWYoV`mUg kUo iTx gS dRbQ`P^O\M[L[K [J ZI ZI ZI EMX`egfb___#|_/x^8u^Aq]Io\Pl[Wj[^hZe fYm cYv aX ^W\VZTXSVQVPVO UN UM UM UM FQ\dikkhdc{d wd,sc6ob?lbFjaNg`Ue`\c_c `^k ^^t \]Y[WZTYRWQUPTPSPR PQ PQ PQ IVahmppni{huiqh)nh3jg<hgDefLbfS`eZ^da [ci Ybr Va}T`Q_O^M\KZKYKWKV KU KU KU MZemruutpvn pnln&hm1em:cmB`lJ]kQ[kXXj` Vih Shq Qg{NfKdIcGaE_E^E\E[EZ EZ EZ R_jqwz{zwptitft"bt-`s7]s?ZrGXrOUqVSp^Pof Mno Kmz HlEjCiAg@e?c?b?` @_ @_ @_ Weow|~~m|b{_{\{*Yz4Wz=TyERyLOxTMw\JvdGum Dtx Bs ?q=p;n:l9j9h 9g 9f 9e 9e ^ku}{j\ WT%R0O9MAJJHRFZCbA~l>|w ;{ 9z 7x 5v 3t 3r 3p 3n 3m 3l 3l eq{xgWNKH*F4D=BE@N>W<`9j7u420. -~-{,x,v ,u ,u ,u lyucSD @>#<-:78@7I5R3\1g/r,*('%%%$$$$uÁp_O@4 20%./-8+B*L(W&b%n#}!zjZK=/$ " $.8CNZhwÉrcTF8,   + 7 BO^mxi[M@3('3@O`qņÛ}n`RE9.# ".<M_s܊ڣսsdVH=1' (7I^twhZL@4)  !2D[q~oaRE7,! +?Ul%$$'*08DP\gow~"! !$&,5@LXckry "(1<HT^gnt{%.8DOYbiou{! "*4?JT\djpv|$   %/9DNW^ekqw}'$  )3>HQY`gmrx* '!" !,7BKT [ b i o u | .*))$  %1<FOW^dkqx0-//+(!!,$7%A&J'R(Y(`)g)m)t)|)))('&%$#"!~!~!3056861( *-'/20=1F2N2V3\3c3j3p3x32210}/{.y,w+v*v)u)u)55:@BB=657"9.:9:B:J;R;Y;_;f:m:t:}}9z9x8v7t6r4q3o2n1n0n0n07:@GKKG@=?@*A5A>BGBNAUA\}Ac{Ajx@qv@zt?r?p>n=l;k:i9h8g7g6f5f59>FMQROIE FG'H2H;HD|HKzGRwGYuG`sFgqFnoEwmEkDiCgBeAc?b>a=a<`;`:`:;ALSWXVPLLM$M/|N8yMAvMHsLOqLVoK]mKdkKliJtgJeIcHaG _E ]D \B[A[@Z?Z?Z?=FQX\]\VRRR!zR,vR6sR>pRFnQMkQTiPZgPbeOicOraN|_N ]M [K YJ WH VG VE UDUCUCUC?JU\aba]W~WyWtW)qW3nW<kVChVJfUQdUXbU``Tg^Tp\SzZR WQ UP SN RL QK PJ PH PHPGPGCOY`egfc]y\ s\o\&k\0i[9f[Ac[HaZO_ZV]Y^[YfYXnWWy TW RU PT NS LQ KO KN KM KL KKKKFS^eikkidtanaja#fa.ca7a`?^`F\`MZ_UX^\V^dT]mQ\w O[ LZ JY HW GV FT FR FQ FP FP FP JXbinpqo~joghfdf af+^f4\f<YfDWeKUeSSdZPcbNckLbuIa G` E^ C] A[ @Y @W @V @U @T @T P]gnsvvu|qmnal^l[l'Xl1Vl:TlBQkIOkQMjXKiaHijFhtCg Ae ?d =b ;a ;_ ;] ;[ ;Z ;Z ;Z Vclty|}{zyjv[t WsTs$Qs.Os6Ms?KrFIrNGqVDp_Bph@or=n;l9k 7i 5g 5e 5c5a5`5`5`\irzxh~W|N{L{I{)G{3Ez;DzCBzK@yT>x\;xf9wq7v}4t2s0q/o/m.j.i.g.g.gcoyudTF B@$>.<6;?9G7P6Z4d1o/|-}+|)z(x(u's'q'o'o'okwq`QA864'2009/B-K,U*`(k&y%#! |zxxxt}m\L>/)(&($1#;!D OZgu~wgWH:-(1;FS` n  o`QB5)%0;GUduufXJ=0%#.:GWh{{k]OB6*   *7FXlсϙ̱paSF:.$ #2CXnteWI=1& ,>Un|m^PB4) ':Pi#"#$(.7CO[elsz!  !$)3?KW`hou|$/;GR[cjpw|"+6BMV^ekqw| '1=GPX`flqw|  ",6AJSZaglrw}!  %0;DMT[bgmsy$ *4>GOV]ciou|'! " - 8AJQX_ekry*$'&'$ (3<E M T![!a!g"n"u"}""! ~|zyxxx,*,242-$#&#(.)8*A*H+P+W+],c,j,q,z,}+{+y*w)u's&q%p$p#o#o#./5<>=82-01*243=3E3L4S4Y~4`|4gz4nx4vv4t3r3p2n0m/k.i,i+h*h*h*/3=CFFB<6 79&:0:9:A};Iz;Px;Vv;]t;dr:kp:sn:}m9k9i8g7e5c4b3a1a0a0a019CJMMJD>>?"@-{@6xA>uAEsALq@So@Zm@ak@hj@qh?{f?d>b=`<^:]9\8[6[6Z5Z54>IOSSQKED}ExF*uF3rF;oFCmFJkEPiEWgE^eEfcEnaDx_D]C[BYAX?W>V<U;U:U9U97CMTXYWQL|JvKrK'oK0lK8iK@gJGeJNcJUaJ\_Jd^Il\IvZHXHVGTERCQBP@P?P>P=P=;HRY]^\XRwP qOmP$iP-fO6dO=aOD_OK^OR\OZZNbXNjVNtTMRLPKNJLHKFKEKCKBKAKA?MV]acb^XrUkTgU!dT+aT3_T;\TB[TIYTPWSXUS`SSiQRsOR~MQKOINGLFJFIFGFFFFFFDQ[bfggd}_mZfZbZ^Z(\Z1ZY9XY@VYGTYORYVPX^NXgLWqJV}GUETCSBQAOAMALAKAJAJIV_fjllj{elb`_\_Y_%V_.T_6R_>P_EO_MM^TK^]H]eF\oD\{B[@Y>XbzjY0 -+!**(2';&D$N"X!dq~{yvtrqqs}zjYJ;-! "+4=GS_m} ~ |{{|tdTE7*  ! + 5?KXfv|l]N?2&   *5@N]lsdUG9-!  (3@OasxiZL?2'%1?PcyŒî}m_PC7+   !.>Qf~rcTF:.# *<Qhyj[L>1&$8Oh!!!"%,5BOYbipw}  &1>JT]elrx~"-9EOX`gmsx~ )4?IRZagmsx~ $/:CLT\bhmrx~  )3=FNV\bhmsx#-7@HPW]chnsz '1:CJRX^diov} *4=E L S Y _ e l sz  } | |{!"#  $.8@GNU[ahow~|zxvtsrrq#")/0.(! *"3#<#C$J$Q$W%]~%d|%kz%sx%|v%t$r$p#n!m kjjii$(28:94.& (*%+/,8,?~,F{-My-Sw-Zu-as-hr-pp-yn-l-j,h+f)e(c'b&b%a$a$&0:@CA=8002!2+{34x4<u4Cs4Jq4Po4Wm4]l4ej4mh4vf4d3c3a2_0]/\-[,[+[*[*+7@FIIE@97|8w9(t91q:9o:@l:Fj:Mh:Tg:[e:bc:ja:t_:^9\8Z7X6W4V3U1U0U/U/.<FLOOLGAz= u>q>$m?.k?6h?=f?Dd?Jb?Q`?X_?`]?h[?rY?}X>V=T<R:Q9P7P6O5O4O44AKQTURMHuC oCkC!gD+eD3bD:`DA^DG\DN[DVYD^WDfVCpTC{RBPBN@L?K=K;J:J9J8J89FOVYZXS~NpIiHeHbI(_H0\H7ZH>XHEWHLUHTTH\RHdPHnNHyLGKFIEGCFAE@E>E=E<E<=JTZ^_]Y{TlOdM`M\M%YM.WM5UM<SMCRMJPMROMZMMcKMlILxGLEKCIBHAF@D@B@A@@@@BOX^bdc_yZjV^S ZSWS"TR+RR3PR:NRAMRHKRPIRXHRaFRkDQvBP@O>N=LVu^T<]^;]h9\s7[5Z3Y2W1U1S1Q1P1O1NS_gnrttrtoflUhGe CeAe"?e*=e21lF0lO.kY-kc+jo)i~'h&f$e#c$`$^$\$[$[altzo~_{Oy?v2u 0u.u!,u*+u2)t:(tB'tK%sU$sa"rm q{pnljhedcbis{}l[K<-%#"~$ ~,~4~=}F}Q|]|j{xywuspnlkkq{wgVG9*%-6@ K X et|ywutt{qaQB4' %.8CP^myiZK<0# $/:FUdvpaRD6*#.:IYkvfWI</#   +9J^r{k\M@4((7J_xדկpaRC7+   %6JbzvgXI:." #5Jc| #*4ALV_fmsy$0=GQZahotz +7BLT\ciotz  '2<FOW]dintz  !,6@IPW^dinty &0:BJRX^cintz  *4<DLSY^cinu|$.7?FMSY_djpw  '09AHNTZ`flt|~|zxwvuu   *3;BIOV\bi~p|yzwusqpnml l k &+,*% %.7>E~K|QyXw^vetmrvpnljhfedccc&/5750*"!# $*|%3y%:w&At&Gr&Np&To'[m'bk'ii'rg'}e'c&a%`$^"]!\ [[[ .7=?>94-){+w,&t,/q-7o-=l-Dj-Jh-Qg.We._c.ga.p`.{^.\-Z,Y+W)V(U'U%U$T$&4>CFEA<6y1 t1p2#m2+j33h3:e3Ac3Ga3M`4T^4\\4d[4mY4xW3V3T2R0Q/P-O,O+O*N)-:CIKKHC=s7m7i8f8(c80a87_9>]8D[8KY9RX9YV9bU9kS9vQ9P8N7L5K4J2J1I/I/I.2?HNPQNI}Do=g<c=`=%]=-[=4Y=;W=AU=HT=OR=WQ>`O>iM=tL=J<H;G:E8E7D5D4D3D27DMRUVTOzJkDbA^BZB#WB+UA2SA8QA?OAFNBMMBUKB^JBhHBsFBEAC@A>@<@;@9?8?7?6<HQWZ[YUwPiK]G XFUF RF(PF/MF6LF=JFDIGKHGSFG\EGfCGqAF~?E>DKpQG=QP;QY:Qc8Qn7P{5O3N2L1J1H1G1E1D1CKW_eijjgsde`U\FX CW@W >W(=W/;W6:W>8WE7WN5WW4Wa2Vl1Vz/U-T,R+P+N+L+J+I+HQ]ekoppnrkdhSdB`;^9^7^%6^,4^33^;1^C0^K/^U-]_+]k*\x(['Z%X$V$T%R%P%O%NXckquwwupraoPk@h3f 1f/f .f(,f0+e7)e?(eH'eR%e\#dh"cv ba_]ZXWUU_jrw{~~~|my]wMs=q.o'n&n$n##n+!n3 n;mDmNmYlfktjhgdb`^]\gqyziY~I|:z,yx www&w.w6w?vJvUub tp s qomj h f e dpyudSE6(  '0:DP]~k}|{yvtqonmy~n^N@2%  (2=HVev|zxxvgWH:-  )4?M]n}m^OA3' (4AQcwsdUF9,   '4CUjyiZK=1% #2EZq΋ͦ~n^OA4( 1D]xsdTE7+ 0E]x '3?IS[cjpv{".:DNV^ekqv{)4?HQY_ekpv{ $/9BKSY`ekpu{  )3<ELTZ`ejou{ #-6?FNTZ_diou|'09AHNTZ_djpw~ !*3;BIOTZ_ekrz~|{{z #,5<CIOUZ`fnv|zwutrqpoo &/7 > D J P~ V| \y cw ju ss}q o m k i h gfee #()&! !*2|9y@wFuLsRqXo_mgkoiygeca`^]]\\$-231-'|x%u.r5p<n Bl Hj Nh Uf!\d!cb!l`!v^!] [ YWVVUUU,5:;:60)y# t$p%!m%*j&1h'8f'>d'Db'K`'Q^(X\(`[(iY(tW(U'T'R%P$O"O!N NN%2;@BA=82s+l*i+e,&c,.`-5^-;\-AZ-GY-NW-VV.^T.gR.qP.~O-M-K+J)I(I'H%H$H$,8AFHGD?|9n3f0b1_2#\2+Z22X28V2>T2ER2KQ3SO3[N3eL3oJ3|I2G2F0D/C-C,C*C)C)1=EKMMKEy@k:`6 \6Y6 V7(S7/Q75O7;N7BL7IK7QI8YH8cF8nE8zC7B6@5?3>2>0>/>.>-6BJORRPKvFh@[< V;S;P;%M;,K;3I;9H;@G;GE<=;;9:8969493:2:1;FOTWWVQsLfGXBP@M@J@#H@*F@1D@7C@>B@E@AM?AV>A_5<5:58575655?KSX\\[WrSeNVIKEGEEE CE(AE.?E5>E<0=0;0:09EPX]aa`]qYdUUPFK AK?K=K%;K,:K38K:7KA6KI4KR3K\1Kg0Jt.J-I+G*E*C*A+@+>+>JU]bfgf~dp`c]TXCS;Q9Q7Q"5Q*4Q02Q71Q?0QG.QP-QZ+Pf*Ps(O'N%M$K$I$F%E%C%CP[bhkml}jogbdR`A[4X 1X0X.X&-X.+X5*X<)XD'WN&WX$Wd#Vq!V TSQNLJIHWainrss|qnn_kOg?d/`)_'_&_"$_*#_1"_9 _A_K^U^a]o\[YWUSQPO^houxzz{yku[rKo0$  #.;J\oqbRD6)".<NbzwgWH;."  .>Riǃß|l\M>2%-AXqqaQB5( +@[x%0;FOX`fmrx} +6@JSZagmrx} &1;DMT[bgmrw}  !+5>GNV\bglqw}&/8AHPV\afkqw~ !*2;BIPV[`ekpw$-5<CJPUZ`ekry '/7>DJPUZ`flt}~{ywvuuu  !)18?EJPU[a}h{pxyvtqonlkjii #+39~@|EzKwQuWs]qdolmvkigecb``__ %%#  { &w -u4r;pAnFlLkSiYgaeicsa_][YX W W V V "*/0-)#z uq!n)k0i7g=eBcHaO_V^]\fZpX|VTRQPOOON*27862-&slif%c ,a 3_!9]!?[!EY!KW"RV"ZT"cR"mP"yO"M!K JIHHHH$19=?>:5{/n(e$a%^&![&)Y&0W'6U'<T'BR'HP'OO(XM(aK(kJ(wH(F'E&C$B#B!B BB*6>CEDA<w6k0_+ Z+W+U+&R,,P,3O,9M,?K,EJ-MH-UG-^E-iD-uB-@,?+=)=(=&=%=$=#0;CHJJGBt=g7Z1T0Q0N0#L0*J00H16F1<E1CD1JB2SA2\@2g>2s<2;1:08.8,8+8)8(8'5@GLOOLGrBe=W8N5K5H5 F5'D5-B53A5:@6A>6H=6Q<6[:7e97r76654433313/3.3,3+:DLQTTR}MpHcDV>I: E:C:@:%?:+=:1<:8::?9;F8;O7;Y5;d4;p2;1:/9.7.5.3.2/0/0>IQVXYW|SoObKTEE@ @?=?;?"9?)8?/6?65?=4@E3@M1@W0@b.@o-?~+>*=);(9)8*6*5*4CNU[]^]{YnVaRSMDH:D7D5E 4E'2E-1E40E;.EC-EK,EU*Ea)Em'D|&C$B#@#>$<$:%9%8ISZ`cdc{`m\aYSUBO4K 1K/K.K$,K++K2)K9(K@'KI%KS$K_"Jl!JzIGECA?>=OY`ehjizglc`aP\@W1S*R(R&R!%R($R/"R6!Q> QGQQQ]PjPyOMKIGEDCU_flopoynlk]hMc=_.\"Y YYY$Y+Y3Y;YDXNXZWgWwVT R P MKJI]fmruwwxuiqYnJk:g,ecbaa a'a/a7 a@ `K `W_d^s][YWUSQPemty}~~u|dxTvEr6p(nl k kkj"j*j3j<iGiSh`gofdb_][YXmv|p_O}@z2y$wv uuuut%t-t7sAsNr\qko|nkifdbav~yiYI;-  '0;~G}V|ezwyvtromlrbRC5( (3@N_q~|{zyiYI;." )5CTg}o_PA4' )7H[qtdUF8+(8Kc}zjZJ</" );Qj߅ۤo_O@3& (>Wq"-8BKT[bintz (3=FNV]cinty  $.7@HPW^cinsy(2:BJQX]chmsy#,5=DKQW]bglry '/7>EKQW\afls{!*18?EKQV[afmt}~}{{z$,3:@FKPV[agox}zxusqpooo &-4:@FK~Q|Vy\wcujssp~nlihfeddc  '|/z5w;uAsFrLpQnXl_ifgoezca_]\[ZYY""  }xt"q)n0l6j <h Ag Ge Mc T` [^ c\ mZ xX V U S RQQPP (,-*& tmjg$d+b1`7^=]C[IYPWWU`SjQuONLJIIHH H (0453/*z#nea^ \'Z.X4V:T?RFQLOTM]KgJsHFDCBBBAA#/7:<:72v,j%_ ZW T $R *P!1N!6M!<K!CI"JH"QF"[D#eC#pA#~?">!=;;<<<)5<@BA=8s3g-Z'S%P%M%!K&'I&-G&3F&9D'@C'GA'O@(X>(c=(o;(}:'8&7%6#6!6 66/:AEGFC}>p:d4W.M* J*G*E+$C++A+1?+7>+==,D<,M:,V9-a7-m6-{4,3+2)1'1&1$2#2"4>EJLLI{Dn?b:U5H0 D/A/?/"=/(;/.:/480;70B61K51T31_21k01y/0./-.,,,*-(-'-&8BINPQNzJlEaAS;E6>4;49474&64,44235925@15I06R.6]-6j+5x*5)4'2'0'.(-(+)*=GNSUVTyPlK`GRBD=99 694929$19*/90.:7-:>,:G*:Q):\':h&:v%9#8"7!4"3#1#/$.BLSXZ[YxVkR_NRJCE4? 0>.?,?!+?(*?.(?5'?<&?E$?O#?Z"?g ?u>=;97543GQX]`a_w\jY_VRRAL2G)E(E&E%E%#E,"E3!E:ECEMEXDeDsCB@><:98MW^cegfwcj`_]OY?T0O#L LLL"L)K0K8K@KJKVKcJqIHF DB@>=T]dilmlvjjh\dL`<[-X USSSS&S-S5S= RG RS R`QnPOMKHFD C[dkpstsvrgnXkHg9c*`^\ \ \["[)[1[:[DZPZ]YkX|VTROMLKclrwz{zsxbuSrCn5k'ig feeee%d-d6d@cLbYah`x_\ZWVSRltz~m~]{Mx>v0t#rqpp ooo n(n1n;mGlTkcjthfdb^]\u}wgWG9~+}|{zzz zyy"y+y5xAwOv^uosrnljifo_O@2%  $.9GWi}~}ywutwgWG9, $/=Nau}m]M?1$ $1ATirbSC6( #3F\uxhXH:, #5JdҁѠο}m]M=0# %9Qk*5>GOW^djpu{ %09BJRY_ejou{  !*4<DLSY_djou{%.7?FMSY^cint{  )19@GMSX]bhnt}$,3:AGLRW\bgnv &.5;AGLQV\bhox}zxwvut!(/5;AFKQV\c|jzrw}trpnljiii #*06}<{AyFwKuQsWr^oemnkxhfdb`_^^^ ~y$v+s1q6o<mAlGjLhRfYdaaj_t][YWVUTTSw rnk%h,f2d7b=aB_H]N[UY]WfUqR~QOMLKKJJ&)*'#zogc ` ^ '\ -Z 3X 8V >TDRJQROZMdKoI|GED C B BBB&.120,'u!j_ ZWU#S)Q/O4M:L@JGHNFWEaClAz?><;;;;; "-48973~/r)f#ZROMK%I+G1F7D=BDAL?T>_<j:x97655556(3:=?>:{5o0c*W$M HF D "B (@ .?!4=!:BDC@y;m6a1T+H&B$@%=%;%%:%+8%17&86&?5'G3'P2'[1'f/'t.',&+%*#*!+++3<CGIIEwAk<_7R2E-<):)7)5)#3)(2*/1*50+=/+E.,N-,Y+,e*,s(+'*&)%'%%&$'"'!7AGLMNKvFjB^>Q9D48/ 4.2.0. /.&-/-,/3+/;*0C)0L'0W&0c$0q#0"/!- + *!("&"%<ELPRSPuLiH]DQ@C;55.3,3+3)4$(4+'41&49$5A#5J"5U 5b5o4320.,+*@JQUWXVtShO]KPGCB4=)9 '9%9$9""9)!9/ 97:?:H:S:`9n9~86420/.FOVZ]]\tYhV]SPOAI2D$@ ??? ?&?-?4?=?F?Q?^?l>}=; 9 7543LU\`ccbt`h]]ZNV>P0L"HFFFF#F*F2F:FD EO E\ EjDzCA?=; 9 8R[bfijisghdZaK\;X-TQN M M M M'M/M7MAMLLYLgKwIHECA?>ZbimpqpsnekVhFc8_)\YWVVVV$V,U4U>UITVSdRtQOMJHFEbjptwx~wqu`qQnBj3g%ec a` `__ _(_0^:^E]R\a[pZXUSPNMjrx||~l{[xKt=r/p!nlkjjjii#h+h5hAgNf\emcb^\ZXVs{ueTE|7z)ywvuut ttts&s/s;rHqWphn{lkgecb}~m]M>0#  (3A~P|b{uywuqonteTE7) +8GYm~}{j[K<."  ,;Nd|p`PA3& .@UmvfVF8*0F_zșŷ{k[K;.! 3Kg '1;CKSZ`flqw}  ",5>FNU[afkpv}'08@HOU[`ejpv}"*3;BIOUZ_djov~ &-5<CINTY^cipw (/6=CHMRX]cipy~|{ #*17=BGLRW]cjs}|zwusqpoo %,17=BG~L|QzWx]vetmqwoljhfedcb&|,y2w7u<sBqGoLnRlXj`gherc~`^\ZYXXX   }xs!p'm-k2i7g=fBdGbM`T^[[dYnWzUSQPONNN zr mie"b(`-^3\8Z=YCWIUPSXQaOkMwKIGFEEED$''$ uj b ]ZX#V)T.R4P9N?MEK LI TG ^E iC uA @ >==<<<%+//-)|$qf[S P N L$J*H/F5E;CABI@Q>[<f;s9765 5 5 5 5!+25640y,n&b WL HFD!B&@,>2=8<>:F9O7Y5d4q21/..///'17;<;7w2k-`(T"HA?=;#9)8/655<4C2L1V/b.o,+)(()**-6<@A@=u8j3].Q)E#< 864 3 &1 ,0 2/!9.!A-"J+"T*"`("m'"}%!$ ##$%%1:ADFEBs>h9\5P0D+8% 2$0$.$,$#+$)*%0)%7(&?'&H&'R$'^#'l!'| &$"   6?EIKJHrCg?[;O6C26,-)+)))')!&)'%*.$*5#*=!+F +Q+]+j+z*)'%#" ;CINPO~MrIfE[BO=B964(/ %.#.".!.% /,/3/;/D0O0[/i/x.-+)'&%?HNSUU}SqPfLZIODB@4:&64444#4*41494B5M4Y4g4w3 2 0 .,*)DMTXZZ}YqVeSZPOLAG2A$=: :::!:':/:7:@ :K :W :e9t87531/ .JSY]``|_q]eZ[WMS>M/I"EA @ @ @ @% @,@4@>@H@U@b?r><;8643QY`dfg|fqdfaY^IY:T,PMJH HHH"H*H2H;GFGRF`EoECA><:9X`fkmn|mqkdhUdE`6\(XUSR QQQP'P/P8OCOON]MlL~KHFCB?`hnruu|tor_nPj@g2d$a^ ]\ [ZZY#Y+Y4X?XLWZViT{SPNLIHipvz||z{jxYtJq;n-lihffe eddc&c0b;bGaV`f^x\[WUTRry~sc~R{Cx5v'tr qppoo onn!n*m5mBlPkaitgeb`^]{|k[K<.!}|{{{zzz zzz#z.y;xJw[vntqpljirbRC4'  %2ARg~}zwyhYH:,'6I]tn^N>1# ):OhtdTC5'  ,@XsyiYI9, .Gc  $.7?HOV\bgmrx )2:BJPW\bglrx#,5=DJQV\afkqx '/7>EJPUZ`ekqy#*18>DJOTY_dkr{ %,29>DINSX^dkt~}{yxvu '-39>CHMRX^~e{nywvtqomkjih "(.3}8{=zBxGvLtRrYp`nhkri~fdb`^]\\ }y#v)s.p3n8m=kBjGhMfSd[ac_m\xZXVTSRQQ  }wrnk#h)e.c3b8`=^B\HZOXVV_ThQtOMKJIHGG um hc`]$Z)X/V4U9S>QDOJMRK[IeGqECA@??>>!$$"{pf ] XURP%N*L/J4I:G@EGCNAX?b=n;|:877666#),,*&x!mbWN JHF D&B +@ 0? 6= << C: K8 U6 `4 l3 {1 0 ///// */331-u)j#_SHA?<;"9'8-62593@2I0S/^-k+z*('' ( ( )&/58984s/h*\%QE; 8542$1*/0.6->+F*P(\'i%x$"!!"## ,4:=>=}:q5f1Z,O&C!81/-,!*')-(4';&D$N#Z!g v09>BCB|?p;e6Y2N-B)7$, )'%$$# +" 1!!9 !B!L"X"e!t! 5=CFHG{EoAd<X9M4A/6+*& #$!$ $$"$)%/%7&@&J&V&d&s%$" 9AGKMLzJnFcBX?M;A662)-) ))) )'*-*5*>+H+U+b*q * ( ' % # !>FLPRQzPnMcIXFMBA>59'4/ ..//$/+/3/< 0F 0R 0`/o/-,)'&$CKRUXWyVnScPXMMIAE2?$:75 5 5 5" 5)515:5D5P5^4m4~21/,*)IQW[^]y\nZcWYUMP=K/F!B> < <<< <'FLRX]chms{  )19@FLRW\agmt| $,3:@FLQV[`fmt~ &.4:@FKPUZ`fmv~| "(/5:@EINTY_goy|ywtrqpo $*/4:?CH~M|SzYx`uisrp~nkigedcb%|*y/w4u9s>qCpHnMlTj[hcelcx`^\YXWVV |xsp%m*j/i4g9f>dCbH`O^V[^YgVsTRPNMLKK xr mie b%_*]/\4Z9X>VCTJRQPYNcKnI|GEDBBAA{phc^ZW T%R*Q/O4M9K?IEHMEUC_Ak?x=;:9988!!wlaY TPMJ!H&F+E0C5A;?A>I<R:\8h6u4321100!'*)'#si^S J FC@>"=';,91876>4F3O1Z/f-s,+*))))(-00.|*q&f![PE< 97 5 4 #2 (0 ./ 4- ;, C* M( X' d% s$ # " """"%-3664z1o-d(Y#NB81 .-+*%(*'1&8%@#J"V bq   *28;<:y7n3c.W)L$A 6, (&$#""(!. 6>HTao /7<?A?x=l8b4V0K+@'5"+" %,4<FR_n3;ADEDxBl>a9V6K2@-5)*$ # * 2!:!D!P!] !l !}    8?EHJIwGkD`@V=K8@450*,'$$$$!%(%0 &8 &B &N&[&j%{$#!<DJMOOwMkJ`FVCK?@;57'2-* * * * *&+.+7+@+L+Y+h*x)'%#! AIOSUTvSkPaMVJLGAC2=%84 1 0000%1,151>1J0W0f/v/-+(&%GOUY[[vYkWaTWRLN=H/C!?;8 8777"7*737<7H6U6d5t420.,)NV[_aav`l^b\WYHT9O+JFCA@ ??> >(>0>:=E=S`/]"YWTSR QPPO!O*N4N?MML\KmIHECA?fmquwwwvfrVnFj8g*db_^]\[ [ZYY%X0X;WIVYUjS~QOLJHouz}~~o{_xNu@q1o$mj iggffe edd c*c6bDaT`f^{\ZXTSx~xhW~G{8x*wusrqqqqpp ooo#o/n=mNlajvhfdb^o^N>0#}}||||||| |||'|5{FzYyowtrpoueTD6'  +<Pf|kZJ;, 1E\vq`O?1#"5MivfUD5' '=WtΕʽ'08@GNTZ_djov}"+3;BHNTY^ciov~ &.5<BHNSX]bhow!(06<BHMRW\bhpy #*16<AFKPU[ahq{~|zxw%+16;@EJOU[b~j|tyvsqnlkjj  &+0~6}:{?yDwIvNtUq\odmmjyheca_]]] }y!v's+q0o5m:k>jCiIgOdVb^`h]sZXUTRQPP|wrnj"g'e+c0a4`9^>\DZJXQUYSbQnO{LJHGFEE {sl hc`\"Z&W+V0T4R9P?NEMLJTH^FiDvA?>=<;;  vld^ YUQO"M&K+I0G5F:DABH@P>Z;e9r8654332}rh ]TP KHEC"A'?,=1;6:=8D6M4W2b0o/-,++++%''$z!oeZP FB><97#6(4-2319/A-I+T*`(m&}%$$###&+..+x(m$cWMB 9 530.-$+)*/(6'>%G#Q!^ k{$+1342w.k*a%U!K@6- ) ' & $ # &! , 3 ; DP\j {  )16897v4j0`,T'I"?5+" #)19BN[iz    .5:=><u:i6_1S.I)>%4 *  '.7@L Y g w 29?BCAt?h;^7S4I/>+4'*#  % , 5 >JWeu6>CFH~GtDhA^=S:I6?25.+*%    #!+!3"="H"U"c!s!;BHKM~LsJhG^CTAJ=?966(0,'%&&&"&)'1';'F'S'a&q%#"@HMPR}RsPhM^JTHJDAA3;%62 .- ,,, ,',0,9,D,Q,_+p*(&$" FMSVX}XsWiT_RUOLL=F/A!=964 3333%3-372B2O2^1n0/,*'&LTY]^}_s^i[`YVWGQ8L*GC@=< ;::9#9+959@8M8[7l6520.+T[`de}ftejcaaQ\BW4R&NK HFED CBA A(A2@=@J?Y>j=};9753\cgkm}mtlkj[fKb<^.Y VSQONM LKJJ%J/I:HGHVFgEzCB><:dkost}tuteoTlEh6d(a^\ZYXWV UUT S*S6RCQRPdNxLKIEDmsx{|~{nx^uMr>n0k"igeccbba` __^%^1]>\N[`YtWUSQNw|vf}U{Ew6u)sqonmmmllkkjjj*i8hHgZfoda_^[~m]L=.}!|{yyxxxxwwwwww"w0v@uSthromkjtcRB3%  &6J`y}{zziYH9*+?Uoo^M=/!1IctdSB3%"8QpÓ#,5<DJPV[`ekqx '07>DJPUZ_djqy"*18>DIOTY^djr{ %,28>CHMRW]cks~ &-38=BGLQV]dlv}zxvtrq "'-27<AEJP}Vz]xeuos{pnkhfedd#}(z,x1v6u;s@qEpJnPlWj_ghetb_]ZXWVW |wtp#m(k,i1g5f:e?cDaJ_Q\YZcWnT{RPNLKJK~wq lheb#_'],\0Z5X:V?TERLOTM^KiIvGDBA@??vmhc^ZWT#Q'O,N0L5K:I@GGEOBY@d>q<:86655 | qg_Y TPLJG"E'C,B1@6><<C:K8U6`4m2|0/.--- xnd YPK GC@=;#9(7-62483?1H/Q-]+j)y(&&%%%#$$!vkaVLC> :7420$.)-.+5)<(D&N$Z#g!v $)++)t%i!_TI? 62 .+)' &%$+#1!9 ALXet"*/11~/s+h(^#RH=4+ & # "(.6?J V ds'/467}5r1g.\)Q%G =3)      % , 4= H T b r    ,38;;|:q7f3\/Q+F'<#3)     " ) 2;FR`p   18<?@|?q<e8[5Q2G-<)3%)!    (09DP_n 5<ADE{DpBe>[;Q8G4=04-+)% &.7BO]m:AEIJzIpGfD[AQ>H;>754)/*%" """"$",#6#@#M#["k!} ?FKNOzOpMfJ\HREIB@?3:%50 ,) ((((#(+(4(>(K(Y'i&|%"!DLQTUzUpTfQ]OSMJJ=D/?!:631 0/..!.).2.=.I-X-h+z*(&$!KRW[\z\q[gY^WUTGO8J*EA=:87 6555&505:4G4U3f2x0/,*(RY^bczcqbh`__PZAU3P%LH EBA@ ?>==#<-<8@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mft1!  !"#$%&'()*+,-./012456789:;<=>?@ABCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~񪌫ۊa۶iUֆAaߖg\;~cibvBAj+0}" d[dgܿδӟr<@\12d&(WuD{ܳX7pѣxWH;_¸ܼаaDXhC9sB6 ix qjbT$WЧwF$Gۯ[?)7ܽkZS̾ҳǢhM3ڪ~V3c҆S%FB -bznTcYQ^G HÝdG3 AƲp[M;Aô˪x_GGϟuR3%j;|UbjI4c"8dy5qmUA1!n׼zk\PD3nȻë~eLqѢzY=# Xܓ]0 79/Ps`N(>R0{#O/  {ri_TE4Ӽy]絎oU=% a4uu+Vy: ! I|qnb Y;QpM JQHE?Ȩ|viYIݴz`I3ByI#%+_|kT@.En1`1|=#)wƼxT7!)w=Ia/TtDxoi\ Q0FZ=5.[*%rVh%;Oe~ܱ{tomlls~6Pj[R;&Ft6^KB p(Cb󒡶aF2# REypbUAJg@6.I%|,y M?8Z#7I\q˭uja[UPKJLQ`xW/8#?}'Pv%P}'a) x 0Ga}ŻuYC1"&/u2g_[QF6=]4+*"[ hG5PnFASdv鼟}qg^XRMIGDGRd3 ;n%Kp6aW-8T$5H]tǽy_L=0' &O>}s;gc]T$KIBq8%-V!%2Lv-C\wlhzƥ|tmhc^YVTV\l0@O{>c9c* &?k$=XwK9J[lŽxcUIB<72.*'%&+4Kpf4\ -wRmyb;-Iq /JjH+;MavԪ~|{}E6,$  BwP+{(Mq,R"Bc/LmS ,>Qhu}tmhda_^]^chv) %[J q*N7q@e8 <[h );Pgdx˽aZUQONMMORZez)JPjt*Qt6?gY5Sv(1EZsltPLIGHIJLSYh|<.\`Ak߂) 9VwK/CXp҄xUIJMRY^pV0Jhp>^y򣅦desc Little CMS Little CMSdesc2.x 2.xlcms2-2.5/testbed/toosmall.icc0000755002406300000240000000023612163060730015673 0ustar mariamauserslcms prtrGRAYLab   acspMSFTlcms-lcmsdesccprtX"B2lcms2-2.5/testbed/test4.icc0000755002406300000240000016713412163060730015117 0ustar mariamausers\lcms spacRGB Lab %acspMSFT-lcms4V*Lm,W!֌] desclA2B0ttA2B1uB2A0w8t4B2A1lrig0h wtpttcprtPchad,dmnd2dmdd8$mluc enUSPTest profile, not suitable for real usemAB  PsparaparaparaparaparaparawyBRn aJe zT]oVvPO8RHBɢ=D: 6N#2&?.(*,P%/а xX0z|g~s#8jeWa*YLQJaD]"&>& :(B7P*A3-0N0z,@3|(S6F$o~rQ8uxAyoX[~Df(]. QT"Mi%F(ה@+<|.81-4441m7<-:*`<9&gui!k~ 5pt!tk"$fya'LY)P,GI.錶C1ʐ>4:-6B5:!2b=/@5+C`(q)_R*(`'\aV(e0{v(i4p+ng~.s^,0z-Uc3>MZ5̈́F7@Q9m;<7D@n4Ce0wFT-IH)6QVk51W3X1Z탑0^*x2rcm57hd8Gn[ :TtR)v~DsA? D:JGp46YI2PLu.O+AN.AO?O=rP9R`:Wv/<]j?-c4`Ai^WCoO$F6u_H2IzBK!=;Nd8P׈v4jS&0MU3,sMFLF]2LFȞIGMEGEK0DPNstFVgH]\KYdST MjLPKpES+v?V{;^Xrw6Z82\ׇ.V[>\??ǮY?TV>Re=vP?]NCB}O"HpPRQcS*XYU_JQ7XSeJKZl"C]r9>R`OwE9bd{5dOP0oi)9Rh9/g8̮He 7B(an5]568[t6Z$:|{ZBn\L~`^*SWKaZO`baHNegBJhsm YgEPʕKI',E|<,J,QT!+*)b(իk'&9:&Ϙ&.v'v*{-w/]o 6c>SXݝODhP$S)Ȼ*>)(?Zi' i%ϭ?$.#ѭ "]" "#bh%$4*>x0/OnQ+6b̥5={Wk1 {S wrɑRjIΔa Z?xRl)'KTE @P"1B/6>512G4੏.7˫ *:^'uYw xᅤ{6|  s_"SNj$`&KRX(Pf+0J."hC10>A4 :c6693Y;Ƥ/>H,AA)I%mo&p'r[(ux*-yjo,H~Tf .2\/ׇTr2]8M65;yG7h@:<8=38F?4B61E/-G *m/f:1g1tiވ2@l3sp uY4et k6xbr8X~XY:43Q2yD!:dFw6zHf2Kq/N'+<^` =_>t`Ӑ=Mb.SR^RqT̃AR2XwSH^lScbUPiYWsooQY(tJ[zC]U >6_! 9`5"b$0`FaGdaGawH`HJ_~KB_EO;]USt]GYoi^_^`dVajROcpRHehucAgIz@eM;nksFpp@qu:szV5z{ sB$}ErHos{OgcsUZ5tZR"va/Kx8fEyl^>{q8ۆ+9!¤v98ps8涾\8u F7ݪ7#[677r9,~=g{'}cC4mF}Jh`~zPW~VWO܀]"IÂxcCyh<6T7O6*p5޴5 4U3'3FA3z l5߅9x@jj҇G!^NVKOSNYH\_AR5Ū5l4ט4 3S3E2z1ez1 1,4W'a8pu_{>h瑢En]}LUE{QMWRF֠s3c3)3=13312ӳ2q=1tv16 0›01Oi4Bj8s>|g/D\JT@P L1Ǩ2)1L1rϨq0\F0o0/b6..2/013|7aq2$=eģxC[pDIRد/ȵ<0vj0e65/Ĺ˰.ֵ-ױ9-nX,dk#+_+ZQ+m,D/N12zc6o<dBZ5dw:e"w2n Uf$]mUN I!#BC %><(W:R+Ѯ6.C31̱/r4+X7G'-Ɍ?{?*rrC '$il!`#{X%/Pe)NI+ܣC.E>0Ƨ;3~C76\4,9S0<9W_65a'0X8TZV-U\.WmR\Xȗ\-Z9[]4[`ze[dp\MiOf]m^^s1U`nxN"b'}'Gxc܁@eh<gO7ch2dM0g[NJhP~iQGhRkgTBfVσMf8Zwfe_lfdpcgi/[fB>󼨋?bJ@e@Њ@2@kCA# PCE}=K!pQ[dV[҇*[TPbaMNftF‹k?E;S7<5<5B<>˔<6< ;Ρ_<&<2?(yBz;GnuMaPSyYʑGXRd]KcDtr9˜:69)9!B9ű#9U9J89ߙ9f:X V Q![IL7v77Ӥ77÷7&7Z7#JC6x67X=8H+;Q?;t衧DtiJ^O&VSO"56365͹P5y5 w4磌45H4}4֘]53 6ڇ9%~%=KsBhG]qLTƳ"3h+G4Ă4_=43&q3!2άȲ2[2X2fns2U3Y5O]7p{;q@fıAE\HDy%X{ߛ sQZja< wY"RZ$vL"'AF)5?,</$a8u2}45Z=183I-; a*jpI I"5S~#ٓvw%Zn& d(h\'+S-MlL/ĦxF21@x4㪾<7ìF9^:6=ʮ2@/pC,%ׅU(r9*у,bz-{q/!h1Ob_3.W5KOs8_H:rmB[<ɤ=?Y:sB^7D3G30aIK-.k~ 0~3Ј6q7cw8m:Jd<[=S?ZLhB#ED,?G<Ik8K5ND1Ph."8ur;Wv=wn?xA{}"B~ysCӂwjDE,Ta8FXH`PJfJ>L|SCNy>vPQ:S?6Uo3 W/lD)mJ;FmHnJpKr2LuiyMxpJN|gJP_^QeV?SNTH:VAXՔ=Z͗9\Ӛ[5^1OdRe=TfěUgVjWxlcXovXswmrYwdZ{\\mS]L_;Fnm19nI4h4T3kUZlVݧnoWnY}m[,m]mkavzqme3pkn0iXgoFm^_-p~rOWaqvOs{lItB_uɃQntVcu҂[8k_aلVd=Z-bhRΆmKrE7wo>0C{ҎD`E(EtF):F!GaH qJOd L~9Qs\\\U˙a5Nj)fFP[=]>U>z>nG>:>\>ɥIX>۟ ?PA?Џ1CnYG0ySKn7GPaUZZSѣ^K;Rɳ;%< {<}_<z<R< q<GF@DwYIl)NX`iSXݪX0P9<ʦj9Ė9S9غ9Q9o99{9ݮt:1:< =^B\uFjmOL_wPVQ6G7vH8'7J79h7xO7P7HI7>d7d07Ŗ 8E9v<}n?s=YDzhI]Ě?c9+E w"o#?f$e?^5&RcV(XN+H-/B04> 1wf:u4)68!3;0>߸,#r0[&(*I)Θ}{'+r,Oi-_/X 1f9O3I6PHC]9>< S;? r7A4D<~15F-+%<.0/,2~3&v51m^6d*8\>[a:WRåEA ?CM.3l6W9(;m郦=pz>GSqw?ސhmAl_CWDOmG;XHI9BK> N:PHC7R3T۪//<}S,Wu\LkX`_byd[5hTBlLrDDy˳7E FhFݜ}GGH{Id֜XJuߜHL[O3}Ss SXhОJ\_C`XdQj/HoAjBBݤCPbCDߤDWD EhF{zI(L?{0]OpUAf1Y]]V bM4}>~?}IJ?ؾg?\@,>S@d!@AޫA9B_C E?sIjx M>naRscV[\P10"S>iGB>h9?~H@:BFvߴJlwOaaTXb:#Ź/:2;;ýu;k;;»;ũ,m;䣗I< <<*<@p~ Cu`H=jMU_6" $&mۄ'|({at)\l*>c#+Z,Rs.rL0-$F*3@r4<9D8<)5r?2 BX_.*$',ܚE.E 0N1MwY2:,n3te4ڨ\6WgT?8IL:F-JȮG:MTx7iO4Qޱ08[Hi;n>@ֆBu~-D6uEmFטd HO[_JS L)L3NJFPf?RW IY/C][T>o\Y:^ۦ!7`3I}kM}HP}S~hyUXY;weZY nt[Ge\ߍ]`^-U`1N?aژ9Gc4AceFn:M?oǙ;Jq6`krdl6|gZlNim˜ko#^lpދmr݃5nuzQoxqap|hrVz`sjGXtQ#uJeww_Dx>Gz_8mbpcsOdΪuevg wh1xjVyfmzplw?zsno{wfC}z^@~e~@V́OpH܉B,a:<yKZi|:[ظ#]3^q{_$`ИRb~"eSg}Äk(tCnkr6cu\?yyT}RMOF1?RJTV2WBX^%Yv[ b\_Pbzefqqih䑩mjaq!Y”[tRr=yK<}CMē Na]OyLMqӡNN<硚OP:PLR7U~YOuy<]^kRa$cRre[ͧ"hT\mL EͨFŌ{GEHШHI2IȦ(GJozwKrLeNJQ|U%rYik ]`ƮqaXްf9PiC CDF[D寋DwTEjkEFrrG& HZI?豞K7}MzQ1pVgZ^>_JT@q @Z}AT|tAŽB BV&B%>C_CD'GDޓ[FC_)HEPKJxKNnz3SdXZ=X}>+>Đ_?\h?|[n?G?ǰ1%@h\@>o@AAECA%E6n-GwKlPa*ew,|-.t/^yg/ٰ=q'0h0dr_10W2+O4 KI7C8ɽ[>=(:@V]7PC3EǾ0R1.L3:$5j7"w8<,|:9t93k;:ӭa; Y<ƱPS>J9ADC4?FE;H8TK\~4M1U75΢:o=h ?߇@ ASvBznuCdD\$FESH!LjJ]F"Lv?NSYbl:[7K]Ͱ3AEfIHL/OEQَS~l, :m6qX?}\}P_}b}ϙey~{PaØ~bƁd*qe4^f'NDg!Xhk/mapwfsnڌpvfz _,:}WɁPLI,BYȻ[S\%0]˯w^ܧ_|ac ɓe~h0}/kwtInl,ordluZ\ܚ9xU||N#FS̑T~lUH:WX*Y>5ZpB[䕩]jk`?cJzɟpfqwj i~mMa䣬pZrDtUV"ZXu^^5lacҴ{e[鶏iSXG*GɃFH鲉I!߳{I sJNMJqKLM˶_M=NM*PJR|cVsZiɻ6^{`CbWDPDEZF@,FG2GHPTHI9d IhdK2M6ɿOzZ RpEWg\[]@YASBkƐ BC(zïCS6ZCCЬ/|DYŗD0E9m Q?܁@FBx@ϰpAQgA´^BZVCe NDE HGGAJ!=L!:kO*6Qq$3@>ѦcA8 D}F* G}ŃHt{dI(]sGIjsJڭaU0;WT8Y4cD}m9HgK-җN&YnO[P~JQvhz:j6S7ϲ WD3[e^gauᏃbӎdq~ e9ufRmgdhܚA\juCTl MmaGo7ZAp̦@='r.8t\ `dYݥgjAl0m͇nzp brtqIjrx|asYuR$vKx2Ez`šbc:4fih}ktnlTr eu6]ZexU|MsQ$TBEUV᧚XY#wZ%[Q{z\Ƭ5^o`ÃoczSgqjziCmbHNqZjtQN%;mO&OêoQůRK#%SznT{~Uy|dV$X Y1\/F"_twʷ)bnfdg?i_&OmVnwK6̲L)LňXMrkN'N޹jOv"PhݺQZ*nRSXUXB~[u_ lQbcg?ZGӺH_I'JsRKKKL4MMXNO1&QĻT|Ws..[i__nDtE 6FFwXFF`GPɌGH:ʫH͡(IˊJx K׌#zMԃPzT+pXfC;;=+=Z>">6v>A{J>5s)> j>b=FZ=dP?ýJAsDTD9$?=G#G;Ic8 Lc48ACdEKF4FG!}\GduVGmHdHz\+HSJSLLV FRNG@@QP|o}QEfQɵ^bRdVSNUyQHWBZY>[2Y:r]6IK ^NKQɡkTߓVg."WxXL*z~X評r~Y«iZa [X\RP^dJ`Da]?VcI;e+7QDU|YT\%S^C_M`}aVub{mcddا\f Tg^Mi nGjAlr=nL?8Y8 E]9`ѓZ3d%NghȔijykךqlם'i>mΟ9`&odXp¤jQr>tKs¨1ETuF?w:aĺe=timOdorȏMs/~tG[~uw^uvmwex™t][z4QU{Nm}EH~ˢC rC.{/}K}u9m+eiSc]ډnV1~PN۝Gҍ j2͒tjĤSkSl'lmuwno̓Tq*]s7vzWxre{jA~ob郎[VބŞ:OLa֛6b*bcdf _g ЦJht2iߐlnGq wso3vgy`PT}+XPm"Ynպ%['\']\]+^Z{_ۥaUbSdInfLi}yl/to.lyr^gJfk[ƼL5ֶLMMrN]ônNԽxOZŃO!fP8QhRvȖSa-TɤW BYi~v\u`Gl"ΕdbĔH׃IȇJ.ˇ'JoVJ=̴J߻͎KL]Kð(LlM&oN O>LYPōRӅҞU_|ӧXsEՀ\hC]ID۹ءEr:E֐ElNEE[wE6pD h*EƇ`^D^WDsO#DHH)CNJ>mMpDz:Odz6HBKL}MMOMѷrmN-NXyN`qNiOaOmYO6QQRiRj:Xɶ\:G_]bG(d衮fXYgFƁhyh0r iaMijCPaVk8+Yal QlmKinEpH[?r0;;` cӚ\g$jX;lњ9nڛOop}qur]ms?e"tF]#u|'UvNx+tHyC%{]r=HgkēM5o¬\rbu/wGy;z(J{'Dy{aq|Üi}f}`~ơYj+nR0cL6+F@)pgtދx$|z)ׁkČvj~vwn/Zf^&ڛMVϋ-OAIώ CRz{v~ǃ@ zuVԊU]݋>Ru6x{26rWj󒑐Kb[qiTDpMٛF{|9#|me{Ϻ{kR{ԩԔ|BO}&g~ ftxW2pDhs``Y QϢ3Js1zs[#sws|sʮcgts)uF8vxۢ1wʍyl{E}}u|:m^e^3$AVnNܛiԵjzk ä8kqel,lݪmnǚp άqɭEsĂٮBv1zoxr{j޲~bc1[l9SCa0؜bЫcgcԿ&daze}fgy7hgxjZ7lkF ne,`q?wsovh$y`Z}gWخ[pز,\І}]9]{Z^#^ֳ_iV`Mac{!xe] gR i}lu@Yomrdfvm[뷂VºsW"WXsELYY$ZN[/\ű]HcU^`gǒbsȝedzhvr?˺kip_1QŸQRƩSS\SɃT[ʑToˈU`V`6WX.mZN\Cϱ^S3aux idoCheSɡLMԶͯN$NDЬNOO4ӳP=9ԄQ?ReRyTRE UתW^Y:ٍ]]uuK`kLK߾2LѿMY˞lMzL?LRLƨ|LgtL;&mLL*qeKˀ^FK VlJeNJ,HYMy=BNQ>=SdO9PܸR{S1oTT,U-UQ0~U5vMU.znUkg-UH_UƞXDVDPWoJ|XƉDXZ!r>\<Ɲ:UNW㳺Yx[P\p:]]$]jx2]spC]ῠh^M4a{^Y_aQ`pKaEb@ d;ZKd]R_a[Mc2dְe ezf"Zrf`k8gOcg\h5bT%iMSj'Gk#Al<`p@$cfQQ*h)lkl֎emnmZ}nuonofCp^qGWr Os@Its~D v!>fס龯j.)m`pM7rEt?vw#LawUyxqxiyLaz@VZe{6R|w L}ڲ G _@m>ˆq3uřSxȘ6{}؞}c~ :v }a~9uLm.eQ1]섍=VхOŇI0CvƯz풑;~wqWz뚈˒7)=ၪ˗yŋcr$jaŽ2ZmTqSM?FMN뇺u8 ސOH+Œ%su0~= vUדnf^VWњPIRϘő=/9zصgCi-ќI)ṫ*r‰;{m֋swk*cG\@JUMF|K{v{w´{0F{&{़|}&~-SVtbGfxepxha+AYQrs7sZ̨sq{ssѭCtxzuQEvtx ny{Y}}u/möÃHUTlAV*]S_a$brcRc(dL|zd`W|Ld@:tdMmkdZfd_eX2e[Pf?rJg'DhQŕ>b +dó"f޳é^hٳj\٘8k֏l6\l~lCwlo}lwh]m2amZnR2nKoEpU?fjA}l+ogzq| sAǒVt5+tܱu yu6rmuku湷cvL\vTw)Nx;HDzZAmvÌp짷DtBƯv٦y1Z{O|Xx}YJ}꫰}S~u~"n~f_hX/PށﶒJabDst#xʼ{~ß8P׃ q1Ѣ0ŀydNqꇱj&bt魐[7ܮTHMqG6}Ḿ6Єʘ3,Q8덺ۚFU%(}-y un f'Ts^hWP͖J-ԓ_DŁ](_LѢfՑfҘד≴yry0jWb=p[BT]M-?%ҊL퉦ԉIΉH~󖟢Sk⍁o~9~sYSvpogd_`XuʜP=Z^ ž?CWnPi‚ݣӃjBPϋJ*qʼn2{sɍkdx;SXy>{e}n}u`mZMf]]{l.ျ]l]إlpy$laȀ;lLêllޱImnVǧo}=Rp̒trt:vz,y r͐{jPbaeMģe]4e[ҰefVʣene'f/#fή?gЦhɟsj4k4m\,o 0\qwtodxif˼^2w^z^^ԛѸ^5^<ԇ^s}_yc_+ab5z؏c{./dfڀhvj}qEmt>qFkEWQ WܻWXXʐYO!zZq[RK[|@WZZYEY}Yҍv;Y$nYhjY>ԱaXkZXԼT"XAMXZdGK[@`aÀbĮKb,)c'mcMȜcVZcI1 c̨wbp bNib\c3zƗ蝕Õ,jdc}UkvnΠt%fD_@XlP畇ܙǑX[$#`5UƧE%PCz&nSrƪ?k1cd[᭏RT@`գŊ:ɩp 3׮3Ka\ݰ^xNm5ۍeJ)~(3v.oa:g˶'`!WdBgb?ҵqUgEϸk֣WR3„R,߇n{)sQl/dg#\J}#||IIl{ʾ{+R~{" {({Ã|.}\5~2żՃ"x݅tqU9i@>`jttܻ?tvnŇt5;Ǒs)sݼRs4KtXiu̽u6w0#xL}yᅉ`{}}е}uOmӥe'MmCmކJm^l"!ltѹl̿ҚmTtmNCnL nհo!>q;rΊרtYvzzyar"|bieӒe߹՚eטee%eÖf#hf>܄gF *hFi?cdjkXߟm=To"SrYww[uRn]VG]R]Fm]}Խ]u0^oNjQ_4_ҹ`{abc{eDHfE1hBj}znt(bc_B/b} biVbj#@b7asaՅYazatּsa.\l`f_`P_uاY_R`)עLa`FDgHki)_j6ҭ|j:cjˣ*kɔlk jcjС{jѩtiҠn icӏgigahz[hBShMFiEG!lz3nI_pÃypo.qlrcrOrǗrUr^}orevQqmoEqiqAlcp\gpХUpaMqHqAs}̺ uRw55xiyDVzzFчrzo$;zLx?zWq?yjyydy7˩^y.AVy4Oy-IZvιy{丗X}¸N u 2D&zb 7sulÁ]fR`XQwňJD}"q‚ͷbΦ3$8Z#9ty}Unv?8o=hqݿaӊiZpShELj.[Cn$6Q,v9[А]}ۀcyCϴr:۶k=5d`]|4VZwOL&XAڥE"> Ǧ]L̩GW|SuhnKg(N`/@jYnnR$ci:Nr\ܟG?%k$y3 g'6ylWrTF j𥽪c\iɭUFr>ǣۗVK˪K>җɝ(cљt#&}h3v,P o:g^B_ZjX0z ё԰*AÞP5ȲF>)qcjXM͉zBҷzOHrktc%[e⊴?F@w V,7ۿ1[q5/(qh,~!wo)hg;`橽!LiªBPĻ]lxǧT9w%%^؛ɞ2ʋK{BtJj)ldb}iƏ}|gY|$Q{ǩ{Ud*{Gk{Jzѕ{㧮 |wb}ү~kD.[$xm~qˈ}h*uu?ttզtw t@00t8jtRٸtYulvP`wxPxܹyꅫ{}h~ u&mDkmmmܳm\ջfm3i߀mmG3mimnw:/o8p]@Nq s%tmwz2yrfce;eeH?eњf ʚfkÉQfμgF|ghԧQiƟ jXl3npo#~rw jskкk|vj Sj_jtl^jdi:imٓhQxh]qg]kBf&efF^eXUfۡQf9K)oUq#˾rL̘nrҩs(@yNYn󘏳mU}'*v?o]PhZb[),S_$n#8½H޺g-٩)?n󘡡яޯD 䲢y:rf#kdġܸ^Vٳ]ȥT%@mߩC=MǜQ̌*2:ͪ|umn\g`Yܠ`݂cӂiI°< vg(q v{ZqޠA=գ0ޥyϦr(kg"d`\yz& x=җ:.#+.ݽ9?׽,+#<}vio>&Wg_F.둝ܖ(˃ݐp01?=%ϐl-*ڡ_xƔƔJz@sSk5dHɊ劕7-˪LJA5+u(W{pojOϋ]Fōoߐwцp DhDhw}9ӛ8a t˃x!92n![݆)PP{@t-l=~&c}{}bߖz|\|Pܻ|Ƹ{޼{u{֯|djV|}ؘ'1~ ကF|x呆p۶vvKuuuZ u(Wt³t1uާonimncmD߇]lCWہXRt.Q}iŲ\v%\3/B w^)ז-f2Ӎ~}ԙxiՓq#~k~Re}`}^װYs|FR>sȶ.O$ŸIQ>|CYʀ_˹hۉfvys]"m(gB a^Zԅ/ӐS[nҋ'=$T0.šJ8%ː V4@Z?V|;u-̢nhЍcb\TϻU+뽒pνyD\˶~5c^i€3ä~,xSƥqikLdӖ!y^}=Wc&Ù`"u1!@nJ&q<!-W;;¿zC4s m%CfמĄ`PY֊ |-Ѳ( ĩ?\w;>>0G}ڬѡ%ۮc\谩ᲒyqslT·,ee^ĦߨS֯yƊץvrJuȦO󦧜ʺwl¨axڄ-U}:!vPomҰKhAa%{q۪zG ݞÖhGܞ̩[!̠%âZÈmXՁG2kz( s&EkҪ)dXĈNǘYzژ3ϨuGٿD՗߶DuEf ="ѕq׍gœ1̃~!TJvóh̟λu۵^ӖA!hh*Ֆ̑bR,}Q{:ߕ‚5p{ֈ4s=3l>/dFRwم@c:ݚQxtPݦގQ)参߻}wlnoEɅ3f)Ғl%h샱u噃ti؅N=ؓȆ͋fm{ s,M?~~qހ} ,}L}VZ}%i*}$}--W}|}!~h9}]pԃw^wuwN}wKlvdvvGvgv=¹vDwnvd&vȬwr!2x,{xiykz^!{|Q{זł|J}Z\}ٲ3}?w|sIU{޲hzy<-x(w{ wtzvL2n2uhdubtE\vs LyXҹ3JDqId,|+us‹neKâgNaҴO۵ {سֳؾi`ϴGɴ4Aܺ+zor~ݺ}w: qUjOоcgپcԭ°SÜÉL;Uǡf.l \.泘zasdm)fǒAޮʂTWTo̫}ȧ&̹/a& ˗ݕf͍Wʊ V~%ɡw#(Xp.Shiyѝ_YңA}}0ӳ;Ÿá]6nӠ٢!ԓQNwڂ18Vzs,l\ % %dG4lܮ!G4"dK݋`如5Z_MMGܖ~ܞ4w}ܾ pn`-YUJo䡒[c叓嶓Vԓ+݊D''ߘ{篚s=m]'ctg~i鉌_VꄌJPT f샌:MczF؏^mrZ-v{P2짇!ƆɆO$Ѯ)(+ƲT!nl{#JQz򞀭􎀽y'ݙR$3p$!~~}tgР7GcurvcurvcurvmAB  PHyS6{j,paraffc G 33paraffc G 33paraffc G 33mBA  Psparaparaparaparaparapara?ĪtZ k"z%e۔$8LN&&(sqtz(茪f(]d(by J! '! $"n"3 aʡFy Z!Q#k%$)Ɖ)du)r'ϋd6(ӊb(1\!e("&""L"߇# zų1쥻 ed!%#Nxt'LjEx )ck)c0)U^#}I #xf'#~$D$!}$d%!u8"ŵ`:aʔFL}#~uy'Y|m)+yrc )bs{Qo(vyM1%5m*f&t\&%w@"&A|' &o 3tN/[f:{88sud"sn 'ncx)KhR)%mN&f6%\f%'Nj"(rF!u(v0M){WɋE 8z] u|tMoEgq dc'aY~(^K(X8(NX((e] #'b)OhhErXNiA[}ˡU}¢ n"iv`z{Yj/T[3%QO(M>+I,*N',USa9ZbIgZY>r4d)|p,lV8jjd ]: W.Qyt?4H.` CS${@yDn)=,5,>+Q4HE3#T>MKXx VactnCqayH~ ][FΓYiM:H @os>9+]0Jl#.:(((7d51)B>#N*IIUXT(bs]nixzuS7+g0!3Ip>=udM60sA ,+^L('L1#%=8W$.qD,Y)Oj5$Z?6!ndK4-mVc+ycbfOr~!x+~0 +C/)5u'#%w.-#a6O\>4F?E1RQ&^([*%d4!o@$vJjWweזp`]+/+p/$<"04~LB rlLT5] RN!W<^E-eU#$o%!w/u1CHTKa+/+/' ƢBP؋[x 7{`[if"ZkhHn9s({ ~"! J*S?gDLRU*`+/+/MQ]Ʈ_uRnBRrgԆu qxy*g|4V^b>Fn7%ݑt "!ԡ"q@OJt,w.x,.iwTYgLqՙ pvcؕb|TeuDЛ5@%*z!8[$!÷'j#-6@ #0, oXykT[/J;-%м'!%"#%5$'*%._֟TͯZ鲯z#@PصM dS=S]+A/"Čh&/#&c%c&b&&SO ("A,>%F7$${&כ͋&(.YuO(ݍEg^(e (gb KA (!$7xWsŞ= Ҝ#Л!%tl$ۊ'-)0#sN'Ōed(ċFc&'[ G!%" "j"i#pߟT i U!×x$K.#y'x(o(ecl(_"vH"{'#~$@#? $dyJ%30+6`ʭ9@ۘîzh?%~xw'U}on)%{d)wV(wL$op-3&u'%z"$&f}H&~('?' y"+t_o'pUd|(lV)mN&g6z$g%v'l")s (y;)|X5= =_  lV|nyr΅UmkuS .gCgm&cZ'a:M(\6;'Y((5^"T(d92DlJGu5ZM:mϓ6 Φ w:xp eaQ]BnUeW^%TNP'uP@)L/B*yP-%2 UY?M^yKi[ u0gSso6nXLkѲ ^kWz=vJe!^GJPoT^7Lq?\|')#h#G$&%aƮ'%!@=!ӑ৥̪zzm}/+p@WTBS'6 '#'ǘ&' ''7䮝ܢm! %!Ɨ$ &&v!(Xw*g`(e"ύ/_#.c\U ("yN?JJYjc ڠ#䘴%Pm$'(t*(Jf(c'Zy 2F!I&0" " tx7k.١}gOӫQ !Y$ؖ'x'z(Nq((Ie (߉R`!H",~(#Rt$#`$f[%HnmgPb(i즖"#6u"G{'ls)~7g)zYg(*ymLq$/r-$u%%h} !f&&Ä'.r!cG3 ,}g]!wt' u i(q])nO&Xjk8%1i%(oV"{(s)b{n.-聚Z<PÐ M" levPpOzXjj&e] 'cbO'^=(0\*'_R,'f|a6oMz+]ˀn4 zѣ7 [mt{jmarIU[b%*XNS(%SD)P2<+O5W| AaM k^xSiiVyTisBs$5o] jeΛsM\ KT)ng&OPv_,MP2aJ A5H029oIiDStPV]]ij@uKdv+eի0eΗ`T8N0 $Im0Ey^7B N>??C;AO0"GCx RhN]YheDOuqr|?Ќv+0%aQ]`L#BA#A,2(>n7<:^3D8OK7@&Pn8i0T:"k^F&ghQs ]Ii3v]`~1.q+u0 @5P413ȂA2pL16aRY/SWV.bC8\R-2w`/#i9VsE~RzbKQm Nt+0%+/!%m"3<&De(P)x/YV(8g_-&X'c#Gg^!b5j C#sM){|5xES_, Vlu+/-+/'9)4|I`ZՑb ~ikml]-p?Lu-lpQc8BFS&)?FPV-S"`?`Mlmy${n1h yjcf@-]K!W./wSDwV9=Ng%A?K5X1GHHL\K19OPhM;*TQZQ_P\:lhxBt@M+0/%xW7RnNN.IKV=LG{wG>DsgZO BXTAIYqB"9]JD,"aIkTwa/oyPg+0++0.%?2*? >>1M<`y W,:j/\9o\a(7OLIe75;h8,l<.cu7HW'meYp3]7w\+02+02/N/Nɮ?:/rS 2.^2~d1oh/`l-OpQ+t>+sj*D-v,k~8:G.U+b:իoL+08,/ЖEzuوX"e' n)DMr'wv%\gy#4T{B}/ނ b#@&qK64HT2T>],/Ж,.ФlWsX? ! ЂL^o \Kύ<=JB,' ="#,0"MF6SI,/М{!:&*d?[iE|(6o~ni!XG6$4 a%_#Oz(r${Ɵ*%)#~;y"ו!ԣuϥų4 XޒfyB c/NQ#@-&g!q&\%&ǿ'&A)\&Д5$ٸ#z"QeϽČٵŤaP'q4^0N(2l["(%(gɗ*)?)(= ӧy}禚)!S;n$á`#΢qI&8&M(z)Xu*9jV$b@$w^s'W!Az #Ϩwe!S;u"f$o#ʞc&y+(N~w(oZ(od"\ +Dlu%1bQ u,PӦI&|h m$h_M$!b'ꂤ)]sl(g(-` 셬I 4)!ֈM#g# l R"Z%PHE蹮HyUՠ"˔# %it(كm#*`<'}ZN y8/#w|g%%xJp&U'ˇ<E<8Ҹ qyˆɋ!}ya&y}nA(vb}(psMRO%|p8=$nz*))Is -z 1TQ`~DOԔh؋m>⃋zԅ'Dvw,Fqj/m[/jJ/%g6(0g.";8lPFcu5Ú)k5Loam҈ 3t S [w\%=q-lt3qg^d7cvVF8`D;`w1?]a gHmgWt*dqm~ {|_%*ɺ s9#dl-if6a4r={]1bBvZiRG+YBKG[2 O.^"jVce7p`q|^}%Amۍps*os^iE*a'I8[kGBW pJTaTQRR-USBYV3^[&%a_omlG|myTGmH}qa[k],`+%Y9TGPveQ~Mq XKb^*KGRbKmC#fN4jIRO'@mXn z%d(O;r䓊|ky)+0(6*1 JT4K"lKH,aXF`DsyeSCYeiAkTn@@Dr%CT5uEF( xLZ:דfhgt#){+0<+0#I9R7L8#_;iR;m:wq8iNu6X y74F|345L6'u:H-+KJ[9 Xe*r+0rͫ,/#ЮSB%Zf)t0|y2|1+.?n̂+\)MJӇ&9.%'ˋ(?q;2MFvxU4c,/Т,/мvW"߁_$(A%^#w bUPd >z/M!ҫ&"6~tD ÏUj ,/ Щ0$Oݍ]#6i bŢ٤V%#=YmN[|Jj9㯖%,M "*'$ƻ)%WC!%-%0ڱ$O!B\ΟuLھ`'6_!kF<&X1CeZ)21#'0&'tȷ('d0-)%˞%/ر#zdu əɾ!I7$rf`"Pnɒ4M)$)P')f)'(t*H(sƪ 2_t Oīg!.ǨW$ #&ģAN&ԏ(0q)#},(o% cn$_!s#G & #q!%n,oӧ "n$)#Q&yK(z(ϕq$ey#Û^y0=ڒ$#ic ըg͸&yT 0$ $ 'SO)Wu(mi#^e 鈸J /B!: L!z$Ֆ"f`"a?&u'ͅx)m(*b'Y~P< }^:"V&u$Ӆ*B&ɇ3&` Fw|ձRҘPQgP%#+;v.~_i.{ Y-x>F*_v1,Zt"R2|~D~@V_k<#z`tӭ(mc ^#h,F~72yq5u+c]6*qR6'o>09*p,E@oh.JzBZsmڑuqHn7  3ڸ!:5,y{4t|9ko0l>;kj^@hM-Ch:%IXk$*uN4m[wgKwFLG{o ڣ D~ (%u砽4o=i{Eek'K c&[vPbK"TGd6;Xtgy,]jgqti@t0s䁾Q}%rEFvި xܢ!r#d4 jCBcL)_lzS]jZ+["[N^\Kb|_TkdgTB[kTKomW=fs>[/v>`@"t~?iNuC~+03B+62-V.-B^T0VQ"bOHjN }nLns>B 0E !ДR_ 2Xl_t|,/1Ч,/7c/9u3i8cQ:}:R-r8v5wdo3S\1CB1000138!.<>|zPxiY3fq,/#Юo(L~'&S+~-- ]+~~F*jE(X3!%5F=!3ȤtI O )-Z:L%VZ,/еM&߾&ڤ%ѯ+˭X.@kq¬$_kS^Mp~S:%`#$(%*&4,I"&ř9'`L&bلR#[՘ŽH#GК1Hmr!Z{G,u')((T*( 9+'ޝ<'1ݣ&%؜!VB Rʔ#*˵Qct&bʦ.R 6`X&*9(a)$))<*(R? Fk !u" ŧ#qC'ʔh'1a(x9')Ф~~)ht%d$p_w&,G$$$&)$$j^C|K P9 | !ʪvz$U#d•4&ᢆ'u%)vz(imr$x`z>]+!7"P%aQ6٫ ~5z#u<$o.$v")zV+n(` v6L=0R 씋#%'hO I6ިjg&!ݜ%O))Ґ4-Yw-hb,ևW&B#!1($/%4BgUmr=ض^Aאܠx\=)B H1ʆ6kly9:|j;yZ = wFAx&3Fy"Nc~{A^(o2fw۝PW$1{Ó%2NN9|@wuEt]f I^rULqaCRs3Wv$L^{9lzj{|]O';CY*v07~LM`̑_ 2+0=M.T6:@_O]@aZ);lXVtVW )xVYx;}[TfSUV?F.Y7z]h*d7p_y5O+0&u,.{W KgMӵvN2}O49NTWM*zJha8IIWwJGbL8 P+Uc?oEwO,.i_-0.tҊqc:=BM|DÏ&DȓYB~?Wl=[5<8J;:9=)iBSU^༚m5,/-кv,`꾈,ܟ0P4#f748 5sP3xqƦ1_/N*;pa'7'w--$7@2ŜR6ƶa`8)])C+K))o2$q&À&%TM$%z4[#fS@u>|(n&q&ȵ*S&J?{#ɾR"荈(Ez+((0'ۮ,!mЃʖ8rʞ4P=-pSX] ɈKt/6':*))++c(,S(e1(r(8'>ڸö#pH]!nѻ v w&! dk!JSΦZ8q̈'1+i")?*d*)˴+z)W۹& ,b!"HE"cK#,!';^'v(y)~)Gu-%.eEU (#\(2&ƿ'(&.' &- Ϭ:! "{+#%/#O'"K|ů(sb ߫Sp"fL##)фi-Uqv+\f–xO(6g,+"*w&h)ұf+?\R?w@.%J o(-v13~2pp1`@+rH %;-%׌'LQAΝw@bЪ2E | WQhi (ؤS.ߕ\3’7+$x8i7V6@9*<jJ5z]%];kS"ɣjhj-!8/r6<8@υIs}BbODRKNVHB:N^+>UUcpn4j|eŗt86W1+T8vB lHـ~N}nRB{U^GUzoKZb|v:_,fς<"o=B|ӗōin9`B' t=7ܶ^DOXz?Vw}\umat\fuLjj/x{jw0W~{{!L-S`#\ (&k*)kpcj3rt?ItxY!nej"oMhu]gz0z(fn4~+fp]ˁh?N3k?_)p 1t$ m}I? !+0GY3!ZdqGheq9]elc7vaR~`tr_A^*oO]d^^NbH?;f2tPk<%(t)}+00р-.ҒcbSuW"X&XX1X VHmTCqS`9SPjV@Z3w_f&4Cgԯrq|,.sj-J.Ң}@s"I [sLȽ,NHO# L%IXtXGcOFRFA~JY1^M""TKcÄp,/7~./ي4Oꃫ;r$>xBCO>K;yov8gix6Vx_3C1<.ܽ3G ǺW!cf7 :+爏+͡b,.t/>0?Υ_04J.,D,)6P)n.:&Zů EIZ0Z*(,('ʯE$oWK#Ē)ᝢA*í*ަ4*&I̩&Y!U~*ї!St#!az΂ :N;2(+CB+*,@)V˱- ()ދ)l)Bݚƨ&|ٶ#!։#^#tM!Siӹ"$#,yr#cf,#kUY, :Ͷ(P,@ *+ ̝+E*JS,)XK!OX!L"޳x"ڮ-#.'p'ڪW*TP*ѧ8)u&KCg驩G !ǁ+~$)u'C(;(v'j8",$c!3#"Fkj$:\'+1*@ *֨):r%ꦚdCû(?% &(tƮ&*3%ۜZؽaܯ!s#!%D)癰*+4(o Wd7*"V& g) Iw+]^=SK^Sv!{+ի -1F4u4Ay64^g07O)2x+9u-X:EަRf fT5Տƙ)֩ձ 4h8v͏;=~r?=p^<ҐGG?ΐ0DCё:N'e_p* ?ޅۑ&fĄ5J0VxMZg^*UcFCiD4QnnQ&CtYmv"Q #st&^1K٦@ȏTM؈߬lWԄ,f_*`e~wj~eo ~UseENvڄ6,{w'֋c$}Z (|.BŊلQ׃W^P}f+gz?oxň v~w~wyw4f}xUs{Fp86j)ŊOE )p-x.spZpa !+0Jц: `S$k2lm+wktkʼnjph摘gGyfggWWjwGѝm8ٟr,"y? Ɓ跚 +09ь-1.ҩnZbaʔGbo b4{`ǟ7]{r\h]JX_Hb88e+kGu? - .|w-c.Ҹ Jw'1R uWYE,8Ys8SVTS}wrQ\k˱PZôPIx,S77˸U_(Ĺ]-Xj` v0,/@ҁv5휙 6.pBu|J᮸LmȧpM`YHiEɽB5oV?^$‹-C.҆PŸ_(,,5fM[x} g4pqyIP/o8u^ O@C͋1M#GQl#! -DrN2tI}aI6FnFzO|"{,l3z@ yxoy^8{OZ>@у2ޟ=$# *"Y3 _CFg\owvX uދt;sק~s>WqRҟpLp⢭p_rOu@ݩIzP3(k&W%{ m,.|`-Wv`琉qk}l lGljSgf]r^XfgawhQjg@Ln2s$oz MÏm-.҃xJ]N-dZ oR/8zi5-0.tҋT6}?-ZK~TWZWySi]OhLx4IfL˾FR>ΌDX:/ 4B7fGӈGƳ9Cଐմ@ *-+,U,+X͏-D*O^F" ٶh#s$5'?d(R*j+,ω.4-iv(U\#6N,&4˱*(*K))(%WCwA ΂D[b5#s%5'R*nT +?}..u%+˹m &IwU$+'ʟ))_'+'7&u&c۹@=8 krҔ4"c{^'ʘ)u'a!M¹bm>&$(*}ȳ&w@m Md ߺlTWߚ\ܾ/p ַ&/(5FyF8o '8mx4Q](1bE:S2ܸHV4ōtvǚBd 'ca\.*i6Ƚ@|G>xL"M>pMcTVN:YT^'_zkֲc$ Rz#د c$%-.ᅭ@<7J)ݮR>Y^]f(~Q`cjMd!Ti*@3pw0va}k&W&眩(T*٨38zB{ֻO~7Z9rb{hm'z`qߘfuԙnTzݛbC64J$} ( K,'1%C.T'ӏ`1UGiqf xv}ґxl̒fDž?UɈqF;6EC 'Bq1^+00*@ rVʕGeҔpeQz ̋? @=x2'g<4VG8$j)C 9٪!0=t _8z#TǀiGx|Å+ޅA@K՘^oÜ ygg/cW{~HN\8Dz*L!'.a 6|cSSmSis{oع~F^}ҳ%}ɦ{*,zz!Jyhd{HX}HL؀84D)JǾk- .҇k^~Oe)q둢vLߝv+Avku.21ϼ.g,Ε.+G5X'-Zͳ. .A`ײ/S1\1~XU0&]ٱ.`-vZh,S~+j*Y(x@6+.Ͼ,,-c+,-+|O+5 #$ 'Ym(xq,ͅ.ˑU.G.˦vC* !]%.&͋+()*L(Sm˛ݩ I%?"AΓ'ݫ[,hλ.} .EX,m<)~Q&%,()*}9(4+˹'Fè1 9hHݏD"'Ua-Sіe.̶.QI+LJe'&`B[!H+'jB Ń!;v!i Bf&;ܛє3(8:<=Η>,;'a7$>::J!M!_T^x6" ey"_$$_^~(a.֭=F?Pbƣ@T VzSWP`Y̻Be]+hj{&?&|&۱(j<+55^8FL,5R2\|\XHcWg,(jҭtnS^sHy*5~N$#Ժ  f]a)qtY+X/Ī8FI\M?XcXøl orx]6|5p>^FKN9d9)F.띂+ߔP.ᙳ4kK^ShȮs ̸{ɞåA[Iڜ7pBZ^vrNDm=q|-ٙ {.e.3~eI~]oZyڈzꙒ/:;Ô'\g=p]_?>yOd?0 !yׯ0 2u%H~[ep䮂ߌ^T2t̍ۖY'ƒ@Cq ]`+,O֭ĒL?7f0"!CFAj)Z:r \pwr5Ø2[㵡vb騬!H7Մqq׷ a+WOڹt>ъ`/c㌋Y/-.ҒraZk찗tt:K֑+Cb+|[Tz\8QyTsPHyaCzO+|<}~+v<-1.қVᘗ_4BfiyNpģx߿ƤwdȪu3qםoR̯m`uQilra΢lMn9q&jy"̃ <^H?E-OMo[G`b5nm CiDeرbK؉_wS]}bEL]K܌]o6 b*Y m&v$2b56vM;z4JRSZWz[۷Y^ TbhQ.KψFGt4RA6[F:A4إA1O+Ѫ](ϸj& e0梧4V58eP7B{D6ܮ:ͰV6tw4Q2k0WRٓ/)@;r/10/-]ѰK*WbZ(x/X/6!2,v2Dׇ3و3أ2}Q1 L)/-.J-ls-Z;*B9_,/Т--ϊ.,d.z+#ҘTW $-GI #ŗ@+. -/˷.T.$ζC8ӣsۃd|cSjV(WbD څ1u̲ vV].b뵭=k鰼w=>(7VӬ}z^+xO~ vjgvpUՎw&@nyL,Л~%Ƈ=",Ddş JT&SaFh#֨pFrGpl]i*f}ڶdfޱ`BOKc9}i,Ѻr( |E%[4b9ҼE"N_oZ^׫]^ݺ[ޙVcKSRޤOwJ_jEhFp4H4+iY<-Fәc)om&2Q469+>~D;}HުJޢD!5t!!3!230%&ǚ,1:.~/1Lt.^+.9l.ϲR+KД/+?,K+)C,ν($!ȏ]#mG$a,!@" ^&*ߝD-Ol0u~0U.ŀ[.e.ӑBD.{/.I*N"Wy "#&!˻)Td' cu-c1b/;\MDE-JI܈FH}jESEK&{.Yi<#um"d}/ѿ&K&(,ŏ+8I3pY@p TMZܹZwdĹhڥkWΎnԴuJq9/ZhtA7y!%B>Z*Cy+յa-̼OZ2KU]ؠg?0o\y+v?˨{liˊ҃Sts膵[|LACˉ+Ȓ̾7-_k024ˮ Lw]Vn5wxōKžUʿь*r W]yI"4̟Â!6Lj/R3#{|E5[A.l~,s%y.bϝ8 "mqn}^Lĸ:)3G3JDߑ\VkP~{")q܄j뢋IHXH0ueөNq_EKOڰP>ݳ2-#~G6nnM5Z>o4Cp֛2v2h֋E.&[t+Ӏc)3⍴+4Ѫ6 ֹ6ݯ7!ۚ 9:گ56;4O3._2٤1'm0PZ/Eԩ/1If/Y./-vmX*"9~/H C$f&ݩ(Gڍ -X.u/lȓ4.`."t,^^+ Б0+;V.+i"++)# $ӻ 0!C $Iy'ߨj( g-pb/ i/cS .c.Zpl/67SS_ڮUrBSHӛ(41H^e{Ү:h$Uy”Br0aȓ9 S*Q^=s!b᤭{֊ѵ\յҴϢӴp,s{i4WVGM6S濁$7R_;Cq 1嫄vܗ1Y\pڮ %Ȟ`2,Yۏ7{Ři|PWl(EB3?S"U_%tqYzg‡c~ʖju'1k̶T0Γ>f|Ͼ^iW̡D/`uJi(qv꿥陸V' 3 dٓù#٥3ILo|QafuQTӵQ;Ɣ. R&;`}c\j(tJѴ3j׼ۑµ KiI"sԁ^֮HL4,&'LAYZKbVhvzriw>ضzصU{18wNtMۤro^ko+VSn?Yu01>|,rV( E9KP4w\a;d2i}Led0ޞ`!ޕ^L~[{yXe&XvP_Z9ڝc0Cn+`wm)U45*7H ALq٨Q%WH]8YFR~PKF75L6$ 7t؞:۷Gw!G\o۔6<5t44/iڟ2n1[ڔ0FN092"E0;/Ѯ0D-ԛ\%+6" v7q "X&߰(5I$)m^-ӷ.ΒR/’.c. q-Λ_,1,B.,dШ,,v*$_$Z"u8#?&Mܮ)N).co/tИ/O..͞lP0!St-12. ю.~.)F, L$b%&gC'j2&% T'\G*K.{ͽ0W1t/#w.~1Wef1B<0#1D+T}){$}%î(A˫)Z+}#,JD293إGevQ|W޹yW5U>ހp>S2NW2gw,Hܐ'Fl$(%v*iw,ə/Ϙ;ډOR\o3hЄr uQExux}|1b:F&=2Eځ%E#0-T/df1xRʺRXsd~u@iwŒ: nEۇqoY4Wz'f>'ڧ֊02SN"\~.dwVёו2~Ӡk)'aq[<[JDDZWձ/ >%4.@WkZk5f_DuR뾛ؗIĮĥLl7!\*NCrùZ^̒JQ8*&AZ bwªgi yѶ4\ Gtԙq Y`fscYR`IOǵ=?+ZDd눗iwt~D奚␪܏հUNĴ=Ƀ3öpT@zȶsft`QNRκ;*lxu}ʉ( 湘^Zt梺7Ȫ ۫Zס(֚Ȇ C*r.a]2HJ4GV+}'lu+ufzsuK馼3̛zџCڧԷ޵Rݟ٩bc~*'i'ԛSSӀ>Ӫ1Ph+zbjj#nD-z%l?ӏ؏$V́; inj^y.u{_J͆5Ӟ/;ݑ,+RȦtaOcjmNӀx^ݔ=J)8A5]ځY1'la-@n*&5{X :OSi84י;tHw ,K=Ko.B!6Lܪ5ہ3o^ڸ3b\.2UGm1b2#1 0;KOu.Ղ]-+$S!`"eMt%m'7$)so*d \.m/΢/( .ej.&q-t_K-с1j-I/h-5--R+%DS-&$W%2A(+,+߆/"Ͷ/٤T/>(.E;-͢k0+S.H1./>.Ѻ-Q$&˨'`(X())`(,+e/1R&2ӖR1s.~"1ibd2ՒA1&2}I(ل,WYڣ(;%'ō)f+o+Ps.4Sr=S;5N[@ӽ]>9&_x߂Zp r\WS[8 r?.iދ*s&*j^+qp-yˊ4uЮKݓX5[c oٲqwoy߁޹Ȃg!e&M8*ͣ"%.07-c3".Y\\ӄ+lTQszXۂ:CnngIϚݟ\orG۳Z@!Aũ/w%!1"V5SX^qY'k#ߴ}x xBKͶ3%DTԓ c}Ǵhbص'նJg50+3NW\km y]W;Ԍ&Ӯݹ_Φ4Tk\{`}?՜h$S@y?Ď/L={u]\k}`7}P1dT-Sػ˻Mɮɮ=lʜaˢPY}|δjWxX ϱ5EФz3[$j_.؜m;4%G.d^rի1 DׂB}6N h ԁS׿?j0mzuAs";椝浱1乼yndomvsDڵ赓.!݉etx_J߫6 ]0qYiw넘~LQ/m%ՠ6d9Ч 1@?QZkQ˚kPVZh]BWӑ3PZ/.ace{m?\q^5~˕Aߟׂ,ܰB;J\xG׉&buՌL>(8JG0ӷ-͞_*sc!0ejrgӮ{~y`҄A݊}zڣx`p*FxZ׾zGֱ}6480Ӟ,IfLM\BasMcjg߉mۮqc׽ܲpŶiWg!iVf2GڲfkiCcT6ݾgZ>|n3Xvw/ v+ʲ9KutPrUޓ]ݡ/^xٽar^W,0SPyJdTeIP5RJ7ܙ` 2bgQ.cr+6>XRr;I-ݣL.۷QZګVEߎJ<{D6M53oz4]5KZ2320[r.)a,dparaparaparamBA  @paraparaparas`para  {para*,{paraGI {fU"YNX|3-$ ˙oݦparaj !49gRȪ=parajuELV>8parajELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Kmlcms2-2.5/testbed/Makefile.in0000644002406300000240000003722212163060730015430 0ustar mariamausers# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Makefile for building testcms # VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = testcms$(EXEEXT) subdir = testbed DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_testcms_OBJECTS = testcms2.$(OBJEXT) testcms_OBJECTS = $(am_testcms_OBJECTS) testcms_DEPENDENCIES = $(top_builddir)/src/liblcms2.la testcms_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(testcms_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(testcms_SOURCES) DIST_SOURCES = $(testcms_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ JPEGICC_DEPLIBS = @JPEGICC_DEPLIBS@ LCMS_LIB_DEPLIBS = @LCMS_LIB_DEPLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBRARY_AGE = @LIBRARY_AGE@ LIBRARY_CURRENT = @LIBRARY_CURRENT@ LIBRARY_REVISION = @LIBRARY_REVISION@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LIB_JPEG = @LIB_JPEG@ LIB_MATH = @LIB_MATH@ LIB_TIFF = @LIB_TIFF@ LIB_ZLIB = @LIB_ZLIB@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ TIFFICC_DEPLIBS = @TIFFICC_DEPLIBS@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ inline = @inline@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src # CFLAGS = --pedantic -Wall -std=c99 -O2 testcms_LDADD = $(top_builddir)/src/liblcms2.la testcms_LDFLAGS = @LDFLAGS@ testcms_SOURCES = testcms2.c EXTRA_DIST = test1.icc bad.icc toosmall.icc test2.icc \ test3.icc test4.icc \ test5.icc all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign testbed/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign testbed/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list testcms$(EXEEXT): $(testcms_OBJECTS) $(testcms_DEPENDENCIES) $(EXTRA_testcms_DEPENDENCIES) @rm -f testcms$(EXEEXT) $(testcms_LINK) $(testcms_OBJECTS) $(testcms_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcms2.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am check: if [ $(top_srcdir) != $(top_builddir) ]; then \ cp $(top_srcdir)/testbed/*.ic? $(top_builddir)/testbed; \ fi ./testcms if [ $(top_srcdir) != $(top_builddir) ]; then \ rm -f $(top_builddir)/testbed/*.ic?; \ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lcms2-2.5/testbed/test3.icc0000755002406300000240000006750412163060730015116 0ustar mariamausersoDlcmsspacRGB Lab  1 acspMSFT-lcmsdescA2B060B2A0760wtptncprtn,#dmndnPdmddntdesc,Test profile, not suitable for real use-Test profile, not suitable for real usemft1  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ymb XPIC$<+6209+?%FLR z {~ ~sh^VN$G*@0963<-B'I!OUopt|yq!~g%^)U-M2E7>=7B1H*M$SY,i-j-m/q{1uq3zg6^:U>MBEF=K6O/T)Y"_=d>e>g?jAm{CrpEvgG{^JUNMQEU=Y6]/b(f!N`NaObPdQgRjzTnpVsgXx^[}U^MaEd=h5l.p'^[^\_]__`aadcgydkofpfht]kyUm~LpDs=w5z.nWnXnYoZo\p^qasexthovlfxq]zuU}zLD=5}S}S}T~U~WY\_bwfnien]rTvL{D=OOPQRTVY\_vcngek\oTsLwDKKLMNOQTVY~]v`mddh\lTpLG©GHIJKMOQTW}Zu]lade\iTCƷDķDEFGHJLOQT}Wt[l^cb[@@@ABCDFHJLOR|UsXk\c<<<=>?@ACEGJLO{RsVj8899:;<=?ACEGJMzPr{od ZRKD&>-731:+@%G MS ~ uj`W O%H+A1:74=.C'I"OUtvy~ }s#h&_*V/N4F9?>8C1I+N%TY.m.n/q0t|2xr5}h7_;V?MCFG>K7P0U)Z#_>g?h?j@lBp{DtqFxgH}^KUNMREV=Z6^/b(g"ObOcPdPfQiSlzTppVtgYy^[~U^MaEe=h6l/p(_]_^__``acbeciyempgqgiu^kzUn~MqEt=w6{.nYnYoZo[p]q`rbsfxuiovmfxr]{vU}{ME=5}T}U~U~VXZ]_cwfnjfn]sUwL{E=PPQRSUWZ]`wcngek]oTtLxDLLMNOPRTWZ]vamdeh\lTpLH©HIIJLMORTW~Zu^lade\iTDƷDŷEEFGIKMORU}Xt[l_db[@@AABCEFHJMOR|UsYk\c<===>?@BDFHJMP{SsVk999::;<>?ACEHJMzPr ~ r g]UM#F)?/963<-B'H!NTxmcZ#R(J.C4<95?/E)K"QV }!~"$u&j)a-X1P6H;@@9E2J,O&UZ0t0u1v3y~4|s7i9`=W@ODGH?M8Q1V*[$`@lAmAnBqCt|EwrG{hJ_MVPNSFW>[7_0c)h"PfPgQhRjSlTo{VsqXwhZ{_\V_NbFf>i6m/q(```a`bacbechdkzfophsgjw^l{VoMrEu>x6{/o[o\p\p^q_qbsethyukpwogys^{wU~|ME=6~V~W~WXZ\^adxholfp]tUxM}E=RRSTUWY[^awenhel]pUuMyENNNOPRTVX[^vbmeei]mTqLI©JJKLMOQSVX~\u_mbdf\jTEǷEŸFFGIJLNPSV}Yt\l`dc\AABBCDFGIKNPS|VtYk]c=>>>?@ACDFIKNP{SsWk:::;;<=>@BDFHKNzQrxlcZ#Q(J-B3<95?/E(K"PV}q!g$^(U-M2E7><7B1G*M$SX%&')x+n.d1[5R9J>BB;G4L-Q'W!\4|4}5~68u:k=b@YCPGHKAO9T2X+]%bCsCtDuEwFy~H|tJjLaOXROUGY?]8a1e*i#RlRlSmToUqVt|XwrY{i\~`^WaOdGg?k7n0r)aebebfchcjdlfo{grqivhkz_m~WpNsFv>y7|/p_q`q`qarcsethukzwnpxrgzv_}zV~NF>6ZZ[\]_adgxjongr^vVzM~F>UUVVXY[^`dwgojfn^rUvMzEPPQRSTVXZ]`wdngek]oUsMLêLLMNOQSUWZ~]v`mdeh]kTGǸGŸH¸HIJLNPRTW}Zu^lade\CCDDEFGIKMORT|Wt[l^d???@ABCDFHJLOR{UsXk;;;<==>@ACEGJLOzRr~ s"h&_*V.N3F8?=8C1H+N%SY"#$&w(l+b/Y3Q7IMBEF>K6P0T)Y"_99:;nAeD[GSJKNCR;V4[-_&d G{G|H}H~JKvMlOcRZUQXI\A_:c2g+k%UsUsVtVuWwYy~Z|t\k^aaYcPfHi@m9p1t*dkdkdlemfogqht|iwskzim~`oXrOuGx@{8~1rdresesfthujvlwo{xrqzuh|y`~}WOG?7^__`acehkynpqhu_yW|NF?YYYZ[]_adgxjomgq^uVxN|FSTTUVWY[]`cwfojfm^qUuMOëOOPQRTUXZ]`vcnfej]mUJǹJŹJ¹KLMNPRTWY~\u`mcef]EFFFGHJKMOQTV}Yt\l`dAABBCDEFHJLNQS|VtYk===>??@BCEGIKNQ{Ts''(*y,o/e2[6S:K>CCZ6^/c(g"KLLMNOyQoSeV\YT\K_CbXAOEGI@N8R1W+\$a56689w;m>cAZDQHILAP:T3Y,^%c<<=>@{ApDgF]IUMLPDT=X5].a(f!FFFGHJvLlNbQYTQWI[A^9b2f+k$QQRRSU|VrXhZ_]W`NcFf>j7n0q)]^^^_`bycoefh]jUmLpDs=v5z.jzkzkzk{l|m~npwqmsdu\wSzK}C;4xqxrxrysytzv{x|z~~|ulcZRJB:jjkkmnprt|wszj}bYQIAccdefghjmo{rruixa{XPH]]^^_`bdfhkymqpht`wWzOWĮW®XXYZ[]_adfxiolgo_sWRɼRǼRüSSTVWY[]`bwenhfl^LMMMNOPRSUWY\~_vbneeHHHHIJKLNOQTVY}[u^mCCCDDEFGIJLNPSU|Xt<<=>?{ApCgF]IULLPDT=X5\.a'f!??@AB}DrFhI_LVONRFV>Z7^/c)g"EEEFHIuKkNbPYSQVHZ@^9b2f+j$MMNNOQzSpUfW]ZU]L`Dc=g5k.o'WWXXYZ\v^l`cbZeQhIkAn:r2u+bcccdeg|hrjil`nWqOtGw?z7}0oooppqrtyupwgy^{U~ME=6{y|y|y|z}{~|~~wne\TLDxxyyz{|~wne]ULEppqqrsuvxz~|uld\SKiæijjklmoprt|wsyk|cZRbdzbijccdefgikmo{rrujwazY\\\]]^_abdfhkymqpis`VVVWWXYZ\^_bdfxiplgPPQQRRSTVWY[]`bweoKKKLLMNOPRSUWY\~^vPPPQRT|UrWhZ_\V_NbFe>i7m/q(RRSSTV}WsYj\a^XaOdGg?k8n0r)VVWWXZ[v]l_caZdQgIjAn9q2u+\]]^^`aycoefg]iTlLoDrw6{/eeeffgi~jtlknbpYsPuHx@{91lllmmnoqxrotfv]yT{L~D<5uuuuvwxy}zt|j~aYQHA9~~ypg^VNF>vmd\SKC|sjbYQI yqh`WOwƬwìwwxyz{}~wof^VoɸoǹpĹpqqrsuvxz~|umeĄ]hhhiijklmoqsu|wtyl|caabbccdeghjknp{rruj[[[\\]^_`acegikymqUUUVVWWXZ[\^`bdgxccddefg}itjjmaoXqPtHw@z8~1eeefghi~julknbpYsQuIxA|91hhhijklmvomqds[uRxJ{B~:3mmmnnopryspufw]zU|ME=5ssttuvwx}ys{j}aXPH@8{{||}}~wne]TLD<|sjbYQIAypg_VNFvmd\TLĤ¥|skbZR~ǰ~Ű~°~zqi`Xv˼vɼvżwwxyz{}~ÂwĄoņglj_ooooppqrtuwxz~|vmҁehhhhiijklnoqsu|wtylaaaabccdeghjlnp{rs[[[[\\]^_`bcegikylĹmijmīmġnėoōpŃqyspufw^yU|M~E=5n¹n³n¬o¢pØpÎrĄsztpvgx^{V}ME=6qqqrrstu{wryi{`}WOG?7uuuvwwxz~{t}kbZQIA9{{{||}~xne]TLD<|riaXPH@wne]TLD|sjbYQIĞypg_WOƩĩvme]TɴǴĴ|skcZ}Ϳ}}~~€‚ÃĄņƈzNJqɌiʎauuvvvwxyz{}~р҂xԄoՆgnnnooppqrtuwxz~|vnggghhiijkmnoqsu|wt`aaaabcdefgijlnp{vȼvȷvȰvȦwȜxɒyɈz|u}lcZRIA:wƽwƷwǰxǧxǝyǓzȉ{}v~lc[RJB:yĽzĸzızĨ{Ğ|Ŕ}Ŋ~Ɓwne\TKC<}~~~ƒypg^VME>|sjaYPH@wne\TLD‘{ri`XPHĚwne]ULƤä|skbZRɮƮ®yph_W˸ɹƹvm™eě]ÄÄĄĄąąņŇƈljȋɌʎ|ːt͑kΔc|||}}~~рҁӃԄՆֈz׊q،iuuuuvvwxyz{}~ကxpmnnnnoppqstuwyz~|vggggghiijkmnpqsu|̴̻̫͎͘͡΄zqh_WNF>˻˴ˬˢ̘̎̅{ri`WOG?ȼɵɭɣəʏʆ|sjaXPH@ŽŶŮťƛƑLj~ulcZRJB‹Šxnf]ULDÑ{ri`XPHĘvmd\TLƠàzqi`XPȩƩªvne]U˳ɳų|skbZͽ˽Ƚþ™ÚĜyŝpǟhȡ`ȋȋȋȋȌɌɍʎʏː̑͒Δ~ϕvїnҙeӃӃӃӄӄӄԅԆՇֈ։׊،َ|ۏtܑk{{|||}}~ဤၛ⃓ㄊ䆂zrttttuuvwxyz{}~xmmmmnnoppqstuwyz~ÈпиаѦѝѓ҉Ҁvmd\SKCÉϿϹϰϧНГЊрwne\TLDċ͹ͱͨΞΔ΋ρxof]UMEĎʺʲʩʠ˖ˍ̃zqh_WNFœżŴūƢƘǏDž|sjbYQIƘ؈vme\TLǟğzqh`XOɧƧ§~umd\T˯ɯİzqi`X͸˸ǹ¹vn­eĮ]ššššÛÛÜĜŝƞƟǠɢ|ʣs˥kͧc͓͓̒̒̒͒ΔΔϕϖЗљҚӛy՝p֟h׊׊׊׊׋؋،،ٍڎڏۑܒݔ~ߕvnㄽㅶ䆮䇦初払犍茄|t{{{{{||}~zsstttuuvwxyz{}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mft1  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!"#$%&'()*+,-../0123456789:;<<=>?@ABCDEFGHIIJKLMNOPQRSTUVVWXYZ[\]^_`abccdefghijklmnoppqrstuvwxyz{|}~~  !!"#$%&'()*+,-../0123456789:;<<=>?@ABCDEFGHIIJKLMNOPQRSTUVVWXYZ[\]^_`abccdefghijklmnoppqrstuvwxyz{|}~~kP7kP7kP7kP7kP7kP7kP7kP7kP 7 !!!!!!!!!k Q$7- 111111111k*Q68< ?????????-l>QF8K!MMMMMMMMM.ElPQW8Z"\\\\\\\\\-JYlbRg9j#kkkkkkkkk(NallsRw9y${ { { { { { { { { Qgu~mR:%|` F ,  |` F ,  |` F ,  |` F ,  |` F ,  |` F ,  |`F-|aF-|aF$-+--------}a/F8-=>>>>>>>>}8aDGJ.NOOOOOOOO?}NaWG\/^________DW}bbiHm/oppppppppG^l}ub{H~0Heu~bI1 j~~cI2/0011q2V2;2!22222222/0011q2V2;2!22222222/0011q2V2;2!22222222/0011q2V2;2!22222222./001q1V1;1!11111111*+,,-q-V-;-!--------%&'((q(V);)") ) ) ) ) ) ) ) !!q"V"<"""(")")")")")")")"r$V3<:#=>>>>>>>.r@VI';`tsX?(e|ˌsY@) ˢtZA+BCCDDDfDJE/EEEEEEEEBCCDDDfDJE/EEEEEEEEBCCDDDfDJE/EEEEEEEE@AABBBfCJC/CCCCCCCC=>>??@f@J@/@@@@@@@@9:;;<S SSSSSSSNOOPPPwPZP>Q!QQQQQQQJJKLLLwLZL>M!MMMMMMMDEEFFFwGZG?#G"*G,G,G,G,G,G,G<==>>?w2?[???F?#I?J?J?J?J?J?J?/122)3E3wR3[Z4@_4$a4b4b4b4b4b4b46Rb xk \q!@u!%v!w!w!w!w!w!w!?^o{x\A' Dg{y]B( Goҕy]C*uӬz^D,z_F. {`G0ijjjkkkjkLk.kkkkkkkghhiiiijjLj.jjjjjjjffgggghjhMh.hhhhhhhccddeeejeMe/eeeeeee_``aaaajbMb/bbbbbbbZ[\\\]]j]M]0] ]]]]]]TUUVVVVk%WN3W0:W =W=W=W=W=W=WKLMMN(NBNkNNNUN1YO[O[O[O[O[O[O?@AB=BUCcClkCOpC2sCtCtCtCtCtCtC-./L0e1s1}2l2P232222222WqƂ m P 5  _|ƜmQ6eƴnR8oS:!pU;$ qV=(}}}~~~~z~\~=~~{{{||||z}\}=}}}}}}}xyyyzzz{z\z=zzzzzzzuuvvvww{w]w>wwwwwwwqqrrrss{s]s>ssssssslllmmmm{n]n? nnnnnnneefffgg|5g^Cg@JgMgOgOgOgOgOg\\]]^;^R^|^^^f^@j^l^n^n^n^n^n^PPQ!RPRfRsS||S_SAS!SSSSSS??5@`AwABB}B`CBC#CCCCCC @!m#$ٕ%&'}'`'D(&((((((Xwٰ~aE(bF+ cH-dJ0fL3lL(lL(mM)mM*mN+}}~~~~n N&,046666vvvwww-wFxnSxOZx-^xaxaxaxaxaxmmmn nMnbnooowoP{o/~ooooooaaa>bcbwcccocQc1ccccccPQPQtRR̗SSSpSRT2TTTTTTW7^89::̳;;#vZ@'}\8}\9}]:}]:~^;~(^;p stttt~~~~<_s`?rrrVrvs߉ssttat@ttttttPbPbhbccߪddddbeBeeeeeeLLLMNNOOOcODOOOOOO""#%&(())d*F*#*****eH'gJ+hL/ jN3lImImJnKnL>oNMW"\^___)Shtp}N$SqфpO'>>>lѨqP*…ÅÅÅÅttttuuuvvrvRv-vvvvv___``aaabsbSb0bbbbb???@ABBCCuCUC3DDDDDvW6wY:y[=z]@"Ο}Z-˟~Z/Ơ~[0\2\3(15667R`]i5orsttDfy^7/h䖢â`9xxx亖Ė˖ЖaԖ<֖זؖؖؖχڇ⇤臃b>rrrrssttttdtAt tuuuWWWWXXYYYYeYCZZZZZ!"$$%&g&F&&'''iI$kL*mO/kA߱ߏkBڲڏlCղՐmDβΑm6FDLOQQNdzeǑsn|G[xՋoIeeee|մĴpɴK̴δϴддͨרިrMʘʘʘʘ՘sOtQ%lllllmmnnnvnTn*nnnnDDDDEEFGGGwGVH/HHHHyX4{[9}^=|S|T}U~W;PX\!cgij>>>>pƩѤс[)Ƥǂ\-Һ^1`5b9d=______``aaafaAabbb iD kHlJf1f3g5i7"2Ufjr:y}Vw؊푡k=xxxxxػm?ٶٓnBͷ͔pEqHsKuOwwwwwwwxxxxwyRyyyyMMMMMMNOOPPyPUP&PPPMMMMMMNOOPPyPUP&PPPMMMMMMNOOPPyPUP&PPPxHyIzK{M4BIMQk||OKKKKKKnǫ}Q~SV ߦXѧу[ ](`/a1a1a1a1\^_EaWahk?jفc ھe&g,i1k6m;׻ؖo?׻ؖo?׻ؖo?׻ؖo?׻ؖo?׻ؖo?  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~XYZ MtextNot suitable for real usedesc Little CMS Little CMSdesc2.x 2.xlcms2-2.5/testbed/Makefile.am0000644002406300000240000000131212163060730015406 0ustar mariamausers# # Makefile for building testcms # # Don't require all the GNU mandated files AUTOMAKE_OPTIONS = 1.7 foreign INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/src check_PROGRAMS = testcms # CFLAGS = --pedantic -Wall -std=c99 -O2 testcms_LDADD = $(top_builddir)/src/liblcms2.la testcms_LDFLAGS = @LDFLAGS@ testcms_SOURCES = testcms2.c EXTRA_DIST = test1.icc bad.icc toosmall.icc test2.icc \ test3.icc test4.icc \ test5.icc check: if [ $(top_srcdir) != $(top_builddir) ]; then \ cp $(top_srcdir)/testbed/*.ic? $(top_builddir)/testbed; \ fi ./testcms if [ $(top_srcdir) != $(top_builddir) ]; then \ rm -f $(top_builddir)/testbed/*.ic?; \ fi lcms2-2.5/testbed/testthread.cpp0000644002406300000240000000253312163060730016233 0ustar mariamausers #include #include "lcms.h" static cmsHPROFILE prof_xyz,prof_rgb; static cmsHTRANSFORM trans_xyz_to_rgb,trans_rgb_to_xyz; static DWORD WINAPI make_trans_xyz_to_rgb(LPVOID lpParameter) { trans_xyz_to_rgb = cmsCreateTransform( prof_xyz,TYPE_XYZ_DBL, prof_rgb,TYPE_RGB_DBL, INTENT_ABSOLUTE_COLORIMETRIC,cmsFLAGS_NOTPRECALC); return 0; } static DWORD WINAPI make_trans_rgb_to_xyz(LPVOID lpParameter) { trans_rgb_to_xyz = cmsCreateTransform( prof_rgb,TYPE_RGB_DBL, prof_xyz,TYPE_XYZ_DBL, INTENT_ABSOLUTE_COLORIMETRIC,cmsFLAGS_NOTPRECALC); return 0; } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { prof_xyz = cmsCreateXYZProfile(); prof_rgb = cmsOpenProfileFromFile("AdobeRGB1998.icc","rb"); //cmsCreate_sRGBProfile(); for (int i=0;i<10;++i) { #define try_threads #ifdef try_threads DWORD threadid; HANDLE workers[2]; workers[0] = CreateThread(NULL,0,make_trans_xyz_to_rgb,NULL,0,&threadid); workers[1] = CreateThread(NULL,0,make_trans_rgb_to_xyz,NULL,0,&threadid); WaitForMultipleObjects(2,workers,TRUE,INFINITE); for (unsigned i=0;i<2;++i) CloseHandle(workers[i]); #else make_trans_xyz_to_rgb(0); make_trans_rgb_to_xyz(0); #endif cmsDeleteTransform(trans_xyz_to_rgb); cmsDeleteTransform(trans_rgb_to_xyz); } cmsCloseProfile(prof_rgb); cmsCloseProfile(prof_xyz); }

oAnBlDkEiFiFhEgEgDgDgDgDgDgDgD]gr| "#ە%ϓ2 ŏ?JT$]+e1|m6zt:w|=u@tBrEqFoHnHmHlHkGkGkFkFkFkFkFkF_iu~՚!ʘ0 <GQ$Z+b1j6q:}y>{AyDwFuHtJrKqKpJpIoHoGnGnGnGnGnGalwݚОŜ.:EO#X*`1h6o:v>B~E|HzJxL|wLzvMxuLxtKysJzrIzrIzrIzrIzrIzrIcny֟ ˢ+8CM"V)^0f6m:t?|BFI|Kx~Mu|Ns{NqzNqyLrxKtwJtvJtvJtvJtvJtvJep|ٚУŧ)6AK T(\/d5k:r?zC}FyIuLrNnOlOjOj~Ml}Lm|Kn{Kn{Kn{Kn{Kn{Kgsԝ˦&4 ?IR'Z.b4i9p>{xBwFsIoLkNhOeOcOcNeMgLgKgKgKgKgKiv٘ϡŪ#1 =GP%X,`3g8zn=uuAp~ElHhKdM`O^O\O[N]M_L`K`K`K`K`Kly Ԝʥ . :DM#V*~]0xe6sl;ns?j|CeGaI]LYMVNTMTLULXKXKXKXKXKXKp } ڗϡŪ+7AK }S'w[-qb3li8hq|HvQ#pY)k`.fg3ao7\w;X>SAODKEHFFEFEEEGFHFHFHFHFHFyږϡū !/ {;tEnNiV$d^)_e-Zm1Vu5Q8M;I=E>C?A?@>??>@?@?@?@?@?@Ԝʧ {+t7 mAgJbS]["Xc&Tk*Os-K}0G҉2CЗ4@Υ6>̷6<6<5:7888989898989ڗΣĮ|u*n4 h>cG^PYWT_Pg!Lo$Hy&D)A*=+;,9,8+6-4/3/3/3/3/3/ҟȪ}un'h0b9 ]AYIUPQXM`IhDq@| =":#8#6#5"4!1$0$0$0$0$0$֛˧²~t mg"a+[3 W; SBPILPHWD^@g6H3S 1^ .h ,r)|'%$""   9+<*>+>.<3<<:G7Q 5\ 2f0p-z+)'&%$$##"!!;*?)A)A,@2@;>D =O :Z 7d5n2x0.,+*)((''&$#" =(A'C'D*E0E8CB BL @W=a:k7u5~310/..--,+))&#!     @&D%G%I'J.K6I? HI FTC^@h=r;{97655443210.+(('''''B$H#L#N%Q,Q3O< NF LQJ[GeDoAx?><<;;:98762100/////F#K!P T#X*X1U8TB SMPXMbJlHuF~DCCBA@?>=<:98 8!7"7"7"7"7"I!OTZ"^(_.]5Z> YIVTS_PiNrL{KJIGFEDDCCB!A#@$?%?&?&?&?&?&LSY`!d&e,d2b: _D\PZ[WfUoRxQP O!N"M#L#K$K$J$J$I&H(G)F)F*F*F*F*F*OV]ei$k*k/i6f@ dLaW^b\kZs X|#W$V&U'T(S(R)Q*P*P*O+N,N-M-M.M.M.M.M.QYbin"q'r,q2o< lHhSf]cf ao#_w&^(\)[+Z,Y-X.W/V/V/U/T0T1S1S1S1S1S1S1T\ems v$x(x.v8 sDpOmYjb!gk%es(d{*b-a.`0_1^2]3\3[4[4Z4Y4Y4Y4Y4Y4Y4Y4V_iqw{!}$(}4z@vLsVp_"ng&ko*jw-h/g1e3d4c6b7a7`8_7^7^7]7]7]7]7]7]7Xaktzօ#̄1À>}IySv\"td'ql+os.m{1l3k5i7h9f:e;d;c;b:b:b9a9a9a9a9a9Zcnv}݇Њ Ɖ/;FP|Y"ya'wi+tp/sx2q5o7n9l;kg=g=fzj=zi=zi=zi=zi=zi=^hs|ڊѐƓ*7 BKT!\'d+k/|r3zz6y9w<u>|t@yrAvqBtpAso@sn?tn?tm>tm>tm>tm>tm>`ju~ Վ̔'5 @IR Z&b+i/p3x7~:||=xz?uyArwCovCmuCmtBmsAmr@nq?nq?nq?nq?nq?bmxڊВǘ%2 =GPX%`+g/n3}v7y~:v>r@oBk}Ci{DgzDfyCfxBgwAhv@hv@hv@hv@hv@dp { ֎̕œ"0;ENV$^*e/|l3wt7s|:o=l@hBeDbD`D_C_~B`}Ab{@b{@b{@b{@b{@f s ~ Ғș -9CLT#\(zc-vj2qr6mz9i=e?aB^C[DYDXCXBYA[A[A[A[A[Ai v ٍΖÞ*6 @J~R yZ&ta+oh0kp4gx7c;^>Z@WBTBRBQBQAQ@S@S@S@S@S@mzӒɛ&3 >}GwPrX#m_(if,en1`v4\8X;T=P?M?K?J?J?I>K>K>K>K>K>rڌϗĠ!/}: vDqMlUg]$bd(^k,Zs0U}3Q6M8J:F;D;D:C:B;C;C;C;C;C;wԒʝ|*u6 o@jJeR`Z\b#Wi&Sq*O{-K0G2D3A4?4>4=4<5;6;6;6;6;6~ۍϙţxr$m1g< bF]OYWU_QgMo"Iy%EDŽ(AƑ*>Ġ+<°,:,9+8,7.6/6/6/6/6/ԕɠ|pje,`7[A VJRSN[KcGlCv@ہ<ڎ!9؞"7֮"5"4"3#2$1&1&1&1&1&ڐ͝ħtke_(Y2U;QD NM JUF]Ce@n[ :d7n3z0.,*)((((((ʣ~pd\ VQL$H,D3A:>@;G8O4W1` -k *w & $ " !      ītg[TN JEA#>);/855;2A.H+Q&Z"eswj^RKFA =:64#1(/.,3)9%@ HQ\hu {m`TJC>962 /,*(!%%"*06>G Q[envvvvv3,5+6,4/15.=+G&R"]hr|    5*7)8*7-433<0E+P'[#f!py            7)9(:(:+818:5C1N,Y)c'm%w # !              9'<%=&=(=.=7;A8K3V0` .j +t )} ( ' & % % $ $ # # !          <%?#A#A%C,C4A>>H:R7] 5g 2p 1y / . - , , + + * ) ( ' % " !      >#B!E G#J*J2H:EDAO >Y |=<<;;98766543222222EJNTX%X,V3R<OF MQ J\ HgFpEyDCBAA@??>>=<;::9999HNSZ^#_)]/Y7VATM RY OcNlLtK|KJIIHGFEEDCBA A A A A A KQX_c!e&d+a3^=\I YTX^VgToSwRQPOONM L K K!J"I#H$H$G$G$G$G$NU]dhj"j'h-f8dD aO_Z]c\kZsYzX W!V"U#T$S%R%Q%Q%P&O'N'N'N'N'N'N'PXahloo!n'm4k@ iKfVd_bg`o_v!^~#]$\&['Z(Y)W*V*V*U*T*T+S*S*S*S*S*SZdkprsu"t1r= oHmRj[hcfk er#cz%b'a)`*_,^-\-[.Z.Y.Y.X-X-W-W-W-W-U]gnsvw zz.x: uErOpXn`lh!jo$iv'g~)f+e-c.b0a0_1^1^1]0\0\/\/\/\/\/W` iqvy} ǀ+~7 {BxLuUs]qe"ol%ms(l{*j-i/h1f2e3d4~b4}b3|a2{a2{`1{`1{`1{`1{`1Yb lsy ~͂…(5@}J{Sx[vb"tj&rq)px+o.m0l2~k4{i5yh6wg6vf5ue4ue3td3td3td3td3td3Zd n v |Ђdž&3> HQ}Y{`"yg&wn)uv,s~/~r1{q4xo6un7rl7pk7oj7oi6oi5nh4oh4oh4oh4oh4\ g q yր̆‹#1< ENW^"~e&|l)zt,{y|/xw2uv5qt7ns8lq9jp9io8in7hm6il5il5il5il5il5^ i s |҄Ɋ .: CLT\!c%}j)yq-u~z0r}3n{5kz7hx9ev:cu:bt9bs8br7bq6cq6cq6cq6cq6a lvψŎ ,7 AJRZ {a%wh)so,pw/l2h5e7b~9_}:]{:\z9[y8\x7\w7\v6\v6\v6\v6cozքˌ)5?HPzXu_#qf'mn+ju.f~2b4^7[8X9V:U9U~8U}7U|7U|6U|6U|6U|6fs~҈Ǒ%2< ~FyNtVo]!ke%gl)ct-`}0\3X5T7Q8O8N8N7N6N6N6N6N6N6jwڃ΍Ö!.~9 xCrLnTi[ec"aj&]r*Y{-U0Q2N4K5H5G5G4G4F4F4F4F4F4o|ԉɓ}*v6q@ lIgQcY_`[h"Wp%Sy(O+K.G/D0B1A0@0@1?1?1?1?1?1u܃Ϗřyt%o2j< eF`N\VX^TePm Lv#I%E(B)?*<+;*;*:+9,9,9,9,9,|Պʖ~p kf,a7]A YJ URQ[McJkFtC? <"9#7#6"6"5$3%3%3%3%3%݅ϒŝwh_\$X0T;PEMN IV F_Cg@q=|:Έ7͗4˧2ɻ110.....ԎɚpbXTP)L4I>FGCP@Y=b :k 8v520.ߵ,+*)))))͘ãvh[S OJ#F,C5@==E:N7W4`1k.w , ) ( & % $ # " " " " ơzm`TMHD@$=,:37:4A1I-R*\'h#t ~pdWMFA =96!4(1..4+:'B#KUao     tgZOE>95 2/,*!'&$,!29BL X fuxj]QG>62.+' %" #)0 8ANZfq}.+0*/+,.'4$<FQ\f p y0*2)1)/,*1):%D OZdnw        2(4&4'2*//.8,B'L!Wakt}   5%7$7$5&5-562?.I)T%^!hqz       8#:!;!:#<*<39<6F1P-[*e'n%w%~$$#""!!     :!=>@!B'B0@9=B9L5W2a/k.s-{-,,++*)('&%% $ # # # # # # =ACGI%I,G5D>@Hu =| = < < < ; : : 98876554444DINTW W%T,P4M>KJIUH_ Gh Fp FwEEDDCBAA@?>==<<<<<GLSY\\!Z&W.U9TERP QZ PcOkNsMzLKKJIHGFFEDCCBBBBJOW]aa_]']4\A[L YVW_VgUnTvS}RQPPONLLKJIIHHHHLR [aeecd"e0d=bH `R^[]c[kZrYyXWVUT S!R!Q!P!O"N"N"M"M"M"M"OV _ehh h kk-j9hD fNdWc_ag`n^u]}\ [!Z"Y#X$V%U%U%T%S%S$R$R$R$R$QY b h k mn pq*p6nA lKjTh\gdekdrby a"`#_%^&\'[(Z(Y(~X'}W'|W&|W&|W&|W&|W&S [ d j nrsvw'u4s> qHoQmYlajhhogv!e~#d%c'b(~a*{_*y^*x]*w\*v\)v[(u[(u[(u[(u[(U ^g mrvxz{${1y< vFtOrWp^nemlkt"j|$i'}g)zf*we,uc,rb-qa,p`+p`+p_*o_)o_)o_)o_)W `iov{}!/~:{D yLwUu\scqj pq"|ny%ym(vl*tk,qi-nh.lg.ke.je-jd,jc+jc+jc+jc+jc+Yclsz ,8A ~J|RzZxa}wh zuo#vtw&sr(pq+no-kn.hm/fk/ej/di.dh-dg,dg,dg,dg,dg,[fnw~ *5? HPX{~_x|f t{m#qyu&nx~)kv+hu-es/br0`p0^o0^n/^m.^l-^l-^l-^l-^l-]hq{Ȃ'3= F~NzVv]rdok#ks&h~|(e|+b{-^z/\x0Yv0Xt0Xs/Xr.Xq.Xq-Xq-Xq-Xq-`kuŇ$0; ~DyLtTp[mbii!fq%bz'_*[,X.U~/S|0Q{0Qy/Qw.Qv-Rv-Rv-Rv-Rv-coz̄ -~8xA sJoRkYg`ch `o#\x&Y(U+R-O.L.K.K-J~-K}-K|,K|,K|,K|,hsȉ })w5r? mGiOeWa^]fZm Vv#R&O(K*H+F,D+D+D+D+D+D+D+D+myυďzu%p1k;gD bM^U[\WdSkPtL~!H$E&B'@'>'>&='='='='='='sրʌ|qlh,c7_A[I XQTYPaMiIrF|B? @;"9,754>2G0Q-[+f(r&$"!àwi\PE=963"1*.2+9(B%K"V bp{m`TI?830-*'%%,!2:DO\ k {qdWLB91-)& # $*2 ;FTbsugZND;2+&"  ")2<IWfs)*))'*#-3;D OZdnv~+(,'*(&+ 09BM X bkt|.&.%-%)(&.%7 @JU_ h qy0$1"0"-$-++4)=#GR\env} 3!443!4(310:+D&N"Xbksz6879;&:-764@/J+T(^&g$p$w#~"""!  9;<@A"A*>2;;6E3P0Z/d.l-t-|,,,,++**)))('' & & & & <?BFHG%D-@6=@9K8V7`7h7p7w7~6666554322 1 0 0 / / / / ?CGLNM I'E0B:BFBQA[Ad@k@s@y ? ? > > = = < ; : : 9877777BFMRSRNJ(K5LAKLJVJ_ Ig Hn Gu G| FFEEDCBA@??>====EI Q VXVPR#T1T=THRRQ[ Pc OjNqNxMLKKJIHGFEDDCCCCHMU Z [ YW Z\-\9[DZN XW W_VfUmTtS{RQPPNMLKJJIHHHHJ QY ]^`_ ac)c5a@`J ^S ][\c[jYpXwWVUTSRQPO~N~N}M}M}M}ML T\`dfegi&h2g=eG dP bXa_`f^m]t\|[ZYX~W{U yT xSwSwRvRvQvQvQNW_chkjln#n/l:kD iM gUf]ddcjbqay`~^{] y\!w["tZ"sX"rX"qW!qV pV pV pV pV PZagmppqr r-q8pB nK lSjZiaghfo}ewzdxc ub!sa#p_$n^$l]$l\#k[#kZ"kY!kY!kY!kY!R\dkqtuv ww*v6t?rH qPoXm_}lezkmwjtth}rg!of#me$jd%hb&fa&f`%e_$e^#e]"e]"e]"e]"T^fntxz{||({3y=wF uNtV{r]xqcupkrnrom{ll"ik$gj%dh&bg'`e'`d&`c%`b$`b#`b#`b#`b#Vajry}%1~;|D ~{LzyTvx[svbouimtpjry gq"dp$ao&^m'\k'Zj'Zi'Zh&Zg%Zf$Zf$Zf$Zf$Ydmv}".9}B yJ tRq~Ym|`j{ggzndxvaw"^v$[t&Xr'Vq'To'Tm'Tl&Tk%Tj$Tj$Tj$Tj$]gr{+}6x?sH oPlWh^eebl^u[~~!X|#Uz%Ry&Pw'Nu'Ms&Nr&Nq%Np$Np$Np$Np$`kwƀ |(w3r=nE jMfUc\_c\jYsU|R!O#L%I~%H|%Gz%Gy$Gw$Gv$Gv$Gv$Gv$eq|Åzu$p0l:hCdK `S]ZYaViSqO{LI!F"C#A#A"A"@"@~"@~"@~"@~"jwʂzrmi,e7a@]H ZP VWS_PgLoIyFB@=;;::::::p~ʼnvjd`&]2Y<VDSMOU L\ IdFmCw@=:865544444yˆtcZVS,P6M@KHHPEYBa ?j &H$S#_!lzߞݲtfYMB7-* '% #( 09CO\jz xj]QF<2)%" "*2< HUev}naTI?5-% "*3?N^pseXKA7/'   !+6DUfv$)#(),19CMXaks{&'%&"&).7 AJU_hqx)%(#%# %,5> GR\enu|,"+ ( #!#)!2;EO Xbjry..,*+&)/%8AKU^go v | 11/12#0+-3(=#FQZcksy454887&3//8*B'L%V$`#h#o$v$}$$$$$##"!!!!!    78;>> = < < ; : 9 8 8 8 8 @ DK N M GEIK-L9LDLMKVJ^IeIl Hr Hy G F F E DCBA@??>>>>C HORQQN QS(T5T@SIRRQZPa Oh No Nu M}LKKJIHFFEDCCCCELRUXYVXZ%[1Z<YFXOWW V^ Ue TkSrRyQQPON~L|KzJyJxIxHwHwHwHGOUZ^_]^`!a.`9_C^L\T [[ ZbYhXoWvVU}T{SxRvQtPsOrNrMqMqLqLqLIRX^ceccef+e6d@cIaQ `X __^f]m~\t{[|yZvYtXrWpUnTmSlRkQkQkPkPkPJT[cgjii jj(j4i=gFfN eU c\}bczajx`qu_zs^p]n\l[jYhXgWfVfUfUfTfTfTMW_flnnmno&n1m;lDjL ~iS zhZwgaufhreopdwmckbh`f_d^b\a[aZ`Y`Y`X`X`XPZbjprsrss#s/r9qA|oI ynQ umXrk_pjfmimjhuhgefce`d^b\a[_[^[][][\[\[\S]fntwwwxx x,w6|v?wtG tsO qrVmq]kpdhokemsbl}`k]j[hXgWeVdVbVaV`V`V`V`V`jrx|||}}}){|4w{=szEoyM lxTiw[fubcti`sq]r{ZpWoUnSlQjPiPgPfPePePePeYdow} z&v1q;mCjK f~R c}Y`|`]{hZypWxyTwQuOtLrKpJnJmJkJjJjJjJj]is|yt#p.l8hAdIaP ^W [^XfUnRwN~K|I{FyDwCuCsCrCqCpCpCpbnyzrmi+e5a>^F[N XU U\RdOlLuHEC@>=}={=y=x=w=w=whutk ea&^1Z:WCTKQRNZ Kb HjEsB~?=:97777777o|pc\X U,R6P?MGJOGWE_ Bg ?q <|97532210000wDŽ}n_S NK%I0F9DBBK@S=[;d8n6y 3 1 / - , , + * ***̀Œzk[LB@='<2:;8D6M4V2_0i.u,)(&%%$####NJsdVH;31/&-0,9+C)M(W&b$n"} zk]PC7,# !"+5?KWdrӃҖЪ pcVI>3)  '0: F TcsuhZNB8.%  !)4@O_qzl^QF;2)!  ",8GYlpbUH>4+#  $0?Qdv'''*/6@JU_hpx~!%$%',4>GR\fmu{##!!!#* 2;EOYbjqx~% #'/ 8AKU_gnuz)'"! $,4= GQ[cjqw},*&(( %( 09CMV _ g n t z /--/.+#&+!3=HR[cjpv|21 4 540+$$,"7$B%M&V'^(f(l(s(y(((((''&%%$$####5 49 ; 94,+%.20=2H2R3Z3b3h3o3u3{222210/..--,+++8 9?@=526 9-;9CDCA= @B(D4D?DIDQDYC`CgBmBtB{AA@? > = < ; ; : 9 9 9 9 =BGILKGHK$L0L;LEKNKUJ]IcIjHpHw G F F E D C B }A {@ z? y> y> y> y> >FKPSSNPR S-S8RARJQRPYO`Nf Nm Mt L| L K }J{IxHvGuFtEsDrCrCrCrCAINUYZUVXY*Y5X>WGVOUVT]Sc Sj Rq |Qy zPxPvOsNqLoKnJmIlHlHlGlGlGCLSZ^_\\ ]^&^2];\D[LZSYZ }Xa {Wg xVn vVvtUqToSmRkQiOhNgMfLfLfKfKfKFOW^cdaabc$b/b9aA`I}_Qz^X w]^ u\e r[lpZtnY}lXiWgVeUcTbRaQaPaPaOaOaOIR[bghfefg!g,f6e?{dGxcNubU ra\ o`c m_jk_ri^{f]d\a[_Y]X\V\U[T[T[S[S[SLU_fklkjkkk*~k4zj=viEshLpgS mfZ jea hdhfcpcbyaa^`\_Z^X\WZVYVXVWVWVWVWOYcjopono o}p'yo1uo:qnBnmJklQ hkX fj_ cifahn^gw[fYeWdTbS`Q_Q]Q\Q[Q[Q[Q[R]gotssst }txu$tt/pt8ls@irHfrOcqV ap] ^oe[nlYmuVkSjQiOgMeKdKbLaL`L_L_L_Ublsxwwx~ywzrz!nz,kz6gy>dyFaxM^wT [v[ Yuc VtkSssPq~NpKnImGkFiFhFfFeFdFdFdZgpx|{|~xplh)e3a<^D[KY~RV}Y S|a P{iMzrKx|HwEuCtAr@p@n@l@k@j@j@j`lv~}rj ea%^/[9XAUHRPPWM_ Jg GpEzB?}=|;z:x:v:t:r:q:q:qfr|{nc]Y V+S5Q=NELMIUG\De An >x <975444|3{3z3z3zmyyj^T PM%K0H9FADIBQ?Y=b;k8v5 3 1 / . . - - - - - vugZMFC@)?3=<;D9L7U5^3h1s/,*)'''&&&&reVI<75!3*240</E-N,X*b(n&{$"!ˆ|oaRD8, )' %)$2";!EOZftvhZL?4)$-7BN [ i yŊÝ|n`RF:/% '2>KZiz׍ԡҶseWK?4+!  +8FVhzxi\OC8.% $1@Rdw}n`RF;1( )9K_q&% %(+4=HS]fnu{#""$)2;EPZckqw}! '/8BLW`gnty~  %,4>HS\cjpv{"!)0:DNW_flrw|%"$, 5?IS[bhnty(% % &#&/ 9 C MV^dkqv|+ (+ , )"'3>HQY`g m s y  .-21, $ ""&.(9)C*L*U+\+c+i+o+u,|++++*)(('&&%%%13762/* .1)243>4H4P5X5_5e5k4r4x44433210/.----38;<>;68:$<0<:=D=L=T=[=by=w<v;t:t9s9s9s98@EKNMHHIK(K3K<KEJMITI[HaHhGn~Gv|F~yFwE uD sC qB pA n@ m? m> m> l= l= ;CJQTSNN PQ%Q0Q9PBPJOQNX}N^{MeyLlwLsuK| sK pJ nI lH jG iE hD gC gC fB fB fB >FPVZXTTUV"V-V7U?UG|TNySUwR\uRbsQiqPq nPy lO jN hM fLdKcJbIaH aG aF aF aF AJT[^]ZYZZ[*[4}Z=zYDwXKtXRqWYoV`mUg kUo iTw gT eSbR`Q^O]N\M\L\K[J[J[JDNX_a`^]^__'{_1x^:t^Bq]Io\Pl[Wj[^hZe fYm dYu aX _W]V[UYSXRWPWOWNWNWMWMGR\cedbbb czc$vc/sc8ob?laGjaNg`Ue`\c_c a^k ^]s \]~Z[XZVYTWRVRTRSRRRQRQRQJV`ghgffgzhuh!qh,ng5kg=hgEefLceS`eZ^da \ci Ybr Wa|U`R_P]N\MZLYLWMVMUMUMUN[dkkkjk|lulpmlm)im3fl;clC`lJ^kQ[jXYi_ Vhg Tgp RfzOeMdKbIaG_G]G\G[GZGZGZS_ionnn~ovqorjrfr&cr0`r9^rA[qHXqOVpVTo^Qne Omn Llx IkGjEhCfBeAcAaB`B_B_B_Xdmrrrryupvix dx`y#]y-Zy6Xy>UxFSwMPwTNv\KudItl Fsv Dr Ap?o=my ;x 9v 8t 6r 6q 6n 6m 6l 6k 6k epy{zz|rh\U QN%L/I7G?EGCOAW?_ ;8#7,553=2E0N/W-a+l)x'%$"!"!!!!}wj^QE8/-+$*-(5'>%G$P"[!fssg[NA5) "+4=GR^k{ }pdWI<1&   '1;FR`oyk]OC7,"",7CQ`qʄȗƫpbTH<1'  &1>N_qߛݬ۾ugYL@5+" +9J]ozk]PC8.%  $4EXk}$ ##$)1;FR\dkqw|!  !&/9CNX`gmsx}$,5@KT]djouz~!)2<FPX_fkqv{  %.7AKS[bgmrw|   (2<ENV]cinsx~!   !+6@IQY_e k p v { $ #!  $/:CLT[agmrx&&)% * 5!>"G"O#V#]#c#i$o$u$|$$$##"! ),.--*$ &)%+0,:,C-K-R-Y-_.e.k.r.y.---,+*)(~(}'}'}'+12896103 4+565?6G6N6U6\6b6h5o5v5~554}3{2z1x0v/u.u.u-u-/5:@B?:9;<'=2=;=C=K=R=Y<_l=j<i;h:g9g8g8g86=GMNLHGHI I+I4I=~ID|HKyHRwGYuG_sGfqFmoFumEkEiDgCeBdAb@b?a>a=a=a=9CLRRQLLMNN(N1{N:xNBuMIsMOqLVoL]mKdkKkiJsgJ}eIcIaH _G ^E \D \C \B[A[A[A<GQVVURQR R}S%yS.vS7sR?pRFnQMkQSiPZgPaeOicOqaO{_N ]M [L ZK XI WH WF WE VE VD VD ?KUYYXVUV |WwW"tW,pW5mW<kVChVJfUQdUXbU_`Tg^To\SyZR XQ VP TO SM RL RJ RI RH RH RH BPY\\\ZZ~[w[r\o\)k[2h[:f[Ac[HaZO_ZV]Y^[YeYXnWWw UW SU QT OS NQ MP MN MM ML ML ML GT]___^^y_r`m`i`&f`0d`8a`?_`F\_MZ_TX^\V^dT]lR\v P[ NZ LY JW HV HT HR HQ HP HP HP LXabccb{csdme hede$ae-^f5\e=ZeDXeKUdSSdZQcbObjMatJ` H_ F^ E\ CZ BY BW CV CU CT CT Q]effffvhnigj bk^k [k*Yk3Wk;TkBRkIPjQNiXLi`JhhGgrEf~ Ce Ac ?b >` =^ =\ =[ =Z =Y =Y Vbiiiijrminap\qXqUq'Sq0Pq8Nq@LqGJpNHpVFo^DngAmp?l|=k ;j 9h 8f 7d 7b 8a 8` 8_ 8_ \gmmmm}noqet[wUx QxNx#Kx-Ix5Hx=FxDDxLBwS@v\>vd;un9tz7r5q3o2m1l1i1h1f1f1fcnqqqqyskwbyW}MHFC)B1@9>A=H;P9Y7~b5}l3|x1{/y-w,v+t+q+o+n+m+mjuvuuvvxi|^SH?=:#9,745<4D2L1U/_-i+u*(&%$}$z$x$w$v$vr{zzz~{rfZOD820/&-.+6*>)F'P&Z$d"q!{zncVK@4) %#"& /7?IS^kywk_SG<1& %-6? J V cqsh\PD9.# !*4>JXfv}qfZL?4)  '1<IXiz|m_QE9.$!,9HYj}ԒӧжrdVI=2( &4DWkwi[MA5+! /?Sh|"!!"%/:EPYagmsx} #,7BMU]djoty~ !)3>HQY`fkpuz~&/9CLT[bglqvz  !*4>GOW]chmrv|  $/8AJQX^dinsx~ (2<DLTZ`ejou{  !, 6 ? G OV\aglry  &1:BJQW]ciou}$$))&"!#,$5%>%F&M&S&Z&_&e&k&r'z'&&&~%|$z#x"w"w!v v $(/330,)+-'.1.:.B.I.P/V/\/b/h/o/w}/{/y.w.u-s,r*p*o)o(n'n')-7;;852 35#5-666>6E6L6S~6Y|6_{6ey6lw6tu6}s5q5o4m3l2j1i0h/h.g-g-,5>AA?<9:;<)<2<:~`=^<];\:\9[8[7[73@IJJIFEE FzF#wG,tG4qG<oFCmFJjFPiEWgE^eEecEmaEv_D]D\CZBX@W?W>V=V<V;V;8DMNNMJIJyKuK qK)nK2kK9iK@gKGeJNcJTaJ\_Jc^Jk\IuZIXHVGUFSDRCQAQ@Q@Q?Q?<IPQQQONzOtOpPlP&iP/fO7dO>aOD_OK^OR\OZZNaYNjWNsUM~SLQKOJNHMGLELDLCLCLCAMSTTTS}RuSoTkTgT$dT,aT4_T;\TB[TIYTPWSXUS_SShRRqPR|NQLOJNIMHKGIGHGGGFGFEQVWXWWxWqXjX fYbY!_Y*\Y2ZY9XY@VYHTYORXVPX^NWfMWpKV{IUGTESDQCOCNCLCKCJCJJUYZ[ZZs[l\e]`^\^Y^'W^0U^7S^>Q^FO^MM^TK]\I]eG\nE[yCZAY@X?V>T=R>Q>P>O>OOZ]]^^|^n`fa`cZcVdSd$Qd-Od5Md<KdCJdKHdRFcZDbcBbl@aw>`<^;]9[8Y8W8V9U9T9TT_`aaaxbkebfZhTi PjMj!Kj*Hj2Gj9EjACjHBjP@iX>iaq>=qE;qM:pU8p^6oh4ns2m0l/j-h-f-d-b-a-`-`ahhhh{ipken[qRsGw@y=y;y"9y+8y26y:5yA4xI2xR1w[/we-vq+u~)s(r'p&n&l&j&h&g&ghlllmxmnoatWwNzC}9 421&/..6,=+E)N(W&b%m#~{!| {yvtrqoopqqqqurju_zT~I?4+ (& %(#0"7!?HR]iw}{zxxwvvv|vryg}[PE;0% (08AKWc q }|{{z}ncXLA7,"  '09CN[hxvk`TI>3)  %.8CP^nsh]QF;0& "+6BQas~rf[NB6+!  (3AQcvʋɢǸ}paSF:/%  #0?QdxufXJ>2( ,=Pdx #-9DMV]djoty}!*5@IRY`fkpuy~'1;EMU\bglquz #-6@HPW]chlqv{  '1:CKRX^chmqv|  ",5=EMTY_dimrx~&/8@HOUZ`ejou{  )2;CJPV\afl r y   #-6>ELRX]ciov~}{zyxx $#!(19AHNTZ_e l s {} { ywusrqppp"+--+'" $%#&,'5'='D'J(P(V~(\|(bz(ix(pv(yt(r(p(o'm&k$j$i#h"h"h!!+24420,,-.(/1/9~/@{/Fy/Mw/Su/Yt/_r/fp/nn/vm/k/i/g.f-d+c*b)a)a(a(%29::863344$|5-y55v5<t5Cr5Ip5Pn5Vm5]k5di5kg5tf5~d5b4`4_3]1\0\/[.[-[-+8=??>;99 }9y:!u:*r:2p;9n:@l:Fj:Mh:Sf:Ze:ac:ia:r_:|]:\9Z9Y7W6V5V3V2U2U21=ACCB?>|>w?s?o?'l?/j?6h?=f?Dd?Jb?Q`?X_?_]?g[?pY?zX>V>T=S<R:Q9P8P7P6P66BEFGFC~BwCrCmDjD$gD,dD3bD:`DA^DG\DN[DUYD]XDeVDnTCyRCQBOAN@L>L=L;K:K:K9;FHJJIGyGrGmH hHdH!aI)_I1\H8ZH>XHEWHLUHSTH[RHcQHmOHwMGKFJEHDGBGAG?G>G=G=?IKMMM~KtKnLhL cM_M\M'YM.WM5UM<SMCRMJPMROMYMMbLMkJLvHLFKEIDHCFBDBCBBBABACLNOPPzOpOiPcQ^RZRWR$TR,RR3PR:NRAMRHKRPJRXHR`GQiEQtCPAO@N?L>J=I=G>F>E>EHPQSSSvSkTdU^VXWUWQW"OW*MW1KX8IX?HXFFXNEWVCW^AVh@Vr>U]\<\f:[q9[}7Y5X4V3U3S3Q3O4N4NSWXYYzZoZc]\_SaMbHcEcCc$Ac,?c3=d:j;j!:j)8j06j75j>4jF2jN1iW/ia.hl,gy+f)e(c'a'_']'[(Z(Z^_``}`rahc^fUhLkBn9q 5r3r2r%0r,/r3-r;,qB+qK)qT(p^&pi%ov#n"l!j hf d c a accddydoeegZkQnHq>t4x,z*z(z 'z(&z/$z6#z>"zF yPyZxfwsvtrpnljiihhhhviljbmWqMuDx:{0% ")19AKVbo~ ~ | y w u s r qmmm}msnip_tTxI|@6,"" * 2 : DO[hw~}|{srrzrqtfx[}PE;2( !*2<GSaoyxxyxm}bWMB7.$  )2<IWfvvj_TI?4*! &1<JZk~sh]RG<2'  ".:K]q~rg\PC7,! +9J^s܉ڞگٽ~sdUG;/$(8J_s",7AJRZ`fkpty~(3=FNV\bglpuz%.8AIQW]chlquz  *3<DLSY^chlqv{  $.6?FMTY_chlqw} (19AHOUZ_chmrx#,4<CJPUZ_diou|%/7>EKQV[`fkry}||| ) 2 9 @ G M R X ]cipx~|zx v u s s r r  #,5<BINTZ~_|fzmxuv~trpomlkjii%''&#( 0 8!>}!Ez!Ky!Pw!Vu!\s"cq"jp"rn"{l"j!h!f eccbba',..-+'%&'$|(,y(4w(;t(Ar(Gp(Mo(Sm(Yk)`j)gh)pf)yd)b)`(_']&\%\$[#["["#.24421., {-w. t.(r.0o.7m.>k.Di.Jh/Pf/Vd/]b/ea/m_/w]/[/Z.X-W,V*U)U(U(U'*3689754z3u3q3n4%k4-i44g4:e4Ac4Ga4M_4T^4[\4cZ4kY5uW5U4T3R2Q1P/P.O-O,O,/7:<=<9z8t8o8k8h8"e9*b91`97^9>\9D[9JY9QX9YV9aU9jS9tQ9P9N8M7L5K4J2J1J1J04;>?@?}=u<o<j< f=b=_=']=.Z=5X=;W=AU=HS=OR=WQ>_O>hN>rL>~K=I<H;G9F8F6E5E5E49>ACCCy@q@jAeA`A]BZB$WB+UA2SA8QA?OAFNBMMBULB]JBfIBqGB}EAD@C?B=A<A:A9A8A8=ADEF~FuDlDfE`F[FXFUF"RF)PF0NF6LF=JFDIGKHGSFG[EGeDFoBF{AE?D>C=A<@<>===<=;ADGHI{IqHhHaI[JVK RKOKMK'JK.HK4GL;ELBDLICLQALZ@Lc?Kn=KzQOW09WE8WM7VV5V_4Vj2Uv1T0S/Q.O-M.L.J.I.HLOQQ{RqRfS\VUWMYE[@\ =\;]9]&7]-6]44];3]B2]J1\S/\].\h,[t+Z*Y)W(U'S(Q(O(N)NPSTUwUmVcWYZR[J]B`:c6c4d2d#0d*/d1-d8,c?+cG)cP(cZ'be%ar$a#_"^!\ Y!W!V"U"TUWXXsYjY`[W^O`Fc>e5i.k+k*k(k&'k-%k4$k<#kD!jM jWibioh}fec`^\[[Z[\{\p]g^]`ScKfBi:l0o&r"s ss"s)s0s7s?rIrSq_qkpznlj hfdcb_``v`madbZePiGl>o5s,v"y| |||#|*|2|: {C {N zZzfxuwuspnmlkde~dsejebhWlLpCs:w1z(~ $,4=GS`o}{xvutjiziqjik^oSsIx?|6,#$,5?KXgwooxopoesZyP}E;1( #,6AO^ouuwumyb~WLA7-$ !+6CRcv||uj_TI?4*! )6DVi}si^RG=3( &4EZn҄ИЪϹ~sh^SE8-!  #3DZq*4=FNU\bglquz&/9AIQX^chlquz !+4<ELSY_chlqu{  &/8@GNTZ_chlqv| !*3;BIOUZ^cglqw~ %-5=DJPUZ^chmsz (08?EKPUZ_diov~"*3:@FLQV[`els{~{yxwvuu  %-5<BHMRW]c}i{py yw usqpnmlll  (07>C}I{NyTwZv`tgrnpwnljhgedcc c  ""!#|+z3x9v?tErKpPnVm]kdilgueca`^]\[[["&))(&# {w t!'r!/p"6n"<l"Bj"Gh"Mf"Se"Zc#aa#i_#r]#}\#Z#X"W VUUTT!(,..-,|)x&t&p'm'$j(+h(2f(8d(>b(Da(J_)P])W\)_Z)gX)pV){U)S)R(P&O%O$N#N"N!&-0231|0v.r,m, j-f- d-(a-/_.5^.;\.AZ.GX.MW.UU.\T/eR/oP/zO.M.L-J,I*I)I(I'I&+14665x4r2l1h2 d2`2]2%[2,Y22W28U2>T2DR3KQ3RO3ZN3cL3mK4xI3H3F2E0D/D-D,D+D+/479:|9t7m6g6b6^7[7X7"U7)S7/Q75O7;N7BL7IK7PJ8XH8aG8kE8wD8C7A6@4?3?1?0?/@.38:<<x<p9i9c:];Y;U;R;P;&M;-K;3I;9H;@G;GF;=:<8;7;5;4;3;26;=??u?l=d=^>Y?T? P@M@J@$H@*F@1D@7C@>B@EA@L?AU>A^=Ah;@t:@9?8>7<6;69787776:=@A|BrBiA`AYCTCODKDGEEE!CE(AE/?E5>E<=ECADFGuHkHaHWJQKKMDN?O y4}+" '0:GVfxlulnldpYuOzD:0' &0<K\n}surlua{VKA7,# $0>Nav}yu|j_TI?4*!  "0@Rg}ȒƦŸsi^SH>4* /BWl'/8AIQX^chmqv{ "+4=EMSZ_dhmqv{  '08@HOUZ_dhlqv|#+3;CJPUZ_chlqw~ &/6>EKPUZ^cglrx!*19?FKPUY^chmt| $,4:@FKPUY^cipx~|{zzz '.5<AGLPUZ`fl}t{~ywusrqppo !)07=BH}L{RzWx\vctjsrq{omkihgfff  $~,{ 2y 8w >v Dt Ir Nq To Zm `k hi qg {e c b ` _ ^]]\  {xu's.q4o:m@kEjKhQfWd^bf`n^y][YXVVUUU!#$#~!yvspm#j*h0g6e<cBaG`M^T\[ZcYlWwUSRPONNNN"'()(x's%o"l i f!c!&a"-_"3]"9\"?Z"DX#JW#QU#XS#aQ$jP$uN$L#K#J!H HHHH!'+--z,s+n)i'f& b&_'\'#Z'*X'0W'6U(;S(AQ(HP(NN(VM)_K)hI)sH)F)E(D'C%B#B"B!B!%+.01v0o.i-d,`,\,Y,V, T,&R,-P,3N,9L,?K-EI-LH-TG.]E.fD.qB.~A-@,>+>)=(='>&>%).13{4r3k2e0_0[0W0 S0P1N1$L1*J10H16F1<E1CD1JB2RA2[@2e>2p=2}<2;1:/9.9,9+9*9),146x6o6h5a3[4V5Q5 N5K5H5!F5'D5-B53A5:@6A>6H=6P<6Y;7c97o86|76655342404/5.5-0478u9l9d8\7V8Q9L9H9E9C:A:%?:+=:1<:8;:?9:F8;N7;X6;b5;m3;z2:1907060402011137:};r;i<a<X;R<L=G=C> @>=>;?#:?)8?/7?65?=4?D3?L2?V1?`0?l.?y->,=+;+:+8+6,5,46:<z>o>f>^?T?M@GABB>C :C8D6D!4D'3D-1D40D;/DB.DJ-DT+D^*Dj)Cw(C'A&@&>&<&:'9'8:=?w@lAcAZBPCJDDE>G9H4I2J0J/J%-J+,J2+J8)J@(JH'JR&J\$Ih#Iu"H!F E C A!?!>"=>@BsChD_DWEMGGHAI;K4M.O ,P*P(P"'P)%P/$P6#P="PF POPZOfNsMLJHFDCBBD|FoFeG\HTHKKEK>M8P0R(V$W"W!WW%W,W3W:WCVLVWUcUqTRPNLJIHFHwIkJaJYKQLINBP;R4U,X$[^ ^^^"^(^/^7^?^I]T ]` \n [} Y WUS Q P OKLsMhM^NVONPFS?U8X0[(^ adff f f$ f+f2e;eDeOd[cibxa_][XWVO{PnQdQ[RTSLUCY;[4_,b$ehkn nnnn&n-n6m?mJlVkcjrigeca`_TvUjUaUYVRXH[?`7c/f'ilo ruuvww w(w0w9vCvPu]tms~qomkih~ZqZgZ_ZX[N_Dc;h3k+n"ruwz}~ ~")2<HVf~x|{xvutx_m_e___UcKg@l7q.u&x{~  "*5@N^ptdkded\gQlGr=w3|)   *5CTf{rjljdmYrNxC~9/% *8I[osplraxVK@6," *9Lawtyj_TI?4*  +<Pf{ߐݠ۬ #,4=EMSY_dhmqv|  (09AHOUZ_dhmrw}#,4<CJPUZ_dhmrw~ '/7>EKPUZ^chlry#+29@FKPUY^cgms{ &-4:AFKPTY^chnv!(/6;AFKOTY^djrz}{ywvutts #*17<AFK~P}U{Zz`xfvntwrpnmlkjji %~,|2z8y=wBvGtLsQqWo]nclkjthfecba```  ~{x u's.q4p9n>mCkHjNhTfZeacias_~][ZYXWWW{wv s p m "k )i /h 5f ;e@cEaK`Q^X\`ZhXrV~TSQP O O O O ztpmk hfc%a+_1^7\<[BYHWNVUT]RfPpN|MKIHGGGG!#}$u$o"j gda^\!Z(X.V4U9S?QEPKNRL[KdInGzFDCBAAAA"%'y(p(j&e%a#^![ X!U!S!%Q!+O!1N"6L"<J"BI"IG#PF#XD#bC$lA$y@#>#=!< ;<<< &)+u+m+f*a(\'X&U& Q&O&L&!J&(I&.G&3E'9D'?B'FA(N@(V>(`=(k;(w:(9'8&7%6#7!7 7 #),|.r.i.b.],X*S+O+L*I+F+D+%B++A+0?+6>+==,D<,L:-U9-^8-i6-v5,4,3*2)2'2&3%3$'+.y0o1f1_1Y/S.N/J/F/ C/A/?/"4;494 74&64,44235925@15H05Q/5[.5g-5s+5*4*2)1)/)-*,*+-13s5i6`6Y6R6J6D7@7<888694929$19*/90.97-:>,:F+:O*:Z):e'9r&9%8%6$5$3%1%0&/14}6p7f8]9V9N9E:@;;<7<3= 1>/>->",>(*>.)>5(?<'?D%?M$?X#>c">p!= <;975 4!347y9m:c;Z;R;K<C>>>9?3A.C +C)D'D&D&$D,#D3"D:!DB DKDVCaCnB}A@>;:987:v<j=_=W>O>H?@A;B6C/F)H$J"J JJ#J)J0J7J?JHJSI_IlH{GECA?=<;>r?f@\@TALAEC>D9F3H,J%MP QQQ Q&Q-Q4Q<PFPPP\ Oi Nx M K I G E C B?{AmBbCYCQDJEBF[5_-c%fil ortvw wxyz${,{5{AzNz]xnwutqonnWdW\WVWM[C_:d0i(l psvy{~ %.9FVg{||j\b\\\T_Id?i5o,s#w{~ %0=M^ribcb[dPiFo;u1{'  %1@Sg~jhcjXpMvC|8.$&5G[qkpavV}K@6+!  &7JaxҏѡϬ  (09AHOUZ_chmrw} $-5<DJPVZ_cgmrx (07?EKQUZ^bgmry $+3:@FKPUY]bgms{'.5;AFKPTX]bhnv ")06<AFKOSX]ciqz~}{zyyy $+17<AFJOSX~^|ezlxuvtsqponnm&,~2}7{<zAxFwJvOtTsZqaohmqk{jhfeddcc |zx!v(t.s3q8p=nAmFlKjQiWg^eecnay_^\[ZZZZ ~ y wt rpm#k)j/h4g9e>dCbHaM_T^[\cZlXwVUSRRQQQ ~wqnl khfc%b+`0^5]:\?ZEY KW QU YS aR kP vN L K JIIIH xpkgdca ^\ Z'X,W2U7T=RBQHOOMWK`IjHuFDCBA A A A }s kfa^\Y WUS#Q)O.N4L9K?IEGMFUD^BhAt?><;;;;; y#o#g#a#\!YVS PNL J&H+F1E6C<BC@J?R=\<f:r98665556 $v&k'c']&X$T"P!M!J G E C #A!(@!.>!4=!:<"@:"H9#P8#Z6#e5#q3#~2"1!0 0001$'r(h)`*Y)T(P%K%G%D% A%?%=% ;%%:%+8%17&76&>5'F3'N2(X1(c0(o.(}-',&,$+"+ ,-"&|)o+e,],V,P+K)F)B)?)<)9)7)5)#3)(2*/1*50+</+D.,M-,W,,b+,n),|(+(*'('&'$(#("%)y,l-b.Z.S.M.G-B->-:.7. 4.2.0.!/.'-/-,/3+/:*0B)0K(0U'0`&0l%0{$/#.","*"(#'$&',v.j/`0W1P0J0D0=1925222 /3-3+3*3%(4+'41&48%4@$4I#5S!4^ 4k4y320.,+**.s1g2]3T3M3G3@3955507-7)8'8&9$9"#9)"9/ 969>9G9Q9]9i8x76420/..~1o3d4Z5Q5J5D6=77839.:(<$= !> >> >&>->4><>E>O>Z=g=v<:975321z4l6`7W7N8G8A8::5;0<+>%@C DDDD$D*D1D9DBDLDX Ce Bs A @ > < : 8 75u7h9]:S:K:E;>;8=3>-@(B!EHK KKK! K' K. K6 J?JIJTIaHoGEDB@>=9q;d<Y=P=I=B>M^q~{zyw`UYUTTLWB\8a.f%kor vy|~  *6EVi_ZZZS\Ha>g4m*r w|!,;L`va`ZaPgEm:t0z&  .?SjbgXmMsB{8-#!2F]sɉɝǫ $-5<DKPV[_chlqx!)18?FLQVZ^cglry $,3:@GLQUY^bgls| (/5;AGKPTX]bgmv #*17<AFKOSX]bhpy%,27<AEJNSX]cj}t{~yxvutssr  '-27<}@|E{IyNxSwYu_sfqooynljihggg~ |zx"w(v.u3t7r<q@oEnJlOkTi[hbfkduba`^]]\\|yusqom#l)j.i3h8f<e@dFcKaQ`W^_\h[rY~WVUTSSS { t omk hgec%b*`/_4^8\=[BZGXMWTU\SeRpP|NMLKJJK ~tmhd ca `^\ Z&X+W0U5T:S?QDPKNRMZKdInG{FECCBBB xnga^[Z YVTR"Q (O -N 2L 7K <J BH IF QE YC cA n? {> = < ;;;;sib\XUSQPMKJ$H*F/E4D:B@AG?O=X<b:m8z76544 4 4 |oe^XSPMKH FDB!A&?,>1=7;=:D8L7V5`4l2y10/..//xl!b"Z"T"O KHEB @><:#9)7.645;3B2J1T/^.j-w,**))**u"i$_%W%Q$K#G"C @ = :864 3 &1 ,0 2/!9.!@-"H+"R*#])#i("v&"%!%$$%%!r$f&\'T'M'H&C%?$;$8$5$ 2$0$.$,$#+$)*%0)%6(&>'&F&'P%'[$'g"'u!&!% # ! ! }$o&c(Y)Q)K)E)@(;(6(3(0(-)+)))')!&)'%*.$*5#*<"+E!+N +Y+f*s*)'%#"!#z&l)`+V+N+H+B+=+7+1,.,+-(- %.$.".!.% .,/3/:/C/M/X/d/r.-+)'&%%w)i+]-T-L-E-?-:-4.//+0&1#2 3333#3*40484A4K4V3b3p21/-+*)(s,f.Z/Q/I0B0<07012-2(3$578999!9'9.969>9H9T 8` 8n 7} 6 4 2 0 . -,o/b0W1N2F2@2:253/4+5&7!9;> ??? ?% ?+ >3 >;>E>P=\=j @CE HK KKKK%K,K4K=JHJTIcHrGFCB@>p7b9V9M:E:?:::5;.>(@"CFILOP QRRS!S(S0R9RDRPQ^PnOMLIGFj;]<R=I=C===9=1@*D$GJMP RUW X XYZ[$[,[5[?ZKZYXiW{UTRPOe@Y@O@G@A@=@5C.G&K NQT WZ]__ `abcd&e/e9dFdTccav`^\[X_DTDLDFDAC:G1K)O"SVZ ]`beghi jklm!o)p4o?oNn^lpkigfeZIQIKHFH?J6O-T$Y\` cgiloqrst vwy{"}+~7}E|V{hy}wusrWNPMLLDO;T1Y(^cg knrtwy|} #/=M`uVSRRKTAZ7_,e#jpsw{~ &4DWlXXRYG_=e2l(rx}  *:MbzY_OdDk:r/z%,?Um!)18?FLQV[_chmsz %-4;AGLQVZ^chnt|!(/6<BGLPUY^bhnv $+17=BFJOTX]bipy&,28=AEINSX]cjs}~|zyyxx !'-27<@DI~M|SzXy^weunsxqonllkkk~|{"y(x.w3v7u<t@rDqHpMoSmZlajihsfdcaa``_}xu rpon$m)l.k3j7i;h?gDeIdOcUa]_e^o\|ZYWVVUUysoki gfec%b*b.`3_7^;]@\EZKYRWYVaTlRxPONMLLLzqjeca_]\[ Z%Y*W/V3U8T<RAQGONNVL^KiIuGFEDDCC t j c^ [ YX VUSR"P&O+M0L4K9J>HDGKESD\BgAs?>=<<<< znd]XTR P O NLJI#G(F,E1C6B<AB?I>R<[;f9r8665555 ui`YSOLJH G E C B @ %? )> /< 4; :: A8 H7 Q5[3g2s0/ . . ...qe\UOJFDBA?=;:!8'7,62483?1G0P.Z-e+r*)('' ( ( |nbYQKFB?=;9 7532$0)//.5-<+D*N)X'd&p%$#"""#yk_V N H C>;853 1/-,!*')-(3':&B$L#V"b!o~vh\!S"K"E"?!;!7 30.+ )'%$$# *" 1!!8 !A!J"U"a!n!} se"Z#P$H$B$=$8#4#/#,#)#&# ##"$ $$"$(%/%6%?&H&S&_%m%|$" o!b$W%M&F&?&:&5&1%,&''$'!(())) )&)-*4*=*F*Q*^*k)z(&% "! | l$_&T'K(C(=(7(3(.())%*!+,- ....$.+/2/;/D /O .[ .h -w ,+)'% $y#i&\)Q*H*@*:*5*0*,+&,#,.02 34 4 3" 3( 30383A3K3X3e2t1/.,*(t&e)X+N,E,>,8,3,.,*-%.!0246 9 9999&9-949=8H8T8b7p6531/.p*a-U.J.B/;/6/1/-/(0#2468 ;> >???#?*>1>:>E>Q=^ @C DDEE E&E.E7EADMDZCjB{@?<;:f1X3M4D4=47434/4(6"9<>A DGIJ KKLM#M*M3M=LHLVKeJwHFEBA`6T7I7A7;76626,9%<?BE HKMPQ RSTUV&V.V8UCTQTaRsQOMLJ[:O:F:?::969/<(?!CFJ MORUWXZ [\]^!`)`3_>_L^[]m[YWVUU>K>C>>=:<3?+C$GKO RUX[^`abd efhi$k-k8jEiUhgf|eca`QBHBBA?@8C/G'LQUY\_begiklno qsuw&y1x>wNv`utrpomNGHFDE=G4L+R!W\`dgjmpsuwxz|~(5EWk~MKIJCL9Q/W&]ch lotwy|  -<NczOPJQ@W5]+d!jp uy} $3EZpQVG\==<<vi ` Y U QONL KJIH"G&F+E/C4B9A>@E>M=V;`:l8y766555p d[TNK H GF DCBA?#>'=,<1;69<8B7K5T4^2j1w0//...y k`WOIEB@ ? > =<:9 7$6)5.443:1A0I/S- ^, j*w)((((( ug\SKEA=;98 7 5 4 2 1 "0 '/ ,- 2, 9+ @)I(T&_%k#z" " ! """ rdYOHB=964310.,+*$(*'0&7$?#H"R ]jx   naVLE?:620-+) (&$#""(!. 5=FP\iw|k^SIB<73/,)&$" %,3;DOZgvxh[PG?940,)%! # * 1 9!B!M!Y!f t      ueXM D!=!7!2!. * & " ""# #$$$!$(%/ %7 %@ %J %V %b$q$" qbV!K"B#:#5#0#+"'"$"#$%'( ) ) ) )%),)4)<)G)R)_)n(~'%#!n_"R#H%?%8%2%-%)$%$"%&'(* - ....#.).1.:.D.O.\-k,{+)'&$j"[$O&E'<'6'0'+''&$' ')+,/1 2333 3'3.373@3L3Y2h1y0/,*)e%W'K(A):)3).)*)&)#)+-/1 36 7 8999$9+949=9H8V8e7v5430/a)S*H+>,7,1+-+)+&+ -024 69;< =>?@!@(@0@:@E?R>a=s<:985\,O-D.;.5.0.,-)-#/257 9<?AB DEFGH$H,H6GAGNF]EnCA?>>V0J1@19131/0,/&2 58;=@CEHIK LMOP Q(Q2P<PIOXNiL~KIGFQ4F4=47423/2)5"8<?B EHKNPQST VWY[#[-[7ZDZSXdWxUSQOL8B8;86736-8&<@DG KNQTVYZ\]_ aceg'g1g>fLe^cra_]\G<@<:;7:1<)@!DIN RUX[^acdfhik mor!u+t7sFrXqkoljiE@??<>6@-E$JOT Y]`cfilnprtvxz |#/>Ocy}{yDEACCHMQUY^djs~ '-39>BGKOTY^dkv~| "(.49=AEJNSX^en{~|{yvsq#).38<@D~H|M{SyYx`vhtsrpomkjhg|y xwvu$u)u.t3s7r;q?oCnHmMkTj[hcgme{cba_^]\ysomkjih h%g)g.g2f6d:c>bCaH_O^V\^[gYuWVUSRRRvnhdb` ^^]] \%\)\-Z1Y5X:W?UDTJSQQZPcNpM~KJHHGGyme_[XVU TSRR Q%Q)P-O1N5M:K@JFIMGVF_DlCyA@?>>>pf]VRONL KJIIH!H%G)E-D2C6B<@B?J>R=\;h:v977666zj_WPKHFDC BA@??!>&=*<.;3:98?7G6O5Y3e2r10//..sfZ Q J E A ?=<; :9877"5'4+30261=0D/M-X,c+p*)((((n a VMF@<9 7 654 3210/$-(,.+3*:)B(K'V%b$o#~""!""{j ^RIB<8420 / . . ,+)(!'&&+%2$9#A! K U b o~w gZOF?941.+)( ( & % # " ! $ * 1 8ALWdq  t dWLC<61-*'%#"  #)07@JVbp  qaTI@93/*'$!  '.5>IT ` m }     m^RG>71,($!  $ + 3 ; EP]jzj[OD;4/*&"   "( 0 8 B M Z hwgXLA92,($  ! ####$&$-$5$?$J$W$e#u"!cUI? 6 0 * &" ! # %' (())#)*)3)<)G)T(c(s&%$! `RF!<"4"-"("$!!!  "#% ')+ ,-..!.(.0.9.D.Q-`-p+*('$[ N"B#9$1$+$&### ""$&' ),.0 12444%4-464A4N3]2m1/-,,W#J%?&6&/&)&%%"% $&(* ,/145 7 8:;;";*;3;>:J:Y9j8}6421R'E(;)3)-(((%'#&)+-0 257:;= >@BCC&C/B:BFAU@f?z=;:8L+A+8,0+++(*&) +.14 69;>ABDE GIKM"M+L5LAKPIaHuGDBAG.=/5//.+-),#.158 ;=@CFHJLNP RTVW&W1V=UKT[RpQNMKB29232/1,/'1 59= @CFILORTVWY[ ^`c!d+c7cEbU`i^\YX>6763503+5#9=B FJMQTWZ\^`bdfh knq%r1q?oOnblxjhf<:794809'=BH MRVY\`cfhjlnprux {)7G[}pzyu<>9<5=,B"HNTZ^cfiloruwy|~  .?Rg~>A;A1G'NU[agkpswz} $4G]sAF7L-T#[b iouy~+>Si %,39?DIMRV[`flt~!'.4:?DHLQUZ`fnw~ #)/49>BGKOTZ`hp{}xt$*/48=AEJOTZa}j|uzxvutqmj ~||{%{*{/{3{7y;x?wDuItNrTq[odmnlzjhgfeb`}wsponmm m%m)l.l2k6j:h>gCfIdOcVa^`h^t][ZYXVUxojfcb a``` `%`)`-_1^5\9[>ZCYJWQVYTcRoQ}ONMMKJwld^[XVV UUTT T$S(R-Q1P5O9N?LEKLJUH^GjFwDCBBA@|nd[UQNML JJIII I$H(G,F1E5D;BAAH@Q>Z=f<s::9877tg\SMIFDBA A@@@? ?$>(=-<1:79=8D7M6W5b4o210///naVMFA><;:9 88776!5%4)3.231:0A/J.T-_,l+}*)(((yi\QHA<854321 00/.-",&+++0*7)>(G'Q&\%k$z#"!""teW L C < 7 3 0 .,+* ) )('&&#%($-#4"<!E OZhwpaS H @93/, ) ' % $$ #"!  %+2:CMZgvl^ PE=60,(%"    #)09 B M Y gui [ MB:3-)%!       " ) 1:D N Z g v  f XK@70+&"    ' . 6?JVds  cUH=5.($    $+3<GTbq`RE;3,&"   !(1:EQ`o]OB80*$   &. 7 B O^mYK?6.'"   ! "#$$$$,$5$@$L$Z#k"}!VH<3+%  !# % ')))")))3)=)J)X(i'{%$"!QD90)# "$&(* ,.///'0/0:/F/U.e-y,*(&M@ 6!-!'!"  ! #%'),.0 2 4677#7,666C5Q5a3u20.-H"<#2$+$%#!"! !$& (+-02468 : <>? ?)>3>>=M<];q9864C%8&/&(&$%!$#$'* ,/2479;=?A CFII$H/H:GHFYDkB@>=>)4*-)'($'"&'*- 1469<?ACEGJL NQT S*R6QDPTOfM}KJG9-1-+,'+%) *.2 59<?BEHKMOQSVY \_a$`0_=^M\`ZuXVT61/0+/)-$.27 ;?BFJMPSUXZ\^acfimo*n7mGlYkmhfd44/3-1)2 7<AFKNRVY]`bdgiknqtw{#0@~R{fx~vt4826.6%;AGMSX\`cfimortvy|(7J^u7;4:*@!FM U[afimqtwz}.@Uk:?0E&LT[bintx| $6J`u  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mft1!  !"#$%&'()*+,-./012456789:;<=>?@ABCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~Q՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԛfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԛfԜfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԜfԜfԜfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԜfԜfԜfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԜfԜfԜfԜgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՛eԜfԜfԜfԜgԜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՜eԜfԜfԜfԜgԜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՜eԜfԜfԜfԜgԜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՛e՜eԜfԜfԜfԜgԜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՜e՜eԜfԜfԜfԜfӜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՜eԜeԜfԜfԜfԜfӜgӜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgQ՛d՛d՜eԜeԜeԜfԜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgQ՛d՜d՜dԜeԝeԝfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgR՛d՜d՜dԝdԝeԝfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgR՜c՜d՝dԝdԝeӝfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgR՜c՝c՝cԝdӝeӝfӝfӜfӜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMgY՛e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMhY՛e՛e՛fԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMhY՛e՛e՛fԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMhY՛e՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMhY՛e՛e՛eԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMiY՛e՛e՛eԛfԛfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMiZ՛e՛e՛eԛfԛfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMjZ՛e՛e՛eԛfԛfԛfԛgԛgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMjZ՛e՛e՛eԛfԛfԛfԜgԜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMkZ՛d՛e՛eԛfԛfԜfԜfԜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgMkߜZ՛d՛e՛eԛfԛfԜfԜfԜgӜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgLlޜ[՛d՛e՛eԛfԜfԜfԜfԜfӜgӜgӜgӜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgLnۛ]՛d՛e՛eԜfԜfԜfԜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgLo؛a՛d՛e՛eԜeԜeԝfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgLr՛d՛d՛e՜eԜeԝeӝfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgKu՛d՛d՜d՜dԝdԝeӝfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgK}՛c՜d՜dԝdԝeӝeӝfӜfӜfӜfӜgӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgL՛c՜c՝cԝdӝeӝeӝfӜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgM՜c՝bԞcӝdӝeӝeҝfҝfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJNT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJOT՚e՛e՛fԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJOT՚e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJOT՚e՛e՛fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJOT՚e՛e՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJPT՚e՛e՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJPT՛e՛e՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJPT՛e՛e՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJPT՛e՛e՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJQT՛e՛e՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgJQT՛e՛e՛eԛfԛfԛfԛfԛgԜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgIQT՛e՛e՛eԛfԛfԛfԜfԜgԜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgIRT՛e՛e՛eԛfԛfԜfԜfԜfԜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgIRT՛e՛e՛e՛fԛfԜfԜfԜfԜgӜgӜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgISU՛e՛e՛e՛eԜfԜfԜfԜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgITU՛d՛e՛e՜eԜeԜfԜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgHVU՛d՛e՛eԜeԝeԝeӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgHWU՛d՛d՜dԝdԝeӝfӝfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgGZU՛d՜d՝dԝdӝeӝfӝfӜfӜfӜfӜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgI]V՛d՜cԝcӝdӝeӝfӝfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgJfߞX՜cԞbӝdӝeӝeҝfҝfҝfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgKqP՞`ԞcӝdӝeҝeҝfҝfҝfҜfҜfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH:QiZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH;QjZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH;QjZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH;QkZ՚e՚fԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgH;QlZ՚e՚fԛfԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgHQr[՛e՛f՛fԛfԛfԜfԜfԜgԜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgG>Qs[՛e՛e՛fԛfԜfԜfԜfԜfӜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF?Qtߛ\՛e՛e՛eԜfԜfԜfԜfԜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF?Qvܛ^՛e՛e՛eԜeԜeԜfԜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgF@Py؛b՛e՛e՜eԜeԝeԝfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgEAP|՛d՛e՜d՜dԝdԝeӝfӜfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgDCP՛d՛d՜d՝dԝdӝeӝfӝfӜfӜfӜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgDDP՛d՜c՝cԝdӝeӝeӝfҝfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgEFP՜c՝bԞcӝdӝeҝeҝfҝfҝfҜfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgGMMߥOԞbӝdӝeҝeҝeҝfҝfҝfҝfҜfҜfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgHWH#6BʻLʷRʴWʲZʱ\ʰ^ʯ_ʯ`ʯ`ʮaʮaʮbʮbʮbʮcʮcʮcʮcʮcʮcʮcʮcʮcʮcʮcʮcʮcʮcG+OPW]՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OPW]՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OPW]՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OPW]՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OPW]՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OPW]՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OPW]՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OQW^՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhG+OQWߙ_՚fԚfԚfԛfԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgG+ORWޙ`՚fԚfԚfԛfԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgG+OSWݙa՚fԚfԚfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF,OSWܙa՚fԚfԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF,OSWۙb՚fԚfԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF,OTWښb՚fԚfԛfԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF,OTWٚc՚fԚfԛfԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF,OTWؚd՚fԚfԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF,NUW֚d՚f՚fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF,NUW՚e՚f՚fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF-NUW՚e՚f՛fԛfԛfԛfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgF-NVW՚e՚f՛fԛfԛfԛfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgE-NVW՚e՚f՛fԛfԛfԛfԛfԜgԜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgE-NWW՚e՚f՛f՛fԛfԛfԜfԜfԜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgE.NXW՚e՚e՛e՛fԛfԜfԜfԜfԜfӜgӜgӜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgE.NYW՚e՛e՛e՛eԜfԜfԜfԜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӛgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgD.NZW՚e՛e՛e՜eԜeԜfԝfԜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgD/M\W՚e՛e՛e՜eԜeԝeԝfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgC0M^W՛e՛d՜d՜dԝdԝeӝfӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgC1M`X՛d՜d՜dԝdԝeӝeӝfӜfӜfӜfӜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgB2LdX՛d՜c՝cԝdӝeӝeӝfҝfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg@3LhT՜c՝bԝcӝdӝeҝfҝfҝfҝfҜfҜfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgA4JiNۧKԞcӝdӝeҝeҝfҝfҝfҝfҝfҜfҜfҜfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgC6Jhߴ@+;DKǽQǻUǹXǸZǷ\Ƕ]Ƕ^ǵ^ǵ_Ƶ`Ƶ`ƴ`ƴaƴaŴbŴbŴbŴbŴbŴbŴbŴbŴbŴbŴbŴbE==]o)w3}TeZۙcԚfԚfԚfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhFM>TfZٙd՚fԚfԚfԛfԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhFM>TgZؙd՚fԚfԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhFM?ThZ֚e՚fԚfԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhFM?ThZ՚f՚fԚfԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgEM?TiZ՚f՚fԚfԛfԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgEM@TjZ՚f՚fԛfԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgEM@TjZ՚f՚f՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgEM@Tk[՚f՚f՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgE LATl[՚f՚f՛fԛfԛfԛfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛgE LATl[՚f՚f՛fԛfԛfԛfԛfԜgԜgӜgӛgӛgӛgӛgӛgӛgӛgӛgӛgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgE LATm[՚f՛e՛f՛fԛfԜfԜfԜfԜgӜgӜgӛgӛgӛgӛgӛgӛgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgD LBTo[՚e՛e՛e՛eԛfԜfԜfԜfԜgӜgӜgӜgӛgӛgӛgӛgӛgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgD LCTp[՚e՛e՛e՛eԜfԜfԜfԜfӜfӜgӜgӜgӜgӜgӜgӛgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgD!LCTr[՚e՛e՛e՜eԜeԜfԜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgC!KETt[՛e՛e՜e՜eԝeԝeӝfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgC!KFTw[՛d՛d՜dԝdԝeӝeӝfӜfӜfӜfӜgӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgB"KHT{Z՛d՜d՝dԝdӝeӝeӝfӜfӜfӜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgA#JJSX՜c՝cԝcӝdӝeӝfӝfҝfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg@#ILO{S՜bԞbӝdӝeӝeҝfҝfҝfҝfҜfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg?$HPLvLحBԢ\ӝdҝeҝeҝfҝeҞeџeџeџeѠeѠeРeСeСeСeСeТeϢeϢeϢeϢeϢeϢeϢeϢeϢeϢe<%FFGp(0>FLQTVÿXÿZþ[¾\¾]¾]¾^^___```````````?#CF`#o.x6|>EJNRTVWXYYZ[[\]^^^^^^^^^^^?$ = K+S4X;^@dDiHmIpLsNuPwQxRzTzU{V|W}W}X~Y[[[[[[[[[[[;M+SHXi\_ؙfԚgԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚh;M+SHXi\_ؙfԚgԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚh;M+SHXi\_ؙfԚgԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚh;M+SHXi\_ؙfԚgԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚh;M+SHXi\_՚fԚgԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚh;M+SIXk\_ԚfԚgԚgԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԛhԛhԛhԛhԛhԛhԛhԛhԛhԛhԛh<M,SJXl\`ԚfԚfԚgԚgԚgԚgԚgԚgԚgԛgԛhԛhԛhԛhԛhԛhԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛh=M,SKXn\aԚfԚfԚgԚgԚgԚgԚgԛgԛgԛgԛgԛhԛhԛhԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh=L-SLXo\aԚfԚfԚgԚgԚgԛgԛgԛgԛgԛgԛgԛhԛhԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh>L-SLXp\ޘbԚfԚfԚfԚgԛgԛgԛgԛgԛgԛgԛgԛgԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh>L-SMXq\ۙc՚fԚfԚfԛgԛgԛgԛgԛgԛgԛgԛgԛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh?L.SNXr\ٙd՚fԚfԚfԛgԛgԛgԛgԛgԛgԛgԛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh?L.SNXt\֚e՚fԚfԛfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh?L.SOXu\՚f՚fԚfԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh@L.ROXv\՚f՚fԚfԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh@L/RPXv\՚f՚f՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhAL/RPXw\՚f՚f՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhAL/RQXx\՚f՚f՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛgӛgӛgӛgӛhӜhӜhӜhӜhӜhӜhӜhӜhӜhAK/RRXz\՚e՚f՛fԛfԛfԛfԛfԛgԜgӛgӛgӛgӛgӛgӛgӛgӛgӜgӜhӜhӜhӜhӜhӜhӜhӜhӜhӜhBK0RRX{\՚e՛e՛e՛fԛfԜfԜfԜgԜgӜgӛgӛgӛgӛgӛgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgBK0RSX|\՚e՛e՛e՛eԜfԜfԜfԜfԜgӜgӜgӛgӛgӛgӛgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgCK1RTX~[՚e՛e՛e՜eԜfԜfԜfԜfӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgӜgDK1RUW[՛e՛e՛e՜eԜeԜeԜfӜfӜfӜgӜgӜgӜgӜgӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgCJ2RWW[՛e՛d՜eԜeԝeԝeӜfӜfӜfӜgӜgӜgӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgCJ3RYVZ՛d՜d՜dԝdԝeӝeӝfӜfӜfӜfӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgBJ4Q[TY՛d՜c՝cԝdӝeӝeӝfӜfӜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgBI5O[QV՜c՝cԝcӝdӝeӝfҝfҝfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgAH7KXL|P՝aԞbӝdӝeӝeҝfҝfҝfҝfҜfҜfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg?G9GNL{߭Gֶ<ҫOѦZѤ^ѤaУbФbФcϤcϤcϤcϥdΥdΥdΥdΦdΦeͦeͧeͧeͧeͧeͧeͧeͧeͧeͧeͧe>@/HNAr2>GMQTWYZ¿[¿\¿]^^__``aaaaaaaaaa;B*>Ja(n1w9|@GKORTUVWXXYZ[\\^^^^^^^^^^;;*>$L/T7Z=^BbFeGgHiIkKmMoOpPqQrSsTtUuVuWvYwZx[x[x[x[x[x[x[x[x[x9".*63;9@;D=I?MAQCTEVGXIZK[M\N]P^Q_S`TaUaWbYcZcZcZcZcZcZcZcZcZc. ?O4WM[f]_cݗfԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚiԚiԚiԚiԚiԚiԚiԚiԚiԚi. ?O4WM[f]_cݗfԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚiԚiԚiԚiԚiԚiԚiԚiԚiԚi. ?O4WM[f]_cݗfԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚiԚiԚiԚiԚiԚiԚiԚiԚiԚi. ?O4WM[f]_cۗfԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚiԚiԚiԚiԚiԚiԚiԚiԚiԚi. @P5WN[h]_c՚gԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚiԚiԚiԚiԚiԚiԚiԚiԚiԚi. AQ6WP[j]_ߗdԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚiԚiԚiԚiԚiԚiԚiԚiԚi/ AR6WQ[l]_ۘeԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhԚhԚhԚiԚiԚiԚiԚiԚiԚiԚi/ BR7WR[n]_יfԚfԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԚhԚhԚhԚhӛhӛhӛhӛhӛhӛhӛhӛhӛh0 BR7WSZp\_ԚfԚfԚgԚgԚgԚgԚgԚgԚgԚhԚhԚhԛhԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh0 CR8WTZr\`ԚfԚfԚgԚgԚgԚgԚgԛgԛgԛgԛhԛhԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh0 D R9WUZt\`՚fԚfԚfԚgԚgԛgԛgԛgԛgԛgԛhԛhԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh1 D R9WVZv\ߘa՚fԚfԚfԚgԛgԛgԛgԛgԛgԛgԛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh1 E Q:WVYw\ݙb՚fԚfԚfԛfԛgԛgԛgԛgԛgԛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh1 E Q:WWYy\ۙc՚fԚfԛfԛfԛgԛgԛgԛgԛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh2 F!Q;WXYz\ٙd՚f՚fԛfԛfԛgԛgԛgԛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh2 F!Q;VYY{[֚e՚f՛fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛgӛgӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛhӛh2 F!Q;VZX}[՚e՚f՛fԛfԛfԛfԛgԛgӛgӛgӛgӛgӛgӛgӛgӛhӛhӛhӜhӜhӜhӜhӜhӜhӜhӜhӜh3 G!QT]WZ՚e՛e՛e՜eԜeԜfԜfԜfӜgӜgӜgӜgӜgӜgӜgӜgҜgҜhҜhҜhҜhҜhҜhҜhҜhҜhҜh4 J"Q?T]VZ՛e՛d՛e՜eԜeԝeԜfӜfӜgӜgӜgӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg5 J#Q@S^UY՛d՛d՜d՜dԝeԝeӝfӜfӜfӜgӜgӜgӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg6 J#PAR^TW՛d՜d՜dԝdԝeӝeӝfӜfӜfӜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg7I$OAP]QU՜c՜c՝cԝdӝeӝeӝfӜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg9I%L@L[MzQ՜b՞aԝcӝdӝeӝfҝfҝfҜfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg;H&I=HSMzMڪHԞaӝdӝeҝeҝfҝfҝfҝfҜfҜfҜfҜgҜgҜgҜgҜgҜgҝgҝgҝgҝgҝgҝgҝgҝgҝg>G&C6IOIwܹ<5ϸEγOͰU̯Y̮[̭]˭^˭`˭`˭aʭbʭcʭcʭdɭdǭdƮeĮfĮfĮfĮfĮfĮfĮfĮfĮf?@ C+EP3n!1>FLPTWYZ\]^^_`abcddddddddd=;A.,J!^,k4t;zB~HMPSTVWXYZ[\]_`bbbbbbbbb3<+,>(K2S9Z?_DcFfHiIkKmMnOoPpRqSrTsVtWtYuZv\v^w_w_w_w_w_w_w_w_w8.#$.-65=:BWWZr\^ޘcԚfԚgԚgԚgԚgԚgԚgԚhԚhԚhԚhԛhӛhӛiӛiӛiӛiӛiӛiӛiӛiӛiӛiӛi~%7G)U?WXYt[]ۙcԚfԚfԚgԚgԚgԚgԚgԛhԛhԛhԛhӛhӛhӛhӛiӛiӛiӛiӛiӛiӛiӛiӛiӛi%7G)U@WYYu[]ؙd՚fԚfԚgԚgԛgԛgԛgԛgԛhӛhӛhӛhӛhӛhӛhӛiӛiӛiӛiӛiӛiӛiӛiӛi&7H)T@VZXv[]՚f՚fԚfԚfԛgԛgԛgԛgԛgӛhӛhӛhӛhӛhӛhӛhӛhӛiӛiӛiӛiӛiӛiӛiӛi&8H*TAVZXwZ]՚f՚fԚfԛfԛgԛgԛgԛgӛgӛgӛhӛhӛhӛhӛhӛhӛhқiқiқiқiқiқiқiқi&8H*SAU[XxZ]՚e՚fԛfԛfԛfԛgԛgԛgӛgӛgӛgӛhӛhӛhӛhӛhқhқhқhқhқhқhқhқhқh&8I+SAU[WyZ\՚e՛e՛fԛfԛfԛgԛgӛgӛgӛgӛgӛhӛhӜhӜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜh&9I+RBT\WzY\՚e՛e՛eԛfԛfԛfԜgӛgӛgӛgӛgӜgӜhӜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜh'9J+RBT\VzY\՛e՛e՛e՛eԜfԜfԜfӜgӛgӛgӜgӜgӜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜh':K,QBS\UzX[՛d՛d՜eԜeԜeԜfӜfӜgӜgӜgӜgӜgҜgҜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜh':L,PBR\TzWZ՛d՛d՜dԜeԝeԝfӜfӜgӜgӜgӜgҜgҜgҜgҜhҜhҜhҜhҜhҜhҜhҜhҜhҜhҜh(;M,OBQ[SyUY՛d՜d՝dԝdԝeӝfӜfӜfӜgҜgҜgҜgҜgҜgҜgҜgҜhҜhҜhҜhҜhҜhҜhҜhҜh(<N,NAOZPvSW՜c՝cԝcԝdӝeӝfӜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜhҜhҜhҜhҜhҜhҜhҜh)=L+L@LWMqPR՝bԞbԝdӝeӝeҝfҝfҜfҜfҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜgҜg*>J*H=HQMnOߩLبKӞcӝdӝeҝeҝfҝfҜfҜfҜfҜgҜgҜgҜgѝgўgϠhΡhΡhΡhΡhΡhΡhΡhΡh+@F(D7IILoH0ҸAаNϬWϩ[Ϩ^Χ`ΧaΧbͧcͧdͧd̨ęf˩fʪgȫhūi¬j¬j¬j¬j¬j¬j¬j¬j-CA#C-ILDl0>GǿNǼSƻWƺZŹ\Ÿ^Ÿ_ķa·abcdfgikkkkkkkk/@;D-@Le'v0=.F%X/e7n=tByH}MQSUVXY[\^`bdgiiiiiiii47:+";,H4Q;X@]EbGeHhJjLlNnQoRpTqVrXsZt\u_vavdwfwfwfwfwfwfwfwfw07"'.067=;B=G?KANCPESFTIVKWMXOYQZS[U\X]~Z^|\^z__yb`yb`yb`yb`yb`yb`yb`yb`4 !*,%/*2.427598<:><@=~B?|D@zFAxHBwJBuLCtODrQEqSFoVGnXGl[Hl[Hl[Hl[Hl[Hl[Hl[Hl[H  "%)-"z0$w3%s5'q7(o9)m<*l>+j@,iB-hD.gG/fI0dL1cN1bQ2`T3`T3`T3`T3`T3`T3`T3`T3h#g+ m9qD$yM4UE[U`cdogyjlnoqqrsstuvwyyzzzzzzzzh#g+ m9rD%zM4UE[U`ddpgzjlnoqqrsstuvwyyzzzzzzzzi#h+ n9sD%}N5VG\X_gctf~ikmopqrrstuvwxyzzzzzzzzi#j+ p9tE&N7VI\Z^jbwehkmnpqqrstuvwxyzzzzzzzzj"k+ q9vE'O8WK\]^m`{dgjlnopqrrstuwxyyzzzzzzzk"l, s9xE(O:XM\_^p_cfikmnpqqrstuwwxyzzzzzzzl"n, t:|E)P;YO[b]s_behjlmnpqrstuvwxzzzzzzzzm"o, v:F*QXSZh\}]_begݗhڗiؘiטi֘j֘jטlؗnؗpؗrؗtؗvؗyؗ{ؗ{ؗ{ؗ{ؗ{ؗ{ؗ{o!s- z;H,U?WTYj[]^beܗfؘgԚgԚhԚhԚhԚhԚiԚiӚjԙmՙpՙsՙvՙxՙxՙxՙxՙxՙxՙxp!t- {;H,T@VUYk[\^aݘe֙fԚgԚgԚgԚhԚhԚiԚiӚiӚiӚiӚkӚoӚsӚuӚuӚuӚuӚuӚuӚuq!u- |;I,S@VUXlZ\^aٙeԚgԚgԚgԚgԚhԚhԚhӚiӚiӛiӛiӛiқlқpқrқrқrқrқrқrқrr!v- ~<J-S@UVWlY[]ߙa՚fԚfԚgԚgԚgԚhԚhӛhӛiӛiӛiӛiқiқiҜnќqќqќqќqќqќqќqr!w- <K-R@TVWmY[]ݙa՚fԚfԚfԚgԛgԛgӛhӛhӛhӛiӛiқiқiқiќmќoќoќoќoќoќoќos x. <L-Q@TVVmXZ\ܚa՚f՚fԛfԛgԛgӛgӛhӛhӛhӛhқiқiқiқiќmНoНoНoНoНoНoНos y. <L-Q@SVUmWY[ښa՛e՛fԛfԛfԛgӛgӛgӜhӜhҜhҜiҜiҜiҜiНmОoОoОoОoОoОoОot z.=N-P@RUTlVXZٛa՛e՛e՛eԜfԜfӛgӜgӜhҜhҜhҜhҜiҜiҜiОmϟoϟoϟoϟoϟoϟoϟou {.=N,O?QTSkUWYٜ`՛d՜dԜeԝeӜfӜgӜgҜgҜhҜhҜhҜhќiѝjϟnΠpΠpΠpΠpΠpΠpΠpu |.>M,N?OSQiSUWڝ\՜c՝cԝdӝeӜfҜgҜgҜgҜgҜhҜhҜhѝiϠl͢p̢q̢q̢q̢q̢q̢q̢qv ~/>L+L=MQOfP{RTܡV՝bԞcӝeӝeҜfҜgҜgҜgҜgҜgҜhѝhϠḳn˥rʦsʦsʦsʦsʦsʦsʦsw /?J*J;KNMaPwQQۧNա\ӝdӝeҝfҝfҜfҜgҜgҜgОgΠi̢jʥmȧpŪu«x«x«x«x«x«x«xy0AH)G8HINZOyNܰGմBҬQѧ[Ѥ`ѢcТdТeϢeϣfΤg˥hȦiƨlêo˿rɻwƹzĹzĹzĹzĹzĹzĹzz0BE&C3I@M]KyݸB5нBͷM̳T̰Y˯]˭`ʭbʬcɬeƭfĮhƿjźlķp´sy{{{{{{{|1DA!C+IAI^ݿA*2C#X,g4s:|CJOSWZ[]_bdgkotxzzzzzzz!46=0*?)O2[9d?kDpIuNxP{S~UWZ\_behlpvxxxxxxx /9/'%7.B6L<@=~C?{F@yHBwKCuNDsPEqSFoWGmZHk]IjaJheKggKggKggKggKggKggKggK  $(,"~0$y3&u6(r8*p;+n>,l@-jC.iF/gI0eK1dO2bR3`U4^Y5\]6\^6\^6\^6\^6\^6\^6\^6  { up l$i(f+c.a0_3^6\8[;Y>WAVDTG SK QN!OR"NT"NT"NT"NT"NT"NT"NT"]%W*T3 Y?eG"oN0vV=z\H|aR~fYj`md~ph}rk}tm|wn{yo{{pz}qzryrxrxqxpxoxnylylylylylylyl]%X*V3 Z?hF$sN1yU?}[JaTe]iclholqotqvs~xt~zu}|v|v|v{vzv{u{s|rzqzqzqzqzqzqzq^$Y*W3 ]>lF%vN3|T@[M`We`igllopqssvuwwyyz{z~{~{~{}z~y~w~v{v{v{v{v{v{v{v_$Z*Y3 a>oF&zN4TBZO`Zecijlpntqxszu|v}xz}}|{|{|{|{|{|{|{|{`$[)Z3 e=tF'~N6UDZQ`]dghnkunyp}rtuwy|~󁍁}}}}}}}a$\)\3i=xF(N7UF[T^`ckgsjzmoqstvxz}󉃉񆈈b#])^3m=}F)O9VH\W^daofxilnqrstvxz{}툈녎肕肕肕肕肕肕肕c#^(`3r<F*P:WJ[Y]g_sd}hknpqstvxy{|鎁苇戎䅗䅗䅗䅗䅗䅗䅗d#_(b3v<G+Q;XKZ[]i^vafjmoqrtvxy{}厄㋋ቓ߆߆߆߆߆߆߆d#`(f3z<G+RL*N9PIRZTkV{XY[\^۞cћjОmΟr͡vˡ{Ȣšßj!g&}1>K)L8NHPXRhTwUWYYުXԨ]Сf̢jʥqɥvŦ}¥k!g&1?J(K6LENTPcSpU|VUܲQӳRϬ]ͧeɦiŨnvʼƻk!i&1@H&H4IBLOQ\SkSRڼHҾJͶU˱]ʬcƫgʿlɺsƵ}òl!l%1AF$F1G=MHPXQnN>BMɻVǶ]Ƴbf»kqym q%1BC!B,I6MEN\Jp/:ENVü\¹aeinvo v$1 B?C%I1KHE^+p1=GPV\`cgms{p |#2 >=DG4AJ(^/n6{@HPV[_bfkqxŁƌǙƣr"29 >C >6$J,[4i:sA|IPVZ]adiov}͇ΑΝyϫyϫyϫyϫyϫyϫyϫt!28>;#7(H0V8a>jDqJwP|TWZ^bflrz؂׋y֕t֡t֡t֡t֡t֡t֡t֡|199##4,B4N;WA_FeKjMnQqTtXw[y_{c|h}n~u~~}}{|v~ppppppp27!(/0:8D>KCQEWG[J^MaQdTfXh\j`kdl{inxonuvns}nqmnmnmnmnmnmnmnm3 "+'4097;==B@GCJEMIPLRPTSU}WWz[Yw_Ztd[qi\no]ku]h{]f]f]f]f]f]f]f]   $)-#0)4.73:6=9@;}D=zG?wJAuNBrQDpUEmYFj]HhbIehJbmK_rK\zK\zK\zK\zK\zK\zK\zK  !&*/#{2%v6(r9*p<+m@-kC.iF/gJ1eM2bQ3`V4^[5[`6Ye7Vj8Rp9Rp9Rp9Rp9Rp9Rp9Rp9Կ  zto$k(h,d/b2_6^9\<Z@XC VG!TK"QP#OU$MZ$K_%Ge&Ge&Ge&Ge&Ge&Ge&Ge&}slg b^[ X U# S& P) O-M0K3J7H:F?DCBH@M>RmF%sM0vU;x[EyaMyfSxkXxo\ws_vwbu{ct~esfrfpfpfqfqercockchcgcgcgcgcgcgcV%Q+K1 Y6h>rF&yM2{S=}ZH~`P~eW}j]}na{rezvgxziw}kvlultmtlulujuipjljiihihihihihihiW%R+O0 _5n=xE'M4S?XJ_Td[ibmgqj~um}xp||qzrysxsysyrzpuqqqmpkpjojojojojojoX%S*S. d4s<~E(M5SAYM]Wc_hfllpptswv{x~y}z|z}y~wzxuxqxowlvkukukukukukuY$T*W, i3x<E(M5TBYN]Yabgjkqousyv|z~~zvs~p}o{nznznznznznzZ$U*Z+m2}<E(N6UCZO\[_edniun{ruy~􆆆逗zwttt€tttttt[$V)^*r2;F(O6VCYP[\^gapgxlqtx}򊁍팄膐‡{yyyyyyyyyy\$W)a(v1;F(Q5TBWPZ\\h_rd{kpsw{捇ڀ~~~~~~~]#X)e'y1<G'P4SAVOX\[h]s`}hpsy}䑂ފׄх̆ȅĄ„]#Z(h'}0<H&O3Q@TMWZYg\r^}eotz㐁܎Ӊ͊ȋŋŠ^#\'k&0<I%M1O>RKUXWdZp]{`lt~؍ΏȐĐ_#^&n%0<J$K/MDG'K1N9R@UFVUTcTr^el}a"h#{#0 >CG#K*N0P;PKFZFiOwYaitˆb"k!"0 ?BGK"L/K?9O>^DlLxV_fo~ǐãc!o "/> BGH!F2/C7R>`DlLwU]dkw̘ͅzȩe!t /> B DB$)50E7S>_EjLtU|\ahqӍwҠrͰw{~g!z0=A>!'*72E9R@]FfLnTuY{_elw܅wړm٦hԸmȹpsuuuuuum3<; #(,74D;OBXH`MgRlWq\vbyi|q~{|}x|ofੁ`ݾbf€hhhhhhu38 &(/57?=ICQHWK]ObTfYj_meo{lqwursrpphs`uYvYvZvZvZvZvZvZv~0& )%2099?ABHDMHRLVQYV\[_|aawgcsnenwfjefdae[gTiQiQiQiQiQiQi   #, 4)70:7=<@ADEHHMK|RNxVPu[RqaTmgUioWdxW`W\WYVTWQXQXQXQXQXQX ֿ  !'+ 0&4+80<3~?7zD9vHpQ@lVAi[CfaEbgF^oGYxHUHQHMHKGKGKGKGKGKGغ  "',{0"v5%q8(n=*kA,hE-fJ/cN0`S2]Y3Z_5Vf6Qn7Mw8I8E8C9C9C9C9C9C9ڴ} vq"l'h,d0a4^8\<Z@WD UI!RO"OU#L[%Hc&Dk'@s'<}(:(:(:(:(:(:(Ͻyojea] Y V$ S( P,N0L4J9H=FBCHAO>V:]6d3l1r1r1r1r1r1rznf_YT PLIFC@">&<):.83684>2D .K +R (Y '] '] '] '] '] '] G)B0<7>9A> KFROVW"W^(Xe-Xl1Wr4Vx6T~8R9Q:O;M;KP>M?K?K?L>L>M=M5B7H< RDXL\T%^\,_c1^j6]p9\vY?W@UASBQBNBOBOBPAQ@Q?Q>N>M?L?L?L?L?L?J(D/A4E5M: WB]J`S'bZ.cb4bh9an=`t@^zB]C[EYEWFTGSGSGTFTEUDVBRCQDPDPDPDPDPDPDK(E.D2I3 R8\@bH eQ)gX1g`7gf=fmAdsDbyFaH_J]K[KYLXLXLYKZJZHXHUITJQJPJPJPJPJPJL'F.H0M0 X6b>gF"kN+lV3m^:le@jkEiqIgwKe}MdObP`Q]Q]Q^Q^P_O^NZOYPUPSPSPSPSPSPSPM'G-K.R. ^5h=nE#qL-rT5r[=qbDpiInoMluPj|ShUfVdWcWcWcWdVdT_V]WYWXVWVWVWVWVWVWVN'H-P,W,d3n<uC$xK.xQ7xY@w`GugMsmRqtUozXlZk\h]i]h]i\i[e\b]^]]]\\[[[[[[[[[[[[O&J,T*\*j2t:{B$J.P8~VB}^J{ePykVvrZty^q`obmcmcmcnbkbgccdadacabbabababababaP&M*X(a(p1{:B$J.P9UC[KcSjY|p^xxbuerhqiqiqhpgjjfjejfighgggegegegegegeQ&P)\'e'u09A#I.P8UCZL`Uh\ob}wgykumtotoumnojpjqkplnlmlklilililililiR%T'_&j&z/8A"J,P7VBZL]Ue^nevk~oyrwtvsstnvowpvqtrrrpqnqlqlqlqlqlqlS%V&b$n%~.8A J+R6U@YK\Ua^kftm}s}wwywxr{t|u|vzwxwvwsvquouououououoS%Y%e#r$. 8BL)Q3U>XH[R_\ifro|v~|txz{|€}~|{|x{vzszqzqzqzqzqzqT%[$h"u#- 7DM&Q0T:WDZN^Xfcrnٍz̈́~zxu}r}r}r}r}r}rU$^#k!y", 8FL#P,T5W>ZG^Pd^եnoȚ|||yvssssssU$`"n |!, :HLP'S.V6Y=\J^]dzinu}}zwttttttV$b!q ,<HLO!S&U+W3OHY[dmo|~{xuuuuuuW$e t-> HKOQR!G0MDVX`jkzyt{yvvvvvvX#hw.A G KML<&F2MATT]fgvus͌gɫox~{yvvvvvv["k{/BGIF0:*B7JDRQ\`dpp}r܂eڠaϺkrx}~{xvvvvvv^!o0BEC $/!8.@:GGNSX_ajktwy|mb઀^elqv|yz{w~u~u~u~u~u~uct0@@% %/$80?xNBsTEn[HibKdkM^uOWOQOLNGPESFTGVGVGVGVGVGV ݳ #)/!4&9+y=/uC2pI5lO8hU;d\=_c?ZlASxBMCGCBB?AAD?F?F?F?F?F?FѼ !'z-t2 n7#j=&fB(cH*`N,\T.X[0Tc2Nm3Hy4B5<67545747474747474ӷ~x ql$g*b/_4[:X?UDRJ OQ!KX"Ga$Al%;y&6'1(-()()()()()()(ճɾulg b]Y U% R* O/L4J9G?DEAL>T9]4h/u*'""""""˻ujb[V QLHEA!?&=+;0866<3C /L *V &` "k w       wkaZTNJG C@=;9 6$4)1..4+:&A!JS[ffffff>,9267999=8C %<&:'8(6(4)1)/).)/(0(2'3&4%4%3%2&2&2&2&2&?+:2:4=6>9?? EIHRI[Ic Hk#Ft&C}(A)>*<+:+7,5,2,3,4,6+7*8):(8)5*3*3*3*3*3*@+;1=2A4B7D= JFMONXNa"Nj&Kr)I{+F-C.A/>/<0908090;/-;.8/8/8/8/8/8/A*<1A0D1F5J; PDSMTV T_%Tg)Rp-Ox/L1I2F3C4@5=5?5@4A4B3C2D2A3=4<4<5<5<5<5<5B*>/D.I/K1P8 VAYJ[S"[\(Ze-Xm1Uv3R6N7K8H9D:D:E:G9H9I7J7G9C:B:A;A:A:A:A:A:C)A-H,N,Q.X5]=`FaP$aY+`b0^j4[s8X}:TI?J?L?M?N>PI@GAGAFAG@G@G@G@G@D)D+M*S*W,_3e;gChL&gU-f_3dh8`q<]z?YAUCPDODPEQDRDTBRDNFMGLGMGNFOFOFOFOFOFE)H)Q(X(^)f1l9oAoH'nQ.l[5jd;fn?cwC`F\HXITJUJWJWHWISLRMSMTMULVKVKVKVKVKVKF(L(U&]&c'm/ s7w?xG'vN/tX6qa=njBjtGfJcM^NZOZO[N\NXQWSYSZS[R\Q\P\O\O\O\O\OG(O&Y$b$i%s- {6>F&M.|T7y^>ugEqqJm|NiQdS`T]T_R\U\X_Y`YaXbWbUbTbSbSbSbSbSH(R%]#f"n#z+ 6>F$M-S6Z>}dExnLszQnUiXeYbX`Yb]d^f_g^g\h[hYgWgVgVgVgVgVI'U#`!j s!+ 6?G!N*S4XהfL͌rXņah|myoxoynymyjxhwevbu`t^s]s]s]s]s]O$] iu+8 DOSU#W-֧V=˟bLmXzckqttrpm~j|g{dybx_w^w^w^w^w^Q#_lx+9G OQSغG+̲R;]KiXudmtxxurolhe}c|`{_{_{_{_{_S"bo|+:KM N ۽EB(½O9ZIeWpc~muy|zwtpmjfda~`~`~`~`~`V!dr+;IJߺE2?%K6VFaUlayltvzo{sxzu~qnjgebaaaaaX gv*<FA'4="H3SC]Qi^uiurkwcygwnttqxn|khecaaaaa[kz&:?(6?G.P>ZMfYwrdkǃmaÚrXtZscripomsjvgye{c|a|a|a|a|a_o 1) 5?H)P9XG|cSop]c݁eX٘kPӶmOlWm^mdkiimfpdrbtatatatatact ) 4=!F+M6V@{`JnkTb{\V`NbIcMfSgYg_ecdgbi`k_k_k_k_k_iz  պ*4<"B+I5Q=w[ElfLasRVVLWHVG[J^O`T`Y_\^_]a\a\a\a\a\o ֳ!+28!>)D1{M8rV>j_DbkIXzLNOFODNCSEVJXNXQXTXVWVWVWVWVWvڬϺ&-39&{@,tH1mP6gY;`c?XoBODFF?FAD?I@LDNGOIOKPKPKPKPKP Ҵ !(.z4 r;%lB)gK-bS1\\4Vf6Nr9F;=<7<:::=;@AF>N9X3d-t& бŻ|oe^WQ LHC?$<*:0774?0G +R %_ n        ǹrf\UOJF B>;85$2*/0+6'>!HTcr ui]SMHD@= :742/,#*)&/#6?IT _krrrrr6.0526382<0B+I&S&] %h#r!|  6.1545565:3@/H+Q +[ *f(p%{#  7.246384886>3E2O 2Y0c.n+x(%"  8-5291<2<5;;8B 9L 9V7`4k1v.+(%"!$'#"!9-80=.@/A2@8=? ?I@T?^/.?-=/<2<3?4@4B4B3B3B3B3B3=*F'N%T$X&Z)^1 a:aD`O_Y$]c)Zn,Vy/R1N3K4H4F4F3C2C3A7C9F:H:I:J9K8K8K8K8K8@)J%R#Y"^#b'g/ j8jAhJgU%e`+bj/^u3Z5V7S8P9O8L8K7G;J>M?O@Q?Q?R>R=R=R=R=R=C'M#V!^ d i%o- s7t?rGoQ%l\+ig1er5a9];Z|EyM$tX+pd2lo7g};c?`B]D[EZFYGZI\J]J^I_H_G^E^D^D^D^D^DH$S ^gov#}+4 <DK!T)z`1tl9ny?kEhIeLcMbNaNbOcPdOdMdKdJcHcFcFcFcFcFJ#Vakt|")3 ;CIQ%څ\1~g:xsCtIpNnRkTjUiTjUjTjRjPiNhLhJgHgHgHgHgHM"Ydnx!(2; BGؕK$ΏX0ʼnc;nD~zLzRwVtYrZqZqYpWpUoSnPmNlLjJjJjJjJjJO![gr| &09@ ڣ<ΞG"ĘT0_;jEuNTZ}]z_x_w]vZuXsUrRpPoNnLnLnLnLnLQ ^ju#.7ݩ:Ь7ƦD Q.\:fEqN~V\`bb~`|]zZxWvTtQrOqMqMqMqMqMS`my(.Ժ"ȵ3AM,X9cDmNyV]b{dudxb|^~[}XzUxRvPtNtNtNtNtNVcp}ؾ 0 >J*U7`BjMvU]wboejembr_v\yY{V}|S~zQxOxOxOxOxOXfsֳ, :F&R4\?gJ~rSu[l`ed_dbbh_m\qYtVvTwRy}Oy}Oy}Oy}Oy}O\jw֫θ'6C#N0Y;~dFtoOk}Wc][`UaV_^^c[hYlVnTpRrPrPrPrPrP_n| ٥бȾ'3?K*V6ua@lmIc{QZVRZM[LZSZYY_WcUfShQjOjOjOjOjOdr ҫʷ)6 >H$wS/n_9djA[yHRӋNKϢQFRCRITOUUTYS]Q_PbNbNbNbNbNix զͲþ(3<}FtQ'k\0ag8Xt>OCHFCG=G@KEMJNONSMVLXKXKXKXKXKoڠϭƸ%/8v@nK#fU*_a/Vm4M~8E;A;=:8@>A?C?C?C?C?C?֣̰º}u% m-f5`>ZGTQN["Fi%>y'6)/*,*,)/,1042649595959595۟Ϭŷw pjc& ]-W6R>MGGQA]9k2}* #! !& (!)$+&.(.(.(.(.(ѩǵuld \WQ$L, H4 D< ?E;O4[,j%~!"""""Ԧɲui`XR LGA ='9.561?,J%W g }         ˰xk_UNID ?;74"0),0(8#AN^ rö|nbWLGB>:6 30-)#&)"19DRdxrfZPGA=962/ ,*'$!#*1; GUcq-1*5-5-7+;'A!HR]iu.1,4/305.9*?%FP[ gs  /1/2213327.<*D"MXdp }    00205/606439/A)J!Ua m y          105-9,;-:0865=0F(Q'] %h #t    3.9+=)?*?->1;87B5M 4X 1d/o,{)'%#!  6,<(A'D'E)D-B4@> @H ?T=_:j7u420.,+**(%#')+,,,,9)@&F$J$L%K)K0J: JE JPH[EfBq?|<:766531,'!,#0$3$5$6$7$7$7$7$<'D$J"O!R"T&U-S5 S@ SKRWObLmHxF C!A!@!?!>!< 9!4%5'9)<*>*?)@)@)@)@)@)?%G"OUX\$^+]2]< \GZRX^UiQt!O#L$K%J%H%G$E$A)?,A.D/F/G/H.H-H-H-H-H-B$K SZ_d"g(g/g8 eBcM`Z]e Zq$W~&U(S*P,O-M-M-K0I3K4M4O4O3O2O1O1O1O1O1D"NW^ek n&p,q5 p>lHiUfb!bm'_y+]/[1Y3W5V6U6T7S9U9V9V8V7V6U4U4U4U4U4G!Q[bkqu$x*z1z: wDtPo]#lh*hs/f4c7b:`<^=]=\=[>\>\=\<\:[8[7Z6Z6Z6Z6JT^fov{!&-5 ڂ?~LyX$uc,qn2ny8lf=ei=i=i=i=S_iu  ՚Σæ 1 >J!U+`4j{l>{l>{l>Ual x ֗ϟƩ-;GR)]3g;qB{~HtMnQiSeRfPkMn|JqxGsuDtsBuq@vp?vp?vp?vp?Xdp} ړќɥ)8DO&Z0d9zn@rzGlLeP`R[R\ObMfJi~Gl{EnxBovApu@pu@pu@pu@[h tԘ̡ê%4 AL#W,ya5ql=jxCcI\MVORORNXL]JaGeEg~Ci{Aiz@iz@iz@iz@_l yڔϞǧ0 =HyS(q^0ii8bu>[DTHNJJJHJOITHYF\D_BaAb@b@b@b@cpԚʤ*8xDpP"i[*af1Zs7SF>J>M=O=Pg8x1.+)$(!+$.%0'1'1'1'1'ԝɩ{ne^WQ%L/G8CC >N 8Z1i+{%""%&&&&ڙ̧±}pd[T NHC$>-:56?0J*W$h |       ϤŰqeYOJD ?:6 2(.0*9#CQc z    ǮtgZNE@:61 -)& "(1; HZqxk_SH>940-)%"!*3?Oc~}ocWLC:40-)&# # ,6DUh{%4&4'4&5#:?G P\gs&3(2*2)4&7!=ENYeq~'2+0-0-1*5%:BK Vcp{*0/.1-1./2*7%>GS _kw..2+5*5+3.03+:#CNZfr ~  1+6(9':'9*6.15.?*J%V bmx          4)9%=#>#>%<);19;6F1Q-]+h )s '~ % $ # " ! !        7&=#A!D D!D%D.B7@A<:9!;!=!>!> > > > > @ HOTY^`$_+]3Y=WI UVSbQnOyNMLK J H!H!F#D%D&E&F&F%F$F#F#F#F#CLSY`dg!h'f.c7bD _Q]][hYsX}!V#U%T'R(Q(P(O*M+M+M*N)M(M'L&L&L&L&FOV]ejmo"o(n1l? jLgXecbn"`x&_)]+\-Z.Y/W/V/U0U/T.T-S+R*Q)Q)Q)Q)HRZa iosuww,v; sHpTm_ ki%is)g~-e0c2a4`5^5]4[4[3Z1Y/X-W,V+V+V+V+KT] e msx{~ˀ(7 |DyPv[!se&po+nz0l3j6h8f9d9b9a7`6_4^1\/[.Z-Z-Z-Z-MW_ i q x }Ղ͆É$4AM~X!{b'xk-uv2r6p9n;l=j=|h<{g:|e8|d6}b3}`1}_0}^.}^.}^.}^.OYblu |փΈō 0>JT _'h-|r3y}7w;~u>yr?up@sn?rmlp;nm9pk6qi4rg2se1se1se1se1T^ ht}Ն̎”*8 DOY%c,}l2ww7r_AZBWAW?\~=`y:bu8er5fp4gn2gn2gn2gn2Yeq}ֈ̑™ !1=IzS t]'ng-gr3a8\S5A6F5J4M3O2Q1Q1Q1Q1fs߃ґǛztn.h; bG\SV_Pj Kw%E(@+<,:,8-7/<0@0D0F/H/H/H/H/l|ٌ̘âshc%^4YA SNNZHgCu>φ:Κ!6˳"4!2$/'2)7*:+<+>+>+>+>+tѕǠ{la[U,P:LGGT Ba>o962/,((,"0#2$4$4$4$4$~א˝rdZ TO%I1E<@I;V7d 2t .+('""%(****ދϛŦvi\RLGB'>19<4G/U*d%w!    ӘȤyk_RID?:6%2..8(C"Qbw   ʣ{maTJ@;61-) %(!1<J \tìqcVJ@72-)$ ! ) 3AUmuh[OD:0)%   *8Kczm`TI?6.&" %1AUl 4"2!248>EOYeq|"2$0$0"26; BLWbo{$0'.'-&/"38?IT_lw(.++++*,&/ 4< DP\gs~++.)0'/(++&07@K Wbny/)2%4$3$1&,+(3%=GR^i t~2&6"8 8 6!3&3/08,C&N!Ydoy          5#9<=<<"<+:47>2I.T*`(k&u&&%%$#"      ! ! ! ! 8 =ABCFE'C/@9=D9P6[4g3q3{2210/.-- , *((*+,,,,;AEHKNN#L*I4F?CK@W?c>m >w > = = <;:997544555555>EILRVVT%Q-N8LEKRK] Jh IrI{HGGEDCB@?==>>====AHMR Y\][Y%W1W?WL VX UcSmRvQPONMKJIGEEEDDCCCDKQ W ^ aba_b,b;aH _T^^\h[qZ{XW V"T#S#Q#P#N#L"L!K JIIIIFNT\b f gghk(k7jD hOfZddbmaw _#^%]&[(Y(W(V(T'S%R$P"O!N NNNHP W`fjmopt$s3r@ pLmVl`jjhs#f}&d(b*a,_,],}[+{Z*zX(zW&zU$zT#zS!zR!zR!zR!KS Zdjotvx { {0y= wHuSs]pf np$lz(j+h-}g/zd0vc0ta.s_,s^*s\(tZ&tX$tW#tW"tW"tW"MU]gnuz}-: ~E|PyZwc!um%rw)}p,yn/um1qj2nh2lg1ke.lc,ma)n^'o\&o[$oZ$oZ$oZ$OXakszƀ)7CMW~a ~{j%zyt)uw-qu0ms2iq4eo4dm2ck0eh-ge+hc(ia'j_%j^%j^%j^%Q Zdnx̀†%4@ JT|^wg$rq)n|-i|0ez3`x4]v4[t3[r1]n.`k,bh)ce(dc&ec&ec&ec&T ]hs}ȅ !0= HzRu[pe#kn'fz,a/]2X4U}4S{3Sx1Vu.Yq,[m*]j(^h'_g&_g&_g&Wamy΃ċ,9 yDsOnYib dl%_w)Z-U0P2M2K1K0N{.Qv,Ts*Vp(Xn'Xm'Xm'Xm'[erʉ}'w5rA lLgVb`\j!Wu%R)M,I.E.D-C-E,I~+Ly)Ov(Qs'Qr&Qr&Qr&_jyІŐy t!o0j<dH _RZ]UgPs K#F&B(>(=';)<)@(D'F~&Iz&Iy%Iy%Iy%dq؁ˍpie)a7\CWN RYMdHpC~?; 8!7 4"3$7$;$=$@#@#@#@#izщƕ|k] YV.R<MHIT E` @m<{8521.,-146777rل˒ufVKH"E1B??M;Z8h4w 1Љ .Ϡ+̼* '$#'*,---~юƛ{l^QC?;%936A3O/],m)&$"  !"""׊ʙqdVJ>941'.3*?&M"]o    ΗâugZNC82-*&$"/:IZ o ơxj]PE;1*&" (4BUl|m_RF<3*"  +:NgreXK@5+" "1E_xj]QF<2*!  *<Tr20026<CLWbnz0..049@IT_kw!.",!+-0 5=FP\gr}$+&)%("),28BLXbmx((*&*$'%!',4=HS^is|,%.".!,!'" &09D NZdnw/#120,*#(,%5?IU_ i s { 2 565342'/0*:%E!P[eox59;:;<:"7+45/@,K*W)a)k)u)~))))(('&%$" ! ! " # # # 8<?? CDB>$;.795E5R6]7g7p7y77766432 1 / - , - - - - - ;@C EJ KID?%?2A@CLCXCbCkCt B} B A A @ > =<:97555555>CFKP Q N HGL,N;OGNSN] Mf Lo LxKJIHGEDB@>=<<;;;AF JQUVURSW'X6XCXNWY VbUkTtS}RQONLJIGEDCB~A~A~ACIMUZ\^]\`#a2a?`J _U ]^\g[pZzXWVTRP}O{MyKxJxHxGwFwFwFEKQY^cfee hi/h;gG fQd[cdam`v^][ |Z!yX!vV!tT sSrQrOrMrLrKrKrKG NU]dilmlop+o8nD lNkXiagjfs~d}{c!wa#t_$q]$n[$mZ"kX kVkTlRlPlOlOlOJ PXaiortsuv(v5tA sKqUo^~ng{lpwjz sh"pg$le&ic&fa&e_$d]"d[ eXfVgUgTgTgTLS\entxzz|}$|2{>yI wR|v[xtdtrmppw lo#hm&ek'ai(^g'^e%]c#^`!_]a[aYbXbXbXNU`jsy~!/;F z~Pu}Yq{bmykiwu eu#at&]r(Zo(Wm(Vk&Vh$Wf"Yc [`\]\\\\\\QXdox,~8xC sMoVk_fhbr^}~"Z{%Vy'Rv(Ot'Oq&On$Pk"Sg UdVbWaWaWaT\iu~|'v5q@mJ hSd]_f[pW| R#N%K~&H|&Gy%Gu#Hr"Km NjOgPfPfPfWbo{Äxs"o0j<fF aP]ZXdTnOzK G"C#A"@"?~!@z CuFqHnIlIlIl[hvʂ{ojf+b7^BYM UWQaLlHxD@<:987;~>y@uAsAsAs`o~ʼnzh_[#X1T=QHMS I^ EiAv=96331/2589|9|9|gxˆvdTOL(I5FBCM@Y<)977D5Q2_/m,~*'%$" !$%%%}ˍvgYK=0 ,*((6&D%T#d!uӊѣ    Љŗ|m_QD8,# !'4BSf{     ɕqcVI>3( $0 >Qf~ tfYLA6,# *9Ldxi[NC8.%  "2F`~oaTG;0&  *>Z}ugZNB8.% "7Su0.. 049@IT`lx.,,-16=FP]it}+))* -28BLXdox!(!&%&).4=GS_js{$%$""!!$ (09CNZdnv~("(&!#,5?IU_iqy+,+& (0 :DPZdmt|.0.+)(%# ,5?J U _ h q y       133 /21-(%"/9EP[dm u!}!!"!!47779 83-'&%2)?+K-V/`0i0q0y000//-,+*(&$#$$$7: :>@>8 //4,7::F;Q;[DFCA;=A'D5EBFMFWF`EiEqEz D D C A @ > = ; 9 7 5 4 ~4 ~4 ~4 = @BIKNMIHL"N1O>OIOSO\Ne Mm Mv L KJHGEC|Bz@y=x<w; v: v: v: ? BGNSVWTR UW-X:XEWOVY Ua Tj SrR|QP~O{MxKvItHrFqCpBp@p?p?p?AEKRY]_]Z]_*_6_B^L]U \^ [fZoYx|WyVvUsSpQnOlMkKjIjGjEjDjDjDCGOW_cedbde&f3e?dIcR b[~ad{`lx^vu]q\nZkXhVfTeRdPdNdLdJeIeHeHEJS]diljhjl#l0k<jFiP {hXxgatejqdsnc~jag`d^a\_Z^X^U]S^Q_O_M_M_MGKWbioqpop rr-r9}pCyoM unVqm^nkgjjpgh{dg`e]cZaX_X]WZWXXUYSZQZQZQJO\gntvuuw xx*{x6wwAsvJ otS ks\hredpn`oy]mYkViSgQdQbQ_Q]SZTWUUUUUULTaltz{{|}~~y&u3p~>l|Gh{Q ezYayb]wlZuwVtRrOpLmJkJhJeJcL_N\OZOZOZOYfqz~vr"n/j:fDbN ^W Z`WjS}tO{KyHwEuCrCoClCiEeGbI_I_I_R_mwwn if*b6^A[KWT S] OgLrHDA>~<{l@iBfBfBfVfs~sf`\$Y1V<SGOQL[ He DpA~=:7654}4y6t8p:m:m:m]n{paU QO*L6IAFLCW@b:;537":0<<=G>P>Y>b>j>r>z==<;97~6|4z2x/w-w,v,v,88<@FHGA> BD+F8GCGMGVG^FfFnEwED C }B z@ x> u< s: r8 p6p4o3o2o2:;@GNQPKHKM(O4O?OIORN[NcMkLt }K~ zJ wI tH rF oD mB k@ j> i< i9i8h8h8<=DNUXWTQSU$V1V<VFUOUX~T`{Sh xRq uQ{ rPpOmMjLgJfHdF cC cA b? b> c= c= >?IT[^]ZXZ[!\.]9\C}\Lz[UwZ] tYf qXn nWxkViTfScQ`O_M^K]I \F \D ]B ]B ]B @COY`cb`_` bc+~c6zbAwbJtaRq`[ n_c k^lh]ve[bZ_Y\VYTXRXPWMWK WH XG XF XF BGT^ehgfef g|h'xi4th>qgGnfPkfX hea ecjbbt^a[_X^U\SYRWQUQRQORM RK SJ SJ DKYcjlkkklzmvn$rn0on;kmDhlMelV bk^ ^jg [hqXg}UeRcOaL_K\KZKWKTLR MP MO MO FP^hppppqzrstot lu-ht8etBbsK^rS[q\ Xpe UnoQm{NkKjHgFeEbD`D]EZFW GU HT HT IWdnuutuwsyl{ h{d{)a{4^{>[zHXyQUxZ Qwc Nvm KtyGrDqAo?l>i>f>c>`?] AZ AY AY M]jt{zyz||ne_\$Y0V;TDQNMWJaG~k D|w @{=y:w8t8q7m7j7g8c :a ;_ ;_ Tdq{yj^VSP*M6K@HJESB^?hD!K Xgx{wj]O@3& %2?M ] n   ƇteVH;." "0>N`tyj\MA4),<Nbzԗи}n`RE9-"  '8LdqcUG;0&!4JexiZL>2'  /Gf~pbTG;/$)De +)**-2:DQ]hqy( &&'*.6@MYdlt{%#"$%)0;HT_gou}"  #,7CNYaipw}'2=IS[cjqw}#-8CMV^ekrx~  '1<FPX`fmsz#   +6@JS[biov~& $ #/:D M V ^ elt| ) '"$  (4>HQZaip x ,*)*,+' ""%/':)D*M+V,^,e-m-u-~-,+*('}%{#y!xwww/,/3884/*.1*364@5J6R7Z7b7j7r7{665|3z2w0t.r,q)p'o%o$o$1.4<BB?:68;&=2><?F?O?W?_?g?o}>x{>x=v<s;q9n7l5j2i0h.h,g+g+32:DJIGB@AC"E.F9GCGLGT}F\zFdxFluEusDpCnBkAi?f=e;c8b6a4a2a1a156AJPONKHIKL+M6~N@{NIxMQvMYsLaqLjnKslJ}iI fH dF aD _B ]@\>\;[9[7[6[67:FPUTSQOP R~S({T3xT=uTFrSOoSWmR_jRghQpeP{ bO `M ]L ZJ XG WE VCV@V>U<V:V:8>LVZYXWUW}XxY%uZ1rZ;oZDlYLjYTgX]dWebVn _Uy \T YS WQ TO RL QJ QG PEPBP@P?P?:CQ[^^]\[}]w^r_"o_.l`8i_Af_Jd^Ra^Z^]c\\l Y[w VY SX PV NT LQ KO KL KIKGKEKCKC<IV`bbaa~awcpdleie*fe5ce>`eG^dO[dXXcaVbj S`u P_ M] J\ GY FW ET EQ EN ELEJFHFH?O\effffxgqijj fkbk'`k2]k;ZkDXjMUjURi^OhhLfs Ie Fd Cb A_ ?] ?Z ?W ?T ?Q?O@M@MDUbkjjjjtmkocq^r[r#Xr.Vr8SqAQqJNpSKo\HnfFmqCl~ @j =h ;f 9d 9` 9] 9Z9W9U:S:SK\hponnoqrgu\xVySyPy)Ny4Ky=IxFGxPDwYAvc>uoL<V9a7~l4|z2{/y-v+t+p+l*h+e+c,`,`\kvzyxxxyl}^SF>;9(725<4F2Q0].i,w)'%#}#y#u"q#n"l$i$ies~}~thZNB5/-+*)5(?&J$V"d!r{xusso}}pdWJ>1$ +6AN\l~  ~~zyl`SF:.!  *6CRbtui]PC6*)6DUg}sgXJ=0$ '5DXmdžĥzk\NA5) "2DZto`QD8,"  -B\zteVH:/$(>]{m^QC7+$<[('&')08CP\dmt{ %$##%+3>KV_hov| "  %-9FQZbipv} )4@KT\djpw} $/:DNV^dkqw} )3>GPW_ekqw~  #-7AIRY`flsy   '1;DLT[bhnu}  +5>GOW^dkr{"  $ /9BKSZahpx}{y y x x $ $'&"*4 >"G#O#V$^$e%m%u%%$}#z"x usqppoo'!&031.*# &)%*0,:-C.K.S/Z/b/j~/r{/|y/v.t-q+o)m(j%i#h ggg)'09;:74002!4,566?7H~7P|8Xy8_w8gu8ps7zq7n6l5i3g1e/c-a*a(`&`$`$*+8ABA?<99;<)~=3{><y>Ev?Mt?Ur?]p?en>ml>wi=g<d;b:_7]5\3[0Z.Z,Z*Z*,1>GGGEB@A B{C%xD0uE9rEBpEJnERlEZiEbgDkeDubC`B]A[?X=W;V8U5T3T1T/T/.7DLLLKIFHyIuJ"qK-oK7lK@jLHhKPfKXcK`aJi^Js\IYHWFTDRBQ@P=O:O8N6N4N4/=JPPPPNLyNsOoPlQ*iQ4gQ=dQEbQM`QV]P^[PgYOqVN}SMQKNILGKDJBI?I<I:I8I82BOTTTTSzRsTmUiVfW'cW1aW:^WC\WKZVSXV\UUeSToPS{MRKPHOFLEIDGDDDAD?D=D<6HTXXXXXtXmZg[ c\`\$]].[]8Y]@V]IT\QR[ZO[cMZmJYyGXDVBT@Q?O?L?I?F?C?B?A=MY\\\\}\o^g`aa\bYb!Vc+Tc5Rc=PbFNbNKaWIaaF`kD_wA]>\)H(S&~_$}m"|} {xvrnjgdbbdrutsrvsku_yR}H<0& #"# -7AMZhx|wtpnlkn{{yx}xryf}ZNC8,  $.9 E Raq~zxwvy~{nbVJ>3($/;HWh{wk_RG;0$ $/<K]pth\OD8,!  !-<NczsfYJ=1%+;Pg҄Ϩ|l]NA4) );RnqbRD7+  %;Utyj[M@2&  9X|&###'-6BMW`hpv}#!"'0=HR[cjqw}!+7BLU]dkqw}&1<ENW^dkpv}  !+5?GPW^ejpv}  %/8AJQX_ekpw~  )2;DKSY_ekry #-6>FMT[agnu} &09AIPW]cjrz~|{{{    *4 < D L SZahpy|y w u srqqp "  %/8@HOV]e~m|vywtromkihhg g %*,+(% "+$4%<&D}&L{'Sy'Zw'bu'js'sp'~n'l&i%g#e!ca``__ .3431.*(*,'|-0z.9w/Au/Is0Pq0Xo0_m0hk0qi0|f/d.a-_+])['Z$Y"YYX )69:98531 }3x4#u5-r66p6>n7Fl7Mj7Uh7]f7ed7ob7z_6]5Z4X2V0T-S+S(R%R$R#!0<>??>;9{9v:r; o<*l=3j=;g=Ce>Kd>Sb>[_>c]=m[=xY<V;T9R7P5N3M0M-M+M)M(%6ACDDC@{>u?p@lAiB'fC0dC9aDA_DI^DP\DYZCaWCkUBvSAP@N?K<I:H8H5H2G0G.H-*;EGHHG~FvDoEjF fGcH$`I.^I6\I>ZIFXINVIVTI_QHiOHtMGJEHDEAD?C<C9B7B4B2B11AIKLLKzKpJjKdM `N]N"ZN+XO4VO<TODROLPOTNN]LNgIMrGLDKBI@G>D>A=>=;>9>7>66FMOOOOvOkOdQ^SZSWTTT(RT1PT9NTALTJJTRHT[FSeCRqAQ~>P`D<`M;`V9_a6^m4]z2\0Z.X-U-Q,N-K-H-F-EJXZ[[[u[k\__WaNdEg@g=g;g&9g/8g76g@4gI3fS1f^/ej-dx+c)a'_&\&X&U&Q&O&M'LR__`_|_q_ha\dSfJi@l7o 4o2o!0o*.o3-n<+nE)nO(mZ&mg$lu"j ifc`\XVTRZddddxdndeeYiOlFo;r0v)x'w%w$#w-"w6 w@vJvVuctrsqnkgda^\[djjihuhliakVoKrAv7y,} &09DP~^ }m |zwtp l i g e dmpon}mrmio]rRvFz<~2''2<IWfx~zwspnmxwutzspsewY{NB7-" (3@N^o|zy~|zzzm}aUI>3( )5BSf{vi]QF:/$ (5EXntg[OC8-!  %5H_yĘsfZK>1%"3Ie~n^O@4( 3LjvgXI;.! 4Pq"  #*4>IS\ckqx~#.9CLU]dkqw}(3=FNW^ekqw} #-6?HPX_ekpv} '09BJQX_djpv}  !+3<DKRY^djpw%.6>FMSY_ekqy  (19@GNTZ`fmu~~~ "+4;CIPV\biq{|ywvttss   &/7>ELRY`g}o{ yx vsqomkjiii   *2:A}H{OyVw]uesmqwnljgeca ` ``` $&%# %|.y6v>tErLp Sn Zl bj kh uf ca^\[YXXXX )+--*(%" {#w$!s%+q&3n';l(Bj(Ih(Pf)Xe)`b)i`)s^)\(Y'W%U"S!RQQQQ(/2331/|-x+s+o,l-'j.0g/8e/?c0Fa0M_0U^0]\0fY0qW0}U/R.P,N)M'L%K"K KK/47887}4w3q2m2i3f4$c5-a65_6<]6D[6KY6SW6[U6eS6oQ6{O5L4J2H/F-F*E(E%E#E!$59;<<;x9q7l8g9 c:`;"];*[<2Y<:Wl<f>a?]@Z@WA(UA0SA8QA?OBGMBOLAWJAaGAlE@xC?A>?<=9<7;4;1<.<,<+1=ACCDxCpBgBaC[EWETFQF%OG-MG5KG=IGDHGMFGUDG_BFj@Ew=D;C9A7>7;786673717/6BEFGGuGlGaG[IVJQK NLKL"IL+GL3EM:CLBBLJ@LS>L]R7=R?;RH9RQ8R[6Qf4Ps2O/N-L,I+F,B,?,<-:-9BJMNNxNnOdOZRSSKUDX?X=Y;Y$9Y,7Y46X<4XE2XN1XX/Wd-Vq+U)T'R%O%L%H&E&B&@'>IOQRRtRjSaTWVPXGZ?]7_ 4_2` 1_(/_0._9,_A*_K)^U'^a%]o#\~!ZXUROK H F DQTVV|VqVgW^XTZL]C_:b1f+g)g'g#&g,$g4"f=!fGfRe^dkc|a_\YUROMKYZ[[x[mZd[[\Q`Hb?e6h,k!o ooo&o/o8nBnMmZlhkx i g d a ] Z WUS_``_t_j_b_XbMfDh;k1o'rux y x x( x2w<wGvTubtrrpmifc_]\ffe}dqdhd_eThIl?p6s,v"z} !+5@M\~l}zwspljgfmlkyjoigi[mPqEu:y1|' ",8ETey{xtsqtrqwooocrWwL{@6,!  #.:J\p}{ywxvly_~SG<1'".=Od}vi\PD9.# !/@Umtg[NB8-" /C\y؜th\L>1%  -EdsdTE7).Hj '1:CLU]elrx~!)3=FOW_flrx~$-7@IQX_fkqw~  (1:CKRY_ejpw~ #,4=DLRX^djpw &/7?FLRX^dipx!)19@GMSX^djrz$,4;BHNSY_fmv}{yyxwv '/6=CIOU[b~i|rz}xvsqpnmlll !*28?~E|KzQxXv_tgrppzmkigecbbaa %|-y 4v ;t Bs Hq Oo Vm]kfiofzda _ ] [ZYXXX ~ zv s)p1n8l>jEhLfSd[bc`m]x[YVTRQQP P P "%''%}#x urnk%h-f 5d ;b!B`!I^"P\"XZ"aX"jV"vT!Q OMKJJIII#(+,,~+w)r'n%j$ g%d&"a'*_(2](9[(?Y)FW)NU)VS)_Q)hO)tM(J'H&F#D!DCCCC)-011y0r.m-h+d, `,]-[.'X./V/6T/=S/DQ/KO/TM/]K/gI/rF.D-B,@)>'>$>">>>$-145~5u5n3h1b1^2Z2W3T4%R4,P54N5;M5BK5II5RG5[E5eC4q@4>3<1:/9,9)9'9$9"9 +1589z9q8j8c5]7X8T8Q9O9"L:*J:1H:8G:?E:GC:PA:Y?:c=9o;9}987654414.4+4)4&5%059;<w<n<f<]:X<S=N> K>H?F?'D?/C?6A@=?@E=?Mn5>|3<1;08.6/3/0/-0+0)59=>?t@j?b@X@RAMBHCEDBD@E$>E,=E3;E;9EC8EK6EU4D`2Dl0Cz.A,@*=):)8*5*2+/+.9>@B|CpCgC_CTENFHHBI>JBDFxFmFdG[GQJKKDL=O7P 4Q2Q0Q&/Q.-Q5,Q=*QF(PP&P[%Oh#Nw!MKHEB?< 9 8CFIItJiJ`JXKNNHOAQ9S0W,X*X(X"&X*%X2#X:"WC WMVYVeUtSQOLHEB@>IKM~NqNfN]NUOLQES=V5Y,\#_ ___%_-_6_?^I^U]c\rZ X V S OLIGENQRyRmRcRZRRSIVAY9[0^'behhg g(g1 g: fE fPe^dmb`^[WTPNMUVWuWiV`VXVPXE\=_4b+e"hk oppp"o+o4o?nJmXlhkyifc`\YWU\\\q[g[^[V[K_Ac8f/i&mpsvx xyy$y.y8xDwRvbussqnjfca_bbzan`e`]`RcGg}3)  (5FZqw~uvtkv^{QF:/%(8Le}uh\OC8-"  );Sn̒ȿth[OB8-" *@[{wl`PA1$ )De%,4=GPX_fmsy%.8AJRY`flry   )2;DLSZ`ekrx $-5>FMSY_djqw '08?FMSX^cipx"*29@GMRX]cjqy %-4:AGMRX]dks~~|{z (/6<BHMSX_fn}x{ywusrqppo "*17=C}I{NyTx[vbtjqtomkihffeee ~%{,y3v9t?sEqKoQmXk_iggqe}ca_]\[ZZZ  ~{yu r(p/m5l;jAhHfNdUb]`f^p\}YWUTRRQQQyus q m j $h+f2d8b?`E^L\SZ\XeVpS|QNLJ I IIII  !!x rnki eb `(^/\5Z<XBVITQRYPcNmKzIGDCBBB B B !%&{'s&m$h"d a^[Y %V!,T!3S"9Q"@O"GM"NK#WI#aG"lD"yB!@ ><<<<<<!')+w+n+h)c'^&[%X%U&R'"P')N(0L(6J(=H)DG)LE)UC)_@(j>(w<':&8$6!66677 &+-~/s/j/d.^,Y+U+Q, N,L-J-&H.-F.4D.;B.BA.J?.S=.];.h9-u6,4+2)1&1$1!122%*/1{2o2g2`2Z1T0O1L1 H2F2D3$B3+@32>39=4@;4H94Q73[53g32t11/0-.++,),&-#-!.).24w5l5d6\5V5O5J6F7B7@8>8!<8):9099679>59F49O28Y08e.7s+6)5(3&0&-'*(((%)#-257t8i9`9Y9R9I:D;@<<= :=8>6>&4>-3>41></>D.>M,=X*=c(m?c?Z?R@JACC=D7F0H,J*J(J &J'%J.#J6"J? IHISH_GmF~DB?<9642;?AvBjB_BWCOCGEAF:H3J,M$P !Q QQ#P+P3P;PEOPO]NkM|K I F B?<:8@CErFfF\FTFLGEH>J7L/O(RVXXXX'X/X8 WA WL VYUgTwRPMIFC@?FH|InJbJYJQJJJBM:O3R+U#X[_ ```"_*_3_<^H]T\c[sZWUQNKHFLMwNjN_NVNONHO>R6U.Y&\_b eg hhh$g-g7gBfOe]dnb`]ZWSQORSrSfS\RURNRDV:Y1])`!cfiln oppq'q1q<pHoWnil|kge`]ZYY|YnXcX[WTVJZ?^5b,e$iloruwx yz{ |)}4|A|Pzbyvvtpmhfd_w_k^b][\P_Ec:h0l'psv y| !,9HZo~{xtpfseiccbXeLiAn6t+x!|  #/>Qg}mrkkialTqHv<|1& "1CZu|ttrkt^yQE9.# #4Kg|v}i]QD7,! $8Rrvk_TG;-"&>] (09BKS[agmsz !*3<EMU[aglry  %.7?GNU[`fkqx  )19@HNTZ_djpx#+3:AGMSX^djqz &-4;AGMRW]cjr~ (/5<AGLRW]dlw~{yxvvuts #*06<AGL}R{Xy_wguqr}pnlkjiihh~%|,z2x8v=tBsHqNoTm[kcimfxdba_^]]^^| xvt!q'o.n4l9j>hDfJdPcWa`_i]u[YWUTTTTT { v sp nki#g*d0b6a;_A^G\NZUX^VgTsQOMLKJJJJ {snjh gda_&],[ 2Y 8W >V ET LR TP ]N gK sI F D CBBABBumhc`_]ZX"U)S/R6P<NBLJJRH[FfCrA?<;: : :;; {!p!h!b ^ZXUSPN&L-J3H9G@EGCPAY?d<p:8643445 5 !$v%l&d%]%Y#U!RO L J G!#E!*D"0B"7@">?"E="M;"W9"b6"n4!}2 0...//0 %'s)h)`)Y)T'P%L%I%F&C&A'!?''>'.<(5:(;9(C7(K5(U3(`1'm.'|,%*$)!()**+$(}+o,e,],V,P+K*G*C+@+=,;,:-%8-,6-25-93-A1-J/-S--_+,k),{'*%(#&##$!%&&"(+y.l/b/Y/R/M/F/A/=0:1 715242#22)120/27-2?,2H*2R(2]&1j#0y!/ -+(% "! "&+/v1i2_2V2O2I2B3<4854617/7.7 ,7'*7.)75'7=&7E$7P"7[ 6h5x42/-*'$"*/2r4f5\5S5L5F6>7984:/;+< )='=%=$$=+"=2!=:=C4?.A'D GJ JJJ%I,I4I> IH HT GaFpEC@=:74 29<u=g>[?R?J?D?>?7A1D*F#ILP Q Q Q!P(P0P9ODOPN]MlLIGD@=;8>@pBcBXBOBHBBB;C3F-I&LOR UX XXX$X,W5W?VKVYUhS{ROLHEB@D|ElF_FUFMFFE@F8I0L(O!RVY\^ __``'`0`:_F_T^d\vZYUQNJIJuKgK[KRJKIFI^C\J[QYYWbUmSzQOMLKKKM w pkhe ca_]%[*Z0X5W:U@SGRNPVN_LjIwGEDCBBCC zphc_ ]\ ZXV!T'R-P2O8M=KDILHTE^CiAv?=<:::;; tjb]YVU T Q O M $K *I 0G 6F <DCBK@T>^<j9w7 5 4 33334 }oe]XSPNL JHF!D'B-@3?9=A;I9R7\5h2v0.,+ , ,-.xk a!Y S NKHFCA?=$<*:1877>5F3P1Z/g,u*(&%&'( ( u"h#^$V$O#J#F!C@= ; 9 7!"6!(4!.2"51"</"D-"N+"Y)!e'!s% #!  "#$#q%d&Z'R'L&G&B%>$;%8%5&3&1&0&&.',-'3+':)'B''L%'W#'d!&r%#!"}&n(a)W*O*I)C)>)9)5*2*/+-+,,*,#(,*',1%,8#,@",J ,U+b+p)(&#  %z)k+^,T,L,F,@,;,4.0/-/*0 '1%1$1!"1'!1.161>1H1T0`/o.-*'%"$)v,g.[/Q/I/C/=/8011-2)4$5 6677%7,746<6F6R5_5m 3~ 2 0- * '$"(,r/d1X2N2G2@2;253/4+5&7 :< <<<"<)<1<: 48536-7(9";>A C C C B&B-B6B?AKAX@f>w=;952/-2z5j6\8Q8H8A7;76819*;$>@CFI JII"I*I2H;HGGTFbEsDB?;8637u9e;X;N;F;?:::5;->'@ CFI LO PPQQ%Q.P7PBOON^MpKJFD@<;<o>`?U?K?C>>=9=1@)D#FJM PSUV WXY!Y)Y2Y=XJXZVlURQMJEB{BjC\DQCIBBA>@5C-G%KNQ UW[]^ `abc#d-c8cEbUaf_}]ZVSPMtHdHXHOGHFCE:H1K(P SWZ^`dfgi jkmn&o1o>nNmakwifd_\YmN`NUMNLIJ?L5Q,U"Z^aehjnqrtv wy{~)6~F|YzoxtqliehT]TUROPFR;W0\&afimqtwz}!-=Qgxte[\YWWNYA^6d+i ot w{ $3G^zda__W`Jf=l1s&x~ (;SphgagTmHs2& 1Nq  (09AIQX^djpv~  "+3<CJQW]ciov~ &.6=DJPU[agnv (07=DIOTY_fnw ")07=CHMRX^foy|zz $*17<AGLQW^gq}}zwtsponn%+17<}A{FzKxQvXt`rjpumkigedcbc{ xwu t&s,r1q7o;m@lFjLiRgZedcoa}_\[YXXXYxsomkih"g'f-e2c7b<`A^G]N[UY_WjUwSQONMMNO~tmiec a_^]#[)Z.X3W8U=TCRJPRO[MfKrIGEDCCDEvkd`]ZX WUS R%Q*O/N4L:K@IFGOFXDbBp@><;;;;<| o e ] X U SQ ONLJ"I'G,F1D7C=AD?L>V<`9m7|6433334 vi_XRNL J I HEDB$@*?/=5<;:C8K6U4`2m0|.-,+,,- qd[SMIFDBA ? = < !:'9-745:3B1K/U-a+n)~' & %%%&& }m`WOIDA>=; 9754%2+01/8-@+I)S'_%m"}   !yi]SLE@=:7531/.",(*/)6'>%G#Q!]k{  uf Z!P!H!B!=!9 5 2/- + ) ( &!&%!-#!4!!< !E!P!\ jzq c#W#M$E$?$:$6#2#-$*$(%%%#&"& &$&+&2&:&C&N&Z%h$y# !   n#`%T&J&C&<&7&3&/')(%)"*+ +++"+(+0+8+A+L+Y *f )v '&#   |#k&\(Q)G)@):)5)0),*&+#,.0 0111&1-15 0> 0I0U/c.r-+(%""x'g)Y+N+D,=+7+2+.,),%. /146 6 6 6#6*626;5E5R4`3p21.*'%"&s*c-U.J.B.;.5.0.,.'/"1368< <<< <'AK@Y?j>}<;751.{0i3Z4N5D4<47323.3'5!8;=@CFG HIJJ'J0J:IFIUHeFzDB>;86u5d7V8J8A8:76625+8#;>AD GJMN OQRS"S+S6SARPQaOvMJIDB>n;^<Q<G<?;::69.;'>BEI LORUWX Y[\^&^0]<]K\\ZpXVRPKIh@YANAE@>>;=3?*C"GKO RUX[^`ac dfh j*j6iEhWfkda^\VTbFUFKEDD@B8D.H%MQU Y]_cfiklnp rtw#y/x=wOuds~plig`\LRKKJFG>I3N)SY] aeiloruwy{~ &5G\v~yvpYRRPMNEP9U.[#`f joswz}+=SmYXUUMVA\4c)iou{~!2Hc]]V^Jc?j3p'w~ '=XyaeUkJq@x4),Hi  $-5=ELSY^djqy'/7?FLRX]bhox!)18?EKQV\bhoy #+28>DJOUZ`gpz~}| %+28>CHMSY`hrytqoo&,17<AFLRY}a{jyuvtqolhfed }|{ z&y,x1w7u<sAqFpLnSlZjdhnf~dba_\ZZZxtqomkj!j'i,i1g6e;d@bFaM_U]^[hYwWUTRQPPP|rlheb `_^^"](\-[1Y6W<VATHSOQYOcMqKJHFEEFFqhb^[XV UTSR#Q(P-N2M7K=JDHKGTE^ClA|?=<<;<>wi`ZURON LKJI H%G*E/D4B:A@?H>Q<[:h8w6543346oc Z S MJHFE CBA@">'=,<1:79=7E6N4Y2e0t.-,+,,.zj ^UMHD A ??=<:97$6)5.342;0C/L-W+c)r'&%%%%%u fZPIC>;98 8 6531!0'/ ,- 3, :* B( L& W$ c" r   qbVLE?:74321 /-,*%)+'2%9#B!LXet   m^SIA;730.,* )'&$##)!07@JVds {i[OF>840-*'%# !  '.5>IUbr       wfXLC<61-)&"      % , 4!< G R _ntcU I!@!9!3!.!* ' #!"#$%%%%"&) %1 %9%C%O$\$k"}!p_!R"F#=#6#1#,#(#%#!#%&(* * ** *&*.*6*@*L)Y)h(z&$!l!\$O%C&;&4&/%*%&%#%&()+ . 0000#0+03/=/H/V.e-x+)&$ z!h%X'K(@(8(2(-(('%'"'*+- 034556 6(505:5E4S4c2v1/-)&$u%c)T*G+=+6+0*+*')$)+.02 589 :;<<$<-<6? @BCE D)D2D>CKB\Ao?=:942i/Y1K2@28120./+.$0369 ;>ADFH IKMN$N.M9LGKWJkHFCA<:c4S5G6=56413.1(3 7:= @CFIMOPR TVXY)Y4XBWRVfT~QNKIC\:N:C:;96735,7#;?C FIMPSVXZ\^ `ce#f/e<dLba`x]ZVTQV?J?A>;<7:0<'?DI MQTX[^adfhjl oru't5sEqYoqmiea]REHDAB=?6A+F!KP UY^adgjnpruwz|  -=QjzvqlOJHHDF=G1L&RX^cgkoruy|~ $5Ia}OPKMDM8S,Z `g mrv{ *>WuSTMTAZ6a*gnu|3Lj‘W\LaAg6n+u|(A`ڻ  (08?GNU[`fls{ "+2:AHNSY^eks} $,3:@GLRW]ckt}| &-39?EJPU\ckv{urq  '-38>CHNT[cmy~{ytnigf !'-27<}A{FyMwTu\seqqomkhea^]\|ytsrqp!o'o,o1m6l;j@iFgMeUc_ai_w][YXURRR|snife cbba"a'a,_1]6\;Z@XGWOUXScRpPNLKIHHH|pga]ZXW VUTS"S'R,P1O6M<LBJIHSG^EjDzBA?>>>?rf]WSPNL JIIHH#G(F,D2C7A>@E>N=Y;e:t8764467zk_VOJGECA A@?? >$<);.:48:7A6J4U3a1o/.,,,-/sdYOHC?=;:9 8776!5&3+2017/>.G-Q+^)m(&%$%%'n`S J C = 9 6543 210/.#,(+.*4);'E&O$["j!{!|i [ OE>94 1 / . -, +*)'!&&%,$2":!CMZhzwe WKB:50-*)( ' & $# "  $ * 1 9 B N Z hys bTH?72-*'$#"  #*1:DO\ j z   o^QE<5/*'#!!(/8 A LXfw  k[MB92,($!  % , 4=HUdt |hXJ?60*%" " ) 1 : ERas wdUG<4-(#  !#$$$ $'$/$8$B$O#_#p!s`QD : 1 + & "! #%' ()**$*,*5*@)M)\(n&%"n\M!A"7#/#)"$" !  !#% '*, -/00!0)020=/J/Y-l,*'&!i X#I$=%4%,%'$#$ #"#%( *,/13 4677&7/696F5V4i31/,*&c%S'E(:(1(+'&'"% $&(+ -/2579 ;=??"?+?6>C=R@B DGII'H2H?GNE`CxB?<97W.H/=/4/-.),'*!,/2 58;>ADFIKM PRU"T-T9SIQ[OsMIFB@Q3D4:322-0+.$037 ;>ADHKNQSUXZ ]`b'a4`C^V\lYWSPJK8@88725/3)4 8<AEILPSWZ]_bdgjmq r-q<oOmeifb^XG>>=8;58.9$=CHMRUZ]adgjloqtx{&5G]|zxsohDC>A;>5>)DJPV[`dhkorux{~-?Vr{EHAECHNU]g}t{xusleb`_}{zzy"x'w,w2v7t<rApGoNmVk_ikfzedb_YVUTxqnkj hgff"f'f,e1d5b:a@_G]P[YYdXqUTRRMKKJ}qhc_]ZY XXWW"W'V,U0S5R;PAOIMSK]JjH|GEDBA@@qe]VSOMLK KKJJ"J'H,G1F6D<CCAL@X>d<u;:98778vg\SMGECA@ @@?>=#<(;,92887?6G5S4_3o10/...0n`TKD?<:876 55543$2)1.04/;-C,O+[*k)}(&&%'(yhYNE=8521/. . ---+ *%)+(1'8&@%K$W"g!y "tcTI?83/,*((' '&&%$"#(".!5 =HTcto_PD ; 4 / * ' $#"! !   %+3;ERask[L A 8 1 + & #    #)1:DP_ p  {gW I>5.(#          ! ( 0 9 D Q _ o wd TF;2+%!     '.7AN\m r ` PC8/(#   $+4?KZk o ]M@5-&!   ")2<IXj~ kYJ=3*$  '/:FUf}gUF:0("  ! #$$$$%-$7$D$S#e!{ bQB7-&  !#% (***"***4*A)P)b'x&#!]M?3 * # !$&)+- /111(111>1L0^/t,+'$#XH!;"0#(""!  "%'),/13 68::$:.::9H8[6p42/,)R#C%7&-&&%!$" !# &(+.1479<> ADE D*C6BDAW@l>;852L(>)3*+)%(!&#$' *-0369<?ADGJ MPP%P1O?MRKgIFC?;F-:.0-),%*#'(,/369=@CFILORUX\_ ^,]:[MYaW{SPKFA262.1*/',",159=ADHKORUX[^ae imp&n4lFj[gtb_[S<746/4-1'16;@EINRVY]`cehkorw {->S{lvrod:<5:27-7"<B HNTX\aeiloruy| %6Kdx;@8=4<(BIPX^dilquy}-B\|?D@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"$%&()*+-./02346789;<=>@ABDEFGIJKMNOPRSTUWXY[\]^`abcefgijklnopqstuwxyz|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mft1!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~  !""#$$%&&'())*+,--./01223456789:;<=>?@BCDEFHIJLMOPRSUWXZ\^`bdfhjmoqtvy|~' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06='D8LLTaZu`d޾fڹgִhԭiѦjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћjћj' * 06<'D8KLSaYv]`aѻa̴bƭccѻdۻdۻdۻdۻdۻdۻdۻdۻdۻdۻdۻdۻdۻdۻdۻdۻd' * 06<&C7KLRaWv[]^Ǽ_`aıa̩cԩcԩcԩcԩcԩcԩcԩcԩcԩcԩcԩcԩcԩcԩcԩcԩc' * 06<&C7JKQaUwY\]^__`ǟbΟbΟbΟbΟbΟbΟbΟbΟbΟbΟbΟbΟbΟbΟbΟbΟb' * 06<%C6IKOaTvX\]]^_`—bȗbȗbȗbȗbȗbȗbȗbȗbȗbȗbȗbȗbȗbȗbȗbȗb& ) 06<$B5HJN`SuX[\]^_`bbbbbbbbbbbbbbbbb& ) 07<#B4GIL_SsWZ\]^_accccccccccccccccc&* 17EFTOaTlYt\z_~a{cwfrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrhrh$,550 71=ADONZTcYj\o_r{buwdxsfzpi|pi|pi|pi|pi|pi|pi|pi|pi|pi|pi|pi|pi|pi|pi|pi|pi|%.4*. 5/;7G={OAvUErZGp\Im^JkaKicMheNheNheNheNheNheNheNheNheNheNheNheNheNheNheNheNheN# &-!4(;.xC3sK6oQ9lV:jYe_?da?da?da?da?da?da?da?da?da?da?da?da?da?da?da?da?da?}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww}' ) .4:#C2LCUV^hfynu{⟀ߚۖՑwwwwwwwwwwwwwww~' ) .4:"C1KCTV\id{krvzܞ~ؙϑ~īwīwīwīwīwīwīwīwīwīwīwīwīwīwīw& ) .4:"B1JCSV[jb|hmqݨtڢw֝{˒}ɯ|yͧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}ǧ}& ) .4:!B0ICRVYj`}ei޴kۭnاpԡr̛xήvФ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|ʤ|& ( .4:!A0IBQVXk^beۺfشgԮjϪnɦsЮuҡz̡z̡z̡z̡z̡z̡z̡z̡z̡z̡z̡z̡z̡z̡z& ( .4: A/HBPVVk[_aӽ`ͶcǰehʺlаtӠyΠyΠyΠyΠyΠyΠyΠyΠyΠyΠyΠyΠyΠyΠy&( .4: @/HAOVUlY\^Ⱦ__a³cɬfϤmҟxΟxΟxΟxΟxΟxΟxΟxΟxΟxΟxΟxΟxΟxΟx&( .4:@.GANVSkX\]^^^_Ǡb͙hЕrΕrΕrΕrΕrΕrΕrΕrΕrΕrΕrΕrΕrΕrΕr%( . 4:@-G@MURkW[\]]^_`ȏe̋l̋l̋l̋l̋l̋l̋l̋l̋l̋l̋l̋l̋l̋l̋l%( . 4:@,F?LTQjV}Z\]]^_aeŃjǃjǃjǃjǃjǃjǃjǃjǃjǃjǃjǃjǃjǃjǃj%' . 4:?+F=JTPiU{Y\\]^`be}i}i}i}i}i}i}i}i}i}i}i}i}i}i}i$' . 5:?)C=HSOgUyX[]^_ac|fxixixixixixixixixixixixixixixi$'/ 5;>(@=GRNeTuX[]_`b}dwgsjsjsjsjsjsjsjsjsjsjsjsjsjsjsj#(/ 6<;(>=DQMbSpW|[^`b}dwfsiokokokokokokokokokokokokokokok#(07 96)==GFPNVT|[Xw_[tb^qe_ngalicikdgmegmegmegmegmegmegmegmegmegmegmegmegmegmegme"*%!(.#5-<5D=MCzTGuZJr]Mo`OlbPjdQhfSfiTekUekUekUekUekUekUekUekUekUekUekUekUekUekUekU!#%+2&9-~@3wJ8rQ;nW=lZ?j]Ah_BfaCecCceDbfEbfEbfEbfEbfEbfEbfEbfEbfEbfEbfEbfEbfEbfEbfE  !'. 6%u<*nD-jL0gQ2dU3cX4bZ5a\5`^6_`7^a7^a7^a7^a7^a7^a7^a7^a7^a7^a7^a7^a7^a7^a7^a7v' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrv' ( ,29A,K;UK_[ijsv|𖄉쓌萓匘≝ކ}trrrrrrrrrrrrrw& ( ,28@+J;TK^\gkpyy闉哐⎕ߋօzqpppppppppppppx& ( +28@+I:SL\]enm|u}朄▊ߒێ̃wsttttttttttttty&( +28?*H:QLZ^cojry~ܕؑ€twxxxxxxxxxxxxxz&' + 28?*H:PLX_`qgntyޞ}ژӒy{|||||||||||||{%' + 28?)G9OLW_^rekoߩrۣv՟}ϛèà|%' + 28>)F9NLV_]schjܰn֫sЧyʣ¸ĥŜ}%' + 28>(E9MLU`[s`dݾgֹkѳpʮué{÷ƢƘ~%' + 28>(E8LKT`Yt^aeϽhȸl³qwõ~ơǕ~%& + 28='E8LKR_Xt[_bľehlpéwƟ~Ȓ$& + 28=&D7KJQ_VtZ]_bdgkžqƘzǎŒ$&+ 28=%D6JIP^UsY\]^`cfkčsƊˆ$&, 28=$C4IHN^TrX[\\]^bfn{$%, 28="C2GHM]SpWZ\]^_aeyjutuyuyuyuyuyuyuyuyuyuyuyuyuy#%, 3 8= @2DGK[RmW}Z\^_aczftjoqntntntntntntntntntntntntnt#%,3 9<<2CFJYQiVwY\_aczetholjqisisisisisisisisisisisisis"%-4 :8;2@EHVPeVqY{]`bzeugpjkmgrfsfsfsfsfsfsfsfsfsfsfsfsfs!&.672 92?BGQO^UiZq]xa}zcvfqhmkindsctctctctctctctctctctctctct &/5.1!80=?EKNVU_Zf^l{bpvdsrgvoixklzho|dr~cscscscscscscscscscscscscs'0.'/ 6-<9CDLMTTZZ{^^vbaredohfljhiligokcrmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsmcsm',&,3)93@;JCRHyXMt]Pq`RncTkeVihWgjYemZbp[bq\bq\bq\bq\bq\bq\bq\bq\bq\bq\bq\bq\bq\$ #)0$7,=2}G8wO&I3TA_Oj\ugpw}󇚁쁦|ysoooooooooooop' {( + 07>&I3TA_Oj\ugpw}󇚁쁦|ysoooooooooooop' {( + 07>&I3TA_Oj\ugpw}󇚁쁦|ysoooooooooooop' {( + 07>&I3TA_Oj\ugpw}󇚁쁦|ysoooooooooooop' {( + 07>&I3TA_Oj\ugpw}󇚁쁦|ysoooooooooooop' {( + 07>&I3TA_Oj\ugpw}󇚁쁦|ysoooooooooooop' {( + 07>&I3TA_Oj\ugpw}󇚁쁦|ysoooooooooooop' {( + 07>&I3TA_Oj\ugpw}󇚁쁦|ysooooooooooooq&}( * 06>&H3SB]Ph^rj|t|􎏂쇝鄣恨yqmmmmmmmmmmmmr&~' * 06=%G3QB[Qe`omxy𒊊돒狙䇟~unqqqqqqqqqqqqs&' * /6<%F2OBYRcblqt}}옆甎䏔مzqrttttttttttttu%& ) /6<$E2NBWSadisqy鞁嘈܍͂wrvxxxxxxxxxxxxu%& ) /5<#D2MBVS^efunu|✂ޕؒȈ~wz||||||||||||v%& ) /5;#D1LBTT\fdwkrwߡ}؝љĐ|~w%& ) /5;"C1KAST[fbxhms٨zТʞx$&) /5;"C0JARTYg`yejܶpҮvʧ}ãy$%) /5;!B0IAQTXg^zbhֽn̴sĭyy$%) /5; B/I@PSVg[{aglƻpv|z$%) /5; A.H?OSUgY{_dhmrx{#%) / 5;A-G>NRSgXz]aehmrw}#$) 0 6;@+G=LQReWxZ^adglqx~~~~~~~~~~~~~#$)0 6;@)F;JPQdVvY\]`cfkq{zyyyyyyyyyyyyy"$)0 6;@'B;HOPbUsX[]^`b{fvkqsnpppppppppppp"#*1 7<<'@;FNO`ToX}[^`b{dugpkkqgyffffffffffff!#*18 :7(>:DLM\SjXv[^a|dvgpilmgqcxa~a~a~a~a~a~a~a~a~a~a~a~ #+28 46(=9BILWScXn\v_}~bwerhnkinds`x^}^}^}^}^}^}^}^}^}^}^}^}#,43 -5(;7AEJQR[Xd\k`pycusfxoi{kl}hods_w]{]{]{]{]{]{]{]{]{]{]{]{$,1& ,3'93??HIQRWY\_yactdfpgimjkjlmgoocrq`ws]zt]zt]zt]zt]zt]zt]zt]zt]zt]zt]zt]zt$+'#*1$7/=8FAOGVMx\Qt`UpcWlfZji[gk]en^bq`_ua]xb]xb]xb]xb]xb]xb]xb]xb]xb]xb]xb]xb"$!'- 4);1B7|L.rG2nO5jU7gY9e];d__f>]i?\l@ZoAZoAZoAZoAZoAZoAZoAZoAZoAZoAZoAZoA  &-y4!q:%jB(fH*cN,aS-_V.]Z/\\0\^0Z`1Yb2Xe2Wg3Wg3Wg3Wg3Wg3Wg3Wg3Wg3Wg3Wg3Wg3Wg3  "y)q0j6d<aB!^F"\J#ZN$YP$XS%WU%VW&TY&S\'R^'R^'R^'R^'R^'R^'R^'R^'R^'R^'R^'R^'i't( ~* .5'F6MHU[[nbiѼpDzu|v#$&- 39>&E5LGSZYn`~gmrxw##&- 39>%E4KFRZWm^~ekpu|x"#'- 39>$D3JDPXVl\|bglrx~~~~~~~~~~~y"#'- 39="C0HCNWUjZ{^chlrxxwwwwwwwwwww{!"'.4 9>B/FCMVShXy[_cglq~xyurqqqqqqqqqqq}!"'.4 9==/DBKTReWuZ\_cgxksqnxk‚iÒkġkġkġkġkġkġkġkġkġkġkġ !'.5 :9cInTy]djos{vxyu{r}n~ih}iyiyiyiyiyiyiyiyiyiyh%t%~' + 28@&K2V?`KkWvaiqv{~{wrmjlm}m}m}m}m}m}m}m}m}m}i%u%' + 18?%J2T?^LiYsd}nv}쁥}yrlmoppppppppppk$w%& + 17>%H1R?\Nf[phzs|쌍臖䂟~{upqsttttttttttl$x$& + 17>$G1P?ZNd]mkvw叇ۈօςzuuwxxxxxxxxxxm$y$%+ 17=#F0O?XOb_jnr|zޕؒю̋ljzy{||||||||||n#{#%+ 17<"E0N?VO_`gpnޢw֝ϘɔÑ}o#|#%+ 16TO]adrlשtΣ}Ǟp#}#$+ 16SO[abr۸jЯrȨyq""$+ 16<B-J=QNYa`qhʶov~r""$+ 1 6;B+I;PMW`_qf~Ľls{s""$+1 6;A*H:NLU_]pd}jqw~u!!$+1 6;@'G7LJS^[na|hnt{{zzzzzzzzzzzv!!$+1 7;@%D6KIR\Ym_zekrxƀÉ}usssssssssssx  $+27<=#B5HHPZWk\xaflry}ɁwnjsǗn¡lllllllllll{%,28 :8$@5FGOXUgYu]bg~lwrqylʂhʍeʙeɩeeeeeeeeee~%,3848$?5DEMTTbYn\y`|ctgmmgsc{_΄]Ϗ\Р]ӯ]ӯ]ӯ]ӯ]ӯ]ӯ]ӯ]ӯ]ӯ]ӯ%,33 .7$=3BBKOS[Yf]oavwe|pijmdr_x[׀W։T֖T٢T٢T٢T٢T٢T٢T٢T٢T٢T٢%,1% .5$;1A>IIRSX\^czbisfnmjrhnvcsy_x{[~}W~SPPPPPPPPPP$*&# ,3#9.?9GBPJXQ{]Wub\og`jkcfofbsh_xj[}lWnToQpQpQpQpQpQpQpQpQpQp"## *0 6*=2E:NAzVFt\JoaNkeQgiTdmVaqX^uZ[z[X]U^R_R_R_R_R_R_R_R_R_R_  &,3$:+~A1wK6qS:mY>i^@fbCcfEajF^nH\qIYuJWzLTMRNRNRNRNRNRNRNRNRNRN  "(/~6$t=(mE,iN/eT1cY3a]5_a7]d8[h9Yl:Wp;TtP~>P~>P~>P~>P~>P~>P~>P~>P~>  $}+t2l9 g@#cF%`L']Q([U)YY*W]+Ua,Td-Sg-Qk.Op/Mt0Mt0Mt0Mt0Mt0Mt0Mt0Mt0Mt0Mt0ۼ   } t'l.f4a9]?ZDXHVLTP SS QV!PY"N\"M`#Kd#Ig$Ig$Ig$Ig$Ig$Ig$Ig$Ig$Ig$Ig$} s k"e)_.[3W8U<S@QCPFNIMLLNKQITHWFZFZFZFZFZFZFZFZFZFZ[(e(m* s-x2z:~C!|Q)y^1vk8rw>pBnFmIlKjMiNgOePcQaR`S_S]T\T\T\T\T\T\T\T\T\T[(e(m* s-x2z:~C!|Q)y^1vk8rw>pBnFmIlKjMiNgOePcQaR`S_S]T\T\T\T\T\T\T\T\T\T[(e(m* s-x2z:~C!|Q)y^1vk8rw>pBnFmIlKjMiNgOePcQaR`S_S]T\T\T\T\T\T\T\T\T\T[(e(m* s-x2z:~C!|Q)y^1vk8rw>pBnFmIlKjMiNgOePcQaR`S_S]T\T\T\T\T\T\T\T\T\T](g'o) v, z2}9B!O*}\2zi:uu@sEqIpMnOmQlSjTgUeVcWbX`Y^Y]Y]Y]Y]Y]Y]Y]Y]Y]Y_'i'r( y+ ~18@!M*Y4f<{rDx~JvOtSsVqXpZm\j^h_f`daba_b```````````````````&k&t' |* 07?!K+W5c>oG}{NzTxYw\u`sbpdmfkghiejcjcgcececececececececeb%m%v' * 07>!I+U6`@lJwRY|^zcxgujrlpnmpiqfreqflgigigigigigigigigid%o%y& ) 06= H+S6^BiLtV^d}jznwrturwnyj{gzhvipjmjmjmjmjmjmjmjmjme$p${%) /6< F+Q7\CfOqY|ckq}wy{urokj€lzmumqmqmqmqmqmqmqmqmqf$r#}%) /5<E*O7ZDdQn]xh튂q鄌y~{yxvpnpqyquququququququququh#t#$( /5;C)M7WEaSk`tl}wሆ܅ւр~|vstu}uyuyuyuyuyuyuyuyuyi#u"$( / 4:B)L6UE_ThcpqߖyzّҌ̉ȆÄ|wyy€y|y|y|y|y|y|y|y|y|j"w"#( . 4:A(J5SE]Ueenr؝w{Зɓď|}}~~~~~~~~~~~~~~~~~~l"x"#(. 4:@&I5QDZUceګkrФt{ɝ|™m"z!"(. 49?%G3ODXU޻aeӲiqʪq{£yn!{!"(. 49>$F2NBVT_d͹gqİn{v~o!| "(. 49>"E0L@TS]cepl{szp ~ "(. 4 9> D-J?RR[bcoizpw~~}}}}}}}}}r "(/4 9=C*H=PPYa`ngymt|{vvvvvvvvvvvt"(/4 9=>)G;ONW_^lewkqy~ysooooooooooov")/59 9=)E:MLU\\jbuh~ov{̉uʕpȡlŬgghhhhhhhhhx")/56 4<)C9KJSYYg_rezj~qwypՃkӎgҚcҧ`̱``````````|")/4, 3;)A8IGQTXa\l`u{f|sklrfza؄]؏ZלWةXջX̾X̾X̾X̾X̾X̾X̾X̾X̾").,)29(?6FBONWY]b}ajufpmjvgozav~[}V߆SޑPޝP஀Q~Q~Q~Q~Q~Q~Q~Q~Q~!&)(07'=2D=NGVP\Wwb]qgbklgeqj`vn[}pWrStPtMuKtKtKtKtKtKtKtKtKt"'.4$;.A7K?TFx[KqaPlfTgjXco[_u][{_WaTcQdMeKeKeKeKeKeKeKeKeKe$+1 8(>/|H6vQ;pY?l^CgcFdhI`mK]rMZwOV~PTRQSNTLULULULULULULULULU !'-4"{;(qC,lM0hU3e[6b_8_d:]hWr?Tx@R}BOCMDKDKDKDKDKDKDKDKDKD  "){0r7 j>#fF&bM(_S*\Y,Y^-Xb/Vf0Sk1Qp2Ou3Mz4J5I5I5I5I5I5I5I5I5I5   z%q,j2d9`?\EYK WO!UT"SX#Q\$Oa%Me&Ki&In'Gt(Ex(Ex(Ex(Ex(Ex(Ex(Ex(Ex(Ex(ջ y p i'c-]3Z8W=TBRFPJNMMQKUIXG\F`CeBhBhBhBhBhBhBhBhBhyph b" \' W,T1Q5O9M=K@JCHFGIFLDOCRAV?Y?Y?Y?Y?Y?Y?Y?Y?YU)^(e* j- m2n:oCoQ#l`)ik.ex2c5b8`:_;^=]>\>\?Z@W@VAVAUATASASASASASASASASAU)^(e* j- m2n:oCoQ#l`)ik.ex2c5b8`:_;^=]>\>\?Z@W@VAVAUATASASASASASASASASAU)^(e* j- m2n:oCoQ#l`)ik.ex2c5b8`:_;^=]>\>\?Z@W@VAVAUATASASASASASASASASAV(_(g) l, p1q9rBsO#p^*lj/iv4f8d;c=b?a@`A_B^C\DZDYEXEWEUFUFUFUFUFUFUFUFUFX'a'i( o+ t0v8w@xL$v[+rg2ns7k!H.R;\JfXodڑymҌs͇xȄ{Á~}}wv|vvwpvmvmvmvmvmvmvmvmg!s !&, 27= G-P;ZJcYڟmdјumʒ~tĎy}}{€{y{s{p{p{p{p{p{p{p{ph!u !&, 27=E+N:WJݬaXӥjdʞrnØ{u{|ussssssssj v &,1 7<C)L8UIִ_XͫhdĤpnxu{xuuuuuuuuk x&,1 6;B'J6SHк]WDzecmmuu}|zwwwwwwwwly&,1 6;A%H5QG[Vcckmruz||yyyyyyyyn{&,1 6;?!E3OEYUabhlouw|{zz}z{z{z{z{z{z{z{z{o}&,16 :>D1MDVS_`fkmtt{|}yssss|s|s|s|s|s|s|s|q&,16 9:C/LBTQ\^dijrqzyytplkkk}k}k}k}k}k}k}k}t&,1529B-J?ROZ\aghpowv}}wĉqlhdccd}d}d}d}d}d}d}d}v%+1//8@,H+E9NGUT\^cgzinrpslxxf|`~[ WੀU຀S~TyTwTwTwTwTwTwTwTw~#%"-5<*B6KBTL[Vza^rgeklkdro^zsXuTwPwNwMvMrMqMqMqMqMqMqMqMq# ,39'@1I;RD{ZKtaQmfWgl[br_]ycWfShOiLjIjHhHhHhHhHhHhHhHhHh ! )06#=,F4zP:sY@n_EidIdjM_pP[wRWUSWOXLYJZGZFZFZFZFZFZFZFZFZ &,3:&wA+pK1kU5g\8ca<`g>\mAXsCUzEQFNHKIIJFKEKEKEKEKEKEKEKEK ־ !(/x6n=#iF'dN*`U-]\/Za1Xg3Um4Rs6Oz7L8I9G:D;C;C;C;C;C;C;C;C; ٷ #w*o1g8b?^F [M"XS$UX%R^&Pd(Mi)Ko*Hv+F|+D,A-@-@-@-@-@-@-@-@-߱п  v n%g,`2\9X?UDRIPNNSLXI]GbEgBm @s!>{!=}!=}!=}!=}!=}!=}!=}!=}!Һ um f _& Z,V1R7P;M@KDIHHLFPDTBX?]=b;g:j:j:j:j:j:j:j:jul e^Y! T& P* M/ K3 I6 G:E=D@BD@G?K=N;R9V8X8X8X8X8X8X8X8XN)V)\*a- b2b:`C]R]`![l%Xx(V*T+S-R.Q.Q/P/O0O0M0J0J0I0I0H0H0H0H0H0H0H0H0N)V)\*a- b2b:`C]R]`![l%Xx(V*T+S-R.Q.Q/P/O0O0M0J0J0I0I0H0H0H0H0H0H0H0H0O)W(^*b- e2e9cBaP`_"^j&[w)Y,W.V/U0T1S2R2Q3Q3O3M3L4L4K4K3K3K3K3K3K3K3K3Q(Z'a(f+ h0i7h@gMe]#ch(`t,^/\1Z3Y4X5W6V7V8T8R9Q9P9P9O9O9O9O9O9O9O9O9O9S'\'c'i* l/ m6m?mJkZ$hf*eq.b~2`5^7]9\:[;ZU>T?T?S?R?S=S=S=S=S=S=S=S=U&^&f&l) p. r5r=sGqW%mc,jo1g{5d9c`?^A]B\CYDXEXEVFUFVDVAVAVAVAVAVAVAVAW&`%i%o( t- v4w<yEwS&ta-ol4lw9i=gAeDdFbHaI^K]L\M[MYNYLZIZFZFZFZFZFZFZFZFY%c$k$s' x, {3}:C}P'z]/vi7qt=nBlGiJgMePdRaS`U_V]W\U]R^N^K^K^K^K^K^K^K^K[$e#n#v%|+ 29AM(Z1}f9xqAt|HqMnRkViYf[d^b`aa``a[aWbTbPbPbPbPbPbPbPbP]#h"q"z%+ 18?K(W2b<mE{xMvTrZn_kciehfhfgfefebf]fYfTfTfTfTfTfTfTfT_"j!t!}$* 17>H(T3_>jHtR{}[watergpinkmkmkkkjgjbj^jYjXjXjXjXjXjXjXa"l v $* 0 6=F'Q3\?gKpW݃z^c{hykvmtosprpqpologobn\n\n\n\n\n\n\n\b!n y $*0 5;D&O2Y@cMۑmWӋw_͆eǂjm}pzrysxtwttqtksfr`r`r`r`r`r`r`r`d p{$*/ 5;B$M1W?ܞaMӘjW˒s`ō|fkoruv}w}wxuxoxiwcwcwcwcwcwcwcwce q}#)/ 4:A"J/߬T>ե_L̞hWĘp`ygmqtwyzz}y}r|lzezezezezezezezegs#)/49? H-ڳR=ϫ\KŤfWn`vg~mrvy{||{un~h~h~h~h~h~h~h~hhu#)/3 8>F,ӺP<ɱZKcVk`sh{nrwz|}~}wqjjjjjjjjjv#).3 7<C*N;÷XIaVi_qgxnsw{}y~s}l}l}l}l}l}l}l}lkx#).37 :A)L:VH_Tg_ngun~sx{~~z€w{wtvmvmvmvmvmvmvmvmmz#(.25 4?'J8TG\Sd]kfsm{sw{~~yur€o|ovooooooooooooooooo}"(-123>%H6RDZQb\idpkxqv|zv}qmjg|hvhphohohohohohohor"'+-'4<"F3OBXN_Ygbniuoz~tsxn{i}d~a~_{`v`o`o`o`o`o`o`o`ou!%''4=E/M>UK]Ud^lexskq|pk˅tfɑwaǞy\ĬzY½zWxWsXnXnXnXnXnXnXnXnx!( 2:B,K:SFZPbYwi`ppeiyjc߃n^ݏqY۝sUثtQսtOsPoQjQjQjQjQjQjQjQj} ' 08?*H5P@~XIv_RofXhm^bvb\fWhRjNkKkIjIgJdJdJdJdJdJdJdJd & .5<&D/N8wV?p^FieKdlP^sTX}XS[O]K^H_E_E]E[E[E[E[E[E[E[E[ؼ # +29"}@)uJ/oT5i\:db>`iB[pEVyHRJNLJNGOEPCPAOAOAOAOAOAOAOAO   '.~5t<"lE'gN+bW/_^2[e4Wl7St9O|;L=H>E?C@AA>A>A>A>A>A>A>A>Aһ  #~*u1l8f?aH"]O$YV&U](Rd*Ok+Lt-H|.E/B1@1=2;3;3;3;3;3;3;3;3Ե} t%l,e2_9Z@VGSMPSMYJ` Gg!Dn"Aw#>~$<%:%7&7&7&7&7&7&7&7&װ̽ |rj c% ],X2T8P>NCKHINFSDXA_>e;l9s6{33333333ι{q ib\ V% Q* N0 K5 I9F>DBBF@K>P;U9Z6`4e1m1m1m1m1m1m1m1mƾ|qha ZUPL#I(F, D0 B3 @7 >: <> ;B 9F 7J 4O 2S /Y /Y /Y /Y /Y /Y /Y /Y H*O*T+W. X3 V:TERRO_LlJxG F!D!C"B"B"A#@#@#@#>#<";";":":":":":":":":"I*P)U*Y- Z2 X9VDTQQ^OkLwJ!H"G#F#E$D$D$C$B$B$@$>$>$=$<$<$<$<$<$<$<$<$J)R(X)\, ]1 \8ZAXNU\SiQu!O#M%K&J&I'I'H(G(G(F(C(C(B(A(A(A(A(A(A(A(A(A(L(T'Z(^+ `/ `6^?[LY[Xg Ur#S&Q'P)N*N*M+L+K,K,H,G,G,F,E,E,F+F+F+F+F+F+F+N'V&]'b)d. e5c>`H^X]d"[p&X|)V+U,S.R/Q/P0P1N1L1K2K2J2J2J0K/K/K/K/K/K/K/P&Y%`&e(h, j4i<gEeUcb$`m(^y,[/Z1X2W4V5U6T7Q7P8P8O8N8O7O5P4P4P4P4P4P4P4S%\$c$i&m+ o2o:nClQ j_&gj+cv0a3_6]8\:ZU?T@S@SAT?TI'ޝT5ԗ^ȂhKŋqSyY^b~e|gziyjxjwiudt_sYrVrVrVrVrVrVrVcny!',1 6<G%إR4͝\AŗeKnSvZ_cfik~l}m}lzhxbw\vYvYvYvYvYvYvYdp| &,05;ݰD$ѪO3ǣZ@cKkSsZ|`dhkmnook}d{_z[z[z[z[z[z[z[fr~ &+04 9ظA"̰M2X?aJiSqZy`eilnpqqmga~]~]~]~]~]~]~]gt %*/2 5Ѿ?!ƶK0U>^IgRnZv`~eimpqrr|o{izcy_y_y_y_y_y_y_iv %*-0/=I/S<\HdQlYt`|ejmprzswstqtkses`s`s`s`s`s`s`kx$(++, ;G-Q;ZFbPiXq_yeim{pvsrtotlrlllflblblblblblblbm{"%%* 8D+O8WD_NgWn^vc~hylspnrjsgsdrdlefebebebebebebebp~ + 7B(L6UB]LeTl[}taw|fqjkmfpbq^q\p\k]f^b^b^b^b^b^b^bs - 6@$J2S>[HbP|jWuq]ozbiÃfcj^lZmVnTmTiUdVaVaVaVaVaVaVaw , 6> G.P9XC{`KsgRmoXgx\aԂ`\ҎdWϛfRͩgO˻hLgMdN`N]N]N]N]N]N]N]{ع * 3;D)M3zU7<7:797979797979797٫θ z$ q+i3b:]BYIUQRX N_"Jg#Gp%Cy&@'=(:)8*6*5*5*5*5*5*5*5*ܦѴǿyp h& a-[3W:SAOGLNITF[Bb?k;u8~530///////Ӱɻx ng_ Y% T+ O2 L7I=FBDHAN>T:[7c3k0t.}+)))))))˸vld ]WQM#I)F. C3 A7 ?< <@ :E 8K 4Q 1W .^+e)l'r'r'r'r'r'r'rýylc\U PKGD!A%?)=-;194785=2A0F-L *Q 'V &Z &Z &Z &Z &Z &Z &Z C+H*M+O.N3 M; JEGQD^@k=w;98765543330/..,,,,,,,D*J)O*Q-Q1 P9 MCKOH\DiAu?=<;:99887643311111111E)L(Q)T+U0 S7 QBONLZHgFsCA@?>==<<;987665555555G(N'T(W*X/ W5 U?SKPXMeJqH}FED C B!A!A!@!?!=!\AZCXDXDWEVEWCX?YeCcEbGaI_J^K]K]K\J^F^B^?_<_;_;_;_;_;_;X bks z&,2 9AM#}Z,xd5so=pyBmFjIhLgNeOdPcPbQbPcLcGdDc@c?c?c?c?c?c?[enw~%+1 7?J"V,݁a6|k>wuDt~IqMoOmRlSjTiUhUgUhQhLhHgDhChChChChChC]gqz%*0 5<G ݎS,ԉ^7̓h?~qFzzKwOuRsUrWpXoYnZmYmVmPlLlHkGkGkGkGkGkG^is}$).4 :EՖQ+͐\6Ŋe?nFvL~Q{TyWxYv[t\s]r]rZqTpPoKoJoJoJoJoJoJ`kv#(-2 8ڡBϜN*ƖY6c?kGsM{RVY}\{^z_y`x`v^uWtSrNrMrMrMrMrMrMbmx#(,05ԧ@ɡL)W5`?hGpMxRWZ]`a~b|b{ayZwUvPvOvOvOvOvOvOcoz"&*.۲0 έ>ĦJ(U4^>fFnMvS~W[^acddc~]~|W|zR|yQ|yQ|yQ|yQ|yQ|yQeq}!%()պ- ɳ;H'R3\=dFlMsS{X\_bdf|fyex_wYv~Tv~Sv~Sv~Sv~Sv~Sv~Sgs #$޺!* Ĺ9F%P2YI+R6Z?bGiNyqSsyXn]i`dc`d\eYdYaZ\[W[V[V[V[V[V[VqԶ /;F'O2X;`CxgJroPlwUfYa\\_XaTaQaQ^RZSVSUSUSUSUSUSUu خϻ "/ 9C#M-~U6w]>peEjmJduO_SYȊVUƗYPæ[M[J[IYJVKRLQLQLQLQLQLQz ҳ"- 7@~I'vR0o[7ic>cjC]sGX}KRۉNNٗQJ֦RFԷSDSCQDOELEKEKEKEKEKEK լ̹ * 3~;uE!nO(hW/b_5\g:Wo>RyAMDHFEGBH@H>G>E?D?C?C?C?C?C?C٧ϳſ' /u7l@fI!aS%\\)Wd-Sl0Nt3J6F8B9?:=;;::999999999999999ѮȺ# v+ n3f:`C[LWTS\"Ne$Jn&Gw(C*?+<-:-8-6-5-5-5-5-5-5-5-ԩ˶ vm& f- _4Z<UDQLNSJ[FcBl>v;7 5!3"1"0"/"/"/"/"/"/"إͲü~tld ^' W- S4 O;KBHHEOAV=^:g6q2|/,*(((((((ϯŹ~rj b[UP%K+H1 E7 B= ?B ,;0956:4@1F-M )T %\ "e l v y y y y y y vi^VOJ FB?<9"7&5*3.02.7+<(B$H!NT[]]]]]]>+C*F+G.G3D; AD >P:]6i2u0.,+*))((''%#"" @*E)H*J,I2G9 DC AN=[:g6t420/.--,,++(''%$$$$$$$A)G(K(L+L0J7 HA EMBY>e;q8~654322100/-,+*)))))))C(I'M'P)P.N5 L? JJGVCc@o={<:987766632100///////E&L%Q%T'U,T3 R< PHMTI`FlDxB@?>>=<<:987666666666H%O$U$X%Z)Z1 X9 VDSQP]MiKuIGFE D C!C!B!@!?!>!>!> >>>>>>>>K$R"X"]#`(a/ `7 \@YMVZTfRqP|!N#M$L%K&J'I'G(F(E(D(E'E&E$E#F"F"F"F"F"F"N"V \ a!f&g- g5 d=`H^V\cZn"Wx%U(T*R,Q-P.N/M0L1K1K0L.L,M*M(M'M'M'M'M'M'P!Y`fk%n,n3 l;iDgRd_!aj&^u*\.Z1X3V5U6T7S7R8Q8Q8R5S2S/T-T,T,T,T,T,T,S \djp$t*u1 t8rApNm[#if)fp/bz3`6_9]:\<[=Z>Y>X>W>X;Y8Z5[2Z0Z0Z0Z0Z0Z0U_gou#y){/ |6 {>yJuW$qb+ml2jv6h:e=d?cAaB`C_D^D]D]A_=`:_7_5_5_5_5_5_5Xajsz"~(.4 ;G~S$z^,uh3qr9nz=l@jCiEgFfHeIdIcIcGdBd>e;d8d8d8d8d8d8Zdmv~!',2 9ߋDՆP#́[-|e4xn:uv?rBpEoHmJlKjMiMhMhLiGiBh?hǓK"V,_4h;pAxE|IzLxOwQuRsSrTqSrNpIoEnAnAnAnAnAnA_ju"%(أ-˞<H!S+]4e;mAuF}JM~P|SzUxVwVvVvQtKsGrDrDrDrDrDrDalw !ߥ!Ѩ+ƣ:FQ*[3c;kArFzJNQTV}X|X}{X|zS{xNzwIyvFyvFyvFyvFyvFyvFcnyڮ̭(8DO)Y2a:iApFxKORUX|YxZvYuUt}Ps{KszGszGszGszGszGszGep|Ӵdz&5BM(V1_9f@nFuK~OS|VxXtZq[nZnWmQmMmImImImImImIgrլ̺ #3@J&T0]8d?lEsJ{OzSuVqYmZi[g[fXfRfNfJfJfJfJfJfJiu٥а0 =H$R.Z6b=iD}qIxyNsRnUiXeZb[_Z^X_S_N_K_K_K_K_K_Klx  өʵ- :E!O+X3`;{gAvnFpvKkOfSbV]XZYWYUWWRWNXJXJXJXJXJXJo} ףήĺ)7BL'U0z]7te=nlCitHd}L_OZRVTRUOUMTOOPLPIPIPIPIPIPIs  Ҩɴ$3>I"yR+sZ2mb8gj=brB\{FWJSLNNKOHOFNGKHHIFIFIFIFIFIFx֣ͮù$0 ;yEqO%kX+e`1`h6Zp;Uz?PЅBLΒDH̡FDʲGBGAFADABB@B@B@B@B@B@~۝ЩǴ"- x7qAjKdT$^\)Ye.Tm2Ow5J8F:BWGSPOXJaFjBt >!;#8$6$4$3$2#1#1#1#1#1#1#ݛѨdzy pia'[/ U7 Q?MFINEVA^=h:s620.,+++++++ԥʰxog`Y S'N.J5 G< CC @J *@+@.?3<:7D 3O .\ *h &t # !            ;*?)B*B,A1>9:B 7N 2Z .f +r '~ % # # " !               =(A(D(E+D0A7?@ AI >U 9a6m3y1//.-,,++)('%$## # # # # # A&G$K$M&M*K2J< HF DR@^=j:u8765443310/.-,,,,,,,,D$J#O"R$R'S/Q8 NC KOH[EgBr@}>><<;;:8765555555555G#N!S W!Y&Z-X5 U? RKOWLcIoHyFEDCBB@?>====>>>>>>>J!RW[_$a+`3 ]< YGVTS`QkPuNL K!J#I#H$G%F%E%D%E$E"F!FFFFFFFMU[`e#h*h1e9 aB_O\\ZgWq!U{$S&R(Q)P*O+N,M,L,L,L*M(M&M$N#N"N"N"N"N"PX_ek"n(o.m6 j>hKeXbc _m%]w([+Z-X/W0V1U2T2S3R3R1S.T+T)T'T'T'T'T'T'S[cjp t&u,u3 s;qGnTj_"gi'es+b|/a1_3^5]6\7[8Z8Y8X8Y4Z0Z.[+[+[+[+[+[+U^fnuy$|*}0|8 zDvPr[#oe)ln.iw1g4f7d9c:bh?fAeAdBcBd=d9e6d3d2d2d2d2d2Yclu| $(ۍ/ω=ƅIU#|^*yg0vo5tw8r

wĂ:_ &ݭ Ѐ" DWBn<4X>yǗi"DH]݌<{flPqq]%[o^rWLcʏ{$\]Vrv],_[F>UJjU!YW3{F[1%B}xB.;+JOr#8hcX2 ;* 3.D0# 1b,-\T!â@# u^WkW஭U]pLNJ`1ryD 8qH2|_񁦧\=ގ*w:j"Ety:pBNy'nZŇ߿Et]e괣h77>'R$ "drUiv_g:cqqQbFPcW1(tЖ#iiß^SW_}4 isfͣ'Nh_( Z>oPsM.\3r$ FbgR.]RtO+>#:,zcnA8ZC5 C&.+㳸BLB$]UZ0a4\S23/+&=o"⧍`y[fjcΓ/FցqXiy[Ds90~N')#zDzLO?±-޻msgf.h^5tμ9Ms溶^lTgv{PT`hlɜ`4DZ k.ݞş߶aӶ/=4ַ)aI^q3<.,(<f 3v2• +vͳfJ. S20h) )v~$ě_hKIDg/~`[*48&{F{Q-Sr2GQ+U&w!xZzIk]Жa,¹˱4v,8~k,g|1=Ӯipp2?O& 7艤̂4E=ZHQcQR@ADCQ M:].9ceإPde&)Opl IW[?"Gפn D+߯(=9ظ=):O>UMarʌ\< DBˀjt<)c~[὿$X}ΙL2$C^L!<@ D((`5dL2̄aZB"*$Dm~\Vc._mն7m}Xq:g ?f>ڏ3,0uV)[}&M[i,)Е8}E'D">zenw-ңw V_Λ+4DAEfIYI99,-3`Mۅ6ᯯgîSVI٥'R]qnT:ˡLvs@c5,SPi5XT4+)iu;YUMe/G*JO'Ǘ[޷O];oԻRn'#o>W76|5TMbOGo!i5鏥Ji̒de/f̘1/#ǔ9{ *y >:jGF(d oU))c,'Mҿj6mNM$~%vǴy=AWn]EG,a ?*]?n ˊo9,cdb6M5MOXSrsK csܣU]L\r?8^ߍbyjA(u4?[鞪'w޼膠ޒ6eJ)fήNSiniKG+W9sÌ$RwUG6-^tʂҌy%ii iÚ{ dϚ3wnԏ -8oثeDr Ǒw)3͞# YXebI3EvͥE5Y^: b4_$Lᄾz5v+j/H8~[-ŘK; nE^6߾zm-u h~sCJݘs}]ۖTm/͛kN_8ouM 6u0M}Ev,Zᖶ5eBЬz尃=hf$V-r}NUBleBn|'r? c_CNeccF=JmI-^hKS(Ϥ.)ݱz+]g}? /cȲr;;5i($c5,r2I|s&tebWa,%ޡ5]yKN'+J0qcZ~D+]Φ^dv&ϚZR2e13}{vVT# ZwuneWmZyMLPsBkEU~6(HZcuHkޚ )R9KeLWuYkfj*7BH22"-B*/*DMYqցoMP^,-T<5O'OϓL)_^-,_U0cvr}֌[o|M&i[5u@SvE٘3Iҥ Z^wFofT' *I7qRQjLBQKRs7y!#oM = fߞ[X`wUZBpa7jθyk߂} n2snZX4w4eT2TKfz0βZ`hOIo朠/ {L; L%/p3w?j⬩F߳_@pE1%)kYK4ԭ)S;g޾aiVNhjM/+Ys8%T:JLYVd+V/M/L Xf̛S P};j*k4)}jjbuFF svZB1( *w:3[ʲޔI%Zh"m|%W?]?YW`Q-)s:](;o\]z7`r ƺkI֥]V0?$UދK4ZRi?hO13ud:=1 ij3T@ު|lV&Zoݴ} [.~qyWk ;tՒ9^^(_X6^{u[gˤ5r3 b䧥'Dq_@?M |A( s ψ+(0 3V˲&IOhZR?jl9>?=CG?$_P}|Hn'$AeRٟ~KzoHs꾩wƾiDe+5j'Kb3.W]߳M4>`$?g/?䀍Qj ]A}8͏? Gn[1Ė=dު4a ?>fx@×ZxӮ?{WŊ}&"g%Pd t][]{ 99'[G:s+'cvѱFX;HI&'/ko{9){Ţ!2.*L77S&/Y!:}J{Ǹ@L\~S0=#ìUՓӋIY&fkUEZ!ص/'x7W[OB"Q؎{q7ď MKVԭe}znE_meou{&ԳՇg5(#b_N~'Jߵ]s:έ6ï 6[2%.&N.M:7RJy3gi넍ΤȘ̙}T񉮉o\KHӯk?hZ(=~ZkZkZkZkZI/]bpb@ DSfD j<99;rh^}A)p䷠`仠#p.:SI#˘^΃f=LtT 5M%;h7DO #!ňOfF^#gV8yi![LÈ tD>LaAGA׃:P DS+Qn=DLjz',~jyh/Q)?y^=F?zj(0t  oY/5ǠtbdVX(A DSf|L/A"A̸^yq I`)-J3J3J3J3Jv9a\NSB4h%n=DDw4z)Ot& ʱo@ DSf@qЬ3#ov!Kz#CBt>:D<.ei"dv!K( LpDNL-n=D>3~XW&^|ZL• N!*9K0_sR̮*2 ()BɍȋD3,|wd'h7 ~jh/a,H| alY$sdt(9 M=م9]h<cN.0X8t{Y#Ch?h78pU!{P'PzC{PKF>d=Ĺ8/cKA@KvEKtY AAAa/݃|)}RdKȼzG$~d?I$9@^s/鹗Kz%mR>jGmM6}Ԧm>= vzhbA} h=hy{#K<6`! `b٬ac iTљveM$G>U qAZ-ۀ沁p.7JPWO"9GD\1Oۂ\/&b 2?X.Ǹo#\Ɇ)o4z3YCzh#,5|dIRD[ZvAWr,G6&6oX;nL2rԲ8==QSQ9\1ςsd}eآDInG/o+:G-] &foyptxrM Y7J+{mʥ胷,['ŵSi=uO7xh-a<$F4?;!^QޑEکSe4:WAFlHv.)?(] 1iV#۸$nL<-yc`bc"VVD}!]h;;B=ԯ.(„ѸM$XƋND#e6+ķIыТxUbzuo{eNV*1wKBh-O\]4oS$MV8Ȳ;Jk#ǨynKדWXWpEGi--um\Mmms6.w\[os:[m N`klWk` xlngi7s[/ mNvs(ٸhhYr4yZnAju"9!9mT A\nsi sBsY(΃)Cpx!$[6C4 jvlf N-~{u[O]^?`k@j6p /q{ڝziovOĠ"9FC#@Nي)4=W u;tB62/)fϋRl^QLrb|%1b3o(~7hlhWX> 8E=mu5xBs6>[Ggҹh9lhY/Qr֣|{KǭHoܘq̼ ̡# p-OZi%E^@ۜp8ɠLp$?l ym\ܡ\^voTW1]ewB7B@J++%6a.XW"A myxMc!j[]ܕo 8ߕ@@{Z>mE6c -@%:^i y{Y}ؔy6Lvn y w"m'[f)@Pqr9/~cm t5^7C&Jmѱ=iuSUkQs (^i"` 00VǑ8(dv(g b ivc]TXi-9Ď>Z虁6af&*7LgwW$hII~jۛͼ۫mo_m^}jۧ=~2~yQ5Kg .vo~73vfZ,,b_X{ +^gV6zv Z%݂u 3YPja{@e l  ; /k8E쀸kYq?0~Ɵ㯁M`+0~ J*i&/͔BͪuG1b+0F;05` G`;`< WLX kn``o<0 }`$t9 X$`` _ƣ#`|_ƏXӀoz`)`| c=/=T=( 5`c`0c% HIlPZKi :Qi_/hq 0~[",0/2``a:K&`#{`wذK.nq$0Ʒ؃Jil4jJ_e}R뗞W0^b4vX5Q-eC;QUpV[8+:(WS=!U$?:X+vPåK: iB4TQE7RCmGmmåⶤ.%AIctDb:H-}Fz3 3fJ;A@;׼G+26vFǣ7P3HuPO>:#ә6[*4xw5LpӡQLC/zA >T}"P38=gήzm*erK#Z7\Hc`g%(C-h/.>|0Pj^ʰa%p=}ܺ\gSR>HpqŋXD)DA DAb$ z#dמ1=Yd+>:g$Ml0JRP[j:j¤[kZߟOz$Xx䟟G@f<5\8<55 i =tz8 nE"D:pz`aqWL`^ -AW*NT铘tRoO!+Ob|{h} U=5\T(E%1qUkb{FJx5:ѽG\ W-G#&S:fݺl]QapƛYp W\\nv:rlە`` AV͖τ :`Pwpk Ay>K wnh0YQQ7RC;ݞc< `=$~c-۸A 1Oy썂!ivNNAo5AUx>U$.7nI2x#Fzv!h`S'`9H\"OݢfHbd^`%/j!n; :皾Kø#q/k5שSB': j(YvHcZ]uccUw'Ej;QkDo: .##Z&ŝVϴF1E:@UmYaZ-y xˀZ83pMlQPq"̝krLyl l s+>4$4a]Hzx kB1'R P"¢A#Q7*D'5&eiGw|#BH3BȠ GGG}` ^wxcjj41`$.TK'(^>ﲤDr 2^:Xbc?9]_W澒Zk2ꘑŢtOtu9wEm8|QÌ/* |_hўeTag6*O~pe2\k|p-(2\ٵ޵x ?d-/ ZƵ6] h s 1>lG,f4Q_m4F6MhT¹ Y}泉j1";zܪ:H\6*đD3$|nS ,_|jB}HF#XVN#<2j!ˎ{5'/ Pq$t*+:P.:Ӭ$fn srSN+LUnIL&bèZ&QϪFx*oa&MUkGLV͗rǏ_>j|eV08˚T̔8%39gҹ1tNo4rtr8ʐ#*(B/)k1D*C> kHq(t6e%1]rK#p܊xinž`Ì$ ם9=EѨ zy=ht}5sK* /wkT:mY8dbI&ffƠ1L CZ#I!a m ;[D,1yQ6%$7wxJ^z[ޑ 6[t&!=:ӡ$\^($$%:sg$$Eos !$ I|?橩ڊNz~@ CPS:I6OW$0QAoXa/&a`(Wcs=8)0 i` Go%JՀu&ڃB1Lw"X˒4yK30:S5\}ggP4u%=5!}6?֠m#OaIܙ7Q-|&XʾZZȢR kt(KRZRkeՀz+bכץz+Wޠ1*@F! E|"{{̙s3M6?IIY]ד jױ[(5\w償˖>¨5N vq{LCQ贈ֺRq+Ӟ&g5ZڟrYwm0(զwqSwI:X^-}V;=Rt6Ӑ+vs Aq EWgYeҞ5P;mJnSI<5;BJY45mgЗb^.OaƐRyRΔ̜=[EpڠN,$!!*i?Hf{hk\VlE]Âo4U39WzzU~sOˇ2R[3_JxJ 6itH."ttt)LRj]\M[wHY]M;_$t-օ>&$ub۽M]M}ѾAҍn?zk Mg7͟Y4?ٮh_4Ҧc(5iל}i9}$?IFJ;Uu;D ȏ((nı #J#AQ]FDE}Ҭ%6Rkñ`f]"'_'lxE1.5p@$TCDiۣwEWGkꘈWh9cnq^suLLmX-p!UkzpjW_8.GV 8ڙCN:S:-_ @h=Go~4%..O\b\23 //ǧv?@.m1Z+׆>ЅiGln5OZ !U q1=nz'ꄴ4}/'LLL5-=!~0vUU;@rޔ䭩ZRJ:=c0yR=<ѓ99o)iSK^~'Ѩi-ukFڌ3gld)i$dȸ89#sv+sƁYQ[n3ל;\lrY]6dϪͪs-D-,x9'3geJRfmy=CŃ8j%O[a%y6m#|Bؙw 㗏O[~.?9.K?,T.P]Щ `n hbĊS+tZgšV\X'kfl[]VZoP(,lSРC_C`_w6A'MfXaAmEכWgEd]?w3bըiiUxy9₪c"w /:VRi4Tkyl7`E~"uד&ry2*HKBQc}4Wō8r::5V:TMV{+awQvQ^آg> \67ҹ;*,J@+E1cz[>کn+4=Z)SmLv5:Rè+tP@t5aAo1@hHNy]A<Ӧb[#ڙ1/ZT\N ZM_RY{4}SAljHN:^ui"{t> MQYJ oKIᓤ>Ma_L(e|£U'U/9{KEnlk{T=ca 崑'MO~"L Lt ġW _h%~l8kOTrUyQ<{z&j+j= =QϨG+z詶s{)'Hi5Rc'M1OljVåtS⑰W`+|;7j Ǵ ?)xw3VZs7miɣ]bEo#)B>R"cz}gvq˂7P1 /*' %د w'C{6.]\-A}W+:FZs/@;WA-p+$@OwC 1< 0xaL80tq3@?fls! |Ȇ_,E˹.%{<#H}sp ~ˤW@0_zz$ 0B+p' ˸#a}$DA3C Z  ~xp5<C`F䍁Gacba*i؞3 MȂy$ֲgF{7Km%v§*J1| {`/T>o8s=A-|?A 6XW~W&◈0$soKzZ2F}z " nTߙ[ZJF\h'R&u͎ :C f̉h7q p'D {>~x00)Ti0 L'` TaטofgA~fgA~fgcccc2JA̠Rie ,uB7b;A<)[{aGY=ǡN@=SpY8P? p.p~+gv~fgv~`[Rfg)TxO?P0R!#!E>c,%ΐ>%}5$5p?ٕJf]jx\l3L }"L{l133|?3oI^&a.ea,E9ˁ{hB!K =UzU^^~ˏzQJԫڇz3xEk?B?:`e`d%syɇ;)OQ^g$ydV0E'ho'ʴjRvzSR{'eS)JT\@ ._K+&qz\qz v^N鴜dgpz)ctt0qW"lRE`Rp VᄂWԋ^\˜ /?]* R[wibVVJRSԕN{wHڛ#FH&x 6x^*5x&8mxޅN. _XHp!qQ :8^꠾!Qwyj8 g,I;/uз'1@[htN@7qQ3Bwx=6;$3,?"eFNÉ#I(Gsn2&%\v72Ǘ9q^N:Ǒ9qnHGx0&$`-Ysˬ `6́`1uRXeqelg5q8[ 33sC`8)89"=.yhoj\7ok\G3,l{d*%3W*7(So_} at]>i;| N]9ۻ7|_V ip!~cpꠞs? 4p~? \Ee7 IOu!*jGt/o-2[Uk:x8p}qO zAo}v~wAm$`ɧ'2Q_1E qrp. 4f D,̜#2׎ʲ8(.|riؾ'nmKv䷇w"Bx@Ћr\ܗ>fifififi\ʘi>9^p?u$ K|Gxq )NSaL yij`6́`>@9A.,%AOVˁ> OJXa }3,ظAVŗr 0/PH(Ę2c>uʽArQj1Y0@煢80=PhI<Ћ0"FZJC88*oP 6>a;|N:s=\zU`x8Θ羇!sùÅ?Sk*"7|2| pùp sjYqn{2Dɕhr%Z Z, Z,Ŋc+Pc=Vc=*PXtcU*PX( V Uªn 2+踌JAAeV ՂjAa2.K㘕!mmh|O)Qw'q5쁽P i  wP SK[?Ha u|l?ӧ8U'Iʟ"> g,_Oy /Pyu? +8'~?pN8'~<'wUl$O|.}c\&MXBBDbdȊ+*ŠJaERXQ)VT +*ŠJ[dVU *UªJaURXU)[X3uz c{,x=G{dǂX #= ޓ(xd=xO6ޣ4S872^3 >#16UOST>Ų*fT3RbdUqW+Uܕ*JwR].Tq*+8Z)#\B<VggZZՏ&y$j=5%)%;m;4UCG ;O O!wl[Co(#gO 9v'ogㆧmv uJu@vQR0`U׳g_?&&hz"UQ;깴S] ?ER9~[>IjyTpGQyT[A 9 Υs\*8 Υs\*8 )Z?J}uPבD@W7C,t8-:x#?_ C <#`$<'> A' yB|h\ w#nߍSW*\gu:3A8DB͡7A+h-е~;tDxUAT+^z^)Wrz^)Wrz^)W+ u^ !#!axtP39L9-Xy-\X K(s\F<p7 N~!|< wR])箔sWʹ+ܕrJ9wR])箔G:X!zff<8rYy<>;䏈?~3v9痯Wo;aҿZPQ~ZΨ(O}r2WhWr$Qh)7r#؂Vlǰ x4v b!>;Np0c0`|=#`$ 10ƈGQQm| 8g2 qYhc2e o :y,UBK3B^_JRή /f/CjֶbNHy@~G tnp3BwcSh+43h;X@9A.Y K`)0%F^` Y9w`; u1C]P3 u1C]P3 u1C]Jfh3!"ȅŰ `y74 D]H;uHG, %)Bzu`ZH7$]tle!KQ~ Rζ,4gU18up$p9񕾥H {0 0 a8C0FB*̅,}ݓY2 vh0)Dž0E|e 0KT/U&Qn=F@ajG x0jn ?qBꅛՂՂ e(.ŅPUA\ p( pu( 5p.PJb}.fbyife1ʘi.fZ32,s1\̬:O? ga7cU:1xB2$xxZ|m<giP1SkHKbW˔2WhWI&2P1ʤ'6LL"dLab)a1EG x1cjA)R1D~4bSkQfjmoG"A 0u\guSfc)םvȏ'Vy1$6{ߛ|Lwp wR$-(ӟ2w9 =K}`DE_` 4ɤ\ "#48xFSn ܣ\cK8ȟH$-3baj{#g8ǡN@=SpY8Z`(vS< 6g9fE26s&<[8s(3WYkGbQb^(̋8b@[K2n^.[+ \(ƙCEJ] hkxӼ_ϒoz@s ?:Wpm a#a( {qX(vTEL\-&/J6\ɋ+9p%WrJ\Ɂ+9p%+ek12@.Ņl B6\ȋ yq!8p(u nGwT܁;Pq*@wT܆PqJlށ%v؆{QbJ@(q6J@(%v6؁QbJlCյvT7zUP]յ^T׋zQ]oPjPUj6T͊ T́9P5GP<U{UDլZ66UsUU Z%fCլ8Tͅՠj5T͆YQ57PTU+A֠j6T͊ţjnT-UD<U[YQ5+ţj.TUAJP5 Uj UAjPTm fCլZN\HOg!g.)6}R?O@p\J2 ySR l_$D+7+ iI'%BC~` %d`"LFR)(ҚAsZHܒ7GS&2IoHkO܁#w3y] 7Kܝ8`H 'mĽM܇̝D"O|7$?Rw ҇B2iÉS⑔E41=B(cXƱ?&6B<_KSi0CJ0g+R?FgyyٟY#OM.d,&m Re[N^>`%I"4+a5ik޳_ϑD'mF?Y#11ΈhDyQIQIFկш#럌(OpDufD%0Q (ϟ(ϟ(OpDuFT(OpDu ׌FT#*aDum4QIFյшJh4<׌FT#*fD%0Q (ϿQ B:KXQ8=;qY沧pOc}6c<#*ݕVW^iתx_b*=jw:S@\bGwnNVGZukw3:b{u|~wC֙v]kѵWZ|]]\sw7:ڡw\kww:ݮ-<|tk[~w}nʷ>N[w;){ܷ>;VvjRE U4oSFG[{'lTN%-"֧|SvjRM 4|SP?WZ)o~Jꧤ~󽙚:|{'euPVePRʚk{wuTa)VuiwRvJuTBu o]w?n{-]ǣ"5NT.v\'W<.WrAK$lc}!;q5vP%PJ|;(;((q7Rb+%.nJlnJJ\K)Q9M%]J)q%%^NRb7%P%čJ(JJĵ[)q%CݔN{(q*WꭔT7R2Jle$%vSʕ%TԻ)QJC[)۔wUԻ)/%+J\wSb+%.%T wR) CЁnԱs;QaUN++]qZ)oZ"EyQRCy7P"Iy,)nOPA *F]ԵVϭ2x>Giv;mOY{(RJEQ[)j6R(%uSJꢤ4;JI)i%S8%6RR#%RP7. ZIM9;(rVR(l~题3F1bRLlzC1bF).JZQ(l2N)]z;l|S=J!tQֲBV[Z%ƗXnvjMluR)eRvPVJN))Jn A!]zR8SH7tSv XFx2vV颌U- %ED1(9/XX}wpoMA=y"XTL&\|\xo :l§+kĹȸJ^K<#(WTP=q^hq U,XEQ)Lit ^T? 4'.!(ZxKԙxx{ԓX(L։Glc_W:IoqZϽU*kpDnM^!oѨ#kE꿋7)9 dlv|_t-XR\Vۿ_ Vt%/a^ىoЇa|o5PG|ķpĞ~#}~b{1A3 (r)Q1 תpMW;U/r7ykոu5Q#5 V5hMqn]ۂTe}$cwrE|p1>8Ǫ y_B/}! y_B/}! y_B/}! y_?!-4B#-4B#-4B#-4B#-4B# 顑顑?cg13NwB|';! NwB|';! NwB|';a/_p `am*$ 8'5E'sbNKq^  O9xū4X(棼4FH^K9i#'e 䶂VJ9t* XA+bY d,V XA+bY d,V XA+bY d,V XA+bY dWqŜ_v]=(m{֜w])18T-wss{o9.Ujiճ^W-3eZx^5Jf;]O%jοp{VJ;ތ>VzccMn_i~mk+ d&me,,=V G%ض㦨+q!C%:l? _[mh?x֕{Cbr޻ uxR^u.^}z?Nөt*;6&>`lM|6&>`lM|6&>`lM|6ɀe2zp ^#ˀ=2` #Ȁ=2` #Ȁ=2` #Ȁ=2` #Ȁ=2` #Ȁ=2` Ãӕ h6~al͕ -p)^ʃY]ց.@u:et}^༪"GzJⲓW9XSi{X1ի̵n&_$uxm7&tn7&q)e &b;75u{v'k.+J QU N^;y{'o=|O};i8Wp6貓3q߮sz=V7 kp#qn!tnXp;'>7;oY.3t ]f2Cp6nڸY7kfmܬq6nڸY7kfmܬu']wu']wu']wu']wu']wu']wu']wu']wu']wu']wu']wugPg\ܪVR<+n'^yTVT~jF2*\%+UnnnnTDUa̽UGt$[H|>ToƐn Ɛn Ɛn Ɛn Ɛn Ɛn Ɛn Ɛn Ɛn Ɛn Ɛn Ɛn i7N[cCdž`^CzeWze+^YʪWVUze+^YʪWVUze+^YʪWV ~|1}{yY}zVOe*S;U 5ױ;hN,+׳7-keWdV%$:hN̫A{P%X4jf{篏FT4yͪhVE*UѬfU4YͪhVE*UѬfU4YͪhVE*UѬfU4Y֬܉ ؈q܍MqW7װ _ǞhDGTzDGTzDGTzDGTzDGTzDGTzDGTzDGTzDGTzDGTzDGTz$^i>UvV`yP:j`gӮQnsV~*|ZOKiɳGuDޥ&7GCcxLQIf+l%$dVJ2[If+l%$dVJ2[If+l%$dVJ2[If+l%$dVh oW} ୸o]ו gLBjđߟ_*KU˿AVqh4qt9.s%-8CMM||\`au(H% gqgqgqgqgqg.x 5HE+R_/O򔖧uܧ*Ь*Ь*Ь*Ь*Ь*Ь*Ь*Ь*Ь*Ь*Ь*Ь*Ь*Ь*ЬzO>=ܧp}toRPMB5 !Ty9!8D{+(vA:q!:\PMأcx ؏<(Ip438g9Q_zdu.ޥӻtw8dݺ[WwnݭUvV*[ew׫$Ct_qw"z}n۟1YOȄ} F]{s cwd{,%pLg۱+ǣ A/ox>O|}/ ^%Ci4Fz_bߪߕkpL/KkGwnjR)}}*(fJuA4TWSuٞ0c."ŶcXC;E)Nn0 S0 S0U_=T"-ORFR6Gz3&׳SEUp)m3ےSYACr^xg4s;T=H)<~f럈^__ꟍ^_w5555h!>[ianws/S6e"{ox[>EI|NM:.ҥLI U{Wχ|XχyX{W{y>o->Zh[ZjQTbՉϪD7'k'{{>|!ɕk9Tqf=Ogf}`Ε'[g?⁙]!wf 1l#<}GOg6$<><%yq?a{}>;ʼn'=^!yx&xc3L6F)9Z}T6%Om_sfbO۔|u^bw^k't&W 0}(v*jƳy/mgEu̶*$fru'ޓlg6dϟ23P"۹xNVԝ8vܫ=4D]uy8s pYEn7%d&>]hE[n nZ;n&^QVpagXV?5~ OgqF9C#ghme8kUOluQwV-U-UuJUhHSE*T?mӼaڪ?m՟~aU_E]UTL~WujJ)Q"miHE.JRĴ1-ELKӼbWL)^1+ʝy|;㕧rrװvX:lc}GUc9:^Ÿ::,&>kn.e^WdcuM|+<_[tmq-fU=^#P|m݃)vEylQ-d 'IY̻+y{XsA"v8s'wZ,WlM9-G㪶X& \ @ \^YU] T3bn+4yfMpjUI֕)ۧ)yUrz.s91*|s>:<g?!78[ez^O^abSo+.qv\kAyoP)Iy}*yV'$>Ͷ=3iKdJ,^KuxJTwYWٮc\坏̗xE+k={9^xk<-ޱmc[\ϿyK[/mK["< צ| oQ-*%W]+j>ggLˤLzI8=Hj+gԀ\8W9UZXWyUuc]XWUi]UqUeGUH^M-ARZPy {/U\&W=xdsg6z'k£G>Fukw'<28[c=ovG?_L0gDsOz{pIKNr>e{۬$[[d'_SnWͺ_*&ߘ]exw)X]u(jSp)Ǟ\?, s^_ 'm~ÿO?iA|1| 'ZuW>"}LO`$!r0 +AFE"Y.QgQ"^qT6b< 4**!KD ?UӓL&uNuuoUS՝#emʑu hld/+R ğ YUl5M 3r)˞`#y6~ rW7ەށlw8#AQ:EVBVA ɃژͩL4@u H?h8 Qa@v~BgetFS~܁%x*/l͖Ki52r,4۞q : )|G,ߗOhd!$ !V <\!N:dR2=G! fwHeWBS䗝 }!ِ s OBPSԢTGhh5t\k/Z* 1k Lh9k@8`AX]0lu B\k&82 JE(=7dY R ʢZ(}6J D)Ql0;2g䘃sJr\fr\>hׯJ*S񙰴LLX[7Q-l="cCS   I R܀7B Vxȟ  A&BLLM>#d7mvEЮl?C"hY(F1Fh k3/ \r7aT NfG~EErzeHa%A jA:ZQ jDuVfA۠FOm6PmeZfA J J _0HyHBc&H2\HcHyH3NGhtƚ^ސ>~4H@+|(^㌵PUR2؉f#)z(Ԏ1Fx<-扐$Z/cE Q_Re/Ƙ):g3 1Zxfɀuº3i<݃;0^l}YL yR2;[yVh4g3@LZ|!~ YY em, qÖz}'FZkh\N.Z'7$Z  7B@0N0Ceʛ2'H f@z9`nܝ AcPko%UJzjXOAюZGjT>D{E@N0Gu~+E`?I)ȵC'5""+`Q:rу у=u1CvVH .r9S{{*rM/"zT|)ѿ^'ѿ\~<Ӕ d>eơxS ezR'҂V#9]OI;#b5X6Ø?7rՈsq.3e83883dD`b`bw6] I,E񟨹:< "tŀi@t}%+.9/֥_ Uz v-k}cj 1KEi-JYN%cu%(^&À>:>h$NS)@ p }@`ae@&ɉ@ n m}@[i}@tM]S>]}123]t]}@WdY}@VTM>>4M}@S4GGz!> )_'BZ! 0EaI4r[NeT`j|h(]uEgqj"eY%zy¨ȌGʢoB[mmT&%CxL"$ ZU席[Ɗ89V9XcUN:V9<%DHK'+txұ55INJ7+]I'+t|ұI'+tpMnkY៉f^wae[ +۳/Y'~b؀བ5B_lz1 hcͨ\*qWc9X`,0^k@ox3yY =Āo;Ǟ0zV&a0q8 `0`c022f 1 cnD[5hl @?0FU2JB+`%h=FG0F'!kl;J?Gae$L PqB#qE]<G~?;Bco`T/֜Zsh$ZV͟sgnQ?w{?5*lG;BgKGo7Rc]喬^\RK^Wv͖Vb>` -Ўcwrp'm YbqEt s!#rZ$PDٔ WHE"XE`xj3A 9,SO[S!ٸ~2 y`М9!v=au,a-07ܐ -07P1K#}zNbjƊҵѳTx i"3<=[5FF⯚}оY2 /2T6auԻA:p8{Π,C?`Q>X5T|i;j5܎|0j+B_dv߾)OddI" dQcmj5)BM}ZQ}/4υ֊;A\A6162Lp ,"h\ںԸAS>Mr6GZ9@qyQ^TEP`} j_Z*B2lέ?#j'9"Q,/#VaW J_0jSc*G(\ ejT69nLTȓ3ZVܶm=P;oV=eqNJi/$Wiبy}bS2g뽘y,RL=͹еk! ~[HZH B">{3]TRd}}Hbvv${x˝GL{*YTjjS\ԎX̄h*gTH i<Ȫj6V]BY6~6UgW[plkΦ{X${ud֓Kcps`ιŮ^e* ͫ,jz~?kF^dcx=ns٭ ?)-we>OgxGmßϲ|!_/j27/cwr_W/xX_װg3 lcFm[6;^ Na~l7/gp4$و3AQ1jgF-+6dnr8hʅ-cq c?|^Xc OOyCcq'Jn3ǚ̩T,:󅢫/EO㯊bM +.Cĕ*T\#FH1#rqRLĝb XLO 1szxoO%|xS,Eb(0^6ObH&8OG‘h3ZK[6:ȶq ;Kd7#  gr|ʸCΗ%c|Ey /R4eH~l|.?KKY rQ w]FG7ȃWc,EnyL:F,Z^UJ0~(γzb 4kXCf5Һlcd3;Ymfkuú˚bYYfok5kZ k9j֘ìu: *016X?֎xsD9q)=qz]w9/}抸"5=xzўqyKD7+Wĥ<=D;墏g'O{>=yiGz Keb~r6:./I3Ea3\ \9cvGYtGH'XUy-5؇}%i ]@?7FsՅ Hen{)B蟇"9#Gk{{)AťڡsRB+|aI1DhPmNeN[<fgq~g@+?L^g5oŊӔO+JX`/3gPx!HAmMߕ P;{YfT[(cGڠl%1vRnjf8u\z9OpV7$;Ęr,rNsqb El+W?E -YUOkH}] C-gSkW7BJƙow*Ufz.v<~t*2"[+CikʩHd$OY t=jQ:5 ܎n\W`RbQcaS`ce. g.WּZYzi>7v,y*ԇa_h\FݸB+Q9vdŎ3FwCWA֨P!7 urvK#z_HVQ\IypWN~H̡WkbWv. B0V w8knCuUocmа>pzlaP3K˥\^cjѫEg:ǮNghEI+8pk//Gںʰ2wҌĩ,5d>oG7V7jvnp.Sg>(/=N*# *sZm%KJf`NNg :7 <ܯw^!T2}/ i1J̃+p|!3u^9#:d f5bN;4_]fJCط9/vܮ@藺zq62Tg8nD&~qүZ#ֺwj廹XM =坾11fR]A{ܔ `*Lq;q{ 8"0;IdXY䝪ߑ"VgqR!Ǥj4ZXw{u}/H?o-E7-<1v߻':|<x\9,|YkeT%#H '%oo'iw"$G *M)$4g2#xqerZST>ƽͥb:iEP}9;E@1ݪbD1_)Aɝ}g:QVPYx6ƌ>"wzoo4ǎYwK o;E˹Ԡ2bZw7N0ީ(wzEwsK;#=F>+-lp=X"7d3yʹyy\JVӖ'#!}5gG\}T0RJ >#Rըg;MMRzwr!\u>W?g' jesf]]lDTgڻ\ fϸ::M#-ӖКw'cvv~"w05pxZKn mm+uh;}%.OA!V<9Jn~㽛~^Y}Inh:<}zĽO4PzMӘF uNcsY{،?,qߞDs[Gt/vCoj.z;"E휪wD9xB{Bg(<Ҙk "zLEĎʧsо{/Ux|{SonڕE|UaR|]]63O_z7{F-Wi:\$ZpBeUu>E+ bĩɨy\V=i׏6dO'?ì4¨kݾ8` KL]98N.eּX,D=wa qoZ}tUSyRc$M(n7MG% uJH31b_Qʒ{ 7B Yx'ؑLD'PQcywʮXgzXQŖB }xF,w Ň0򸱎eWO>Guc͗꿖H/pLw}Q5ߨh4LRH}hM~4.z_7_KgVӏpS!q_XUV%X?6]nfmY/f66a2C>@_ȃ !cy%{nNœhSͻ9DWѕ+TXysWy 1D mU*^\#&i8Y{xJ!qoF7#x4?8ҖPdkٚW_W$A ##%G^9Z>mr&F-1D&s ԸB%2w%rq]kccT~i\' 6&-?˟~yPSW$"1Z FUͪn#G #ecrajlnn36[Ic5˚e찯1v#?#O~c4~؏soF^j߶6! G} $5!)]L{R3Ǭh&yyCC:ٯ`:3H Φ88<کYUK.QUDWKUu= ~Bw6Հgc^ Ղ;j]XuR Q#k Rt8ZA 5.FH'⥮Х\"bW:F?l΢tJM7B14ydeB`6Kh=ppZ  ׌fOkBµ؟}p-~w::h!}M>kIkG/Ii#\ m-m+0Ƭ 4f]D{W?LGQr#S'L2IaXOYրYC֐ef|`ɅLH[!>v tҠC: `00hr(Ŀ&0 2~'ri(7e!t6id9hSԌ=͞&l>{Z9jEԂ-f#dDf.c[6=4c?@v@gd 00bߨ+bEԛaG/;ʎ";bVp9r .\oq ~.F.V.cv ]]o2Rg(Y1 t)M/2*t`y652kyy>lif;bdvFϼei+IbE59Ƽc[oNdm9ɜDSu%vy7Rj1]swуe2{dTJ5 %n?li" ?%o2!@1!~:j.jƘ)yAĵZJP_ibu:GYD9\/Gn7t'nF-h!n%/ƣ? 3QLDΓ$|ww@;]H5YLAn9Md!tqC3 },hww+Elp9/DlMC!?,&!PuAtGc1y\<^@w{kDb [VM@v]G#r-v#BQ?=b{Q x V<C_?,S3iH}9Qkl"lWnY@-eUY1e5d ϖ5qE)C˺.d}m("s9-Y&n#LA>\lp)i+"U;b$;QGū# ~_!`Ĺ\E09ΓWjy-Jf`]Qty7 ym/CNEw9:Yr6> dˇPX?i#1GsO <9qOnAS)@>-V!d (Ar!rX$!b:(_%q 8!M&r\Jq#RW*8 :K} qb@1E:W} zCFL} 1QC!FrL" ϭr;v܅O(e܋~?(ACW+ߐ[,1e1:!5TdKZg-dZqVU<xjhU N@̵յ[ՑU,>U9ԳAVc<:⬦VSn/V=YVb^juV+yQ}+;F]++uNݭp{5KQ{uG[O`݀onD7Y7XgC`ZjX]ҚlM&k bT N֊g  jnϴgR{= ~pnFG yS{żbN1oꤘ7BV+q^eB7҂#-7 xz1fދ#B.v"ooꤘ:BiyQ o7 !gw #!!4;;_y|f._yb䉚\*6}lzP Z=-D~vml7`=m;vmvOe= {&ZsBFk^A:Oк7`w]iy ް/şjݪ݊"mmD|v⃴!j!}Qmy@hA`,Ύ!Abڣc-~Zh==A)`Ix'? ~Hf~<5fh3?K4KvWEhs6k%r0a$ÃL19br CLF39drLÙF09|~&L#crp0&8G=E^"Q$"$OɈFLtE3 aBItFpAG#ljqN3.h0??lL,! @kk n۩Z3>~1O8O\Vj=Xr.tIjG\Ia+ g[Z!+ y=C\3\36,ls\BEM@G 3QSw*(t< Fj)傔: #x;x=vjvnvA"^.D]D@SnMST=ds?~GG"A֒`G~] ~ݓ$  !x X|(_QY.SY-[`+Kdq`A\ EQVgg5fJgՐ9s9=zE1)%2#5dJgԘ)SP"O&L>$ݙI{.x.PW'OIWOO͙O2OuB"?u*y**UU^RVIzcXM*U24gV¬ҜYXl b`babҝ3KKW*n)bniw!L/ݙ^n}3_G}x[[H/ܦ߆kooG}B9y99Ms2srs3c1+Ӊi+hq}ȧ3g y~{ Wg#Ͽ@AsqWb꣗z3僈U+EEE0a.*d.*b.\\t sѭEMEKq//=a@D] Jɫk$鯑,o7 TtS_[JmA}Rv;)Y( ,9{!#?).EWq2\8QF`(N'WBJ>/3GEQdjcjJ??A~y5]&$SU*R{HWz)$F\Q5e{"ێx.%APWT٩S2Nw2;}0RՀ N&Kxϼ}⓼(;;wBH͙CGދ/xxtc1zc=eM_7^!c 4v;# 6Ǒ~82 9?4>eXv#=t4A]e#وfLg8#; EvAX( 'Q/Sy@'Vji$GII*"}g3Y,R 6?6ls\. Y lt`o\j鿔JF[ʗf M;^-'Cq*' E*b2dQśLLL͙;"~+``Ǵcé~!C??]ܹsNzMY<?]]W+9sVfA7[{ݬJYvyN\ì=,nӧ]|}_ZWBx /Iqj?>Y\;p3ovT(ZW]3]9 _ڶ$_rc-o+Ϳ?wz4__24λyݹb7m~oyF=߰}ݕciA}J^Sz_)5oYK}dnf7m{#doB.Z>8~x+tmrK|;#5MWvZƯ8%~WïY; e"ݣvi=_;dإ|+_jEk_ŧ\ g8Fɦbj>ʛFVlo﩯ˀ]^vngWr}k7`9_Z?eF`xay9^Fɼ/(/[ꋥ檵n}_nF[}үͯ̉xtco:{7yk\>MV5.ukt4+# L_0q]vCGde_#,[4?pS^著֭r__YK /4:S|}/vM^W' ɸ_4m| kX/SSo,6}J5>E/Ws7wʥU9r YUyY}7 BksAoD3IW\V;jG䈜KL^6D/ч'Q=1H xq}>Jd?A %8j 㩱W)]MMT123j&Q]ݵ%BeJQImDP)[MmNN,KX&^e 功Sx__RwAlbD #m/WM;u"_MA @xo4Xgh({S/>QKi{V=4UOc]]I4ΕJG]TzԕA\-]i =4 C2=v_ijezFLվ㋣J2} |+|f}je-XeuV;.k]ՎZqYv\jeVvqYG=d|d|6ۨEjRhK~vY֞2M{F m.{i ZYYsZX9B>-שּׁtm}ܑ_~WW7W3˥`:!2!n::ҩt,ҙnQ7d"y,YR`IƒI}gLjHW>zGOc=MX4`K%8%~|9W iaiҜ\Ks#H%X,dwf\;M'P6 Jz#joykH|C,,'B3O]H;,n`3x !} +ڨ]}ɞ-IjGz_j%>Πds='=5:)$E)E>b{)WDfP-&%#l=-{ZeBKMGw$spD^=}ύO/C0޷uA=/蟚BNѓ|F/vQ}ҌWW걔z,5@]WƯpv1~C{1{[8؎&ʓ7oQ#ڨٿ.u6G==|8+\q)(##jn5RkccTSWq7.RK?QcP&F>2].}Ԇf2~jvnJ =Y6DzlT٘Z& Φ4j])-ekʆie6j+"He|e>"|99 'ʉ?!@\td@Q"tʎ{/}j !gJWMuzZ=@*#݁}t>=G7H`^#ݓ}{tw>]G H籏tg>]G:};t'>ҝG#Hwbgg΂P^W(EJ;;)JGd:%xGȯu%F!Cb4-Yw>|pEOO ^͟OAXϋ1\_>[9b(F¤ߎg^5{} XcV,12)~qbXʻ;o'~ )k;M1Z) xSWE\3X7c=ޞx8 ` yk&yx< Z@/ާT!oʚ=]'tzkTG#(%:=uzC缞 4{ ͞=5{kd٬\8p%B'~@'R#T~TOte!EZj Iك{]]1`wBC]]{߆/ƀVø={y!T>}z}c}QkٔɣB/ Ss_ķZ^r+Ѣ%[/%AQ e:biϴ:Qvԩ;+G8C#B죡v=ct:f!GMȍo" "Ⱥhhhhyd{tMtS:z6Z]Tժ*7zjXȱ1Uqkᚡ pt >'rF7EDV  - ?h^9R{d ZZr|h<@^u$VV:Vۅ!{f4|1 dFh~'ZZ9{pdV脳 2/?29iZ6(@ͫXVd{g_l,j_WodMFq}ñcS3ѭe,39ZM͊F-v-PBs*n[;&Ds2g^M{fop^;j[>řg?9NOQZ*9B*Նmt;_;DMӦѝlm ~%>>OGΫ;Zs5sGkfh-LVo,~JkV"вzVͣr7Emmxީ}B+>}R};UmYs` ,m߼%oxjzy=}ӻGwwww6g;i}r߇F=k4Fjv=o\>m"am1$-MBT-,eEjU`ZLvCҸ_ 퐣(m#h89N"Om7X{SR,oҔeT;#_/jR%\)Wjr \+j |_qyRAy_/"q!/GGc"2 YPIZh5*,esF*3v옽bow*,\3yqEE~EfueߟϨ+%[53UNEMc]vvNoКn8nG:NG?wY kJ8,soݵ=%;'΅tqMݶY+7!kw@wzZjEqU{:jD;.hp{]iVc#JgZcZk-+. *Qݺh]ZPǨ RQk{J\gDoϲsveڐwuU\fr:w;#lC gs& /S^u-r'Z̞D }N5Zy+ZtHw;6ΩAx:'Lƽv2BlsX&Yh{{;{vݻܻHww˽ǽc[*O6 G:hJpd-ԌНIp{hpײQmhl-͢N["]MEȧ"aCӇ*h5(։u4Y [vnuǻ9mY43^LLz~!y^}Cͨק^-==>o',(`/'s3Wʦ1r[V|F[-ʷYi֌K9kZM1ϙ3.6ǖʹcsYWN{עCȽoV"up0=b0 zk:h]0 nsg.[-8c5K_ĶiR`Ym7>߅:)5y`рLVhCe1O3~A96Xܭw4nhDo`}k5XfN2g[J4Wz}tu",XEmela5Ƭ󢽬R\Sm-5͠vnAs%ꨬ]ҳboZc`b`z/++6T+@@)1dÑ{Gѹ]pvy`iɊkۂۃSeY Z$XTN-,6k|p:8W,ε,̰akT@&fVe)GTp^.;]eNC= |F+lD9 8d Q9^ZS+'WWe/ʮ\tE~Ch5՟W.6F  1a V$C:p]+J*/>,kOTh?$*b9}H"a}x^Gj}\'>8sDzM/@꿨" I?B?q0饤I/'Lt& aLz5U”ä%t]:j['erW>#Uu^ LxG ?hTQWJ42Rs YRn5=W3z;Rߊb{b@ \l={wG"{!G#屴`Y JAVp鏨؀T@W Ro}9Bv/"63;`_VM*+RYvDR#)3\FƮ` 4R-#k =g+byD.wG<8P"j2ŻVxy/2q.68JQ]<M fC(Tl Rzl+ܙ؀x3ƾ>$S Z.or?5rXQ:PPSim:Zym#kUQ X  p-a81fUӃqC4{WZ|#Xf#{PL+_+U]&P?C}9 Cw`9nTH~L^S)bj%A݌\EL ]t5EreApu*5)PZ+`}I}l'X/^ {TDHsՆxi\xO[#\ х^l5H1*Z ~d} |^"5]Jլ>OZTBvl3z]nӐo %P']DVD.X'HnF~n̿ 'q[4=ŮH|2:Lty}}.s~ Vfe.W6Q@}jmgjy,Zdb4'ZfK%bxp7wwah/FDיyOt0:g5u~fk:T=K\3 e# Eu+0L}""/C}3 L7zAEgagFMgF`qbxv-Tņb#QNp.FqȌBX9QHJa06-2} b[r Y:$Ègcj-W/H:A1{fVx &c7bK?ǛpXa8?dm[۽`Xe [cV4Wǜj-ocX1|2?DoH mX1ZۉBZ;V=X+|V K#|Wg1DqR99Øq~CI%*@<}VcQL&j}<}^[C~J[m idRW64UϠo Oj?=KiDzJڻ_ )i}Lu"?ԑD]EbsŒJ#K~Y_A$IU#} t} yYש$x-yEemK;M/&u%_}O򇺗t71%z ?v &0'_0#0ZHo#"v=GлTWު*bmߥީT%eHS3i`wgѾGiGLU"Mz1] 1]ytjt":fcHkjv}}7]Tݮ+v}w5 TZv욥TۮWvBWvJSG*Mu U:Tisׯvݥ6wmQǀU eE{)Gh':u 6r ʍR!`8[ oU``D QOm[ 7.W Q)S0 r ;#%%uSŇ:Q ' } hy/\oТSz6qAw2NfA{ؽWIm@o7ΔK{;S)uzN֡Rr $YAITҠSzZPWԍ., V NoPbhO(7/?T uYu" 勠)/^2(g2QbeU9ƥp/+V%,eu"TԅpjCऺ  A#QzN=.HّKQ;_eq7%\Z֨i>\}iPSL>s'e?j;t ^UB;hYv{\h_ofD|BrJyuwC=Z=^%\hp,] et 9MNvEyK~g1C2{CJL˷TqOY=RCR+ߑ*TϺr[a)bU9=D|qN=y}a ~ǂP$l eQ.+KA:xF5/e:QPѦAj"x;xPj :R5HRjZ0[폠:9p3[(NtWn)|ʪLs6& @f__h#Th:ԯ\ YBиXmCQe]ٔz Bc@5Z$1IFJj.Y'GQPiT7UTqǽk]`uuлLmB =߫^ zzۂ9){{Do#Xͅz/~ m{ {kzm~u7_&HΑ"Cfe*eAzF JR}KL=jԱLzO7xQճ*{K%UqIغQ.ҭRvRZ@/Ћyv/hUCErW|(M V9-#(^'111k蘉S`2M :K vR១sBR@׳jtt\V2Pdyd-3wDK#ž??hk/w[1e TL=u!ck2Yݴln:Sץv2;uzǘ# /9eʉNezD4ǘc*p9=Tz]-#R s}g5t?V(i enq9)˱׾eK18 tv3aQܶ[4@:;h됏mg߮Ot?H $\ܱ JDg</s\2~zǿl=[-ۡ {V5'-RK lEs-zHb^Zn 3E*eǹUǷЌT"(L1Q:)mH3$)EZezT<R*p0_s} |vQ;e^\6u\~N5?s[c)cLزG(= M(2¦of/57#]Ue_ U) oO +r;«HR|bKg@䄻BU("34ݨ4ʓ0/6QyB8m) Z7hHTeܢ9zކu"Gd L&Kmϒe֛|xzh~hkQ ӦQ,K"C(:`~J~ÿ!Zh^yK7ңLiDrL;BvG΂UQsUӕ0Sۄ([*\vm 8MVk2]KiI7>l -G[c׹Ҝ8LuNta0{hYstVnJղ q]ѲX :ĔXCC_e'kawTsQG2{McXmhP -X1W-̱bgU*~hLOi);L,8SmeSMɋ {) gZj|ւ86=KYϐF@Cz{iؖmɒ1jgN=-";=r%iFp/sJ kkltNG,y,'QqUG^[x$n:5Kio7`տLgXcl7˩tFx8&z69ݱXgDMseƛ%ɘk=3vRL\͗%g=tNǘMUc0;IR foH1  /<9"E R(;`&WR>̉;"}EtD) BɟdFAi'4|k&5D懚%mx5l5\B">}ӖhK}}DPEI5X81K8Vz+X$>F7qS? njqS+> q;618bq$Ƀ#&/|8b I#&GL*8b ሩQDZJ*hh GC/ƿj&RI 0&H'R/oBj<Qү|6MX/~@O|+Gd;Ꮰ:ǰ߅uX: [5NI"&/I}$/}ۿb}c&c&>fXonZ")Vuu ) 䯑~NQH?~NitfҢ龬{ң*A1 R˩RSe(z>'EOs(zPDDѓJ5c=\п%*VǰuxcXob2V+X6]MMԏc:OvWS?KÛC5Ab$C%vB%8e I1ց br1A?j]" Iu;:l[;:ºum[3,[_eAn(f@nF٬p=]_BSkAbQ;:y׽۞Ahkѻ- zQ|h3})!_/b 3Ǘjaf5Kv6'͉K4I7͘ff=9'\¼[㒄 nmN#yt$Ɖ s-aBLryݎ~aI + *#<=hiJ|U@aׅd$yE9@ l+@(dRR/pNR Л!P:̴d<'B=Wm %M>Cl!wi*XJ7%Bţ6\nsw}|%_w^~.0Y>WG!f%/k0p5@+/՜ ~xPyØƅ=w_@мy 5/k^g+WU׫D@oKG7Lz߉Yz߅Yof7޽>YofOaֻa[Y1Ŭ0Ǭ6`ۈYAz1mf~6Ggv`+Pz8| X[A,D,xX*Vc XV7kbb kZ6X4^m]sп4sзa91{8{8!J] K߅5Xƚ [߃5}XӧĚ5}R2ÊQf'L-{9|CL'PS䡚O74GMڷ<-o7=Se<6.;֢C䨣׸DwF\\>vZe&s;Unݞm&nWK7wp:q cU}+ot2G`EsY{ҡֶOg1Gn—)C[–yHc 햻F/4o ϛGVlCk[e[R{Y_}LݝJ)M)19c;qc{l9j)18.ˢe9R8cQ(QPEb)(K,R!,eͤ}޷Sӛ͛7~)=> W$Ah vߴ |Z\x WW@,}J,?i?ĵnqvy-K-/=dI`=߼mϙ?m~cDh) S߲r`)ŀ( rڒZ|ljyy{Rr zZ"ʖssq5oLrmEuzzӑE(Mo7mguz@ۦt8_^B<|=4s7D6 !~[hil m[mRi^Е;=Zխj6Qy`%p 4\LQAXSמPSz%h}]Q,jշ-#,ś`l0!(-']dp-j .`# &S[ XKRPp.VBАSlXh,4C@kCЁkӴW3 F+t(9)m mG@"Pk5iD\w.8W/Ѻ E5mmQ@A\fƀyǕzm?0WS@ݦPbH=5T8IͷOZ(FMy]u- 1*q^c";{s[-h~WQ_~ }=}1>k>ė]]=+yGȇ{zlm%v*&*UëV-5=KJ#(~(gOO|_O]oXM_~$>{}䳂~:A$oշQ(*Dl=jFşQ\gk5qoܫn(loҹ']It6`CwSwiZ@V=ee1@6]],dBfS 9!SAOBYŬh/m 7z}]tߧwwѹ?ezBgK %?y߇s{_1 p5Bg>jpjo4NOt?\y~L jsS:gts77b_AɈd@,Dr"cwe?+c0W;wӵZFddi#U],+8s**ʬH2k1Neb\2k1Aeb$Fys oJ֕[+we{W3^1wJT_f\1_13rx~07ʗoO9q"G)Lc9d79Iad9r LO1#I)Iʷr_QꋬiR|(3&ދuCE.QzYDFIR% v1EJuOnQȘ  1%mhm^߷,7FoCF{f( (lIz/5\BPQ*\*=Rj˧FP.Լ.&v=]=-@_=ZHXN2@>z`*4ZerO}z\zߟ.ؽ7RTRaRaFYʪ=KN)Zkg(Fn;Ԍr"4%Cd X٦y{Ԍh,D$Ԗ3lJ @F5e30C`'#Əc b1X"k5(؀[-#cDH#ЕF?F,gPl_DK(." j_G5C_E/k:k5 ]cFoFYP"k5}5X :k5 qYS)(5Úx-fmC-++(څ>f >笟C7X`~%$dN u Yg3Hzz dciApRچ#++P&**$c(UW!9kA_gf (M7!::Nf'CJv ;Rf;居l!t-aK|v:;ˆ0TFTȖe-gˡ"v6;Ҳsٹн8f5fĬǬC11.f3f;?T?T?TV/{0 ʗl c @FlИ8X9 b.Y@"1 tb`bx7F__+"clHZ/=RKb'%[EHO3'rEg[{klAV֋@f"ى9T˜¼gxsA$E q8C >ar1<:pVKS+]\;zzȇZEg8-4]+`.v #=1פmHt1]OuG/WΏ͉v쩮)B>kXSk:4:' ҩy.ZTqxWŻu8qxLsr.8F}պcqT8eON8tjU3· H5SssJ 5x7s( mg/1!BDced eb!b'rq9e30:3:)_Ǖ1Wpti7ؚ+tb]%ʽ.8pS(z3EUPjc ZŝS'ZW1i0xpVTsҕBsP4]%"(&uJX{bsP[S\p>w +h&m%Īs1JQH6%EPo:::wa O֗K([b P7MZi}ql5M׺?N [ Ċ,5X? _Qg}Q<0~/NnF\pnx=EVe|(ۺ'Mnd:Y(,cs F5xѧgFTu7 8T[Mc+ٞ&tM۞0a[/;x?>,|#{lc;}KۙȨ#Ţa\w앝z\^şP ʸ-l 36"0-u:.Wk5Y7<܁,}W@*8]c پlg "=odMΤ+B흂dVs#|'y_Ƿ1pP-e!WRaPròoSkOV{3~d \€G }H#;C9-`z))(<6y e[sJ^d\Q8JuTMTCҎ½ ku넬FV"cuUAmF Q%p?3\?3i1y<2 ޥ^Yϋ0RR ߊ,$,ViXi>:Hc,_HD~>/|!_̗-"ebԦE.'+UX_3j[r".~%Y#V'S.YYorA!*Cn٬L/$2uJHio\vC`,$k*zSҸCKerj&F$䐻~Ktej2A !F>`yy($&Ms)*Xx`XNش.Jck&)_\Nz}#3T-eT LڌZ[Kɰw=VkA3ev˓kWaaIh hüc0]La[pxK0+L9VCC8&s!uS`S4~U6f g< H> bx@Xf-sH*Ll0JG),xCnrYt]N6r3LXXKњc3IRݺW{Gf9:(uGF33ΙSv*oFO1*e?e_X>|*y}@=!. .HxU: ++9x#d81ɝt.K0?6 q[.1*bqgְ a0a'gKJ2DZ74QK|?a7 [(qLuPwx\(خ` _orpf*6]P Y9' ?=06"J#_~]~;ޟ%~73?exA1\FxE5U> 8\E"J6}WW+d_5 lVHB--8 NG#dQ0u : :QYtԁ:EGdQ9tԁ:ȥtԁ:PQ騃<:uOGܥ 訃B:@CGQZ:uPLGyW^kP* EHRJ*Gh$JʔD$]٭p"q &.<|/y}yyy?^{>kŪ'efn[vݚ_?7by&5eu3q)Z{pZ5UJoӾoDl.{.W kB _.ǝ werܟ]@v9]-w'EGl2}l;!|K__D3mkMOU_O%=m_NavىvE ߝ r|bxV_~[l Jk%~d~ ZgYk }PS&- X gEelWYB{>[fxa* ьCGji)GGAKC_ς0΅Bw:{N'kM D~,]ٰ $!|0moOSlS7UPp~?{$|ЄZ\>ȯrEAѽ3!+?_O=^X,B#E^N190| >[x2 %)rҞ^=oB q?I7%?AvȚK¹|P)vk@nb6U}ڶWš4)}51p7rҝCGn aWџɽFӌu%rA4{jM4Zcwh͊|0M9zZ@CKauX1'.D8u&H r>JE9 3IU߂zy$p H!CاE&oǯ^k-󃾼Q y:hLG(a,M|m:xзoĪwt<(gw }OiCC b!?-0\LzV;ΠY`~ A5$ yBMK.1#B V\m+<7ηp]-)⻺wKAh+|'א7ϓ/W?Gp\)~0X<'YsYZj\qnЎo8mcA'4%/;IUOiWL~o#Zb!ifJpY&^zܙwVh#?<یD[p0xH~:Jӽ ) rGxz^A:"x#O)y<1t`K d6RZF}!ӆ!GËxf[~E_FFOE&z-&hԫ!I=^=:OxZT$T isEvAg4Ư#՟̹x1%byꝦ&#͐q/Nw<?%8+AjJ>DAZϐcWCR՗S/V;#!lo,G YNÖPsiգkx.9P!y/q^)ߩ %.!߁;!ς#= =ެ\剈gK] R\)ϵrxs^#Y<;1f?b j7. ăhy03Rx:Cl;P;vZȸ3﵏)3?H[]BcWƄ< %'@BKh{YVkɁ=Ì+W yN zUk"?3h.G0;V>l 0xV9A9\!\`+2ahsFc$Lp5qAߐs?C>~Mp4ď&¯ I#@\7Ywo #8'sn|3rҳC|OG g n@΅Cz9Xl}X r}R:i HˡsWќAC!'U?[=)R }7b;,0BC_[86?@J$<ђM;gYԅ~XJ1o&L_dw!:$!LsshE%V0B=3qn$ ϻÃr9zR¸:)*9gZa0/uJǴ/3”\:bAG","&upugk荎<^?C!);d,u'OGs.M80Z`8]ga_ҳ+ Jr%a@s5|(qw,<8F}O!*sGv3T+NTRWOn/7Bʟ|6l irC-Do,<._!Cģ#yD~Rhڿ%7SoK81#Q3u&rl􏐶 8/zGk"j]/!kq5F}ȏk'kp7&Rx*=}@K?5V `] rf _Ryw!# x^kQ uc"UגԦ؆}NZ&{3?c=-Z޷߳Oq49./<Q.OZF;w.R©ؕpg-&YenH|4Z~-WdlӾιweUfZ//Jvk'wSOJ^5c˪';٢9ʮ(\K;uP~0/V-^Qj3]NFh,r޲f̷co-l&1ԓdN-l)2nάʬ녧~" 1{w:l=+ys!GIM%=w_\}kx,FRa.܄4g1gͫ4)Cw@F'# ewM,~q_yɵ=t o'fZbf:Fy1kulH_8nYA;fPVs6ϒjcf:<5o~y3+%;s}Q;%&Y3o(YC:uPyNSmxR]%)q~Or7ւUg*8S+jf[kg3e,f,"ޤ(1RK5J <<5BFb312q2-1˙-``6ur6y8LʼOmM%46hFu D G:D|"3Y̺bN'N[vmӵ5Mu 1o&'?;u.)3Z6ȷd‡) ݭР9/ |<.?uK8'mhs@oܪp0,Is~97@%9C'<}j.,9 k&p\$=)QX<պ= p8 +QRh9yZ#veYA΅ O}rE.uw"/ZzGrk9ώ[bHn WwFjG 3;^Npl @0の&~?euZ="?߇ ࣰ lG9pzv jq7@C/orxéȫSpWCR΃:8㐐\o'"a708%`348)Sw&|\+x‘/whu#:Y/h8S?# wѐQ\qD>2ܚ>rt'p3|iERj1b_&x+ֵ/YZ%OMceOsOckʚժ.?b^pPoMt4+\ioxB=W\CY{ vDCL 0sяehHH3$ ݄o%+TeVkK ֲFR2~:F kW0jO$fD"f^s޷$tdi& #E>Ex&_Oc#N#6#W[9y[B=P{swܯEιq.k/5h& '£L=@kY/UXmn߁+9}lfVC7pV?ix.a v9szc6__8pXx̨HAb+*'p}Ëq 7'Q[gkY63JCm ^Ko+3AQ3$Z/b'^wue$~}Atm%_K :~x=Di_/Д'³(qWq jg\G 3e5`7ϘfXۅ][V2 ),4e&1ǚJlif5ИMo3 3B@aRs9)H5L}Ȝmڙjsc0hsGE2ǛFLܜg^ƚΦ/:\cw^LtdzuڡA f dseiozK36O?3،4c͵6)!г`N3mJ>T1ǘ: Ĵ4mLG\Zt kƙ2W=fN4UMyS45L[\l.79\hJsh&7I<<) jl= #x ̃77<̀0z+`-5pT~{0NS a#çe60~ Q ,`9Xad+`-[#Gw]a\_!0ѡDp& Ep#+>7Mˍwp<(Lu&ò<ր %MaKIo80N=6wt2 %AjLȁq4| 778?tlN?7, RvxK&2G"W[*7ej*322-YC N"#7}Ȭz,oBV?t @>gd[T>#s!!qh~hOrT/juFhI&Z}}g-m+zjQvmg헮;͝ڹn了݃nw/Ai},5wo}?z:F^1ӧ>|wrDYg>|/zvUEiW45KmEWlQ{bbg^Ň_,7OPb~bb.z*{7\{Ë_k5+~JU~݆:@33/r?9"9>9>9#qѻ{BRۿh*+}S~_}_Xw~oX .ZJ =bߗDE_^~#3省K K T$Y3錠IUѪm5 _ljsk*%vc ˅(3߼lv!%Y}o.P*x5B=.?4MWR(Oc|J- .X8S9]f\r>gC|Mȇ3!WdB̄|$2tW~ˑ=}{\=b,R`s !嗅#~YŽ߷m}OL h)w\n12$uGdp28?>oio4՚ÚjRHn3?(zK-,0,p,,H,$Q 8 (e2bGc尌cXƱXq~_lEQ88}}T>N>N>`USӰjGuQ}>`uzG}qh}}4>>`MfGsqh}\Pm)s)vyTh+dxJdn yfjL73ÑUQs3;Mn-p6n5{̗G=Z-5sno- ؿ>oY-ؿe1,ar?<-l,g&ߞc1l+ʼfضf=Ϟg؎y^d/2[ml n};Jg(~k~?*aG?Lt)D%e%Dea_.*1Qk6j|^NΓ}coLA:ʾ1Q'7&:_.}cβoLE|]7MQ7o.[F=dW*],D9Lt*]eKeW2U&\vzˮ2QU&+DdW* ]eqG]4(N$gYm&*Ddh6fL+DWn3(m&-Dcdh6fdh6]-Dn3ѵL4AvfL4IvdI?ئ,).͓(l'޶JJ$ֲ=7Գ&I>i4I[1t.di^,Knɶdힼi{$o%oٞ+HGKt핎M˲}kkmt!]o//ٱtnK٫77tG^~^%Ui>9',B F1 }M@6""""2 aDd@DD  x+exx̽'_uTv}[]'K܀]eW}qGs'w1!xßB?Ex2/*<~+x##~ ?wx.ysPk5hhZGvVj]xVZo\?~~5~{MNc_@Ic49l @LxfB&=L 5QQgvaU^R/K,ΗP10aaӸe] m?A^cdMcdh.i-PZK$%R֒KkIkKki"MZK.i-ʅJ+V..\RZr9ʥ 2}}  40h(ߓ~aO5]>IhCBZZ 7Zn14:$#wD:4ttnp#p0000000000AC#4C#tC#@QC#LC#F9FF' } |nWXyC??D$ϑH>-{zǓrz"gB9y#h^t!a<'%xz8A_04CDLxWqCG,U` E` ^ P Ɓc"x > 3Ήc.8.2D`\-4jx#B6` ,X k  p8q8‰p:8Z+tQ4\BS bXD/6PGfhA[6hE;NhG~@#33Bϡ}C/EЏ!0}8#0c8#8038b`Pb4H3rNn&X2 Epii$\i4hkd`7&fMYYU\\4ϴf2MMYq!Q|ȯ )a%"J\iJ+J>S BtU nJw\)WBe2uP*  V('QrJ=|Ԡ'ϔShrUSUEURzzi}6%hLwq%JZz~.OUt~FrH>O5e=HÆl${c'ɣ),bo72vEco.Yc߲)fZs]Mq/σ%Qyla#A]n^hC[DK+!8Y~^Q/ zxߍG+y_\ c~C>MB0C0;&Q_\hr!(l[?Ƃ  6[h!p \Ɔ ]A*Ӎ6n$ng;eA{Y]2ݤ"ګ"(5ntL7kot(W- ڟeQ/Mڛ2ݬEE2ݠ%Ӎ!nޖfm;@Bn I; _;r/iGȼEh"~YD>"aYD>"r*YD>"RE,"g|E,"粈|E|f9,vB"rZ"r"e,"_eEoYDErv|EJYde&,"!:DtTI"!u!kYD.HD.3E"u:Dtk"^CDw!=u:Dt"z=X7WP2z8L$L4L,Lc_H,"4"0 YDg"rc&YDfiE H,"-"rS,"7gi+ȴ"sK,2mJDID%"L1OBA=)< WUx~+qdFdGF4CxGxcX|? x"I$Q9S.C=FP"(")H p!hȊl7q`qs4M4M}>Qv{x~W?M|߃rF%7x)~/*<^1gߏ& %w/%B?*G!T!zB>,`XFWeF*^f<lﲹ 7.+^ <?4^ V*1rL:~(bi$bnomq{\;}q? <n26c\,oۉ^vp'`¥( *go5FVbqUGQTݸ==S3QƷⶢh;΢m 1ToE~"Zo'ZDEeEAeƧ?Wd:ʱ:!7E\a(T!jPfhVhvNn^~AaQO00s`f`. 0O&f6-`KXof m-Ŵ`{v% o6XoUn. a{ްL9@8CPwp`<}p488Ng|N)!8> >g? Kx D`4 Eah8FQ>4Ach&hzMF FtTA3t}]G 1l X sa[ ۱; {{pT0p PHJH'ҙJJmN;HWr'F"ݤ ==M*Hҗ#HdJ%AFQ>2!c2EYS^T+/)&eE٪lSlWv(;]+nUeWy]٧T+V+o*(qHqDyW9SW+('GRN|JT)gqNp_ ʗJrQrIrYZ"5-i!)&PJU(թZڨ:Q? 0(8M$MKj7F1ͣ7&)ͧhmN[ЖDʹmM[h1mKHKh'n6ZFo]+vwnZN{Оڋt D!t(::}i?ڟG{}\Scz~Bk CzJX=֨gԳ9 WzE^SQ2pfb Leq130+1;s0's17KaiV5`7F1c7&)gXknfXkֆŠY;֞u`Y :[Y)+ucwnVzޜ-y!y+ޚbޖyޑN3xw+wwn򞂟촂}?CP~/Ƈ :| x>O~MFkfhfb6o6m\׀yW0 ¯@\2;Vmk[ږJ @&׶r_Q*U5Um~jRZO-GLg?F蟢Yr=k3v JD,:C~"a33< 2瘈oh'e9+>ki0х&!"!_EA7$JA)4D"EQc4EMEPw"AoZMJsٳٍ|&o%V?3j픭B4OM^&ow[;sI^x7{Mx8÷yC?ӧ}/|?{2*|;S ؛E5/PAu">5+oY8T̾ƌI6 b6ˆl<&I6=Ȧcl{fs\ǞI//I'=fs3[Bv+=']3>xcl.+>P ڂ03v94>nFTPGD]Q70uGӨ~`ϡWAv2TaLMboj5]~2Vӷ N(z`P(QbJS(ENoUJΰL~er/ }*\Y(:OD: t>Bgt7}}p>9 |~%êWD]rXW'¿I] ՗wQ[V˛^|*vZ;~FE%GskH0969@?2TG (I#d6C'<$O" d!y,""ɯ( p6'<$ p!|.> l<?4<WG /ʛó߭x,R/@TTȕ\!Xu׭~Vc<E""a07.f}sȾTjr~&Ԏj'VoUo}3zHFv@:h-{^n¶uegy%s3ϊ}WCN<|bͳ9VEa@Xt+ ,OVH Mb)էFꉑRP A>#&Wh*wgo  "lsp@I= jQs@v܈AƳlp>[ r/*ý/W]~t/p/@7aӿCŽѽhnǧTSsS{v2\هl=/dQ!ϺWX]Dh!b5U h6J9wƎ^{!0󤍛%vTYq@S<<CO ͝NʟW*Fp}ٽ1e;S w8)ql~h.@ (wDW@:H(bQ, G *AVJd rJPx~ ȝ* FrJrrW*77+J%h/RA`(w*~[\(AC҅o[)wܭ5՚r;Fz]"$F]>^‹CMoc{q7:V*TU"fH\MI5i5SGV+>j_Z~^T^R^Vfe>gd!f֓zެa}Y?֟`#(vư~6Meil:dQ6gOi=_ M@ ?,b ?,AgCh " D o m/O3oL&(_d\ klYN+?Gܗ[p# wp/!xÍ=>?Od)YFr$j'GQr''I |FΓ \&Wuf2&ir&)h )i1eLM MLy&|S^C}@y&Ť=b>}' f.*m`.gQvհs]f9۸xF<_06 S.@dF 2WY|_ȗkn j~)~ SkͧEV_ "X+ʴnZO6X&iSlmH[-Vik 6mW;֎i'V]֮DM!=|PowKz^ԇ RK*}F_ow{ԏS"?/b+o)f0s\ߜg.,\b.3w345605O2O5067/2/5/763o2o7630634טϙk͗--6$,F|KRn LLTZfYYZX,+-k,-[,;-{,Ֆ#S3󖋖+V`UaY#֔5Z`-[Ken֞־ֱI֩E֥Uֵ m]ֽCֳ֣ Kk6dSmli[C[[ [+[;[g[[w[/[P(8d4L\b2JzN^~!Q iYeu;s {=^`/KenIEUM}#S3+HpiGCGG GGGQtrs,t,qT9V:8;8v::;9:N8jˎNN8S|_WW+uuu MM---m]]]#]?O[[K#3s +'5sZ [@@~0&!PXXXXXX88888$A= `nQ0?X,˂݃a )`M\6x9x=DB%3'Q888888I%'I_2L%'ɢdq$%Y\\JLIOnILIV'&$'O%$'/&PJMYRT KS SMR-RRRS]RSRSCSRRSR3SsS RSR+RSRRSSRRSR'S5sk9$GqrR9 si.sN9r 392gv΂%9sVِ-gWޜ9r9s!rմ-KGҩtt^ ].NQ y%tu`HxTL|bJ zƑe"T~&/S)gJ2enIٙEU m]CәF_r[-^)< ! )JdV)wHyL~s8Weݪ,2j6RҸ2\l·Bj2_6=[ʽRVKy@JZ,c5XUVynv.~!uO~!w#B%YCJ<2#+}-,%}-l'ɶ|uC-UyU@^C2?$C2?$2', KL )_5)ߐM)w[HYwR>[.{B>&k}L~1kKro"-ڼ2*Ko$ )-C%Q([)ek0B%L!bd-a6?1ﺾ}s<澟dhMdhM|gQѯA `{9C[9$ac9C[9h*ƚ : m`CڦMGtԦCs:4êtj!!p7d gF/ِɆL6zF/%d9&r*r*_2𗁟N>zϧ9d$qX< <זn@}@j !cC//c@熙o mf*8ec@j[2fPp2 ,~KZ%j--ߒ}I+?ķm}B}٢/[eKW#hVvheVvw|w:Ҝ(WI;2NN  Fhб2:2(Ƞ#Y N.j yDي!{/DzW8P[MJ Oj)q UR^^/)SH]^HCC>4C>4 Ɛ5m. Hv*->->->->->-FhЭjZaVتjZa*`w+V;Xqw`S(1b >ևP !pȇchVhh..bbbbbbb8 3E\2 #`w쎀;vG!`yD\\hC4tGCw4tGCC44@>2c6mca]..ӀdI,,%qmqmqmqmqmq(N\8q5(N\8q5k4h\!FCp |e(sD"d<VZVˊ|wLJE"ӔORoSVIR!U|Q+DvӔ ^ia@d C^x" eW ʅ!GuL D0W !k/ b(ߤg@;C S8FY9M2rsbfe4E0 iaE(G<)QxNSD |񜦸FY9}f162K D0ia5u(w<)QyNS<^Zˑpe4E0)M-/a_s U|T!VQNyΧF9Mq;swe405iaqӗUW6a}s(QzNSL+}ea(C=rIbs(QzN?U=(@tl!F99MB2s4E 1bib˞A(=)Q^{NS4"F9)[u9MEse41}i8b.:.#F9b4E"1ʌiGb(K>)6Q|NS)ZQ|iO//0|1! _ abC/0|1mqPK DC1ib#(S<)>QxNS*h%0MU[RG&LO*# P0a1inTHu%z+iǮa0G_"cq4_i29ۏN7Q~CU=4DeUJS( [maˏjmMhqU~2Pw664%)0,$:rRQ<4vpk"GƄENhqz1N]&DŽFFL8Xh5[9)4lލƔzzGkGNо2 ki,ffvSP \S߮]4L12#)Y= IESgT/ Yz'M|[qEy[Uݮ^GU f>5{\m<_h,9鮭!3 [0gnꖻ_ou߹V͒{hJz1aoo>kZ~f?3$i9cr9Kzf oM2 :߶缧60nՊ=/K/)|&ƂO}SPW/]=XN( .S%ig =u+,zE~[S_Y_oկ0Κzdc/U:RcO SUCQ)Rw;/CnkJo7n% n1b&&=+s)z ae)H>8聕{F_/}ib6&g;lrq뷯'm\\1'|w'mn0y{^\JZ{4y+YKƹL,jNc{fu7fmIQIj늻J/^:mRUj F+›8,d!%>gF,dߜU-,lQ#;اdiⶻ.uj.q Kuޚ =fcF=fnoG:|jpóu6h4tE#` ӷ+q_ӽgOح[SztYo &*kMYIQQY彪MWhLLT{wV_]V!ݣƅ=*:R;9$f{ Zq+ Suд״{uQ$ cccߧptb޹tu='sό7{ǤiM+[\[z&{/68~N,dg#fskC/܎[zs'e&G:0zNOwn (\Z-/oN7W~ټ5#LvO :;uΑ|qQUMt~l@vͮ=ܡJu$xə];O>Y[{kq*ڵa{2Ӆ~~3m,]SKRuOFG}sʆ ,\y1 7S*5PBcAVViڛ~7:Ə3r|s{h}eNAl³ļOgGK\vku㪙:oM޻|o¢|l̵E<_ V|nє{Psv.xPBChcJ sjv!/gMiU@Mn1>ӧX1aZNWL4̭+N\=,4`a[lM2G58eRC н%ɫq9]͘űE]¯ u$2>#qox;f͢#Fzc읭7|xw}t=tBcgKP &󷐮R=p޳Ae80oI#風[@~As~I/bQn\s~EŏSmtuqSs۫ף\rheMj}nǦqϺxWg;_hM j=ߠe{dG=x{[(/ԃN5 |0kXTh'lٶ].-}xz44dZѠFGO OC'?~e䪧-~]b>E` Sݖv[70LSF| 3'ޚ,](4rͫ/̰ZlדG5#/8rʇ?wJ|Go;>кˮ49ϪVtæm|c׌n8r?~˪<O)fRTO镦ooۭ7>rrޘ ׫Cv㭆96/Yhܙ)GOql~rŶ]YQZ㲨hGKQnWavQk_j/׷ׂ65M9tIƠy3L)Eƥ}fƹ ~dw=ӳkhK.ldltF~)q[LzyoSxjl}yKp ;XTvt n->$pTX9%y{ݮⰭغ$_th"#QwLc?uJN(=TfmkPzO?u\5M=jr"JaR-E⧸1R$ JQl,T4urL=2*t;*IyIa[hXryo:l\6sߗOnؐs̪ɜC +v\I޵bu+LJ'79{귗ǔf8}w?YwXFzM7&ԟ9\F2tƭf ֱ߆[4:z 5k10_˝zٱٕDK.t݄&*ה{P2Z fNޫd[y!nNjƣi=+쑘q뎩׬NT8j^_#]D1gȷzb1~s%ٗ>$xg'?O;y!%Ĩ0?yg B{gw%('Eh0Qybߗ?z#J1VZΖ>ǛuÊm})ͭjqV^6śZ~ nğMv2*=kvxQy6vnGߘM> ?4~\{&İ{6Nׯ1_i֯]um$)e=7܄w :~W[wnT{C@ha ׎_{Kvm`a ^̅=?n퐠g&11z'Frl:Ҫ endstream endobj 2536 0 obj <> stream x]Pn0+"p(TDЇJ^b[ARhv;sjޣQ*aqѫNRJAHv_>3C2/ܩQÓdoVjW{ܯAN腙W6#dQvێ^S4 õ0 I@}!?>3˳h*4qUBUB;Ы"ŗSN۽;a[ZZƄ!Txۿ&u endstream endobj 2537 0 obj <> stream x |SU}/KIK4mtI5B@R6(ZaPQ\pIbFQqQԙq\pCQ#;Ii秎mO{=^)0Ԗ5T>[R^Z֘(/;W@1wtYy'| @ G& RQ~ o8ܳ>Y, Pz ;SWZFgK )дu"1~ ocf*<.@: d ;5  Xp8 ly)v7t ~E հ߈? >P4g ?~l:sUΓZԎ|%.?/@ɹ߂5a/@&__ZGV P3VK+aϩ'\ _ S*ge+e}9-hϡfv sn_5"?h 0 u N +ϕ'^3Q~١_OM'k~><~> 0@a 0@a 0@_ĀwΘS 3 xB2d Up>2XwZ@ 8Kj, %K.,儍amW-$#8FYl'ʼn1X# &4 stL☙Z6Me-e+5Z]Ƕݠ`ǥ+|y0-Z?͆O{~-Kmlpѝ؍s5PYi3^>mɓ܍ uՌSU9lTHWɈÆ)<0ۙfXc" zV Q*2Q`Ynhx-ZYVTQx,_ciYtagtQIWoI aYrsjb0ltK).K -&u~kTw(R>O5*t0ڹ)p[.5BtVD޹Ig1ZKuي>mc㶖淺Z]7I퀗4KQ`Jy a`V)=ZJ&+ʮ f[:B qkAVثZ^fn֊VEohru,,o;aamhfZߴҴ_*YuciV&=Vvu]]0i7F6w`^^ n!VZ O1"7ureBJu1t!A.tN@t.INR\41.喙|z.mo.0T/0LPh<*RZ%\_Bz+1qbu  L\QMZƦC$t)(<\1Xn4TnkwU5"UPl!4pwJm878R՘n4;EkYJvjSnnI& *ZP44ƄIX3IY1ł֖A[:*if(ϒDe dhSkUP'6śzŸNK-)1ۣUOըVk:A*5hw#|JwDŽ^s(#J}H8MEMFGxm*rRo$Ax7kB3U+/^$.G*ysg  &(a;6\C %CEpvm-T}3̈́Mލ#l ^O%t!\M"\I q9a5a2J¥K+  K x . O800000FAh%&&M 7@'j 5jB0PA('FJ # .B aa8aa(aSLD(" Bi).˾FNׄ_N M8NpS't{VDŽ^#:88 Xx.X8Lx&5ujokBJx2%‹TO /P'^j~CMEI:£v#m ypezF" A5q7q7ʅIER;wR[f-Tf&oT-&~#a#T:*{oTb=\GlB\lF\퍜X덜9q7r2ww\CE.w@Е'~VxD3.iPaaW1PLLD(" {(6apZDy ?Gه88td^wd K QRHPBANC"D"8(x]>! (Bz=PKOG!%Tф B9LH[3!O0f4كiS(;oQN|5W(_|wQ|!8P^ByO(DyyPE9 Jc8{PvBىr+}lp)<Bl.ae6aa&0Jh!L'L#L%L!L&L"4 nB#!$Sg2 B!FH% 6 '"A 0#u7ҏC :P^C+_P*+(/\)':`5ݗo[^U}ٶnʡ+W&%+|{KpVDT+/޶̭^4K+ݍGۿi#g/i5T(m~]pZv!hg:NjWU,\^m[`0E"&,bZ Xj碔 ^p1B(gkxQm ,XjO.ZackA3/Ar@{EՂ}|!\~v|4y9g;ggmnsp:[ӝSӶMuOqNrO6lrOnFw]=9=5jm1JwնJwm%pEWOeꖄ „# 'ą'U&[!N@b뤈Y:\XhXmr .ë#4 :qn _'ۡc;ž {%L6=lA iQ sV贉Zl8,[[7hK̫piSR+J455V si_*Œ/B?,#>G,*q-:.R;înGqܓ&7u2N&jDR4ړ3ڳ#.c:P옶}%@5KWOdd1`O^b1GThqvl3PXR4O ?9D`͋1ӧ(m6qx  ZJx>cTɢX'p>-& g9x^?g/!x^U9jxU3}5o[6̻R`3,ٍ%yGTj5{88 ~$fiٹW33@lGo)Gl'Z0hs[쐽cn s(`3yRWtog,J#[dž%ː(xX[߶b]>}Ø Whiϥ>pR<_z5|oQsS?֞ )O笜cL`"h%CkZ e*aZ&}GyV79B%M8`^FLn&03KdI,O^los,yFfloD,ݧl:a,㹬A5YˑX 0)K~$*o)A~вqY^UV|X؋!&SPN3T( P޻ǡC,׻=_a$$aRPXBa(??oPX`& h1?,AayІ\9sآ#BBD֖oUX(QZ$IOHQ!=ON}%;=QVvziqӈrZܞfJɍ^iaxe!LQڳ9REm-[PHy$$>Ow^HKcc]O]fi-YѮVYU`Yj#RMjBjVi`MQ'ԇn))) .l7eOWӝbM9r,ഩC7vȿsf4ҼI0њl b4YJ$(sD_\LPpD*4lBo?"ՠx=HɈz-Ee RCZƈzx2܊^y-'! bX+$=0D;.hCc91\]p/5Ij%L;EmTǤCb7`1eDp˨Ms2Mj1-ԫ18{0ى%hXE˕\+|:% aR hKևR|&1/՞o֢[Vv9=FWf6ũ}f^PTulZLv<Jmx] > 1Z'vj8YX6pdH?"BW/d@\1\&h~ S ҆*Y ,(P퐖+2oo9v2<;'ۭPEls^'~scǜ2FVJHY Z4$2efۣjcbdO9+.>R[tNNV lr[qRT V ^FtZtF}d} \ 8uD=.'mor,<=s<\" 9n_m! ul֜gOO5fc9ߞgְڄT{Yҫ ='qsɪ&jd ]*}=uec7v:IPbЙnt`呍Ì#܈J؈Hۙ% sATj}Joן\1>v;'wͥ>W~v E"JƌFubQXo{2ҒV ή0 j [ݳwxFM#U%ص *CJ/tS`jAuQ!TW%O@eo"N×FT=;вQ!Мnqsp^NMQ\0xzRksrUΘ.a殔\F .VDz۝Val.G. E>srĴDw-Oż< za(oamuJxʬv|{HT\Nȱk5ĜpѷIPQ.zYcѰK&uRc 7r#?__g#!)0G0v~GO񎎇tX8(Rk)W(lR/aϱSXzc+N{N c'_V18h٧4YGlV l%4lX1םSQpi(^rzuW(kP57PX8W\!ow'YngISG7dq MIq>A0@jFo:rv'lTjB.A+jqGgGL5|KR2c)ZKk>;'n^3/hp6*_xsFVgso?-5-EPv靆t>9/ zK w[]̶T b{\IuE^N܀>xRhHFV`OۃVb-Jue :痚ƭLrM1_mR:J K3SehⲚ4K+rVq)\]o-+{3|A #wiL;ǠqnX 1 dXriF Fnj}; 淪-pF͞YdAץwrNE }+nGF-nCjX~킪953Ψ)oR;"R)DVΩ2rDe9w[rqꤴ̒\Gp:b̑aָ8M|)Vhw >CNw`>1(ƒv6,\y,`!ԙg3-ÎI)*}U첻c5{)B`ΈUO:gxjtD~i^}2̕7'_9A֟>_XFKxn>bFM_S6ҽwF16{esNX*.x_]%L0K(w b4:Ewi #>((pb1.ӑd&L^,k[E]rb%''YM)B11KS#GSOS/z`1W+i l=#IӥťtàF/3|e #sJi wSKw-'Ŏ.)lv&J}补yWedD'LJ٣StUS' vy } !OJ*'ӝC9TEI2yNb.}B?Xrb5E]8|kQ?zz& ǔQ5`ƆYF-iNLUiI.+Lk똘;m_d.l--ˊdǗ=qU>$U7T:<")"lU;ۋϯ K.JY6:v6cb:wao<>!,d'Bb1Y%7լ&7S~&f+&BJ`^Rwu_A˾m\3dD眭i5 r1R+{߫}Q$J*+(0$,FRR ,@I:vhH'mIc{-hD?nK(IK+^j펎#+mK":{KSF12}UvKlҲkk ²Y{S`w2Hg*LV@lj(,jhm-n{qMA;w/h%8\rϕru?\'ut݅=)3)bcս{*M¸ GwWfk xs+׍t#Y0π FQ l$1Ǫ-d˰JX^ʹ2`cDgVUB46Fz'~5鏉^;3ww |/L.J-,M)9[i|kӣ6fGڴ')ro֢%bcQ{uC;r]ILr]ߝ%i++Jbcez|9oϛr+os]3HGJΒl-|+b}QB:Uhx$g9 [-^7&mCfe`v>xZG|3.p̿xS[BqZzq-:"h m}}#[RR֬Xkr 5m'ؘ}@~^ drvf#&{ǢDŤOdmޝoE.MH蝩e7TF4uTr]' ꀶ}Aqe _?e/ O1< fuvC4/K,췱uUl]BaTmMڹowmMՆsϾF;UzNO7`.Ū_̬2Z#SW[ ?1?EvOvkyK"f>\+)D_oܪ%4* Jȧ6ȉfNOIt/j惍MllrҪC>Rq g:]s?(_}-*ٱ|gi|LΪ~fs{G}j]m]񙟽tg#@M.h;~Nڹ߽8;Bf;]l63׮BofNJNqyy.z69 f }+-0Yly b;ZmCmdeA\չI:gԔs|§>y'cʷZTŮMQilylyCWY㲤l-lPFr1?8>͑>vuG[y2s6qX,.Z6އ;onM%Uȡ lu^s,_B 0,%qQ| 5 1U DmcZM+X 2ndJf8Dbs)oNx B)Ħ+oaB\,󲡴L*D~ x~;q3=CB݊G {sWϼcv U}aG=bl:l*MY$};N/pg6o^I'FɜQQ[R"93ݱ*&nltĺ]yKS]ƸDO'˓+%y؜cr9%FI]#%$ywbw/$+J+=i_MR$vޗhIgR7-kvv,ZkTyOˮ/ލ$BRv8F;`J-,Kܔr z Kyy Z"E Vp^a4֎:^>gVWF+ :NQ%=ښg% ^Gt~uUWnuO+2q+:Ҳq6%$c{lIѥұiT)+B(cִ/#;N?Կ ܷG(IXU9'.uG8uʕsBkU;M+?9<|z#XbSMlެ˾+t+/FU3~SQ3 <~Kb0K#b\RcbˢW ?ɫR9ҪKVK*IO E0= *>% \RoJ3Fl:kohwbda,ke k˵vz3;̸߃Hn 5#座iqzo':]mm#>̅랫̋;2mp[TY4{+c^7l1Kgu[܂^+ sK"?輲܊xIs qtI^DL1ql@mXebw|Hi>=~sYR{H-^i*B=YY˓z{rivvdKe٥v mOڗ F{/۲S윊T#>}V._?I=cIL"ޱ4n+z6Pl)ߋ19iGZyN43mM9,"'g\G`iSfq3L(.J0}Ν޵vxO޻hWOHʓKֲL|M0Ĕl$k](/rm`J?0.mGR\h7:㣏#9~Vp$%',`C #9u5%;hN,MxŽNܤ VEd^Cd@Jf. ru1_(RX,+%;H,0?ep&z`DRwγF VԿX!b| [8 :b!C1.aJħ.1myom7/IħL4̵sT;v~a}NN:2 gzwgHD{ka:Dpt/RhI2jˍRs[QD.VaQ]=y Ɵ>eC s½f&/*XP` F Ʋy/Kێ9kCqE4Ͷ5u;ROjOʞouyз61wѦ1 Wͯ>E-qe%g#"*[Y[нlܗK3-r{;Vxe薏9jTzFV跌M+?̑)csba2,ѳ YJ6M)-"+c]~(2&`8GQ'g%\,@O~Ϳ MΑn{M8FFoJ9yܟKHHHHHHHHHHHL 1J5 !d )_y&Nt< >&x7q7_%Qx]ZwsL,$JG(T7?o$nnez}L@( Lk7! Td5ա ay|L1ɀQ-[f@oHg@;,9ҰY!C{&p}@2cx*> x&UaVf>6"O˯'u r;oFo3܅>fCrM;_{. 5xQY)X{=Dz䃷nH i)md7Jm-kR{zΛ筹/g Xk֣*b^dw:{3t hiwsZGp5C6:O~ Gxq>kSYσA,% nyx=?˟#mE҆ҷ6#i*<>&F z:xZ>?-OG+  ~.i=a3ɉ,hj)O/]?"_?O#,Xx=Io@ANH߁'ʿ#G XiVF7 =}ǾcñE8缏5x>^<ɬI13ɟg y-839Ywcu$||X~|L~V~ '1^pGLZ=VX,N Dz`96[u<  Y֊ɟw]x<^'|/у# Gx<}?uOɟ?;سE']lƋN9_?)*REn\+~19jZ$NM0{Դ5m@FMAq6HUf"j"<e%wjFrt[մ]xT7#H<*1iJȋjZ$Y5#6YMvijHVմQf4i 鲒\󀚶q5mt)` ՙU?+iJZV?+iJZV?+iJZV?+iJZ7DJH)'Mt^m%݆T܇?R%kI;H"ۑ3YO|AfԼ ϵ>QyN")a>C!#.VoO70)]jt:Y NcX[0!?sڹGJ%#%_9cݪZ g cQy[i$W<ά@]C3EmTquq5,Gļ6SP}:C}jˇ+ã}*Y[KBظ_ӋêP(-t0J>#>våEs,qM~ 8%eX;ը{տy<:MBk_PmJt~ ͨDQȟn -s*lUz!҇xTVwC!2/rO/Ug=XA $o7ǠD!^%ު~>.^>Vf~u5~^mB q6⮙ b#TM9=fJ/SX4 iZȪ$ߺk#unwӼ1Fs]<(XW;zBx3:x)RϾy>UF.+t>d3Vj~1' 5(Aon2MDoj Hutwim{ݿ-+mom9\pݿ/{%):{%[V_I}-ROW_gsԅ<,5utHizZ|?MyRo4ft҃-.WlHoo`5$`8`*Eh)TR݁6oz|l<H܏^aTtA'z:]MmSrJMN`e%j~>˟@saav͵~xe7uނ}MYlEh WthzaPw_wۡ¦@kWgWҭ>?sI}-PXC[tfi!n6EiAK5)moj {Φf< 5{ۡyǏ M(4]h,ұ=4'SE: J4PoߤDNH; M*n@Zwol+>R, M-N[K{un-xK6 |꞊nY袨U9q, N`LȤrNFQG0j}w8X}[tojHV_[$lgn(b'na$,_VsYRu=45%_#w'1!㤞Qmz PR'Ri"-Ytv.:DA(=Bw z@Oїi+zS?15]Kw b'6vR<,lm'O4+W |w_+﯁!{|Q{~|@/ /ʁo m;| x]  | 6 |=|_g{>4S;i |+o=_@0G|WP>=!IO Ki!ʀ6Z/|C /߷I{^0|q|ev_3ߧ1>7}HXRO3o|]w?Gi ,C )W |^ |w_+g׀ {"]7||o\|w_+} #Ɓ .%i>m{ew^!KXA w_}|_ߏ7 |S]"bDlbxXju-w!{;|2Gnj|ߣM{~|?Qibm~;||O2GO#Y1ytLMO}ydMF2hkIOL^64=>k|Lw/<0˞2cz P5>115511n^-22<&OC?z}E"_yQE(rfSXuLOOkX܏vLriF zb0L&&0h 7A nVx @0dq]`0 NLt&%Mb*f4*Wp &b|U%.f F6ĠT(OvMuQXXL( %yn]w@Ԥ2`A f7@$ElҷOL(V=1M&S$whlEj?cJ(Mq#4Lj2gzY4.T#5ff1EqX6  (L08hf]yB6OGZŚj*rTpS(wwbQ1fO]qk7j!+pc?DYf%͋<`yJK =D$Gn{l&fsRS}  lǕdwfepg6Pq&̼; fK/|id?7 ya8XMat||b 2jSi퓸ޝ@" y_Kc#u] Aab Q+&C,F8ktX^.*bjSj!c :bTc İ@E plQO8Xb#e 1g1¯G`7VZLbc:6;ý>+fQųrձ^yXe2׵+5]4=}AZ"&p^*Yb<.UhdT?94қC yuYlu |t9$n uh?3AZ % yxA^vP<|q1( bʸN,訟 Zj 9{kCrxCYӃܬAK(Fj1l}xb:,짂ES< \ 6bjjVO Eke% [f7{VFb3"uMDF3!<ѻ,& GL[jцR>+fcUYlGB2P,aMaeVX{䏮!dž&4N"M =L 3wKǘP/&ZSS|v {͵uúB6f0U6as%hެjLFfW^`fr Xz{TY͜:n3R[X^Ry396Nh("lk@m)hQSĥIy vhR5xo*%Zw@—ӓl=;ցSlzTFLvEuWdQ11Uj -V>_yiAuH@DzYA"ag&ccA<l͒@jAF$1fC?C0Y›4]t- LXpg7By/).֬-d}|\$4R4WDP[ddTTDD;^NlVjOb28xqqqqqxrx28 ;q#;j%)bf+Y2CFy/ʣϣSVF@19W!Jg0e m7QEM-6Ȫ(("eaDGgFŢ(hBКM$M{ {P 2q~~z'7sr,4d[j3J1X8yTH\4]59-ǟ3rDFʒYgmis%PM3?\ȢQ5-@V ؉|n(,XNq:][ln !3'y3LT3'=ku{|ᘵh<1p,#bs͝蝐>&#"Ҙښg|-rE;EqcFu׌7k@/Z+v4us)n~ߙxG]5Ѩ-6|m>l>N4;yzyqBGO|LGI+)c/!?~Go1u#:hDiz2Z]f`Q5Z&H<{sY~C:]dC w-ܳ/-r,걨ߢ- /n\agK.%K+]׸f]/W<ݙa ˺.le.{sٮet<8m_>}=V,YseǕV]J*Ǫ) obutsE(krΕ\/F #%A-Ț~犚|$f5}~3rŐJOs66y[gݘՆgg+Z7tfxnM<=ĜwurV=u֜սyRAݕ]Üfk+rnaHܚEGu?%9=;P;g΅-SbJpIkdz2 Ws0Q GXb6rN|?3(1=;w93TWt}m$V2U}L,֡svEiӮsO"o{FA=u\8ilp;F+嚪dgW553"k剕5q60{vĀ_JsCx=xbD*meW*]L)Z;۴k^k+N%_;ܵ[Īֵ(jUKhYuEڢ$WsɥyBTi^E1W\O,cKZgWZ }~ZI+9[džg̮P;,WgFaLI\S]SOSJ5עo 5wSjT9}S%5[EE1Sljb${ΘgU԰9ͫ=cNOF䌙Zje2_ 3UDk5MC̽EO N;?1`ȷAƄcf47ϑEes?g,+a|,ZG['AE7]h\)Uy['zaxy!cS8E˯TBt2Otα/ͿL7"{s#roٞ]Qa[p\E[}hosh].K++|eFs-$+iloD GVMKGD׉V0P\!0j^-<2W<aEX  <  #3 EEXwx#X>D1zRoܺH׈.ևEǔWޔW58,S@xGK'jJVDJ h{m:[w+l<_Vp,6 mlhc[hc{G ?)1 hv#Ӝ0"pjXhW5QB#4La,3 UBhK'k[y;!m vVD/7['+_k%ֿɳoD5 n fիvGbpŴ?oɶ? *mHW$rZI+ie 1џ^ҝ Hd_i㯴QhG~D;ig팠)32Gj6giimNFݧ #+D}-Fl/ZjzY%_&F}*xXb-<:x '@œ_epp@xQ_jr5|h€Sq8  g苔EŜ)_2fgz/(TB| cP Ay:%w C З3 mdyPy:6#`Mn79a*Bbpz9ϫy^r!i7 <&x+c;8~݀GixGixOy&QQ>BQZHM#NHoZ"@Qh{.-Sƣi0f& NŅUUͫW*>%dy,,[L#3}d>2GfL24vL;M&Ni"112&Fx+F¯a:M~CY#k|d5>GY#k|8Npч>|éNpŇ>T?Q4FӨ1h }CE*Pg" -0m/n+m6I}kM}yu :`tN:X'I뤃u:`tNX+ X+ 5l c1{1{1{1{1{41[ŘbV1fl;Q2NO0Nu Ʃn*zZ|1=^:`tv:X;Nk`tv:X;bcXXad0jsUq8뛃`T9X +Uo!k&O'YrYr*r?IW:X?NM'T#c]zf ]e K\ ?>|aV/(wWsW%3zWnVQW\PuRoqܹ;+kTl7[룸~*Gn'-ҧӼ_7w_.{)0~X` ?>>(P_8v {(P_VpHR[˺T<A{ȃ|y4 lh`*uۛla;Oxr\.}#Ͼ.uirWȦ•ЍgPȼzpUp-u_ b8ٔVHTACd r ZAkhC֥v  R?t~t.nsV0sCa?Ç솿_owJ`|r"3!rRB;hy/rlOy7z "ӆfa۫\#FmFmҶwdȶ 词2˅m?qCFmF?¶Ϲg?xpE'<l>qfʰKƧ:[=uX==-|rE#S2#OB+h y2p)tDfZG:A7v?Br}3o$iEn@* ?ʀLCdCB+h mpCC\ ~tN?ӯ•<~dF9Z03q8Cff#9e}M{L͢lsO+JXqޏ1LNʹ/[ v9NRgʰ̌tfn45/ V˃|y":o$NgT֙7_~[E"U]NRLLyv hnvY!j#`,JvvIroXc8<')XOx6³ ᷰ^%/Vx^ux<2u +=i4?Joh՞[:q;eexdm\ ~XAlfAlfAlfAlfAlfAlfAlfAl}0 F( K.999(~ӏrQN?G9ceJ?5^Xts湹q`>,^󛋳s UrA/VjXðGhgn37ڙ̍vF;shg^3/ڙ̋vE;yμ`gγ~*xc f7GObV1vU*nwݠ}7A nwݠ}7A nwݠ}7A nwݠ}7A IjW9KEtL!"׿z7bÍ~ɽp`FJ&_$B)5P bD!JQzC(=D!JQzC(=D!JQzC(=D!JQzC(=Domh?`#@g' D҃H.;wD&*7QMTnrD&*7QMTnrD&*7QMTnrD&*7QMTnrDfO28L'{W)[JZJ\m-W!R)%R)%RaӖⱋ ~@~9;gʘxJtSZ1Cڣ"C[Gm󢕶/B : 0fLa̅y0p a,%Ovd_&02B,&~KhRVjXZq4m3rkeVHTACd r ZAkhB;hypa hE(F0Q@y> 0np p _pL'0flsȧ{aBXa ,<erH!sjQя!yy\Z+%ON"\0phI^V0+N;¨lhj6MYa¬0aV0+L&ooooooƿcQ0@1f, s`.̃p/,~Xhkk!Q+2C>D̘qFqFqFqRsC)yȋGexTGexTGexTG%xTG%xTG%xTG%xTG%xTG%xTG%xTG%xTG%xTG%xTG%xTG%xTG%x(G< QFH#i`40B! FH#i`40B! x\ex\ex\ex\exc/{؋^<xc/{؋^<xc/{؋^fوdw쎐;BvGʇQ>a|(F0ʇQ>a|(F0ʇQ>a|(F0ʇɾ!"d_싐}/BEpgqgqgqgqgqgqgqgqgqgqgqr ʚ?D\'i\:-&m}kI ;7hO&f)mf k]D 3ڠIՇ>t]}CWՇ>t]}CWՇ>t]}CW9!"TSr*BNEȩ=At{݃D =!t{CB=!t{CB=!t{C25Vߋ6drܫ!/?KZR;)~f:k/jODQ`X55ypc'#l {Oqb/|Hۇ3ed/Z^}mIŨ ⼛_Y Xyz뵜}:`$g95Cf懬xF,b>z2VÜ{sOzNֳBz߁]w=LLYr| wB~Wn r]9?Wf~ew ;IUk4EjTFEcZGQUQ :J(P1QT`kQ( EZ<(X(X(X(X(X(X(x"A(EQ.bQX(EJ(R:J(R:J(u4T-JUT(E)]\msQ3rPh'<[d͐SȳjU&|ɚ%33!^.Z4TC$v[77o*yu;`}ݿݾƋ[Dk>Z21n9;FZj|ojW&G`~_hG Zl3O9}.wQ/5jyc:BDYK˓*P+L&5IMdwdAxdQ, !"DF0l !B&4 MdB`Md@±Ep9>(җl>|D0h?@xUi' R=I ryc܏_qكeW|@ K^1w]ݫKjW+y %NIZ8 S"^}P)wdaM'qE]I; bx0J|xTA >: f[ Y+uxC;XJDԉuD88;<|CblQ dKeQm5\g_)U21ecbYlGh1lg}ܟĐ=ia+@Dz]ͱB _G#&ho@ZTbR#bؽi8n㖎yxUZgiATAOHQqx8u9u_0Pܯ x[[YPj,=V?Nbc&QsVm#UۈN iWjz_pZ]'î3GgOO=M'Ҵ0Q#OT"]f$%YxI^ϟa.̃ȁ_ƹ\XW5UjZF&ˮKf[n7 6rHA1wr/㾻9>`B9ZPg__8_{Pٹcɞkٽؽp(cP~ɼ['~I839Bf wM=xH0 $:=8^OQ12|  ~h av _"aF٪xI :ZxEm ,QTcTcTcVcy {~z(%'*BIT>"?;]]|{gvl-q']vafv#줷11cKK 8}?'^U>#'c!G=ĭ[o1*;zsskCwNh(ZFOD,%"bfތDR"`)XezDR"])(VI$ŊbED2">">>U%ѩTIt$:NED}DJR%QTD4$:D0%*BDjK5h&Zؑ!Ld¬T+UJUaV`Yrv~);_ʎ/eǗKE"v{%^n/bW]^.0VzR+hVlJϭ\Iϕ\-Z齕[齒+=L^IpPd{^z%{{wҪ~ݿXb8<.ѢV״f&dv3,Lv@c6&31I;3ig; bw*߾sVL9fWxs o19_ gm=kqS9 $^HPUW-РXHl$v;kvll$.6kAo;w J1{VV{hY!I=7ϰاԳئխg !P C!+] M~0r|LKїw*Te\T2U8jG czo****1g!f^tNk=591pΒnOrȌu=5.qp8ޠY"3#8|u~=ݿ*ۢVͤj22TBXѶֶ*hZ[S]ph,L na%m/߂+j22=-h1GU5QQb5hga^cMV!beX~ s/cl!1cr漋43mڶ|9#nbM kcrFr9V.X+cr,\NOMXcr[u_mUlS=02RrJ;߮]AksL' Q_!/$_H=u -֌kf\\hf4W3x>@_5ZftN3:,|=z>|hhz[q}H cbUQa:Wa{*lxv`lX Al؁ 2*lxa:lX bÃذ1*lxa6ÆuVjXKETqW1n KUc`ֈ`ֈ`ֈ`  1x9sq)wEF΀'wS [x]Ezd.&ydǘ1`29o8m*V DGQxJ-Eb:̀0 uB mNti8k\ `$.`dp\ Wz n/op3~/6(\.v1쀝 | e vS_a |{sBOyRT@_pH-4ЦQ#*dx)ݽ U[vzU7T 02rƩu{aZ[kC f:khoW *=^@&_ $C!rz9=\v&\ Qr\mhSDKx\/H0#bní n;N _ ݄nsLj,OT6͛xfy>O|X ="X X =VqjX6<awy"P 8>oo8wF^/`@?H!0;Wpu0aڄls69yxA9sa?Y_1V˘7f`}co BXxRXVk:Jxc5Gx ֊Ԥ_ `6< sx^a.̃^XUXKarX~KDjrl@Z.8ƫlko2<?p'yQ;D$v(cPCHjGΓ %ǠzBROHTP6*@SWHP6JȠBR[Hj Im!QHQHQHQH}(DX#֣C5jڊjڊZF--F-mE-e j}Zߢַ-j}Zߢַ-j}Zߢַ-j}Zߢַ-j}ZBu.eLT2Q]&Du.eLT2Q]&Du.3!1]רPµ~xs0'T fL,,zھJ6z#)+QT{PboawA]hc>^OU 30UzxIQ|A_DQ|A_DQ|A_DQ|A_DQ|A_DQ|A_DQ|A_DQ|/[䨛\8׃x5ALpT{^[ݣUwh!ҊFц)Z51ejuR_Soիv1PďU+vZ~Cio'ɶϊTz1zC/n#(VvuDP} =wjGon{!EfҢ1Qk=vi9%-mcCɝ&eZu!p,K2d'o%OT ܓ)w,jF=~T}}H-12z QZSd wdF/wgj&5ꘕAU|`ؿ? T=Ze [sx^a.̃r6Um!FhH =< X"%.bX".b"v.b"v0]]wv]3ăg9xa/K2,R\UXKar}n;Xtce՝J~֎J4t=Gv*Q[VJWX ߨqKOo*Ip>v*_ς)4Lg`L0fl@h[mmuѶ:VGh[mmuѶ:VGh[mBPGP % ǰvBa?|_@D\Ojz=ۓc/Ha\. 3O:^3/2/ùw=x [9"{wz|%P_Y AB qh%CzyOB蔫jIxŰ ֨-jn0Ncq_] xDŽ ^<(N+Qpy_Drt"xI0~~7`wn95^%A.,yހ79a ނjnϔt ntwt&īY0yȆ9/0|X@,E*, ra9%jnrZl@Z#tDylF3`&̂S jϒYR?KgI,%~ϒYR?KgI,%~ϒYR?KgI,%~ϒYR?KgI,%~ϒYR?KgI,%*Ujjjjjuԡ;#ԝΈ{!ɎUC5:lNݹlT"d|jjjjjj8~2L'IR3Ij&I$$5F**N)&)(D%u@u@b]< ~Mt6&DJDJDJDJDJDJDJDJDJD6WЫj?3htDoJfCb1ס1ס)#hʈς٪& 9οZO^Gcj!qV$J`m}?>bf[-N]_!FS"7bsj8{DD/|m]v=mW[i]>%4ιR$n_DAfPٕAf$uUgHD0 dz[SjaV,R_rjTg = 0i0fLE|5{5{5z5z5yww6cqBaa]MUc궉gKTھSDOWO wihhK'5ktѦosm9T+}J=q~\L?G8=衞L> LJ8fKB#7O;p!_cu*-SiJKI6G!Ѯ9=NH`=D\'qi+bOON N NNNNNNw3ױ%3ʾiy.X;/P_~nAfkcwɴXgўt84]ci$v"ŏqpR N1;?TKwkr|T2Or)j6ӗcQ=h6={.*4>d[C==վqp/C}a-akq-3f$sM^+;^i%hub\NdXJz¶s'k/wt-HX#vu5ؿӪS;cYVgǷO1ScCv?>56f:b#y`xLb:i}*ꈈDyQżq O@L~g;GQ3aݎɮFI/ڻ/㓌O2>yvN)Ɩźpn]զ=C@b|I'd|ITF *w< x?fLŝjbTrs3+beIۈ0# y*ƚS|j|jeH}5#==MC867bw>a8L'_B>VQ#Cn*qKZf8c߫MNfjSr}x1Ol;gGuRJuritFuR7Te -G9nS3wks5S 3xDsS%sDOZK'Udd ;:ŕ^;F%#nQE$#8ŝq'?JMKw.q{N]Wqu'Wǝw#p$Pu`Ob?Tr- {:rFTVD|EH(w>ɘ^f;6iqrϙLzNw9ZD2X{녞^'oi m= ?x?߰_HSDޛp\Q@>׃a ap|z!! Q3}iT:J@^`#N~NmN^DOgB?li@_" 0H.1jУ{už:zt>g]W{D`pu3~ܷ?`9տ \97χrYp|G}9c`-ϧ 8F6l mf^c~"{:G HfAǶk:C cHWű=+u v~^}/EWK[Gw͙O/ wc/Zg.qf~C'P}‘D6J;/& Nw}NZGlI4҉jx1QmAdF;jx%EX$azxQ *:VqiH i3.]:nn^HƺIGէrPT/\uM|o8>UG} 54Vt:ވCOVťg߽{)V(.-.(qgn^V,?9bxBD1b[|)^5*sş\\ė4Hqs׭KQO4p= Z\&V$dr\_k% _}E_UU=V 0030 IkXӺ`."( (JPDUXtUD@ @  3;aݚSψxWE&*Z+l$Fl&˖D'䅢X^,Α\yRAmŅZyH(oh%ow{%>qAĝr|FtEgDb+rI1IndSIHLQR)2* U\|TJb*UeuXNQ"u!Xj:bj,V&XbjZuؠ.VFuRlQm bMݎRPuQ]dR=V Reƪ2Cޒj/ #Y\}ȲjI)'ka.YAUyn$h"^mh0N'_ `|1X89!L MhC+gaq93~'gpID.peJ.  7p\n ˵p wɍ/:rԙJ⺤ t."]AU }U%J_uX?}cFOS=PݢOzGz/z~SuowUWzDOSTo=UOW}L=K s\Az^zzFoԻճTcʫ1Fe;Ҝ ̟"ڴVKe2\a6Z`nṰVt0F#cQߠW/FGAht4:x2 6E`p# IϤiA04ͤ`Xٴ`xZܴ`dZ`TZrKKm7&n ^Oܒ5oCCf߃w& Nܛ7LHJ &'>H|,IJ$&[;JaaaiM؜p=՞~ol{6.Q^Igζ.a؞:OrOSdGjgG1 }K7$}l'?L_h3[ncg۹gkvn;tGݭ;=1鮱~(biq3ROq8OŕSqwaq~6?_OOǃxhTz}c?2 ]:na/=iz+3q2J؄Zo*㊐YX;U}9c~J=X v@ _pZ0k2r׺--5-4wQ @䋩pLSﺹ.0nr\<у8{sau~sì5&c ťX:2p ~>;ٽ>plȎ+U.┏QD7к {<#յv)ۃu}31C'Nh YK*MܽG70wtAWvݍ%ϛ^?ct?s^.bz`Oφ&SKl0=p+IJ]MT;u ަahhX<,NS8=>ד{^ϧӎM'elZ?\D"sdal1v.<==y/{/x/~_,___l_l]]]IOKOJ^2=[?4,~#7ӿo(Uh4JWixջF[ |k*?o)Rg!lbx|J}l <<5@i;UxU U=by엊Ҳ_Zm)owZTJ..lZ=4{j6{jI\IG%_!* 5gb. NVWÏ!~ {sy`adBe6\ 2}y<<<<}K2s(i5R`CO.@ʅB\d."c.6SdR=$I _[[Rys25lE)n3w.m&i:{P˽^|X}b bulz>Q ~Ho#36OAHl%CgRL=s8r=gCH32`9ڌF3y_3:n•g&D\IfZbo |2F3CiߛEt,5YjVUf5U0?5k:d֛qل6o1[`lmfҷhl~Fɻ. jc 3G(BBBBBBBB H/$=PфG@.&QRdss)N~D_Hy|*aڥeev9+ ]iWR]eWQڮE|]v=l6 l7#n\nv6?۟qvMI:ʎG.A cMŁ_ *'$llS`Y dť(#FX&΃M$ʊQB"JWFxtR|?\#㑰t( IָүfG0#06vB{Ww"b+Sg|- 㿛zvr6aַ-WgK\5j([sAk߿H`Ԕ~MuۋG>%)OP潭Vtݗ~snixuO}_yeq:|"5T`"ߤپnpdMꊮ-)y7l=zv!w;/[pW`ּV/"C6n=ōs=N!93Fjv e/Sطw6A#Կ?`=Ӎ&Ou~+LT3%k; nڹj_j w#ͯP `{>^i۽&zGWݼÖoۺc9F7Wg>v=`K1;RGL[a\N=\_Y|V<X1+KJqst͏.^l#\mA+g>~ `H۶@ɗ1ީ=m{ݍ)<`|ߘEh׻SπѼpũ=msS"E_>c8@Xr-LAvS91} 7?ޑ:s;?Mv7J q}S?>7q;K;0?"! sb Z~ƀT?gx͍3=gڻ*k&z;?Ux,+ž?Sсܬ{ɹ~?l_s;n_;Kycz}p{ŘIYkk3" ?v~שn=d̫16hayx{<5fݳuv;5s}|7f*~9e_}~'@;Gwp7xgח뇢؉;OlvE}C)XQv'5wQ818܀߮%Ԑwx~rl+fq{ {=NMdF"Z/GxoJ˘#W6dP㚢RkGw{8rɯ!׌#Զg8_yrP̢ܡ^˴KGOgxOMVW9?ޟtZYKpݦY5hOOzykc;_BRqwۂڿjK^Ӿ?I#7%RQJˏluPU{~a@#.Jwˏ|\R] RɕZ{`ssJ~ڳ/bacoa!kwywxi^࿻Ontk|#$j.8LN_{2wlJ~swƻ;Si8rSZsJmsƹZ1{D.l;r4: |2ν^IcC?d9Mٷ7=YpO"mC4?+{}'8;2U+'Eڏ[EV`Rwr]xeJT,~RUbW@Ϲ8}r_m]yh4w)7x#Zݓ*lw~kڻhVP:GwD|kiD}6lrֵtKK;PDxB{/nu;>|/0' 8jp`~(rmL]f|*0ϑKgtڤtz%FĚBYSQF\MŭVzՄGi+X)DMBC1ޗdmZ֓ilFzM!%(/9.y7͓4_OB9Je9ȷxINh|WG(ʩY~%-rər&퐳lکgn DuuBUYUu"JY (2Y 8PmT[Q׊R zDi#N6^G\yM^GfD0+zqWzW]JUzD7#z[]^Gz8jQspGXlfz5ʫ٨^Fmj6jKLtvOR+2}{ ̠ hC T:(2I`l-F k6Rs 7NFz BRDҐ1ƾ Ԧ@7fb2qWk1wwjBʢ n@R@CK"OLci)H*R QMTGTOnf3nl@Ȗ-d Z ]E/-z(P5ڏi+aOg=tF@W8[8 #)@|*K [_+36e=o+TN*_<9Z˱@ O"p2p,r%aUU tnj!llaS6qqZsv-ٺl]K~l`z7j<"dOq0 Dg!T,x&NdB(?jz6jJ1afIgbt &FoIYtR8;Mq8'CA87B \B2pET#lV+)#\L?ׄkQ׺p= 7QPp+ p{@Kv;9].jhIŴ5ҡI`2%uNP:IJ[muLgtUfțsa_ZLˢrVVQB%] ue؟¾F%uu]S)Чt_SDZJkæuu]Jqu5 P7ec%S<}}>mn[{]/GWv:}=jAߌrXߦ#jGKM}ם)K?@k]PNw%=P#S|͔fy@Gh=g!zJ 0= yyz(Fhx"kujom#=|_Q?#} ͗zlhL=VB;gTZs"(m^zYW'7ꭰ٦ lўz7e{>A'bM1mkL619&ꚲ<q 54UM5:T7Rs9 )5LM:2PBmSuL5uqFjil,sқ&?C*wf킰}n!*o|> GlO> ZځOf6CP3_Ca?CY,ns9bGTs>:oU/}ɾU،q5T}gߴoxUDLLT~d?'v l?3jNCt;eGv69v.lqvr؅/6(m]LU<ˤ`=LpU{ƸJ`ԸOkRq RIj(RDTDg$=E&JDgT4f-J3k& 0˘W̜\dNŜ$sR)s zY dՃ0UBV=Y !zeՃU,zpǪzV=U.dՃX 7 m.-^T9n}pV`Ŷ"ݳ3f:Ht=\75c1{.{`j;pG}R͙k- \3`\H%%X!_&uY823mG>Jgya3s75G ss_9hsВAK1a`ǩs͆/Az=,S f `Y2l_үR3˱H-ryNY9e+pwwe.3,( ?՟3\fY6ffyg/21&/[0,8^NFo@gY6dfJ{sF)Sf#dfMMs25cNy6sKS6gٔ fk=l l4C^oŲJz+V,뭄.`VBs{ՕUW,Ǫ+rdJ6JȪ+UW2 XV]Xu=Pm]g !Lq0%B!PPPB\RJK] == IHOBH2ePJY꺄e ˰ue= Pxax8u)u߽'9g=߻t|{JRu$J(IՕ#UWBI%JD+'IՕPRuEIߠ__BCrWWP6FeAƟtF0Ϣ3)gt0oүӯ<tp!%"+0[ lSJf*o߄q>OWҕ't5lM›t-@`#mOh*ʹFh'? 9D|Բ" !nہN8EtB.] YD!N!Cߎ›D-|+*| kwwaLcC X?U~=FQ9C8cO{ *M" 8u,X4hb`O&*S%7@EEO$hrtx(χ l8 ̇B+D ;NE*D ;DȉxgHD{'OXљ`%0:B@iDKBZ%:t~x(W@9p JFfxAiS`IlNx脗A'w@-LKʿPlu+*a@':0 /D*%j)#? jR? #vR2(6*(R?߅~*QA{BcJ"%RI=dR))P Q>` iE!U@ray@7S뀛y`,R M6`P @"]u H8L>wZ`L@ pȲpp.<h_URac:}+'ؿ@W 5ඳd{T/6@'ٯ d;T \&w 7x[ _ b06x&ӇǂUy.O ^#OdrB@ɇK|G#K?\VmQx|e\?6̍ 6WGÀ1SlSPq{ya.ɟcw=>)OI;U2>MzTY8lSL9>).TY–;U'No2*/&|#p286)U;;+/:gOUi.e块y uEUX9Puo#I<WY~X'芩kJ;VyΫ"vVnWR;':Y~2wV ˘+lZrި:Q~y2:g&`-5~C[T(UHqS{쎔Xy}$\m8^J㾩Imw.=[ln[p6$eOn^,x塚HʽXnrU N)`ͫ\Txm Xm.R`m2l|\X.NIi{2=xΞhm? j/c?#]UwJU"~!'c?/ܖ.JՄ}=W!%vᐕv*TN}/o_hhV7tz+ʥ]YN#*8UmovnoZ^ RJ0a8;{f}ax6p*Xg'ˠsyɆ{ gvI* * W/m@.uHcիa%(iL0@!! !s.G!F]&k!Xa8%MZ>iFZk EҴjb 0;kUܐ4F$C!Tpf`]aи}U?7.d g28 RC+YCp_2`)iFcx {7 n^]c0?x5Rc1LkRj[Vk<*TyOq䈖O5w6 }]F]=8v,un͹ݕeq5XenW_3eL8d4yufɘ k9ζ5c>]`_qе\i,vl8gI$Z5Qx޹Qιej羚6j~TGYwnOg:hN0JA׵N6z9U ΃[N3vsb&G4^1H8Qv x~LcJqx{p34r}G*g/KOد'=N'$7|Co*OGݴ8P1^so8%yӫ6.O6`qf(`ܐV;A-8{^C疺͸NVw rwGw/ LQ_✳Q!ѝRܧׄtwq PgԳB(\}^}K(WA(qW"zE(^ʁ7 nzKPYAmU [ v6\p9m9WN,6RhwB6ZH {jADa=P"te0Q+L3/Bm\&vՖ ;΁ZpX'w(fykWM*ggIvkwL`?p4j3D)8mN 9j&Fi@> Yqs&ȁ .0u841nx8km.'|Ad djM߹0 8dFYk0OXw};<ӸsKslkLSRv]stPSa 2;5p]jewD^Qc0m6aaڅ=5yL!Ҵ[h'aDb5D:Z͏jDm#ͦzf[Iͮhm5IDz'zq.!I:؉c쬣Ѷ.BK*՝Ga$VNDdGQ&B?S\(r[(|t|q%i uuXܐΈ[sOԺ',di<|<1^xY>:[}vc78ٛXטM?՘M/jf՗6{s6W4{ Ug%s޲z}yoy{XU[Y(xzOեomb}Gknlz^xU?8iR?8j_oyn<7g [ޙPZwnqC۸Xйk{oYý:5{GG[t8} kwGkM>%X%.ٚC4kt[i-hy˱|k{TwZFEWl-)ug|QV/F^9+Wu[E_jEyߗPX|ٺjkZ^A)k똯TgN[,*_'Yg|*:#H38pJ R1 @KӺs` k $uXo:uxzezC~W9]չd$MQzɩdRBe tLLEʞBeȢѓXٳ)Y,E2zFɐ//PCŅ<(>tDB[(!LyTQтvϐ;b6b u]tkHN_@Oc)t=ΡjUFAѿGȃ:{ȋ ͡_SRJ8zzX*IzKR~*zPߠ%wCޥD 7Qf$wSr;]mJO}%#RPmFuo]%{ku ?S}C]N/ԏl@ӡOS)}jHHn)^RD(^VSS|NKT>P|AqZ&W*ޒ)_UE(jYB0&C%EsE*e=YbD  YbQ,3(V2b].+I)kK\*vd^Ůb_CaeoE=#aɰd%l40z1Sݰg}B8l$iBNװɐuB>l9$+l%l#$'%t2=rC~~rƗ(6`SdY#):{geEp'دMp \2er9\~ɣ_z]{ wMve8[_io ,:Hcُ%{W.5 TSJU~)%ɻLdnp,<z\+ٯPyIod9_!TuCC(>bφ{M!y!y(|HAț(Dx_IE3q6Ma,6-` -YDκY?kg^ ;c$;ΰs"{]ec;n}!2-]ur!Vʝ*8Ցpvp\~nI`,[wz6̙r{k㧎^W9'1BP49JF/P- FЎe?`0iS6M ۤNO#/ Cl6 O#?0آORY1WMVqmTb0jyD ,zA,$}X:2-aM"e=*ׅMO[@ ]a M2C&2xMȟގ 7`"M`M L)zL)!S':Ϥr,SE4׺? Mgӹ?2Sf:I`h\eMLZ0Zp˪4[2:&GamLj&O8f4NZK61~Sch7| ]ˏ4qt4~ æ ftc蹞4$`ojf4̘~/`;/%'͙n}",V~k6wE;j8!M&]='HG\x9vL(( +H 1L'! 1UCƈCr\8}A_yLqq9Q?rh'Gu98G=->OėLO{48}mn\ܱس,{bq;#Ή}Zӊ896kF8pYYJN2Gq^s f:Iطcz̩es܀9jFͧ_7a.¾f.r7gYs`VqnŬnl!1 9ӹfcC?y\<^LJ[Hs=5:#Sb/hs7go_{><ħG,8k"c;0|0N1|A,Krlxk8>e6a13ʣ1 N/8>S[.y&ϛI_4/v2Yۼwɺv&Yv^.o+=|?a ͏Y"}qp"s4=XbŸ?>r_ཅ~wEK~o[UKǒ߳-xOXN,|PpPЏ#G`?|?]6(K>'J|%mos%dwl4>N#[l'-[-/`wx[!ʖL ;[) Ls!ɖ#q2lm y3ھ3s$DCb׈(BOgܙ I03`@)MRH)ż! EDDH)EĔ"EE"""Fs$!⒮jY;{>YѲQ3,(,<\7S-4{2ʗeSgkfy{}[ ~V9Yvv%b{}`#825@X}`pB3Bfܶ؞վx?{ A?7Wb{,n+eOU9dgP~Ij{ؼJ !ᡲQHМkZX2)uL U\U_))<ה~ ƇG-1pc{xb0-<%7<-x__pD<-p\xnWw`axEP k8w o o Vw007KbR:|8*|#uS|n _ _ Hࡈ#vGFd3s!ҍU\$5x1l F#CJ҄(^Yibd,9QK;F)ҞI>y須4+~JD*Js"ytbdS"JEVjZw "[8v_̗΍lGOS,xxnl˳aQ )K+Zc'ni{4Q? ІoՆkU&iS5ӂZHy& i,i˴)hZmmAEuWA'ȥIwJIQ;qznCmhw܆mh/܆67nC>  }i2CTmh&nC6t0nCH-JR}wNt$DƝ#nnR6DGNt D;ѱ}wp':w9 %3w܉:q'܆LUz5iD;ɸ}B^ \+ɯIh^\i,XUL5YvWԾT2a5[|eZRWlR;=~ZG)TUX-Cj8G$, Ǎ^~z$1FQpL3b%"e4ߙD1q =o~y)8)SE܁E#V1nH1qM5/H%䫠[[D[[j9N}k}|[|}}|}4k}վ)7_gEhME3x;)Ňi@&sF"10SȦ\W|0kwv  8O۫9*)q~jגiп)SqC M0l@kQ B1>}HUJk , ,6VVV6" Oo;XC9NyNN8ծ#f̚{O`\]#jiOn?)CwwuXwqNrjeL5??;ןuЯғb?__vooWw=$Q- ʼnuI};Ow+ǻٳ^ݜ)'5|;Gn;yT;:/\koxO7S:(^4I|sC!jD[;ui3otwuZFv_~>a 0U)o5t$\)%NRip5L.\:GU 䓓OD]Qe* TTttw2h w jɥw$D#DcYƄ=S{8bqi-8Ǟׂ=m&%Cb ;tM IgWa\5f(gkx({(QPA;$>3nr t)5E|%@RN}:~&6&!hC"{OTuZچV9YC{h G{A7$m#HϽ7Gv: Ggiqt#ѩ#(:]"r=H7 sjO" ]j sѐ!z6aQ7&iԍc6ئ>MȧO+h>>ZQLPT4L0MicՆ|ߥ D Rޙ&>'T߸=K!<7EӄU-|˗<%LXw}h6ԜSZflcޑ&yNlF+}+ui1vo+JyJκ^ב[Q jY_[4]ccd~-jY[w֣".tbz^Y7+r\I\^$1_s)"6ȹ47]sy-s$w_\9[mUs~V9sG66ן*[.лs)NF^>䒽\^O<~CXoiR+w@>qֹr^:'VEvLcp~:}ssbA%t7h\wJgeDxwyn c v";(9^etUb{{vmrp&76]sm :EnƿoguYM+Z^W˞y_L'ZQ}]l?ٛ%us5ﻮ[vu;$6r<Z<ʥȭՉ!|KK㗻['܃{KKKϽpƹ12mlFfu*瞭;Qٷe2(Fg[hmY6X{b{Jl6ڷT8؊Śӷ~F0l"mKh?e=mv6ړض|o=mNw6WGD{ Im >!l5=-jve]~ž(#qi5N{}8m61b^ iN럝mZg%w<+n;QQ!JTLTF!CTIh Q5*:#DhDw':I\_$j$JRL3#QD}2eI4(A4QןB4H# "K4h) 5D6m#Ea_'N韧[} ^OmR;3vI-vL%Jo9hH'pQzaZ8AunCV<];&Mn" EeZZ&sȾžݾ۾~~~g__79x*G#בvs@С:ecұ~бsT;V9V969:v88;9ǩIG㢣ug3Qprf9G:8sD4 s,\|gssƹƹ޹͹˹tytytyyr^˕f+y^T;H~By݈:RI2 oHp祼QLyc&t/.H/. Bq! _\_\ZbnO2В-YT!R"YxKed̳<+9--K?X[>2!UKJR:LuJ:o3uEO.TNuJ3(fw*) >ˆpsNc[ޙjN͓';ۻQI [y(S.HZaGF1y&ڷX݆_ڐFƆɒiɔdhI7,oHXYI? hO? '[93xK[sZ?~܇Qq𷞔r*׽Nؙ WJoX.?rʓ?I[x2Bh`,?xZz.a< mN^܆<B])g$*^% :4U>hr-/ #(ޏZ^5`)U#*vc9N@𘲂5 +P+(1fCV9巄=XbgpOWB2k&L"E- K5 )eє "o«wi>vhm~#O'yšr1f= Odco֑*;Ib~KMNo`ʏI*OFFs 1|||' :V'lMH0t` 8 P7 Ze -G [О-fwЯV TptJX[ k+am%d/QRLxI1ѻ3v;B؄4L]0<<lT 6.s̰~F`2?OknE0/]e&F by>Uj$AKzsMhC$iihax穧OHV.q -ը; -׀=l{slI~\k<(#"w!V"o+'C??<ޑ/,#gzG('<0V 4 x ٣EW%! Ɯe|$'Vꏐ>'i6?Ļ@=@NȜ?+# {1vE㽃GJ;]J*|<?ŸEmx, }9'#~ Hq"cԺN=$_Ͻ6\KǙQ'y=iX 5we0{IIc4-瘤DL3/?[nc S}g*ٚnn!$"~$CВ/O ѯ,y;ZL-JyZwW'f`*pP xQF_m7ؼ+XȂ#|!̑,hW6pgrgID91k(¼d|w^ǀӁ ǁ ^A@/g< L>d` +$Sαo'L&PhNNNZt`q`>C{Ga3 k :pɇ|ɇ|ɇ7ٚi4kr moEOCJ{|u|B'>x9>,GY˜ o o(٘݌!9 ;yaF#i,"k:0uPk'쟃$3ј C #潌︖5O7îc(|o0c,^*"T[hϓ7?{^%O ^ ~#&I"2"&] |^ØB^Q:Jj\9Y+C_NIŐ,Fkr<Ǩ%C2\{=gB$f7W_y2N]~뼑wnuSZYC?47 wBga$lehX"7AkƎt/p&8vb'pbw xcδJua$dGIH8v΢y/EGc G0؀@x羛ʱ@޿n6A\hQġ,7M䓦i+NF`ʽSMXbE<+ 'O~ 98>33/Uaos<5a>5F(Q;d;)n@ȟBkBkBkUr)A- ;n ?Gp^A'o釷[A {U~e׺C $exQs! Q-3o$1xzƜ Co@p7>G2KByZww@hNTZ=U$yJ<hz#wy/tX_Iܹ8/|Q4%µ#𖑰'˰6hO_lJO(~N^rV8Ž>yq69ՄŐa*ی$Z |-$\s4.@>_3O]0`f'Ty^㐯CR$.̧oy3#]/"y߄^'_a 7ӐNO%JGTܝ|6QMk-dȏ)/ .'}Dȟu0a N4|T <ǭ|lq4`4# 'Opg|1nA#TW ?퇧wcf >m[hm<粿>fFiE9+9 jqQqj2M5|B7>ެq ]ʼxOۀ~#GE=xZ<<jԉ씑^F_,goXbfɜo~MW=;>wx=qN/ϔQ BRN#Z?E.xDK <)p>ڳcw'ΏUf-z$!4*X-f8S Y|Ɨ?\w۩(Jh Dvg=i+G)D?dg2QxGQ Oi7J* h1>˷TghͭR <fiLw7y}x`((?w!\fQr a1S6x 6_-ނ۹~X6x;OwyU23 o 3\C6k1vL>tQ~=9hg1d ?f74gD IGHㄻg8ˣ=ķw tFsj@4xZجt|LrK;:N!OC_h6ӁSoWk0c;lټG,Rud/m s.Y6,Qo^b̰Wg\cfMrw9-t0<\\:ixA%Λ_b<|tlxAೈe67ȼiHm:G6Y3Gs̓"x<`g-38]h x4a& V`L?z?=%Te57~ ?7/Ai}s6d8lĎπdyVVx}1[Z$ӷFП%6^`gbE 7z|tHn}w#ˁ&1`%$(1fn|Q*$+Q `2t΀L: 6$.x3HTH~Ehϫ]?: o  /(x/zd)< 4`oȫ#Z"CXg x -QİxOW/]oSp x ,ܦ~EBDNh>z磅h c2߀H͇|~QNoq1UA/#?16g_&:32}7/7mcx(") (+_h6`ƙbYލ,_.k1Vie d LԒK: AHju,r-'$N:o2?jsFG=(NoFB~Q"*]%~"e(W%Jg̣G{ h"x^:";a+$dOO\o 6ȈZ^ @wQ-O>ZfzXXj<,dn}{'x:()F z #b>? \}{?sBEG$~<4{؇,A>4e{oxu^^6ȫ!%io(Z<^aȐ&t^&p="*Dth*pɈo'&?>g3@Ox*r"p Cnȓo!0/"_,`kQpUɰGCft47·|4E^d1 '}mY&̼YUꆨ0#ͨ[(bɻNŻ!? 9VZyS Q< y>[{&E}NL\, "a%$%-XDD⊈dQI"J$KZs~Uo}?z{o>uT[NT[cxhVsk7:z'vWb0V `ϸD~ɰ ܇<5 V̇JyQLag;BCde'`S1#ݐխ\07dz׋>$r2,^0J w5V*0/2}x[40 OF. NPv/L褩[x <'UL;.g?g0 lgMB/ڜI+ _ְ9 ^b4מ\%Ȏ=:+~k|A֒Xt:V-r2,-`-xk?p6R~nYP#mkQd˼@!B"'2mBiE76s]Kc>@xs-f{ZҢ ȇ\(6=48l5;GݢXjڻ5Q7E /klӠR76g/f譇T p#}6(wZ! Ǣ=!Ya5r}s>ecX|%q Ly~Nog#D?CNkEp l?}$Yj[T xclæўOegVاεQq6GE.m,:vM EN]/ecXE}%&3ǾvrMQ焑E~eC3!iK&*XXd =EQ8¦P65QZ ߂Z+CĢzr`ql 4!=`h&?ف~.[U-h3P6=t +A4yːfѹ go< s,Ր`F]*>wʮϟٱş#+sk`7`*g ?S\ }eIx.V<1 lZAf=П|_z,- c<ލb]1C߫a}[ @?"ѷP'X-\ vМ->cɡ`@ ;Z`- 䚐CGT_Yb\ՀKZꂱ a 6j56Zx?N`/4 8?Wx(Y^ ́>ׅM ֔[2EV!ցM:pJ_!kYֆ3`|( h0cX)X.n΃ _M#` hcC!fG^!h%*/F,d %aoa3 { }V݃cѫGa(b FZ~$<(d!KǁX/$ "Gb3+G/v2 u%2m-nQg?;k @J D{ qX.x (E-"} u%MilIb f3* 64Ǭ&u@_2)5!ٟ@2%#|\Ӱĸj5!CSWV  d}`EzrK`ؤ5'r6 d1NXt@,)X.n΃ _M#` hBafG!h%,$/|2FF’@X 3p=Q>C!AcգD0CF.=Q˟Ѓ56~)X)8+4%DHBbf%X(E. !/IPWb"E~𳍟Aߐ *89 ggN>z;cVo,sO|1l1 ja(?̆̇P*B]d'LL~vZ8Jd{Αjt=A78'ijqGZ YK -ei/C2JY ug|Kf a{b&&C388ﲧqzV'i73hZb34g0ưE1#m38JZֆ2޹+8%3Hq&V~Vu\U.9Y\jP:b49~3AL{2Ğ`VvJAnꐗA ˾VvP ?v9}oN-l }Z:7EP3V\!!e 'Pц?? wfeΆ AN&B#Y !I66. <p,c !׳hbʳאGCi8:96Զ >>hWs'KA6@n%iKԞւ1(p. (H׍D}++ն\&+jX;ɔN.4\!BEQ{::ϖ5#* (g 4 OAڞφ>υ1n>/|jr9C嬽(]vٱX 0XƢik)hkC8ڱ튥͞L3h!􇀫1SQk.$ 䶅&jyO}/׵`Yf +LvEaj6Blmys18+ֽ 3˙h4V(W9CзФڹim*Ѫh"lQ:d> 1hv, >Fx4㣟dt%}*i? 1~Qڸr V-+l"?e1fF;?o5hFg9dKCl+N:|EϜ[k!՛wmx`э=XM| ˀd.f9XՋG%Prrb ݃6ZNˤ;XsUkoضB+|4or !|~.W*!G~_ EN`U ,ČG?1Vov(Tm7'{v}Vau'#Ҋ\ۮlZk+agAkĉDj +f#ѓ *7}8#8yXpEdJد6^A((ւ izt:%~E>F#“ Yof-ovG"Bn*v}zbs~9Ua9qgtyu;VGd$hsUD)ˡAwg#Bʁ>x·^Ϙ+Vў90 ?#Xl d'W6ϼ`3 1b5dK2=#Mb>MzDBC1Q{fpF^1.FZ22t14Ϟ(luVC̵Mml' r䲐BNe@3tCZCs!C҈#ҠI0g=lofP j4m5Bo/rt`h4u>YVw[lסǯ!WNN?!k* 6yQZ QDRנ/FtZglކ`)- >w[~G>ѐ/> 2 SOh4F]1uyxnfPt5QV=(mYd(4Qjf'0bne&e3g W6^mp{M9f-o/ @ ~rA~XAk?_o娀xЇ كZ 9AI߾{ר_R.݁^hXI(L!G)'G ORzZԕz>B"t=LYjB-M / ԉ)u4ŘSd2f_{Q]z^!A/Л6רᔛvN֍>[=MN/f<5g9jJAHIԝzSRz,GSuG;솇婒yUPjQ}jFLKыԟS{L=u=A{@O65%Qc@C)Nvr=pc`K`" 0دM\ԦUvkӦs2^(0;0?JۤeM`]`ö]vM-mT`ȁ1q+Hҳ<<ZteR6In0;00)V>ll |Lvڽm7pPէG'g0s..nnѱK; FmCQl1`u`]`#`s`[BI`_ hCӁs K?L  <<ѣgs+[u=T<0/\aRUVV66ړarOpe|_K+dbNΗao"<11Fƫs}b_ocquvlvܔ_$T_?kQ*/\s8foaYj#i:-)%G:N'4r:) g3Y;KB#x1[,D8!np\pS}8lm[1~r,܏r?O2Ky,󝤜?%yvg}}NMEwXZYg2\w.Aw?;[z}RYKެeĽ0!?ȥ&W kFp=\uɄZ5 Eɴ;G`;KGɝeBrYor%,g/OQf Y+i_Rur_Y\Ǡ6̴q>Dg"mkJm?^BzuY+&vNs9r e2~J?ER?65Η9E.1mሩY6FDZMocz~DV e79yPƼyL#MZwZ"?jip0$"4/L_Wu??Y ,Gˣ?,[}GI=GI?uF%Q%(g'L\U ?cX_WPiaʼ˶k/n4hn9٨׹o%r:itaiN7'qҜ4z|Ly\MmC>!1",4V9h-r^q/Ea J4Q hH=i%z ЏMяVAb,Ji+1]젵1Qs8\S&ڎIWoiw\Cz^z9?Iu*kѿsz^Mz7пyUoz/z7һ.~QֻޫK>M9}_n/KL_W V_87&e:&{¼:sBXgJy)F(V)F!ynk5ݶn[n"iہMqS(RN]@t!]Ȭ"t1ʭt.KR]J{ti]2 Jyʧя}Hue]׏G~\?N l-[D?nAt݆t;*TB'$*.NTJzHT*{Q=@zDP=z8%z=GTAߧC!U鏨R'IPUПOI3L?ןzC _QM T[/ҋ^ӳz^FuCgrT@5ydۆWm_Mm7,blcnKz3fxYg=ޣP3>K-y}Z"/8_9\[ĖpZu;9;m☪1UMo7їWҾr:v7csN|vH *TPCjj/t2Wii4Ŵʠt.W䄜plo)3o+MsM1R?\Sb3vo+msi;מCpMkjpM}מ#pM}^k/c7 הq+/ S:`aScGo0F#vL؀q3̌021`dRȔ#L 4`䳀#3Ff|02'`dn#F m#v2Ff:`䛀#|0(f, Y0,`fy#? )`瀑U#kF0.`d}W`d!"eYo2!`dcȦ#l I0=`dGȮA0G̞3f 90r8`Hр_0rdxȉ#FN 90r>`Bŀ#WF\ 0r3`V퀑h+>3q3 89F΀K`䆍7mqքJ8[9s'~{pOůS|Y>_K|9R>g40~7gIp=GmI)ݹ;p P,ry%Л{}/M.^(>H28_/ Ȃ,,Ȣ|2N+m];?RlL xiǷ,Nޟ\2[ȼ^vl2K2$2Nz2,#Rl2]Ҍ餭#*S)Ҧ<3ռ/eflݎz/M/z3PFv mDi a4ܬwhr{47CMKc'DDi MOLg4f,94y%}EMvзEKh)-M~UZ+m6o<Fi]&C{i7 t1:nI:E stdt.J:ݠtnS2M;yP Ech"^ME3\-+UJmD[N$(:D,"YtSNKdw#}b8 C8"c8!NS'N3쉳8/.Ⓒ,⚸.n▸-"Ӥ ] f.Xq ܐ_Fܜ[܊;s7ăyc_|"7&̿鼍ɻ8wὼGcotMn;NKfw#}r< C<"cTGjƩx5AMTd5EMUiS5]QsjR}櫯7jV-W\}%jZ Z~R?UjZ֪_:^6jڬ~S[Vjکv [P{^OWAuHVGQuLW'IuJVgYuNW5u]P7-u[EUf 835CTj.ꊺ;>qo{3_\qo {;nP!^_M yC0oFzyo7ɛMzxӼOg o7ܛy_z_y󽯽o޷ Go[{&o{ۼNow;{'ywɻ]z׼ wˋza ;a P`PpHhXxDdTtLl\|BbRrJjZzFfVv8ΌPĉGdč"*EH8HHHH]HHݑ<{"y#FE)))))))$2-idzȌ,<}>)dPu3nhWh7v?8iޢ@yCc:}(cطBN`8%+*^qnSfw.d{N04M$@B&0"&@APT bΨE 5"*,u;]{{S}*)n] Q! }70e߱LY`6 XX kEQ @k! (WC"V\VT@_ YCixi=J{+.PT+pPC&&P*]?ʖʖpD2*)1eGeG8 V e2N*ÔapJ[ X8i?rp%nWpx< goȳo࣊Q`4TT~95Kk SRu f^Sg{=@E!"QV].ci 0jA"tDA9D"XS֌5g-XK6kZ6-ka=6`Y'֙uaEVͺnpPg p.epu7܆;p}x2\JZFVN^AV)(O VХk?&XdGZH\(qTN‘XT5iCx@Bh$ a8=Eb@$bHFĘLR g'CLAtQSb`I,1q+aĚ^յ3 bG`8 `008@GKmA1q_ QC7Ԑ<UpZkaN8RQbɴfZblϴG؅邊1 %,h@3t.(\Qq+UD[=;K%bUp7PKU'S !4p 5e^A<oFHc̭&HSb#ۢ1=rgE2&s9)P߅ jI]Z.=jۈm3jц#uKԙZzPK#c~ 6KHdJL$1vE-rl.tޓ/{]d?`p-/dWcqLH9krDE%ϐM1@$ i!RIUYom1 XLr}ߊlOzKDǐ1D-V;aUI{i]y'ߝw1wӐ8dXC C4)qTxC!mC:(S28dHqȘČh~‘ga@? 8+4oh]Q$t ٰ `3 K8w1w gƒcpt=cD0d?MhMiѶx6h6Z6 gFC+@kƂ/m!Jm<v k, m ZR+WWRXԢn@=JmV*uhQKOJ=EO@g#h#3uJAQup:ܰ #6whhu xK~ փP/0h !DR:5 ku!+|WcRjSn% Q!ͤR'&a6T?gUOAȳct d+م[A}Oznj5?t 7#nBGqS:ftkzWb3hH'+Q`Dc͘ƈY֗^)$E<bϠK#HQ+?OmOO]O=O}OOCO#OcOZԟ7cbVUP 7g4i@㔡q*_ծ&JN,d ʪ,+x_t#ƌeeH6ƲCaZ{$j!4 Bs-p!J qB0D&F ITa*ta!, YB+V B^$l aG(JAT8" '¯YpQ OKs?\!:cX}=r~tO9DT`tL]5/9/&K^"眗үE0Lc| `:3!Lw'X7N"]ǪY,ߖ,UEF+]AHWjO 7mt^A(}[iˀ?) +doKoK}U&dmOOz?T9(~"= %d=??}̀Ns8~"֍:ߩQ:cP{H+)@3كth^z>BX o 3W#+쿆3c|'F!KKdנb0fmMH̱=Fz:!c}cFz)c}s6 fnS{;_ j4#}' ΌL&K_,~-}o;"g'h/k*~˶%2֏~_6_GOeb?'=-~%",QH@s&*=85ja֫V1k/TAD!C5fxڌv8S0o7sj AjAjAj U"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@P%TU"@|yZi8t/1 M(4RR^klꃻZ0j`2Ɣ%bk9$7b@$vk1ϵhN/xҗ %$ ;E']ַ㚕~ul|ɆNb<[LMϖ10\DcLjZ_>$qFO'*W3]B#/)~ZG]G-Esio)621~h|LO|bB|bDR,h-<mo0*ЧhiVE*ᦛ)N|6-Q%W;vrٟ\Lc,%#~I {kw#Eq56ͭ㜧ٴutvS:o2 ;[g*{[=aU-5aN'E6.-Y )x:s/j[F>k4gtD,,VXV^]/%3Gݞc/jܢEZa=ɵ\-^vzgvvkmwo|C.//tM|gqr \ *Fv4j5wsK Z>E9/r %5jdS@m`ExPoF$3 Lh,#MkK۶rhݻOm5݌vt\CԖۦ韔%2qsg/:Gǹ$ $$G LN@0-6vrS;b:İϟ@/vo1bĈEt?laaj5Է&?BxSENK;ꗾO6M¾xv¸WCeجK٩l^k3+;d9]HQf]/Ͷ]R|6$V::$ YU:5궸Ө' 3_ƙt-6qWGfuhήvh f+Y'ҦkԝC ,ʰO]6Q?!F~(Vߣ KQ#ظh%6ruwIyS?P:U}bG'Zjc&ȿڽS+7FNDuѶ"Z8<62"҆J5#3FVOsM+Qsّ{G\zx{}QVJdm婚m(ŦS 7ty#&vю|ѧfM@g9~6j'^8 0\irC6fb]^O_[Ac-LTW<|@}\\/8?n>'eq'tx!ook[oۼw*O%&V|F/ԿG8yugd u-_\vTcK|<.6&62")ڪհI(Jbc7+kߔx j6'vYKkAǗyvEF:W+&M6-tv}~o_EPnV^>_Щìݣ: lqNŲaӏzI_~gKy]ġ!όoV'fm9䩍N ԯˬͱ.j>K>%ͩY}+Ux<^F^ٮ^iGs+Iv8ySgm(+ߜ=f ;zmy6:gq֬#sB< 4{Np0Q[zbE65:HE EShVg g鉑cTTZFf+=wsk}y#-9DaCZ}nBAr!ݪb`ۊm}[p"J؂k+l`&OY ݛ4PwÃ\ x ^ultg{N<۲{xt)wu ;][M8|7=*琣N7ڟڕpgV,?jQj >{ =B< "|t 9|W?!Ss8 4}c4_ͧGsgyTdHGr9iڥ $bw:9@GojF7N6v'=1rIRwޗ[g]u MI=e|Q]|V[muEe| 4r}}Az%,(u.zVϥOsקp9| XјWFvL?>`u[˒K7x%=ylzi;!qVqO (PY^%&+4|o )~7[l$6&~馛(m?C96U\0vsk8mcM\u$JƯ ۥy[S{ ;fگ9eM[e?scL?/6wmkpbQבaEr*}^S #[GeV4;]ǡ^j;G?IX,J-)kqu#.չlrN#؞1sΌ[\|yt;7t[b~R v|É=s8,O /8Y~X|;e\;>Y]&f4Y@g~ߞ-2~jq]mpWDա ^rO?ay{s&(xx=3N]0sGL-N.wNM)rwYB&ϼwOr3*F-Tuqq->ƊIE2sH-[6vwh'f1wMeXΗ~egιNXϮw'+,^viI[L.}9#_wmۧz񕩮6|hmie/ ݴmȭ#3 7qKaMfZ98:{L9l]2tvW_Ct ոCnj1'@:{¹RJu|,7 _y',Քk_TjAyPҀQF,ZW9eDž^Wwߐ;wĨ«ClI'K"I"1$X`2$V?dTN݉v:GF%KH?w\"O26 ovPуmCG+:p^ƱN'u^L؃?m~gQFYt~\GcdSNr+?ܸEel#꼾R5=pcΑ]G(yT\mVo c,xfx^]jsW[à3Omx՘Kc/K}]~\w'4n޳Oz{f/9YXL * 48P%ԌC ֖Dwu#I=P> Ծ5smN~'ì~Rٙ)iuM|(eףcwDʸrMZN`~6H|{W'n=iJ7*}~;)>Le)M7}r ք_X[l^OfzkIldzݓ&o}沽IOݎ..?05S—_ҏbe\Cۏ1΁[?9eNFFDB{ endstream endobj 2538 0 obj [ 0[ 507] 3[ 226 606] 18[ 529] 24[ 630] 28[ 488] 38[ 459 637] 44[ 631] 47[ 267] 60[ 547] 62[ 423] 68[ 874 659] 75[ 676] 87[ 532] 89[ 686 563] 94[ 473] 100[ 495] 104[ 653] 258[ 494] 271[ 537 418] 282[ 537] 286[ 503] 296[ 316] 336[ 474] 346[ 537] 349[ 246] 361[ 255] 367[ 246] 373[ 813 537] 381[ 538] 393[ 537] 395[ 537 355] 400[ 399] 410[ 347] 437[ 537] 449[ 745] 455[ 474] 855[ 276 267] 862[ 435 435] 876[ 430] 890[ 498] 1013[ 507] ] endobj 2539 0 obj [ 226 0 0 0 0 0 0 0 0 0 0 0 0 0 267 430 0 0 0 0 0 0 0 0 0 507 276 0 0 0 0 0 0 606 0 529 630 488 459 637 631 267 0 547 423 874 659 676 532 686 563 473 495 653 0 0 0 0 0 0 0 0 0 498 0 494 537 418 537 503 316 474 537 246 255 0 246 813 537 538 537 537 355 399 347 537 0 745 0 474] endobj 2540 0 obj <> stream x]Pj0 +t'[z v!>hpl%(!_BfF'@s&<95llF=mD> stream x |TEO۝޷[:! @l"K  * DqAqt48thPfEQQ7tts$RթVs3~H`RY1<[/)/);߳ൻ,Sfk^)+0$ƃ1&}t.ѵ5S({TXI^q-țt3zDme{>+S4-nXp_?g kg72C~3*4?hg`f,'5_vM"7ً >npfdj[M7-kI8.\4и4=+4W,\$q> Է,8|CL v\5bt]'㟯|^so8tbYF]xP_U}bٿW>?.̓A**8ЃqV&DRZvi.i'1d/(9a~kNprl4fv8nVX)=5˗ 2IV0WI~+fL~ SC^OKԓ^?.{i暿%=۶X =+O?~L3Li0 [;Ϻ>|ȡ0s_ ;Qy>b¿ߏ~ G+5%|g@QPg`Li0 4`Li0 4`Li0 !Iᄆ,aYPN= $B2A  ` Ln-, Y0Dl9[6ƠUb3g~ly~jm"(pengR]eg/%^˅=e kt+67x*et23:*̪0LqtQLp)#:8kyOyӬ2 T+Uc9 skۮÌt,|vj TwY0uŇ wYy0ݍU^=GihC!OR&|D!utB!BH&xnB"Ep #DQMyKQ^|9a?y %! O,t'@J ލԌb&R4ӖNNxF<@ ~Z}?%;­[7S<Bp.a2!@#jՄItBY1BH&x BMH$N !4BF $ (|r1+03kF)10=kj`ZYSO 4d@mVu:01kB`gUi ˪ m Ldc*|`1Dhkq-öc6%Xt7:#)qR-km$`6muu_:V۪ݥ}QON.:P~m֐ _4|OS7i_S$%W'̯V| +9+ o&~X+gNƀ\3;m&eLQW^% T AO鯞Z;quAwx|ƍPb jwk02à% .NOO_x ~.5KZWOdfb9 4P[-mMJ͐wO;]Zl3@>ߩh1W[F v|'qO˘%ݍ)tt>h1OC?jhnR{J  W=chW,B['dC[Cwt\Xָf,-e.Up5p%ZjXZ&nfnmp;w5Q+7 / lpŸ~>v,/hٌP@VBG FmP~`<c8섿ѫOD>{<O^x < i3z(%x# &w!|!ڷ9ȀV{1>OpӇڿqc^♍ia9sdɲ屡f%Kp!\c\܌ާx <~z&xNKg~\_W}D3XO>o431l;^og#&Կ!<'Zhc B+zG؋}~yYl%xMͳj ֿ%3,}XWߡg1-慟=K~WEh9 7_??w8psB[Xs\,0 "cQ/Ag–!|f<(]xo4]&ƫRcc!))F)b<݉<ڡ4ZmH)>>mjzLAtLAw ..E d[w?qHv"x$K]2-c$HuT7;^ܡeщY[4ys ˽j0 bf$\e֨DŤ%+ fϫ,}o `ZQhtȇM2/)f<ⱘ^|77gg<;|||7 eY|h̷/' Ňvh1٤]aFGB*FrZWqðqCmçoAT}$6lέ䅾6m*yaqӛ}lLS]U8R]_"9s/߼oCQ(/wxMys.mXEW_aռr3Vpqҭ7ϛ WGڜLh2^a-yJr&^GRғf\}zxNߟ_n^PmoZ?F?/w&'ԙա?[U :|;Vs2,h Q.nmHݓⲄe6i d6ˤ0;,yC'hdl==S'Zcᣮ$lo'U[K!7΢ߙl 'xq vV-Bk#wy$(τuO3($F9nK^KIETzeTRܚlUO &uJ37tQ8 ceXl1!u ֌` <ml[͟׻|G>,mF'&^w-`Ӥ*3s ck&Pef)!@T]$c"[`w>h~ﶒs=zTQ}Vw+iG)4z6mdM^~UvLR㋒ιeF$H]WXZPH*PUT)L Iܞqlq!#I|UMlwr'irxTp_Z6.&hƳ+1Nq٭ܤ0ƚr~QpbI^/BBSoHϝ%W s|7|Or+CשP7ɇ2|-J<{-F#95,ٗ:Eagtp9[NŬrŖlKDnAgLݿo/,kXyfk܅\;8]ϣz)u;9wJ6j;+x=yYh7oNWG?2MV11ҬU{_Q[}WwVKnm]-˶,Kݖcɋ/$XAc{8N@ 8v #`,eI`B2bHDUu6+Ûק֭:թ*L6ա5]nf'1!d&6LKiT6, i +Ng>T)K՘t¶wQ*Q[ zWٶ-9I<6<ΤZֆU*E*I:Ф5FG #jB̪U)u#T($KBkԊӺ/>рL:\pI))z?)d)˚k6sO\m5ma'?GU5.jԓ׺.;025WsHŵIou$*4$u^:,jmw/v-b8,Ƅ)r["sl%;2 ?&N/d i Ft-<ҵ) ^T3odt0 7y\nSn"Jpw.r%|Ti֕U7N'DڣfuiM~(aI dƠz^,$*nj!X9 VJ9r4j "6JC܂Vɦ:<{$_+MtÝսWdJT83筬+1OLIz4~0V;ԝ.?,Y?]U\oNj !D("zFH?Nwe8Dp"'R+:붉1بXqE:4tیȹ±O+B'Q *61[tjU3!  r Q=6c. Sz1iEX0XD!Sm[0'd> Vؚ$N:o ˄}se{OԃƄ::.w+vFm[s(''Xq٦fDgӢO]͋ںfEuZUMWV$M*QΞgMʑ%TGj+ OjrlOz<:#3\}9 ?C#͝xW҅: /ݺ9-! Zm6x(f)DO6ں~˖DWwF4W^=vm⩒LB۲ʠQ,`4s6JF%1"3ȲC2[ɼ%5b; Ϲ=z&Kfg_OAl xyU5^v#?JdEWTi4*ڨd{r󖔳v轻7ݴ&Ɗ 횞E^ˆV+WfX46͉MmP5h|6!+%_3F0Fih\hvl )9qEVT/dZeC+ 4MAؙ [{NUr'NbΊU.̏?*r>? N!3;|&2P^#(4:zojJ*BWStF+Uvм+\U%~L*!Y&͉.z*yᄆkAS^ͱ2 C|h]BȤd%՜^2|WeUSʞ"OxiaR=U#f:|+*%,m& ZV vw Ӝ`VP4С*y"UFSu$uf9QxŚ4`ʕa֥fYEEN퐴gú$~7 I b!To)nU]ev7OO'f Nڨzro˘M1 PjJ"50-:U$T.Ɨz]{t+W٩umcIS̗x:vcQ.%Dm++\ '1Y(Lhמ8^ѭT#oV[ma}O*&86?Tz183G>Zz-$ԟ8%͆:A9ڞߎ?;c3$֜>,w%n faY'Õ>WUu:;U #*=-В&)V>SDUU-땕u!x]X.ʙu.rȊl/.++W6mB޵BOcymy]Ele+*;*,OՇK6Q=UGz.R2-ٚ;ҧ# ߥALw,AsWX^QJ#es;\n~i&4W N 'e:-XqmTܦ?;@5䞬:uIL3tjO* SA;NBVh Je(]iRaV#7LWXOU>6fw|Pyr>JhNJFYӨ.kF1SGJ~)zM-L¶c`+)-K7]7Y:@0i1tqBK..4[ h[_&ЉWm)#Uo>ه7)Ml7H1_;?@fY[YG@S ϳV{9?c0uLjtf+Ώ½*O&4nW+rVnoCH8T ?~QK5V0x4V&Q5:w6-s(0[,zfS fJ [MEgPR]l#fΪ+,hQ,SB_l)3u@Sﶖy.jO`O()$፻oX,WJj\pS:Մq Ouy&8ꋒpKUqp粬7+a\4#m)#;r}FUi]_yd] p; gp3/9=:ZKV`n3" z3 8}tRvC/T!w$d߮gd:o*^q ZFNJ_&) Tk5rsw: Ӫ&JD;H욳sg/'=H0wKn.%ŲyM{Tͳbeއl2Y`UY';^IT;xKpX5PN^5BکB'0ZvsTksFy@k'" IxX5Jv NE+:gLgY@)?QTNN`* Nf1!ۄb7r"jӻ]B:%>UgO] K8fˍZAYI9l&~k_Gw`U)[.H$c9j-22$gcM[=VOZ0),r^5%9X;1.qtRa,qlF.DI&J46=SE]Q.؄W, H5)#j.YWW`qag*bxfd]CLq+M}tMw6ҕ$W,BnE * nDOtGhͯ?43ݐhO_d8LɹeRoȶ§V ۑp+ҧWcXu B}*Q3ngKgo쯂8.wYʵGeI#hm̿ &4㞠 uunxYNlN1 ,СI %ُ .uIXa>w"*a>5M??qeₑmtBtx\2`7^WRA=. tH^ROTku ޸UK'FInp|rϴ/ʽlɋEhRJ&.YY|T"8AQS7joJäm Kɞ/U E*M$^#U_qk_^^Y`J?-DZ6NZ[} ] wRT ⮣ֹ6}ӟ 坫ݧ}37a&Yg=K'+mlSWԮ%3|p$D.}KCXp# 7\6BWKlii߹؞v[״.SѨjF۶PkGחĻ/mX侔j{6=67]~W'^\wro TdNfդ*I'5Hmќa2^MB=IYI~0.Wr5H:XH3h(7 є"~&lʒ*w6yD{ui05{usVd5HpNձ >k]qjjЯQP7'8xekobm=ݽSWrUq=MS{thmwڦTī{j<;tҎ-c5ݴ}(qڶhIluׅ>ԝؼ~EC ٗlomWX>SjEs']E!giϴӟrN's"G.HDfr{3-rKӢ|򊼼5-y|U C ~A)w#ωK_+yT̫/C^+%9g#󡂸\-Ȃ.nϼi4{~OyHr9rko$w:ɂdAdAdAdAdAdAdAdAdAdAdA 8B4#o$7 1?FvOM]wC0pX'A$q[7׉DXK D#H$OCSay!40W Ebo;ׁDEL7`r7 8sYq ׁGo 'xp+@ _; ŏGĕ= <+>qtvOl{I'ju'W0D N΋tgh@脗zI(s=Rx8"xW.{#` e!Y8E XH?x+e~U/w!’H/r| H}8 ~h*҇ @HRx8}(ћ8ýFڦhZ y ;;qtx [(8G~1L?m6|x^p~2Vs:`7 Gv!K !P!K y|B:,},Cx/ӏ2hs'!'#(FI&? }G@Eu/xA` ٌ3 qmNw3м5^M`Gŋi<.<+8^{΋^bHM M-Ԩ_,C4d1β1SnlzE9/qyxzYY6#;b`1X, s9dq8YQ\pL 38> _0000000Ԏ&Qlj;t> ^ D8q )?σcHE|;_8ئuqG f#yƙq8kyIqf8H]Y3DHZSa-G K4 ;WG7CL hDSD~q@GA Z=-pH%p#$! @]^= d8B0(c4}lb#:Fa-qGEGB ^`7~5AM#L?x?$A R!p "Z^ѿ[7&u4 .<Օץg󺌄P;9]N  RTs򺊿{*/5Y'1u )Z3[ KU?9"7DLux.!fe0KFYeĤ\A&+U$y]L& XOu-ץ|!H:K82sNs<9=sNs<9=sNs<9=sNsR+d'aE>@6781vx[o/`qkw?mEH]my80w}?0bIcQ,O+K+Ue<X z8_RRBY[Q.^3&o>eҤaVsӜ?ʟcZq"axx>rr3˵qŜxf(k7r˙?̬(Km/K@gMk,W~Z\\Ǽ~ruGL&g|!|ɧ>RjT-me>{gaV|x}%E6R >;mH/4gbY8Z{T̷kbS?>< 18 ٽYÐkAr=rgWO=I=_w2A JBzvpڶsz* 9:|aY8̼~~Vbvhn{݌+68nA׳6_4vGoEu33KYEC%*"/~3s9C3kaXʹ,v[*em#%WJjüN4Z>y[@ VqF={kBL>9U*{peә<屫=+yҼfr6]Ȓ!e5j&S6`ljj¢@F܊򊜪сCU F_*WQ( J+9e 9EŁEEUBeyEe+/fY^ ,rt@A~NՂ@E~N(PTE*KsAnNgYtA(Le J+(Y_ +6B :P+q^^~A61:2\iTqljm ,\U}΅/~9>F-(O|r,y=μ-).C_k(~ 7M/+ٙ[(ŭb W5b+7f|J[,%hQMtmDZvVЖj}\qg\{MPknvkwke1^ݩ=P#7Z>Qۤ_nW5zȸV_dܠ7w!^cX24Qd|4{Yý?s!XůIX.Z .-\xT W<b .~ţp\ oE\섋pFH{." . S*(\ ?E#\ Kܠ%F[Onֳ.R%\< Op.vŗp-\3n0tFkc1Xn\`<`L14f9#֨0Xޛ =8.FxȆ .p<\lpqP\51Wpq\,?-x.Zb\thtS;COFgjx s".]pq?\ugp_k0395Ƶdpq\,[b\. x.v"1 9pq\+U!qzp~R \jb9\< /pqTMҒ ~)\dE)\,p\<b+\쁋Cpaiˌd^#M{Ԣeڛl5p .Up\pEakQՎI5ˍk78n0nt!GcIX N[p.gxkK;u\AmCLWu(T.̼`46]i4sjjvRXּ`tWccJPMCds~qhfB,LOn$7DH.b -\f.#V3<6P{ssjԇªXGzz&>Fـ -57Aӫލhc%"IYY '!uRӃS8Y!V]NAgp&F[gr&hNgѰi:|[RvŜP\u1*Npz~.J#1xj13$f-C8aef0H.p9렪mnz545OvhNOn6ce aiC MD@NC8yB7bz rM=y];Aw8L_ 0yrDsZ#ɆF$1 LXrAJE`<NU P\8:/!mdcuO?ot>?M.i7=MhEtTLjij;7r(g74TwXuyfҷD? }t6Vxל.[SNkqwp:zЎjXIwhn#==Tk}vc\U՝R™fS><:[AA: BtbƊ]+-J<hNGΘyMz"FN eXtW:7O֧CFȜ, nSΤǎwWP7t3mTɉcsU.K&B=흊ݚ3HG"*H6DDrEڀQec"cEjPp;݉Y:Xt]yƠ#ܞhfT-ضMLFڌ)QP# jB5 bV83ͷLtYJ%XM*')5!_ߌ/Bjadx;>uS? ~kt7mGD3z5B%Q=QHRr 9QƸ]!KxLFZ(=Q)\,0b%ewCuIp|SmJohƚ f 8lKKË+\PtQUCUVϸ ڮ7aXk9ebCrmp٪j@'fA:pPm6ʢJ\;.-z8UɡtBIstrQ!Cf;y.<%-K txFkW2ë]8PCWt;Y´PޡSm1e)+Y-<$>"c:Qy8)7.Pʹ*:u&IC(4)E:dOn̓N6PMʶꐸY-y>_MJ9'o$eeeC҇͡JڔH 73 E "W&ԫՈn"j!tNj+m SiҶucƮ&G&EÓbSd8vܥCf=֊n&i̴,=^n0U2P ՛c'}3;R''όܒK#-'iИ̴$ +n͉,qzo J Wrznk^y57Q*a'6t.-U6tHj)sEbNIV_iduާq!94_PTk|(757A KN~tV{s:w>Vfޝȭ7>;A|t\{VL?WJ%+զtC3i(Mk(;W$d9gd/l_"?V/QD3}qgS$ك3Qtt'+YӜQpv?b&G6NoѺq:2]i|sS3"F!$yP"޸}H MEy4͜n3|^CEhNv4JsE9K IL)YWtPkf@)IYgxIvfzP}]N7U+Sdiec{~4 ev|3]YCgƅ/MTrsRWO%!ò;)hgѺD5YO7򣦦{}ٯPd1(Q(jKG.ۊZQ[⒮}`jzndv^Osi;6ݱiYӲPc``U*35*=Ss>OI\zT&vZf!KhM-#r_ҥI&Oj1P:;~ĭ[5_pl..b$T)ѡ%vc>ޒ}[ܻtcU֩j_<vՆc-=ڗ-EʎkZ5wrjS, tHf[1~J/p^p[LH*mmOuº!|.Ym.5EYnJ.{M}XƩ*7~p7m:rôy;w^~(q36k|B3\!8Cə3f 33rGf5`ր:s==9WYff\yʣumW]73yy/(~5 3 g,zSR|FS K*~xu○זL-.Y^dU% %m%GB CׇjCֆ6v.5K.^:4TJ_.]_Z6쪲Ue+YR>7ʏ3÷8ѻ'~hq'Q~Ay6[m={Ε%+~-W5d_w|`|ĝɫ|]~ ?BY׷>6b%!R3wg-J||ͤ:;qHVq?cSznS8qyX7Hl{^CuFڑU';gҶə % O[yJ'%J{ֆ heVָ6m)F#N\bÎC.Q޽HaG gbS9A{K,ru5TDŴZ2%+QEE퓔XCOzc{39?gH9~ed6݃lfzc{ ;O݇VEm:U;|fϐ{&ΧȌb HVwCe"K2H̀+ΐ{r"&J67˽JmQ,H,aO>F;v4Atjn`qLǯ*mQٖn[;nzYsp3Yry<Ȩb$9Zh@j$wWi"](JZGFuߥKݽZP rD6Or-O;@3]E MH>Jڐpਵ α/#/>r.`1>vF->vkGE1u3gby~Fd^]).nOs,x]s_un9M}M}5fY|4*CѨI:c<7G7F*n1}_A_+.}~[A+/.Ew/&˓ob}˓o77УhZ}V_ᴚEU:V/ձ:^b#OeElvjngFi{=mWv%J(QB-O֊%:#jk,3b0Ksh1ڬduLYw=ԟ^2%H/2^ŬCZjׯV77J߈\o;.p7,4-=!h-V`]|Cௌ08֫(8:?@'zb+}c̵4\pZ{۬C`'-:  cqtz5Tk +\ ׍܃ Pd*J@)XH^fP`);ý ]> Jxs`]z^S;,8E13nL7k+cq<O߁U`5x<ks`-x/Ke0=~^Bw׻].Kzzށ^@whZ޳GϷo[ ` Fdv`;6 ;hsw;_/`=o^ڜ[c3mL6ӆʹεF<X;.hv%v%vԆŽv4?cOmSԆ=aOmSԆ=aOmSԆ=aOmSԆ=aOmSj{s1v`[;[xwXX 9ʬσuuK kyeSA{wul&w`_ʻh3]랶"KjomV̬^q68uW^xo%jӫ;wn&' W} qr'NGB! sgCG<U:7"t4Cg7t5tzb6b^G6#,[ 9lv ΐow2ąL!n$zwiၐkxQ9<0 wn܃{s܇]o2eFKw(~ܵO\m6Zw]q]ota-X5qkhMi5mִњ6Zlrڶqqȵuv[ɐ YY뮋ߗoU]Q;;*G-Zݐ Yݐ Yݐ qӭnt+[9VNrӭnt+[9VNrӭnt+[9VNrӭnt+[9J! Q`C(0$ZOQ ͼHSĹ-tfx/>^եB6*UWi^y,j̢,j̢,j̢F35Lfj4ShF35Lfj4ShF35Lfj4ShF35Lfj4S1111Qh}w׋>y6ҥ.4dA<%g؟b{ػ-nw[C5t[C5t[C5t[C5t'/ `4#ێՉ+ķp%YqAm٨llX7tS_. DUxb5@N{iSуuHc= Av|[k/[VH{Ijnoڷ[ۭ^d%k/Y{K^d%k/Y{K^d%k/Y{K^d%k/Y{K^Å!Cu7@["oqnQF{{.]\͐Y,2ϝw "L0%”S"L0%”S"L0%”S"L0%”S"L0%”S"L0%”S"L0%”S"L0%”S"LEE_|I'.߮p(b(u`^oi|K-ͷ4ҢjUD&6QMTmjUD&6QMTmjUD&6QMTmjUD&6QMTmj}p(։b(ǭ+*],:RLGV<b,b,b9pu؟7G\ǟWj1qs%5u%ZV#&ޖhM>0{||_%_B\q _,| Cn_qu|߄5O<&܌[Њ[c܆v܁)ēx [),x9yE,"XX:Z[87[͍B4;2*s71>->1:8Ց; 8VX!C^zo0;݈aniZWۗg]#_fVGZ#ՑHku\r;.wp\r;.wp\r;.wp\r.\r.\G<.py#\G<.py#\UkuյZ]uVW]}Oɂ>Y' dA,}Oɂ>Y' dA,}Oɂ>Y' dA_t998}~Ee8s(F97/po{\3pΘIsXez\F2Gqd:sٜ 5ao)aTњ3COTH7> N7;/j|qEոxkpc{Ysao^y{pXh:oǻ*u2ok>9)̓Ȼ5՜sos_<]0_&VZ%ԦqY/\jEWs:p{RAXUAw;Ǜ2ޟE?b{Xek{5}hhrHG4|u:N^^/SY-,?8S :_ Sf":T.j"i2U6W`i| X՘zz?yܘ[g;13<8Mx^(¥v:l,N┹9]qq?}!][.OWi{ -+=bM1vDvrt]./GݐwClDȱ!96$ǺM1ȯgte:J\ȕGr]eXFxqu>Y?'ѧuNݠStTgJ:VL=TLrf3e9S3{ޫʟȟQUWGBUz*P.uiUU:rsyu/!N̕X\j.W5UU*rqyuN ~_P[U*VzU^UWUUj UZZ5UzUBUW{Udԩ"ur=fUiʳYTe:UNSEjiU*G'W\TNTg.QXZ,W-U*BWU)zU*EJ ѩBt*D胜8UWo}}}99V|o{U|>W+wχGxȁG)?lW2k^vAf2LvӨF,tjS;~X.= gcaG={]d"Y^TՌVlnխխߊjVS~鷚VQ ڕJޕ6WѰj:[tU*AҮvU:ZEW-Ѣr+op EW/z7WOz7D "V]X{O3j|yMT]uf^3j.*?V߉&TγqQ„a҇|@ w)sp? ϯN֯zUj@QD;G,NZ#,Pxb5V0;)h;)NkXh i TIU T-Pt'EwR@т5.j:Zg'uwRP"'bn{-|UC;܇R+uZ^Ϲ~ss\o" ,RׯܗUխ/"ѯyk^mP(Sr4. KҀ4UY |Z2`5)d@-PKԒØ7un+>/7jYbI,4REj(EEEvWδjTkWBw׹5Vld;glWb{=Lzb̊1.6Ŧ/REh\r=Kh{ZYg9bPG̯~oXq VWv{`*P=Tr{(J P=nW'5U gs [W55]t\E+?A\LYaQpη]v`uqn>j~uq3KAnn):θN3[ VIg{_I2?=wo|UxP0;CAesCP07t],  Z;Vk~%LP2 @"J)QDY(Q63@eJ_+J[w nA-TIc{b+bjۭymf\+s̵X9X[enUϝ2w)s̕us̍27soq97}:#X+p)pxG\guFO%j1/+6RF$#W;Lb [x[g2-&ˋ,|!K,~ >Kl!WE{\iܕ]iܕ]iܕ]iܕTS%vղ&W>/(2dEV4NMTSmɱlr,+3nV;nԌS369Vg)S68e7d1ech\Dj\k*Y3c0œOV N84>8Y8>Ol->çq>sY=p>>/IŠI/c9V`%:* ^j +k kpVۅ BwN|M<Gx'ޅa䲟D]w>cuZ7{n-~@4/8Šq>gz_) {^.F)y|_ėGE,̗e|{{ո⇘ЂC'q⧸?]^_O^G!"~!UW^{  hPw4I8Tw\ | \˜2g̙/sn9g^&t795o$Vc ֢]x :؄otT8؋}a:DXN,Q't;ڝ)vvc{Ps:gsV>_a^^H`&.E.J{XR7FMO<oS   ;bsS%wKwGDuLE#p0ΈfDg"[xU*o[DU*y~<*)݌[Њ[c܆v܁]g!yyq!>ч8PhWgsu6Wgsu6WgO⤇099Wx 2p $'I2pSORX s7t)ь熖gMķP$\f}Uٻ'V66DnyzXwcjv:G W\ЂqCw\V\V\U.^zb6b^G6#,h)gL䷅\5y<:DmiQ[ZԖR|/uĻ0ghzrU_ZԎEhQ;~vXU萺q_u?'}x?>Vmeyvtȩz9U0vz3]3Ϯg̳k5555˯}_vlFYcKttGBt_dR|-j^'x-:£iUJTɒ*YB=hxk?gt3F?m M) 6ĦbS@l M) V!稐sT97ݱ\+-\o;. aJ:S%TIgI4&UҤJTI*iR%MI4f܌s3znF=7f܌QuXXXXXXXRUF烨MF#؃"FU13| 0ꏩ-*zޢ-*zޥw]*zޥw]*zޥw]*zޥw]*zޥw]*zޥw]*zU SffffffffffF :yL !#LK|pppL\e<ܯ;-CK/WW|/fQXV$jy9Zc-[tXht{㷂4I"[$un-ERHI"[$ui46Ʀ4FchlMi46Ʀ4FC A< <f@3u]wYޥⒺQR7JFI(%unԍQR7JFIZlVjY-6fجbZlVjY-6ŵp]؇ ǟ tEupsMuD3:ɻCT1Ugt9:ߜ>L:`҄uSGgL3;cɺʿN?cp3v'\tg:mB3uԤ)=cJϘ3)=cJst9:vN}~6C ^=utݮ'%]uA'҉t.RK.uTgr=s3jY96+fجѽ3+fXϭ_k!wuy:6Ogӱyb?'ձ:U#XlHc3vlƎرt4<3l6,-rCPJQRZkHcPբWNJUQ)UY<-jR-YYd  $=L6!!Yl@\vwyyg>NR!̢BPo'I$vz;I0a<*y&3 Lg?&ޢxjYT",UD*"JRED"TQ(UD*"JRED"TQ(UD*"}@ỹWPU*T+{}WI(Fj#>v 6GeμR^ W|NU2ݷeҷTUrU,ޓCVT+A Jj%HZ RVT+A Jj%HZ RVT+A Jj%HZ RVT+A Jj%HZ PVT+Jj%@Z PVT+Jj%@Z PVT+Jj%@Z PVT+Jj%HZ PNV~I-zuQz2MYJzr:]]\V2y H-""i"~F]e14"6f\zKov.s֞zsDoψeX.KJYK->UMX$۰b V>+(^،[Zom 2ŲiyylߢSf#jr xwկSJ;׺,:Yn2"7kk/m%SBρ{U9ʈfDOD'>? zEkD,엽nȠn6ޭzI"k饽2Y_N]^p<_,xP:NS:K= `9XVj `Ʀ3c7m`;ԃ .ŀ/|1:g `"y-@k+cՠ6 | =`?(I z xcޘƄ7r9 U"g\"x5p3ןKf O/J]1z˛t@L7ɨo!3߿/|(6M`3m`;ԃ N A4`h Z@ -ς@xpm%O*` X j:P >Al&l[6XsPvh;.*|| _ОIJMmIķr3\q1̯"̯"̯"̯"̯"Dvu122222wy;U1WY\e+e);ݿVwcDbjYj,uw;B^Lv1bjԙY,_<],K &PE"TjuO'K~$c2Yjl2F;'O}W$_oʻ=eLۀ󫏔T4ڻKL'>Rn+Qb2L|l*I|mR'*c ٨\@n@ޙD%ibWw=US>-=þ-|Z8<96eJ$qsOnaID宍Yθ]A ^ 7ݬ tW.8*Le>=*6 %Rt J2U1tW3]ͷA%xGq̴1njj3q̠1ch3q̆qU3S3ԍ&wkzQɘ4^g$VyQ9Y|G?W9QtR|gr|ym fI+O06nls9Rԁi9 E|k7Tδέ}hY9.w},cw+(9B{lsuYQtS/V=2;g\*\yl={Z4m-Ym#-iSxܶe {NgvoݳDJ/={rΰ3F': mǮ^&/֦Ϸz>Xv.vO\:-El ] ,6ybC Q:&ul]u[;et;I{6QpG\*m: R|`٬PϱaQ|>c'~4c0Gz3zOzsmsE<Hb ?N\Lrghӏsƹ6!;}ff3qm͉J?qT vcGۑ|. Al(w!_xvaOb> >5fe>fb> |31(32X31Xa>PcnFaПQ]( aɌD)#O?v?v#h7v|Ehw"F~J Y>@>HfItÈ"g;*Yn%E˨rZGm֩.Ժ&MhB SK_ՏD@ԏűX.#Hu%NP?qXq^)V7su(.P E%&)Zu^ܢ3]-9xX/yxI.PW ",>RUQQDF# =z6J'i'3'93ڵK4M{zH/՗k3fIOo[9~==R{ʵ=<1*3jn[͘;̌#z>ww޻WW3{~}nxJ7yK{_}We7oB_~ސ++UU@Z}ww>ĻɻYݦZ^Kyz'{۽)}}%KǔL(Vr^y%\-\2Y?dJ}\U%Wg\WR]2f%^O{Woo~=}>_߇%%e}}+}+>}Oկ,5JKS:}N7ϕQ]*MzF,=g}lgB=~^[({3샲%˖-wV,,ֳ,Za힏ʬze=ee͞e鲜ygCs@Ʋ-?g_?O_P/6%aO5oht`)HO 1o1N?7Nnj33 8˿۟410.(crW&.0VԳ^v&g_݌ss_l[{mGN?Vs/=f{(m6dѶ~gɡԇDmCTܼlCa Fm37j ߈#W,X0|_Nޢu/=8Ϋ3Y8=CW{*gb_Ψ;k zp爳?sDgj w0p /g"{wv< ?>:K',ԇdYRñdSpcm}-{[_lų{W qG+f8lql;{q> _11g`؂3]^9,;IJ n[aY;sЗNі#-U^SeNσ]G',aZBYZX`6`  |Ӏv= $eR 2 l r r{nPAW\/gJ*+ r|o ٠37  @; :>_y . _Hy|М$Ujp-(E J/p׼ x<_߀?|/Wyx~p?+_x>Ā`<)mY`V/L|a s/|s?/R>{dRy<f'Si0FX+ae#lGe:qqqqqqIؘIؘI_$ ʸϬb r">U'nPff[V luz8 8 8 8 8 8 8 ka0vaWvaW]]qn)?wL/)W|a Yq%kg~"~ ~5Ki1$aOd`O3s@A2ݫɤ y_cJ٠Mwʟi?3]PI xW}eo|5wڍς,g? YςbZЂ<-xhC ZЂX ,8`V"LXp[-|_ |ǭUF!bD"F!bD"F!bJXe`%Ԓ?jM$M$M2FakیzQo3m#qr8'7-(mjjjjj\(05ZZ{-#[Qb3JlF1TCu(.b(5#ZbeAU1bq-X\K,e4cf $QNQ]Ψ.gTkPN3iF9ZԓdkPO 4ꉡN J_~~~~~JIJIJIJIJIJIl5JIJIJIJIJIJIJI[حDV"v+<ϳ<ϳ} <<kOE]7('A7O"<<888888A)ԙB)ԙB)ԙB)ԙB)ԙB)ԙB)xS7xS@)ԙB)ԙB)xE)GxGixF)KTB)TB)F)_B)xF)kԜB)ԜB)W{E_EPu UPu UPu UDVz+QzDTQ7p3 72 / 2/2/#2 ̩Ө?0&0 6La 0!0!0!Ũ8GiFFiԚf8K4K4WΕse6WfseI,ɕQsE6WW>DK6Zђld%-hFK6Z0W*\e saFKaFKa&C9-R-R-R-R-R-R-R-q I&j)6h9^셷vN1)F;hFna[햾lVΆ2e t6/\le/}F_6їle/}+B+B+B+B+B+B+D͞fOP' j5{=Z`B LhA!B!BaB!NOP'`H Q' uz=F!F!B!hE-b=Aݞ@!hZ Z h]A!قmB!B!B!C9C9fOP' j,a S88[`p I=F2Ty<f'Si0__xae< 78080:YG4 2 l r X<υsa\X<WJ\ +ap%$*_S!\,ITRYfelvP,9;@ 4o:\`p u0WJb#~38876:\v~?_,po} 83ְ\?+~sXi.p6w6w6w6Lu0&:L~&υsap%qx6, +2ԻЯw1ܼ&.ir&.ir&.[ڨ[=#aT#jQ0XaU5Uհz$A=IP$5k)ì G&>ic&>ic&>ic&TÄjP> :x3 j'NSiq)M\JS$ Ģ4ު&T5q'5Y x4FbK T?FTMIě4&MI+hW&ftj2Jsqx2-MU >Ԁu|փ(6M`3m`;1v]| `gxWaxWaxWaxWaxWac':扎yy2weѱAt :v|gwnx om7톷yxyx[=xoxo;mIRg]!2^ w0 0 0 0 0 0 w8_y NG<9μ-|w0= ųW7F_}W}W}W} }mC_4ˣՁ}0 ߨP06 c06 c06 c06 c06 cpjT0{a^zXZKs4Ks4C]a k7:ɬVzXief{nmY+s2+s}3C31Ufx^^[Ugw}202#302#30҆6a #ad3 #z96L ݪDTYoi'_ėĿ{}C\{-,Ν˘{{#JU[=η\n` [CU*Pyz< Tž;Y;jGYYԎp5Wp5W 3=i u/E*tbꕯǁɄ<8y'` /WkzL7om{ #ki^3 ;:*U59CXyxͼEUg}Ovb]^^qS9\uW#a] bz>u1tK+ư:: ͒ybZelƍ/aռ/aZ,[۷Z$ L/bR,[ekXr)-Ųyݴ-T5-X7XEX}`K\O0E^!؂-XЂκXPwy^}愳frc V$Vs|v8oϦQ)?̡|p|^'9X0 K7w3W;iqǂ4{dbM12&Q"5q3&Q#gxY5qcE+X 7ZA9L<8Vű* VŰ KbX҆%mX҆%1,aI{caf^aebzq˸繖繖繖{v/e<6/eعLo gc ۚj6~z?M؄M؄M؄Vcg>ZMmlm&lm&wTTg)c? {3E]\E=WQ8–.i g]Ӆ=].av -mil¶.؜.¾.Fg$avfggD걻݅]؝F Ky|#_ȗ9e|#_ȗ9e|#_ȗe|!_fȗe|!_fȗe|!_zɗ^Mɗ6&_K|i/mMɗ6&_~T;ɫM&jyļ-GnInInInIn-X) Zy5Gn͑[s5Gn͑[s5Gn͑[s&Vj[mrMnɭ6&Vj[mrNrNrN*Wj_mM~͐_ȯ6չ xyv'y&ȳ9M͐gmMɳ9l']EZHki-"E"ZDZHk'VߟrsD\i%Vi%Vi%Vi%Vi%Vi%V2su-u^_cc=>))E"ZZDKhi--E"ZJ$ZJ$ZJ$ZJ$ZJ$ZJ$ZJ$:J$:J8"J,h("J$JE4DCI4DCI$ %Q" J$ J$ JDʵPr-ʵQrmk\(F6ʵQ8r"E(CrWmB(厦&;rɕ(GS ]A6ʵQrmk\(F6ʵQrm.(p׍wH1>n\4w迃c fꃓgv!wΠ\(F$e)\rYe)\rYe)\Dr"Ereʕ)W\reʕ)W\reʕ)W\roaptPOw#n^zYe^zYe^zYe^zeꕩW^zeꕩW^zeꕩWK2!hwq$+SL2R<^zeꕩ^zeꕩW^zeꕩW^zARL2+SLbY*f RguQguQguQg.uRg.uRgQ'GurQ'GurQ'GurɩUVȫP^+ߔp:69#39#39#39#39#39#39#39#39#>׈xΈtH59#39#39#3939&gTsF5gTsF5gTsF5UմVUӪjZ5h^4MEyd^4MEyd^4MF>gsF>gsF>gsF>gsF>gsF>g^͋0Fw#a;|0Fw#_35#_35#_3ɵv}AN?ʣ5Nَ";̝INd4;MNd4;MNd4;Md%;(AJvPd%;(AJvPdO˿p&󨉺Qhoͥ&JwP#5Su:Ќpn9sَ?nJB\~5ר\Wϵ̰$4oM[S(:EGhQt4F(:Eѱ@t, Dѱ@tE|1_tsE\ёYёYёYёYёYё ݇ʍTnr#HF*7RʍTnr#rY*grY*grY*gU*K,TRy>TR6KF6R6KR6K,UH,URYjffԜK,5fYjff~KF5Rzԫ^=WOzSzԫ^}pYRp,Rp,Rpl0sT\?:LC3Zp=n ` w 혍{p/!J~u|?b#13 L(fB1P̄b&|&7;fWC(vB <ȣtb) M &71[lm7oHߐ!}If$xY<,)}Jrly<;|3}ٙ ;gL`H!`fap{pO0:<޿x+r8QCrDpJ68-Ye>! lȲ`g<5wHopᐿ !}C~țC .Ie ``W5uku}ɺ`͇n< ɺdd Y7<< %&ddTn2JM%&A%&6ׅ7kuɺddVx{xGvn2$&So-83pm?J^DXw'4QN\'hwG G$;$_SogtmItN0uqO?8JFo "buz!(;?e].DryG gcpDρN{ YsQS7^H?<:{C?{MM<^駦|qC::g`^}3&dڄKG&/̵sm}W$sw}g{W$sg~oKr';yǎ7&0;9y*y4a͓<5\qI^8̴h}ntmgyοs&̖.[s\7o`ߟ? f@90ym5gM99,5opKK+ǼDK8 " pFbxE 6f[sqO0; o04pHcjCp<g}98>c%g3[əVrf+\r.k9Zq8}Awz U/y Z:X"xo--^w6@" pǰQ*5 clͰ9 m->zl>swvE]v_^2*k8_ p0o6HHX|b#=1Iܗ: q-,c=g< p!&"L5q){RSq-44܈Њq cnL܆qfN܅цvk6s0<, E SOxaݩqTwN8[/,Lٸ83u%Kq.h• Wz܀qZq3ntp;,܉p7Ў{ua~<<<E.{ c> I| DqPg };K˭0^Crhz#ǣ f^I?<]ݰ;t˞~` S ? 8)O)8B_;A)qwOqgz_JO2=y:,w.܍60=^܇9cy^1,<^<8O"r</Lw{ kKq9اk}kxoMmqwĝ 6=-%W$>6F=_. ݱG\>^~|9V5OxUϽsŸHa=V{ zAEwݮ wf^ ^I+2;3#qlQ`Sl-`e̵12Z\lm'S=vgYE2"C -2_"v 2~mRܝ9TN?x 8;^9zQ?2GFȘSp9Όܙ~s7MƜɘ3?#>ӣ1pΜ<]x'C92;Ő2z}q߰`{>@all:b7]#7CԥvwV}gEYwV}gEYwV}g%Q$1~S} 3p&O q&l_p^Jp>.0 JUu|]z.=W\+sEzH"=W\+sEzH"=W\+sEzH"=W\+sEzH"=W\+sEzH"=Nlj8'DzHq"=Nlj8'DzHq"=Nlj8'DzHq"=NljRsxO՝U"d~_W*~_W*~_W*Jݴ޺f`%W:O E,rR#5>R#5>R㣡.~rhoxV\Q+{EmW^Q+={튺]Q+y|8pv4}i;}^d|\zD\K'uFjt.FzN ԠH ԛH/3{A5 ދa p|Jx(kq3ﰟmUUBQ/]+{,teį<Qf q+>b(rx /Ƒɛ|ɍѰF>FH:; {;U͎6CQ0<1~߅ sp%h o-pl yt`1N,SXgEr迠*^KxkPk`b$DrUNIT9*'Q$DrUN3/̋:μ3/̋:μ3/̋:μ3/֭ku}+^xo⭸6t`N:4mtgL 뮊* 4?ϰ?[/vy:鲊U8Ќ muZEVQUiuZEV14ơ1q ^En5[V3n5[V3KkjU25tL QCjhU U5.TC j5tN ]SCש5VЊZQC+jhE 5k$ TTЧj@Эtj@Эtj@Эt Ԁjy"W_+~Eޯy"W_ r2|\@._'˻n;muy|-ϓ @>}9w@_Z&/ӗ9GNU9}PN_ u /5߿"W)k*ߔ+rr%&''wzU$ R nZ%8~ȮqmȞ[yIvx;E鄇LzwmߝY m9ꝻG 5j6<,Љx ](biOAG>biGp#V`%Jq߆'ŵ}#Jϡk8Qs~WSVJJ[)u+5x&ls;q.D\IWҹt.)K2r\&\p5@EN=a~<7qj\׬5qj\׬5qj\׬jnjnjnmu <(:O E,rj/w!7xܭxEOѬhNoXNݱs_WoHa/uij8'ū'px>.>q.K_#Hr|'hCf܋0#->?JPa"sKs](b+=WBǫ|y\:r\ZKڷ7?aq5`Sl[`Klu$>6F=  > /b}ϯ[;Cu<>*^=JTϫI#I}}}^{"N:[Q[r+UnʭTz-݊_i^d? Co68ܿn{NFMTKB;SUٝz%zk{5ނu&kzt{=gCu:T~wtNtNtNPP7wLRC:TC\ usN.Ʌ:P'B\ urZաn.TC:Tw&(B(B(>PP^ërxU ߡ,/k===m#_Ne9r d6$t3[Y$s!ԿQ2_sp+ _*g9~@KCe䄌Q 3w<^.%^ p=p' ^qzUU׫>VnOէJx"Z75 {9[qH:(P8>Ui-7q}lÑp}h7Ǎqkѵ\hO7 cpO|){a_90B}ft2c Z+׊"|h~I4$_ͯ$j{*j2gǽs0sE̋//;:ȅ Y{`.K:N.K:N.K:,]VI/w˝r'I/w˝r'I/wҫ+ԕu:ueN]YSW֩+ԕu:ueս^zu/^KWҫ{ս^zu/:S7Щͳ*ߩw*{ީJWU$[ֽp,+&w;Lp}׌5z͸!}=WVyռjj5o͛y7[yJ۲l_d/2x/U T*R^Kx/U R^j)/ZK-奖RKyR^j)/Uॺx.^⥺x.^⥺xVvE]v_^2*k8_ p0o6Cp`,#=)zE^y"W^+zE^)׫z5^xWjkh::LC3Zp=n `:fVmw`]m UEUEUEUEU5PMf&3Td+/K򒭼d+/K򒭼d+/K򒭼dkT\?:\xY5 f,^kxY5 fkv]fkv]f,E^ky"Y5f,E^kP9g3>=ra?y0<WƋTEC7q~[ħ*nyVޱ}K?}*q30#!6r~yglӟ簋]vg g9NI|84t:N'IOj]j>'rڡ[uixݾ9uxڡ޳]7ڡ68e ޿9Cy<!mn6sT㝒{-uuu2WgF16 [͘7cfߌޫa{蘡c:fE];*^wŧV |ZO+i>t3t3_+_w4M}?p ^Wy|u 3XZ" =Q\1,Ȫ$4$ucI 0)1Sp_RIlڞԶ0|sB {2~>7Y-q+kWyZŹGedddv:6 .=Z%rꆓC;?Z /8^("ӭVteGeGeյs.K&q|bOl8φl8φl8φbClx(qlq8%XqXqXqXqXqdFQfld½L 2^&˄{p/e½L ʗƆ/e×KlRr|P\(_./&.J,H\Kp)..+ЊekaO`&]`&]`&]`&]`&]`&]`|c10cfÌy13a<̘0c]TFȖr#[ndW1U̮bv]*fW1U̮bv]*fW1U̮bv]*fW1S/ceL12.ŘSc@OkR艻Ơr *Ǡr *Ǡr *Ǡr *Ǡr *Ǡr *Ǡr A2^ˠzT/eP2Bt1.U:>O⓺dpNs:yN'ķq!*'lHd>gWzwd:.\DžV w\~s fqE 8ܨ[u/p.5kGVd=W/~Iۤm5s{H7pp<:8;G2n+<{g[ܵhdZbsWyХmrQZO?F|_7>|#ÓN W_t=~~G OQ*c5"#x!(ư I1&1?b}x_OoYGmQufYGmQufYGmQututututu`h5[3[-kf5Śf)kfʚifڭvkݚifڭvkݚifڭO& +<1H&vG=!hx^=ú7|,k/^zM8oƁ8pxb~[V oxމ#qޅq ލx88ĉ>GpN?N8N'I?B| gY|ǿ`󳜏 m\"\Kp).1nD: ?O3MVtᗸ  A/o~w8b/;8B?l6M?l6M?l6M?ܢn/ ?O3MVtᗸ-wWFzq'=b9k ` ~!Pb~}:sܮ?sܮ?sܮ?y 6:zހ7b}آwпEҿ6Mnӿ׿6Mҿ-w=W[6;AwпXߎ-=oOSºa"dˠ^%{N't } Ӥi^1Vz>;<5xGbk[:<"&ތnos܎OaOgºT"1?xRCJ/H)OOiـ؄HOW%_`O셽CIIIxq 80~)gJyi=/s֥onx6Z|\5n/A^ ìm7k~V i5a%*G0kW5wM?5&چNs+ʆE%|{hN{Igg2 [,^93]k5Qךkwy6wKXc®1aטkL5g?<ױxU=jDXG'x+wOaO6;n;nK >Ca%o@X̻11Q֘(kLqb܄7!Mqb܄7!_n|_T#c(c3*؂?DY3և5ϝ TX3w&~o?hA?m: ]TkM&Zf քYx.J^Mv ? wa<빧Q3a S88'Y|~S4Rg/M6r{Nv|X"\q dL1L߸jc23m1yL]='66sfv^vv9zԍ߄aT._{㉏y"/W劼\+rE^y"/WXrQ(%$䃒|PJAI>(2umI`````8Ws8Ws8Ws8Ws8Ws8W39S39S̗|)ϕjF)?gĐ7KyKyJyiG,tT̺YWJ+/ȋ-VɌ-}an ojpsXF/BEl+[El+[El+[El+[El+[El+[El+[Wů` q-aٲZѩ>:GTS}tNѩ>:GB}\aOӦi~xL7f0 t3n`L|'}y|'}y|'}%Du8 g,y 0&ÄzPaB=L 0&S]_smulq% ]kz5wwd5f5¬Fѵҵҟ;NSԟ;NSԟ;NS|Y;O>O>O>OX[7kfmݬunںY[kam=zX[kam=ԯ Q}ExV7F̠V3 j5Z͠V3 j5Z͠V3 j5Z_¾,[̲,[̲,[̲,[̲,[̲,[̲K7Dfs;rXflkk{;N 84[4;;Y4kdq9N3i3L4Sdj'f rAN3i9 3 r; '/\BOЗ1Dl',ܖT.{IЍN݅>܍{`={ov1}vٓ|s<5xsz1ֆ׌y~d9flu{vx iT BNo>}Fx =,ܞ=?ބfƒqaxǏ;NKa#ns=Ye{$lh,{>oo_?oFd_doD+jeYveYvlgFd77"QioDvgeYe]hݱ7"ڳ;h}ވK7"+Ed;{#JILX]&ql8G7ޱ⯟縖whiDi>HBICw/_r<-Xp>.#RHB_s)̿6_*\kv mOOG1eWgF id|W3 KdIC,ʒ,Af4Ȍ 3|{ߞ;tj_Q;/O3,>__ u_ u8 g,y6&va;lbM찉6&vT]_snulq% ]kz ( ( ( ( ( ( ( ( ( ( ( ( (;B=b9k `ve.}.gr!*,XPͰglsтoa1c`Wm>U` q-òaaaaaa^k#{md쵑6D}M,6&bXlmbM,6&b;Xl`,vb,vypj}5x1b#X_L$SThf츙7fv̎q3;nf츙7fvc9vc9vc9vc9v츰coyo!˚y5gYs5gw"MI33if,β,qk/bYeYMg(y|`nq!Ŀ0/x $V&o/ g0#/$o KYy&95̛y3`̼w0 30 30 30&fޔ>?xc+C#CodM w0􎤵3,=YzKobM,/Oxݨqkq?.Lڢacm1?)zߧQ31+{&:R{cu/4&vRoxq  !8P @A(H@$! tHrI`sIݡ+M%DIJSuÀt,4KͩϻoH/_%?rB,-tK Bw?8sp.Z-,;b_8Yj_%nZy,3ɣYh<%f#NMxݭ]2i9$8uWAs+ſR+ſR+ſR`)ʁI3)a)(`~pK`)`Qt,5KG)/RԴDjZ"5-HMKvg2'5夦ԔrRӐ4$5 HM)3x-=uKOݩg< *NNMN!t_2j{b/}0 /δޙ;zgZL&y3A8PkE2+Hfɬ $dV YA2+HfYS?tΚtIEۋqa\J:)#iҜ&}5^ ɭ)#.Lq7=~o݆qFG /#KHzI yUҫf :ccu$Z o/cx|+ɰC24pцÅbFB,4RbSJO|vQXŰTH)2#E6JRd昵)"EVȊY"+RdEH)"EVǒXKcIz,I%qRz'IqRj' qBj' qBj'Ɖ7D38-Ooa1x񽔑TIuTIuQ,^ kW|2l6KP%I jR&%I jR&%I jRCԸ5.AKPӸ4.=KOӸTRYZ*KKei,-TRYZ -m6HK iiAZ -mRIZ*IK%i$-TJRIZ*I#ei,4RFHY)K#ei,i%Q4FQ(JEI(i%Q4RF =f1CzG(;e|`6^a6^a6^a6^a6^a6^al|O 6>'`l|O 6>QcS}:,yyyyyyyyyyyyyyyy(eܣ/󪈓xO2If<Ɍ'$3dx~Kwb%\T -1-1뭰 -0-1-%>]vKq{!Ŀ\&KPdeF[dXlljjjjjYjXjYjiii(#-32#-2 LDu9n 0}F  -",",QV8 cVX3Q&Xfe8:w6/XwfM2I7 nM2IF7ʁsW]1/Wסv^o<Օ8| ]_ }Ͽ޴c6b>2Z&Y$kfY8[g'8;7&~/ehMI_6&}٤/&I^6&hZst.eSl Mܲ[4q&n-&mlMԲIZ6A˦g٤5!&dل,%dBuٺxގ#G( G{>#qx?p>!|$G1SqOP!Ǹ2?s7f܂[х_6܎;+tt^:z𰮾IWߤo7 SuUaj/ݿ=6xtMzENgY9}VNgeYy"V)YtJR7ɏyqJ*rYE.emնj+[meaab啭MW*y,ó|xY><ˇg,ó|xY><ˇg,>\>\>\>\>\>\>\>\>\S\wJoR8*I8'⤵+=?+?+soNM*%g87qTb誊誊誊誊誊誊誊誊誊誊誊誊誊誊誊誊誊誊誊jUa[ոKЎkqԿ?gTQ3*~FϨ?gTQ3*~FϨ?gTQ3*~FϨ?ⷩm*~ߦkUVUoU[UV_R%_R%HoU[UV?****~FϨ/ߪgO.j꠰-u08,>lJf+aJf%=>$i.Ԍ(r*WAEUQA]Q`Y$®n Tn݋r-1NH Fz&L4I9M2zU+L:<} ,C0D sPYJYJE (a%좄]vQ.JE (a%좄]vQ.JE Q%Q%Q%Q%Q%Q%Q%Q%Q%S8%R¬m۸vQ,5S85S85 Q5Q5좆qj{{Ʃa BsˆYT1D۫>WtCuk;(œniHjW]I~{j27kz ?kqij^q8;m9W2]|FhDqa{]a#LlSpލĐ1g^tq:g0z%Q EX}*eqs8Gh׏I۲Ǻ<=fMi9{&8/'{>.%n H^?ŇGvMzOf醬 xzg:d'v~2a1g0-.C6.}F7! ufP ! _7ĺ! O'tÐn n anءvi0@7ĺO7 :WP:_U%/|򡪇zU}oVjfެڡjvjOjvځjvڱjǪ=Ӫ=ӪvځjǪ=ӪvӪݧ;TWcՎUW{U{HT{HcՎU;VXc~BP'T{Hc~BPX{U_CެҡJ*tҡJ*JOJ*=ұJ?ұJ*t9{&nOҫ6 T=PUTNޜNVO35qT&mW抴S:uT:UlFfu1_<ֻ}WxR< TpnGvT G=F>W=oKgw]h_3+d'o^+JR+JҫqWc+qWF:觃Bz+tzCFQXY%c&[']Na{nV'=~ ҧ2MkPEҚZ[j^rty+J2:5CpQ*v~1%Oi*\Ej77< gkkqy.w \^9ÙdJټR6+eJټR~=+eJ2OtݯKyyc'\ϥ76>:Zr-yN~ZM~om=MwHR4nK9LKxN?>jKl %٬_ޗU%b X+VUbx({} s8GB=Myޱw\:p2NI7fOuy^3oJs\?/}en>~y\?G5oB㷸cn Z g~~VeC.F#x~28cΛx[-mKyR޶47c|aRKϴϳZYVxV} hgsjEf4k5 zM^@i4p5 \F܈I`~1 `(&Il(ʦ'MeS@P6MeSrS@P֧P6,Y%Y%Ym/K咿,$]z.|^K򇒿GwI.%8z%2=LwI.?]4]0!$M%$~W/zO+{%~/݌͈_$qk")Z_M?#3B?#3B?#~wF8۵KwI.J]Kw2[Fc46Fcc= :{Ξ]=K.E{2J%ٻhq-.e8Fc8FJP4&Mq%{6m9e^e^eT/KT/KT/K2-wr$/K/KR,,o7H$x;hCz?)e齰[v|wH'uYZu;r\鼜G4?B#4?B#4?Bc~/et?FC2@tAtߑ9\ЍqBY]7$S)ݡc*8*8;TpLvڄ*PY՘UYء;T`VfU`+?UptގYG\v:>t{rUac9vc9S:gw)}}a9t;Css>sܾ|3GuQgu3_8jQˎS8{ GGyܑgyƑguQuQgdݽ{q>d}nw}Ĥi?،=ɺgw!n}_a~4M8Y!^a_ i{Mf{lk?~laι!DNc{c^{cW_ndeoEx.;.R'x?.A\+p%‡q>n:nI&nI&nI&&n"&n"&n2{W:p2N8 8o&7,sp.%cop!ގ\w]x7.{^2|,p+ny|ktޔ8oJ7%ΛMyS|#ƪ_QE9uX (>7sd͕p#k|$# HG?$# HG?"D#G?$# HG?$콨}k_q!847IxLRϮ/w3 bxMk^$&5 IxMkݟx&7 IMo"~d'>)lr.l؂0_=d$'? IO"n$ӅwU3{%<(A JLyS)wޔ;_z3p.2JU{mC/x^}*p ^u׺knx _4 K_}?-|0iտ r?LL wJOU/^ʤ}.`g&<3Iäߙ4'Є&{Ѹ-`&4ًFib+rׯL+5 oMxk[kE.v]"nqE.v]bns.v1]"n7vSnMq)n7IM"nqD$&7IM"ns$&17IMbns$&Qw٪;p'=X^ W?¿aV>AНa9̙Üa"qD&08La"qDfLq)3a80S&019Labs&019LavIA"ss9HA"sD$ 8HAbs{D#S#18G98G9bsnıq(Y]O0zN?ǘSccLq["1Kg xސPF~ 6Tl* G8Xx1>/.Lg;oE|#(:)ֵ3«mh@.v ]mh@yv󴝧pa%юtk[äSSrMmlmmmmmYF֦idmY ǽX/Ŧ>kϚ׬5kz]lz]lz]lz͚XƬ1k:̚&4:'u8'dSq^qހ7M8oY8\qKx ފBĻn\`9 wk]#q׈F5wk]#q׈F5wkfԌS3zjFOmS TB=DO%z*SIx͇qPo\0}up0iZp1҃ {^dICä>\#׈w%z3ԛ3zsFon՛[9G?gg?6dӴ+^}slp α968M GHhcPą".q E\(BPD/ _m^nI3 $4VnqD ~ojih)׈#VzJ2՟N'_v5 ş4-dYSK`j L-%0ZSK`j L-eeeeeeeeee%0ZSK`j L-%0ZSK`j L-%0Z&iS˴e2mj6LZM-Ӧ nr'9T*SE`L"0UT*SE`L"0UT*SE`I4a0UL*&L Sń?>'Y=MI"9=& ĄIb$1aLI"0I&$&$$D`~sz&L&$$?g6 iSFSD`LM)"0E"SD`L)"0EY=GӦiSĴ)b1mj05L&L  C`bL ~bg>φ $} IH@~BOH I?!IH?tZ/|\ IH@=xρ/==d$d${ H@}"slwn܃.ſ{>~#V`%ÏюO />Ԛ jfZ3A`?*L jf2_} suP[7bVXKq. xNԚ)j;S۹\Q/ag7#q^q jp^ Ϋy5p2N8 :𛿄6x~ ^t ].L,eA( BYʂP ,eA( BYPEYPEYPEYPEYPEYʂXIJ ,eA, bY˂XIJ ,eA( BYʂP ,(ɂ,(ɂ,(ɂ,(ɂ,(ɂ,(ɂ,Y-n頃dA( BYʂP ,eA( BYʂPIJ ,eA, bY˂XdAIdAIdAIdAIdAIdAIdA" YȂD$ ,HdAI$ ,(ɂD$ ,Xu( BYʂP %YP,eA( BY˂XdAI$ ,eA, J$ J$ BYʂҞ,(ʂP( BYʂP ,eA, bY˂PdAIdA% ,HdA" YʂP$ %Y˂P$ BYʂP ,HdA" YȂP( J{ ,eA( BYʂPdAIdAI$$ vɂP ܓ,eA( bY˂P$UWdI3¾>9geɜ w]x7.xދ2\?O\&2õ Zq=>ސ!vF܄Oa)>^hK͋'d#S@G/OI)li$3ޜy%Ͼ)t"3YTtvэ R|͸En=7`q1]Ck(w TP@3ʁ:g׬kVwI8}g<fT6PG$?4nMGgzg E?Q՟N֟sq/kЄkt]Fw3Н tbN׉N ;5ב t4tҘkJ'uXi9:UVӪsZuNi9:5|Lr(׋r(׋r(\r} sV>s6.vxލKp)ރ} 3eA o| _WU5CnVY*[eunխop]`9{/ϬtюO 4):3wa /(cXؐ!mf63D fh3C!mfMͮ1msL[꾝6ݓ[azG>[6=P]'XV!:=P8?r-iS]7 x}'6i، z~~b~yw=zm f]|s؉01]5Ҵ7¾ Cp^p8xϊ<'dSqZ i8~sZwH;mD7|?df&bE"+>>Eo("7PRio5ط[ (A)}/9_«\>oa1m*,Rb{:#o냱붣` M\т/+|8 qHs\G (ǴM1n~ܷ[wpN܅qo)npWp<-6P~_AWP~_AWP~_AᏧS ?A'(n 7MPKH1#Q(P?@(3L)0W3L)0ÿK)Q?JG)(RQ?JG)iG#`Qu_GQuOP ?A'(h1Lŧ4TIśTIśTIśTIśTIśTIŗRT|)_JŗRT|)_JŗRTIŗST|9_NŗST|9_NŗSTIśTIśTIśTIśTIśTMTMTMTMŷ0BG#T|P*>BGm*ޤm*ަm*UT|_EWQUT|_EWQ6oS6oS6oS6oS6oS6SzZOQ)jZ֫jJރJ+ *J+ *J+ *WVITITITITITITz9^NSTz9^NSTzJP*=BG#TzJP*=BGtJtJtJtJSTzJP*=@TzJP*=o2JG(ңTzJRQ*=JG(ңTzJOP *=A'Ty*OWy*OP jOPx5>OP j6j6jjڦ[߅lR:BUGUmS6U)j:BQMQMQuEmR6EmR&EmS6EmSԭXSt55mR&5mRt95mRӶR_?mXwR,C5cj>GXUX-Y|yq%dһ_~0ޣ8uǹ,1"|l;㾳rs>|n_O]˻S.ha 2Q\)@'´´´´´´´´´´"l178Bi!δgZ3-ęL q8Bi!.1M|";c cE-֡`=6`#llB=b،-؊mhv4b ; Mhn$^}2[9Rk8Vl ؎Fnw˻珢/K$;U*iU_6'| GN &k}IL "(Nj9x Oc. _BlF*Jjf*JjfB!jMG [ ؎F,Ky?0(~I$z*Wp : A|8CW~N88 q6 pnCwd|= v܉p71 LdLTLt>Y(l1OiE1c6/)x/%K2Tc9VC|X%u#lo=՛pO(c곲cO`&c bt@!fYҔWJS^i+My)4啦ҔWJS^i뢏s>X+"xx "x]˱5#*|:yYO66alv4b>Ea'v 'S_KQ|)/E(ŗR_KQ|)/3׹:T\ڵ_qQ}4,uIc]XlE_\rv%$q6S03ť,3xzc| z^[ew\[w.9ז<Ͻsk<Ϸ}}y5omQm1lv4b>EwMsȔǘ|9Qq83Yt)kl_|ϵSos˸\:4|o-q~:kκK1LC= U7ccxm &a2a:X? O> Eu`]4XQR^덗ؾul|MM[X;C5gl+ccvx= ^OF aܗcw_%Sk=t–߉p7>px1`By|rL>|_2d/!!kX:|؀ a3`+Xs3Xs3Xs3Xs3Xs3Xo3Xo3Xo3Xo3Xo3Xo3v#!{ n:ǙT^CPy9T^CPy9T^CPywgj\胁99/FŨb_Q1/FŨEeQYT^&IeRyT^&KRyT^.KRyT^.K __xī`5Vj ை ]PX!_&_pC|^WX#x%؀|=P6c b|Va۝V1,׈Hs`9ߋ/q~I$2)eLCi2 Q!4D(eLCi1eZLSŔi1eZLSŔi1eZL(ʴ2-LK(ʴ2-LK(ʴ2 Q!4D(eLCi2 Q!Aё:S:S:S:S: RA4H uNi: RA4HS: QujQujQi%uZIVRi%uZIVRujQujQujQujQujQI*aVTgهCu:%ُXVa}ξTg_ooB [ ؎Fُqُڦ0@i 4Y+t BgY+t =))W؏y8~YL L NbL SC SC!dj15)֘i(D4o1=XLӃ`1=XL!C1CbzdzrrrKei"4b&BL!ӄ4ao]h|c2QXL;4}8"-& "dQdb,BL!& b,,&J"tb1]0]0].,E"Tc(c(c(c(c(c(caaaaacccccccccccccccccccccccccccccc(c(c(c(c(c(c(c(c3M&L~ ?ӄi4g3M&L~ ?ӄi4g3M&L~ ?ӄi4g3M&L~ ?ӄi"i4gr!z.B_\ߣ\? A+ W#z܀qf܂[QW`5c@%BDoa1ކ*,;x}Qc62/ r 3:K\]s[tŹ¥Uj;Gk.]_yuaVNW1P UO$49XI7(>,ҍWcP^O*꘡夞Q_v9jWWW S{1:~ll[zqqa>ƅƅj_qz137ƫ:lLV/30fˍ\uQj<5xx]Xl^m,5kFXmV7kOfc:flSo6-F܈MFzq@Hi>Ts97ov߬wU}:}~u{{:a<|QORR'fhyVd.1B}7"#nψg$Խ'N޻_ԟa]]q~]]]v Ƽ9?xޝkM޽IoґûNoڛv s'}n_(_'_#s|89 |;}~$_/_/T::4'>/kp}o/K88B:xý9:01pxUPY!gEB0g߶Le0 a}`5 n~W#NQ(H:5rӶ7vu7@>4/5DKU[98Mmn~Ss4x ] =Nwem#C|a{}j.H±w=" @gtm܉a\ l1` ĵ<܋0˓NtF1Ë+0Xwkmrڶq5݃}۪sF=9ٞbQڿ uAZo~>:g,/4Ӷwb7f0邇Nm;i`9}`6s)xn5;0rQ 7Y'WS+e9Eٳ0nu6r}"ꊼ#cn/xӝmw`9ɂ~SP顂E֏1nSQڸmE]F+;; ^?;4;.^-S3 .i p5N Npzq:p+r:~mDq{z/.=۸EcЅӇ&tqg/[OGwh~N]?~BN'Nлg/i;]6jm矛p/NińőU*:MADDdEE ADDDDD iꦻnDacl̗e6Ff#fce,,F_Dl߹I23y˭[n{c%fʥs&eF[j VִS3i"Qi+29 N+s6Yv\e-.+:Pgd} p.!v}{=a|h?.#0MSnkL٬mesdxt81LQZ6_zHΰf/<ӚR9x> XB~Ujl1gHQ"X -5ÌR`X.~*g,V`Ak$^ r#w%mm ͭRH.w06f4@Set,K<`PH3?f yP<.]?e-E4Gۀip\Z(NI[ETyZOhh)UJҎ<"+Wͳ8D*#jِ|ӼMEo|< {,{op[{@^覽Հo]ocv=&/v'{[E۽4]5-ڛ y;Ы-./ E֝ J{"X VxVyk'#~{VԮGޱ=l#='?^c/)t{^⽬y^C{^S4+o֐r}ɾjk<|lTV9%fo)ɇGAVv {[Ik84qpđ'KrAG2aG>ਣHNO)ړe%=]Ur8J8*UJN{&"8hPs-UG3ଣ`RԞ0@"ۇ9zf mcpqL)m/Ïl@vP*KmqJN88 l $Spz%*UU%_8903PH;&Y^kKWjuEKgq 1XX Xlv, tm@14:Jsl06c6 l7ۊfS=>P㸸%leJKQp9PƥCvE0wb [a"\|;<hl7تvNНO@ ls>C`= Y $v6r' trc:g|\'L \dwf&M6y˝P9v(ɝG+CJ9F6w8;ǜM眭ra609t^v+N{nuy <``3x#  ;;Up$spys<G΋$9L;$`>9g8o 89l}!H/q.Kqc=9U_(s#Xt87z`Rz3 e;oL@#|>`/ F?Wr 87x.mS|G#7il_9=`Z,/Fo=}E~ haAAɟ C{$Ò"ٖ,O^&ǽd}lE"VqԽ-1oVVLT: GŔQAL;P{o.ȭoJ)M3bAUM,Ֆer !]"-0طȈbK=G<Է„D]3 2}OvLda9!Ja sJT i1NfΊGiyq(L'9%q$̈cs5\/K'-r-^ 2KueYoUq>̬wm;% wDlJ|č0gJES{Luo)1)ד>f*dO=S2O^tS\j(jO9`2|詑-Y!OkIц'LGdb=LGϙO^1=-QODi6 ynNzoF<&Әg}9ϙg<}^mx4Ӥg:^j̆o* ˞~bs?tų"xM=)Gy2ݑ4R`Ao/%Hi8z/QJ_q$q.Y;(M:%hvf$jj)0^*RdoH^Ũeog~sTϚS!^֨ DD4~GSHMY:=K'ϣN_BY+=t.!mŘϠ} I(}Oe$t} ō >~O!e"<P[뢧c}ߦWcGbGbcGc\D1Ǽ;71;;?crbbSo)15fVL3LW5U"Q;A@@+PNb&fCؓ;ƞc/-CgCm׫Շӫy {γwػ[*`aoE׉(L~GpFT,*Qρ,`2ORPOEEU`AE:YJOQ}(3eFSNG RP#XjڏBWAj}IujBi u;{d~B"# 5@QdpF@6K"hz jȉOx17K3.rk.MX=dY]]ݎUqDlYZ-[mgMXӭY\kZrZgmXYuVZydUaQu:f=g`^^^ޱ޵޷>nXU!6Me3lvc dkzmeY;gQ Ev> pK?9剄<T4 3GXIXEX ay6as?HX!4 Ga|J1?ӨLLe1 ?A]A~-Iͯ6W6 =͟&l!lA}tp/a?`667PFjC_|K-Ԥь/iBP=Xxg[@@ A%PT[Zyu+izdEϳ'Y<Ϫ@KlV"LJٔ7m Gt,AcClVҦ@H 'b8?Btc@ɤ\-uBe?g9_`Twc'C:!qLtb毳LTqro*2ϳm.[e~B .VKr.[Tt=[ߍCBuuz5 ؓB);"Tv'\JOμ-wpc*iQPk=뺸]S{O^H^ڬi2ާ!t%wRv^0w}̸fkO+{Whs-rBo7߫\ۮ{o%׊uٵ]um>Ca`׶?awl宍!خ ۑ=<3GxmIDlɀ a>:Ey<:zZ< z^g\=T-C8o&ly%[0Dɷ sؗ*[ᶭ^X5 ˶Vaզֱml [6VwN$vt [Нm-NY\۰6.qlx~>m]*ynqނŶ>ή}|ĺSv}{nm:6ݼ[nŮqq=|6_cڣ~ٞ+{v}1o{+V{+~uWe{>|G]_H|C{>+-skQb^KC IRrkc`? sfr=Iv ޷v:O8 螷}v".sM;{~}- |zj_ٗv~Br?c{f?ްu?}BT/x.7g$51>cwcmvL){={ﱧ[;ۮ{|Vbk#xq? s`_D%^c4yM㜓:oIcU!`%iw8$6mՋpݘU;;I*/|7+ޣ|7OBl,o -6K[I-L8ىQH_;}{|ޙ)qu{A6n {HML=g76JqƉO軉vc=ܮ>houQ} ^_8ڍX-Ab}]#{8ňEt;t~s0^qx9$C5,NAQcHuo?WqgL\6qN}ϮqA\qLk/+#lp\اwhO' ;z8)qT~q*.SKb[X.exf{<\x,\ö}&Vϱ]i='v̞< L=g\{$9+$'Mr 9h.ɉ~DHN$';o9WIND?FrDr%W蟐'Hf$3zdF_#OQT"у$3ZM2& Ɍ֒gIfR~TOɔ@2$3Eɉ6~+e J2_%ѯUe6PM@:W^u_+d] sI!q7Ĩx$&`<)aʉ 2r9 3fLdjzi%%g̀ v,77My?f kA` ؃&\3Vdz$[| ِ\xy,>a$@B"-Ίax_"N2/ʯ ƙT"fu}h6uJ>@V􃰢,ʥxX<05OV#d Hf_QQMcQzX0Qch c03,ƚƦ0@S„4pݨ9@v+1œ =dN9mYXnϞi8۟&E0s$'MRiM8%?SGSR G"9Br$͑$Ѽ$I޵>3Lu:{w]{=>˺׽^}~, ϒ>T]F̭NY~楿9W,^^ϼ7H_9WϼV˵KVi *>[LK+\ώX\ŇLJ^kopk=UWFٵ4Fx߈5(y##K_#r dr5k+̖ZX$iy"zEEFG'Fu{SW~usEG;Օ͍X4f}5>Pz86EbX-iĶk{J1U=/:.:1:9:5%:3seKrу#ej.55+kA, ]zrŖZzf)Dz Ɔh.WIlu O)\X`il|lRlJlZlssbmilAlAolVFVV4yRl۪"~hvg9Og`4v4W/:ẄUƍxzA/c<3.@FVF+8oo'6PFwĻK5$W~$3Dh0Vriḧ,^(t[|p|"/-+q&>!HliKoeΚyfiy$wH eDwKtCN"~@Z)crb1(=aEnJdH<ӷÉډzϛ_FatfJ%}EhI]R;^d% %S-inV\sc$H|xꋋU%%6j<3Oe,v}bKhWzT2 dhxxI$WV *)nxa@xEt(_j/:Ȃ5Lx;T2dfl{7JYlS\&O8~@LtO}>*3̥Kz,e2+%&rNOt 515uDƉޚDWÉqbh,[őg#%%&JDĜ\HNb_XhIOlLlIl';ñĞH݉##/Y3>!<>'$<-Y7yAL#%͒2WmW%$%{I̗JYn2'cXxVdir|xWrRrhdYr^rA!O@ O;ōe̖@$LoKb_7A#"ޱM|tw՗AA3:hiT;g;gC=AOѳoOf5_E9NEuǬrKek(зhKtmgОE;9)yFm55'ʼn,cY&9_jp~η;ڜ\pf9=v> bQ#S77{/NE]~ :M@[-v_I9;Q~NQ*p;_hBS*gkhRc3YߠgBgm>Xh/P¡fnWLrOuعpiC]'[Bg)X!t@E.-z Zspm7H},8 rac@Rz_GYfkCm_Gy2wskCݸ׫FU:{ 7UR;vOt*T˪9έPiL3B& M)꒟r֗Y\kD^I-Z"BH']+kUSn<Yw4_rzR$q/G|/gGgvװj~ -˗\i1:T!gm̗/_x>οe'\uhYuyY{ҫљklz?Y's~Ttz p2_./1ȝcopָwy_'W|ɿμUyQsi'ϑ9_ZT2 ~<@] n@vtf?[jY)jx~1|P~'ʞrd|n{Wѡ&; B5g%vBRKgߐ}GH=泀 WHrn8vC OhCB)24խ;鉢y - ͑vOpuf>#Tb\#u~o]j8 {'NNjt澮j?ٛtZ6֭OܹU۽[tjS5 $& $P >/++@{Tf:@ƹ@Ʃ@_ƂBr)X+|+RNt½<= I x?s'PYSE ~.s@@ 'wiu֔* >,ˉ@HHS;@̵# Ȟ$0:Cƻ4. ^"Pԍg5#_fkߗޘY-몱ѳIk,-RPGjB7  &4XhPBn1Bc&=" B "Bo Y\hn BݏUwI2j j(DPkB -+4}PDXh}B& M*4Sh\B Z+Qh6B{:(tDGL*!̲s ] wj+tPn{ .]shjBݧMv%T&4OhВVA]Z'3H˶ {;_sHP{!Y tn H L<x"0#0;l5 rvv*փ[;{{  F*k{'8&598UhfpNpnp\Z.*ʵ1%-3'E`Hǐ' ]jjjj*%-+ bНѡRh|h4%4 %WYh^h{-9)$½V˵.)UC*}diЧqhAl>-YK % CMPPĐ_b_b8P??s$O+ k<=+ozn)o ?eֲ- _H@@@ve]̸?s-eε6ȼ̓_7 ?w8jϓqXs5OcjU>.<+:ogOWFo]&|sfl6V7 f;({V3bt.g( 7_a%8 ~: XC6wj^fQz%J0`uU'a]N'P嗛'W3c~*8v`Y Oϧt(W4Ѯg:#6(|>0fro)ۿG3)L,hݤ]?~3# x s%x5xn9O;)x $rv jkuk' HAnK ΤV;Уh>f'%ӂĻWyqJg;sۃֻ V>EyzísUӛRlq ~%6@u+{۪yJ?Po;(Ix+EA:dԍ3KR:Hh~X]$8;MNp_r$YR NN?A]kv-G)݃d;HC#[Gy.j{I EJXh*i#w |!\A%>{xb5~M͵\Z*EJGT߬p:^ …i<AyfB-%>f}jzwcV"ŽZb܊MUZ-+T$ ^'oMiڟ:/Z)Y'~U҆l$Hig>KRzm 8U/Dg1Mi;ϱ9txi\xiV1#R-;/Y3g-*3"W<dEi^#<8Ho?/d*zAq/hf@۵31v)ci_jWb1vE3kμ K/#cٽ 6Җx+}qIT[%Zd-_ìoG_iyt:u)>`WۧghGRU%VzQ:'J(d;[_h5HO veNe6ܴe6yg;vsʣk$]3Ne&z-dd_g\a^qZbg+24k_ f6~'s9D]Zݑ&IӌhڍW4ͻun'g8{Rܧ/aoY8\$}$;]IPքŧ@uw]k: WѼPѳ~HYQW{q>w<6+ݖS vڳjMa]'3Ӓ|;#os2ooزw5bl2^{ i^B9|_靍9w|hN׸&̯FҖx}2nx;Wk e^ץ_X;zGE*IK~Zua%w{ۉfy_Nc5qQ֜`‹x2X#1 ȿBg|6(}'G Nu]B#Jcsa0u{ૹz\GGQ/zZJ[`|\ٱl|-5g*}`lISX$@[t:u- JsZ| 0Ǯf k֋)N!v SBQihyv*ïM} ~@@&6?ՠtlHד%oy]3#نyHTyP4{Zˬ(k֭K?XQhw$ՇScSZE/Z^w~}tc~WngF_ .߾_ KC4 B߄o=( Y)VNdfNL 2ɘ6C>)p2.K4QxhIt%:-(}2ƛ2+S1uP'H.hOvlo S||g8ѧt)2S^\jB}շqx+XD,szAM-GnmjǏ?~x~;){ߟعAwkO͑>tPwn`%:|3i˩ĞX]WsʭT J0W{G)'tsJ2~ϻ4p ;ɱsH {Pw},_EOf9 c[ƭa"FkavʺK㾿SˣylH9˛Ap9W4N右ڄVV<Oi&>޾T/y"G1Sb31dk=}KWlazts?dDT7ғelA  ?I]qk{m_,TnϢ:cܽrշ38^ 'Cv}ݕc/t;̵O2Ɓ~=[K)}ٔ dj̧,vR=DX[sd,WRmx^G焞%/g\ڀzʋf>3 Xjj|vrX!_C]N{!n}'tkw]}:WҋgLJ|[5WvSU]TbiD]~=9l?yznг5d~:/qzS?}YDn*3욾VMO|g%5xF1m5V}H=q j//evOT^:(h+))YCQf̠GX+|4Jbo֕"~Ê_9b'n^Ԝ't!𾈶>HNXEvLiW s("RZ $ϼF-ޯ9]2˴er>y7E+p0vm$}i'zqay!ru#WZa_Oy1ި7.=^Oֽi0jݬ( e;ruNݛx~?8`.(#<:B=)X=U+K>Rю8=[0}m{f 9hYs'}(HqOK9_ںֿj):#Ȅ?'SZW$m< ݮ'}ͻ8/Er~܊|\cɹh2? >61/qO|yS]}Ek}h7Գqϰ$|׵bV>>W+@v}3c·U\.O vc 'f XkNC+\jTN7'U{ b 0T 7و*@RAΰ8E[8ytOdI-c.GxʰYu+\lfڒo/gVqvl6[lk5.^ 3(ǬԲo+Ff.czCB$'>ANf^瀏Nzz ?؏qsiI>{׀cӰ6 nvc[B7>o6;C!xX+5V;ol@6ўgxP`;E32(~G%f!ȯ/+o|?nءs;+t|$|>Kվ< Uɗ_|5(vR+O/P22t+'"wl._?gׯPN~W.;<_w9H|u=)$@|SN{/u#N9Lto 6#"I=_!1r3$C8rqڳ l~t*?oѷ)͟Y<y6Ļ;ס f!A]%{ӑR4wO:V޻I1X.Iix5tP:,qz_~1mOWC]/c=Agؿ>;Ap$O:8IڥzB&9? z)/t\щ~-|~!ml{WdRz}%4duzq3UKwH.PMUvRyr7;_'zSw 4u}7*t)sC-{NJNF_OlDRq J'.koȻ Z=߮ $2,֕HhnǑ|TOFMRZ1ǡ)%68=qZJ߭uۇ9"^2̑DžEG'cJ!Z)}G^?'ZX 1K)zR#{RtF)~8/N/x0t,D^A_nd`6G{V;i n h׭O߮词~}hfW<,$[ߞմz Pbw,rKϤUӳU;ZTW!9 ~aƮM64k @pߐ5wݑg+-]3ѩhmG'e>tt={m̸T%dm} g7SܮB%>=+xEѮh8I}@t+RÔvhn"uŴ#|ɻ?E2𕴪jf!I"֕ԝoQw[$7OY; йvï? %p#ؚZg\k9_ ^;)oKX+uFZ83Rhn"落͑@ۮ@X:AgD%]!-wJU6qlOkk/N 8-tZ1-wb4m+?tm(H|4yaHwt"w)uXC'-y{Zr3_~jN& 6ǚy'ND7{_eETUNSbDyfPD@dghQ ^TD"*4 L"<2?/{[֗TwNǸj{'C#j- qcz< iHBIZ6Ag`~ԝš=g&-p_j^Byj`Vd"1/V`Ut`ClCi_`/X|`5}t٨u6|XOX\\}2́u ɶ_иj]b1"{8$4ah23>O%(+AO&W! +X= ,a/Ѓ>֠ w>BS 0ʃQZ| k} (0' ыb5X@'R3׃ ݅5v,JzP o~kÞT  5 ZFgSŠO>fAu+d`.&Aq;A^;AA'QZӠZAy^8A e`+pf?YumпWY܅Z7Ag)p0^2Nmt"8n ZZ _A -<ՠ !p,VBi^hqPpAiA@Ԫ>ڷ^v \w0ZׁmPw9Tdn||"tnv00( lĵo f3rJn?#߂G/ u)uA?: :,yqcB@'|4GC!?41vg&-pU`5 &t`ClCi_`/Ċ|k>>p:d=l:a: nEmh.З!x$Vl yx!8B% ,Y )I;@c-؟Af.0//jhu,>>z0IX PZCP+Ckn~X)&+}NB,Z*F/|d֯p30&/oV`*pJ-̝ [Sq'P fY qj?k@g?U#2|hAuhȩ x~Ʊ9C9#!̝f8GjY9tq:#IG A{A+7 ҭ栛+3$ 8=@܌=yމ5W ip&(c@io2[YY!)14|J7aÓ.-OZ ^E;ԚaSUY8Id0~Es͉e+dhVt H04b(]ZAg Z@ܜ r.(d:8OVH 8~2-C73h5 FAYܫ>RtA m2:2X(ED) L zA=[⬰pLi;ПA7FVAj3'.6nNq7v>FArѶuF h@P˔73\>2@UCya 38m$9wedD`%6Y ZS̈(tiY[YЫ$C e.Ƶ&ByL4ڴCѷJ*)Z'Pzڛ'=.Cf3h =\JlGoN 13!jp6ZVkk8п+}`)7?Z'fMZ& 8UL,01w`w=14U\N?n6WINpS1p(Ƶ/̬xHͼxgڬT{=h/y5Ud~boZXqhuMkY>2лƇ`]UKoƋn5;FRn1% ֕`Շ\iBhͤ½W p,XhoV̋ia,p 5ZK66輨5t+F'Q36(pf9^mՆM9cݝ1uF:eJfuw2:k̍g3b`Fka8#~cD '2h`jQ S,'JS10vxUz;HS|1ء-,0Wvuc''ۃ'W!0 I E'警f};/Sjf]Cu@̗h7Q'5f 7Ou. f3s֒bւN6ҭX)`ЪX8 ՗Cr0JCt%a[ -(,E<z{Mb'7a ձo0#*]p~2>.a,G2VؤdN9RQjVʿ; LׂU&8u /f8`Na,!W\-=M^]~+Zhqu 'Q8 E. p|m\6o]t^M@]N8٥As=ץsІ_d8uѲޡCϕޛ94իּ'|![9}eST2u\9C߼frGH}yc9WSay62o1}1o~mʆ[o*[q(ƛ |`cϓEPkд8sQlyM|I _rMd/ղ͎!1=>)q m#%sky{WJț=ێyܑoT0P3g<<_g|0@p,?P{AtAMZs 9i3jX' "fĴp4s1$phM|G r&݅g#ixh467MZSzƟ#~[Ż0 -u)iɨ{g 8 Rc8G;܉ (=1?ljB#]B=vKS:O_httA.9 S6*K)_׌QJ4FxHR^*BnBթ65Q_QN}qFOs j)hUTr:ՠajCSsA)48<&+ZZ4hڴ>5jԣy , ί}1JTP}jLm3 [POGIIӋ*jE׭Vj:?HM4MFETrREѷ5vE ^#4xZ؏Bt't%QCzSWyǨ7 !=K%Bw0|888kc*FuWqv/,Lvһ  ѭ~hx$z Z\ \\ <l]^ VJ!(0 00lʀ)v%`26>h7v`Z{88 p*p j=Lه'Wq3w ,,5_T0X eРr`D9E4*[4Vr~3(90TD`ne`1```5`AC u M-] I${GږӁs{!׾'H^yPzoG^Y4@u(ws(F ~(0#+n6fm,ZH-hz~+(tʩ#?Gul*OEtlgb:~t|X6Q,uB}\wZK;]e`X}֊bOl:˾`kv]W$>/FG %򉲢h,:1I rQ_sH`ۢL)3WܒF%hQ$%1^Xoď3Zfl?OL2) c>GLg2˔ߘyd,ϗ-cL -:1Sق_%RQbiC{bd0i?.4W Ӳ{QzAQi1_vF 32+ʘfʫLy 2Wgʯ͔?1_u-V1f5yn|%i3j%TW:`3e)l9 4氰k{Fq7~Hd#}wI~w84;αsZ@]fIqjYƂxP7=ٸ^.DiQNm KEHF)Q[ܭ{XY=[@Ai]gz$=Dwqw;]_:ȢcDqoo5$xﻑ~9&|y4Mb$x~q_B/ԽET(Y:,JJWk%SP:JZgA%9P %QIrы7d6OҚD%tsgQv7]:cN uv]l:KڲMڵѮv%sS(%(*SrvT;oGPjGQ6C쪗ECI*EP_*UR.5P ;`5rj(~IʣROQ^zj$WϪgzN=Gy*, ,^R/QQWW*>PPq5_ͧC!TSRjZbʨ%j ݥTUr[RZVSyN j@6TYmU[IDUNtEBjK~j Tat:}:I4VgYz@W穎.҃ꊺBuUu:Wߨ856!_a|7ֶ&V\j+m-Yu5izOϡK[UK?FkKO#YnFamX;z~4>=Ӌl@/ ;dv] vGDs;4ܥi<+Jyw;M^$xS!h·i }1[>O|Fk>IoDqQ[ԡtcӌb&`mf~=*ڏۏJ {l?m?ͪ#푬,fLfD߈F7걸}?yE[o3"zWUoEU}EVO5@dWE$5D 905LTpKP#ȭFQN5Zy5FUcXOWE~5AM$5ITsQHSDa@-EBPUOE1LWE T-%2LR_DiVQkqZ֋j(V&QNmQ[DyMmCTT.QIVEeGU>OTUQMR=:"1uLTW' QCRDMuF9uNܫ. >uI]_կ uCQ7MJW颮6@&oh' c!=a?U4E?OM~Nh)yEs?_ EK_T>E- RFh9}E+k9V*VZKi? ~M*[h+mLC{i t1:I:E st^{t.5N77IqJ#7-xKo[6-o#;.+ƻ'{>/Ox>l|7{>!~G1~')g9~_%~_oM: 2#h&E;^tE?#c8xCOħbB|)6&,b.~;NK,v_WV VkavY?[_=^k:`Y#Qu:aNY3Yu޺`].Y+֯UuݺafݴV!ɇecD6fQ\-cl-ȶl/;Ȏ,Ȯ.{Ȟ-Ⱦ2E'U`9DI9\>%Gȧ3r%sr|^9A('ʗ$|E*'* !gY-9[-ߑs=+?|@~(ʏbB~)ȥ2M.Wr.\%V~'{An?MGYn[6]$wȝrY=r'<$#<&<%O3<' $/+WyU^ +bGD" h$q7\$?qWѯDWFWE~]]>uتطձ5bb66~m;;;;;;;;;;;;;;;;5v5v-v=võ]ǕnMpnu,nV7&9ܜn.7{wKݻܻne{Vwk5Z}nm[׭w ݇F^IW+y ^EW٫Uyx^uWӫxzuz^}{k=5xMGfޣ^s{kxmv^{ux]n^wx}ow;{G1w;N{g-dt$kηEC߷u|Imi :ψTJ{t{b2t:~qQĭc[b9@8ec%3¹)X9;Ndq2Z9cduy/;Sҋ GOl3j 8+St@ zwPPczSG;K}P@{4Y(q=(w}l˺zgLV@݂5fwjLr+iQ3-EZ Ѩ&:SM5z %-P%e(递(N z鹫UՉ\ yހ,ބ7!;3M**=n?،aM ݸ?3sq9HDΦ:f>hNG7'icSo3*pFǢߣ]D^H>#y}G[&bw9ɾ[[mKm];yqm>r[mܶn;vr;]ܮn7r{}ܾnpS4ڮxۊwU R=iΫp~[-{?Ks|_/+e>^=7T=Fo DQeݔ&ʋ:+"6|{nc@'$;r!vr;k3dyלi,3rraŝ9󁳈,v glvv>gtQ8✔ĺK.#);~Y}!ˆlyd@$}VFE5lmddd$Ec"c#cx}dbd"y92~ym̌d?FfGf͑w#-" ѹخB;qt M:g7c6m-Տe쯱{+Gz[}|e$N]ڳ!g-FZTzo.R[/c)Jk)̯.VctX=bbŦxg-u"YۮꙆffA@ Q$(E "̠`XӚӚu 5a`i {;:[]7SOUW4cl ֆe[v=:bXgօueV;f۰iz5zEz^WUz^7&Eo;ޥTL\OT28 $ 1$,XώGHX5EOH2 xIIX`=!i$H:$ .OHcO}2!2JE@K5"&)mJS\1e6] l4f+\ЌIs:='6:ҩt*v z'rNOrM*&nNcĐGq !"#8@57$RG 9 $ҹ8_tO@-U1 ~|Sc$wˮj y!-XPQրAg6TDSh*A4"jꈦ Th@4MZڈ:MM_"{\&D#=N'K QmW jKhkK;As@`ctLg.Ut=Bw0=ָM:25Fh3LSƊQ[A =XEكzI[E۠M=QS/ -D2CL}PP4e&QfP&̚R鋒 D3Dy3By`kpxk*J`b(dP@5%p " G{R9p4!O@7Wȓɴ)W\B C ÀVA!ϥ G;C>@^5|3+4 5F,% "bCHpL 2 l$;~REN 8 %DDĒ@ݨ'DS Q`ޠU&]]']]7]2VLP(t#Fm@˖(pv(rb]Pjp(e JX.D-Bϕs%賥sssߋhq %Z - --no~M`g]j V._q.LG1tBTt HbHq0W-}HqDʩsCڣLP&rDhsq; F…LPfr]PfsPE J%X+.A.U`4\:J!J\Eت'S,'8ry^Z^ڈ}OK>K@| S_(+*!^J ;=?λR=!}>+RO4QKg`}aOb|rl9s.+Ƶ95׆伸7׎8. sA\#u:s!\(ƅs\$uᢹ+׍v1Jil!OUf3S2Od=۔5eXsւT*Trݹ8ד·K䒸d.KҸt.lWM-mY-0 u9'אrB)^|߁|vrO/k////_) F!QHf VapP 'MQ*E"JEOS P T R V+(*)+F(F*F) ъ1"Ebbbb>|7>VVl |"$ &έ"xuITLG\p⊫pƤ΃::Қ5>VmGm./A8MřM) r+yKG/ G9?\0!0~?/8~?_¯Wk &~3+(O59_o7|-9ſ)RTWj(JMRHlW*(MJse3Ml{K XQ >U>j7+k>'>Ãk0^L3bM0n*'LI|E B1&Z%k zXI_THrGOû}_%%F"~) ףfX,'k`H~IRpUȿGyuRTp8N]F ǔat&gPCo.>CHh=NS 1_A5} w+e #c5(}5%1ڌUƌFL(3P`,lXll,֒i e;=;%L 3W0 P^%IGVƨ"aƆ(=L?ءP@P;a(a@S G҃194^c=hl[i>|H$xuBy fM$`0@ Q)4"'|xw6BPd#[E6BPd#E6BPd#E6BPd#ANBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENBP$9 ENB|ѧ_Zb-Ei?פLiTy3䂆ے0F,d-ըb4R7e=I(I I6i2Ƀ?ap[Ťoߚ>KZaw梕BiP(W*a( mnp;xw.R5KJGh$np:i}S^TQHNj*52Ɲsged_cpRYdzj_YT_SR *IpvrrMgAiS(ܛ uC">.ÅBjf%BG17^v%]&̍ m;=Rn䅪N5gX1?ïՑgoz4e Mcxz77鄜)gLhzgURlSڬs;Wy8COkkln)s1{MUg6/w..)nN>e= {N^d=uhCBǿ=e޳гV+&=ԯOcċV<2jE:o_Zy5rOrSm>F bq!5 :`KfR S YV]"LJhnq#?רԬ[GE(RF ⶥ@{'7uZ98m4Of*DJCBpiiyy9s3>z!1;1OX똓4 1#8"nגּwt؏L4D$t-0m?A}_$k}$b,:$]z$}о̤~ Ȳ3zεnM]6OxSu=u͌'lP;eK1a*\F;c[ce1_]:שM[Ǫ?ׅZ<2l7w鬾^ls³e/>\jnUq^f=\v>ss;;#ٚԻMB*&ژ.֚y6R8gjp[vcnKDNX-{C:;| NZ5j96fO[mQ15XK94|Gg%GgPB+'W'I!"M`BY o6뗞k`#j&XE&LOLV}Md"CVv9aЊVGжoV2#wbE%zk@:NeMVWn9;+x+\԰u/Αmۿ}o=cb릌|qxݬwT\^;6iIw/~hVrzd$5OY(.aǷOcn lȌ5-?:1jᒻO' ۣYk;1%ftΧu{}qw[>FZ!8'sYy'^ >];|D/F^/ѫ‚LcZ풨|2?*};GdgHS|e#J @ PæwR5s IM63;02m3UGy;[Oy6;:{wio\r5F6O1UޜPT70mQc/~:H*H$#? {k3׶We3X"B{!ԯԧσۧݹ"*!E5 !Pol U}1th;yڻ9mʸ;]^wjco;ŖU2˱Ӷl߲MryB?f/a䎜[5%KlS?wxn0ҲvIk3Mꯅ6m߆lrrJL~Y%F?ӎO\}|,Cz.N70~j:FEGШ+'f:!^lxyxϽ1bϘT$HTYRo~3EIzM .%=>xZN~WvM',\%{cnW]wB*|00F梑eOyhRM͸Vdo؇Z]7he,orwz?dDBGbϝgZ]ƻY״kmlƝ%~?zi.~ YY&LqY7>{QY烦`xus-Vhb;DyYꧣf605sHCw|Ka([ezj'vgR{+dqÓ^8s _i2mq!0-WvPܐؽʘ:U;q7agfom>{o'us#"6L]D:Oidm|j/,k^Wpј]L¸"%|2p~EkQ *fxfKӣQ^?JȲ_%VC"ySI_߲%yxj+Xtu]8$A?EeZ'싓]qG;uyg)tV5tS0GBt^Z]_5ū6ڮ)2ठk#_ ]9ƭIG9^ͱHr[[+W^Ji$(?ly9٩9if_%BJ6+ζ)y\zioZeFLދry|R/~]R[үz~䛾g$.jcβ~pILt1;9Y5'ܱ٫tEnd_e{gOywCG4V=9 5x4ۙꄧ,F-,,\cZӂqw-O) t֧l{8>巩aszˠ\=-syآi;Wg&8k7M~25hB7f# i\5U!#*5 Ƣl>NC( ơ=J)N V0&useޛWlBWzT-?z,>/ *߶%mCƆӎ11tNv;W;Ɉ{2w}>T`/2 ͭfjP)ka}eC9?ӟb_Tj=9z._9ds7ckڕ{On{UkjB}zʬa!^y8yĻ]'vۭhWt,koK{4x{рꛭS t"wU승"nbDHh]-cCf endstream endobj 2542 0 obj [ 0[ 507] 3[ 226 606] 17[ 561 519] 24[ 630] 28[ 488] 38[ 459 637] 44[ 631] 47[ 267] 60[ 547] 62[ 423] 68[ 874 656] 75[ 668] 87[ 532] 90[ 563] 94[ 465] 100[ 495] 104[ 653] 115[ 591 907] 121[ 551 520] 127[ 478] 258[ 528] 271[ 528 412] 282[ 528] 286[ 491] 296[ 316] 336[ 528] 346[ 527] 349[ 246] 367[ 246] 373[ 804 527] 381[ 527] 393[ 528] 396[ 352] 400[ 394] 410[ 347] 437[ 527] 448[ 469 745] 454[ 459 470] 842[ 326] 853[ 258] 855[ 276 267] 862[ 435 435] 876[ 434] 890[ 498] 910[ 498] 918[ 233] 1005[ 507 507 507] 1012[ 507] ] endobj 2543 0 obj [ 226 326 0 0 0 0 0 233 0 0 498 0 258 0 267 434 0 507 507 507 0 0 0 0 507 0 276 0 0 0 0 0 0 606 561 519 630 488 459 637 631 267 0 547 423 874 656 668 532 0 563 465 495 653 591 907 551 520 478 0 0 0 0 498 0 528 528 412 528 491 316 528 527 246 0 0 246 804 527 527 528 0 352 394 347 527 469 745 459 470] endobj 2544 0 obj <> stream x]j0 ~ CqK{cClJfXd8d/t0 }i'7'8-B'uyv2QiuN84UנE{r!{ayqBJP x5.ؾus|068ȆFTu%@*($Oߨ~_xX{,yJCT>?!oP endstream endobj 2545 0 obj <> stream x{ \TUsaM°o3 ( *%0(03Ro- .[ˬLU+-+L{f00 r9Y<9 .3ǫqq; 獞 -XЄT^R9gp C%ڒOhaqXapmfba啖9!o2 N{INCv/ \RJ1q6@i&‡Pn֛l~n8vY3λ2ikY viׇσR<1LvNYGZ_H9v Cұfܭ4r@ U]0@*>DGIJ׉1n{Pʸ;b1aTˆ 38\.Ie䍅JEGh&i f/C_i'*߭_M0=RBrk{理"{KX"fYwNg_z*A25D9 vpgDpAtW&u!;x z'x7 7\91!BrC0#r!@b("*A a#!Q ш1 U8xH@LHD$HBLd2HHA(@ b*`8 A3 a`8p?gHt012 Y0q$/(88"fC688r!& NaL ya TĩPX4t0^3ZցJRR(C,r[(f!B<a6bT VBL&9A5b5E3-`AZ,BbA0q.(·oq4 6xCðq1,A\K24,FFX+a%*x&&r"(F\ !>xZĵ5<O"> SOW4 <Ќt3ql俄 q<__͈a Vĭ"/!2 X؆ #n;`'9W_]v#`xuqG~88x@|?7!x -xކw߁w.{p0pE< #??cS>cH##/pDB ?ēp F4A<mi "Q8"-|{x~@.!?K3?Q~A/p2\UkpW :{﹁ xڑA'QXq( vXwNn>'J߳I仱gvwd#^ r{ ݵO>gßzL}>&7jع-lpsD$wa[lzLw1{I^)yv\f1z ;83rՇq)K U }o3}׻^R`-zfw_rz r왭Cls/ O.lꙭ w•޸MpC=ݻxuMwb";HO)gvwxuMw%-{fwگ~0T}LIAhS}Cl% LpI=k}5s/h4gvne14 w^3 뽟>ǔ;H;83z'"{IyI=G&~t5/ypy=k{?1}K*)Hms𨾷(虭{? }{bM8&⏷#C!/oW=nrswtB4 /~DB/Tr.{:x4Æ 2h@D*!>.6&:*2"Rr֣JLTLe!gHEЌ3fBB[YIeY[ޘU83zy|tD4aOdΨ_eSf *X,mu⤂̀8+)auU J2R*3r%@V:(K3 Pr3>s|bKYN66.͓ XX}`[&|dQHǡ4+yEr%U6,S4:(G(g7Z!>df7 gqe6_'4op~KZn6Ƕ '箄VhuνY"hatjRDRЧ@.a*$Z#b:d5* |UPrW#@yBwΑ+@ qr+ְZcbfh~@|\m+4)8|`"V[8X xy1c]88`hTVH(9Y5Y(YYry#y^VYĭ?WGV`+b<;O=iZXdmv~=>](€\X{!!E d)G@lMm,$2d 7j?,[ { Q<>&NS( ʎYi;-iu/Yp AL# xd+'㟆xly!Uqp^ xL /(gɗ0I0ˠq,!xغ?O>xNLj\@Mt0vf8! dVxBӅ72Q'Qy~.3a+Z}BYW G<[_o;R/A{њsX x5:9u>Lv,7*a,h:Xy2ƙYOHsƏ o Aj;fzDYd B1$,DVՄۊ7+8Y8Chkѐd2Iʈ%VE#@&2e0Mia3m/`65[7wُ/0NJ"F*LtItY!Vܾ#c:|^ALLQ oՠU&zhx}'xUh1Jޡ +8-%"!$$QxMq%BC?x _he3+Sns Gg%8(6Nge- IYv=`1jу&+wDCčxY;{g%IIU*:`;-#YJ^"X901 D*5 $3TVGH)ϰ X8""yDRypS&hō67:a3}3_H\ lbLj ZǘTnD3/V&`+6gP<+i?pn2p|)ڵ`aŅLl"l}_OnLFd~ ~E>LUCGg8p7gOypm*eY! T=Hǂ\"ֱ, ɢS|csƷ(W4NT'& D| |a. RV`wѿjE=fW*iÉ{jjCF ?09 RO2Ԟ}(@2BN3 餌1n8o&'$h4עf͸HaFE g+ɉA.:AưN"G<O\B $ He1:LXvhDi?sf^N('׷; S\nx=qxZZZ &^CK|qO.OjC<${C{fsI=["do;:̺ ۩_!ZQZbU WE2 YR UrʠPe+]>|TVbh||=}||Ho$с*/$ۋQEF8NO$s W~#!;qCCF,}Y "-M@TaR'vsM,QM !n>^! ?BBH2T*񺭔a';S¼sua'*ۯ7ޟfk-7Nhf-l}+H4 M؟ pN `CÔ$D$#$c*:ɩHw%/D%q{qWE^ )EEŶM0|/*ܨ|Ri\DDFf NFF(C%^>lSdD%'fXF%fY#ý慩43gz.7}/~{<ӥBٙ ȩ?,T-w]3>!rYm튣'/Y 5HܵkUQtĕӊ3= ^Di 0l40Q-u6%jJ9EU81F.6M @F&.(Rr N<"I!=00ZHl"͢E0&^/ '7pjԒ` A(xd{/^yCۧkW4"n`bC/~~9)xP͵5Qe̢zpÂ׾F/>^}g s}!d7dA ?'C"6MAG#bǜ8cǞX{I=O&U yn.&O=uLo]g@SoyNr̰Ӣ.uNW WOL3rLFz 9܄ܸ1Y9yY\ܬY9rgy*k\ rkhv`qYǥS/ SFg+7ʻŧJWQSMg%.5Uqqn ќXh{_U{TV/FRmqE<6AX̪6c]UQU(*ai<k, Wf)WnOGRȩ*q6FJuTcJ-[ީ ʰ1QMtN6r:Z*6Br0^%Gs*6:w֦S3r T :.vmWd= >첄^(d2w]"EZay«^ cL뢢+Q тuT3!gݴIU!D`!0F❁@O@0sF",! (Yx|p9 mcZ[zk2Xk]) #h=:KLt)A):ڣm, =ɵ tVU`T[tr]Ė p*a+[nPRQ.z:zҫ}K^rkf Ug Uvt` I#osUtRݼj[Ìv}UjkOΕO9jS/cgRg&:ڣӹ;:St7ﶻw?uE$JeF"bm-(xO,].]V̇,}ڄ^ iI9 M"qY$u5M|lrRy]w!Nqܘ*]Bb:&(:eyfAh "L!MGr_⒚K;r~:yuvƒ~_~8yCe Vg]tau/0_k+;77~W^잙T6]۸ywS=RtAon篇䒽3JL`\(Ds'?U[ΞyqE̛C}`fږ%VxCojmm"? sa}{? ;qhu3ZL2Cї־kο?|e!ۗðP/\_"Èμ,:)O0+hz‹dj >t,NQlߜXmoZehN-XE` W%!D>z8c'HmV׿+x#_'cox7,z^qNHX[bkL0%.iyʒϯ& xsdܗwiy{jOv>o-ӳv~2$7 %8yus>K}]z<̌?NGuJ8BUxЈބ e^䶉Q|C5,8Ժ^xz["|xM=g77怘h?:zw~j N͘_:`16d g^^:c4no:6EwnBa3K~38Rt]sNڜIUj"#_JO\7oYxXk,ڬyr[G_L;gd3;%zʹ׽FʏO=Zܭі#.m}pOX0Cdl<^_N$GddSǨ#i2ZxN?o:.dJi} d鋜\M~k{ۗ]>篏?\v{%G42?kģ["WyqtS?񗀉a ?VV^sNuǿxAsӯ,s[7>1om˵GP0:K;cuktv/qxuI2ymxsyhܜԾygyɕG>Wkܰ+qˏop BZ6_{|Ֆ}Ϙwi^R7q ͶAXaWuNjzL+sn3l /TIh*L ХHY( " HSDP#EM+^:"J]{g?g?9s23ya VpH4|+y=m5Y$&z\O  h&dr7Or'^cJs퀩hVI2))pՋ&1/4f }[ I u.kptVdߜ>蜔"إxJV{Ew oB^p(ċd~&8)% !ĹcTpV4a46͏EW+N6,Z J8meRYTc#bZs-o(Oivu҉f.$TBQ($&ੈB%a7X,ιP>Kl0bNg<=g-Y7e7bb;k⃦FM{좑i$UCk3u%|;kRw(szp-kq_+ؤw' 53MqG"k-08_TKpbJgt܋#ڦǤԝȯv uR}MK5Ck}aP2} n\l5>2}<@w)N5FPeQcܬꐍB#o%ל0żxVY:9}QEeXl$ֳ{L"X<$! 7 8/tnQrK|ַm67.w):ʶd :O uu]m}K`ώy1yʒ)VV "R5hSg|!! c-*to눏 Z f-r5Bnmd;}=cIE%[t*2w0iÓ!ɢfXEcF{ɫ^D<ܥ:fYBZgp&x=\̚B@5* |d̆U{3zަyoޛ.]~ gUj'(vjk ?S@ɡin MFaZKYIJB&cvhݫ"rm!ۏދn}XcD&?//x}T_sF윜d#!A)]N_G^Qxrod-Ky"H_CZhgpkK@FiV\k[Mc2v'f==?oS_Rτ}MИz<J\d>{'Gߎupד!L ZSن$"oR6 f޸704gؓy핟/vT J RsbAitt0̷;?/wWQms2 @jˮBNTPԶ(]}﯋>?7Hdn[3!:{2Afd+>ZFf> ]ӬI_06H^ 9:M+WUX|>%`ȢSdrD]R_œ@=݁X <2\ zLt٢b@WXF ;պ>VhgV].5O֭?5Ei`A=t'Oixh/3Wn,3n;beUcXcL:IQD 4v:aZPd;mzfmg+_Z@lD(:o%v|_JWk]{x q  pL`kɮ;Y2XI( j]58BҐ TY5'&4Wc~d!/j:1@$Yg2St3GI% YSNli{,t;/>nqETgd'p"6xn2SB_AO endstream endobj 2546 0 obj [ 0[ 600] 120[ 460] ] endobj 2547 0 obj [ 278] endobj 2548 0 obj <> stream x]J0yY^pU R&0M}{'\&|)do݀@q;@bnIi}͸4E4E\3pq_# [J߸ e0m$mz عs| 0.z\uȖfTjyj8/y4}|m̒)uM)B2oV endstream endobj 2549 0 obj <> stream x| |E3}@84z$iZrU(G(MM-@@,+®``UE]X<׺mM) ?/ygyfy  f֌o5@]{š2@>Fgxd3y/Srb?2]NЬE6[`FWSsO}.o2z\*-|/8wߋבQe=DHZ-F1—; iC|Bx?]1~!ovɨ+yI4ϷW4io@al,[*@q=]N? W/]0j+9ţ<ܻZ>;++@ϼJF2zTzDl~'ORPA9od/(gW^|r3/DRIsjN >Rd{4ߪ^QH)0;, XR} Rn+IPw`BpɞC?=THʏ{߃ 1XGA$b4Bh8 q ɐR 10HF)jH #`H8 Ԉa'`$aBh1 À4ıĒ1 3̂ l0#hl< '@.b AXP y%8& NR( &3ES Jr8 &!V@)b%LF)`:0q&!΂r0 "D20f · `b  q\ .]P#.y|eRB#6fCRF542D+\h/͈_[D']` W hB2l hb;\;īx58a\ZqWq xVIX mC;:a 7pFq\nkoUV?ě:-p=- ou6X{؀6?&;FnB6#n-=;p/܌xlAnA|nE|n;1|"?"F<>qlG ;>Q 1q  3<! > ߅`'!x< 33<; WX~twete`[ ]]C20)''Dg^0Ȁ %CgW"j35q)vvN ;;BsOuu>~3վMuVF%TjNqj."at%>NU6Su CbX< bqXlYb1S,f4()bQ*%b XbA.}180?y1?~1߁v̛0_لy9zX^G,J(bQ,J'PV1oc>c> ̏bއy7yf^bXbXlr7+7ߨTn+77*7[)7/UnSnUQ(pU*YWŪUpJPT @F}ϘAXO/ɵӈ/NKg l7O{jBߨʺ:HRUxF"P"S~NI[ku3kL[7TwU7֏0K$do?*Uw^LX&pԧ^”I]>(_ (̴+r{͍FˎڋR^m^Nr_s__͔){_}RDťxmR)kUޮ|<<RPlk65k{z(|M/iBRIExՑxh!W{}(6^cw-Ns .oW-ᚹ[0"qOrr'P>OGUt+]a8߅~MM-]?/;)=yy@>/!_)(#KޥdVW$(&)++))Ide^JFiW)w*O*P=Vf sgN|y.wBq+"0J!4ղa  |xxdCtxU'zW$ړTv(_7˭\R.Hv#.Ùxxn 8[T(\kGd.~l_%_IơPIn ir|w/>7 W?mY-"{܍R~3]OWlLѠϏĥk4x^Aȏ\Jv~)|{yr@A LB:\&%) |\Ȃ5+؛'חe4H6*#IK"ǤO(A-xu7M[X(;@DUUr\| f;>)cIa~^`%9!۔‚ 4eb6-_MϷ-/qq5|y[ŗFFSB*G(MJN152*'?"K/_ɚ_2¹EwG蹕VsY¯\V:22B[V8."b,a >!& Xல)nQaD~Eh'j6rn?WO[7 Oeu+օkW%FN(|X2&/} %VD(bM+W  RJФ.O5R ?vQ:Π'ʱcfL@kRSOJIIV*iHUD//"xHc!{֦QLJ}7V'W]LF8wb #wܶmbCdTl߼ʕ3gaڸy[ 搹L A7-)Ϳ]55.%9bܳJ fذj%ϗOPuAhׂ~iWg] W.qV\-r'@zo2^7>[/CdzlV!/BDzJAaqɤRDM,֤O2J1RtE%# rƍϚT:YGDx+{StloNNtn0wM\(C׎NK%6 b DQouH3ݒLyB)rLOPN{^|xϋ1o:u 79,&e-UK4?%VGjS{~Ww̺w=ybG&5ݸ=^A>~}"Mϓ8IBv=Ȉk∗x`$Fⓒepr.$5bZ֣8yY$ \]I "c#J&A 9ED q,.jD4 MIh0!?05x[]_to$Vaa+w~ݳ[lwnj$ۧ^C>´E+& &不.R*MM0d:=vǕTVk֠O$(4qJ_9$}~s)\*XWP֣Th;H UxOP@8^T)o=p8w<7"hZhvq'IJrnnuW}R̀#ʿ<#(C>!Ow\\׮:_)+T6cB΁RTA-P˂h)I+ N!JXH*HT*lb=;zx~.qSzRUUR@jT :1IPH,FER]iKu%+ 2ZՃR=I[z-éz3^V jIǧ>A4j6V>#yBavz^v9Fva ,b]hKl&3ft`gma1 Bf:-`t m4[llPRg}X1 QQuCdscNpQf6 LN'[(wXR5^#x[Z,Eneq-6"n 䢒llmqەN-F J'=AFG6c뵺-M\ngl9[=(@<llT'F;;ȋqBup P~HBYh굸OkiMMYD0&e=F9ڈYUd TTӝ-4[:F6!m457[Jf춵aixBɍxr9+הMn²oFZnFʔ6 lh9&%IGuo7T\aC06Aksh~iv*48P/MEY=ekD:LdemNhy+Ǝ$4٩ $!]cyTU.*g[܊D1Acmۇ"ny.Q:P\n>B`rwL8@Gr*#g>L=%^6n-aw'eGڐ^;[3fP:C#pg`b3A8ǫks&lws# PFņ5F PX.&bY u)b{ )RI7qd;E)͌`<hj1ڙ8Ύ:Y؝K ;%xƉ-U-g$ibT>Zo$Zі6fifa@6Y]!zbFF+/`iJd푤=t\ɓ}Q9T&& hfֶGCgHAҒr?'.ƥY R0*H)Z``dQ9̣LڀD]\ =Ed#+'O⥏$el~QǻLRQE/@cĴnvblFqXiK3rJ{JJA݌Tjy6x3󋷗P`z$z]l|@l)W3ٽ,i?lb-E󄨱 S`fژGֽ il(}:5h\8*'gU3V;8`F^dg]qM٘L$yv)kjr2ǼUyzcN4Qߒ^=l< y>[ҶQMO =bZOKKX 4Ih {Zϰ^v""qohaك$󲽏>ݚ~n RXDsJ^7'vf6=-gշ< =Xyz/!>Ezҳ:`ǚ~qfni% l镠Y'm`}O=N*Ʒwܙk27J+,=yknWwg)ѯNogƠsG@bdj {栳^ߓ*p볺F)"Z"rm#hvH4Үd}_ij`mHq|ي8Kzc&`ųY#yO'&v6jamn5BuFT-yM·)n}3J'Z膉@OZ5 K9ўrvgmAQÚXW snia1gmy/ Du`,*t LlqH D٤Xs7_tD5C\v ?:WzMkd6rwxt'qPM=OYbNsN|OjcXzXSuͅO,AwFv A<(>~ad.`~2+@THMEߕ0+(Pרa\w:(k)#SȳynFExȚ"v볃ZF5j(e [K b&K\nJ|B7]uLcM 99;xp\Cn9q̌2ܣQ""[ZnH'UB x!T]C>6+"*[ FGnb'(Z^a^M"OVOHZpc @\?*%JoOг4%@o J Jk]TcH'G/m5&G0a5dlj:TFq~塓!iV!rאpn !K{+#Sij1Omޟ~z)jWn:A1f?[,=t#Q۷ԂfN/]ku黷7(-4+D}8GOjr!jD-yeń[Ъ;7FƧ]l=T3c/&n_gemiW2Q+nxӆnߌm×e?|{w<@naNć-~Wvohsl/'[8OP0br%!L}~L^O֥J:MWnN?e32LW`ЗӶѲb} ;&h+RQT,RG")x>6йo{(!02O 78ǐSƪW?}]{rᆎYZ0ygE:k'TK7'|![cuP;s֐tzjbaw۠Eνr]xG;N֓juSgp_H8ꫬSo;nCj`/L9d(մoH.Mb=VpxJ}Y WhzAPR Q@5gqA&80ыsfyGӜ8-iقpyרiD?8ezxɗ3KyS$E@W5ztu՛.QQAڭ=y;}mmsDrKA OK0R#vtzϺfs֏_/b| q+ `WAl rYLUhZ̿Hnq!k~S534g]Q^nSsZ`1E.![ıJ:|0XiZ0.Ԕ8r4rݜ񣺱F0!Zg A*\;6eX uVޡd_>!:.3:4u}ΞZmd8_b-/Xňza!``Tr@vs, tK34 p.n.$zAWP)P<rG*`۴~d)OSl#xy:2Ɵgݔ#wD6s{3rC|PԈ)$,oauÙˁOD;̏]BV 5ӿpj",OH=eq)xOhwM 3Mk ?9cHhWZU'7)^(Y'$XOȨ8+OՇ6U`y᢮sIkMj't.J@jN=4X>? 2lp.2_A * )QZDi2V{bIabv]0m ߡ~X45c[^n`iMI&&ghJ d^OJGԟV5dn_}tb^yaeP WO_z7βFӅ&8ikxzP-W~ƈiِ'NH .6tY5-YkalƷ7I׏仛A#mZZFλ岋PEQ}kMRNCrO%.Pjqed.>LJ>}\b;Zy2;)6VM#OF&tS7 B~BOA7PWOqKp6")Eҏz$@(I+=.?<2ߥ¢h20^(ʒ؍EٙG V~\GCq37y"q)1y'PZ.#ͳ>@#=0l/,s Z=&ۜ3鳍벱;i'K/#כk\ˉ {JutZtrVP%ɱoF}X9`iLw8;gEf3pM凛 N"7zL: f \/|zOG\p*+;X4~ZU""n3~JPr`կN*R'6?JL4nT-c]7e铫>ʲ*3Hzk;x!y.,sK|miZcNBLC0p#Gd^"N~G"./wuq^}gND%KݹXԮZH ;zɨ^KxfHhR5EViz i׆L̙E֛(:Ah= ׏dNjZG.fXj9ostD.dFRlM5KCHSg!041`Um8N`5RuL&-'6mb7ݚIRa[/XK{ՎG&͢ HkFh4imtyȂD4/qkH0>zpd'*[_}ؔCemhah8%OO5LK*2eVc&+e'Orrr0dn =vȎb(Ao~>Οy>-Psk= 'XO:n-O juY!,(^/{=f9>K*&$B_ Eu-,av|qzXhZwߺ3̠S|ԶZ[ҞXlL\*APԟ endstream endobj 2550 0 obj [ 0[ 500] 198[ 979] ] endobj 2551 0 obj <> stream x]Pj0 +t'[z v!>hpl%(!_BfF'@s&<95llF=mD> stream x |yw&w&aI GG r$ \ Em=xԣXzԪwQU43?ϐ33α `j+O-^yfWW6κgW?Hʫ*Ys/nPnZYUmJN {jSk4|l*?B/Pœ/yI>y骖'7/ݸ^2}|;z@~-QH}}U˦I2X_\ݲjٳSW<庶k:njp)3m_v1,0q@}+י/6L @Ͻ޽dasj28Padɡqޓ'5XFTp.t p80B4zɼ WaRvLe_K9Pgq'9]bA/ƞlES =2Q[XCGn= 1Q}8U44MeZXDݱn~/<WYnW6 yҳCh";<3 >uT=vFAH<:F]O%u&ugj"`P,& $ci(vP6y_ 4v p%`מ.@ W~M~^Q-pw0I- #a$ >S]]+IU fJo?c]]S\L;mbNt8m8};xw=fa\Q$?{P:?cg<}Pzƴ=#a$0FH #a$0FH #a$0ra4ȄQPE0JB,DI-밦sP&[OF}L2#yy7El)UJߖ3;ђuL #-y3!=GgWLLj0GJಪ&@U-ںpUmdP!WDR[Jj3\&9yy4֖߂:ΝS do,㫬|XM}HDa􉝟`%.g?]w'Ҁ?rYw`&.",qG!hpʹX%%՛}^:TUm%bnz_,#y6ʖeJp$X`KU~K3vb%uC]8[ʙ D:+Rx"K"yU.HՅCA}{B#bAWu[Gb-iՊinoӘ$ˈ(eDAM9hӦeU*8QYxk?k(pNK梌f$EZ1[k ֆiߨiK%Cr"D9Xp'UOiÊ'N67"AizeB|5quUpwlm_ҹ/\[6kOrKևG4SGv ] Çp#\EsyӾt, R*fhKQJAR nLX11!P&0YPрlCr[%Ṡ\`ǡ!Rp}k#j߲WNeT^r*W vΡkRg)Pap6yڤ5'=M^j 0GT\e3Po*(پ0Ș mATQa x Q-ա+-űoLd{S)@^$Mgc&ళ6e~N/_z7UPgPmf7faMI -ZԇEKEKpTfe$ eRT@ghtj46?4M_IY/vƈ-rezS[g'JUuCo,h%Gt[pg5('*+qIZ;۷;(@'&ĆYpNwv*uOws[nn3æhqhL#:MXǰaM4u2b5*V\s)Sg3#ڢ) 12,e - ͬl1âhrb!3411e142312aMDb 5 33LcPPPuOGTD3 SQw 4꞉0a"f1xX8BfC>7a Ch\X`Fl,Lg`|^2 Tk6"uA`gB &&4Aτ:-A͠&"Ѥ:A c ra $+U _ܗ '` :1-lD| _>f*1|Ȅ= 0}g?1 c-S {L.; o3uEF1:ï5W_1K˽r/0<τ`8se?c)>4S ǣv\ȓQ{ ǣ2<(# 3a3t3! beE- 3~p/=ݬ]Lc;`6 2ږ na9j[)jkE-C-G\#ejFm-6bm^ڼa7krV2N}+j !v.e}y1ke~vm 2le|-Qd3{&y 60[3t絳2aXͰ\sXWf[!V0,Zw EtFKVZo DAD3.fEQ녈QňQgE- QK*!F-͓PԂ;idh`Zp'uQ n줖aNL5W#f1dL8aԨMRT"j(K9%j #QS,j(e5:a")(r㣦Dø>=!?j0&jclea&IIY ?CC:UHc^fȌ20d7bHbp2Mhc2;-Afgd00tLErq!B5.B%A c䙐c !cׇ/1DXsL1~o%O1~bX1Ə0~` ?c?bw-7Cw1Ʒ1Mo`|]k}5b|P2_"_@>O`90>g;\ӺQu9'Q׭ctg{VzӵyŒGtc=co b0 \ЀGяǎ6<:~t=C m1S[Xmx4\L3G5eAMjH#WR+S~;565݊X}MDY{Vd4`|޺GMWovHJC87&AaR١)cCG ~~,X~0G6\ Oz<Nbq ?m\,Jo?R gCln. {!{_}e@9Xb'c=}waIƜE$1cafPKuuK(Nre4+yn' R*=wsfLh̅ys`6ZYPRheV@D*Xq9чal7f[<.f".m{/Ka'#P\'\x^Wq-CݟsQI9<,͂pL'$;ң#R xWp¹_x^UMx;>^fxQk2= n6l 8 AQ:<(` 9kϵ+'MQ rP!AeunimTpPo-|$ﭞWzKJƎ!&IV=P徴EEܸќ/M?_r*ӔL_s{VN~ҫ$]7dP.JB>T dz,ձLj82+ 䀻|t D,%B>L2!9@ g7  [`1҅\V=[w%7LxlȢS4 űHbL* -v,Qмt焚_iuL5MIVATM_sO_Z=v_Rܩ.RIMznƸۮ1sA^J*9dT8N/-ʗ~i/O[G< |ӑQg@^1>݇+o0%qf )5`>{x~9xךG9r9޻SӜ.'Dk&9fYl#&l*iD <'̓$zU%Ì'iӨ)?d:K쀽OkΛ=c'Ge&k<JBnlzӕl7Lkތtug݆})/Xdfs0XFYٞ1V2*V%'t()Qnm=AVb !v&D9m6{IJ>F۳]9iU-͉MN:"%)BTj[M6JӿN]ڻ|JU:O'd;7:gt:WZꓺIq(`7i8/S^FoOjmxW;Cfwzi{0a{G~w 9^nhK.mV1W6W1ĐK4|n<.֍Y@ms6kNwǍؿHPM8$^;pX(qˇ~8zgSAuX Hޟ>2Tۦ31)=MJ1SPjM%ޘ8VV7VC7 ؀N2OK;%]5LElvGAQQ"fK7ŕi?MtNpx2Cek3e~ȵszq7 1TkYMqWϨW߿$+M{(s*5^8c=2  GQWtB2lW ܢx$]5 NbWm 2sro^~_DŽԪ5v b[:jr-i +nn9/WKݵjO0-f]pOϭrӭ p`v6-YJU&Z 갨J}&ޛu'D0xdzΤb HL?qJ*jxC[t!v}Ϣg͛$tN޾Kfq,˥:4R?yfin_5?B)5vV\cPUZd%.fU"%W<̩L%AY2COH;ǾTK |O,S~4?ԍþsΛ3<.Ѥ tOXCrIY}B\(ds2XmuI-}xu*)j7ZW-[6ao9t-b= .̀C("$s?0eUz?L藔PW(rj_`T6&Ya_ZSt0mx1O/'fQ8|Uӯ3jR9q̲q+4:q%իku WoV )DJqerʋԴC׮bx]Ir+ɦ3̊Ei9mB8`~iUYV>xI{nʉTw]M[_'hݾji jZt[u__ iIv_ fX5nGͮQATmo@f!{5L:)]T>p`; m=z} 1i`sPjfͶU&"'-[J˶9':K9.n?'r˰'#amj&Z4ͩr)^:?hF́TMvk즊r'&'gUp?"ΞI˵u#VzDŽ)}i[kGj50@7:h 25Dn-)GAzoRc?+~0p!uv1',pv71Nd>#3hu}i#y{UҎI'jGqWU=Y=NGmomU)nCMTvOʱ\jaNkFA,~fb,;DcdO+EQ@l&98avmi`ue {Y@),Ǚf^n[~I}U-CNuqUݖ`HkŢֲtmwܴ55h1fFR%ݔl[ikt$ܶ$1D7NRY s. G.ETnF/% MP_[ )?zk&XOlT㶅 X;Tu7%vN< d ˥,fr]-7EYõܐ! {{M=p9W\ZtN6om]ڃݴq,vQc{A0zy[G 6_ve@rO+F%D~Y5"ڔ҇-Z%Ghcʆ}T|~r;) k%(<ئz we5 )DO]HP9Jݟwn[RkzuRâ5eKoXZZ=ռڲv,66zlPQ2xszɡJk5u k,.o*깢]T(aZnf}?JBO;;RuN3UǢ|ys}#JGGիlO)INkҋi}Ӣ\A(la M]fyfWfxlި'Z~,Y^/|Rhs[QR`Yh 9҃VѰ%/bOyYatzzQr":6Ë.xN2*a)3*:Ӯqz<$zf}9o\lQ1y+ꑗ; HDW\8zލ:3ōˏ](-UKN^8S,TEn!y{V3'^/mh3XBܾbs{]7(.◴`exȌNU֒v7v̴iIdۖr_05i3ތMp+,"CXt,Jv])}ygbX%xa:\ܗ|uɪYթqHxt`.Q[ *+ w[Ҥtv2['[R˒nʮ8хfgN"lmtmI3zwUe*"a.Og5 .te&z!B;Kz%ɏvRr93} DrUz -.@O;hSkzzYJ2 kC]iU=f?: M d97Kg_ rxV圸{ÜʫN{>$I5+b^LA#0\{Er &wU1&DF*.Y.bX _śԴ]1kjhla7`5c&"UiJ0/Tu̗$c;cuKux=1##΄ }u(0 g ͝&+نĔl"WAĝq+B_쵙bFi~a^Z>dkQQqa煖p 5!/US .ًyISycgywe=6^P'ש2AmkNq3Ueq /]I2x҆%2Om ʬHj1TܶbS~IiYV\s*ܩw, y$pOS~t`E5sR-;mn'ʚdٔk{/UՕ1nsiT( N;غ`8`weE<e'*h>MMfж,C,zg"Za^9 %{28UNx#UA(弥v:)Y ' | '{V:0 V:db/Wp.;ݺx]nvdee}վ˷)t]*y`ed4V:gz!UUY!^atXөO^"[\z0IfX~ ^QWc}1!5Jcϕ) 싍/=Tkof%P3^|3ݜ_1{~AG-ڰ}kڒ迀:n(^㕎PΔ*RxNw:7mA%'g1Ok>7ف3QS>kh钹S㗌M] b}(A[wKؖMd<}^@$Ў5UBSyr)O۳RMuދ|9RS,Tik alfKhKDKqako+o_Vߒ0'gC W*毘_Y1ѹȌ괺 }JMvH:;N<~>_YO_,)vр%M{~jCkyUstf}s QvĜz]`UTp13I} UIf ilH/}Ϗ^ϫd34oM׮`'c1 @~fa8}Kq%ZQ zn1lA/~SL",ﭒrQ5gIϲzI8k9n[;1$:Qi}Yi8r")u: MɽĊVLy ",2%3)Ou&m)x]!ePrlVr-֕I^ؒ*9j3ϋ$k[խ6jHDS楕0]59҈aAl5H DS u㣊=~#)1e/ =YlqxA>G U?u|&:nb $'=Jr#NRΈ:>+3l x1:V5RNFaIހ3w\_N]OO@nLdz fuT/PD$Dz #TbXjA܅-+M[) [ռ Fs:3ZYs:ݦp2Y2 *x݄V^O3\p޺V; +hZ[j'ݸf\?-""0,旿~싐Bǭ&*lHTd ~껗AB Zʬ|$nFMORBJNʌ茨yrOӟ4-%N1Yy03kXӲ݋Frq76:|屢ֲUx!)Y/L"+2Le-YwּWh/;X-:UN\ T="Nf]̓nvTz 4ވ51eV~Y8{G< M/Ϡ0꬚RCQu[n+,42{ ,.t`6Gk!xl KYm=,z8[m\ja_>џYZpEg f~!Vn3K?HΈRYeDSaV `NDFEx6blҙfc4+ʢ^v?k% WD,΀*M֧w/gK3CҤccNvz]AUprGFN'yΨ6iPdB*>17 JoB>upi̓oUiYN՜/RxRs<1fB$y "h4WE@G]g>pIH?*LfV;j|`v͎hN*|NXX40T77k'|'_C1 SNzs'H썼@IT8;TUV1prv䃀"0L>c6qz0f=$LHfz)Ղp)gP(nJZۦ):}0>w\kUUgd̯HYv Q8@w9bP>Fp TWٙ2oFO9C%~~3S:l6;YxE >&/{&o₹yf7˲?oE+`V' ]'{=0k?s;!#}f)ycIf|_L 8,A'",sق5,~(hYcY,"+ܣ>`=JG % Ux<2u(3ϝpM׼}<ҙ̑38Z:@JZf0IXݚ~Μʾ`p3{+Jvݳ`"Zvǻ֥Zv}J7LwXm u8Vhm:ַ򾭩}zWW.Ѳ#b5L6u-zNOMޘ]ǕSY0œs/ "?Jݷ)l̠ h; #t9Pdo]0 gdž^'Z'';@p1Yb4".̆# Of9V/뾾u%qn^sǾ=n8oLlUWbM ^{lY}GVsc,Tm=yݸ%na+sTOENRRJ@jZ[٬Gr߰=4zƂF=y&̮dH7fd;eT!>I'{չٰz~tdoñeDH_pFeq- ߛĵՂl#;u/Kb0}aY[ɬe;OAR0O*J L_\c,>J%P”ޭ61~%uN T2biR*`YmG ^o FAczm-v̹uAW/ bwH+n]>vS 2јBEZw_9QpV'Uթ *[2aוֹκt eWӥ"+ج)#ZkfUKQȠ쨝>h$Plн􏹹Bw| >YRNA-"+dmOfhB0׹w=\t~lY3ʖE{b9MW̽Iu]l\7zAL0XQ9+kkW-nʕ nԻd|f+.,`Cuus" ܰ+muCUmfZ(OnrKЃGFQ£m,4UХ)B)%XȔ #5,2a$_]J;iқ6 f8Ctݧ\vC.2\}WݳjUԹǷ5:-4+z1XY:t^[=Wϋ}VUH8{!y Y>AXFϥMpFErd,  Q1$t?U^T54%?slۥ7oFsIoib@og[@io:?AݺIg?nd2HBOd2.L\\Lߒgz2gLꍄ WlS聙>Џw19-zt&rE]Ȓ{}b t,G4:y>sHzrJ>%ҽGL  q:?rYYYYYYYYYYY8"QBH f$HA,Rck[;F\=C GC,uH; x\{ 8b 8$!pXp;\iA{5ڿN"  v4akicڟk[#d@ \=xB9i\)ɝ 4J^MC (%(|.(p;YQ>Ro&xP ҨZG'ܡOh< N!^-T >Gc#H:p=s@M>qxJ=`yyC/)L n}'/ՃT_Bcwk hӾu5B<=xz[:a`-Z ִnhP7m yp$`9tJhX\{BD ) )r`hH"51]8L(8_FtlѱeD\ p=Y }|z d2i`4}y qkA k?-kdaV[@_??5(i,d R@7)~>Rީ}p})LqR#*)a[%pPBvaT8][/B/]ΡP @,ЗkAsv@_ҡУY2.C}|}.L ~O9I@s87* =kAcF{,AY M>m+`_ ⚕׃&nEp )L/'5ǵOh?<<^@{`ЋaD@/<#'k7QfA< xH{8) xJ%i\M;AУeOnR#O{AcC),i\mCee@7)W#5<$Ho>l528 xr28 x3HO< H Zr@rAh @+86q OY2|zϧ>O]Hp6&f̛8yg3olMͼ7q6&f̛8yg3olMc:sHuXX=|U8C.Ƣ2 &\N tuqRUnBZ . ԅ rptUJJ {fFַqBi%rqE2G}J4Fn]S] f$c*4rը oY~yqg\'kRc^',ZNjyF@=F\Lhcꁀ.!~D!$=>.K4xj=L^t95zmqfΜ =ER[԰Jh|:޴biĤ5Zhj6[2 (1 sR6@mݐy%9dAa~4'K, Y6v\!mx*V'p~ܲhJڴ䫤]͇DMxOLwl[/AQxh|oC˷OC~rQhXZBZAVy9EL#ՙdJ^t魓ЊV"p1Ԟr!̹'#: 93'X*Wxq-gj Ԝo([V@J!ɰZS~1h]!_U5?O]:]_ uh},GpX_Z^oU5TŚ* Cjz]}eU,7" :@](J_ poT"zƫ2RcXC>7WW⍱=V86LA0E5(TFblK z4VqӰ=_`z.PD<024á+B˥bxUsC+uk5u*=؈ɛנz,B6(uQZ x=&DS +:/9Xa`U3}b>4%ѯȿjuΐ%Uu mp-(UC$TՐ?18)0YүkiV\_liU@fմ`>oD)_@+HFJolBXX](+Va^<wcժl4eeM(XP$nDSWj! TU$'`Y'&UuhPU$)<숤8&! MINFuz+WFN19R )6{S(XE25Ui:+1:W4D6>Nz sˤ7ɧu |GUg{<2J{$/|f&ɫ{V>+ʏAʟ{.qeJyzt,Xv9ݞ޲2݊8[ Y žJV~n`ϱثvG4>I5p[ U~),>8^'z^[}vOy?y#Ûx_?yRo SƟWf.SFXi7)RbcV~.b3bؤ(P-;brLU'&sħq\LjlAߧ\17Qm)pnwmp n;[p;n}oMnqbv%p+n55m#p ~~ ~~v۟_;#/ ܼ-].nEm!p SP쯧)H v#p[V{wۏۯK[Jnmp[ *[pknc p p zeyoR&^Ӯۀ[ pkn-mp{= ^nnogKLj1AlSAq"mF o{ۃ7Yp;07cie˨%~ nntjnGv ne7׀Tv5pnn5m%p6Gۓ9 >n'튇1<\ܮn [9p fvppp%ppp;π! X,F.B6nnA2+[}=v DH3}(n/tv5 V akQSu87Ejŀ:q(n~# ɿ.Ȇ{"w8p{};_BbElŀ۷/QkPt( T"lOmqrU-=Wg#'LXWܢٹh.)inmmğH$ڢ;%mm} 5ؿYA5mh ׄ)f34U'++W*()-+Ѧ\Yb}k@"X. EqEŢ[[d6(QɩtPv0=KTHl@uԆO90m:{k[Ymn/(m:miײY~KR6_i"Q.5}4ˁ۵BL#/f"R Md1lE d:R[Ye$qDKvmjFkV-ƌ6*Q SVCGe))Sar%Cژݎ%|2RB:lWQOhYB(c 1> Bhm/+NJFCkHpU ~YD^nRg.&W8{$ߢMHN |Z2 ={eT@L'Qy@6nHy vZI acl!q%i<̲u6⒥֡⚻3sDhs\h ͩ(00++/0 (DxRsVJ\LPUK1plP֗.2~:ڜ wn6QN-(im#k1gpH&#[ֆUc'G:79W{44 hST5ja~fSv:OoO%J^ xO,c0r(I}RTPb$Y;Vu:Q<;;EASƦf.3>Ц,"!N4BĢD,UQX%4wIA#3YW{jfᆞl~"-x#M88S B, w~l?N ? `Ǧxc{<l3]$p(gACH7c Bn?gvBdqiN idٺn2$OvǕg:=.q X] {e*EYG%]92~\u; M:}iN%:q-prAR3[O"F<H\k({l>5Ovve¬DHûH ʉDՒv%MfAcAa tMfj.I'el\2k4:=[$p3C,R/(h]]]p<_ ڵkOW^lh FtO~c+$/4{D] s Zb{X|ht:IYS^; OMΤb#7>.ʽX60-?>RC'5 Vûw'&M ^̌DMIXR8sH]͞{GI=jIRXQ-ioJUAS&eW/-Fi,]]{|{|oZygg t2FF~} |NӪl"FT ~N,`'^{y'khXgM5:G 6ѧSQbmMjUWme62Naa2t2.\]N?EN ū j5Rus7Q yc]}:הkt!2}V_QdGdL{ezDG鏘qJ]92͗iLȴnE NdI2LO?KYOd_Sg_ö$=eǹB_uyjl2ɑ6tb|y]]b^g, ,ogeCW-U=|rҡ'OćOu0V6nLogʈG@)>ݥDym??`Ը0{vȾ \G%}u=U'wBFiBe5(a<(=96y5PwjMH SD'͠DtjG,K~ۆg4>";E-F&;%#)jmp4b^=EaztG~"EoZ :2h˺([ԑl=)(ݔcYӞӕȬ#ÑHNIc\DdI:损KS(z`|"(wgw̛?aхV_ Г\\sQyuj&ϚLnyJh^ŏ[ }yPwO5m^:uEٕ\Q%ᙱ"P8c,qqƩۮQ8O,1qcJ$[gosNm^sX]9BPJ=sUД' ʼy/Di^ $M?r~`,\p}>St,@=,Ypƾ^77O+N^-5jB? =:VUS;vzmApmSmvS'k}[VBm=2`X-0Kju+R<%YoFO"5"Ʈ 7#JO[cyZ4wѸψgDj3n#bۓZYo1Q4؋\/3Ƙ V*Z=D-* !&GǸd}NӴjT6UԊzxکE/1bԣ~";Fw`xtԎԎ`ELˢ=FJ?Jht#k E#:ZF?{e^g;E^kpanUmT.eMSP6Ds^:MBDW4,ǸL!̕!\GhΣ{GM%|pj̪ i DGI;Kޒ[*4WIr7Ka$v%kKљ-/Ϟj:)HgMr?K:y:H3񓧆4";6W_35ѝ8ө!u yC:cP`t0]~St^1knq$j@igy2XAu͋sC,,t M" Y59Gn@yQ:iF+ffdyQ#=D< 1y*OJS9h+3粒.͙^5_(uӹ.SivƊf^bqыEoϱ+qk1[|,'\;6ۺ|Boْd?7Nh*ھ0/g+xJ+=R%mT\{JBY|۔zz_l<'@~1s!?'@w.!JM95FXk܎'gSl8(>S%_ICoo7лMKn%ffbJzK=jT|}mE[џ]JzfsShZ'W+h5 Ath 0 _ˠQxu|w_FwXN^ ݫ!F2xH9F` /kmQǷ]4 l7>=O'q8!>41|qJz t=}>AO碗\^˅a2LE4ߋT {no7onb W uA! 6 ~.=c; ~|3e'0Ⱦ0a_> ;q ̍2 btېr㰺8>~g7oG>Oqg`E=6gl72bFc*ܯga p kw!܊{ o?p>[QC~oG/;.p7mp1>>a9k8&/X0࿃ cƌ^hqLspXv`{vPXьrX.'6qXf,e2{`=Xf,`iX,m6+: ba1}Sl"0A]XMVjz`5=XMVJc%XbVփUjcR=XFP@}z@{bPHKľXe}^G)fSQ(]|Oa?~4iz>`E޸ZO<{}7nsգG㘍'$4gPYsx/E<1 ~{ K '/*bʕVk1uu c{3b)~/oT8OZr*Nt| lBkaa8GHq \uK]uKOdp2N4׺ Tlb+[ג00<\Z]D%|lcˇ(_ف2g|Ak 2d $C&ɐI2d $C&ɐI2d Ü#g9љ9љ9љ9љ9љy3s<3yUkNƊU\,Ņ|5};{_X,Mo4Af23̌ef,3cXf23̌ef,3cXf23̌ef,3cXf23.7";[dgl]Iv6&$; ٢:ڐ~04mJB-Vԅ&$ds,c%d煡2,zG73de~,c0T2'$SBjhR -E5t.Te:aHUĪ"VUE*bUXUĪ"VUE*bUXUĪ".ѵn [1-4۽[ >"b^](VE*K7xg}6 -Co qg!&5*}}Ȉ$6q8 qN)8tO8gq>q>/\Ɨeq.E+* +Lm5o[܉ߡ3qxa~W󏘅1OI OiϠ լhx/b.%x{^ѷ˰˞XUjzTJJQ)=%-*QWUoYv+uEXc-,2Eec`mT6h؏8C0 Ǣb?# izznb㨴U0F&49:<ބSEe%%`>#p$8FK$\+s%r&UR=%r>a R1T̥b.sq( d|8G(c`nVjnVz&Dq 5(9n =tkW:y1Թ˰o{|,e yo+a86\ʸoy|UgtmUx\ o~vAZq޵5}˫]{>;ncƦ׻o?o$G'ttH}nꂰ:u. \q߭w<B<~ ֢b֣Ј&4ЎlB'q~jL.7we>zS_Е}Rod;;1Ÿl?/k½p?xSK~XMn#:س=;ulͅ,6l6l7o6~/^ `VlNlNlNlNѹ\Zrr\ڰy1V3)|:|ЍRdhlw"ٵ]ٵ]ٵ]++9]JNWrӕt%+9]JNWrӕt%+9]JNWrӕt%+9]JNWrӕh@+Z)JV R22"*PZ*T6u>o)"/{p!i߸iT¯yU˫Z^S1S1S1ԨF5*QA jTPԨF5*QA jTPԨF5*QA jTPԨF5*QA jLjLjLjLjTD{c~/GGd9mӥ.4(+z/r/r7Qbo{͡͡͡͡ R/)|9_wl49Чb7{âԏp#~|LoY6~iX4~yX4aIbmJB-Va ֢b֣Јf="hC{ULƣsϩnݭv N/, 3=g9sϙ{s3=g9sϙ{s3=g9sϙ{s3=g9sϙ{s塅ڵ^q ͍NQ[?čmƍm>禍BWGqgwZ"aEX-jVZ"aEX-jVZ"aEX-jVZ"aEX-jV::CU|Km裼5]'*QS/o|[DU%*QUJTUUDU%*QUJTUUDU%*QUJTUUDU%*QUJTUU]X+FQeօ_Mb.bqb:;UY,Y,Y,n K݌;<·2^MRw"'o#5~IS\RE{ ;S9<"b^˘W*^C5Xa1jfi^7c~Ra8"op,B}6܎J=-uohJ}qل[.|_| _ǥ.7-\+p%6U_]|p=y9O0  } 3p7{0Gy1^|WB7Q7 Lhz*rO͍':9жԯ y.gt8Ué/o-vd_iNvTB5V {C;۹vN6r3͌ƊTcE"XjH5\r k\.p5\r k\.p5\r k\.p5\<.py\r?~.s\r?~.s\XUk5VjUƪZcUYYYYYYYYYYYvs~qs %+?/q{B`;8n`}B '4Nh8qB '4Nh8qB '4Nh8qBD1&bLĘ1c"D1&bLĘ1c"D1&bLĘ1cdnV]^G>Sׅmv/ړݲ@Yu UtUoĻ'R1BGw~ފGG{hwE0nj9f萧COX՗DT;~YD%*/QyYWF\qeĕWF\qeĕWF\qeĕWF\qeĕWF\qeĕWF\qeĕK/yK/yRLITNrdBӇG*+*+*+*+*+*+*+*+*+*+*+*;TL;z}ʒv-{Ԋvke.ܗz?ԧB.^??&t]ߌNk}*]EReaGj9V+ej5v$S+W}ڔc>0Jn88ӧ8 gmšgps%񫎯ֲjǥ!)[XuaGz4`[6zކN׈Clsȇ//ǁ |LJ谦T+q}B}Wy]Q޹hG_hΧ6Ps59H{l=j*R1bAJNN. Pn Pnrk(@ Pr(r(7@A Rnr )7H5TZնSm;ź(R)B)B]JJB1b )Bk(Bv mv ё9ǩW2y eLQd(&{Nj8<#$NtqxP_,eq>C W' '2Ty@0-}n({\/r_\s~Ooo)̤Wty'[m!%FKuw=t\vnXVbɋpWZ*\elr&Wi2 * Dgtf3_s~Zk|ә-lwf3[378ٝYjX//Jnz Ԋ $6Xge&ٳIl9d&YIeM^ë1#2fL)#2eg7q6_^sw)WEP9b_`>J{.W]ͮ!C\ciP PU4z..\60c>9M}u|#0 g Ra'v:{T+lplDsj dW}j Ԧǣ,lnIJ#¢8*q:iߝ>+*Is-?]rۥN;(=D!uA!j穝WA*Q1w㱞9Ԗ__Koļ0ĝowg|~#Ё0/ k7L8bטkQK!JY;ShG(>: СЧ>7M}Rԧ/K}Rߞg>}hRѽaVL܇Cx822AY,.ɽX"a-NJ0W6mOzChEZЊ 6-ܙjwD6[]%^Ic ܓtL0~ڊ۰=ܠ[ͺN(7H!4Ƅ:d= Ku 2RNn~lZ_-ۯVLMOGqhtyp*Qܔ>cpzMz\j%W+UOy83ܑgqV8'ܢNs}О?@e#WׯOo J8 G0tv5\|+*j5+Z5nL.Ӧ˴e+kXR ^`mhw&7;v˶qY(y۰=\J/ΐŕҾdUvFᎲs!T7i wK[fO }UCjT |8{^?<,?2\j\X~׎'q&Dq N8§<>G<)?|\ / 44|R|^._44˿zxZ|ס_vuazy]tH9y]wu:fhmhqtzi.=Ϣt[u:ǖѝ kʰkϮ7:tEZu7[s*{TU>Zר֙N֩ԙZ*WժE**AR1{U=`N[hfY-צ˛n^,s: :rds=Vͧ[F0e| :Q=VȵjuZQ B y.օ&DUIX-Z-Z1Mt)uD]e@Fgnn9N[rt]!GWc{psot_ kDMre\1۽ݪRoUP|XDfJﲪSywɑS=`;UhU1aWQ\-gZL˙itݽA(b]AnGut.]Kɥ:9#7 ٥{랅]ŝf4sY׬5uz]^׬@NYSߥ6~ _׬~u:_Η2\Fkt]AWt:]-5f YnV5bͺX'WHtu]URԤ42tu::e\jnҤsj=Wuu\]]FnQ[EnQ[u:ENѠS4u:EN::bNX>7ڇP\ER}T_| @e sx>sTPjLTe IT,U1KUTUDURdfsh5G5^-jQy<hШEeN 贀Fsd{"gqiAgu\-w""}ANduf7lvufWgvfWgVf4lFfkFf3l6fk6fSgf뮨SgˍڌV4LVoah9h9"Eb-#f6#"1z9F-O>)Q7y؈[7t&ݹE|c;l><9}ytrx>(\1Y!N]F);>;Yf Ճa}-}-ѷa=*q6]Q3;Aԟ/x\KN̏&Q-{y( pŌxB0*P-Tnr [(b P-mnBEE|+|pF>^iȾǾ*:b޵65!;!a7b?dk'鱷ڍXFv#CCV+݈=K{&ΈUg7Ju3x}O=j>zTd.g{^{>{!{!{>{{{oooz>a@N,N,N,N,N,N,N,N,N,O^^^"EJQb=@=@=@%vQbgD5gYsFҤ,tG,#bKϞG?%:o\s-ϵsl?V&乓Nhl-5",2bat0=:INnfng'?;]6]̛Nt|C';INo}';iI ˢmF6Ұ4la# iH鞟9~ч~d;Q=juѰ STs9m_c5^; *{G۳7 TհZ?q06.], sl7vqͯݜG1kcGGY2$wWftc[x"z?}؅ޢc$Ndp2N8 | ƙ >9sy|E3/< p!.Ÿ_WqCtPћaQђP]bcEX\Pa'c| BcxdHt؃q&y'ŧ )}4܆Jw>%)y c6^pmdmhG` ĮjK^"v57Wͽ\Zu7W//xL@1`OOOur:9~N_* zy~}hŝ 3W,DWxsaJVr:S:S:E,PE,fџƟ!d` ,E29<2'G{"?OS[Sk~}ߧ~42\*.?z otWؙlq}<{/pn-Ŀ?0EٹGQ}̜ٙf&("*p*jV\TTA-J_-bקڊH-^ڵ,hX Hذ@6lv%j;xyj}>v>gtq䊩䊩Fbl8쀝 !5Z?#ϔm(%Q@n)%[hD/&z1Oa(DZTPTgRrG)QJq?c c(0s92/3P0΄|=ADD=f]MYhz`R>ߢ`}덜 [s Tm*q;PI:HA8)]'NRH'?'XAd2'][`C||W'A7=d g8΂.|\ ɐɐɐT"{^<|CtٴlZF6-#MȤȤȤȤȤȤ!:dRLI2C&uȤԡ& jn& jn& jnu]jO>ק^S{}jO>קdddm6C#4A3@koUsssssdR2z)^JFd8=NFd8=NFd8=NFd8=NFd8=NFd8=NFxxrR5P\2>RSn*FUp S!~@ *=Կ\J%բ+բ§ZH_PIT|7¡Z8T jP-Cp¡Z8T 7F}ܨq>nǍQ7F}ܨqj1˰a1QQ1w)gRܥjPC5rFȡ9T#jPC5rj>^ǫx5|Wj>^ǫx5 |mphE+•RST8:q *޸PjU'p *t*Pa5 ZC!8@2:;NTJ ŬA;oa ?-N¡'㨨.=KO.=KOPiSiSiSir`6<oշ;Ϳ8srp-T88N%S˙3?,g~XNe3G,gXn]?\W>^+'s>^٧ϧϷb}*ܭJ̾5f#( _@i?Oi?S*վV-qcxlJqk8R>~om[BПpqqsqsqR\"⸈8.""⸈8.""⸈8.""⸈8."",9yp9U8 p7-6T>n#ۈ65s^ XRq qD8j/W` Wr[ (?1K:5V\܊[qq+.nŭV\܊[qq+.nŭV\܊[qq+.nŭV\܊[qq+.nŭ8V܊[qp+n8V܊[qp+n8V܊[qp+n8V܊[qp+.n8G"SiD1N,nԦmRvqvQJLrTVo5Z9Z^[O>qUlTE?R ]Mix 6 iA T У}VOr rP5-i2ϒ9U3:xT*<6ג^7ߨ!PELC!8BtQj(xRm̃ 3,iI{ loXh3!iȨhJXZ A@ah=hB+Ru*>Uk!>|2q Reg+U[p&ɪ&D `P Uv.@jRPin_@Bx|~o^S(|`#lO3Ͱ>P UvB5$P uzS\t{ M..nd"揋?.bU W̯*_U][*3&d} )kC6 +kx5Ϭ4{:M* mf,į,ğllq l_}鴁R_.oMP4t[ԇ2Eŭcq\+zzsT [uuBT9 2.F/)*P?jn1^@ݹ3XzJ=o}guUhݢ +Fqkɳ?ޝ{Fadfo~lTO\;(o+#h<*ŏh) 7sN3F}[|l %gKϖ0-aNVܫW sZ%̭JG0*aD[m]ZbU Ȼ?$fst{mFܚl7s1AN9Mm`2r| V3ATȿF풫r@sǓ5"x&|ҡ ~鍽-lBv@;GZ2ڕ(pyu:=ᓸ G6;-#Od6㭫طwў?#P9S7r]HU8cdUh\DOpyGxB=cw+wE"mlT#9{8[ 94&bz1'Bso;oC2'6gl%x`kmˑs1.⤃{G݉C?39vF]6Goej 3(y88\=}jo>FUxfLkX#NUFH{ڌB3*VaģRF9;F GatCܱ;wiIa'wo6WQ+LqU:JqfWo3U UAs#&PX9Tysu݁2QFPz,zaѳ^J/y.=1b>y,|PKo 7CRJpEȌ|u rF@2'dn_ܾ(W2dn%9\ +VsjZUCWm_|g[o疮HE*II~~v~~6R[_>CDӮ]_M/k7hMN)Zߣ-=Q{C_joxh!\WRhH]J]iBmt]dCUveKHz9@>m<[>0m!նrhy]^*/vɱzF\vm&ӚəZ-gkq\ _r&ߓi}@F#rܥSdNJe"}8C?m/32rcc>ܨUFV /B'+BB=Cu=!__j5 } }jׅP{],LM0)͐ҷE4O4{f/6O3lQ,,=7K5OxWѯb=~TU~`z }}wKӻpۥg/8ۥEuCc<}PWgvmt(3䧂#3c{弑ƙ]'Tp^[w)#ugh~w<ϙ9#`;Ë;}wyw7|;:g~@K]wl; vS7 0XP'{ol]ܿ*cF5f ~:X;y5vU3kuk:ݖ?Ux~a X 8ҾͰ>P Ui !  { dٹFh-9Ѫo-hjYBNPk-yȉlOb{2STT|h&h| * |mphktRC= `787I|N;9pj53Y+_$b9^ux{%Zc}P)j   khju KPocP<||O\x PxWQnTUFQnTY*kPe A51Ө1Ө1Ө1Ө1Ө1Ө1}F5G_W U5&TՄua8p:M[E9Et1o8쀝 !5Z-(0(0(0(0(0(0(0ZPX kA]iԕF]iԕF]5 uQW5Xֽp`l[O$d,,eQVz1k:3o`}YP)k 4oGԄZl]vK2D}j{,^r5䀷kkTCcXQ5+6䵉/R/R/R/R/R/EVtȊ:L:L:L:L:L:L:Lh+ZV+jE[hU,9A$o] ٞdAh&fRh&fRh&fRh&fRh&fRh&fRh&fZL+iE3)4B3)4B3)B/)ҊFRh#6Rh#6R"R!Rh Rh Rh 㠁heSO1)?냌A8'VƴUL"CdY2D %CdY2D %CdYʉհGm~l~l7Do#H6Do#==\MWp5=\MzDGzDFR#6Ԇ6iU*K4g,ќ%DshY9K4g,ќjzܿHl$o"ogDHD(Y#D\H2(ңDUzKj*K.D.D.D.Do4H4ҫѫѫDGxDG.D4DO,ѓ%zBGg6ڲş(eCq2Q!8D(%R<"#R<"#R<"#R<"#R<"#R<"#R<"#R<"#R<"#R<"#R<"#R<"#c7df2v31czƼ1ge6Ƽ1oc6<ǘc;age!޾߱_;( ~ơ((((((iC7m覍NNQ=:jCG9tCG95R-EZZV E_Q"#=t#Zhfhf({_QQQ՛dfz3Ym֡:Y6뿓fmf]֣6tE9tEQtPY*@eu=џC QB+JhE (%JȠ JȠ J0#lz=CgJ2yu9.Gx~ެ7kRY7i9-##2RXKb)C,e !2R\[.-xe2biXZF,-#}D!"RXKb)B,E!"R_RJ⿓$;N⿓$;N⿓${#GUݱ~D~bqfF_+C|e !2W_+C|e !"W_+B|E!"W_<{Ϟij'I<{Ϟij'IPPB!"_9pJӓ(؋ӓ$>=OOӓcxq!#bXb1B,FI|{xb1B,FAubXuo2bXb1B,F"gOٓx$=8͡*;;udH1C_ux,e[BCUlf}#Bic4C ?(9c(9_g2\'2T<{ \{ڜF^Αsy9G^Αsy9G^Αsè@}E5(Ey(CQȋ[PfTUmFUQfH?ď$#'MT#MŇdɓ9d<#Oȓ9d<#Oȓ9d<#OPfElFǨW0f1>vmvmvmvmvmvmW%T!UrHR%T!UrHR%T!UrHR%O|k*8 Czy0 C&j*  *ᐜhސ^RHA']RKA39Ӯ |C*ߐ7$r]ݥ ɣ::\˥\˥\ǥ}\ǥ}:~~^u WV•pe++\Y WV•,se+\Y2W̕e,se+\Y]^^\Õe,se+\Y,se+p>>,se++\Y2W2y!̕L.seBrW+2yg̕e,se.C/WV8̑Y2G9̑e,sd#Y2G92yGb G5foN>N>N\ÉˉN 'V8ωݜ͉ݜ͉ݜ͉ݜ͉ݜحKCnJvSݔd7%)MnJvSFHvn#mtDL]ȺE-}c$:H{xE#_og˚˚˚˚Z|Cq$#YHVG:Ցdu$#YӲ;ݑdw$#HvG;ݑdw$fYYnef#k|am5h[m5h[m5h[,di$K#YHF4,di$K#YͲt,,C#HF24 dfPj1ldc$#UM&F21d`$#Hn滚qZFp3da$ #YHF0k7fc5}3xƫ5^PWE-{/ųv[vw-> 'qHdž?x6jzE++d%ιkfY㢛+(+[+((K]zEVtɺF]6h6n6nc$DwLL'&oLQ͜t۟?$[dwO7?c8>'Dv;qd9&ˎ )FD-:N⾱H掌h$sG"?'DX"A6ջ'}w:N;O׈6P%szwB|_L/M*L:$7P|*mg쏈5"Z=Vz3r{ۨoNNuz3)y*qt$Xd%ܪ/Ș7&|D|12UTRE$H("QDƥ߸~TE~/ȸUd~:g]svź 8è8è8è8è.d}7}7}7}7}7}7V0*0*mguaYe]x2x˙ R\_WpY_e\el -wsu9_83Yd6[qY:g)nAN?8Z8Z8Z8Z8Z/ks-崥ӖrRN[i9-i9NqZr8-i9NqZrcwy7d;|;[Z[Z[Z[Z[Z[Z[rܒ%-9nqK[rܒ%9qG;rܑ7両Z! K! 9nqC 7pCrܐnqCrܐNX 9.h 9.qAr-k\ ZF\:(AuPr\垧{rSy=O>Qr}3{ԈozD)7515Q.\T]E(AuPr\:(AuPv9=Wq:^Ƿ9vKrxۯ\:(r\':)INuRr\(G>Q5{rϽ ŵ1˻s,N Իz^':INuRz^':gq~f6M_?k39Nus6׍|>_scύ|fۯc֨IN*vR3uSg1uSg1uSg1uPguPguwXgN:YdN:YdN:Yd~_{~w~r{Ixֈgxֈgxֈgxֈgxֈgxֈgxֈgxֈgxֈ/0Y#5Y#5 tHgtgpgnfnfۃqF6kTF5kTF5kTF5izZ֯ˋ6y&/EhmM^ɋ6yf5GFQ#ʋay1l F` F` F` F` F` F` F~a#?l䇍pYToIH[>_5BK>_EBKer2&wNi;mrMɝ6&wNidJ(YdJ(YdJ(YdJ(YdYJ(YO1wiɣ6n?x˥6J(]g9~78~۳qnmS ڨ_~_~0?{-x)"o-!w4rG#w4rG#w4rG#w4rG#w4rG#w,Eܱ;q"X c!w,䎅ܱ;:;2ܑ wd#pG;2ܑ wd#ZOFF*7RʍTnr#HF*7RʍTP9C 3TP9C 3TP9C 3TP9C 3TPy!3TNVPPv!e3P5CF6R5C E3lfjff#5;f#53P3C 53l(HF5RY/o .ĥ%.U< ~)i ~fz܀p3hNé~8܁?a.v܉y ;>KN }B,}xat,888888)xDЃgp q38nпIդjl5iv/o+DZMıMW?.><7p4Gǂ1qiu}!i~A0-Y 8Su]u]Yu=uk랩{&n}pIApi]಺d=d=d=W;þ 7;LՕW?^7sܞ n r 况cpBxrzDrz~=FTrzk׃k׃gk׃`}rz9v=x9:6ׅ7ߦ'׮vN]O\5cI\#v=X_J?RGwJzz{ߚ:!L+ɩSM/uj)/H_:-}ks3S?O9O"<5ǿݹKG]oL}m=d73ٺ~jۜF395]x]ds;>윟m_~K]mΪcsŜ|+W޾|ntV=+>j6g+[ǭg*걾~QI}cc?ڵkׅ6d8>,qJ8u/NѮ]?wץx> <L~F9C/%G%M^[~`=|tC/9]g Z<6Ɇ9m$&^W<߻|ۺ<7g_=%I~8&}N[8o_:uw]|r+qlrџY7t.ϻm\sO|?Y{'wr.M?n5s]<_>w]rVOcrk_OFu4GߘD2+Ou$F3m7%Hr}mU_7㵶mIm:Zgtv^\rWr̃5d;3I$Ӓ[[k&n[?;ݲ>0{nT}RGT±ʨ6&3v$$kוky>?{3qwݕA}CB10;bv›bvo{d@q$8_q,[p"sZp.̽,Yg??|q ~7.\kU ➆ċfՆܟxhptlan sgN?Ё1tlc}nߏ)CpDq?ıChreec/S gr*^aE8s018uqnfox}xcxo8M5qSuL#]<7 MM}u;O8- ~j3L8|8gls}}}\p1.L\_21Pwۿ~9Js|+V4̹"sȜ+2̹"sȜ+2̹"sȜ+2̹"sȜ+2̹"sȜ+2̹"sȜ+2̹"sȜ+2̹"sȜ+2̹"sȜ+2̹"sȜ+2ljq"s'2ljq"s'2ljq"s'2ljq"s'2ljq"s'2ljq"s'2ljq;"G\!={2;~&܌eqGz|Tx _$V XhW=^Gz|ѸqFxٸ[>oo{`k/8~poOxY8qNp.ӻg8p.gwxK!H݌Hm-.; Y |2{q >L >#T8Gh/8_I;89 5v?-YWg}X~lxahduֿr&LߙD3~g$I;w&LߙD3~gopJ} /`"%=`&?fB06 &5Lst ߍ+F>יP tsا_Yk5*HXx {Z)8|[l?Hޫ)E=g̢Y3zfQ,E=ov|'8r0 LC.=KCЪZCzhu0Yg0x9 x( U=Pz@Q(E=Pz@Хtu.K-B-R˻.W<z^UϋyrNVUϋyz^TϫyZ5KM/]jzޥwkj>??wU5Wq[|f͇5F{Yr`8g[zM: CNÉu>ǽu7WnN̸ҸǼ׼׼|w3 w`.o lbY<0!<r<'X.tczPSX^QXeE`⁉W=D35܉ՉB'.ƃxK0:"Gt҉y<ฉ7&rDmm"M䶉6&Fo\NG՝F2ޫqoa*N6&Ioǟ *ޢ======17foтߡV܆#2\p:pw|tk{p/bX\!Tg].YKu֥:RuκTg].YO_T>X^QX:uѫ+r|2~ bKWוui(kq9(kGu9Z(kUSSSKՙzCB10q]5]&ݱěs>q)/ށwb? ?`G{1/8_q0Jgq8gyqyq.E`r\+qU\H]k+4׸p]ݘs= (.qz\׬5qz\׬5qz\׬5M M M M M M M M M M M M M ;owNPޜy[zmꝷ;o7wVǸThǝݘb!>܏pvqu'Ι "*W˂* mouU~)RoV@Bkj$ j6LCLiXZh3m-FL(*~9s|?{d|VP3g@k3օYcXq(6b$ L$ L$ L$ L$ L$ L$kL$kL$kL$kLr}6鈛tMl)4[ٛg?{rVl6?ܔ# 2iSl7q҇}(pQnc_J[q᱓lOOqikk _W5/7q!*}j\un[<6﴿0lH;FH;6C# ?/v|c9Cu_U(`FQT::1w{[C|c?O|?'\7¦wvmx6]ަ Іwh;Mx\ׄ5qMxM)v6Ÿ|3Ŷۚb[SuD]ÃX~|j;^y$ҔDdK)mv\ݮnd% u\#Fk۵vmt6MݡBǧ_=;bOdϾZGh42;rO9§S'O>?LSԟ_u{UO ^MxuTՒZRUKjIU-%UTՒ]7k+5ԴvRNjIM;i'5~PeeUVVeeUVVeeUVVeeUVVeeUVVee]c/5Rc/5Rc/5Rc/5Rc/5Rc/5fPcU6PeU͒*Ҿ*ݫ*ѫR&uʹ5SfL˚XkV\͊YqݖY0fu¬N :aNحv:a.ت ꂭ`.ت ꂭ`.ت ꂭ.8 Nꂓ.8JX* 1°֊ZkEZQku]G{t]GuY.el%(x|E 0JA ^[ ZVnUԭUQ*VEݪ[unUԭUJ_aWX+V 1j~_*R%]Kt.UҥJTI*R%]KRԨ.5KRԨ.5KRTIuXuXuXuXuMx3ނ#q18᭰xމ8 iPw NŻqN{x/އ3~|g,>g| 'I| g?秢UtW*^E׫z]UtWuOѫtI]oRכ&uI]oRכ5 N,BmXwn,FDq9sHeDY QHd4Y,MKźd.٪K꒭d.٪K꒭d.٪K꒭d[YV܆c܁kt͒Y5KfI,%]kt͒Y5c]35c]35c]35c]35+fE׬]kVt͊Y5+fE׬]7Xr.G?{G?{G?{â~XaQ?,Ei/qi<8abx«[uəcv l:c[=}2cVga;?8}ؾſ+*9z&.\\cp.G#ֲzbEO,&v#TGӎc^g,:G3V^XK:cIg,%3VtƒXuPIg,錱sJ:cIguƊX+:c,uݱ;tNJ8;%ݱ;%ݱ;tǒXc1c1(ł<9UtV*9h1_UܣR=&RaͮJ@+Gτ:]I+t%.b4}Rީa^Ɔelx^Ɔlx)^ʆNL: g'|‡| 533˄ۙp;ngL 3v&΄ۙp;n/cW+lJ6|~y~y~y~y~yvAq |\&4;.n&]`&]`&]`LI3~&Ϥdg2<3<3<3<3<3<3c$L;=fDžn)-pNpݒ7/y7/y_.y B;"uGnK;"uG.K]+<~m۫0@dHK)<"öwb:OLi ^bXuÄﱆ'0 k[H;"}Gu:H. Rw]$u2L$f"1HDb&3L$f"1HDb&3L_s92ힰTr%+\@%ݩSl!z쁗`O셗bo}~6N¿_—93[L-S|)%uI5L|$0RWGRW[6 [SW\Mhw]<j%3n_/Z݊CiI${κ0l5b% W5 D&uV #Q(*HaP0fo V/X# ~i۴mzkpllI'V@4U\ Vq9lb q_:w_(۰=zގvY]c7 fރ_-=3m嗏G{μ7ڼ=sޚ1v'Ѝ_"a{gqv؞:bcv; UսEPNCF #Q(*HX18~ x qlƖy9asJ:jF:jF:jy WW ^g~4w n4yn47ߍ6`~7F{i~4u:s{`no07oO_+}ך;^fG{Zugi?_w5gXl4](*HZg33יuf) O!(k:3#z«a>DCd>DCdDfAdG׃Rj˸,Ȫ9"ZS|jO+SK495؉'GL}S&QL-{| 3gx3ݎmgmL_ovKA 3(a%̠0F a)K$)Kt(K4J4(KJ(K(ׄ1lWM^5իz4/eӼlXVp2N8+>O{?g猾e\\\~}* hLzz_?W5}^_I~R'yڮejru1|T.c3g??clY/3=g5AbX+abX+abX+uz:W^u(t)>80|pa>80~טpa4̙9:4̗0OHƏ|3x<{mGm׵SϽD}Y_lMbͻǶ)߭9g3߃Qxd[q;w{t#~%XfYl+fYl+fYl+fYl+fYl+fYl+fYl+\F܄fͻq|9>m6Ghs|0C{K i޺a_aW8܃C'd0 t2N`:L'ϻ.K?ϻ.K?ϻ/Uusq.<\Kq.L u0&:P`BL u0&\ u77&7xs` ~_a)~eX̪Ȭ̪Ȭϼe>msf>msf>msw]y0t]z}^ߥw]z}^ߥw]z}^:Y['kdmuN:X[k`mu:X[k`mcփaլX~B(bu("+ʠ&$dP jAM2I5ɠ&$dPӬuh 1bFlcx˱x^C`,#zk:Pހ70#18Dž"K.2bt:ΰ 胜#')?m)Xr9Flys>.EF4&vc9vc׹j)Yv.g<5E߳}on6bC$V>N3C1C6w]{\sumDS$#9=%ӑt$#9h9du$>k֟u$#y0"08oy#qHVG:⼑du$"rZD.2o"&2o"&2o"& c3;cƱ9I?}-Ćh S<86)yCfOۯUJG<93sA|"ۋq).h31Be_Fe_z܀Ͻ7{5̏ lq&M8}~\Ș yYj̰#(Tݷ5ud63𹶺a{XUNO ZC q|ħ<3X9}_9Sb:֜gy֜gy֜gyּ5/gYrּ-^˖{r/[e˽l-^݂q~gZxCx(a1*xIImRoY1>f,ec}̲Y1>f,W3˘Y2f1YbCrU* 2ʘUƬ2f1Ye*cVʘUƬ2f1[Lbń-&l1a [LbcŘ-l1f1[bc &l0a L`6 &l0a n uv܁V܉X S.܍=B7C#0V< ы><~B!_^z_/e쯗^z_/_b/f1_b%/a K_%/a K_%/a KccoYӯ1CxXKbiC㳥>[˳<[ekygkygfyfgfyfgdyFgcy6gcy6g`yg_yg_yg_7uŌ+I;Ҏ#3q%kq115ƸW̸b3qŌ+f\ JW̸bm%l+a[ Jc[1ۊV¶mM^َa a +fX1ÊV°0a% +fP JT 'ބ7-8214ƒXKYR.;q YeKYuo̐Qe/%ӝ%>4ĒK ,)0,3cF}̨1>FuoeQ`CYƓej-l!f C,!B$e*,ax8 x#dm26#q18a]$"a1E,bf3Y"f1E,ƘccL"f1HcC/cCLׇa0)L!a SHBXBn ;c13 f1 Y@b$, fcߐ=5iDȠ{%{;|% +J氒9d+JC?sgOR'0 ` bA 01  2 b+ *ZuhB31}as1}Im?hŝX ڰ? <2c,R]}~Ѓ57ȣbVP 5VXQ+j`E 5Tnjb?]GPʖZR+[jeKl-4–[bKCli- !4Ė[bKycK9cK9K!ɘ0cfLÌi1-!KKƴ1eLs\41eLs\41eLsܺ}…u/þx98+q ^|fu>:YϬgV3uG7x Q8Xxxމ8 88 =Gx?>3aY3uL5Sg0o.2o.2onu_?p1\py9p;9p;9pN]]߫-7ᇸ882㓤LDCt] :|/$ʒDY(KeI,I%$Q$ʒDY(KeI,I%$Q$ʒDY(KeI,I%$Q$ʒDv7yDV\+y.ERs(n^7J׍FuQz(n^7J׍k+Jk+Jk+Jru\z]..^K˥ #H=Rl#H=Rl#H=Rl#KRl/KRl/ICRЂG—<6 C#x[/a[$jx ۰O:>O:>O:>O:$o7IǛM&xtI:~D:~D:~D:.Iǥ{ +/^WckX/57JRJ;N3̔KW;_]> J%z {}Ѯ{o{}{2e8 =iiii{;W7~isu8G"/IΛjsd#Kyd/K潒yd+J潒yd#t.EKًq/|_s:s[Lɲ+_n8u~^.ˮ~3Gͣgy<˲7'nq\ge6Gw^_wWV_Y+;,+efaY9,+e7`#0؄E !eec2XVَlG},,,?[ lM7ؚn5`k*ٚJdkdkdkdkdkdkZkkZkktgV>9=mOdH=|) (s]ac% /rcޙ9ޙ9ޙ㝹`?y88Vlf%YfVlf%YfVlf%Yͬ'wcOXn;뵝zlgau\"\Kpi mi~[ZN4oc%vkpm8֓w aEMso[s 6~цכGrzmz%^ɦW=>E#Sf?[vl=mzɰ67nv}o3.E'!K-wLiS])?8}OCN ,:5E"{mEss_ 4l [dٰE6l [dٰE6l [dX=mucX=m1=&#[cdkl15F#[cdk2]^p>. fp.%X6Ml,6l+ʶ/st& 7A5S>5S~Ĥ1S<5'Li=b:Gsj:rj pj&nĭ5fҎUf&ijgjR  fl;,̶-zxތ#p$x ފxމcp,ûp<ލ %އp"ޏ>m_oǿc5~C?M n-Xgv܁N }'Gwrm:Osi>էtۃCF1oMsizÞ>kOgY}amgchl)uذ/Y{Y^ְ5e jijIm;`e;X֠7mnZgYyxVgYyxVgYyxVgYyxVg<ܐpCn y!7<ܐpCn y!7<ܐucY7:~ZF2i,2i,2hYlȟ !ʛ;eXeYY!#iY, ƙu::蠣::蠣::蠣::蠣::蠣::蠣::蠣::蠣::蠣::蠣mͶZ|u^hooooooooooooooooo5_5_C:~H7u|S7u|Kt|At|-5_s[[etMׇA=!8%(E -JhRB0/+P%4)a_W(I %J(!PB@ %J(!PB@ ]ZТ%(E -JhQBZТ%(E -JhQBZP%4)ickRC&5ԨF 5jQCZТ5j&55Ԩ!ؠѢ`CjRܿPE-sEP{1>.mu0Mf(\Ȅ:#ÞaG^a)wpE?%pny]Kn u݆۝麻t݃׻ÎEl#auף(aU>Q='\[?q]aGN47]-<ٰkWнÎ{ۻnxC݇:~[Hߎw8? ?$|B<>3eKׅ}>nCϡa]^(:<fmumv 0v! 50jtÔn c)ݰE7l aR7LI0bX7LQ0J:j:`BL耚T?UTSP UP UPCwz=;T{jOvMGU{R'U{TcՎU{TT{JT{R'U{R'U;VXc՞RI՞TXc՞TQ՞T-=SEvMk]S)՞R)՞R)S1SjOjjoQjOP P PXcTITX'UzJTzJTzJ2Ǵ[daK}_5acتkT|i,LOg:P88Tiv>[ZC*FŶVz*-*Wq?0c*8[vnUpLǺ<Ɠ)D[v{pBxCaⶰ{}x6}bcݵ0e2_WU*u|]8˧1I:|gWúq<1=w; %އy':p?Π3(1q|'=ߧig]>]Jxg=ƳYt> gL|u\יY:6 l?6+>Q}FO` \wqj^7x2޶-m2;{rr^]ۮ9w;xz^s{7v<`Tx@ţaT8b#iyGhvf:Lm;m UB_RBCf&*4QeY K^a&&TB@ū-ޯ _e?]D/o׿ZѯZѯZѯ=Zѣ=Zѣ=]Vg?7zmDml^ڦoF͈##zdDOlSesE+\Q:WԹ5qE+j\Q눺눺dȰ dE"UZU)J%թJ%J[Ui*mUTU:%)q S/a~QUQUaVaVaUaV:UJUU֩JIUJT9NTU:UթNUuJSR7PU*TRTUgl<*SUQ<*TT*UJUURUT\*WUbURlU媒G1zê7zê7zêWRUUzU+^UYU VU2ת*5R*NPT>+}WRZJ]Kk}WRZJ]?>>Nmw5] xW:h;n^@qi$ 4PJ@I(I%il.p!Kđ~$$DH$DH$DHMR@"$R@"$R@"%$R@O $R@b'b'&b'&o &be'&?hzF|^䯛&?hrh?hz~?hQ?GMA4MAZx4iF/%dLRvJ&~/MD7J6T.T͆)))6DOD?D*ܠ~"v! EB}d4M0]=c& 4 ب^gI:{d4p>hޓd& -ŕGiqGiInir%MQ+L6W3y#\a'&{b'&{b'&S=1S=1S=1Z.r$OLOLLOLOh@{NLݲ@/ޛLĴNL ]sB.zLi>#h>QatW(ݯ|@/dסSG]7ftXń.ERչUQQ) vSn {.8?ss57uycaE۱ײk(z E8#zװs=wsC焰sS{ao< ;^Ck(zޢ-z;1|O1K׼uNQul)E=kJ9)ggO=cJ uvݿ]ou\lS]]W]L{ySf7n^sk{=ma "EX%Kd`o {c}_?88>O >9T%r| _9Wok^?!~&7O3܊p;q'½aj} CX_0]\;:LvzNy_^܇<{q\p!.ŸW\&sq?7Q{[69OE'+>/4/tf;!X~|ća|q|ħi|IN)8pNۄn"&n"&n"&11111nfnfnfnfnf¶x^7po›qQ8o[6;q qxǻpN|‡|ǽO>8 ɸR\5|W&•vg)qFJg)qm(m[_~LWۯlF<'0MOǩ\r3G?"D#G?"q1?8cD#G?"D#GLׂa3] ,\^}*:D<&\XMtD&5xMk"^DyMo"~q~3o"~u='99ωxNsΑL߉Nw"ty?O"q3x6Yȃ"E<(rg)wFʝrgGdGL6{4û\>ߋx׉\wfa% /rcugY|9ug{ ߅E/r p`__kU$~1׸~g0r{e+#^pɏ_Fߨ̈gF<3Q.lnЈFh0K#^-Q~ fZt*_i8=qev77v1]bns.v p%.v K]np;~nTz+ 7nwp#~Ǡf܂5P6kS6kwsop?a9̉Ü?݄$&0 I8LaOf)%N#;ow^N;￿ݚplMxb>;[#Z?} H8F1_럺a\8v>jnJ9  97po›qw̹Bόg1yw`"<7dṊ^Oߋw\L(:N.Sٶ/mh@.v ]mh@!!!!!.mmmmmv ]mh@.v S3M>3M>S3>S3y>3y>~_()HsX9MS9i"9S93sxNaљQ~sogۯlF<m Q ;m26t[Om#=wNp[İS>&m]2O]nmͶ͎۞ݝmԶE'/ڶ~666666%6%6%6%6%TsuOHK%RuDz],.^KK$%RqtD["-ؖd^1W̽bs{+^1W̽bs{+^1W̽bs{+^1o[j6fj6fj6fj6fj6;$wWQUQ.30b:N:RxslS]Lu1j;/mXmcʋ_mQTQꋩ/bꋩ/bꋩ/bꋩ/bꋩ/'dRQ}2O&ɤ>'$b ̤}'$fTF=rG^%3p&YeY]K[g^W`w=aXx;9&s?dfA/y8d\؇p1.3r|-DQ(EQ(JE(Q%DQ(EQ(JE(Q%DQ(EQ(JE(Q%DQ(EQ(JE(Q%DQ(EQ(JE(Q%DQ(mgm8|\ q.vKp).+ |o̕Wۮ[q w]\n܃{q0! .8'[ЋsqDtWWAd* *B]u+>@Z5@*"Pq)$ r,eHQJ$qtBx}޽{_/̜I1= 5+p.q+::*\kBHRE*T$U$"IIHRE*T$U$"IIHRE*T$U$"IIHRE*T$U$"IIHHHHٽ[tTwwxDu?棥Oz)<|\[zC3g]䬋u{"g]vq^ps{~LJ׭8f^οw{|NiGG >"|hiR\ojs+rw>XĚJĚJĚJ,UbKXR%*TmSj,Ɀ E*T,Ud"k*Te*KUYRUT](Ue*KUYj7YRe*T,Uf2KYRe*T,Ufi~qhͱ97X0[Rrno,k*Tѥ.UtK\S5\S5\S-f}8iip?,s`fpDSJ,UbKXS5XS5 fA,(|,Pf2KYZssLc䘦ZKZZ0[R|30 *T5x24]Sѥ.Ut?Ky7[|'5U^RT*/]0S_C5ZC5ZC5ZC5ZC5ZC5ZCVZ)kVZ)kVZ)kYW p= 2R[pKnaaa 2RK.aK.aK.ab.fb.fb.a2Õpe+3\ Wf2Õ.aK.aK.aK.aK.a Wf2Õpe+3\ Wf2Õna_0\p % 0(Í2(Í2(Í2(Í2\p % 0\p % 0\p % 2\p)å 7pC 7pC 7pC 7pC 7pC 7pC]_9,U| _7],euYy]V^eҲb+b+&bŠ +&bŠ +&bŠ +Y̊eV,bˬXf2+Y̊eV,bˬXf2+Y̊eV,bVLX1ańVLX1ań{X1eŴۄeƔ{1ey30c30Rf\ʌC̘2313̘2cʌ)3.e!fbƔSf\ʌC̘2cʌ)3ÌČ̸)303̘2cʌ)3̘2c30c3Kq ÌKq)3.eƥXfƄf,3č)3&̘0cŒefL1aƄfL1aƄfL1aƄXfƔfL1aƄf,3cXfƄfL1aƄXf23̌ 3&̘0cG1eƘfL1fƄfL1aƄXf23̌ 3&̘0cŒ 3&̘0cŒ 3̌ef,3cŒ 3&̘0cŒ ?eQfeQfeƄfL1aƄfL1eƄfĽ ?(3cŒ 31aƄSfL1aƄfL1aƄfL1aƄfL1aƄcf,3-F1aƔSfL1-(vL1aDŽvL1aDŽvL1aDŽv,cXfDžm$옲cʎevL1aDžw$옰(;&옰cŽ ;&옰cŽ ;cʎ ;&옰c,^{G=`{4أ hG=`{4أ hG=`{4أ11111 hG=`{4أ h`y&gy&gy&gy&(E+cq5>~5(㇨kQZ\1Q? ܢF-:9:Do a7L0&zDo a7L }D0'L }D0'Kw s&>gϙs&>gu垿]5r9 a5vݽn4̙jsڜ6g͙j Sa5L0/]Dkf ӬaMfvG;]hxm3}g}[j Xkb Sa5L)0X0&L Sl0vyh47MQ.^7at3L9i.v 'k\aZxς,xς,M8W&Lxns ӭa5L0ڜ6g͙jsXkb]w[M0&UP܊1Pp}]LI4o5LI0yM0u΄3a4LhhIAx=ހ7` P0#fm8G8Kwx{x|B)* Eh2MP4&Cd( Eh2MP4&Cd( Eh2MP4&Cd( ŎѢ[PǭmQg/+܎;]b7A^qǓ:BuZWFKğUx5 _[=uZ9|-q5]EWs\Dpx(޾羋8wlYxq c: (: XDE+hEQ"VDъ(ZE+hEQ"VDъ(ZE+XXkkZǺsb \;Zص,.wxYOVw[n+m廭|VugnfnfnfnfnOcm|&5wMk]|;~3lm|6wn-e{/W^    5yCMjP<&5yCMjP<6yCmjPz5a 6=min33=MirO{/ 4=MinM;[_pGխUgxgwfr w a6y;MY6;xgl6ϴy3mi]UO mnhsτf^p'z'/Ir}qC݅uM>hr|s;3luх.q.<4"X6b |p{CTPŵ):(Jp{'w!h܋͸c&~fÖx`m1WD'0'YD?w[Ǖ1ո W|?CTPŵa-(~܈º_WwuN ZEw<9|aSWU| _7M\oϸƪ0|%\uw]qgXuR>06a;c؁Ö'3x;9pfn#ݻۺ_Vt7ݿl#v~} O; \!a ^YC}^vspu9_znp*N9Xs1be83w>r2ɹFrumq^7'{|8.ܓ?#p]d?" N [a ?s<^s1|Ŏ`[FaUxϵA<8q܄i<-x|s؎6;8Wa孵uaE! :™ׄ `_b{V=+ވ&Cуa]"źPwVa{Xpea]?uݦsDlM&vq=:7S>S>>>nq!Ћ>|hR\/`_ėe|_7 \}W'qI\}Wwp%b|Xp5AYSTq-:=F0Ǹ7b~)n?xn nAc؄K ~ ѯ!5D_Ck~ ѯ!5D4s&qǿv|Sƃ!!Mll(錒(錒(錒(錒(錒(YVz|U*_ohoʷX[-V9? vgvgvgvgvgvgvgvgvgvgvgΖٝ-;[fwl2evgΖٝڝٝٝٝٝٝٝٝٝٝٝڝڝڝڝڝڝڝڝڝv;>qV\ |\.J\b\Kq!|_9__uoar;vt-[nG܎n'X&$6fưD]c1Qטk:6jT-eSl;Yw.!CLSv0eLSv0eLSv0etܸq:n\Ǎq7uܸq:n\Ǎۡڡڡڡڡڡڡڡڡڡڡڡڡ١١١١١١١١١١١١١١١١١١١١١ۡۡۡۡۡۡۡ3F1ʌQ'^l}$ǯ0%~&bE ,~ui.ץ_~]گKui.ץ_tiItiItiItiݶvҽ[ңSzt\N):מb9tL73uҝSso@N)ОSsJ{Ni)F`āO8 X`ŷC_nUͭù<&,UY9Ansܨ?qn:S܄k s/o->x+Ƽ kw59?I܏_]m875V[_sa'xbG<fc~qο /nx%qW˹>b7PVeF}ɿ9ͿG{|5R$|q?pZ?w$|Dϟp^N %]_R2[ɧp1lwYs1p~xoE/>27/C@k{['Wxoc+=}6wwwwW_[ _AZ{뼮 ٖO%Ź^qWzyQqn=G<nPBgxo!ytaapF+iτgqg;¹|\ 2lypk[ Z7q9c snuX^8V}M 5^sF.̔R0 8 )L;ş̅B-vF;)?Ǽx2 /~+ /~eqŇw>fY(/>1]pqﱖWW~EW~EW~EW~EW~EW tVmVmVm?gŸU T*o)o)o)o)o)Vqʓ ='>TP*A?TVÊX+a?3ş)Lg?S3ş)Lg?SÊX+a?3ş)Lg?S3ş)Lgߤ3ş)Lg?S3ş)Lg?S5_S5_S5_S5_S5_S5_SMg?SFſQoTFſQO*I?'TRO*Iſ߬w*~ߩcX*>V񱊏U|cXůRT*JůRT*JůRT|K*K*K*K*K*cX*>V񱊏U|cU|]U|]U|EWT|EWT|EWT|EWT|]U|]U|]U|]U|]U|]zKzKZQ#j}DҏP^Q^Q^Q^Q^Q^Q-R-R-R-R-R-R-X*=VJUzcX*=V%^R%^R%^R%^RU^UU^UU^UU^UU^UU^UU^Wu^Wu^Wu^WuR魮=aPA>UJT*}PA>3Lg*=SJTz3JJJJJJJT*}ROI>'U*o*o*o?]x[x[WxEx[Wx[x[xEWoooovgYaeT]o2y]W*e>ce^W2*2+2+2yce+Xʼ̫|D^ϧPѨ+zUԍ(`1xoxIttRL)aw{zGF{FG0f0f0f0f0f0f0f0f0f0f0}2%)8-GXOt3G|gÛǢl8W>_ץ _/ Ô]ǔ]ǔ]ǔ]ǔ]ǔĔĔĔĔTtSwv_ǝ )F^l}3ha6L+i>ܧrV}ZO+i>gDO`O)<zI>)<3x63w\!a ̜3sfEYoVěsv~/~x?;w燢pλrG97wznO8 X[r`Š?\͹Ÿ$zIR\潭5DKr?Ztn¿ 7pxX?owhc{?0U WSe 7)85L@xWzJoZM+i7??3Vz"s%7ܸWq*nZc]m\+5k_#Mƃ؂8h,S@ hZM+yey,o埁YB(t:= 7xu{].M8+%sR\PZϯ(օB݊1ܷU}\;,GjYi .hh}{q8x/nY )FfA,(Eh͂YP4 fA,(E7hb+f[;xD{hc݂:n66w!h܋͸4_}|ݯggIňH(RD H ""RH6!DLf_fW,0RJRDJ)RD!b‹c"E#҈){|\{^vvv6B wض)? V[5m͏lB=}]ߢoûp*Yo{}mpizE۷=6;sڃ9h}K>f9ɓ`.D#G!S[cK {gJyqY@79'*!" °,َyc^W;Վyc^W;Վyc^W;՞04e#x?f#l?Vx a; ; `7aנ^}Nv7(m8OM>4p>ZcL`| /%0Ɨ_K`| /%0D f Ԅ04*P9Kb^$%m ?dHx^?L_H~s4`BQX~k i#^k=v/P s^Ľ]Ko-5/[~K5»}h4|lo=gdtkW55;\onB2y@fӒr n^p0wBa/|]l0X#䡌 0` G 1=&"?Y>Ͷ\^;P%;a昐ɧk/3c ,o&@laf0!^?1/|^r0Zevy]N òC1RPJnT"Ri;%0/*̋ ~װ:3BMJgR {PaTxsu4Gϓ<)_x~ WiaL@ɶI|ihYG~F&<3a2}0$}#l\Μ|\o*FHi"pOax>ku;pN»p ރ&x8 B |18 9_|sH$ggLdd 搌ɧ2 pބ8pN»||||||gOʓ3O>9X򲱼l,/򲱼l,/򲱼l,/V8Y#8 9{~ 옩3cvԎ3a>ԇ0SfL}3a*fLi3 `40fLvc:vc:vc:vc:vN=ة;`ԃzSvN=ة;`:vb:vc:vc+ tv;]NW`:vc:vc:vc:vc:vcxrh]jb9j-*cXj5fZz0Sffc٘i6ffc٘i6ffc٘i6fZauifZauifZauifZfbi&fb*fb*fb*fb*fb*fb*fLi3 `40@J`KyY^Zzx@Cp8c:c:c:c:faYjfaYjfaYjVJ[3p>s) .&cl a1L60&dcl a1L61Yyvd~K֥~N2S/~W \2lINp1l W: %d7͖K>?\#Lqga^OX K%wÒařX+Vb+`>ikrfb:fbXnjuXnjuXnjUXŌUXŌUXŌ=Gy4ACp8ر;`:vK^0dCV1=C`:b*WH8<c_~p|7pb:c:c:c:c,ك%{dc:c:c:K^%W`+dKֱdKֱdKVdU܅)rL~,ÖcrL9gΡ O<\ڊ9wÜB]mdEǰâcb/,V%k-vM5:ֳk,øcw avU /63dY[p;%ʬkP6P5Tf YCeP5T>2|XKZ*ʬ1xC#. QuT> 2:J5Q Ĩb2s\!3W2s\!_HȟE_K|}B7*;B"'?PAIRjP5T AjP5T HREJp`ݢzЩtAzЩTGzЩVP=TYTYTY˜{;aOjBP&t jBP&t ]yi?V8GEᡢЩ(tK _17^ W:NeRYP,t* BЩ,t* BXTrՅJuR]TՅJuS]R]R]RURUx*#J\"XQ/se_XŠU`U삨dB7Y=kPnC:C:C:]wA a \u)\u)< υs\(< υ4+ip`/i|i|iO VA )½  pQg},.aP,DG,vmB/Ohe*GqiJ3gIJP,!2ʲ[Wu<=`K<-,'Mp>a8R%E#jććW#B=b@|NxC\)Z8 n7 ?;#b(&&}»!$%%4I]C==#YlZv]Chf[{ X.XXX/|n:Bd}n}:N::^::Qb7<7)ޔShHc;Ք}{SI9aL-L2&WjelǩZ&^HMXI" ˴˩-^Iezש-3RoްNMJ'%YfqHYR/3Ro\#}K,4Dz~jk$I-/IrB)yyfEi崴Mni^^|"XI{O:uyitX:b(%$,RKckttQrC"}m)}+ (gvQ}xbIiҴ'ӞrDwZAZK>}oI"V~E gH3/1Dx(!Xx6tr [x Vn5mn.[Zz>X~~CF[ul:j;o}vv:vvњkKؾ:l_پ:m_ۮYl giLkgmm ZC~{Q={퇭Ko߶.7߳.`кo3'gN͜9B9My`[MK+}upFn@%`Z56VP Sp<$2\Ĩf"8n%\DP zBoahu輆C˪]E;)0f\޼v!xahjZgwB ͷ:a.vMgB׾%aܧ<^2yWckw3lP7>k=4Ѯy=U)]3-|77}.%{r }W;_]mzq#m`*̀j/p7V2I`gˏB||հ6ƍv/Cpߎ?i"VZ;AJV2!!OqՐz3ȞdoW#DtC]g"F.Dʤ\ޖ7u+\یQy]7;;]-ɛRBN/O՟bgw'g}X/xـp}A||dL1ɹˆ-/D*j rmlrCjWSj rו 7՗ÍƆ$'[ʣxk4;n)>lZB^SNy|u1q]63|)B:RFٿVY=|)?|7^Vv/).?q-ߧXyk]#O4F"}eaV3CeN-%L9-Gb/?VV/o''wSl@sKdF.p0tȲܓen{nsY@wAw{ZV=Wn_ŕ\,[_{+7'hsVjU+F9 db2F+fzruCduΥs;hrF>R6oh#KlS޲MK/wC*۪yv_Ee!XIXC6W'[+6ic^%wзUk=WXl`_zѣVlG+EG∑%cqR8E*N=*^ɾ mqT\)Pq9pj3JW\f8fY16dx rTP#KtwSZcTimAؠr+'3xc4W`O3{O #gsCIGp &KJ e5$h-5RNƌ4F:&%hɲ,3oLJ:]%+ZG G;f]y2VSKn ."w5: .'Wiql|cN mu%Gk<ܠs8]QԶ n6sۭNmm/i zm#LnwO#w>As;ɓmqTdM~Yt:bھVwckdckvȱ3wiڱf!ϙsF^OJMͽޡ3luqN:ֻi{ɾZr{?9}DkvlrMZ7sxdckvnX)3Om9Vy r29}wMTϟ#Fj;\ӵ,djծY| dd|g䈣5d7ӱߕ;g֚oµ6bs\vm(9J3sC=͑^m#ў&r=-ykgd@Yr<ȹKQphfA ~D{{k zn^oJ m~K{E,fZZ_K)X舂avxn 6xGj 6{ǐۼs;]S7:;IpN%)=&;?iwy[k8%`6ȘSJ.jcJy1gGR!3z$z-I;P DoVxWɻ\vQ ;|뾕N|×6&okoW;jE#(Xߩhqҝ|;ɾ63w^Kq%s|tZݨd.9KTKիF9VNo$39|fspRwè ~]fW\iI|*hfԸs:*nu3W;׫Cg0V\ιUUbAܫ8HZvYN4ժ}Mu:8#YZucf4~Ufv:H9O'^Zu٦k}ՅdBE񽴛ἬjU;%yU]١2:okccX1HTE)Θ(S(zVb}vs. (62Pb3a%6hz66hG-^Mt)%\tc)eEs5(_\T^Mcuf-Zdc֊͜՟Yu͙?],Z5s]9οߟ\j?37ǐym~g~fc(:s5 'DfQAt1gQ9JUs5V䘻蒫8(Z,bE7ز[iܷ< cb[9:14,-1 /*D54 4U]Bšy% CЂ*ؐKs. [JP0tI(Y8ZtyHo.]o+]ZY!:$^9%^S-%5оxCiCPhбxcicd)o@KP+5Wgc-sU^YFƗ^]2 %sBd[#~RzJJ!9cOGJITzYg=VUϚ5fM\oT|n/iJ 7;_GV{h4 aa "2d"2 A@u F$P]U]4Qaz͇yyLYÈ#' #/"E6f#fc`l^6fު&`L<{;G߽շnݺǽi/vL$1j^5Q{b/Y01ޗ*b&t%f*:b}d?ޑ*XSκCI9!i>NT"%}qŽ>;ZOCҽ8^UgvN^n_K _wH(|MWv4eNC$|}0c;HqoⴣW<RboYʡ71;I:LQu4IA$a1#aȎo_]o|w}C^hg˗ ͐^'6&Ior=Ho5||wOR WzxڳT[%rcY.1[s~bٯm0׶u*~s.s(m )GN0*pDq`yv8dm\?$mx66ap`GYyCC >WY6Rfim]Y؟Ѷ`.ӈFOS7!DhHCKSHKZ~@Qq):Eq3 :ކS_EO|ņCP\hc(>?E Z}-zտ=迡)zMPDߋ̊EЛrA!=D[=vd@K 7t.sG~fЯp *zKEROQGR:HUPOSxOQT7ULJ}gk! 84Nʭi4SMKT-[T˚h:բќ:4cwj~Hui~;-mnϩ/k.i.S էTwcO>M}3:jHM/h_V/jwP׾-][E-2FkԾJkӲ^k֊t֦mohokjOh=A!˵?].ڋ%ڮJ.kFﴫ[;h Ct{{,,~+ٰDkaIa^˧O0_Waa!aa yj_O )5x_3XYtpH9tdӹu2$B &]rZt-ȉO\ú[7&辥k{"φC@2 VP^&[ӬlkZleJk5b7gmvZ=>u:b=iNZ %H:QUq)BqhwUbȉEQt^IxL<.Oc) Y8'^/WuI#KQg:cXRH('˟$,JXay ay,aya3 ',O$,O",FXLXA͂?Gp=p#/HQ: ?FqY*xK < O66D\@2uЁ77@:͟"l.&lEM 9]fH˩s9Wt_A~]?BBE5Eu:E?9,CIZ6 .2 b8wYN4ZŊ,NjraJd8pن˹>g\ühݖ iqVY.7, K 7]rfêvq>h@ɇ`'^ơ%wDX|&lqĊ8'w$ gMr$[SiaMwd 5ˑ-^k#Q`DY"G(q0 k⑰QiހZaXQ`ꉷvC&ht0=I8"'Z fGѹT!G`I'mt;zz}~t mc:N>2ӎ rL[gpqq?eguqɺ串)xo9zˏ :.I@9IA@[Gu<.F8 8O>D;> v瘔<{ p)R, 6{ALsn3!:6Y is.`Ū 8An`;ƓuUdmWy=OĖߠQl@CàW Q.70b )ےyO4ؿHMp\&]QAW aW<Wtԕ}t̕m;3]: g+GsqK\Ex.3l;qg]9iεW誕.&]w><7OL '0\16]Ͷ(W;=_Fkmb>% poŸ]k'~|-ՋlO(8e⳰?|1 ?dl|,1l j,##T}c|G~2[AXce)XY[%A[kרmkV:m\StGXl6׌:m5OBՃ]`;gk^`AUn즭ݵHk)<fv]VpmU۠&1 mԭ%=v<`QLƺpiÞN3) v2VbA=n 6<ӐiHc7i- ։zY_Z?ЫJwַjw_= #c1#$iG=AƩ֯oqOwܳ= ܗWGa; 1AI -l'w1O/YYWA֓Z_>~YNTCގߒ3;촜c@lٮ zyn*D ̞"h.s^,6vly^(7w~Q>h-WG5Q;'kĎɽ惽I>egp y~Th?&_&͵OqXOcM)|o}@GGyq#:y&YL.S4`2N&LiHgML*] K&*WL˦[8=,.KR\& M-&"nT$s'rW9/aw;q&"P8wNdE,w#=5=Fx>0)!'ih49 }>ENCc4đ3gșLL4~n#gLLCL4~3șvмY΁@D3əLL4} or2Wddd4DNF_THNFw"r2)r2ZLNF?MNFwWh :bTFNFggənWwwP%9}~~Aө}?j4wP-h4b54Ah-K wld6-bK@=^XbL3yv]Yb+*{DŽLZSmgl/~Ði,7sUDcаF`h`3=+Z•0`N>9a~aD O[@" ! x xOk0ϐU''/ƉT&uFV4U>HVC6J`EYsAXd'NN?B}GerG]扺.uR׫Jzaaoԍ֍dwMt8i),&ILoSianQ%ELuꮙtlSJjݝUժ^,6 %MP%yXش,,ĦK9bej7fQRVʍbUgQE^LM'9 jy-kiva{L*S },8v`Dvd=`'1yMM&?; ~8a5e/I"#ߦcc'gNA;gx;Mg i_i b#fTժƳ629d5]4]6]5]g0WŦӦ{yNÅ.pQ\ ykϩ\:[eq9\>+"v+Jpama%#"5]\\m];'@5 Zw!5r\;wz~ˣp0Wn4fƹӠ3rS y;:-BK5n[n*5|4pN=|̎i|vfs$>/a;a<,Ŝ+@*.>Wa Y+Ropjxx-|'|vq1ks'i~!H; %x/7[]Kݰ@#p$, a+)B($ )v!e촐mL ]< &e-8&X`ms-2;`խYZ8XdKK]{,]-Ke2dLCr5H`I$Ԙ ԭMg-lIMbe l*a^,Me, rr,[n`+*/ -nrJ+PlUg7Y5[3H+qDku;cͬfݡX.b,ܼ5kd'̩'nhsgBjXa&ACp^டpa; a#QXcqv@8 cYaNo*3| r61}Ә.œpQ,\Y 7MMuln]7bg#mY'Qs|"xvD8fSڳ94vms -~˘K=ZM6X6X27vcCIa,GͽlÜWA z{B' "fIՋvpkFs - \[j;tuW}c7o$AŪM1bf=^=uXo'me_}l g{{.u+ ^oe\c;/eU;kZcŞRcQՖaT;> + 2xVq5~pNxaUO`lH- &X lu^ukq] Ff 5_i5㮠 <|N6!{^rkb,[g`^*T>iE ~T3dfz[T~vlc} |b03L3L*fm\P|Oxx ٰ 0\Qǩ7pp p"# =Qت? b'!&0{lLQy и ء̗1PFeFĀl|ѡ"S3F2FA~gƃӍYc>HH g|]?k5 6ll72v{Aq8nO^O3IFDjPS>L~aQT4e#]@! m@o-޶t HʒA#h*@kb2hm2hmrR79W@˒նBE^|Z̢J{A5 X4J5*]d"@/֮Q_ڕ0V8 F^H w(G!X꿇ՏAIP'(%Qjdhd(pdfd&J/neHC }\rZ^ iVא/냐f~\kȵ<HqnkD~6yҪBҢP'ݤ{0O=EfO֓kw5u!Gҝ#u$×I?No'O-!Hü⧞% B HrQ>. %š$/kf6ycu?ךsg]cmvN]d!"\CHܪM~$vBT.Htȥ $I9s}>|xs9s5MȉzB r X5'#z\@_¦D 4b%rAoFU2ٹFKOX DCc&Sf oiL.!/fY>'sG"7$8|8B9AxY4Aiؿ1쯙Yo[v4ſE4A&bY5YxD^IkyWC>??glmO#+EvY76dQ ? SRO2Lo?82yB[l1eus/E\`J+^'`A(lfH΂P EѼf[w,sj**X7xݲ e.ˑf es{- X>X+™'i0 f@/H9H.o1w.mrQ$/'[XXzg#N >LCC1`;v4`(nZ9Do]wEٻ}$LyHyɌvJ)hRФ0xHl3L'y 7Fd g7 KXMxNs2,ѳRga->{aN$S\Cv1u1ʓY_dfyrE2"rv]h=4*hmKk6{i_SuυU,Ezxy7飼\5Ku%N<| ̌V cdNXP8K[n{?"LBhڲ vlVI=a{,;&R !?*6RO:_U$oƦ Lsl,ǸKTh G2gxr͐`^T euLz.qKNxob- .QE6sE;;"+f_C e%s,fgpo%w o0Ǝ*&<4`%veKՎ5 $ֲ^ sƲmo8ngKksZQމvkX[o#*dTmHˌt+lCاG^4ϖW5!4Zr畑[:"ZgOʖ/Y6 0[Z#3B;i=OUZk4 'b igd%Z9r,7)lyF2B3aq]RUSy>ixMV^kz1]D琎xnJUd"O J씩<ם5hǘq}xK9Ka~ꑬrIl#`9g*dF{2B]YVFRvcO.Nf{}b AN4|3(g]M,u5" >A^Nfa ׸lǶ?#DӀqQvf#cbL0r*eSb$2ZVWp}݀4mlކd^a 'h+ rN҉/Y:vyrΈNvYAV !?eT JY.cY}ȓzoۢњ[a 3;)"u$&܉L?hS-v } 9q΁(k0V}I<\+<'kIlQ4XOhReLr#Ȩ`6ȊdSX iJki9~lɵ{b >%jyKx~νiPEOG90~N=py7Al{ <Wp$Y03a9ug+, †Ö4:n3xxK:XhdEwZG6pgt<ۂj*ErEuTTRr#Y0ZoAU99;W-}A|&G\`2%bfȱr밫(Qڇ ݌tQD&bB*dP1iǖ:b: Zu@y>xyG8gTn yg(v<-iy21mQјt.,29=|e $ %<-g7%qB]tn*W >7bRd Q:d#K#Sr6gDl ybcm4$+M2V!odiu),$Y*YLKEJ&>UT?TԙLmQj<ۼ|n`UG^/gvXf 6K'pF ^s\%j8dCϲֱ;8+5d%›2^@f8J;i?NEr~uń+l JI@ϧF턆}('q!Լһ.-M8@A?;%ayS2'V$$=7rVL؂{glIIޜNrԐ}&wXK+X01(d[r(eRKk%%lS6A]QG_Daec?1Q{lRts9*n[zԥr s[b$=@ؘz^XHŐq0# u#9[y1~U3MY˿ M*~ĦKd)>99kw;ę3j3!uNdK֢0^?Ӄƞ/tj4LWͺ,l'^3fyAr ku9+L,sŒCk~./ju8ED= CٯaO|C?|n@SUWiLe +?q+yXNQC7١;KtԺ%L5oTE 0wwXr>f:&JM]u"}M60[pt | >~!8|~O8;bb$K4ܽ;Z~owceC֢4 Sᗐx UFk$2."ׇ6B.ȭ`'zߒ=*e *NpN2l&gm={1"NYUQȽ/I),7W8-o9Zz;h"FHZ {\a.>L}.a 6 M]ln*7yɩܣf<|ɮuUluh'. hu_P!dKv ,9lwF~%R6jȗ!|'g+~m%f{yCKdBVsN\zӫ03ɰ+{"9&TzÎ$&ZXǥf"Kw1RmzCh uwd7Eފ۝J =]p*<#Zb[{ M4n) [4jj-\~л\X.Ma ݐbkkKhի(c2F}O\S }x[h_lT_/7e??/6Uwtfߏ3,_S,G7c+u`̗s5nK3΢>OC/"ۯ,BPk<[g K|:SDV`qނ| ~1[Śj{xwYȭM<9xd| Ϣyo}]oE^l@êk}²nuD6a[#h#,R"GaonsLL‹nհ_ OZA+#V ipWnu1"FR؄+mZ. w`~qqþ"yP1?~%r&Obr3,] ޑ %& $eu" 9G~zƵ1KgN4c!&Aw(C2OU7&/3W (`Ih\̡[S]R!5=="!ю1VFRrN1w^`sx^  BTQaxj-{#wf0V2hr?=pc~SZ?G>xBlf,Z#|>Fόt.}p|>2ҿr'1Y4o/` ȫ ȣbXe雇ȳhMG>Kx֢uVșY ЗY{?ʌll%+'FVk'W"n$6 7ҭ^ &`4<|hLf܆g"^Ckmkѓˁxsr SМAvu/r=zՅ/g܉tE&V>;,#aglݚ~HH2\q($z14G8dq)Suxg?cO_3 3ѻD(W'4_yw3ڌM" и݂#LYSm |Q.0g א;f,<5?莞mJhMؐUdR&!伞ɽ3 i5kn(T Vd([ n5<;= h]J~$[_4Oww!@hy &)xH0&zmW͉$-ʿxr{RMlޙ&tOd }UN^y3!,"' 7SzESyCs<.#b {#h}h a7ZGwFJNA^$."kȜ C&96 LH07r&W<hD'pY4~@4dé %ьT< %FI ~˫nlbu7>Q_O'o>,E߲؛mD|^W=]&'7k:ri[MO"qP3 x!G®Bx fPx9aI#Z}Q+w% 3߭ c}1,M,n}eA7f6Z?}y1%V:NLG#Q\Xq*6l@~ )c3xFci59d2;Zg$Fe$fOq:Y!^qp,R,^;FU fDc7c-c+2HI~e#<]bId1Sf-ߠ9 wi Rdь*7`{];ڥnQɮ GP<pyA|c ӷGـ*%Uljp_yֱXڑ((c#|GPj|0|ի\]qN\{WL^+?ĬbN}+ oDo/4fT~3zx %bR\So!$>QJ<;dMA.%˖c˨“rEo b3TvIPb`_w[s7P511 !ieVK{D[d"Y 6%t,_FkwtX#%kSD?}K}~|rMVa"G~fQe{sз+Y=\=}B(oXG黄iѲ~s>GG,V*-,fl'CDѬCNC2|/ɷ0-G`Z:y%rp96$v}KR\D]Y>< yh1l!W,܇+(p3]P<+"ur_*U]c-+)T>.D/{|\kˤ4[`PLӖՐRޫ7U?8׈!j';ޛlS%UAULTwFFuU=* Tj& 5=QHT9u*j;Ucu+jAO=T_$5Ea*l5Tmu}OzLa@'j֭ڷov|OmR"_˽*jZvKiUMuVVpzV=^T3镨RUe%w_=YQEm*YUQT=P5S-T+^uWoWjƨy5MfU@UPeUU+Ww4ZuP>*P5TRϨ ;3 8.}z ߃6OUnv}=gG±} l& 8Ά^} n~x{K* 3hSDX)kgPP6–5tc?C88N3p\:tX!A&\צ~ w+xnW*8 K* pCa1XjIkF9lÇ׮#X8N- 2pep7'yxٲ~x]a, `TX z5a{{*}xlG1p<|~vlEp̂$SSݝ_I?2 m-MɞJ,;mu+h+JfE4wO;_Xwf7oe?PF[]HmX꿓J#SOOU;ٻfz?>U3uHQWWkz^76xy3U?/U㺰.kꦺqz^W-zݿrzH}|7o>dT17i{n\|}^?|\|?Wyo>}[qZ|m/fXyJ:-ВrTrڪGywgͺzџ?k8+n]o\.n|g| |wYo|dM9ߪ69|}rqea>[]f{-cPĠ`PH,<߳}/zHŢ \`EE&.xwIOOJ~ RxSK~RFzEU`Dq]BW׵@^I:)kZvWΨ=U S (eO١7 3! 3!s9 ŌPd$IdA[oI/4w 14Ѥ[)ExӨJ"n*%@tt%YzA _9\T~y I_'( 0K/͖Eb[mY,eؖ7|O>{sͳ9^|5A:>8>x>Ûk2̼&P u^Ww§H $Xtv Ex7;ؚ2Y laǵ>"#@Te}pA !a006R Gۣ! 8 f f32afd6#bFQh1ld7caƚ}2y<  (`5BAy P|b>"fKas93|(nP,6YnCYiVBYc@)ެ 1&(k3QfA9{=T0nh~0?@%9U!s#T31˜0'5isj,2ym.Pl~油 Us:4B0Fll&+4%_Y`[ȻZq]-xVAFAf6A"yU vA#\G:|Бf)(At *kP)#O 0!+v 8$dqa qi0Yx/Exx6 D𜈈?&q3M6}M_Lg2l83 p3\ƛfL0weFsWf2ef3ڌỸAh2ɬf'fn&2d&ɜf,sS2yӼ){2mf|f#Oͧ|& yf,dYd"fY"f,fVUYkf KfL2fl-nf)˘]f,k=25{e9AsPV0aY5Ge%sIsRV1)Y՜1gd5sΜw 悬n.K"k+抬ekan:(V`z Dl+~FAz$dM A6 2d KEYe {] r9e w[ e۠tPZ R>(AE1Tx̧p->쌝iqo hͳPZizOhW4D_//dGcؿ@?eddP@ @'>0:|& 8#fA/d KY..c(Zr~tѕ,FW\n ѵ,Dױ\]rQ i,Ge f[H.rAt;˅,EAkWS ^/ =kEtW 1dĐ!2b!r ȡ"c!r4ȱ"'b!c S1DN9C\ 1D.)NAF8#r_DR cCr +1D88"G"X8v*"JEѩ8TD'MESqL*"N.'} SHk8RqSqRq2"dJEɒ5H"c!+HT_qĐC&_ 1d Đ)Cp "1D)Cx*"N\zS_Dd "1DJ)Cl "b!R!H"cT!R5H"cԈ!R3HԎ!S'L2bԏ!S)ÈTdD =%jx ʑnyOcr|\>!~y@ayDqyB?S<#s G_@Í+ϲlB6M@^7X9B-GQ{ M \9ZO>(_$_ r\@V%X9V.+k[ftF?\?B4sY.9(܂,"[-JYGY VdeX{i_nx mE,ei+j9kyoB҇?Ht >ªbUϪnUp&2˷,9[~(r\%W˯Vx8&ߒo  9r1_~Eoc\ >ybX`1,"WVJXk#ka lo)l` lmvPvn?^GCpQ8F3py?E?/pU94梅h)Z֢h+ډ(:΢*)zޢ+b(b*b.v{K{b'8$#8&tďtiqFyqA$.Kg,⚸.nPD)eD*eT6-dKJve7]x9ANg4H~,?s?rFnMrNn[6];r-^ϪdUl}gmZ۬km~Zu:lZǬ u:mZ'uźl]Z׬ ;Q5RUT5SU RRUVSUQuRUUuSUSRUWS5P R*è2JݭQ5ZQ!Q*I15Y=PO5U]=QϪjzEf zKQԻ=>Psԇs5OC}jZ%jZ~Y-W+JJV_5jZ֫ Q}6;EmUvCT߫]jڣ~P{>_P!uXQG1u\P'Տ:Ψ:.EuI~QuU]R[QhW{#D}uuCF-gYpV:g]~~.wW+Ujkw]npq7ߺwwwCa{=wO'Si{=^pr/ܟ_"VM>jiJ\ӌj4mMk^ӆ״mM^ӕt5d$]y~aB E}Q,T4쀈s͹MqSxž%3?ag2gfTCp5RM ff3r6Diɞ#옚ɬ ߤ6Lgɥ0+}^6]LWηٹ) Ll"xl /_)-]7žJcep 88Z8g@ bc=b <$ƊaxD< ē0ULOs|sx^P1+ғq*߁(;, eK9 ޶Z[q;Nf 1k$S$f<yGEf`ȫױ`;X4nd.|Y"K#VdSd'.C5r$r {DN(J((8U]z.C0\G+}Wz4cX:kD=IzO'p~tܨgg&~7= w8wq3w99qY'(Ó5Ɵ(Vn=57ܥw/$;ahL:t>%YP`Le ٔoQ 9 bZ~ޏScy:f]K)!6 _~g Bva].fK%$;.ee]ޮ`W+ٕ*-v܁;{܅q{qxaq|T ŨOԏ?AI\ :(ͳNe0nsO]xψ%+]UP!HSDJEk[ۊ` ?A9MVpΏ9휃8729<lMCn%k _'0#P4Pz6HXR<) C9Ez;ٹ YY\c[ nY+Դk̚)ʔ A5ֺ6k]TehH9&SR6ً5Ju hc:&Ƕ)Dw*>kM;`PYnŶxDvQqc;:rh lٜJ>k!Q-V$` [~`1+e0m |B"bRear%eFNJ/!F3 7ic8"!H5@h. OO㷊z[|4PW'n.4J~8q Dj7¥X#kR=kS= Q= S=P=Q=S26%;37 .A2PJzNޟ_~vt<- PZA'3< /Û0BX;$ũJȗ0+7&؊FZ /l ,;l]]qn!˞1 ^)8e]8cmIˢ,Wb,W%XFuIN %ir{-7-[ul7fof˽ÖŖ{7ňf0y|x~F#^/ĈWH_Eplr1,sGAÜK^:98SXIbŴ=K] t κ&.ˮ6n.˞~(En{,&,f,,,랡$zrrJ¬˨BI d9A*ԟW؟:'uȡZQW +ӕC[*-uЊZhE}WhE:UuӰa-[O nn?.۾#۾۾3۾ ۾+۾۾;۾3V?`sHx 6mӄK)DyWq(ǏyG,ZB-,Oy#\׃10#*(n/Z¸.:Eu]QWҕu]UWwk:n&nn[6nckl~+f^Uw$.ߕ9v.;juQwҝuUwu]]ԽtoGt=@$6q9r;G181 j7:zgid&:r5ܚn-[ǭns;ܝ.w^s7<,/ yEb^ /+R^ck5Zx-V^ko7=xzcq#xo7{ԛ=M7-LKʴ3MjP-t7=LO[aVdpn8. A%FA1F|x Ϙy|X~ ̔#+ĖeePS ĀڧW')LpEa`8_# ĜG3Org~)̜2s;3秙9?Yf1s~ ̜_d5O=}BDyV@ݺs7ݭf&2\Ґ<h[V-jҲh#ڋNEa ~ߩW:Kx}~fK_IW*mϽg\vsl>o>_k;}0ыkݲDaSzn;=9DZ)51SW})c.Lfg\ DpʒSM_%[vXuެq_zu?˭^^v>KOƽy3<Ը3`2$ks%e2PY4a*aD)KbR YB*yݶEEֲ-%"5ݩ_羟?__3s9\c>8%Vyż[TK7 Yj}ozA8A\ꧪ4>ZF& ( "<\HA7pfVP0  Bom7%.kB5%Pd3O/ c (?5QgРw,. X/S10B߃D"B^ YTpFh38L2(DP5JP] P,`cĞ?o[ؤʎ^4˅=򅦾x+G㰻UPj;uPF D¿|"+Dlڍ:pK5 Þ<,b:ȥ>Sc?' #lTaPou,-}}AHûIH$_"D^)aA())R3TjJԣHN?ksىc_Hah׏uψW*o#gwvv2&~)5$;䏶}qZijp0XܓZb5Ԙ֔r0rnsӬh>+-.Z7vɜAZzY}&XkGlL9Έ-^zThFR\}ϳLHjȮr,*;@ 4=ߏyO.Oٲ1a6m> stream x|y|TE{;+ iHwIB6: M ;d l:(JdPAiM TFdtQ}!A{g~?`:"wuGYo}DcbtOl'ADBxt9e!E~Y5cXCQ9ysPtH4g7)*thX(EgF=*q~|!tEzf#-)G1% F&>eQhкU4U)Jb0T}7݀^=IT62Luh.5Q9H躎wvȖewPZBOУXAD \$rZ!s7ڡWl8̎+Yt gO}/п51[ nik/"Qu?᳍,J(!Ɗ^/PW=ܖ+13;,YʀyմyJLŎQ_SnFYfKn˰aJFbX_5f7 Wf-3**fY!_ǎn7`Cio[#LgEq)'[넛obENLaԉ[4 |.™11qxSKD4yumStq1p`h!@0X yK]6 YƼ%z\Er&fㅫrKZ-<ײB/K=Z %V~@o~pIo-~'|1^nKAM~k%XnӇeXocoLJ]dbk2є8qkKzHA7 {εF*:p9Y;p"NJpv%{ $ڂ%Ԟऀ!ηkQ~6ޣwJyƑ(r8UCK#gx>/wꑣ)O򆲌kv!Q5+W0gN9`T4}LCy>_h{.1S}N ˻QָE\6Gڅ< ,nǙ(^dm׆;z--2 :"4.zBY>uuy8u;a&ލpFf!R┕ 1Ź/#%S.|¥=A :wN 5+J"-JVen j9ֲKD{%8ʻ[O,„҇[ᚥ5eI Ydk̏mE,YN` >'("^4*$pm*" 0$FVEom%%l/gD"U?HN!эt%:ӟ=zo=]C6~zQ|{hzD͟޴+PÑެX/mMj]_Z+,wd[oU]m~mqe-QYH~і}^?(mO+ٟonQ5H9KgMaO |R}N{uѪ>MF}#uWbizkY]bv-L6} vKežZŋ+F ƸmT9?aL`'éz;XIc޷\{=s ȗV9"asޣͰ @|{Ql/a-رl6<=H]se[S}1dy#|Jp(ŽpPx`?{a1h+wd$պ`t"8+Ny8o|$~IgB]G̉)X'*P|Y8-PZ:sg.l/p<˯s8MZfYiAs|R}6N{ع%Q+.jR7%]Żܵ,~x 7xgQ Q?k=2v ]JO`F~/ ;ؙ87! UŪMS.ou9 8qGտHn>Q$ng1/N33sGhꈳSW aŽ'5G]ݙ{?oc&f3,8'%7#4~z NzAr YSc 9/FLy~P /!Lp-ߋn|?-eAzAZ^K+`Eb^G+af~~n  ~T ~~Iy3ݣh5x T/t/x+6O~pVM~ςsHhn_ӟ/(EZN;y7=K7i*B_e~NO8iBofez-z v3M吝w/ |inke>BwQzԨYF_$/1z1MG')F//пoeKz ^ӛz-z#7'{S|֟_W^g3t]NGC?]ئGMlŦfncncy6} lMMM6=6=mmzlئMgMݦo=6=6=mz$ئoӓ٦'M6=mz m6wM d/t%2w/rd2"`'Tc 5Mo{E0C`E!_ՆɼxtaPz.GJǽ踺bҒQk=tH`W׷i){Z,fS|qbcFwܩccTȈva!AU^`2kI.͐d>Xh+GUf!-RS\2ew KLYHi)b>ëeT0ݮKr/Z4jlۢ6!_4)BSoJʩ[2@EfHO0ƐPLEa5ǕejOR/毦fOk&ܦz**lHRֆ5iZDYE&jS'}yYkJjaIX^q(Ri0ke,Y1'l'b,w]" B$j]c1뗬ACl1NlR}shfL:{t'Aݱ%ѯj +`:DOD-61Y.l4 W\U\y'(B H3?>eX3 ?X7VW j0n9ɊIiva&Z*u%*wJ4Z^ZiLM2*QLEaJjkYj]UVZۤFѵs \Eڨ?g6JPnU>!n/[dĶz{YGJ+'*G9Vi! Q@'xPNk~S )8.4'hJ3r9 yeW%wheVyS  8I xǁP2SȤd2oKh5NAPkǔS6h3=:1z@(dP T$U B. Yr ~8KN.Y?pw?mUڇrԟ!gg*+ 86Z3\.؅nAq96@kK8AϞirz=i9 l'C)OX;d#t WJ>l @B%OA)E v NOa4yYwk\#pAol?~~O ~MIQO\//1cz@v03H2y`q |)_/_x:s-=JC)\:#:umwCuO\#H9#1 Ay3 86!U}YIݨLTlLu?C,dBC(}!UQM pUd&9f PTc9(ʁ5,DMP,<@=Qd;K@--Y)u?S`.p=phq2: @ $@`լcPGNWesEW3üjBfkqőőIőőÊ#ő/fZ;z,\Hq~y9wi>~f~g*K=nĭ"c%t /O+ePTӔ(F3B5OR.2 q"w}D:(tע8-+$]?cVáVJ"͢t/="D>[) =TjQ (YJmp[?@t=! 'AN)ӛ !iI+^pR䋃 jISBh(ʮ[e bآtUVJC(=jhi.= 4jy\ELPnW(/cdV A (b8 ˚ 1yT@W{tN`peO^+eᆯ-/R;,LC 㻕SJ {_ݬ\,T8uZ>21lmo}CW-uʠ"tUЍ{iDG;w`3sd ؄&ݐlv5 `$ˇW1"*P>$ ϢEDH-"URG)EJRT-H}HvoνlU[̹gΜ9sܙ~_z! ~TU6\ K՝ӡ- Mbc mOgqZ>_o>~?/T1V\R#եU߶ =z9\/o3e+fYȻR^/F5q=)=q)C%UuV--5]Ro>0Kv^xuYu DŽ׆2\/G -_bߒyw*> K[O#<Ϸ ɿÏ?O8W=+o5UKRJW%Pja(W)U&]TzZ>T[˵*ZP{\9FC7#aNQx㟐gxG /nvqtOV+#)t?Vu[?s1a"< _ŵL g3A&6A>֋/YY ,A[nz{\{եXُ Dwoeϋ߫=W᥃Y%4>BYl⇈ޕ~u!kaDzd~?}<"~짼U AWNRRY{.'!78ˆ+g41N,ׄEh;ƊeS!ΞׇooF?eSٍ~qzEJVi2Rcef`RfnqZ2-I8/ԽkjĮOMS#X?_PW~4*UJOvSTC8,mbo@/ ?:|eK((EЄ~w /\ ?z/' >xK ?:b=XWżm` m} @l }oU0n&v4kR0W)T1'cqRwl])FxYk=VڣGO C>y{+3շ%ZXSpZkY_L_ 2egdqUg[Ϟ;ۊVd&N~gVWHv(ݝ6rƱ`j+b?ymvab<%|rse>=@n>TY)+p0X2i]3լ̢ WR,S$* @'{о{e?ueKOmeG˖.{.p췁d*}8k|BbR\wZY94}r7{=K27qV=ђM6knZVG;wsхVDž$G0Z^DM+;.y] :kW#:Y+ OO]bBg5#==7v)y۰W<"n fڮ}ֈmm6n,qU5nwX?KҀ9A{'1%?ŕ<@yܝTˌw!sE"ka=>7[㸭)u8Siyg*JJ،6?!o G9#yRRӯTzz: |Xw߸WY?*g6н[{/w{z_X~׆ f<0֧zO*ϲD/x gj۞OA5dk0>`,μ~Ve+ @󩶿 w#̜! zJ_w-U%{bi7S3yD-Lt1ݵ8;R}>AoҵŸfsƒS$1ZF:'83h /3*FN4-Szc> ̑Zo. MjJM(6oIR-Yp.W6cbɇC6y'N&dh O뉝IM{ߘdEnN{ir[J<.r.r.r.r.r.rwHo,7(>\4B.NW oٍ@RV7i %&17_g1lggL:e}& ۾hC]`ҜYWMZ0ä8LZe6Kwx(Xxa̮cұ,2äxEUm%jMZenmbLZey5I,'&i& [xf*+Eti6oІ ڰA7hmߠ a6oІ%'Ȥ1D[{1LZeE1+11i9ƝD'?#uVYaimIK=|iCԤaCNt>¤'i-&2N_$SI~IKDgN*T?cҘShNScq&-/] 4IcNcs.ŤaXcJH\I֣G_5((yZ`x@)MemFhasXq[M'_G>cH6 PͤZRR,\F yO#ofȦ|~9gѨw#p%{HWF ItO5{8z@#iߧzЧq_骇>dfԎ!9X!աf̤\ZcKF;#1` ɱT R=չ48ȾsϢ92dj"t^~nĶF樒&W&i4jk25dzC 6PyJgUgjl%xRB^yݤ.կOVj^Cn|m{ѷs~]eB$'ۋDo|C"#5,=Uk8FU[ 7jΦԶ鑒W>s:SkU -sj'56n21vfm߀Yu͎w8f:&:Z'N|qJu PR[㸡ebK-*7(ivLn3}}X_gvmLQXU7qf㔖f%yCUU=5a--77rL81kf-1LilhqLhm^"7iCi3]457̚"GrԺS"k\?U[5u3Zu چi~v$Y]WCD]"񚺆͵3aҺQ͓M]WQ JKt9uhƉэm38iVvvZ)3uJjpbR-lO7שJ+m'Ue: Ӻpp/46N%I| cQz;;3Ѥh|H(gaE4ּ9_"^UWԞj/5^S{wsYe=/Lқ`Nē1%pHm,ʧ*)$a+,ǟt| )XȸxP<\,x ēL~g4迊Aba\є(UpPx J2JN]U :[M Je$U3\6ywrh2|\*rUȳ ڣAej9jOWWAS=\9ANH&8F6t(zUBK1S,^Zm0S!Pô@WkՠoƀY NƄvv;8Z=t lwhw@NNphA߭@/~2}7vc~ʚ5 [3菵ZZ:` kZЃuu8*uGZGz=Q@W[o}K0W1?"y)$4)'NbSk'5@Ė%Q,1x0|(AWc 8 `飮rl"oApۧn!<@%Ī`V}KD$Pºgi sA5`E.-b':ÎCvs//| ΫX^ ÑW y@Xa,CζƐKS4yL0}F ɩ3d+~~&Se7ʳg:2ʻn躣gTCO%F3so!IQhq#R\L;J׿c*^8Nptsbk`)2aY1F;<ֲEY5%/y`oize >p4c(pDBdX\_\M]i͝]k1_!|%whe pĕrN8cfw=[V㬷<͖Xfi=]者Ot-h6-OZekټEѮ䳴>Z%TMO͈W\bպ g "} x 8xt00}ȱ,`O҃={JWz`O҃={J'=Oz@(䰺'z cص7\hHanXssg5l#vLx<-$<ٞitO݃sG6{OrO{'bO{j龩s5әI0b\W/@_@PH|5qMg\|qg\ +>ϸ3. >ϸ/. ₿/. :jPzӵuuucWȭ6w;۝]}A p(xw{=;ɥfg qV|Ą;fDhFtH Iь$cFF0;H63HaTH͈f%xJ\b` %Fb\npru C778Ǹ(u FY]]N݉AP^ܿuq/1I}BFQ) EFQSRZ) ) ﱤ/\ b۽GtL6Zp( )BEDV7RVݦ^HC5IvF67:+هҤ/9oGI_t\pEX{]$N+^}/|mma(%}"Zeb1;32;0@+pfpUa$P8.mt\@agOPk=0bQ ` `,`Š _&i Fְ5\߰&iWoX~!N9y\3gGrh8/4U,q> f|MzӹH#M4 Ҥ&tvZ[EDF8Lb:Eb9v:G_F{r_l2–{i>ɤY7b#"<2hUl-&닫ώO17}SΰQ<F>+ld>s=,/21frvX 3*51ooatcݟ?דஐmdS4xsUuA&q1rdZE]25굕G.cT~諎0e!AU99iSVW]r$N;,qkFnДEe Sp;Hз71JvM4NӉF_?%G{tO hЅ1KlQM!bt4W飔 vT+E. )VQcKO3Xu׊X։u8n0-b t{>ox% CKGQkogiVE3Y+̿/ ᇿF~lo%`K) !y[-xEX8;݁GxY\"wupmS^o7LJh΂gu};ŎG 1Ut3Qa>GJ.WFNA# n$Cy~Jhߠ{QtYwiN]*dy@Yv9BmdƳQw)Y5Vw5E>f53@닁 F⋮ky\Ab_R܄o3}X" ~(`d'0Ƕbd-Gj^S_ķ:/!.mJoL7K;:KCMǣӗ(]^x@yT[MĖ[uaԳְ {_WRK!p{Hf5ᣖ)G6EG/6hBYH4j1]xMsHؔ4h`%r'I:IRٷ1XN]cyLj#m`e?ѲEPJ*MRR 4JI/6q/f; c' )#Iio!'8&ے'<+ԗe[ԟM!9fJJkЈƐCr%fCYJo" S+ńǓ$9Z!=}$0dHP=jZC %b)FIb*=Os^jcϑN/IM+o |𛴻6N=۩N:豤K+CN8'cawM~&%'#zIDM蛀i%^NCXkH~vo&z$ѓ#UJ7>XU^Mx2Jj4OLWݒVsT $->oUu5~5jS|Gh ˋwi|W ^Lk,ьY#WשG\),!$V$٭ks6@ʴ$ϔ2$-jb>DXNo昣':D⮘32R2']z8sxc]1 -oHy$)Yo!0qX|jCHRV9[C&O NVF> tgy֫^"ܗVC{+ L)1v7Ǎ e<G18 =6G &dXruSSjp@~`>1HIG@D@T@L`yN[Y,%2 (S[=fǑ/8P#&-g5oM[E1[sLH+oH oIw{RwRo%0GQ 2^9&FZ#IQ<)R U o5yL6鱐H( yib3. ̱4fpy/̱X ,-k ˉAcp[:?,9ZG|ߺȷ/%^}c2[WT*wIL6H1^{Ln|ߺͷuoKryafVl4j$y dgJ)fi%⽩:𬵚);;0.n nd7 v3{?I`7yoJ0+LMLyngb=3[6ĎxD0m wC@ĂcI,8ng\YHj$#LT/GY`+TJP jA=h́0%p9\K`),n`w=Qx%xބw}|_W5|LAq12E ;&"O䊦PbPB%J FP2JS6KS2)kʆK͠fQA,Gc9pqc7bx+g-!@U Pj2gC2\4dl E@< `p1\̨H,19p=+`5HMpuv w@(>vx8Pis@ v. +@ހ7*݌݃:| >9|Kh^ tr<8@HCD#.2A&!3`,0AcCs䌜rA.y `|Fj C~`BOt,q(E;x(x#JF g" ( gD2$dr E| Q!pGK1'Z/ ިTT*/E`*ڌ6ih=hQ3d|htQtF1S uN. ~!:BmtCAO^ f<(b7 RMw8>0QPj@HC.:XF6Vx) /_ux /{7g*Fc&#o䎦h6 F( DkzTjPڍ}iCDgt]C]=FQ/z>>0T$QGP!XA8 GXqx^K:\F7] 0E %c%c D8D*'AOBD>aO"DDFtHpCD$IAth$!iC2DFMtHy= D{(]Q&BtEu+DW4h]&CtE!^o@7$ӄx.a݈nLX7!r B%܊PnM(C(!rBxB#܉P>PLHDL|B+aэNX yyބ<BB/!o*!o!o:!om&͏OhEhMh ڂmB[(-NhCh PCmh;k/ n[`#lm'Yx^-x>yq8p)B9I !_4BA( EC娚QhjBS2TG't]BWMtGgz>/>FV0T$(3Lj6.aYq(1x.SB\bſ*ox'n- Œ|.x|yNpDʄ>B*OЧN i}ڄ>B.OЧO3 hBgD3&[ )aЌ0hN Z!њ8hCH%$%$#$ DGB!q!љ888BG7£;уIx"Lor!lN!l64BtB BLB!ԟ::@ $B !PBh!4:A$FB 1XBh!4:@pa"~dz '-wq3a&L4~fBISL@E6ҧԐaROZ@ZDZBZFZ!-DI &nx%Ϸȷ<q[b~Fuz`ԡ[p(F)A 0~y j&DF"irA13-g?,j$㍙;&F&`&̺OME,]reA$GyoxEJ_#g-d>R EȦSB:EYfQbZBb=:֥XV9ũ=i!KjdbP`4Ƒ=v*y"):g:#A簿TC6c8Zx.M),SI+X[kiiğ(LiU :ʴ"o=cW\\ݼ9q I9Ҵ9!-jDs`rX*C  ԱۏfMVjYں"ָٟlh髨UM8(>$UCioW5J R*?0֪'釕XJiG ZiYn}1qameSrkS\o . IU=^+ͺ`i(Jܫ ˇ86.:d§m-i1In;e:Km%1LXplߩֳFfpn~8#kM߮sWNsk *t#wQ)E2.2CV:{]My'^%>b|oDBggk/o85OwkeL_Ԯ `TUڢŧ~S~zjN~im='O-fmwPz7ȦJ<>O]&Pr`QtH,QᣏgWGju0#Qx7^')q hv"&6|WOz47A-W_ g=^o0֔b#̖Il5ezW9íS3-b]DZk]3ܔ$ VϫrQ: A~gJ -1b5b? ((%ɞ͕2SDĆ'1x $BCbbC~1UZy`F]˛!oU%uUFG˭& ܛM'Xyqnoӓ_uDx_p>1P6yܒ9۱}[quݷՏEUԾ0qI5tLO1Bzew0k}QѬg|[mkɆ =5 ܺ6_F[n10dSxaaEw=NiDQYF^M*9智m{)_۪Xv0nƱʋٱ`ႻރHKDA#B S !;bo%Y~!AqFr:'; >8Sg֯]ѹ #zIrJퟯ5훐>R]P]'SekT,}OGҊfztuic壞vFInwW"G׮-'@\].rDmuu7ҝ%~Q BQv6icYKXW V)}r '!eU#ٌT07>xa^?ⴴڿj?і\3KǒODLhbR`Lslfؓ޼}^m.OW60/G6yoLH$[oZt2n ۼÕ s&q8pa:wf\pVWW8ꮖ)IG;-LR(=":6mʹbue*/-rUaǞ{GEREYkybsNI ^]-JfN+ݥW$ScyԀ䰴#3v) #X< ʸ'nc3_|YÉ(~)6GDAxpvō@Mh&P%,ޱ7ѧ}oΓ{ie/ZkÖ-=e#2`覘tV˹XbvyxǪU:w/?|ιw])w6Y;eʅכ$|/?:LK<`0듒.l_d+hSK޴,,$+┾-c;.p*Ͼyҝ0iu#鬸F|[:^jh owW)-ܕiu5a@mcj=*'?672eɈK4x e{Idb"y?(2QHN҈N|'?'}oޗRMۚla%{ϴk^vAWbg̵$\=꬞S~Tw+sn2JIpeҽ:WpZsӂBf2\jS3kUgLNCݩ?AkM!%: r}FEן<*?)h)b':3ݿTvF}@Nqm[?F]++:7YQV{gٱFow6/iEkY+nNjiwOGRƮm1~&-{7k%GuRZlG?IO-\(@auCGWzj3WkkwL\ah;WuZ?cm"Չz_}`QM_4IkMZbtÖ㝫9F]O8G =B۔mB.:rs8[f0dS K @D^H]O 9h "d_so҈!3zwE.6hT.*YJr5Yj&Dž'IUJqrX@q{Vd{^6;1uLG~Z>D[\59^5gߜMdM>PRwE,l5&kџ<7堉Wu٦8v~MGӳ?hIQr\7-:$Z5eNhcsfݦg+;t)Q~2U|5T.Y}e%1]2mͱppv}uأy.*i /M>J@#ޱé[^Rve-~"7ؾ&He877-,wͿ^.tx4b_Ø%hƿt{4%n(X+I'/Z"k^ 0{dҴyac㧼6V>wcمe+vtL蚪uCO-vuZgN /k9>R'Bҍ52ng"|_U,S;2]v~W7?H5J6 G]RUP6塚:ċ=ۤep_&C'wsi]C[n09З׺.>m'>?wgɷk*Z+eڢ:ش  KN8)ܑSΠg U( endstream endobj 2557 0 obj [ 220 0 0 0 0 0 0 0 0 0 0 0 225 0 225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 625 552 0 0 0 619 691 341 0 0 531 0 0 0 0 0 632 501 0 0 0 0 0 0 0 0 0 0 0 0 0 570 0 452 570 499 320 565 580 302 0 538 297 866 585 540 571 0 456 442 364 584 500 773 0 500 472] endobj 2558 0 obj <> stream x| x׹9sFv2h-˲%۲A7 X26L fK K␍&@I i ioimxI[mӴ/[}6K3!t{<3B*/rܙh}/E)u[#k?߹`a4bފЦ-G?2> PS,:FH(@yl-|ӛ BNhǮ[- }"nh"7߶Gw G԰fO;7xPh{׬r6Vmڰ|m0y4t u2d43e̔_೓1|fL)3Bj73e̔2SfL)3e̔2SfL)3e̔Kax dEro# 9Pዋ .nZ&huJ` QvJζQՖtBBxIwͻa GPvJ#YO >))OF">X%œtG~O)mqKa #w[B}:9zD$JEf2y%$O!4y24 -!! ltڻHBMRi&CCa [+am򥏠_#BZH"OpÏMQHH/jڄU@r:BvXׂ ko<<=Lmר$ޕ!XY2 MReJ␄OT?xC+SA݈02tP"C0"5RAObGZN7y|~tn Bn%#kV1u~idv0Mn2\~^zН6w'>.XhnIxjdi7Gkv{9IvV IRG(]dRʤ zх h!^<ؾFh@ *wZGrv`A.OuĀO$_h@x8Hfet$H&=}ʷ_Q)'Y UlOe%m}=}S s,z3R&wK dy/C=tԗvOܽR9aN7>֞eRĥFy(8^ҿnUf(c8ZOc::@un5;9 -qTeò7ЕM$}kdjtI0JH aSttnĶ΍L-O oΞDI0 aNKy٭ 71nBk &R%EiwSL`0 R };Qd$$a;G`WeN08%H|x*+i:5W p7JdھWnOfƜdY2ZA,hn\5t%>MB=T@@NqgE^*k?Uwv0@_ e`0˥zwV賺))Oq176#U <{.iM{%"[e=|#//ׇI&c3}ܗ*ڝkl$ ޚ\3JRf#{FA$1B (uFXBL8?(OU}<%Dn"LŅ'''둔pUl_;$}1؞T.UIM lu)qBM f4oIJAo q82 X8\3LC^gR m6'{ʓ.-x9w˰zvafo~'̿ N3}} @k@DΡ[XBq i=2[y (o-p3TƧM`> A ?Oϔ9.S>-?CEO Q/} D?`P RTP -VD4`tVՈa"]\jK*ZkPKP]U4|6;Ά@o(lOiYSC'bj0EQ]kkZX %F%E#E 6<&z11𻍳[*Kjcm6>|aBI._ڀ+mz[ۋ* e掐"PZ音/وгGP#>3m Vrg Ti)5Cĭ4B T۫I!hwKKIs,QB5 r558JCd(i7@ s>R]W!I;vUT跁<1Kl@ #uuNۣr_VVߵY~k-_qCy* {:Qn.uKoptݸb˯XqpmH?Ll[tuݤaVcy@xj%*މm ]} &e_WBA,Kr9!ns[W~щi-!ЂɊVAeFY$Cb Lɧ ^\|!8enVa 0:ʽ(q'1*D@)SbQT %ښX~4bg_"1Vv(j+MNouChPԤJ.ʫ/ lhү~f;o.n|WuY. | )ԀұJUUf*RRDtE]ټ7WlrHGuoU[ʔ׹ }k?v.'@߂PS3Y7U aE g0 5/q经%Қc @uFR\f/QUE_ 6e1u2fC.iNgz=d Z6 K:2vށĆ"!:݅:rBn_ӚY8Fw,VZ nH%QKsd_VUT| c(|F_x)KjIݙۯRĠTR. ԢZ{ڬi嬽*`2d/B8}X&U]WQ[>OM\IS+ W#W-D+ u1npzüv|KT9KD|-lsKBQʢ %X6  (J:Ilӷ;u1A+i k" K>k.ٸ^r PvU,-vd5ݺhم䦧,=ߟd<w1rh-fKi&|xX_/dni1!%v %4@3i>c̲ 0f9vX&̽9C7{U'p1f nU/I)b!Q ejY !-]*e8bx4ǪzcO?~kE+Goe6V/eێ,Vɥz돼Y7b&~:>!2 Ww/CE};UhNqWѐ5"($XBg| d imq!ђe"˚4uxHM1Fր3X%g\28ZtC}?dy^Z}he2UUYz,k;=O-wtcؚ͝;:koz领/<|7|1yj%z WjUM adHp"\\*sl(]TxE!$9. n/]H6V2rVܷxa^]Ol8c:u+UHòd7Y+CYvp4~?>='>붯w]#EayXtvaC ,NhmH2h.H@"=]dÅw|QBG%70%J)1!U؅< pCC3mVGHRRzT4NSN H ɾ/J T=;&Ͳ,dyl_c{V/0XՏhGIO7'|!\o0 F_?6wFvVsŞ'Oҳɿ*E,K4sBgaEPT: I*x2z?cm)0X8E8QZg9*j1%w R:s ߑLb;"e:wu@I:3MJ TLh9`(++7nm,_\ϹGawPCee2gu;[j̕۰³ON>|: ٲOn\ÍmDkcc콢Ÿ*%Q N$qXB ⥣RHT{|$R~ C9RO3=;_Sj'3^×X{m[clyO?MZ>ݝ7,[d3滝-e .bE߷$ xKmkK܉uqmvuTWz.٦EVl0t'>+PO9v=>ݗN_Qq$|2+\Wq& Q;FXNI\tH=10pu2!293V:_ tn]^oڐ~gž3餖]lًTF!2[]՛NL+CYS6DyDI9 = <acI癷ª1 GxBk{jOXr-LC#PY.l6"ʫ5Y.e&=si6zT2b& *.|@} 1,fEQ / UAf r[,"睎 Wze(ukkf4ܞќN%V?dtUIJӗ3'HJ"'\DN  .+3xZ־s$ReL?z䲹O3KSSr$>;_RS榋Ya &a;2Dgd",A9zKrgP/J@`c:Muv?ǛA_D^ʽhlՇ!}+J\qԻY a=w?ȫ㾶5fq$7-ubvmgMEXXg>1s/Ҩ|_bv^1k<7soSJ(JcLSk%E焴 %D(9ܹj\I([J2`e@;Y\JvQ)pnjظAزiZB" Fh\UB%̩< **Med? ]Zj?[tjOySd-_B,cNή+:1.N a̖R9̘ fݜ[i>'hN3i9+kA& {e/y"}PPky]ֲ=o\|F;jp\donz W=([7@UثR -ϻl%}c1){T ح. ;6ڋavVML.bwM\.ya&xqFI\b:uWzyu&*(/5EuWռEbȒ^=]K_h][֝ήk=危> חޱx}oNi^kGȯu\V"Z$C呗^ȹYzv&: :d94i͒^ ENN;W zҗKb&LI2c׿`nn߻A#%Њ3[ q#>ڑ5 pPl&rdq_.s/psLC)%^]AY] deh exbνP~8ID6kM7Y)pt>26⌫K-U'&΁ [|EqOdYvz&pu^FoX/pÂVeQꈚ5cFX46K:Vzb.:I?22 Ƒ``̲a3]eoĩ#zCr.~z 棾xOR8/rEgq0Ϫ5BhU(z8B^aۋ9^1-ajbCJ ^`гUD[ZAɨrEs*+p7P?y*[_ۼFcx=O|~޼ݻ5hT`k|5({2Cd #aٔh,+*LZmx u轅ސAm+3(&F*3yUG5tE {L$sNjKE)eE23M /V;eS/'ケ9VR,W\=T %,kD&ޝ׼S^Zи~^}3Z4FShpt.4cpV4u0|Tt/9OKF֨?1~IZ2u)T}1r]H ֨4Wke>;*Վy5L]E JxM܅+9E.V$n |.}fYu6(T;]]D*5GGGwhX j$€E4BDdLB"9X+THM|V)v+ AaryXX s"vX֒#xH1Ș{Uu=}2LpQySJ"P[Ejiː d&Lx?y!!)0(FRRbQ1JD12F|qos&$~~묳>{k=8]ctkxߧyt/p/|{fj{oX<(-Vѳ}*8+ANJsgN懩d=lj6'm979Ԍ+2g.m;n>5tWڿat^t2L-jIOit2NOd:Nd:Nd:Nd:Nd-9?]GR#Ld9ҫv='rȹ"牜/rȥvLrY!JDVGJ }";ه CE"wDRY&rȕ"KU"K dr-i:C:C:E+r"\d>ADRY&r\!J%"WI~e"˵'RNRO'IjD }R{'Ld &Y&9gry"\(r;E.\d!D#IyR|2 e櫻dj,YZx#ҫCȹ"牜/r"Ke }{e"ˑwH!}ȹ"牜/r"KHm%Ra԰TZY*,VI2Y&9ه,Y.R? _!+$䯔^^^^^Ğw\"r䗪,dr-ޕ|XPsE9_^5%ԯ"um%R[V*X%nƨ؃\%X%X%(YT*TfQ̢RENKD./T)FAI=eROS&I=eROS&I=eROS&K=ROS.K=ROS.K=ROS.Ti_nVATXΜ_nv|WOS|2u/:Ϸ-uսo|F)jhAWP#3/uL#sisꗤenpuCgu4~FU]Tlս实ۨ3ꧨs;tugnS[׹za5uXԥԿn;;cgGw莝ݱ;vvtΎ;;cgGw莝;UEʯ T@MX*1UݯR"¹qN*Fy \Ƚ}OMjʽ7J!gQ(R9Rcjl]\Qau[MPryrݶBn 9n]AzXu 4Z"'mt\)qJ gwZ?_?nf$γ$Br~Ƹit?H3^+S= 5YFmGϺ!b< H{2 Ε|K1&ެcrrc2b2ǜ d)>j;a#_ڙ/R~fQp֜c7Ǟ01KRBwZk)W } S:ѴS#yNJn]KDVBT:B=txL5ʼn;&Jn7(w$.+# ɸ5Yqt+1GW cH{  @3Д`<mB*M'P0^IUS75J @XP>$?C`\rh,j,Hw<Ԅ`x?E#yH(Gc)Hw:t!XPH0>'+?'7o%8 ă F9B O#Qz Y}?D?B9qm$zsщXN bD0vhLnQPwF'S]P e0,FXh,w ;upҥ;9B13SQK%nTHE\ݕxX, 帕KbxQ8! DOqٱyꆢи?7S$O_nbPrl>'7O %?eK0 Pyzj䄂'ݞ\/OŒD+ӼʱQ8cPȪűDd0@DD\Ϲ?*ʄ}b! 栞Dgb2)TQ\Uvz4Z>d$E/u օ2=/LDǞ?|ƶ`յZf>h>^iV3ס?d>0zs=##Uf菙Wy|Ign07|lMewLfYg֑.{{f={=53h~ %$9܏~<~<~<~Xf4|a~~<%WW_G)i2,e1,2Ӭ4te2%44ӭ;Zϰ@duB?:,,;[ѻX]лZ]ѻYг,YC[~[G?:\\VwX?@?:||V {Ͷ..DeBmF϶X}Z}yZAՏ/.FĺRRY?B̺ rrV[?F` @++Я@r"g^ߕ+%%Rr'}!Hg?L_^|,^=k5=5Zkg#F&1_BߙLf[̷3Ti𩒴=ʓ39VbR^#j(Wv ~Y순Ss_*{e8% ew_Okï#\'>&~=\`x>!\}4+\/pHnvZ=cc51pQE#'l~r'4L䵔̞RF_ڱhd|ySM]?uکO}k{SNmztimvj=>n%N_?q/Le3:c(6r(~Fj}efGJm[R3Y5s]3b_q/.Z<8RյVmu++ZB4籤6?wS#B~ր֓3g j{[eoZmu~Bóƴln{dքYjߖ\u0No%"eՔ%NJ/=ev#*WfQVrJZ 7'1iT1l[Iк%>~'$u{Ws=V_!ei}G}/:Xŋ:>D2{d׭끛 u>;ܭMwI2{4'ڳ̵]oj?r{%{I mӶxDV'%J|%J=liXtZ"I%:6^"F7"dQ#xnomn%ڗݱR_,^|%%Y鲥%f Z6oY'?|3bֻUdyZr׶qvٸ2ke_ާ2{9wTeÏ;w{A$kKFԬZ[UZU6l#Md~SЉvagz;>&^gWxF+<7+|}C>#Ocn îzc}[Ͻ6_fî?r)ZS3Zj8I3-p+Fo`w^m?c` @.!B0~-w~ײZZǵXAF$pa sh/}x͸{Cg3k:3FW=C (m8$&Da Li0f=u/JXð濱Ywg4Xg/pzxޮ3;ip:t3 g̳3Wpϕ0A0Pڼ5a{&0=e`00Ů0sʺ/zb[}kowv5gsb[aka2L֝\_%諠`5Up\Cq{[ȫ0h1aMx ކ]즞zx@$$և$i+yӀ95!N ֮/9>ċvp.{ e茑w0!S8.|wxC@ 6Azw`[/Ni0w&,1b/~»>`% /[ e#{XV#>?\_$&lWx_译c={6]%w+;s& 7ï~ Q~!)8Ur,}BwC{Pg_e~ȱ\%p). U0) ~:\7pxQ!c g˅ ÝԳ/Jߍr~u\{a< 'I'3Ӱ _Y<</l6x k:7_AAAAA yCD7Dm 6y D"=D{UD*c{ $yO~8F|o[;j`{+p/T:xx>N${6u:^Sɣ-o#_ӡ]ގ#9 DqdD$)II}D$'73߈BIP}x{;zd+`m#MSlI9Q;TADO3Ts1\ ?R=#&tE0ðZGa+Kr|^Wa;"=UU.{^Tj@wjnXcGȯ.{[eʼ{nzgן+*k\XHAX3x;iTm糃Xts]4V&q$Jw7􅼅,Jxk3xKtr mVwՑ{sNzOrwbl36ٌMȧ;֯t3jڡP>aIsgQ=u\[jX Ka;*KR>r+_9a3</Wa;KM}>Oh7 pط4_%|_7-[ 0<X B%aXf}ɼB+a \`0 jqnqn9Ye)]M  R>@W8@{^^%\qJ]7pym8Li0fL(w~yu"`ܽ˩o+n*[ ew||Ö:n^}9ߠ:/W}KGU6,'9J;Ȫ|CTVƵf#f28!J>H}qIʮSj(Wssw ?>9*)5y!8 A|/_W5|rv=4%3[1هBy% ` !0Ԯ2kkN}p}p;>}p:u=EpױqIw/\%^7i5kkkkkֱc_[Ǿ}m*Uk>fm{${*5IUzO+{ɥvȺIIIIwY>}d:II?ob27B߈5+r\"ݢ$O̩jjQ%R- wq\n{k5 ž~O^`-<\֣?Uc&qOp|6a#54& }~DDDDD$~$ U[)Oηq| +*y5xޠNo[6wȯw=Mz`^؇!|D'%S{3__STk5j||͂V>WM&5ICӘeFGUN$?IO$?IO$?IO$s_aZ!83G~vMZ"/zxd'mv ~>BwS '\7dC54H~_%p).0~ j|fkg?>ɴ̴)? R hFHնMi)EM  b@v^q׺2ٻ qm@H>g:z}3gfyY^#|3:f[xUXtݠw>;杋޹蝋޹蝋޹蝋޹蝋3wδߙ;~gSLi3wδߙ;~gLTp3Lg*3 g(8C Pp3\#[PDJ|ջpa~zif܂hC p+nC;nv' ?/Pċxo㝐'1ďI8GXXÞW N~ދ31glXu.UYs-s// {_Wa5WcmSL8PS1)Þxu8[97c}mHv?D?Mb&ܕU18sp"NCj)0~sА+4 BCА+4 BCА+4 msU]|‡Qr4 \kp5AEU*Tw.pz/̮> `߲VspyF:h`K^嫖Sx= NT ovI4FuȨ!:dTQ2CFuȨաM^N߈Os'6>Cgz>/vwQuq}y ?)?g xAZ1iI۪;^+?d`PGx[V0OX?*6?6d7?ͳ~3^Y8f8a̦|_% F|)\KNLܝqܝq;q%y?qO\s(ΡZ p >]ЌȩF⭸q7CSQyWQ8~ch0TmxžNO}İ(:]DtjXi8řp6w}5Ź֣ )l}pfsƒj urߦxQ 5>Tj|P 5S9ث{cPjpB NA58,{C;5s bgcolQX0lbcwYn 6m?sܟX~bm|;vtxtڱj>^exkx#4lɘ$jpUXFXtb v!3%,q=Zò7f|3-_oZ~kǖ08c/ `1?ggL?/3~sn~L+6Jy;??SΕ 2!C&dHNnLȍ 9Q2bPFLȈ^1!ÄUWQkjmBmSkڠZ+Z+Y:PglBmfcW–dհ+*ZOxo-58P莇d" É* 5i9>3d:<-caWbcfĻBcН8ھc0;lL% ]Ckb'w"NɎSsjxNtǝ̰.1qg9wessqڿyη"/%|K|1R߫>,I, s ;s{rY+-/;DáWl*[ƐN ~7f\kBGZ]\hqq7:u[c=܉'RoVosBؗxyL/Qċx 2^_5LuxoA$!/ -yGL$ ɍa8ɰ*PthN䦰=yc f%PY hyض)֨!yGԔ31y'?N~ʲM͎݃[vA>9[~m_XX~֋;w 'lj7{ֿoG pn_D#LhbBz&40aV3 MLgBVLhbBz&3 MLgB꙰ Pτ&&41 Lgr&,dB=ĄLh`R&3 MLgBPτ&&41 Lgr&,dB=Ąz&40 ˙ LgB꙰ Pτ&&41 Lgr&,dB=ĄLh`R&3 MLgB꙰ MLhbB= Ą&&3 LgB LXʄz&41 Lh`B=Ą&&,eB2 MLhbB=P/Έjtmv=2-td:dyy!rֵ:t厕0LAjNեS5T:TEҡ:T53eu.iԥ3ՙ:SδGg*LE)3uL:S4[gב:REGґH:QV'҉D]:\(D:PEҁ:Pԥu@[te^s} ]5ι_mZwγQ٣uΓyunyuӭlqPi:Mt2FeXg,[t.eβGg),E%t,:K2[gQ:JEGQ({tRQ2:JҭtT:ʸNIt-:IWj~yNw>Wd9<͒f<Ɩ [j2-ulfKN1ifvs kjY35u10ifcɰ=sSǞu9+sVhUC?Mwh/YTˢu9+sViV%:ǜzf6ղiTǦElZ8qg;s<ڿy.}>>uF#zMs/;46e˽f׮C,q',5i4Y6mvblf[/˶Fձmlq7띧lB9Nykfvs j7}uNFl27{g6ggakuLc"&JviC{=^db9 scmbWFF1팜ơȴ9N9 f1s3g'}腨Sld`t<&7qmf\eEY6=):]`86i\(˜"seи ̘,Cț yGldErf\lfAe\l6Y#>.SƍtH˓qY2.K6ˑQ-q1nD7ͬc&dшظ7ZPЄS·x#S42Feܨl6 {<#6EW~\ˁͮWyBq7EWv\G]!u+Ϋθ]jU^*/~}3j{{ͮzDmvVmg\vfV%jWmgvhQiT۽j;3Fhj)V%4FݫjȵeFU^Q(S^QѨSnjnΪnh/QJi7KtUF}~Fmo1s*Oi2j;ÂJ'idB,*Oij]hdG-;Tdv)ݕȖ:̯vFmov439K*UۙJmoQm,c"ݫjUZƪZVUmj;3 Ȱvf˖dޮYźFղnΪ0jK?,מοq*]gefL3sgeEGQ2,2ifd3m,2ifY2g43`f 302w43lff3k92aJffv1s3g1s.30343fΩe0343fΩi+s]L33]ef昹̜fa2sv^f+w׏1Y[19fUZfgf]^f+w׏1Y"3{fNf0'Y>bEO]+X.Vc,VέX +C6vs\šj4k_>;bZα->݀p3nqz|J>eyvC~~8* ~d,<߇ZɮZDؑ w.l$yg&܃{i= &&>Зx=L`, 9~_exkx&xG#Ta ;?ZEKO$>GpeI^hM^h:\OZ\fz'[qn-X66R"L>v$;edW΄MaOtƪFkމ֨߂-;] }<S3ERP/uRT'EuRxXs50:^F^N}\J|YT+v˦1T5lʕ{[pcoLʺ91SȢyksM@A]ۜksmsfL֌ɚ1Y3&kd͘5cfL֌ɚ1Y3&kd͘5cfL֌ɚ1Y3&kd͘5cfLZcXk ka15ưZcX+Kƌcq5ƱV%enY[%enY!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y8`98`93}za T}][U܅Ts9{%UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UAR$UA {|oS[D3{OZ. c\kt5:ӻx>ZukxJDxg?_sMOqMOQJ7w,9C,,T9P%TB3ƠZg[BU]Z*3f;b T#YG:6?T#f)bֱC?rĬTyVwhbV-Zw4hy7>e-;Y\R3~~>~? SB<.!_x ܅LG{h-ңEzH"=ZGh-ңEzH"=ZGh-ңEzH"=ZGh1SaLe3f*f*;TvHG*->l;?0m}ŴL[^쥬_V[{6&k|rluZF>'db-v ȸB~.%q/cgTʗ'DZ~n~Y>IěxKU<(WG:Qru\(WG:Qru\(WG:Qru\(WG:Qru; `&\0jp9'W6ƻ(_(GdH4'|Z'E: I2:INIuNҮ|_s0Tj\coHy knE;Js;,F܍Ӗ}A|y~H9`/R40oCuHI!~I!:$Q5/Q5/Q5/Q5/Q5/Q5/Q5/Q5E03P8Hb&f]8 GƱ8p"NɘSp*ރ0 gb>8 P\Xq.b"\ c_8h^tQ=|_ T$~(qJÀEU ~sGp0ڣV{~}__~}_Zz/%W~}__~}_z/Iw&ɾ+ݾ'?}t@G}t@G}t@G}t@G}t@G}t@M)ٔM)ٔM)ٔM)ٔM)ٔM)ٔM)ٔM)ٔM)ٔM)ٔM)ٔM)ٔJ#wp!dSJ6Kٱ܋nwzcA'pyhA[>!| _cmUJJ쎦6m^|R\)cJ3Ts>UVb ^aκڶFkskƶO:Uǵk@r Hl+϶W}Uxǫ>^W}Uxǫ>^W}Uxǫ>^ԪNbI:Udz:I:qNbI:I:n+n+n+n+Ji5 ՀVj@Z Hi5 ՀVj@Z 𶇷=mo{x𶇷=mo{x𶇷=mo{xe 3^Q X3cbɝ}!*ω\1d5sM\1d5K>1IݹGQ̙Yv$hU⥨)ŖFDEM/X 5^ iEiQڨQLAM@B dV1dl \9s;繝yfg% S`X >kZ!D45h͏̸|"3ǣx4|ǣx4|ۧȏrS'82 WFbYA |`u`% S`X >kZc:e:t9J& BK}=k_ 9Nuٻy1y1&u2c*kp:[un֭úuXa:[un֭úuXa:[un֭úuXa:ff>f??ff~o! wb @9A%X >3 ך::Q[?isKޭn3S\q0{V3*c T2fOe̞ʘ1S)cRLJ32f*eTʘ1S)cRLJ9a0s9|)|)Ue~)"3w=7}22fe|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(|(k'RȇRȇRȄȄȄȄȄȄȄȄ|竗}po2 /au LKA .+` \ 5Zp_+X:qޒl}/۶Gg l-ز}ZЧ}ZЧ}ZЧ}ZЧعA_G`4aVcY$!v;8d$ _KT9N$b"K-"K-"K-"K-"K-Ԋ$")H$ $DRH A"&@t :DG#@t :DG#@t :DG#@t :DG]O@q&ҎGHFG}j;`C,4`, 8m||C,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B۬ƎqZ:Sl[+J޿񣯟󣯟(˃}g]뇁`<(ʃ׏~}G_?׏~}G_?׏~}G_?׏~}G_?~y_~y_~y_'gv;lp#=gx6bF,܈p#nX 72F5! ?^#VP}i3 oFh\JjGlRG58Ye:ϑk_Mfo&3A]a!NAqKVh{3SB5O j+{l-vդ`Uӥ$glZ9|UM\lS9G>$a1N}:HѬDz&w{o7{U0~H ` vQߨu[ŷu`@q݅Bbb*Om/3Oqfn$j 51 z#~pfq1 J߮*YS4 0ELS4PK}S ^(dm֋X1TJP |zX 6A~MS&ӫ7?W{}lߥWj|/ q)>.m5~8D9q A2Fl\ ǝkYf}z< ;AH~wƂH?1 qoqX>"J"g(b*/Gi>4~})Ta_q|ަK.kmn_ϗYݶN~^VPeum\M]kۚ:z8Q͔_MWRg3૶ Xi髶y&9G$; ?IWޗ·Gٿ| ,|U1$З-6~m8:жISԶz8}Gr1QNI;}|gu N zh?a=IvSV 6` s n9v/}m+7Al[7m[U6\a6\av1hJԌ#b)\ UW⑹xb.aqJJJJXxu.VN*L$k ˀ ,տzBk4'=Ky!~ ׏2U^#&q$Ƃ+qd+H80x  ֠A ԠA qBI \%H $VJX #A#H\ 1$B9Atl?̷ YYjei1ark`kʑIkarXvj`FfFfq85k2v-Ʀ 4&mlǮ'>W˱Q>6F(%cd쓀}OvIȞp9.ȟ/@iݼE!Z^)f NRM€FoɕuAfL};ts}T2[84qh,XơCc'9}nD֌' `t+n]1kǓWT0`g`a4p:HhcU5 m>מqyi. "XTک"~Q}LU;O7T;/W_;a7L.tkXߠyF}z>jM"**/Ey(1GV']ȸ3M'w477oi@kvxEP(9p*Rt[m |Xf"|Q`_ەH`Q}И}x/9?gwEp͵TTj'4#/j׊ltXw~ ~|b_neEeG>ۧ+lղe6˖E9գIJ2Dm^"J 0-<"p<_*Fym>kUsqi<+.Ê˰2_Œ"HV[Z5] z# ;Bd"a ")2;Lӱt$@g!rtp䈝ۀ\/dOLkhmSdW1WZ@8*ZZEKhiC(9rV"oYi ݟ(@oeVQ{%WƈL)/i'b&-VbDP&Ie -FS鍧`Hg9~R9`*FWk9O) n` s7bQfZh/ihEVc;D% T}TlL_K LEY@e]I_#adv5̪2o$DGfX5VGX5MGkgv({-8)oS^`IKX @9ﱿ,~@5?9l -9>9~29~'1ީc|狣"Ue 2l ."9CAlP:GHWqlY 1/-RP[ITrE~k!Ț9șsr.`zԮuL 2CurDaEFkHٮ}:;'tmiJs`'{i^{i]Z,Y?m\ǥN^KӼypZ>q 5cScXlJg#}6k`5&c=퐨Pԑ?1*̰7xU7iϧ<û{ozu==W3y-Nb $jFKb9X6s`ow3AE p`!xVЬ㦺 jt~yxx8a BVCVLr(3ɡxnvCvìq3GaE!P̈QB$+vA$~5֝J^sfO6{\n;v8#M18fv~p cnq>c~s~.5dHä0i:LApغ]2H]ao;F, æ&̉b,2Mqaۙ1ܵe]55 _4DcdFeHaNٓ˶w&FF\ܠy/r%)@ $,@ ?bW8;%}ll;aǢnY"MX9˷r\qgz4z܈696DjPQ54SC354SC}é[a#xHRɺ (Qƙ%{ ƙ^<}HSlx>kfg: PƀRL~S\J=DO{/K6d$eH+iebLZɤ2VFHZ-͘HEԾڇS1ZUr9--գv;֨mIS 9[$/ 4?tʹE17Z3΍/za86cfٌ7fF*C1z?wn3~{?d'dzWA!={Ƴll<ƾRx>oo8x R -r -DZHiVKhu"NvS6-rwq-_AWlb)3Kr\i@,4H޵,@a6b EH3i i#pb. iґi sO̅&d7Ɇ"p$dif8-L1GFs$D5AH6Fv{Fw^čzv]ȝĈ}Dd~Zsx4֝z{="6GG6%:y{wh7up4; `;k2#̑Oñn[Qw K>"=jFb!āWf?/t1QYb|F&Eh$ q1N|gg\h 5~elgigԸx8qKFh2!KJPURJqqmo. 9P4fʃA,y<ظC;(#S-6c,$7yOɧ_sGy\(fʿ׍z|X#K"c\"5>R Y%\!W[d3dl0UrM(0A4M!C2d|#wVLi4mtLGfs sCCe?ps31Ǚ'ȃ̓̓ s<ļļJfdΒǘϛ˓js< Gy\&aO5'?7///ٯo_ڋ2k==[{iaf1Z`oXV{bIwʓ^⵼=x9{w8a#'{{GyzzM{Wk=^s-kygxsw^-yn>}3q޷x.Vz˽=zk=yWyWykk={^zowkD{~ٞó'}>ko}b[̚k5[vvX)e9>9/΁NU r:G8GZEPgss7jrFY9qVssssNOg3z99z˹йZ\\jLs;:Z΍mV3Ùa}r8>vw>qr;9Nyyܪu~Ѫw[KAMfb5>O(E&eՇ{Bǒȟ8ͱܻ\{+u[PD֝Rz؃&vDӻ ^6M-rapM$ޝ;ϓ7k͞*mjjڕcK5:27Z~|{"W㖱WE}j {ԋaT}IKc:v{]%f%vFn$TCYd?U[OMˣ>_f5[k|нƫt1) wҮkM{_UV~qh12OR`eq)=؆ZŸ]|z;lWc ܘ]v~mKSDػ.2t{jiGEW֩=bg۳H~ xc[z.|^y]E ,g,]VQ K<͍pOڻE!Ba PIߟ)f>.AKG$E2{D>Wu+59z2yo/E>ꠞr̥/~y}7|[g] =h[w?~=,Fyۙ˻lUGk2q-l]O%sUƾ/-Yt Rd[Nm}Gįr#Uzִ:9dL|~VY^]fz⟱5Eƽdun}}^/{usڥ=GKn]3uֱ\B{']̺tzI5t"kwqn7,3S;%G=Jb hwl%V\$S#q<\ P*ctUjP­uj֪d0Z^#(Ob;>Cn)RS:CrBXӼ}˙ybL7}zo=R|/hKGb 39_r>ۺݟ냽y`ǁ>^tἲ˘=:?aq~ɍwrTyϭcs5#2Zo]߲?gc.wvصnuܭ #_tG8j>RU>CӺz ڿ+ٟK:z]nQ'ݲRzVyo"5~{Qq*C=Q{F}xV,w7Jvɻ 1qu|]Wkta%}d/OCi?T#O^\]M(TM8?Icм#Qs+r)W$k~q#|kNaHzNouYb}O,fGl@[ؽC<<"t\?2pҜGŢ)JgUoq㰍uSx$"q>i_w !$ȊњےkbaOU uO%a.7)wߠ=[Q(OuݵqFxZӡ)$Gi;#T#4v3#ǐcε3n/w]?4WG|e7mHPu~>x}bוGKp1kGrֲEҤQBka%|3}s\3)}x6=nG{̨SI {$w,q\MFXk#m>텟Lu[#]a"{Z^/3)w<\czǟԶm#Y꘽w\[ǨYok]~stݷ{='thƶ^}[I|5W]竆k1lQGIVU~moGr Ԗ7?޲CWŭ#qP'j1[|"6J":dH7,#^|m 0 ed3qqq1ٸ8ոظ807.M}ܸh2q?u_^E}v䒄$$,YB;QPAAtGQ{QDG7eTE?]EDEuptU:{9Uk酼vz^kko4|M.{XjKמaϔyu!mtz3@6q9d3![6YYs3SVjN\v9)J 9լݕO8I"Y+7r+|NT@>RTj廪BU̚^Ϭ͚^oj^YSYjZeԝNkZZyeo5\=NUciqu6M֙5Q/V:GvY^k\}i]ҚcVZ׺utF7ͶfM6kz]qZw{լrZﺗ[ﻳf]dm7Ofˬ>vէD/>ef^WX_1uP?1kMC9Mf-ZS2kMm_oo+Gm')S4ilLI)MAH!9"%x?RR"RSAJI'#_).R6 L4NԞ2) #3C jHHƚU.Q PIк(#ZӉzm鋔V(5ɥ1t6j8 4-DВKhpeCMW9HW?!\R C*k :fg"ԂT@#_ H"ZrTD7"rZT@A Q[ # R["UPVmt;꽃BKV#5 h =?!0=HLϠ%"sHM1=E7,_7Ѫ 1V P%#[x£4&%O>yMc^C"I߈dqɘSx4DY"]Lj ADȤ\%ٔ'zA$rE.uE}j D5ZR$IUŢ -9IDiD{h:hC_m/ s+b8ZrY?[E da6\*fJqZ\{${2|'7X.nb Jq\7'NxGK{}Ȼn#=O{D|Bŧ}g3}.>~wR|IWS|-^87C׈?!diIK[ڐ@VRAv ^N2^Z/^2dxji vYM–`[G鶶Pd'Sbg@δ]nBvSڥvTjWdwrO{U$aHRUR=ΞDd|ʳCfOa3}}3TKҮb2^z#r?gyQGx!:JIN3 pg8,OuN<AR{ 1|93@Eyy':!Or&Q;g3%Ҧ8S)߹ؙ%%htR;32g&lf9Plg6J¹WvTO\u3w]\2̇_)sJ^,S/t"gZY ߜQMM(a½a'L >DqbNRǓ.sޛQrg9lnqn+66{s;w8Ν(.ֹ;~yOOQjOjyf9<΋%g 痝WQV t㼅6||71uv;;ى6r:OOQgg(a|;ajRRTrQSPq̠j")z`*7؅*]RUҨJWT2T,3U\ |OjFJn pj M*DiT3E% #E*uj V5VmT94@KiN+ln 'ȃ`QC9]3ԙЏRA9cx\睤&BX^.ij:y ruWkQu/(zڨEF|'7l*⪚ej-h ުnJuۡCA%jZEAZF~Qkp=دUkQ??ߧ#i|ZOzL=F>|To#5ȏ Q# (B˷>PBXm'v(s=j/D}sԲ_}KT搪zT>1$&RŇs}\M47Mn @_ǭC&QD27MEiinltܛfl7y am([n n)ivTǭt;nwkeoe}(s;r*T>ztGQw;:ggS;'Nyy:ѝ$w3=Lq PEE};w]^zf y.׸P w;z`h**s5PAȁYP^"2P5&[STa54&fhq/6FM@ؕToo#5ww~`?SU,Dw(5WSH%􏤁3gJyS0"Ob˜;vGF۝mg0h1ڮhmv v)}P0`F=wbz3n3n.e\ Ԍ(\XH0J%Njpu1R RF%[1Jn(Qr+%W%8R)UӭW"2nn*;w77|R) $] $ӥ^TDѓB*~-܈T H@@,pv1T "4/|/#yZ^E*"g>.} \ތv.  R;f~@0/> '!,{]'3^0^Of`^ztwe~2l DPBnvK b\"Z`,O? \%0oEh-Z6JP~GJEX }7 dq27>/b>1D \%=1B@i3!7H78Wr,xB<\<81Rpb8C8_O`Sm\ A,"YDW)GU+++BF~. !2pC? cPa8!3aA3aA2/~2'dxB@d9UBN3dCJqj*O"(7"Qe2W+T(_B*RoGcjb!`_k Xjl%[tمr}>BW"ȆMju:S5ǚCݙcSM}8ԲZV m)mD]>0Rf8pڨDmxN%R𜺸 SlNsf;e`;@Ylv{{pu~hޗPGMuN:Y'Sy4͐7%Thvֺ 4=]@}>1,ꡧKgAs6W Xa8_gW=1.ATD7. JwS~@#=>18'FjP{Eoa޸ e{*?џP%sr{1b؆bKkCGP %`X? 6@ vQ= {H8@fgу4P!0?5,ZPTJGaw8B{{|.B=>Ú{kzڝpאH~kݭy#.op'[I*w=#^{zbaN!qPx?Gx8H;RpH->t%w1}7q2?|?)JCmyQGAAejίHyG]x1"!}?[ |T;_Kv?I|Yss8q:p5i{zUwtw$"Яsx~ˎ'cwr~߰fD?S(W;5㎖hMuqV$7B|. rށgvN=o֣vcbgaSXwYMT/H pPM=Qn?~%kgwͯTO[||f5~jk{=Whzg{;r%S%\txL|Sן]K_b_̓?wş׮}9'RooOr{C - 7ϒE?su'Kz#jk jl^)bOx{[լB?w+ޕݓ]@kaƊ;*5kjK5mjoSoW&޿ugc~9ߖV}{YB2O0U.,EbYR3V'ew ?Ց@JCPJ渘yCkɇ^=NIzXgN;'gU2' 'v/w~ĽSr6YB-F,AOS詭q 6GzmK͸׶^ۆ{m+-kGy6&w rzŽppoqo.r ѧ-`s5zvbEѿпoĘIބѲ}=z*L pX\^W` ܊ޟ;rE1wwb$dHHe>㡔C&|+k(7Mt,7c=#95 |-r d@[֔ 8GW>F0mߔoB~K w0y5Qn41a'37l_Ccٚc|œRQZTP%-Iu-|>غt3SP9GR({[11l6ޓ8lhm-ޫMLE?2m6\}{%}͇Tm~vBl"1Zx{`nB9_{_Scw to\9ŕh| GhqFRCSa1" 񊫍t#VjS]h[И2ZIwzWJ]tJ0'Rs,uwo΁[eW Y R*\G ?M{̕M|Hs}>YЏQ$=2"STX^/F4ȗK =Cπ3,%cNMv$Lsf+ٖ\̶>Ma\œ*rnkm9~ r߭6ۖw9~w[sn)eےwK9~$-ݖ[%[%[%}+ZJœku}99y Y 'dOо&OtB#ax!C+\('z %'! !ϡ{ry9<ўJ9( \96ƋHDI-[(doT+Hh Im) +$W 9d<B{x-?a Af-߆Ȓ/ߧ 9 Ȓ{b˃l|@`P}@2XuTx{d+ `e rhduC V3xGQ'ok[Qq\疻dp[s_r_.,"7@ݍI w,}WS#ߟ|>w'yƯ4`R~~Wkbb_i &x#[ȍwI㘼Kb_¾)xٗq|^ 4ƣIX$?-r^"%q^ %z_y_Qw;x" Y؆֎v!ؾY?2ut(i: tN:CgBFU^GGeKuƋ4]+PN;z);`t7ƻ¯[EOÌoOO?,$HWQK  , GOYQm( >e>32願]oG[O፾ !Plz,^,z_0z quCtd8tt э!Wb7 WOEw.=>G?5DzG?Zz=t iX'G"GE&7tM1"S>"3"Eh˜Xs_G#quuaEFT,̥BGDŸDccEUQ?En<y/j_ mx߁&AgWΩo(zzƊ #GZTVw^͊{x+k_~+~0+GTω\r龥_ #ZszpLppud(56@2iJhfh^x3;x<ɬ/ &GGbT\w^p82|'\L Z:wUat?~!6V|so? -nJ*<$BCCBsB+BBӂK7_  .4QDt}{&e,9mz pVo= {0kM]ւf>V@wAcoރ[({p5"DQsyDR GQ \!HE8\CGpȆySPR')eGoebGQQ d)ԍzP&1L ϐ(|C%d>JI/zKZ>J57HK$o6E:򿑓D1J)򄬙@ِ~nB]t;ݎ.tB[h+>E_@F3B[~/җяqzMЛ{'UoQUEPm6ьꏪ?_@꟪_G"w33rds%o"17bfocbB11D1+1+*ABDtc#b{gdY$%#+ofhD9U,kd/_zZyyEK %f+18'yJR}v9W~ ~D)Gv>2v\B6Z߳͌ܣP\ܝ0nPfzvW"3%oX-DUI±7=xP̓M0"kgp' (J6GG:  #w+Uޕb&x; E4ʋ-eR <d:-(Q9KȫXiexI.4˅]0A&ʕZ%C)Mf1[G6Nc>qt8yU :V,\SDI*JW3bg\L%^$>Ⱥ;Oح:y%\$~eI6y֞<ݕO+g\1ϛfJl͔`w CBd/|wcYfq,9w>+Y˧6/0%Zc`~, To٘Jlw1E0 J+ %xvWz(:ϔ|枕iB3޷Oe~( Hx(1XoQ : >o30}HO @̃x>$ͣBuJ+A=Z7y$hg 9  X99',z=a,6_j խ`eʷrCA A8[ Ԗ T Pl8! إ%dՀMFݓypĢr Z|X2uˌ_M;rr GΖ.0FЪ\> }/ahڕ)Bnr?4(TJE, \>X ?K !)P+m . \( w/u0TThRۡQP z/D: - g||v(.0}'ni6\>^ > qQ~$f;gU(1PWTrBrg_ĺXUR# Bawr ;Ak^JL`vWl~a *P G}_lP S~0( 1(/mZ Lfͭ_̕ eҞts׹c0> (NgD:ЇstG# :NF:}NS :NCOt:ʥGStL:}΢P>MgџC'''ӟGP! iiTDY_G:2:>D]wQ%K9Ce/կ_AaU5_b߈}};WBoƾƾj};mN;HAF:;ϑ9`0 E Gr~ #)#jQ{~Àkԧa{2|'ӞcO5߾gM<&sQg{‘I3i:o-!z&,όg;!s)RtV-j>$qzxLƠx=+@xwڢUŸg%|ԕ!TX%ߚڷvWY|=˔V}\o2%,y8!2Yӝݞ8ع*Vxbs"E${L,6q͢c<b/?;KRā~i\̶\&ExW 1jE[ug"?'ت={kϟb2}tk_<qʽ#p7>KMUv>rsIW%ϛf;Ӝgy4~qM+wVZOH8Wkczi\YaMD-'$ΛoE~Q(&Ϫ/Ȕ->6K;^VɆşoUOue3>+ 2;A.5Ӛi^K`).Y p~ß͞rKӚbXo@ٮ{nxmB}}!͚va z\ݵ*$._L*W(\וfaMt-DyVB3gXp0@t/҃D_&zp`Mz'} UET*bUqċxU"я+2F~% F%U*OI\$*U=G lD*U_'FUP}߫UMgT1Gb\CqK51z]Kb^]]o' P6<6O쇉MGF }VFjEqC&sZ2 K?sXu"C+$""%j7O ~Swt|)|*^kIn7iYSncT|%ǼT@G.;G%v:n8&3C'v;&ǖ)8Eg9}vOqw:#Yսko S _ewְeG-Yػ[k#܆&M< 9W3Qlr%R+ݕ ܪ)Ql=7rB *E:giL\ZaNӚ&,˂ufW_e ´Wu0u?_wm:E7sq7c\)״kY\9wd=gSˋ&n[Q]ϭvu<¶jLKVqG:M%O1m+Zϰfny^Xnzݒ#yrs:ʝ :V#MswV9VX>мơ 9؛qt\u9j %G (1;HاqYoru: A_Ew`T1iJ\(|Q떐‹\*gMg[G m-Z{tK"ՕRl{|WP\rnr%^7}{TlaD#OcBi^0 Fӊi. ͂3gJԳ|(ۊs&VA}Gw58oB \s*3t.{k l v\k5N+Azt]NEmfm ɒgN *?W5~c:պ$K XDz֩gzM3tlz ~O!m%U>^H0B- |6VfГۜ,dZWkiMVKju%h|5/PkW)}'+:~ V<iJu޽c?Ru7F-uV<A"BQd2?d~)=1DW_e\wh C.wl%k36!f]:WܲYdl"}~>߲ha3mi^گ4ݞEuv}11VhvM Uܐ~^߱iJjJ; ,e_gu-"q'9mXѨ\QjmN1xF"?oZ:PCWjԶM+m]2k \7 ;֪*!ݲ.MU48{i~ QÐpA\qPd3t ,jtZ%v; u6 M-QMJS>[m\g6Nj;kNslwb~nYlgu{V|!P69ژdx}5.a>=Ð>SWl'tVӲس]]uS wd4EAn3u!rĞkoOhlb{YCmg|iFk_߈A.] lZaװyM'h C|[Za-Zш:s æTu [MD,p]?xf\u 4:ȩn'* ~@jd}vҒtjtF-yՖsMNۤJmmkvWΕچj65'l[M[Ξ]sf^3 7َزL*nq[4mnoLw\׎lvڂεC?n[rm>kyгӸn}YlGl%6^>؎ K׹fJju +rݞ1 '+b+ EӱHدsll[k_gmM*7jg(X-w̙#Sv! !6pZV6%A>W`Ws!Z]5sŚ,]uیmC7n0S`}~I'X!\p\1UO7`(mI u&KHХ :]kd} V-t0SlWJ~ϖ*-01h4'F<^G qۼmoo`k ~l[IJA@>0{foGMC7Wmi܍M<=dϦۈnQANƹ;gW&.{[`=:h q/Kg9nݔ<h&NB`O?cuڒqf`m_/띺 }]eOҵ,6S8a#Sն44.cx-oO' !bn[5ϫZ |~jq?o'5P9 DmaZ㕖Eaq> 3t8-ݘٰ&l´=Vxwy\7xcx6Ɋh& E‚vo`x#U+:ņidbԬR+mOk#l<ҐɶkeKqVP3nnM9:́, C!|N3c[7MCm9ָ,˳H"CQ!& wcA{[ՕԐKct|2 i]󀹀:Wj:3 "S%%:˘A(!"$$434HLXR/R.\uXRʡ,ˣ,Rʺ.u)u%$v@Z&@ |R:<>>|BH8q_h.o/HCK0s6,Nfė)0 ,(*CL 1l5MQ6U) ̦(B)M= Qš_ױ?P1%k^F|_dM5aV7@<77H,eGu`!e3vqR:c6b⇔_*sae3WT?aX{eOɬuĵJ~mh 4NYǵ Ru(3qe6bp1wx_$ sϫ>T8%R}VɩT{J9%RÜʡzJɦT'lJMlJMlJ ̦UfT0y]s&0aYX9LsA.0~o.p>*>MPJ~K") >){ȧ@qPd꡴31K wHxfo_9;>Ƚ*vn[|u܄;Z̢Έ&s8GRBjZ[ra .k$g-p׸+b^gױsd"w<.9h(Yan υ/ۉtxig]e3-UKkbX2Wݻ~@:J5R?IXg;muJMi_:EsH"Ӹ\( nW"D$/bҊ*m^5R+̻b$?$t:]Η pH+KJ善EFYH.r'VɳVHw8 tLF~"+p[܇48`+.)tő1Uwt .WX!YzVX+eS*FߍjnB.b =`-yw4,s}3-x,M=]GׅГ9nF,pZx>QYy $%N8B0%yU<»rpU6,KWvBYoɷFD eJ>bxTWK _eK0>I|W~5P((n.swYC^htO1MRGoHtSZtv*ʐƤ˰TͯU~MQ\$FD#HR{ mkWMHkR⋲F9F杝rrQiSڔ51B\z$q}2E9>9Yi32E#u&tD΢>ZA8 ċhk%7F[*>x1PG:-sv ɂ^.د/YRD(mʸp%-'bhWc07*zq>$A_Z%ϸ!(% -v fަ 5Êw-CNJwLD?+MYw1N/ nup$^Ӆ{=vV S-N}D)]\*V~! WyXCa^̒|0wsӘ υ1QqI+ Ԛmw[:}+x; ~L`OXS0=zp(*(8DF(x?B PS NE(y ~F(XP-[ .C(؆P#lG(`'B.+ B(Bi"_/B"CG J? V=R.JI"bsc!:sijV=lԲzx` l>+U7Nuٖ6O{7$ےupy˜7Sba W'rK+ErRzh=s2;| JcY kH;o.DY\Y ^QM{+U&iIZ8;Z$dYެ0ˊ~a_wЕ_ v|PiLS{nε7il]lsYUz4ψ}8W-=D5*=,>$1wPigùl9_TVDI %["N.PO6+5bQEy!׳Ժa=KN3?AD*Wl$&AF:_ C8B-.yBTpI`\o9Hs;h9[5b[bKS.0v_:皯,=giͮͣb]>#$5Ri/ jq M>P/ﵜ'mjuU)+" gzYcf-=W.p~.nZ6N]sfW.(61ay$\IVTkQno ;@O{ ӓ=K.@_#֍-ϒgsD6 JbsCs])+6gWS ܬX$rEX|a*8u[εFX~?i9YZ}M0)纸qkK(Km74)py]SW4JWeB֒_m]*޸ƍ@tJ[,/'= ;HcrzC[vYf+ϺƤA+gz.1~#sr4]_/gK҆*/k$Me6zwH'rmZ7]-Y|1]{ _.s96[#$ B +T 6!T|SBVvz{sl##UaGu3 ՕgK)RR{DZjeIK.=}^,)WKVT̍{3!av 3졇Ttި%lx^!e/3My͛Ը#M8}ی]1~N '*5.+-+&EaM=y_|#+*^Ͱlރۼ}W=pYZsb'ZF1k<@ˇqt1gvh?[K(m/qW_?jf~8+l[o o,z]Sn˹Dh;.Kt5סlRÒOLUYsW"WwwuN׬-=GP#9~ c":{st4us t@/SUX'57H)Q-)Ӌ:7%D (bU!Eok6\5"pږFu: u:`Ϩ?=s܏9e7=#4hL$`F*` vB)7(Ϭ9x,#؄y(%)$[7PC):Xʿ4ݑCUx~t؀{Xi.k`S߰%{e_ j6Jf|'pm2ՎHcO{_Ѱ^bxf BI̐)d 9}H UBrLRLG=dv`ԻGT#;NP!= ̙'+R +R E͖f+t}$fӘ$ ǘ_.˂#R- 6͘z3Ff*\Rt0L3ry{~]]/Vzz@v,Q\?Ȃ}M(}@kXD5jO~? jBHee@f jx^P$~E&&X'z,Z+}.՟$7߀ h?E 눣Ek;w@߾VʺV3RV?!s^7\FfZ5hլyjOЪY?EfBf VzuO@Q- `?i `GH PU .%KXƢ`њW5;iAg ﷰ'\q:]^e.s:]XNN ajb(!JĞd왨Q?ĞUb0v셨[hb"a_z'LnmJlƲ،(13(1{QXJ \h/7Z˃V򢕾jJ_>UiUX?/+oIaMjXPۥ*֬Z^i0AM&j/kA,/ڷocGkuhZ;}E;ž~ڮ]/bveJwa^U}ck ]]n|.Ⱦ a7qT<i 4< 6HZf @ lJr z s@jUJb,f{nC+frd ;K63#83}l^gʙ[9vrͲ5xͅ cqx&P0z# m|eH23unʭs X.vn=V yȠ61LOǕl±tc' 5aH-:9]00OSvrBm0*T a3dBƹ2٦[/E|[q+[gl3 WbcBv 1n 0/ +Z=daNGe3 a{xhd4A+ȖfxZ4tNq+gXЪ&mV&03&G4q#pe I3&d 7yEw# pt`H]Ǿ} l6 66ylDc"x[–VuTuRzĨU >`_O~%أW3_~ bUQƬ1̊?F~=NmJmQ;PM=hxuz:J4qj6oJ݅ejE ~ZGo#<[E}a:p<0c\9d ;H38tջyldVW/KrZ!guaaeI+]FDgn|bܫ5Uj!=2螂r?Wis]:͡L4wfaR`zsg!JWϼ]ǬtqGZK72KлsCrE嚯NO_G vH4xðG:|wacyr([*-P}4;zKy5j{(6vg6J֋$9D%S)F%ҥka$.e]̜]ɖɼJ;#Ȑ[5TFb8̘ ‡dN֙IsT:}A y{D7Hf>sjͬ"i΁ۉ嬛L쭂+bX.MޤQ1,uҐ8hGH gje͠ծý= ;L&&MnR.&:J>Ew[͖b.tv@%:ΥFw2=\8uA|l@HJ'Hsu;ߦX)'5'U碷 l8ޥҨqjNI>|O.k,E35U>ޚڣϧdW犳: 24T"eޛV?T a=9d쩈S(P4|t:3j# Vx5֨iVs3YsZѶ P+I_kK}>[M⫆/Rt[sf×z|ŖdO{ֳ\Ŗb;FoW`Х#GRSʫƏ)/xS3tq#최xORfasG`)s;-EDtr)Md2 $BB 14[.ȡۊ)E!FH)R""RRDiM1EJRDa9m?<}yf{ޝ{=mǙ{t,X[VV]]8-uE%k+ ?~*VX[W_Ӗy=qBGuV -Zn臃hХsП7%FB=bLk_>Vsw}muׯnH>OVMkBriyS"= zahC!_(S/k:@Ma{pop?PT45`fe{6əSW^xW>big|;-Mb6_s(ݪէf{fcIWHxЎekէJwUà e Wl07{ƗW%uQ\8`ORhɞU$ƴ2viRWϵsږB-+ɗX62,vvpjpVQMS [["jR㮆 k {6ĥ>҅>P?bnhk+fk6[ rL\oԽ8aPccÚBC/6_&r=I"*hjnW,'U3bg@pWrR1 珺,WL+/YYs|bheꑮ#zSlБY.rDAWK0\˴iSN-f\shEӯ5vW,X8Iwb{ rݮ@gob|F?+wqh{= , Ez7;c"bE1-5mݒ]Z/ܽpFdVy=m ИRfwMNgN-yBs6xF(=6:1$.Ң|YE sS+4T-:8L-zBоb&;ˆL!Zt$БeOE.N,ַlggqjv{v{hՌ~me]ΐӽ9lgp,߻4- v859 vdW]Luv֘Y뵭dz1^kdVM[n Ǽgڕ7/ڹzZ=^O^W[vMڣvԳ޼B1D?ݛґsQ̶9]3yF{}l+˾u69+KN.:57q kLm茌^Y\9*fkCo@`">faD'e^XH>)fђiԁ;KwFGJ3tӻ!#ZV_+KBc../ژҔVl/kK5߉XyoG`kwg_L 6=ms]e.z bSf{ɹ{أ]:Wד9+c V }C6WW`AZYJUԲ#+cV2!}|':KiJwu$k;5T*-<^$'Rg^dSj7{?>9*Ww֊ᡭFg}`@;耬Ny:{1tb -3-uwB^i'sd*bUV9g/_Y. :+K}v}!|({ŨӣNKYpF8K9ku?+t̛̽ uce3Zx`/\rp D+F#yѥKˣkUȁ,@s"Z] N6ggyK=ӣc##r{L]S+ݶ=VX$/pSڧV.:mݔw[[i}9su&mkضʩ']9>%/kkwlSvfmY(ϊFYe_k큌ECB |k,S;8 9wP^(/2+T*_ű Ii\*R\jhvNǘ~2-ԳpwgnzhihidM#fwMQy*{^̹secɹ^)M@dh$P]:7̗=?wPjQdKd{hfsHY`#Y;DFZdWon_o^^>;ܙ)NKO6 s9􏔅G|%iGҝiK;GÛCc Eyv}_|'"}Z?19T3=X\%~ͩ:'p{Ū0ڽQzM|ʲ_U[_EUůU6iWRz_V qc g ɚs]}M\➋rGG*W~sM#ig<w/'_z >Y|Dpzk .]AUFqc3ߊVF\y&=B1?>}bAtm(9|BO|B A'q>as>a90 O(|BFq>a4p>a,q>a<&p> 9PIO(|O(xOÑX̪DѴQ%>RNGd.%}u72j>BMz->SN1GH|~<\AP7/_eJ~O32wz}ީ3Gdлy|z_:v Yw,EZ;!oeK2^r+">_'W/-ox|[J)֊_WUr`uckcW/2}tٶrکv?UBv,P~+/dQ~.I>DaW,wJ?C\U//a9^!ߚ[5;fxkvfa5{8o[ykHޚ][ ykvo[G15{,o[ 5fO%5{o.w2ޚ=fO5Nޚ=fOٕ5f7{xkLޚ}/o͞[?f|>'~9g^O\x-.3qT`<)ω];,qD;u8ݱM:ձBb}*&z1_-xM`c :|Ot.߱RX+Qڏhk5;MVX\E ,uvCk哽f^)p,ߐ6[>JE"5vh7Y!:' &pD{nW l!.pm\x}]Ǜnno\.KYeN, \ ~Oژ_$UD<; }56r]`ԉ夢r -.:/whqLFr-5觐t_?%O^ߔQ낤2RN 9Osg3p }3;꥽*[f$o6_ZzMMQshz OГ8!F 2u|_ `O8ߢПSg$g\w.fVRM?#k0f<+^^@%Ќsez0kwJ;Rf至ЏP"kS98},W輞4/< ¯2O!t!o?Z1%& G*hS*)VrLՊfp#5i="r x\  X ̭`O![brqEp/ gO ::E)Z~PC<(Ӡ/6Q*S<~x eN]Oj+{^l- PzrSNUyxMŕ%QA_PҺ6~-Q_,mZ P䛷>13{%Sf:CrKu[X$u\,#PSO\TU:'W9(]9V>z%wA,/HL=me0↲ ~T{zp x | Ī1=`>,+e[t~0[]/hVk]þ,VXΦ^7MjkEA45X&^2g-"{0S@go Ok.5s2n.iBR^&hf'VX`0d>n$J+9oXf1N4ǎ5)Le+IykA_ 9V8`'2k>d1f!£adTV417+fY,r&w63CV{T6*ޖk~ ^513!5{JO^օw `=%oŢM`쌩HYY$!fV#NUs6x}Y`!z3BGr]RL$BZ7ސF2V;86BwD `אJJQ6X aa{"V150@Rᷓ'@4G8- -2UXv*,Xv |ZYL0DuP S"y[@eac ]Ɗ]WX{%= gLeU^f l3@G$bY*7RKNcI6n5G'F+_Xu5| I/$f"l[ :u$Z@V3+,,$Y |F^ɱJةYZʺ-V§uIO8L_$ UEZ|}M٬uSBxUľB| @} %G L0Gr, R:}e"3j`bX8VdYK6fj?'J`fZ@tKy,8[O&x+ ý!b Xz ObLb?MBmeg06@f# p 8G?*pQbT; ?&{bD?Hb#'KσM2JCߖ^^I"vJԱRtQT'KbHR--.(h>ݐ&.] }jəVj+]U;)Q}3 >vZܔƤohNuKv)eg ;PQYf܋M6v|7X]M5 8xI)jaQj~aVE6lxTJY,hnߠuuOrKRnXg1LIjz6WjDGXBs\Gv$S5VKc Ғ9-"&J,&cd%QEJx`3ۭ}K\;k kT ^I 6HM"($I.kOfp;wB$&Oߓׄ%5%b)ilC5X.ilAp?>-mi#Փֈ1J,.QAC)''oUHb}rh9c΅~9;Od|V~~8U%mIH_J@*2389սZ|[*O9w#|~W{(>Q.Djo>4I4KLƖ#S-Gb!5tJ[pB<+,$oyQzVk\Ky<#tRilB4=11K'd5_]/=MɱGW_E6d4jxP9=PZײE"$'j+%m=N='zW$ʷnFMg;Qt}z#wv '8>tIy^>jrPyh'VjT.yI.؊.Bo>CxRs.}~z(kc0]ȽLx=R5;}lzaFԏ:nxFQ+1ڻJ,&JV_B䆤UG/)3 $(g,K7r4eR'5a'-oB}ܦ.oNp_&n{_Ҿ'Rv`'x"<"k(]9717vCڑN~.zRvӑC갌蟕>RfZD)7_x/Rjrʚ\R C':g<#QQ?n{gV󎉂f+b{E?.L|Jp^`t}!_ponFcMzRDR9bZd ?,k>_JV~N}+-dtL%;;$aM%8(H|_Z)6qrSEGIE4bLj2 Ms>οCsT|c r&ao$K"NΜd% I ؟6OUF"fܫ6J9c=A|+ǯKk`;߰a3;6xR_j$yX 'C1Kz:#[ճl"ն:cLKTXEk9($Ѣ$1Jj V4}%f͚,tLEtzFv܂cޓ* 1uDڧILn?DEk0 T*c=F{Tۥly0~NG6pQ~1KnpLvdU[D>} VZJ,||4NRH= J4 җ&1Y@G*!wąl|v wr*IJkۨo=U+MJ=}ParfykqRϛ8gӘ + . Sa)Xf8Qn O"c> 1?h`3:&obhb!==&x6']IDHi7˝[z{''{~: SrBCg9W`OXaX=$+\r #$Zi % L:&~ |/Q|:Cπwo!~,G.)FɩvshMh8`X~wɡ>@hO]}E9UU}3! 9H A0 ( IT0`DE@d131aV""zn^gyyx+t}UNS] *E=UEp#Jq53 u/ Z yʔjU589h/G>(:1xɠ0Km y9EQOȏ O3{k e: ߚ?Ohc ]]Gli8s6fvX?=Žޅ0/vi`\W?8xz.g;ޥ˿9@y.tNp܇[NȏZ e$LBcȨ͐z x j N5 (p9p/0 ȑ܌WrGj]-ڟ'A( >!YQ^pm~O ;`(OCn}FįY큶X !5 Y`D=zȁ3$?E5s%j1vDCku** Np=<HY!z-QFDZ+EOHcWd`1=XsONj`Wv`jcnA+\ۈ=\*m*Î_zxd4xx&:D΍F,#%o;7! WD:hjBKgsF yQ<اʇ1w^dal f